ect-date-formatter 1.17.0 → 1.17.1
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.
|
@@ -2,16 +2,15 @@ import { EctDateFormatterService } from './ect-date-formatter.service';
|
|
|
2
2
|
import { HttpClientModule } from '@angular/common/http';
|
|
3
3
|
import { NgModule, LOCALE_ID } from '@angular/core';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
class EctDateFormatterModule {
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
8
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
5
|
+
export class EctDateFormatterModule {
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterModule, imports: [HttpClientModule] }); }
|
|
8
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterModule, providers: [
|
|
9
9
|
EctDateFormatterService,
|
|
10
10
|
{ provide: LOCALE_ID, useValue: 'en-GB' }
|
|
11
11
|
], imports: [HttpClientModule] }); }
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: EctDateFormatterModule, decorators: [{
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterModule, decorators: [{
|
|
15
14
|
type: NgModule,
|
|
16
15
|
args: [{
|
|
17
16
|
declarations: [],
|
|
@@ -25,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
25
24
|
]
|
|
26
25
|
}]
|
|
27
26
|
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWN0LWRhdGUtZm9ybWF0dGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2VjdC1kYXRlLWZvcm1hdHRlci9zcmMvbGliL2VjdC1kYXRlLWZvcm1hdHRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBYXBELE1BQU0sT0FBTyxzQkFBc0I7OEdBQXRCLHNCQUFzQjsrR0FBdEIsc0JBQXNCLFlBUi9CLGdCQUFnQjsrR0FRUCxzQkFBc0IsYUFMdEI7WUFDVCx1QkFBdUI7WUFDdkIsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7U0FDMUMsWUFOQyxnQkFBZ0I7OzJGQVFQLHNCQUFzQjtrQkFYbEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRztvQkFDakIsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjtxQkFDakI7b0JBQ0QsT0FBTyxFQUFFLEVBQUc7b0JBQ1osU0FBUyxFQUFFO3dCQUNULHVCQUF1Qjt3QkFDdkIsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7cUJBQzFDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWN0RGF0ZUZvcm1hdHRlclNlcnZpY2UgfSBmcm9tICcuL2VjdC1kYXRlLWZvcm1hdHRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSwgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTmdNb2R1bGUsIExPQ0FMRV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFsgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBFY3REYXRlRm9ybWF0dGVyU2VydmljZSxcclxuICAgIHsgcHJvdmlkZTogTE9DQUxFX0lELCB1c2VWYWx1ZTogJ2VuLUdCJyB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWN0RGF0ZUZvcm1hdHRlck1vZHVsZSB7IH1cclxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
class EctDateFormatterService {
|
|
3
|
+
export class EctDateFormatterService {
|
|
4
4
|
getISO8601DateFormat(date) {
|
|
5
5
|
return this.get4DigitYear(date) + '-' + this.get2DigitMonth(date) + '-' + this.get2DigitDay(date);
|
|
6
6
|
}
|
|
@@ -220,88 +220,92 @@ class EctDateFormatterService {
|
|
|
220
220
|
return timeValue;
|
|
221
221
|
}
|
|
222
222
|
get1DigitDay(date) {
|
|
223
|
-
const day = date.getDate();
|
|
223
|
+
const day = this.convertToDateIfRequired(date).getDate();
|
|
224
224
|
return '' + day;
|
|
225
225
|
}
|
|
226
226
|
get2DigitDay(date) {
|
|
227
|
-
const day = date.getDate();
|
|
227
|
+
const day = this.convertToDateIfRequired(date).getDate();
|
|
228
228
|
return this.padDateElement(day);
|
|
229
229
|
}
|
|
230
230
|
get3DigitDay(date) {
|
|
231
|
-
return date.toLocaleString('default', { weekday: 'short' });
|
|
231
|
+
return this.convertToDateIfRequired(date).toLocaleString('default', { weekday: 'short' });
|
|
232
232
|
}
|
|
233
233
|
get4DigitDay(date) {
|
|
234
|
-
return date.toLocaleString('default', { weekday: 'long' });
|
|
234
|
+
return this.convertToDateIfRequired(date).toLocaleString('default', { weekday: 'long' });
|
|
235
235
|
}
|
|
236
236
|
get1DigitMonth(date) {
|
|
237
|
-
const month = date.getMonth() + 1;
|
|
237
|
+
const month = this.convertToDateIfRequired(date).getMonth() + 1;
|
|
238
238
|
return '' + month;
|
|
239
239
|
}
|
|
240
240
|
get2DigitMonth(date) {
|
|
241
|
-
const month = date.getMonth() + 1;
|
|
241
|
+
const month = this.convertToDateIfRequired(date).getMonth() + 1;
|
|
242
242
|
return this.padDateElement(month);
|
|
243
243
|
}
|
|
244
244
|
get3DigitMonth(date) {
|
|
245
|
-
return date.toLocaleString('default', { month: 'long' }).substring(0, 3);
|
|
245
|
+
return this.convertToDateIfRequired(date).toLocaleString('default', { month: 'long' }).substring(0, 3);
|
|
246
246
|
}
|
|
247
247
|
get4DigitMonth(date) {
|
|
248
|
-
return date.toLocaleString('default', { month: 'long' });
|
|
248
|
+
return this.convertToDateIfRequired(date).toLocaleString('default', { month: 'long' });
|
|
249
249
|
}
|
|
250
250
|
get2DigitYear(date) {
|
|
251
|
-
const fullYear = '' + date.getFullYear();
|
|
251
|
+
const fullYear = '' + this.convertToDateIfRequired(date).getFullYear();
|
|
252
252
|
return fullYear[2];
|
|
253
253
|
}
|
|
254
254
|
get4DigitYear(date) {
|
|
255
|
-
return date.getFullYear().toString();
|
|
255
|
+
return this.convertToDateIfRequired(date).getFullYear().toString();
|
|
256
256
|
}
|
|
257
257
|
get1Digit12Hours(date) {
|
|
258
|
-
return date.getHours().toString();
|
|
258
|
+
return this.convertToDateIfRequired(date).getHours().toString();
|
|
259
259
|
}
|
|
260
260
|
get2Digit12Hours(date) {
|
|
261
|
-
const hours = date.getHours();
|
|
261
|
+
const hours = this.convertToDateIfRequired(date).getHours();
|
|
262
262
|
return this.padDateElement(hours);
|
|
263
263
|
}
|
|
264
264
|
get1Digit24Hours(date) {
|
|
265
|
-
return date.getHours().toString();
|
|
265
|
+
return this.convertToDateIfRequired(date).getHours().toString();
|
|
266
266
|
}
|
|
267
267
|
get2Digit24Hours(date) {
|
|
268
|
-
const hours = date.getHours();
|
|
268
|
+
const hours = this.convertToDateIfRequired(date).getHours();
|
|
269
269
|
return this.padDateElement(hours);
|
|
270
270
|
}
|
|
271
271
|
get1DigitMinutes(date) {
|
|
272
|
-
return date.getMinutes().toString();
|
|
272
|
+
return this.convertToDateIfRequired(date).getMinutes().toString();
|
|
273
273
|
}
|
|
274
274
|
get2DigitMinutes(date) {
|
|
275
|
-
const minutes = date.getMinutes();
|
|
275
|
+
const minutes = this.convertToDateIfRequired(date).getMinutes();
|
|
276
276
|
return this.padDateElement(minutes);
|
|
277
277
|
}
|
|
278
278
|
get1DigitSeconds(date) {
|
|
279
|
-
return date.getSeconds().toString();
|
|
279
|
+
return this.convertToDateIfRequired(date).getSeconds().toString();
|
|
280
280
|
}
|
|
281
281
|
get2DigitSeconds(date) {
|
|
282
|
-
const seconds = date.getSeconds();
|
|
282
|
+
const seconds = this.convertToDateIfRequired(date).getSeconds();
|
|
283
283
|
return this.padDateElement(seconds);
|
|
284
284
|
}
|
|
285
285
|
get1DigitAmPm(date) {
|
|
286
|
-
return date.toLocaleDateString('t');
|
|
286
|
+
return this.convertToDateIfRequired(date).toLocaleDateString('t');
|
|
287
287
|
}
|
|
288
288
|
get2DigitAmPm(date) {
|
|
289
|
-
return date.toLocaleDateString('tt');
|
|
289
|
+
return this.convertToDateIfRequired(date).toLocaleDateString('tt');
|
|
290
290
|
}
|
|
291
291
|
getXDigitMillisecond(date, format) {
|
|
292
|
-
return date.toLocaleDateString(format);
|
|
292
|
+
return this.convertToDateIfRequired(date).toLocaleDateString(format);
|
|
293
293
|
}
|
|
294
294
|
padDateElement(value) {
|
|
295
295
|
return (value < 10) ? '0' + value : '' + value;
|
|
296
296
|
}
|
|
297
|
-
|
|
298
|
-
|
|
297
|
+
convertToDateIfRequired(input) {
|
|
298
|
+
if (typeof (input) === 'string')
|
|
299
|
+
return new Date(input);
|
|
300
|
+
return input;
|
|
301
|
+
}
|
|
302
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
303
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterService, providedIn: 'root' }); }
|
|
299
304
|
}
|
|
300
|
-
|
|
301
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: EctDateFormatterService, decorators: [{
|
|
305
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterService, decorators: [{
|
|
302
306
|
type: Injectable,
|
|
303
307
|
args: [{
|
|
304
308
|
providedIn: 'root'
|
|
305
309
|
}]
|
|
306
310
|
}] });
|
|
307
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWN0LWRhdGUtZm9ybWF0dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9lY3QtZGF0ZS1mb3JtYXR0ZXIvc3JjL2xpYi9lY3QtZGF0ZS1mb3JtYXR0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWUzQyxNQUdhLHVCQUF1QjtJQUVsQyxvQkFBb0IsQ0FBQyxJQUFVO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBVTtRQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVELDJCQUEyQixDQUFDLElBQVU7UUFDcEMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRU8sdUJBQXVCLENBQUMsS0FBYTtRQUMzQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtB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cUIsQ0FBQyxPQUFPLENBQUM7WUFDN0MsUUFBTyxJQUFJLEVBQUU7Z0JBQ1gsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHLENBQUM7Z0JBQ1QsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHLENBQUM7Z0JBQ1QsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN0QyxNQUFNO2dCQUNSLEtBQUssSUFBSSxDQUFDO2dCQUNWLEtB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QUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVU7UUFDOUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFVO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxJQUFVLEVBQUUsTUFBTTtRQUM3QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWE7UUFDbEMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNqRCxDQUFDOzhHQW5VVSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOztTQUVQLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnMge1xyXG4gIHBhcnRzOiBzdHJpbmdbXTtcclxuICBkaXZpZGVyOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUVjdERhdGVGb3JtYXR0ZXJTZXJ2aWNlIHtcclxuICBnZXRJU084NjAxRGF0ZUZvcm1hdChkYXRlOiBEYXRlKTogc3RyaW5nO1xyXG4gIGdldElTTzg2MDFUaW1lRm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmc7XHJcbiAgZ2V0SVNPODYwMURhdGVBbmRUaW1lRm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmc7XHJcbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZztcclxuICBmb3JtYXRUaW1lKGRhdGU6IERhdGUsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFY3REYXRlRm9ybWF0dGVyU2VydmljZSBpbXBsZW1lbnRzIElFY3REYXRlRm9ybWF0dGVyU2VydmljZSB7XHJcblxyXG4gIGdldElTTzg2MDFEYXRlRm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0NERpZ2l0WWVhcihkYXRlKSArICctJyArIHRoaXMuZ2V0MkRpZ2l0TW9udGgoZGF0ZSkgKyAnLScgKyB0aGlzLmdldDJEaWdpdERheShkYXRlKTtcclxuICB9XHJcblxyXG4gIGdldElTTzg2MDFUaW1lRm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0MkRpZ2l0MjRIb3VycyhkYXRlKSArICc6JyArIHRoaXMuZ2V0MkRpZ2l0TWludXRlcyhkYXRlKSArICc6JyArIHRoaXMuZ2V0MkRpZ2l0U2Vjb25kcyhkYXRlKTtcclxuICB9XHJcblxyXG4gIGdldElTTzg2MDFEYXRlQW5kVGltZUZvcm1hdChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdldElTTzg2MDFEYXRlRm9ybWF0KGRhdGUpICsgJ1QnICsgdGhpcy5nZXRJU084NjAxVGltZUZvcm1hdChkYXRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybWF0UGFydHNCeURpdmlkZXIoaW5wdXQ6IHN0cmluZyk6IElEYXRlVGltZUZvcm1hdFNlY3Rpb25zIHtcclxuICAgIGlmIChpbnB1dC5pbmRleE9mKCcgJykgPiAwKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcGFydHM6IGlucHV0LnNwbGl0KCcgJyksXHJcbiAgICAgICAgZGl2aWRlcjogJyAnXHJcbiAgICAgIH0gYXMgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5wdXQuaW5kZXhPZignLycpID4gMCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBhcnRzOiBpbnB1dC5zcGxpdCgnLycpLFxyXG4gICAgICAgIGRpdmlkZXI6ICcvJ1xyXG4gICAgICB9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xyXG4gICAgfVxyXG4gICAgaWYgKGlucHV0LmluZGV4T2YoJzonKSA+IDApIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwYXJ0czogaW5wdXQuc3BsaXQoJzonKSxcclxuICAgICAgICBkaXZpZGVyOiAnOidcclxuICAgICAgfSBhcyBJRGF0ZVRpbWVGb3JtYXRTZWN0aW9ucztcclxuICAgIH1cclxuICAgIGlmIChpbnB1dC5pbmRleE9mKCc7JykgPiAwKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcGFydHM6IGlucHV0LnNwbGl0KCc7JyksXHJcbiAgICAgICAgZGl2aWRlcjogJzsnXHJcbiAgICAgIH0gYXMgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5wdXQuaW5kZXhPZignLicpID4gMCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBhcnRzOiBpbnB1dC5zcGxpdCgnLicpLFxyXG4gICAgICAgIGRpdmlkZXI6ICcuJ1xyXG4gICAgICB9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xyXG4gICAgfVxyXG4gICAgaWYgKGlucHV0LmluZGV4T2YoJywnKSA+IDApIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwYXJ0czogaW5wdXQuc3BsaXQoJywnKSxcclxuICAgICAgICBkaXZpZGVyOiAnLCdcclxuICAgICAgfSBhcyBJRGF0ZVRpbWVGb3JtYXRTZWN0aW9ucztcclxuICAgIH1cclxuICAgIGlmIChpbnB1dC5pbmRleE9mKCctJykgPiAwKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcGFydHM6IGlucHV0LnNwbGl0KCctJyksXHJcbiAgICAgICAgZGl2aWRlcjogJy0nXHJcbiAgICAgIH0gYXMgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5wdXQuaW5kZXhPZignXycpID4gMCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBhcnRzOiBpbnB1dC5zcGxpdCgnXycpLFxyXG4gICAgICAgIGRpdmlkZXI6ICdfJ1xyXG4gICAgICB9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IHBhcnRzOiBbXSwgZGl2aWRlcjogJyd9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgRGF0ZSBGb3JtYXR0aW5nIFJ1bGVzXHJcblxyXG4gIHl5L1lZIOKAkyB0d28tZGlnaXQgeWVhciwgZS5nLiAyMVxyXG4gIHl5eXkvWVlZWSDigJMgZm91ci1kaWdpdCB5ZWFyLCBlLmcuIDIwMjFcclxuICBtL00g4oCTIG9uZS1kaWdpdCBtb250aCBmb3IgbW9udGhzIGJlbG93IDEwLCBlLmcuIDNcclxuICBtbS9NTSDigJMgdHdvLWRpZ2l0IG1vbnRoLCBlLmcuIDAzXHJcbiAgbW1tL01NTSDigJMgdGhyZWUtbGV0dGVyIGFiYnJldmlhdGlvbiBmb3IgbW9udGgsIGUuZy4gTWFyXHJcbiAgbW1tbS9NTU1NIOKAkyBtb250aCBzcGVsbGVkIG91dCBpbiBmdWxsLCBlLmcuIE1hcmNoXHJcbiAgZC9EIOKAkyBvbmUtZGlnaXQgZGF5IG9mIHRoZSBtb250aCBmb3IgZGF5cyBiZWxvdyAxMCwgZS5nLiAyXHJcbiAgZGQvREQg4oCTIHR3by1kaWdpdCBkYXkgb2YgdGhlIG1vbnRoLCBlLmcuIDAyXHJcbiAgZGRkL0RERCDigJMgdGhyZWUtbGV0dGVyIGFiYnJldmlhdGlvbiBmb3IgZGF5IG9mIHRoZSB3ZWVrLCBlLmcuIEZyaVxyXG4gIGRkZGQvRERERCDigJMgZGF5IG9mIHRoZSB3ZWVrIHNwZWxsZWQgb3V0IGluIGZ1bGwsIGUuZy4gRnJpZGF5XHJcblxyXG4gICovXHJcbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmb3JtYXRQYXJ0c0FuZERpdmlkZXIgPSB0aGlzLmdldEZvcm1hdFBhcnRzQnlEaXZpZGVyKGZvcm1hdCk7XHJcbiAgICBsZXQgZGF0ZVZhbHVlID0gJyc7XHJcbiAgICBmb3JtYXRQYXJ0c0FuZERpdmlkZXIucGFydHMuZm9yRWFjaChwYXJ0ID0+IHtcclxuICAgICAgaWYgKGRhdGVWYWx1ZSAhPT0gJycpXHJcbiAgICAgICAgZGF0ZVZhbHVlICs9IGZvcm1hdFBhcnRzQW5kRGl2aWRlci5kaXZpZGVyO1xyXG4gICAgICBzd2l0Y2gocGFydCkge1xyXG4gICAgICAgIGNhc2UgJ3l5JzpcclxuICAgICAgICBjYXNlICdZWSc6XHJcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQyRGlnaXRZZWFyKGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAneXl5eSc6XHJcbiAgICAgICAgY2FzZSAnWVlZWSc6XHJcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQ0RGlnaXRZZWFyKGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbSc6XHJcbiAgICAgICAgY2FzZSAnTSc6XHJcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQxRGlnaXRNb250aChkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21tJzpcclxuICAgICAgICBjYXNlICdNTSc6XHJcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQyRGlnaXRNb250aChkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21tbSc6XHJcbiAgICAgICAgY2FzZSAnTU1NJzpcclxuICAgICAgICAgIGRhdGVWYWx1ZSArPSB0aGlzLmdldDNEaWdpdE1vbnRoKGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbW1tbSc6XHJcbiAgICAgICAgY2FzZSAnTU1NTSc6XHJcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQ0RGlnaXRNb250aChkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2QnOlxyXG4gICAgICAgIGNhc2UgJ0QnOlxyXG4gICAgICAgICAgZGF0ZVZhbHVlICs9IHRoaXMuZ2V0MURpZ2l0RGF5KGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZGQnOlxyXG4gICAgICAgIGNhc2UgJ0REJzpcclxuICAgICAgICAgIGRhdGVWYWx1ZSArPSB0aGlzLmdldDJEaWdpdERheShkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2RkZCc6XHJcbiAgICAgICAgY2FzZSAnREREJzpcclxuICAgICAgICAgIGRhdGVWYWx1ZSArPSB0aGlzLmdldDNEaWdpdERheShkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2RkZGQnOlxyXG4gICAgICAgIGNhc2UgJ0REREQnOlxyXG4gICAgICAgICAgZGF0ZVZhbHVlICs9IHRoaXMuZ2V0NERpZ2l0RGF5KGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGVWYWx1ZTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgVGltZSBGb3JtYXR0aW5nIFJ1bGVzXHJcblxyXG4gIGggLSBob3VyIHRvIDEgZGlnaXQgb24gMTIgaG91ciBjbG9jayAtIHdpdGhvdXQgbGVhZGluZyAwXHJcbiAgaGggLSBob3VyIHRvIDIgZGlnaXRzIG9uIDEyIGhvdXIgY2xvY2sgLSB3aXRoIGxlYWRpbmcgMFxyXG4gIEggLSBob3VyIHRvIDEgZGlnaXQgb24gMjQgaG91ciBjbG9jayAtIHdpdGhvdXQgbGVhZGluZyAwXHJcbiAgSEggLSBob3VyIHRvIDIgZGlnaXRzIG9uIDI0IGhvdXIgY2xvY2sgLSB3aXRoIGxlYWRpbmcgMFxyXG4gIG0gLSBtaW51dGUgdG8gMSBkaWdpdCAtIHdpdGhvdXQgbGVhZGluZyAwXHJcbiAgbW0vbWkvTUkgLSBtaW51dGUgdG8gMiBkaWdpdHMgLSB3aXRoIGxlYWRpbmcgMFxyXG4gIHMvUyAtIHNlY29uZCB0byAxIGRpZ2l0IC0gd2l0aG91dCBsZWFkaW5nIDBcclxuICBzcy9TUyAtIHNlY29uZCB0byAyIGRpZ2l0cyAtIHdpdGggbGVhZGluZyAwXHJcbiAgZi9GIC0gdGVudGggb2YgYSBzZWNvbmQgZS5nLiAyMDA5LTA2LTE1VDEzOjQ1OjMwLjYxNzAwMDAgLT4gNlxyXG4gIGZmL0ZGIC0gaHVuZHJlZHRocyBvZiBhIHNlY29uZCBlLmcuIDIwMDktMDYtMTVUMTM6NDU6MzAuNjE3MDAwMCAtPiA2MVxyXG4gIGZmZi9GRkYgLSBtaWxsaXNlY29uZHMgZS5nLiA2LzE1LzIwMDkgMTM6NDU6MzAuNjE3IC0+IDYxN1xyXG4gIGZmZmYvRkZGRiAtIHRlbiB0aG91c2FuZHRocyBvZiBhIHNlY29uZCBlLmcuIDIwMDktMDYtMTVUMTM6NDU6MzAuNjE3NTAwMCAtPiA2MTc1XHJcbiAgZmZmZmYvRkZGRkYgLSBodW5kcmVkIHRob3VzYW5kdGhzIG9mIGEgc2Vjb25kIGUuZy4gMjAwOS0wNi0xNVQxMzo0NTozMC42MTc1NDAwIC0+IDYxNzU0XHJcbiAgZmZmZmZmL0ZGRkZGRiAtIG1pbGxpb250aHMgb2YgYSBzZWNvbmQgZS5nLiAyMDA5LTA2LTE1VDEzOjQ1OjMwLjYxNzU0MjAgLT4gNjE3NTQyXHJcbiAgdC9UIC0gZmlyc3QgY2hhcmFjdGVyIG9mIEFNL1BNXHJcbiAgdHQvVFQgLSBib3RoIGNoYXJhY3RlcnMgb2YgQU0vUE1cclxuXHJcbiAgKi9cclxuICBmb3JtYXRUaW1lKGRhdGU6IERhdGUsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZvcm1hdFBhcnRzQW5kRGl2aWRlciA9IHRoaXMuZ2V0Rm9ybWF0UGFydHNCeURpdmlkZXIoZm9ybWF0KTtcclxuICAgIGxldCB0aW1lVmFsdWUgPSAnJztcclxuICAgIGZvcm1hdFBhcnRzQW5kRGl2aWRlci5wYXJ0cy5mb3JFYWNoKHBhcnQgPT4ge1xyXG4gICAgICBpZiAodGltZVZhbHVlICE9PSAnJylcclxuICAgICAgICB0aW1lVmFsdWUgKz0gZm9ybWF0UGFydHNBbmREaXZpZGVyLmRpdmlkZXI7XHJcbiAgICAgIHN3aXRjaChwYXJ0KSB7XHJcbiAgICAgICAgY2FzZSAnaCc6XHJcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXQxRGlnaXQxMkhvdXJzKGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnaGgnOlxyXG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MkRpZ2l0MTJIb3VycyhkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0gnOlxyXG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MURpZ2l0MjRIb3VycyhkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0hIJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDJEaWdpdDI0SG91cnMoZGF0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDFEaWdpdE1pbnV0ZXMoZGF0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtaSc6XHJcbiAgICAgICAgY2FzZSAnbW0nOlxyXG4gICAgICAgIGNhc2UgJ01JJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDJEaWdpdE1pbnV0ZXMoZGF0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzJzpcclxuICAgICAgICBjYXNlICdTJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDFEaWdpdFNlY29uZHMoZGF0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzcyc6XHJcbiAgICAgICAgY2FzZSAnU1MnOlxyXG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MkRpZ2l0U2Vjb25kcyhkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3QnOlxyXG4gICAgICAgIGNhc2UgJ1QnOlxyXG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MURpZ2l0QW1QbShkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3R0JzpcclxuICAgICAgICBjYXNlICdUVCc6XHJcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXQyRGlnaXRBbVBtKGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZic6XHJcbiAgICAgICAgY2FzZSAnRic6XHJcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXRYRGlnaXRNaWxsaXNlY29uZChkYXRlLCAnZicpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZmYnOlxyXG4gICAgICAgIGNhc2UgJ0ZGJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldFhEaWdpdE1pbGxpc2Vjb25kKGRhdGUsICdmZmYnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2ZmZic6XHJcbiAgICAgICAgY2FzZSAnRkZGJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldFhEaWdpdE1pbGxpc2Vjb25kKGRhdGUsICdmZmYnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2ZmZmYnOlxyXG4gICAgICAgIGNhc2UgJ0ZGRkYnOlxyXG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0WERpZ2l0TWlsbGlzZWNvbmQoZGF0ZSwgJ2ZmZmYnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2ZmZmZmJzpcclxuICAgICAgICBjYXNlICdGRkZGRic6XHJcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXRYRGlnaXRNaWxsaXNlY29uZChkYXRlLCAnZmZmZmYnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2ZmZmZmZic6XHJcbiAgICAgICAgY2FzZSAnRkZGRkZGJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldFhEaWdpdE1pbGxpc2Vjb25kKGRhdGUsICdmZmZmZmYnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aW1lVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDFEaWdpdERheShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgcmV0dXJuICcnICsgZGF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQyRGlnaXREYXkoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcclxuICAgIHJldHVybiB0aGlzLnBhZERhdGVFbGVtZW50KGRheSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDNEaWdpdERheShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlU3RyaW5nKCdkZWZhdWx0JywgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQ0RGlnaXREYXkoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgd2Vla2RheTogJ2xvbmcnIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQxRGlnaXRNb250aChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIHJldHVybiAnJyArIG1vbnRoO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQyRGlnaXRNb250aChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgIHJldHVybiB0aGlzLnBhZERhdGVFbGVtZW50KG1vbnRoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0M0RpZ2l0TW9udGgoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgbW9udGg6ICdsb25nJyB9KS5zdWJzdHJpbmcoMCwzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0NERpZ2l0TW9udGgoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgbW9udGg6ICdsb25nJyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0MkRpZ2l0WWVhcihkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZ1bGxZZWFyID0gJycgKyBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICByZXR1cm4gZnVsbFllYXJbMl07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDREaWdpdFllYXIoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDFEaWdpdDEySG91cnMoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDJEaWdpdDEySG91cnMoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcclxuICAgIHJldHVybiB0aGlzLnBhZERhdGVFbGVtZW50KGhvdXJzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0MURpZ2l0MjRIb3VycyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBkYXRlLmdldEhvdXJzKCkudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0MkRpZ2l0MjRIb3VycyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRIb3VycygpO1xyXG4gICAgcmV0dXJuIHRoaXMucGFkRGF0ZUVsZW1lbnQoaG91cnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQxRGlnaXRNaW51dGVzKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGRhdGUuZ2V0TWludXRlcygpLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDJEaWdpdE1pbnV0ZXMoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5wYWREYXRlRWxlbWVudChtaW51dGVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0MURpZ2l0U2Vjb25kcyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBkYXRlLmdldFNlY29uZHMoKS50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQyRGlnaXRTZWNvbmRzKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2Vjb25kcyA9IGRhdGUuZ2V0U2Vjb25kcygpO1xyXG4gICAgcmV0dXJuIHRoaXMucGFkRGF0ZUVsZW1lbnQoc2Vjb25kcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDFEaWdpdEFtUG0oZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoJ3QnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0MkRpZ2l0QW1QbShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygndHQnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0WERpZ2l0TWlsbGlzZWNvbmQoZGF0ZTogRGF0ZSwgZm9ybWF0KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhmb3JtYXQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYWREYXRlRWxlbWVudCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodmFsdWUgPCAxMCkgPyAnMCcgKyB2YWx1ZSA6ICcnICsgdmFsdWU7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWN0LWRhdGUtZm9ybWF0dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9lY3QtZGF0ZS1mb3JtYXR0ZXIvc3JjL2xpYi9lY3QtZGF0ZS1mb3JtYXR0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWtCM0MsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxvQkFBb0IsQ0FBQyxJQUFVO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBVTtRQUM3QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVELDJCQUEyQixDQUFDLElBQVU7UUFDcEMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRU8sdUJBQXVCLENBQUMsS0FBYTtRQUMzQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLEVBQUUsR0FBRzthQUNjLENBQUM7U0FDOUI7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUE0QixDQUFDO0lBQzlELENBQUM7SUFHRDs7Ozs7Ozs7Ozs7Ozs7TUFjRTtJQUNGLFVBQVUsQ0FBQyxJQUFVLEVBQUUsTUFBYztRQUNuQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRSxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDbkIscUJBQXFCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QyxJQUFJLFNBQVMsS0FBSyxFQUFFO2dCQUNsQixTQUFTLElBQUkscUJBQXFCLENBQUMsT0FBTyxDQUFDO1lBQzdDLFFBQU8sSUFBSSxFQUFFO2dCQUNYLEtBQUssSUFBSSxDQUFDO2dCQUNWLEtBQUssSUFBSTtvQkFDUCxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdEMsTUFBTTtnQkFDUixLQUFLLE1BQU0sQ0FBQztnQkFDWixLQUFLLE1BQU07b0JBQ1QsU0FBUyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHLENBQUM7Z0JBQ1QsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QyxNQUFNO2dCQUNSLEtBQUssSUFBSSxDQUFDO2dCQUNWLEtBQUssSUFBSTtvQkFDUCxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdkMsTUFBTTtnQkFDUixLQUFLLEtBQUssQ0FBQztnQkFDWCxLQUFLLEtBQUs7b0JBQ1IsU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3ZDLE1BQU07Z0JBQ1IsS0FBSyxNQUFNLENBQUM7Z0JBQ1osS0FBSyxNQUFNO29CQUNULFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QyxNQUFNO2dCQUNSLEtBQUssR0FBRyxDQUFDO2dCQUNULEtBQUssR0FBRztvQkFDTixTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDckMsTUFBTTtnQkFDUixLQUFLLElBQUksQ0FBQztnQkFDVixLQUFLLElBQUk7b0JBQ1AsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3JDLE1BQU07Z0JBQ1IsS0FBSyxLQUFLLENBQUM7Z0JBQ1gsS0FBSyxLQUFLO29CQUNSLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNyQyxNQUFNO2dCQUNSLEtBQUssTUFBTSxDQUFDO2dCQUNaLEtBQUssTUFBTTtvQkFDVCxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDckMsTUFBTTthQUNUO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bb0JFO0lBQ0YsVUFBVSxDQUFDLElBQVUsRUFBRSxNQUFjO1FBQ25DLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25FLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixxQkFBcUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pDLElBQUksU0FBUyxLQUFLLEVBQUU7Z0JBQ2xCLFNBQVMsSUFBSSxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7WUFDN0MsUUFBTyxJQUFJLEVBQUU7Z0JBQ1gsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHLENBQUM7Z0JBQ1QsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxJQUFJLENBQUM7Z0JBQ1YsS0FBSyxJQUFJO29CQUNQLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsS0FBSyxHQUFHLENBQUM7Z0JBQ1QsS0FBSyxHQUFHO29CQUNOLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN0QyxNQUFNO2dCQUNSLEtBQUssSUFBSSxDQUFDO2dC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RSxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWE7UUFDbEMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsS0FBb0I7UUFDbEQsSUFBSSxPQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUTtZQUM1QixPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0F6VVUsdUJBQXVCO2tIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnMge1xyXG4gIHBhcnRzOiBzdHJpbmdbXTtcclxuICBkaXZpZGVyOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUVjdERhdGVGb3JtYXR0ZXJTZXJ2aWNlIHtcclxuICBnZXRJU084NjAxRGF0ZUZvcm1hdChkYXRlOiBEYXRlKTogc3RyaW5nO1xyXG4gIGdldElTTzg2MDFUaW1lRm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmc7XHJcbiAgZ2V0SVNPODYwMURhdGVBbmRUaW1lRm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmc7XHJcbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZztcclxuICBmb3JtYXRUaW1lKGRhdGU6IERhdGUsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFY3REYXRlRm9ybWF0dGVyU2VydmljZSBpbXBsZW1lbnRzIElFY3REYXRlRm9ybWF0dGVyU2VydmljZSB7XHJcblxyXG4gIGdldElTTzg2MDFEYXRlRm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0NERpZ2l0WWVhcihkYXRlKSArICctJyArIHRoaXMuZ2V0MkRpZ2l0TW9udGgoZGF0ZSkgKyAnLScgKyB0aGlzLmdldDJEaWdpdERheShkYXRlKTtcclxuICB9XHJcblxyXG4gIGdldElTTzg2MDFUaW1lRm9ybWF0KGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0MkRpZ2l0MjRIb3VycyhkYXRlKSArICc6JyArIHRoaXMuZ2V0MkRpZ2l0TWludXRlcyhkYXRlKSArICc6JyArIHRoaXMuZ2V0MkRpZ2l0U2Vjb25kcyhkYXRlKTtcclxuICB9XHJcblxyXG4gIGdldElTTzg2MDFEYXRlQW5kVGltZUZvcm1hdChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdldElTTzg2MDFEYXRlRm9ybWF0KGRhdGUpICsgJ1QnICsgdGhpcy5nZXRJU084NjAxVGltZUZvcm1hdChkYXRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybWF0UGFydHNCeURpdmlkZXIoaW5wdXQ6IHN0cmluZyk6IElEYXRlVGltZUZvcm1hdFNlY3Rpb25zIHtcclxuICAgIGlmIChpbnB1dC5pbmRleE9mKCcgJykgPiAwKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcGFydHM6IGlucHV0LnNwbGl0KCcgJyksXHJcbiAgICAgICAgZGl2aWRlcjogJyAnXHJcbiAgICAgIH0gYXMgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5wdXQuaW5kZXhPZignLycpID4gMCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBhcnRzOiBpbnB1dC5zcGxpdCgnLycpLFxyXG4gICAgICAgIGRpdmlkZXI6ICcvJ1xyXG4gICAgICB9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xyXG4gICAgfVxyXG4gICAgaWYgKGlucHV0LmluZGV4T2YoJzonKSA+IDApIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwYXJ0czogaW5wdXQuc3BsaXQoJzonKSxcclxuICAgICAgICBkaXZpZGVyOiAnOidcclxuICAgICAgfSBhcyBJRGF0ZVRpbWVGb3JtYXRTZWN0aW9ucztcclxuICAgIH1cclxuICAgIGlmIChpbnB1dC5pbmRleE9mKCc7JykgPiAwKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcGFydHM6IGlucHV0LnNwbGl0KCc7JyksXHJcbiAgICAgICAgZGl2aWRlcjogJzsnXHJcbiAgICAgIH0gYXMgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5wdXQuaW5kZXhPZignLicpID4gMCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBhcnRzOiBpbnB1dC5zcGxpdCgnLicpLFxyXG4gICAgICAgIGRpdmlkZXI6ICcuJ1xyXG4gICAgICB9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xyXG4gICAgfVxyXG4gICAgaWYgKGlucHV0LmluZGV4T2YoJywnKSA+IDApIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBwYXJ0czogaW5wdXQuc3BsaXQoJywnKSxcclxuICAgICAgICBkaXZpZGVyOiAnLCdcclxuICAgICAgfSBhcyBJRGF0ZVRpbWVGb3JtYXRTZWN0aW9ucztcclxuICAgIH1cclxuICAgIGlmIChpbnB1dC5pbmRleE9mKCctJykgPiAwKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcGFydHM6IGlucHV0LnNwbGl0KCctJyksXHJcbiAgICAgICAgZGl2aWRlcjogJy0nXHJcbiAgICAgIH0gYXMgSURhdGVUaW1lRm9ybWF0U2VjdGlvbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoaW5wdXQuaW5kZXhPZignXycpID4gMCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHBhcnRzOiBpbnB1dC5zcGxpdCgnXycpLFxyXG4gICAgICAgIGRpdmlkZXI6ICdfJ1xyXG4gICAgICB9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IHBhcnRzOiBbXSwgZGl2aWRlcjogJyd9IGFzIElEYXRlVGltZUZvcm1hdFNlY3Rpb25zO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgRGF0ZSBGb3JtYXR0aW5nIFJ1bGVzXHJcblxyXG4gIHl5L1lZIOKAkyB0d28tZGlnaXQgeWVhciwgZS5nLiAyMVxyXG4gIHl5eXkvWVlZWSDigJMgZm91ci1kaWdpdCB5ZWFyLCBlLmcuIDIwMjFcclxuICBtL00g4oCTIG9uZS1kaWdpdCBtb250aCBmb3IgbW9udGhzIGJlbG93IDEwLCBlLmcuIDNcclxuICBtbS9NTSDigJMgdHdvLWRpZ2l0IG1vbnRoLCBlLmcuIDAzXHJcbiAgbW1tL01NTSDigJMgdGhyZWUtbGV0dGVyIGFiYnJldmlhdGlvbiBmb3IgbW9udGgsIGUuZy4gTWFyXHJcbiAgbW1tbS9NTU1NIOKAkyBtb250aCBzcGVsbGVkIG91dCBpbiBmdWxsLCBlLmcuIE1hcmNoXHJcbiAgZC9EIOKAkyBvbmUtZGlnaXQgZGF5IG9mIHRoZSBtb250aCBmb3IgZGF5cyBiZWxvdyAxMCwgZS5nLiAyXHJcbiAgZGQvREQg4oCTIHR3by1kaWdpdCBkYXkgb2YgdGhlIG1vbnRoLCBlLmcuIDAyXHJcbiAgZGRkL0RERCDigJMgdGhyZWUtbGV0dGVyIGFiYnJldmlhdGlvbiBmb3IgZGF5IG9mIHRoZSB3ZWVrLCBlLmcuIEZyaVxyXG4gIGRkZGQvRERERCDigJMgZGF5IG9mIHRoZSB3ZWVrIHNwZWxsZWQgb3V0IGluIGZ1bGwsIGUuZy4gRnJpZGF5XHJcblxyXG4gICovXHJcbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmb3JtYXRQYXJ0c0FuZERpdmlkZXIgPSB0aGlzLmdldEZvcm1hdFBhcnRzQnlEaXZpZGVyKGZvcm1hdCk7XHJcbiAgICBsZXQgZGF0ZVZhbHVlID0gJyc7XHJcbiAgICBmb3JtYXRQYXJ0c0FuZERpdmlkZXIucGFydHMuZm9yRWFjaChwYXJ0ID0+IHtcclxuICAgICAgaWYgKGRhdGVWYWx1ZSAhPT0gJycpXHJcbiAgICAgICAgZGF0ZVZhbHVlICs9IGZvcm1hdFBhcnRzQW5kRGl2aWRlci5kaXZpZGVyO1xyXG4gICAgICBzd2l0Y2gocGFydCkge1xyXG4gICAgICAgIGNhc2UgJ3l5JzpcclxuICAgICAgICBjYXNlICdZWSc6XHJcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQyRGlnaXRZZWFyKGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAneXl5eSc6XHJcbiAgICAgICAgY2FzZSAnWVlZWSc6XHJcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQ0RGlnaXRZZWFyKGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbSc6XHJcbiAgICAgICAgY2FzZSAnTSc6XHJcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQxRGlnaXRNb250aChkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21tJzpcclxuICAgICAgICBjYXNlICdNTSc6XHJcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQyRGlnaXRNb250aChkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ21tbSc6XHJcbiAgICAgICAgY2FzZSAnTU1NJzpcclxuICAgICAgICAgIGRhdGVWYWx1ZSArPSB0aGlzLmdldDNEaWdpdE1vbnRoKGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbW1tbSc6XHJcbiAgICAgICAgY2FzZSAnTU1NTSc6XHJcbiAgICAgICAgICBkYXRlVmFsdWUgKz0gdGhpcy5nZXQ0RGlnaXRNb250aChkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2QnOlxyXG4gICAgICAgIGNhc2UgJ0QnOlxyXG4gICAgICAgICAgZGF0ZVZhbHVlICs9IHRoaXMuZ2V0MURpZ2l0RGF5KGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZGQnOlxyXG4gICAgICAgIGNhc2UgJ0REJzpcclxuICAgICAgICAgIGRhdGVWYWx1ZSArPSB0aGlzLmdldDJEaWdpdERheShkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2RkZCc6XHJcbiAgICAgICAgY2FzZSAnREREJzpcclxuICAgICAgICAgIGRhdGVWYWx1ZSArPSB0aGlzLmdldDNEaWdpdERheShkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2RkZGQnOlxyXG4gICAgICAgIGNhc2UgJ0REREQnOlxyXG4gICAgICAgICAgZGF0ZVZhbHVlICs9IHRoaXMuZ2V0NERpZ2l0RGF5KGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGVWYWx1ZTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgVGltZSBGb3JtYXR0aW5nIFJ1bGVzXHJcblxyXG4gIGggLSBob3VyIHRvIDEgZGlnaXQgb24gMTIgaG91ciBjbG9jayAtIHdpdGhvdXQgbGVhZGluZyAwXHJcbiAgaGggLSBob3VyIHRvIDIgZGlnaXRzIG9uIDEyIGhvdXIgY2xvY2sgLSB3aXRoIGxlYWRpbmcgMFxyXG4gIEggLSBob3VyIHRvIDEgZGlnaXQgb24gMjQgaG91ciBjbG9jayAtIHdpdGhvdXQgbGVhZGluZyAwXHJcbiAgSEggLSBob3VyIHRvIDIgZGlnaXRzIG9uIDI0IGhvdXIgY2xvY2sgLSB3aXRoIGxlYWRpbmcgMFxyXG4gIG0gLSBtaW51dGUgdG8gMSBkaWdpdCAtIHdpdGhvdXQgbGVhZGluZyAwXHJcbiAgbW0vbWkvTUkgLSBtaW51dGUgdG8gMiBkaWdpdHMgLSB3aXRoIGxlYWRpbmcgMFxyXG4gIHMvUyAtIHNlY29uZCB0byAxIGRpZ2l0IC0gd2l0aG91dCBsZWFkaW5nIDBcclxuICBzcy9TUyAtIHNlY29uZCB0byAyIGRpZ2l0cyAtIHdpdGggbGVhZGluZyAwXHJcbiAgZi9GIC0gdGVudGggb2YgYSBzZWNvbmQgZS5nLiAyMDA5LTA2LTE1VDEzOjQ1OjMwLjYxNzAwMDAgLT4gNlxyXG4gIGZmL0ZGIC0gaHVuZHJlZHRocyBvZiBhIHNlY29uZCBlLmcuIDIwMDktMDYtMTVUMTM6NDU6MzAuNjE3MDAwMCAtPiA2MVxyXG4gIGZmZi9GRkYgLSBtaWxsaXNlY29uZHMgZS5nLiA2LzE1LzIwMDkgMTM6NDU6MzAuNjE3IC0+IDYxN1xyXG4gIGZmZmYvRkZGRiAtIHRlbiB0aG91c2FuZHRocyBvZiBhIHNlY29uZCBlLmcuIDIwMDktMDYtMTVUMTM6NDU6MzAuNjE3NTAwMCAtPiA2MTc1XHJcbiAgZmZmZmYvRkZGRkYgLSBodW5kcmVkIHRob3VzYW5kdGhzIG9mIGEgc2Vjb25kIGUuZy4gMjAwOS0wNi0xNVQxMzo0NTozMC42MTc1NDAwIC0+IDYxNzU0XHJcbiAgZmZmZmZmL0ZGRkZGRiAtIG1pbGxpb250aHMgb2YgYSBzZWNvbmQgZS5nLiAyMDA5LTA2LTE1VDEzOjQ1OjMwLjYxNzU0MjAgLT4gNjE3NTQyXHJcbiAgdC9UIC0gZmlyc3QgY2hhcmFjdGVyIG9mIEFNL1BNXHJcbiAgdHQvVFQgLSBib3RoIGNoYXJhY3RlcnMgb2YgQU0vUE1cclxuXHJcbiAgKi9cclxuICBmb3JtYXRUaW1lKGRhdGU6IERhdGUsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZvcm1hdFBhcnRzQW5kRGl2aWRlciA9IHRoaXMuZ2V0Rm9ybWF0UGFydHNCeURpdmlkZXIoZm9ybWF0KTtcclxuICAgIGxldCB0aW1lVmFsdWUgPSAnJztcclxuICAgIGZvcm1hdFBhcnRzQW5kRGl2aWRlci5wYXJ0cy5mb3JFYWNoKHBhcnQgPT4ge1xyXG4gICAgICBpZiAodGltZVZhbHVlICE9PSAnJylcclxuICAgICAgICB0aW1lVmFsdWUgKz0gZm9ybWF0UGFydHNBbmREaXZpZGVyLmRpdmlkZXI7XHJcbiAgICAgIHN3aXRjaChwYXJ0KSB7XHJcbiAgICAgICAgY2FzZSAnaCc6XHJcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXQxRGlnaXQxMkhvdXJzKGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnaGgnOlxyXG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MkRpZ2l0MTJIb3VycyhkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0gnOlxyXG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MURpZ2l0MjRIb3VycyhkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ0hIJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDJEaWdpdDI0SG91cnMoZGF0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDFEaWdpdE1pbnV0ZXMoZGF0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtaSc6XHJcbiAgICAgICAgY2FzZSAnbW0nOlxyXG4gICAgICAgIGNhc2UgJ01JJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDJEaWdpdE1pbnV0ZXMoZGF0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzJzpcclxuICAgICAgICBjYXNlICdTJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldDFEaWdpdFNlY29uZHMoZGF0ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzcyc6XHJcbiAgICAgICAgY2FzZSAnU1MnOlxyXG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MkRpZ2l0U2Vjb25kcyhkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3QnOlxyXG4gICAgICAgIGNhc2UgJ1QnOlxyXG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0MURpZ2l0QW1QbShkYXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3R0JzpcclxuICAgICAgICBjYXNlICdUVCc6XHJcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXQyRGlnaXRBbVBtKGRhdGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZic6XHJcbiAgICAgICAgY2FzZSAnRic6XHJcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXRYRGlnaXRNaWxsaXNlY29uZChkYXRlLCAnZicpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZmYnOlxyXG4gICAgICAgIGNhc2UgJ0ZGJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldFhEaWdpdE1pbGxpc2Vjb25kKGRhdGUsICdmZmYnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2ZmZic6XHJcbiAgICAgICAgY2FzZSAnRkZGJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldFhEaWdpdE1pbGxpc2Vjb25kKGRhdGUsICdmZmYnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2ZmZmYnOlxyXG4gICAgICAgIGNhc2UgJ0ZGRkYnOlxyXG4gICAgICAgICAgdGltZVZhbHVlICs9IHRoaXMuZ2V0WERpZ2l0TWlsbGlzZWNvbmQoZGF0ZSwgJ2ZmZmYnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2ZmZmZmJzpcclxuICAgICAgICBjYXNlICdGRkZGRic6XHJcbiAgICAgICAgICB0aW1lVmFsdWUgKz0gdGhpcy5nZXRYRGlnaXRNaWxsaXNlY29uZChkYXRlLCAnZmZmZmYnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2ZmZmZmZic6XHJcbiAgICAgICAgY2FzZSAnRkZGRkZGJzpcclxuICAgICAgICAgIHRpbWVWYWx1ZSArPSB0aGlzLmdldFhEaWdpdE1pbGxpc2Vjb25kKGRhdGUsICdmZmZmZmYnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aW1lVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDFEaWdpdERheShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRheSA9IHRoaXMuY29udmVydFRvRGF0ZUlmUmVxdWlyZWQoZGF0ZSkuZ2V0RGF0ZSgpO1xyXG4gICAgcmV0dXJuICcnICsgZGF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQyRGlnaXREYXkoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBkYXkgPSB0aGlzLmNvbnZlcnRUb0RhdGVJZlJlcXVpcmVkKGRhdGUpLmdldERhdGUoKTtcclxuICAgIHJldHVybiB0aGlzLnBhZERhdGVFbGVtZW50KGRheSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDNEaWdpdERheShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0RhdGVJZlJlcXVpcmVkKGRhdGUpLnRvTG9jYWxlU3RyaW5nKCdkZWZhdWx0JywgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQ0RGlnaXREYXkoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9EYXRlSWZSZXF1aXJlZChkYXRlKS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgd2Vla2RheTogJ2xvbmcnIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQxRGlnaXRNb250aChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5jb252ZXJ0VG9EYXRlSWZSZXF1aXJlZChkYXRlKS5nZXRNb250aCgpICsgMTtcclxuICAgIHJldHVybiAnJyArIG1vbnRoO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQyRGlnaXRNb250aChkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5jb252ZXJ0VG9EYXRlSWZSZXF1aXJlZChkYXRlKS5nZXRNb250aCgpICsgMTtcclxuICAgIHJldHVybiB0aGlzLnBhZERhdGVFbGVtZW50KG1vbnRoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0M0RpZ2l0TW9udGgoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9EYXRlSWZSZXF1aXJlZChkYXRlKS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgbW9udGg6ICdsb25nJyB9KS5zdWJzdHJpbmcoMCwzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0NERpZ2l0TW9udGgoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9EYXRlSWZSZXF1aXJlZChkYXRlKS50b0xvY2FsZVN0cmluZygnZGVmYXVsdCcsIHsgbW9udGg6ICdsb25nJyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0MkRpZ2l0WWVhcihkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZ1bGxZZWFyID0gJycgKyB0aGlzLmNvbnZlcnRUb0RhdGVJZlJlcXVpcmVkKGRhdGUpLmdldEZ1bGxZZWFyKCk7XHJcbiAgICByZXR1cm4gZnVsbFllYXJbMl07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDREaWdpdFllYXIoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9EYXRlSWZSZXF1aXJlZChkYXRlKS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDFEaWdpdDEySG91cnMoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9EYXRlSWZSZXF1aXJlZChkYXRlKS5nZXRIb3VycygpLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDJEaWdpdDEySG91cnMoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBob3VycyA9IHRoaXMuY29udmVydFRvRGF0ZUlmUmVxdWlyZWQoZGF0ZSkuZ2V0SG91cnMoKTtcclxuICAgIHJldHVybiB0aGlzLnBhZERhdGVFbGVtZW50KGhvdXJzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0MURpZ2l0MjRIb3VycyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0RhdGVJZlJlcXVpcmVkKGRhdGUpLmdldEhvdXJzKCkudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0MkRpZ2l0MjRIb3VycyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGhvdXJzID0gdGhpcy5jb252ZXJ0VG9EYXRlSWZSZXF1aXJlZChkYXRlKS5nZXRIb3VycygpO1xyXG4gICAgcmV0dXJuIHRoaXMucGFkRGF0ZUVsZW1lbnQoaG91cnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQxRGlnaXRNaW51dGVzKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvRGF0ZUlmUmVxdWlyZWQoZGF0ZSkuZ2V0TWludXRlcygpLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDJEaWdpdE1pbnV0ZXMoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtaW51dGVzID0gdGhpcy5jb252ZXJ0VG9EYXRlSWZSZXF1aXJlZChkYXRlKS5nZXRNaW51dGVzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5wYWREYXRlRWxlbWVudChtaW51dGVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0MURpZ2l0U2Vjb25kcyhkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0RhdGVJZlJlcXVpcmVkKGRhdGUpLmdldFNlY29uZHMoKS50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQyRGlnaXRTZWNvbmRzKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMuY29udmVydFRvRGF0ZUlmUmVxdWlyZWQoZGF0ZSkuZ2V0U2Vjb25kcygpO1xyXG4gICAgcmV0dXJuIHRoaXMucGFkRGF0ZUVsZW1lbnQoc2Vjb25kcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldDFEaWdpdEFtUG0oZGF0ZTogRGF0ZSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9EYXRlSWZSZXF1aXJlZChkYXRlKS50b0xvY2FsZURhdGVTdHJpbmcoJ3QnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0MkRpZ2l0QW1QbShkYXRlOiBEYXRlKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0RhdGVJZlJlcXVpcmVkKGRhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZygndHQnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0WERpZ2l0TWlsbGlzZWNvbmQoZGF0ZTogRGF0ZSwgZm9ybWF0KTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0RhdGVJZlJlcXVpcmVkKGRhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZyhmb3JtYXQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYWREYXRlRWxlbWVudCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAodmFsdWUgPCAxMCkgPyAnMCcgKyB2YWx1ZSA6ICcnICsgdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnRUb0RhdGVJZlJlcXVpcmVkKGlucHV0OiBEYXRlIHwgc3RyaW5nKTogRGF0ZSB7XHJcbiAgICBpZiAodHlwZW9mKGlucHV0KSA9PT0gJ3N0cmluZycpXHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShpbnB1dCk7XHJcbiAgICByZXR1cm4gaW5wdXQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -222,84 +222,89 @@ class EctDateFormatterService {
|
|
|
222
222
|
return timeValue;
|
|
223
223
|
}
|
|
224
224
|
get1DigitDay(date) {
|
|
225
|
-
const day = date.getDate();
|
|
225
|
+
const day = this.convertToDateIfRequired(date).getDate();
|
|
226
226
|
return '' + day;
|
|
227
227
|
}
|
|
228
228
|
get2DigitDay(date) {
|
|
229
|
-
const day = date.getDate();
|
|
229
|
+
const day = this.convertToDateIfRequired(date).getDate();
|
|
230
230
|
return this.padDateElement(day);
|
|
231
231
|
}
|
|
232
232
|
get3DigitDay(date) {
|
|
233
|
-
return date.toLocaleString('default', { weekday: 'short' });
|
|
233
|
+
return this.convertToDateIfRequired(date).toLocaleString('default', { weekday: 'short' });
|
|
234
234
|
}
|
|
235
235
|
get4DigitDay(date) {
|
|
236
|
-
return date.toLocaleString('default', { weekday: 'long' });
|
|
236
|
+
return this.convertToDateIfRequired(date).toLocaleString('default', { weekday: 'long' });
|
|
237
237
|
}
|
|
238
238
|
get1DigitMonth(date) {
|
|
239
|
-
const month = date.getMonth() + 1;
|
|
239
|
+
const month = this.convertToDateIfRequired(date).getMonth() + 1;
|
|
240
240
|
return '' + month;
|
|
241
241
|
}
|
|
242
242
|
get2DigitMonth(date) {
|
|
243
|
-
const month = date.getMonth() + 1;
|
|
243
|
+
const month = this.convertToDateIfRequired(date).getMonth() + 1;
|
|
244
244
|
return this.padDateElement(month);
|
|
245
245
|
}
|
|
246
246
|
get3DigitMonth(date) {
|
|
247
|
-
return date.toLocaleString('default', { month: 'long' }).substring(0, 3);
|
|
247
|
+
return this.convertToDateIfRequired(date).toLocaleString('default', { month: 'long' }).substring(0, 3);
|
|
248
248
|
}
|
|
249
249
|
get4DigitMonth(date) {
|
|
250
|
-
return date.toLocaleString('default', { month: 'long' });
|
|
250
|
+
return this.convertToDateIfRequired(date).toLocaleString('default', { month: 'long' });
|
|
251
251
|
}
|
|
252
252
|
get2DigitYear(date) {
|
|
253
|
-
const fullYear = '' + date.getFullYear();
|
|
253
|
+
const fullYear = '' + this.convertToDateIfRequired(date).getFullYear();
|
|
254
254
|
return fullYear[2];
|
|
255
255
|
}
|
|
256
256
|
get4DigitYear(date) {
|
|
257
|
-
return date.getFullYear().toString();
|
|
257
|
+
return this.convertToDateIfRequired(date).getFullYear().toString();
|
|
258
258
|
}
|
|
259
259
|
get1Digit12Hours(date) {
|
|
260
|
-
return date.getHours().toString();
|
|
260
|
+
return this.convertToDateIfRequired(date).getHours().toString();
|
|
261
261
|
}
|
|
262
262
|
get2Digit12Hours(date) {
|
|
263
|
-
const hours = date.getHours();
|
|
263
|
+
const hours = this.convertToDateIfRequired(date).getHours();
|
|
264
264
|
return this.padDateElement(hours);
|
|
265
265
|
}
|
|
266
266
|
get1Digit24Hours(date) {
|
|
267
|
-
return date.getHours().toString();
|
|
267
|
+
return this.convertToDateIfRequired(date).getHours().toString();
|
|
268
268
|
}
|
|
269
269
|
get2Digit24Hours(date) {
|
|
270
|
-
const hours = date.getHours();
|
|
270
|
+
const hours = this.convertToDateIfRequired(date).getHours();
|
|
271
271
|
return this.padDateElement(hours);
|
|
272
272
|
}
|
|
273
273
|
get1DigitMinutes(date) {
|
|
274
|
-
return date.getMinutes().toString();
|
|
274
|
+
return this.convertToDateIfRequired(date).getMinutes().toString();
|
|
275
275
|
}
|
|
276
276
|
get2DigitMinutes(date) {
|
|
277
|
-
const minutes = date.getMinutes();
|
|
277
|
+
const minutes = this.convertToDateIfRequired(date).getMinutes();
|
|
278
278
|
return this.padDateElement(minutes);
|
|
279
279
|
}
|
|
280
280
|
get1DigitSeconds(date) {
|
|
281
|
-
return date.getSeconds().toString();
|
|
281
|
+
return this.convertToDateIfRequired(date).getSeconds().toString();
|
|
282
282
|
}
|
|
283
283
|
get2DigitSeconds(date) {
|
|
284
|
-
const seconds = date.getSeconds();
|
|
284
|
+
const seconds = this.convertToDateIfRequired(date).getSeconds();
|
|
285
285
|
return this.padDateElement(seconds);
|
|
286
286
|
}
|
|
287
287
|
get1DigitAmPm(date) {
|
|
288
|
-
return date.toLocaleDateString('t');
|
|
288
|
+
return this.convertToDateIfRequired(date).toLocaleDateString('t');
|
|
289
289
|
}
|
|
290
290
|
get2DigitAmPm(date) {
|
|
291
|
-
return date.toLocaleDateString('tt');
|
|
291
|
+
return this.convertToDateIfRequired(date).toLocaleDateString('tt');
|
|
292
292
|
}
|
|
293
293
|
getXDigitMillisecond(date, format) {
|
|
294
|
-
return date.toLocaleDateString(format);
|
|
294
|
+
return this.convertToDateIfRequired(date).toLocaleDateString(format);
|
|
295
295
|
}
|
|
296
296
|
padDateElement(value) {
|
|
297
297
|
return (value < 10) ? '0' + value : '' + value;
|
|
298
298
|
}
|
|
299
|
-
|
|
300
|
-
|
|
299
|
+
convertToDateIfRequired(input) {
|
|
300
|
+
if (typeof (input) === 'string')
|
|
301
|
+
return new Date(input);
|
|
302
|
+
return input;
|
|
303
|
+
}
|
|
304
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
305
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterService, providedIn: 'root' }); }
|
|
301
306
|
}
|
|
302
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterService, decorators: [{
|
|
303
308
|
type: Injectable,
|
|
304
309
|
args: [{
|
|
305
310
|
providedIn: 'root'
|
|
@@ -307,14 +312,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
307
312
|
}] });
|
|
308
313
|
|
|
309
314
|
class EctDateFormatterModule {
|
|
310
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
311
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
312
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
315
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
316
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterModule, imports: [HttpClientModule] }); }
|
|
317
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterModule, providers: [
|
|
313
318
|
EctDateFormatterService,
|
|
314
319
|
{ provide: LOCALE_ID, useValue: 'en-GB' }
|
|
315
320
|
], imports: [HttpClientModule] }); }
|
|
316
321
|
}
|
|
317
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EctDateFormatterModule, decorators: [{
|
|
318
323
|
type: NgModule,
|
|
319
324
|
args: [{
|
|
320
325
|
declarations: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ect-date-formatter.mjs","sources":["../../../projects/ect-date-formatter/src/lib/ect-date-formatter.service.ts","../../../projects/ect-date-formatter/src/lib/ect-date-formatter.module.ts","../../../projects/ect-date-formatter/src/public-api.ts","../../../projects/ect-date-formatter/src/ect-date-formatter.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nexport interface IDateTimeFormatSections {\r\n parts: string[];\r\n divider: string;\r\n}\r\n\r\nexport interface IEctDateFormatterService {\r\n getISO8601DateFormat(date: Date): string;\r\n getISO8601TimeFormat(date: Date): string;\r\n getISO8601DateAndTimeFormat(date: Date): string;\r\n formatDate(date: Date, format: string): string;\r\n formatTime(date: Date, format: string): string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EctDateFormatterService implements IEctDateFormatterService {\r\n\r\n getISO8601DateFormat(date: Date): string {\r\n return this.get4DigitYear(date) + '-' + this.get2DigitMonth(date) + '-' + this.get2DigitDay(date);\r\n }\r\n\r\n getISO8601TimeFormat(date: Date): string {\r\n return this.get2Digit24Hours(date) + ':' + this.get2DigitMinutes(date) + ':' + this.get2DigitSeconds(date);\r\n }\r\n\r\n getISO8601DateAndTimeFormat(date: Date): string {\r\n return this.getISO8601DateFormat(date) + 'T' + this.getISO8601TimeFormat(date);\r\n }\r\n\r\n private getFormatPartsByDivider(input: string): IDateTimeFormatSections {\r\n if (input.indexOf(' ') > 0) {\r\n return {\r\n parts: input.split(' '),\r\n divider: ' '\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf('/') > 0) {\r\n return {\r\n parts: input.split('/'),\r\n divider: '/'\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf(':') > 0) {\r\n return {\r\n parts: input.split(':'),\r\n divider: ':'\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf(';') > 0) {\r\n return {\r\n parts: input.split(';'),\r\n divider: ';'\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf('.') > 0) {\r\n return {\r\n parts: input.split('.'),\r\n divider: '.'\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf(',') > 0) {\r\n return {\r\n parts: input.split(','),\r\n divider: ','\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf('-') > 0) {\r\n return {\r\n parts: input.split('-'),\r\n divider: '-'\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf('_') > 0) {\r\n return {\r\n parts: input.split('_'),\r\n divider: '_'\r\n } as IDateTimeFormatSections;\r\n }\r\n\r\n return { parts: [], divider: ''} as IDateTimeFormatSections;\r\n }\r\n\r\n\r\n /*\r\n Date Formatting Rules\r\n\r\n yy/YY – two-digit year, e.g. 21\r\n yyyy/YYYY – four-digit year, e.g. 2021\r\n m/M – one-digit month for months below 10, e.g. 3\r\n mm/MM – two-digit month, e.g. 03\r\n mmm/MMM – three-letter abbreviation for month, e.g. Mar\r\n mmmm/MMMM – month spelled out in full, e.g. March\r\n d/D – one-digit day of the month for days below 10, e.g. 2\r\n dd/DD – two-digit day of the month, e.g. 02\r\n ddd/DDD – three-letter abbreviation for day of the week, e.g. Fri\r\n dddd/DDDD – day of the week spelled out in full, e.g. Friday\r\n\r\n */\r\n formatDate(date: Date, format: string): string {\r\n const formatPartsAndDivider = this.getFormatPartsByDivider(format);\r\n let dateValue = '';\r\n formatPartsAndDivider.parts.forEach(part => {\r\n if (dateValue !== '')\r\n dateValue += formatPartsAndDivider.divider;\r\n switch(part) {\r\n case 'yy':\r\n case 'YY':\r\n dateValue += this.get2DigitYear(date);\r\n break;\r\n case 'yyyy':\r\n case 'YYYY':\r\n dateValue += this.get4DigitYear(date);\r\n break;\r\n case 'm':\r\n case 'M':\r\n dateValue += this.get1DigitMonth(date);\r\n break;\r\n case 'mm':\r\n case 'MM':\r\n dateValue += this.get2DigitMonth(date);\r\n break;\r\n case 'mmm':\r\n case 'MMM':\r\n dateValue += this.get3DigitMonth(date);\r\n break;\r\n case 'mmmm':\r\n case 'MMMM':\r\n dateValue += this.get4DigitMonth(date);\r\n break;\r\n case 'd':\r\n case 'D':\r\n dateValue += this.get1DigitDay(date);\r\n break;\r\n case 'dd':\r\n case 'DD':\r\n dateValue += this.get2DigitDay(date);\r\n break;\r\n case 'ddd':\r\n case 'DDD':\r\n dateValue += this.get3DigitDay(date);\r\n break;\r\n case 'dddd':\r\n case 'DDDD':\r\n dateValue += this.get4DigitDay(date);\r\n break;\r\n }\r\n });\r\n return dateValue;\r\n }\r\n\r\n /*\r\n Time Formatting Rules\r\n\r\n h - hour to 1 digit on 12 hour clock - without leading 0\r\n hh - hour to 2 digits on 12 hour clock - with leading 0\r\n H - hour to 1 digit on 24 hour clock - without leading 0\r\n HH - hour to 2 digits on 24 hour clock - with leading 0\r\n m - minute to 1 digit - without leading 0\r\n mm/mi/MI - minute to 2 digits - with leading 0\r\n s/S - second to 1 digit - without leading 0\r\n ss/SS - second to 2 digits - with leading 0\r\n f/F - tenth of a second e.g. 2009-06-15T13:45:30.6170000 -> 6\r\n ff/FF - hundredths of a second e.g. 2009-06-15T13:45:30.6170000 -> 61\r\n fff/FFF - milliseconds e.g. 6/15/2009 13:45:30.617 -> 617\r\n ffff/FFFF - ten thousandths of a second e.g. 2009-06-15T13:45:30.6175000 -> 6175\r\n fffff/FFFFF - hundred thousandths of a second e.g. 2009-06-15T13:45:30.6175400 -> 61754\r\n ffffff/FFFFFF - millionths of a second e.g. 2009-06-15T13:45:30.6175420 -> 617542\r\n t/T - first character of AM/PM\r\n tt/TT - both characters of AM/PM\r\n\r\n */\r\n formatTime(date: Date, format: string): string {\r\n const formatPartsAndDivider = this.getFormatPartsByDivider(format);\r\n let timeValue = '';\r\n formatPartsAndDivider.parts.forEach(part => {\r\n if (timeValue !== '')\r\n timeValue += formatPartsAndDivider.divider;\r\n switch(part) {\r\n case 'h':\r\n timeValue += this.get1Digit12Hours(date);\r\n break;\r\n case 'hh':\r\n timeValue += this.get2Digit12Hours(date);\r\n break;\r\n case 'H':\r\n timeValue += this.get1Digit24Hours(date);\r\n break;\r\n case 'HH':\r\n timeValue += this.get2Digit24Hours(date);\r\n break;\r\n case 'm':\r\n timeValue += this.get1DigitMinutes(date);\r\n break;\r\n case 'mi':\r\n case 'mm':\r\n case 'MI':\r\n timeValue += this.get2DigitMinutes(date);\r\n break;\r\n case 's':\r\n case 'S':\r\n timeValue += this.get1DigitSeconds(date);\r\n break;\r\n case 'ss':\r\n case 'SS':\r\n timeValue += this.get2DigitSeconds(date);\r\n break;\r\n case 't':\r\n case 'T':\r\n timeValue += this.get1DigitAmPm(date);\r\n break;\r\n case 'tt':\r\n case 'TT':\r\n timeValue += this.get2DigitAmPm(date);\r\n break;\r\n case 'f':\r\n case 'F':\r\n timeValue += this.getXDigitMillisecond(date, 'f');\r\n break;\r\n case 'ff':\r\n case 'FF':\r\n timeValue += this.getXDigitMillisecond(date, 'fff');\r\n break;\r\n case 'fff':\r\n case 'FFF':\r\n timeValue += this.getXDigitMillisecond(date, 'fff');\r\n break;\r\n case 'ffff':\r\n case 'FFFF':\r\n timeValue += this.getXDigitMillisecond(date, 'ffff');\r\n break;\r\n case 'fffff':\r\n case 'FFFFF':\r\n timeValue += this.getXDigitMillisecond(date, 'fffff');\r\n break;\r\n case 'ffffff':\r\n case 'FFFFFF':\r\n timeValue += this.getXDigitMillisecond(date, 'ffffff');\r\n break;\r\n }\r\n });\r\n return timeValue;\r\n }\r\n\r\n private get1DigitDay(date: Date): string {\r\n const day = date.getDate();\r\n return '' + day;\r\n }\r\n\r\n private get2DigitDay(date: Date): string {\r\n const day = date.getDate();\r\n return this.padDateElement(day);\r\n }\r\n\r\n private get3DigitDay(date: Date): string {\r\n return date.toLocaleString('default', { weekday: 'short' });\r\n }\r\n\r\n private get4DigitDay(date: Date): string {\r\n return date.toLocaleString('default', { weekday: 'long' });\r\n }\r\n\r\n private get1DigitMonth(date: Date): string {\r\n const month = date.getMonth() + 1;\r\n return '' + month;\r\n }\r\n\r\n private get2DigitMonth(date: Date): string {\r\n const month = date.getMonth() + 1;\r\n return this.padDateElement(month);\r\n }\r\n\r\n private get3DigitMonth(date: Date): string {\r\n return date.toLocaleString('default', { month: 'long' }).substring(0,3);\r\n }\r\n\r\n private get4DigitMonth(date: Date): string {\r\n return date.toLocaleString('default', { month: 'long' });\r\n }\r\n\r\n private get2DigitYear(date: Date): string {\r\n const fullYear = '' + date.getFullYear();\r\n return fullYear[2];\r\n }\r\n\r\n private get4DigitYear(date: Date): string {\r\n return date.getFullYear().toString();\r\n }\r\n\r\n private get1Digit12Hours(date: Date): string {\r\n return date.getHours().toString();\r\n }\r\n\r\n private get2Digit12Hours(date: Date): string {\r\n const hours = date.getHours();\r\n return this.padDateElement(hours);\r\n }\r\n\r\n private get1Digit24Hours(date: Date): string {\r\n return date.getHours().toString();\r\n }\r\n\r\n private get2Digit24Hours(date: Date): string {\r\n const hours = date.getHours();\r\n return this.padDateElement(hours);\r\n }\r\n\r\n private get1DigitMinutes(date: Date): string {\r\n return date.getMinutes().toString();\r\n }\r\n\r\n private get2DigitMinutes(date: Date): string {\r\n const minutes = date.getMinutes();\r\n return this.padDateElement(minutes);\r\n }\r\n\r\n private get1DigitSeconds(date: Date): string {\r\n return date.getSeconds().toString();\r\n }\r\n\r\n private get2DigitSeconds(date: Date): string {\r\n const seconds = date.getSeconds();\r\n return this.padDateElement(seconds);\r\n }\r\n\r\n private get1DigitAmPm(date: Date): string {\r\n return date.toLocaleDateString('t');\r\n }\r\n\r\n private get2DigitAmPm(date: Date): string {\r\n return date.toLocaleDateString('tt');\r\n }\r\n\r\n private getXDigitMillisecond(date: Date, format): string {\r\n return date.toLocaleDateString(format);\r\n }\r\n\r\n private padDateElement(value: number): string {\r\n return (value < 10) ? '0' + value : '' + value;\r\n }\r\n\r\n}\r\n","import { EctDateFormatterService } from './ect-date-formatter.service';\r\nimport { HttpClientModule, HttpClient } from '@angular/common/http';\r\nimport { NgModule, LOCALE_ID } from '@angular/core';\r\n\r\n@NgModule({\r\n declarations: [ ],\r\n imports: [\r\n HttpClientModule\r\n ],\r\n exports: [ ],\r\n providers: [\r\n EctDateFormatterService,\r\n { provide: LOCALE_ID, useValue: 'en-GB' }\r\n ]\r\n})\r\nexport class EctDateFormatterModule { }\r\n","/*\r\n Copyright (c) 2023 Exodus Cloud Technology Solutions Ltd\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in all\r\n copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n SOFTWARE.\r\n*/\r\n\r\nexport * from './lib/ect-date-formatter.service';\r\nexport * from './lib/ect-date-formatter.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ect-date-formatter.mjs","sources":["../../../projects/ect-date-formatter/src/lib/ect-date-formatter.service.ts","../../../projects/ect-date-formatter/src/lib/ect-date-formatter.module.ts","../../../projects/ect-date-formatter/src/public-api.ts","../../../projects/ect-date-formatter/src/ect-date-formatter.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nexport interface IDateTimeFormatSections {\r\n parts: string[];\r\n divider: string;\r\n}\r\n\r\nexport interface IEctDateFormatterService {\r\n getISO8601DateFormat(date: Date): string;\r\n getISO8601TimeFormat(date: Date): string;\r\n getISO8601DateAndTimeFormat(date: Date): string;\r\n formatDate(date: Date, format: string): string;\r\n formatTime(date: Date, format: string): string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EctDateFormatterService implements IEctDateFormatterService {\r\n\r\n getISO8601DateFormat(date: Date): string {\r\n return this.get4DigitYear(date) + '-' + this.get2DigitMonth(date) + '-' + this.get2DigitDay(date);\r\n }\r\n\r\n getISO8601TimeFormat(date: Date): string {\r\n return this.get2Digit24Hours(date) + ':' + this.get2DigitMinutes(date) + ':' + this.get2DigitSeconds(date);\r\n }\r\n\r\n getISO8601DateAndTimeFormat(date: Date): string {\r\n return this.getISO8601DateFormat(date) + 'T' + this.getISO8601TimeFormat(date);\r\n }\r\n\r\n private getFormatPartsByDivider(input: string): IDateTimeFormatSections {\r\n if (input.indexOf(' ') > 0) {\r\n return {\r\n parts: input.split(' '),\r\n divider: ' '\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf('/') > 0) {\r\n return {\r\n parts: input.split('/'),\r\n divider: '/'\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf(':') > 0) {\r\n return {\r\n parts: input.split(':'),\r\n divider: ':'\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf(';') > 0) {\r\n return {\r\n parts: input.split(';'),\r\n divider: ';'\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf('.') > 0) {\r\n return {\r\n parts: input.split('.'),\r\n divider: '.'\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf(',') > 0) {\r\n return {\r\n parts: input.split(','),\r\n divider: ','\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf('-') > 0) {\r\n return {\r\n parts: input.split('-'),\r\n divider: '-'\r\n } as IDateTimeFormatSections;\r\n }\r\n if (input.indexOf('_') > 0) {\r\n return {\r\n parts: input.split('_'),\r\n divider: '_'\r\n } as IDateTimeFormatSections;\r\n }\r\n\r\n return { parts: [], divider: ''} as IDateTimeFormatSections;\r\n }\r\n\r\n\r\n /*\r\n Date Formatting Rules\r\n\r\n yy/YY – two-digit year, e.g. 21\r\n yyyy/YYYY – four-digit year, e.g. 2021\r\n m/M – one-digit month for months below 10, e.g. 3\r\n mm/MM – two-digit month, e.g. 03\r\n mmm/MMM – three-letter abbreviation for month, e.g. Mar\r\n mmmm/MMMM – month spelled out in full, e.g. March\r\n d/D – one-digit day of the month for days below 10, e.g. 2\r\n dd/DD – two-digit day of the month, e.g. 02\r\n ddd/DDD – three-letter abbreviation for day of the week, e.g. Fri\r\n dddd/DDDD – day of the week spelled out in full, e.g. Friday\r\n\r\n */\r\n formatDate(date: Date, format: string): string {\r\n const formatPartsAndDivider = this.getFormatPartsByDivider(format);\r\n let dateValue = '';\r\n formatPartsAndDivider.parts.forEach(part => {\r\n if (dateValue !== '')\r\n dateValue += formatPartsAndDivider.divider;\r\n switch(part) {\r\n case 'yy':\r\n case 'YY':\r\n dateValue += this.get2DigitYear(date);\r\n break;\r\n case 'yyyy':\r\n case 'YYYY':\r\n dateValue += this.get4DigitYear(date);\r\n break;\r\n case 'm':\r\n case 'M':\r\n dateValue += this.get1DigitMonth(date);\r\n break;\r\n case 'mm':\r\n case 'MM':\r\n dateValue += this.get2DigitMonth(date);\r\n break;\r\n case 'mmm':\r\n case 'MMM':\r\n dateValue += this.get3DigitMonth(date);\r\n break;\r\n case 'mmmm':\r\n case 'MMMM':\r\n dateValue += this.get4DigitMonth(date);\r\n break;\r\n case 'd':\r\n case 'D':\r\n dateValue += this.get1DigitDay(date);\r\n break;\r\n case 'dd':\r\n case 'DD':\r\n dateValue += this.get2DigitDay(date);\r\n break;\r\n case 'ddd':\r\n case 'DDD':\r\n dateValue += this.get3DigitDay(date);\r\n break;\r\n case 'dddd':\r\n case 'DDDD':\r\n dateValue += this.get4DigitDay(date);\r\n break;\r\n }\r\n });\r\n return dateValue;\r\n }\r\n\r\n /*\r\n Time Formatting Rules\r\n\r\n h - hour to 1 digit on 12 hour clock - without leading 0\r\n hh - hour to 2 digits on 12 hour clock - with leading 0\r\n H - hour to 1 digit on 24 hour clock - without leading 0\r\n HH - hour to 2 digits on 24 hour clock - with leading 0\r\n m - minute to 1 digit - without leading 0\r\n mm/mi/MI - minute to 2 digits - with leading 0\r\n s/S - second to 1 digit - without leading 0\r\n ss/SS - second to 2 digits - with leading 0\r\n f/F - tenth of a second e.g. 2009-06-15T13:45:30.6170000 -> 6\r\n ff/FF - hundredths of a second e.g. 2009-06-15T13:45:30.6170000 -> 61\r\n fff/FFF - milliseconds e.g. 6/15/2009 13:45:30.617 -> 617\r\n ffff/FFFF - ten thousandths of a second e.g. 2009-06-15T13:45:30.6175000 -> 6175\r\n fffff/FFFFF - hundred thousandths of a second e.g. 2009-06-15T13:45:30.6175400 -> 61754\r\n ffffff/FFFFFF - millionths of a second e.g. 2009-06-15T13:45:30.6175420 -> 617542\r\n t/T - first character of AM/PM\r\n tt/TT - both characters of AM/PM\r\n\r\n */\r\n formatTime(date: Date, format: string): string {\r\n const formatPartsAndDivider = this.getFormatPartsByDivider(format);\r\n let timeValue = '';\r\n formatPartsAndDivider.parts.forEach(part => {\r\n if (timeValue !== '')\r\n timeValue += formatPartsAndDivider.divider;\r\n switch(part) {\r\n case 'h':\r\n timeValue += this.get1Digit12Hours(date);\r\n break;\r\n case 'hh':\r\n timeValue += this.get2Digit12Hours(date);\r\n break;\r\n case 'H':\r\n timeValue += this.get1Digit24Hours(date);\r\n break;\r\n case 'HH':\r\n timeValue += this.get2Digit24Hours(date);\r\n break;\r\n case 'm':\r\n timeValue += this.get1DigitMinutes(date);\r\n break;\r\n case 'mi':\r\n case 'mm':\r\n case 'MI':\r\n timeValue += this.get2DigitMinutes(date);\r\n break;\r\n case 's':\r\n case 'S':\r\n timeValue += this.get1DigitSeconds(date);\r\n break;\r\n case 'ss':\r\n case 'SS':\r\n timeValue += this.get2DigitSeconds(date);\r\n break;\r\n case 't':\r\n case 'T':\r\n timeValue += this.get1DigitAmPm(date);\r\n break;\r\n case 'tt':\r\n case 'TT':\r\n timeValue += this.get2DigitAmPm(date);\r\n break;\r\n case 'f':\r\n case 'F':\r\n timeValue += this.getXDigitMillisecond(date, 'f');\r\n break;\r\n case 'ff':\r\n case 'FF':\r\n timeValue += this.getXDigitMillisecond(date, 'fff');\r\n break;\r\n case 'fff':\r\n case 'FFF':\r\n timeValue += this.getXDigitMillisecond(date, 'fff');\r\n break;\r\n case 'ffff':\r\n case 'FFFF':\r\n timeValue += this.getXDigitMillisecond(date, 'ffff');\r\n break;\r\n case 'fffff':\r\n case 'FFFFF':\r\n timeValue += this.getXDigitMillisecond(date, 'fffff');\r\n break;\r\n case 'ffffff':\r\n case 'FFFFFF':\r\n timeValue += this.getXDigitMillisecond(date, 'ffffff');\r\n break;\r\n }\r\n });\r\n return timeValue;\r\n }\r\n\r\n private get1DigitDay(date: Date): string {\r\n const day = this.convertToDateIfRequired(date).getDate();\r\n return '' + day;\r\n }\r\n\r\n private get2DigitDay(date: Date): string {\r\n const day = this.convertToDateIfRequired(date).getDate();\r\n return this.padDateElement(day);\r\n }\r\n\r\n private get3DigitDay(date: Date): string {\r\n return this.convertToDateIfRequired(date).toLocaleString('default', { weekday: 'short' });\r\n }\r\n\r\n private get4DigitDay(date: Date): string {\r\n return this.convertToDateIfRequired(date).toLocaleString('default', { weekday: 'long' });\r\n }\r\n\r\n private get1DigitMonth(date: Date): string {\r\n const month = this.convertToDateIfRequired(date).getMonth() + 1;\r\n return '' + month;\r\n }\r\n\r\n private get2DigitMonth(date: Date): string {\r\n const month = this.convertToDateIfRequired(date).getMonth() + 1;\r\n return this.padDateElement(month);\r\n }\r\n\r\n private get3DigitMonth(date: Date): string {\r\n return this.convertToDateIfRequired(date).toLocaleString('default', { month: 'long' }).substring(0,3);\r\n }\r\n\r\n private get4DigitMonth(date: Date): string {\r\n return this.convertToDateIfRequired(date).toLocaleString('default', { month: 'long' });\r\n }\r\n\r\n private get2DigitYear(date: Date): string {\r\n const fullYear = '' + this.convertToDateIfRequired(date).getFullYear();\r\n return fullYear[2];\r\n }\r\n\r\n private get4DigitYear(date: Date): string {\r\n return this.convertToDateIfRequired(date).getFullYear().toString();\r\n }\r\n\r\n private get1Digit12Hours(date: Date): string {\r\n return this.convertToDateIfRequired(date).getHours().toString();\r\n }\r\n\r\n private get2Digit12Hours(date: Date): string {\r\n const hours = this.convertToDateIfRequired(date).getHours();\r\n return this.padDateElement(hours);\r\n }\r\n\r\n private get1Digit24Hours(date: Date): string {\r\n return this.convertToDateIfRequired(date).getHours().toString();\r\n }\r\n\r\n private get2Digit24Hours(date: Date): string {\r\n const hours = this.convertToDateIfRequired(date).getHours();\r\n return this.padDateElement(hours);\r\n }\r\n\r\n private get1DigitMinutes(date: Date): string {\r\n return this.convertToDateIfRequired(date).getMinutes().toString();\r\n }\r\n\r\n private get2DigitMinutes(date: Date): string {\r\n const minutes = this.convertToDateIfRequired(date).getMinutes();\r\n return this.padDateElement(minutes);\r\n }\r\n\r\n private get1DigitSeconds(date: Date): string {\r\n return this.convertToDateIfRequired(date).getSeconds().toString();\r\n }\r\n\r\n private get2DigitSeconds(date: Date): string {\r\n const seconds = this.convertToDateIfRequired(date).getSeconds();\r\n return this.padDateElement(seconds);\r\n }\r\n\r\n private get1DigitAmPm(date: Date): string {\r\n return this.convertToDateIfRequired(date).toLocaleDateString('t');\r\n }\r\n\r\n private get2DigitAmPm(date: Date): string {\r\n return this.convertToDateIfRequired(date).toLocaleDateString('tt');\r\n }\r\n\r\n private getXDigitMillisecond(date: Date, format): string {\r\n return this.convertToDateIfRequired(date).toLocaleDateString(format);\r\n }\r\n\r\n private padDateElement(value: number): string {\r\n return (value < 10) ? '0' + value : '' + value;\r\n }\r\n\r\n private convertToDateIfRequired(input: Date | string): Date {\r\n if (typeof(input) === 'string')\r\n return new Date(input);\r\n return input;\r\n }\r\n\r\n}\r\n","import { EctDateFormatterService } from './ect-date-formatter.service';\r\nimport { HttpClientModule, HttpClient } from '@angular/common/http';\r\nimport { NgModule, LOCALE_ID } from '@angular/core';\r\n\r\n@NgModule({\r\n declarations: [ ],\r\n imports: [\r\n HttpClientModule\r\n ],\r\n exports: [ ],\r\n providers: [\r\n EctDateFormatterService,\r\n { provide: LOCALE_ID, useValue: 'en-GB' }\r\n ]\r\n})\r\nexport class EctDateFormatterModule { }\r\n","/*\r\n Copyright (c) 2023 Exodus Cloud Technology Solutions Ltd\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in all\r\n copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n SOFTWARE.\r\n*/\r\n\r\nexport * from './lib/ect-date-formatter.service';\r\nexport * from './lib/ect-date-formatter.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,7 @@ export declare class EctDateFormatterService implements IEctDateFormatterService
|
|
|
39
39
|
private get2DigitAmPm;
|
|
40
40
|
private getXDigitMillisecond;
|
|
41
41
|
private padDateElement;
|
|
42
|
+
private convertToDateIfRequired;
|
|
42
43
|
static ɵfac: i0.ɵɵFactoryDeclaration<EctDateFormatterService, never>;
|
|
43
44
|
static ɵprov: i0.ɵɵInjectableDeclaration<EctDateFormatterService>;
|
|
44
45
|
}
|