@acorex/core 18.16.0-next.9 → 19.0.0
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.
- package/fesm2022/acorex-core-config.mjs +3 -3
- package/fesm2022/acorex-core-date-time.mjs +23 -20
- package/fesm2022/acorex-core-date-time.mjs.map +1 -1
- package/fesm2022/acorex-core-events.mjs +3 -3
- package/fesm2022/acorex-core-file.mjs +10 -10
- package/fesm2022/acorex-core-format.mjs +17 -16
- package/fesm2022/acorex-core-format.mjs.map +1 -1
- package/fesm2022/acorex-core-image.mjs +3 -3
- package/fesm2022/acorex-core-network.mjs +3 -3
- package/fesm2022/acorex-core-pipes.mjs +3 -3
- package/fesm2022/acorex-core-platform.mjs +3 -3
- package/fesm2022/acorex-core-storage.mjs +9 -9
- package/fesm2022/acorex-core-translation.mjs +27 -27
- package/fesm2022/acorex-core-translation.mjs.map +1 -1
- package/fesm2022/acorex-core-utils.mjs +12 -11
- package/fesm2022/acorex-core-utils.mjs.map +1 -1
- package/fesm2022/acorex-core-validation.mjs +40 -40
- package/package.json +3 -37
- package/esm2022/acorex-core.mjs +0 -5
- package/esm2022/common/acorex-core-common.mjs +0 -5
- package/esm2022/common/countries/countries.data.mjs +0 -2640
- package/esm2022/common/countries/country.mjs +0 -2
- package/esm2022/common/index.mjs +0 -3
- package/esm2022/config/acorex-core-config.mjs +0 -5
- package/esm2022/config/index.mjs +0 -3
- package/esm2022/config/lib/configs.mjs +0 -7
- package/esm2022/config/lib/configs.service.mjs +0 -27
- package/esm2022/date-time/acorex-core-date-time.mjs +0 -5
- package/esm2022/date-time/index.mjs +0 -11
- package/esm2022/date-time/lib/calendar.service.mjs +0 -93
- package/esm2022/date-time/lib/dateTime.config.mjs +0 -50
- package/esm2022/date-time/lib/datetime.class.mjs +0 -337
- package/esm2022/date-time/lib/datetime.module.mjs +0 -28
- package/esm2022/date-time/lib/datetime.pipe.mjs +0 -29
- package/esm2022/date-time/lib/formatters/datetime-formatter.mjs +0 -38
- package/esm2022/date-time/lib/formatters/time-duration-formatter.mjs +0 -52
- package/esm2022/date-time/lib/formatters/timeleft-formatter.mjs +0 -90
- package/esm2022/date-time/lib/georgian.calendar.mjs +0 -198
- package/esm2022/date-time/lib/holidays.loader.mjs +0 -13
- package/esm2022/date-time/lib/jalali.calendar.mjs +0 -417
- package/esm2022/events/acorex-core-events.mjs +0 -5
- package/esm2022/events/index.mjs +0 -3
- package/esm2022/events/lib/event.service.mjs +0 -43
- package/esm2022/events/lib/event.type.mjs +0 -6
- package/esm2022/file/acorex-core-file.mjs +0 -5
- package/esm2022/file/index.mjs +0 -4
- package/esm2022/file/lib/file-size-formatter.mjs +0 -24
- package/esm2022/file/lib/file.module.mjs +0 -20
- package/esm2022/file/lib/file.service.mjs +0 -77
- package/esm2022/format/acorex-core-format.mjs +0 -5
- package/esm2022/format/index.mjs +0 -8
- package/esm2022/format/lib/format.config.mjs +0 -3
- package/esm2022/format/lib/format.module.mjs +0 -64
- package/esm2022/format/lib/format.pipe.mjs +0 -33
- package/esm2022/format/lib/format.service.mjs +0 -93
- package/esm2022/format/lib/format.types.mjs +0 -2
- package/esm2022/format/lib/formatters/number-formatter.mjs +0 -74
- package/esm2022/format/lib/formatters/string-formatter.mjs +0 -17
- package/esm2022/image/acorex-core-image.mjs +0 -5
- package/esm2022/image/index.mjs +0 -2
- package/esm2022/image/lib/image.service.mjs +0 -48
- package/esm2022/index.mjs +0 -2
- package/esm2022/memorize/acorex-core-memorize.mjs +0 -5
- package/esm2022/memorize/index.mjs +0 -2
- package/esm2022/memorize/lib/memorize.decorator.mjs +0 -19
- package/esm2022/network/acorex-core-network.mjs +0 -5
- package/esm2022/network/index.mjs +0 -5
- package/esm2022/network/lib/download-task.mjs +0 -47
- package/esm2022/network/lib/network.service.mjs +0 -85
- package/esm2022/network/lib/network.types.mjs +0 -16
- package/esm2022/network/lib/upload-task.mjs +0 -81
- package/esm2022/pipes/acorex-core-pipes.mjs +0 -5
- package/esm2022/pipes/index.mjs +0 -2
- package/esm2022/pipes/lib/safe/safe.pipe.mjs +0 -38
- package/esm2022/platform/acorex-core-platform.mjs +0 -5
- package/esm2022/platform/index.mjs +0 -2
- package/esm2022/platform/lib/platform.service.mjs +0 -293
- package/esm2022/storage/acorex-core-storage.mjs +0 -5
- package/esm2022/storage/cookie-storage.service.mjs +0 -196
- package/esm2022/storage/index.mjs +0 -5
- package/esm2022/storage/local-storage.service.mjs +0 -59
- package/esm2022/storage/session-storage.service.mjs +0 -35
- package/esm2022/storage/storage.interface.mjs +0 -2
- package/esm2022/translation/acorex-core-translation.mjs +0 -5
- package/esm2022/translation/index.mjs +0 -9
- package/esm2022/translation/lib/translation-scope.resolver.mjs +0 -11
- package/esm2022/translation/lib/translation.config.mjs +0 -20
- package/esm2022/translation/lib/translation.loader.mjs +0 -14
- package/esm2022/translation/lib/translation.module.mjs +0 -40
- package/esm2022/translation/lib/translation.service.mjs +0 -215
- package/esm2022/translation/lib/translation.types.mjs +0 -2
- package/esm2022/translation/lib/translator.directive.mjs +0 -28
- package/esm2022/translation/lib/translator.pipe.mjs +0 -23
- package/esm2022/types/acorex-core-types.mjs +0 -5
- package/esm2022/types/index.mjs +0 -2
- package/esm2022/utils/acorex-core-utils.mjs +0 -5
- package/esm2022/utils/index.mjs +0 -8
- package/esm2022/utils/lib/auto-unsubscribe.mjs +0 -36
- package/esm2022/utils/lib/color-util.mjs +0 -136
- package/esm2022/utils/lib/drawing-util.mjs +0 -32
- package/esm2022/utils/lib/html-util.mjs +0 -54
- package/esm2022/utils/lib/resize.directive.mjs +0 -124
- package/esm2022/utils/lib/string-util.mjs +0 -19
- package/esm2022/utils/lib/utils.module.mjs +0 -18
- package/esm2022/validation/acorex-core-validation.mjs +0 -5
- package/esm2022/validation/index.mjs +0 -18
- package/esm2022/validation/lib/rules/between-rule.mjs +0 -31
- package/esm2022/validation/lib/rules/callback-rule.mjs +0 -36
- package/esm2022/validation/lib/rules/equal-rule.mjs +0 -26
- package/esm2022/validation/lib/rules/greater-than.mjs +0 -25
- package/esm2022/validation/lib/rules/length-rule.mjs +0 -23
- package/esm2022/validation/lib/rules/less-than-rule.mjs +0 -25
- package/esm2022/validation/lib/rules/maxlength-rule.mjs +0 -24
- package/esm2022/validation/lib/rules/minlength-rule.mjs +0 -23
- package/esm2022/validation/lib/rules/regex-rule.mjs +0 -46
- package/esm2022/validation/lib/rules/required-rule.mjs +0 -39
- package/esm2022/validation/lib/validation.config.mjs +0 -33
- package/esm2022/validation/lib/validation.module.mjs +0 -84
- package/esm2022/validation/lib/validation.service.mjs +0 -98
- package/esm2022/validation/lib/validation.types.mjs +0 -3
@@ -1,417 +0,0 @@
|
|
1
|
-
import { AXCalendar, AXDateTime } from './datetime.class';
|
2
|
-
export class JalaliCalendar extends AXCalendar {
|
3
|
-
/**
|
4
|
-
* @ignore
|
5
|
-
*/
|
6
|
-
constructor(config) {
|
7
|
-
super(config);
|
8
|
-
/*
|
9
|
-
Jalaali years starting the 33-year rule.
|
10
|
-
*/
|
11
|
-
this.breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];
|
12
|
-
}
|
13
|
-
create(value) {
|
14
|
-
const a = this.toGregorian(value.year, value.month, value.date);
|
15
|
-
return new AXDateTime(new Date(a.getFullYear(), a.getMonth(), a.getDate(), value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this);
|
16
|
-
}
|
17
|
-
name() {
|
18
|
-
return 'jalali';
|
19
|
-
}
|
20
|
-
dayOfMonth(date) {
|
21
|
-
return this.toJalaali(date).day;
|
22
|
-
}
|
23
|
-
dayOfYear(date) {
|
24
|
-
const j = this.toJalaali(date);
|
25
|
-
return (j.month <= 6 ? (j.month - 1) * 31 : 6 * 31 + (j.month - 7) * 30) + j.day;
|
26
|
-
}
|
27
|
-
dayOfWeek(date) {
|
28
|
-
return date.getDay() == 6 ? 1 : date.getDay() + 2;
|
29
|
-
}
|
30
|
-
weekOfYear(date) {
|
31
|
-
//TODO : apply jalali
|
32
|
-
const firstDay = new AXDateTime(date, this).startOf('year');
|
33
|
-
return Math.ceil(((date.getTime() - firstDay.date.getTime()) / 86400000 + firstDay.date.getDay() + 1) / 7);
|
34
|
-
}
|
35
|
-
year(date) {
|
36
|
-
return this.toJalaali(date).year;
|
37
|
-
}
|
38
|
-
monthOfYear(date) {
|
39
|
-
return this.toJalaali(date).month;
|
40
|
-
}
|
41
|
-
add(date, unit, amount) {
|
42
|
-
let value = date.valueOf();
|
43
|
-
switch (unit) {
|
44
|
-
case 'second':
|
45
|
-
value += 1000 * amount;
|
46
|
-
break;
|
47
|
-
case 'minute':
|
48
|
-
value += 60000 * amount;
|
49
|
-
break;
|
50
|
-
case 'hour':
|
51
|
-
value += 3600000 * amount;
|
52
|
-
break;
|
53
|
-
case 'month': {
|
54
|
-
// const v = new Date(value);
|
55
|
-
// let jd = this.dayOfMonth(date);
|
56
|
-
// let jm = this.monthOfYear(date);
|
57
|
-
// let jy = this.year(date);
|
58
|
-
// const nm = jm + amount;
|
59
|
-
// const ny = nm % 12 ? Math.floor(nm / 12) : 0;
|
60
|
-
// jy += ny;
|
61
|
-
// jm = nm - ny * 12;
|
62
|
-
// const vv = this.toGregorian(jy, jm, jd);
|
63
|
-
// v.setFullYear(vv.getFullYear());
|
64
|
-
// v.setMonth(vv.getMonth());
|
65
|
-
// v.setDate(vv.getDate());
|
66
|
-
// value = v.valueOf();
|
67
|
-
// break;
|
68
|
-
let jd = this.dayOfMonth(date);
|
69
|
-
let jm = this.monthOfYear(date);
|
70
|
-
let jy = this.year(date);
|
71
|
-
let newMonth = jm + amount;
|
72
|
-
let yearsToAdd = Math.floor(newMonth / 12);
|
73
|
-
newMonth = newMonth % 12;
|
74
|
-
if (newMonth <= 0) {
|
75
|
-
newMonth += 12;
|
76
|
-
yearsToAdd--;
|
77
|
-
}
|
78
|
-
jy += yearsToAdd;
|
79
|
-
// Temporary set to first of the month to prevent rollover
|
80
|
-
const tempDate = this.toGregorian(jy, newMonth, 1);
|
81
|
-
const gregorianDate = new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());
|
82
|
-
// Adjust the day to either the original day or the last day of the new month, whichever is smaller
|
83
|
-
const lastDayOfNewMonth = this.jalaaliMonthLength(jy, newMonth); // Implement this method to find the last day in a Jalali month
|
84
|
-
jd = Math.min(jd, lastDayOfNewMonth);
|
85
|
-
const finalDate = this.toGregorian(jy, newMonth, jd);
|
86
|
-
gregorianDate.setFullYear(finalDate.getFullYear());
|
87
|
-
gregorianDate.setMonth(finalDate.getMonth());
|
88
|
-
gregorianDate.setDate(finalDate.getDate());
|
89
|
-
value = gregorianDate.valueOf();
|
90
|
-
break;
|
91
|
-
}
|
92
|
-
case 'week':
|
93
|
-
value += 7 * 86400000 * amount;
|
94
|
-
break;
|
95
|
-
case 'year': {
|
96
|
-
const v = new Date(value);
|
97
|
-
let jd = this.dayOfMonth(date);
|
98
|
-
let jm = this.monthOfYear(date);
|
99
|
-
let jy = this.year(date);
|
100
|
-
const vv = this.toGregorian(jy + amount, jm, jd);
|
101
|
-
v.setFullYear(vv.getFullYear());
|
102
|
-
v.setMonth(vv.getMonth());
|
103
|
-
v.setDate(vv.getDate());
|
104
|
-
value = v.valueOf();
|
105
|
-
break;
|
106
|
-
}
|
107
|
-
case 'day':
|
108
|
-
default:
|
109
|
-
value += 86400000 * amount;
|
110
|
-
}
|
111
|
-
return new AXDateTime(new Date(value), this);
|
112
|
-
}
|
113
|
-
set(date, unit, value) {
|
114
|
-
const clone = new Date(date.valueOf());
|
115
|
-
const jDate = this.toJalaali(clone);
|
116
|
-
switch (unit) {
|
117
|
-
case 'second':
|
118
|
-
clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());
|
119
|
-
break;
|
120
|
-
case 'minute':
|
121
|
-
clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());
|
122
|
-
break;
|
123
|
-
case 'hour':
|
124
|
-
clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());
|
125
|
-
break;
|
126
|
-
default:
|
127
|
-
case 'day': {
|
128
|
-
const gDate = this.toGregorian(jDate.year, jDate.month, value);
|
129
|
-
clone.setDate(gDate.getDate());
|
130
|
-
break;
|
131
|
-
}
|
132
|
-
case 'week':
|
133
|
-
break;
|
134
|
-
case 'month': {
|
135
|
-
const gDate2 = this.toGregorian(jDate.year, value, jDate.day);
|
136
|
-
clone.setMonth(gDate2.getMonth());
|
137
|
-
break;
|
138
|
-
}
|
139
|
-
case 'year': {
|
140
|
-
const gDate3 = this.toGregorian(value, jDate.month, jDate.day);
|
141
|
-
clone.setFullYear(gDate3.getFullYear());
|
142
|
-
break;
|
143
|
-
}
|
144
|
-
}
|
145
|
-
return new AXDateTime(clone, this);
|
146
|
-
}
|
147
|
-
startOf(date, unit) {
|
148
|
-
const clone = new Date(date.valueOf());
|
149
|
-
switch (unit) {
|
150
|
-
case 'second':
|
151
|
-
clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);
|
152
|
-
return new AXDateTime(clone, this);
|
153
|
-
case 'minute':
|
154
|
-
clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);
|
155
|
-
return new AXDateTime(clone, this);
|
156
|
-
case 'hour':
|
157
|
-
clone.setHours(clone.getHours(), 0, 0, 0);
|
158
|
-
return new AXDateTime(clone, this);
|
159
|
-
default:
|
160
|
-
case 'day':
|
161
|
-
clone.setHours(0, 0, 0, 0);
|
162
|
-
return new AXDateTime(clone, this);
|
163
|
-
case 'week':
|
164
|
-
return new AXDateTime(clone, this).add('day', -this.dayOfWeek(clone) + 1).startOf('day');
|
165
|
-
case 'month': {
|
166
|
-
const jy = this.year(date);
|
167
|
-
const jm = this.monthOfYear(date);
|
168
|
-
const gDate = this.toGregorian(jy, jm, 1);
|
169
|
-
return new AXDateTime(gDate, this).startOf('day');
|
170
|
-
}
|
171
|
-
case 'year': {
|
172
|
-
const jy = this.year(date);
|
173
|
-
const gDate = this.toGregorian(jy, 1, 1);
|
174
|
-
return new AXDateTime(gDate, this).startOf('day');
|
175
|
-
}
|
176
|
-
}
|
177
|
-
}
|
178
|
-
endOf(date, unit) {
|
179
|
-
const clone = new Date(date.valueOf());
|
180
|
-
switch (unit) {
|
181
|
-
case 'second':
|
182
|
-
clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);
|
183
|
-
return new AXDateTime(clone, this);
|
184
|
-
case 'minute':
|
185
|
-
clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);
|
186
|
-
return new AXDateTime(clone, this);
|
187
|
-
case 'hour':
|
188
|
-
clone.setHours(clone.getHours(), 59, 59, 999);
|
189
|
-
return new AXDateTime(clone, this);
|
190
|
-
default:
|
191
|
-
case 'day':
|
192
|
-
clone.setHours(23, 59, 59, 999);
|
193
|
-
return new AXDateTime(clone, this);
|
194
|
-
case 'week': {
|
195
|
-
return this.startOf(date, 'week').add('day', 6).endOf('day');
|
196
|
-
}
|
197
|
-
case 'month': {
|
198
|
-
const jy = this.year(date);
|
199
|
-
const jm = this.monthOfYear(date);
|
200
|
-
const jd = this.jalaaliMonthLength(jy, jm);
|
201
|
-
const gDate = this.toGregorian(jy, jm, jd);
|
202
|
-
return new AXDateTime(gDate, this).endOf('day');
|
203
|
-
}
|
204
|
-
case 'year': {
|
205
|
-
const jy = this.year(date);
|
206
|
-
const gDate = this.toGregorian(jy, 12, this.jalaaliMonthLength(jy, 12));
|
207
|
-
return new AXDateTime(gDate, this).endOf('day');
|
208
|
-
}
|
209
|
-
}
|
210
|
-
}
|
211
|
-
parse(value) {
|
212
|
-
const [y, M, d, h, m, s, ms] = value.split(/[^a-zA-Z0-9]+/gi);
|
213
|
-
const date = this.toGregorian(Number(y) ?? 0, Number(M) ?? 1, Number(d) ?? 1);
|
214
|
-
if (h != null)
|
215
|
-
date.setHours(Number(h));
|
216
|
-
if (m != null)
|
217
|
-
date.setMinutes(Number(m));
|
218
|
-
if (s != null)
|
219
|
-
date.setSeconds(Number(s));
|
220
|
-
if (ms != null)
|
221
|
-
date.setMilliseconds(Number(d));
|
222
|
-
return new AXDateTime(date, this);
|
223
|
-
}
|
224
|
-
/*
|
225
|
-
Converts a Gregorian date to Jalaali.
|
226
|
-
*/
|
227
|
-
toJalaali(date) {
|
228
|
-
const gd = date.getDate();
|
229
|
-
const gm = date.getMonth() + 1;
|
230
|
-
const gy = date.getFullYear();
|
231
|
-
const r = this.d2j(this.g2d(gy, gm, gd));
|
232
|
-
return {
|
233
|
-
year: r.jy,
|
234
|
-
month: r.jm,
|
235
|
-
day: r.jd,
|
236
|
-
};
|
237
|
-
}
|
238
|
-
/*
|
239
|
-
Converts a Jalaali date to Gregorian.
|
240
|
-
*/
|
241
|
-
toGregorian(jy, jm, jd) {
|
242
|
-
const g = this.d2g(this.j2d(jy, jm, jd));
|
243
|
-
return new Date(g.gy, g.gm - 1, g.gd);
|
244
|
-
}
|
245
|
-
/*
|
246
|
-
Checks whether a Jalaali date is valid or not.
|
247
|
-
*/
|
248
|
-
isValidJalaaliDate(jy, jm, jd) {
|
249
|
-
return jy >= -61 && jy <= 3177 && jm >= 1 && jm <= 12 && jd >= 1 && jd <= this.jalaaliMonthLength(jy, jm);
|
250
|
-
}
|
251
|
-
/*
|
252
|
-
Is this a leap year or not?
|
253
|
-
*/
|
254
|
-
isLeapJalaaliYear(jy) {
|
255
|
-
return this.jalCalLeap(jy) === 0;
|
256
|
-
}
|
257
|
-
/*
|
258
|
-
Number of days in a given month in a Jalaali year.
|
259
|
-
*/
|
260
|
-
jalaaliMonthLength(jy, jm) {
|
261
|
-
if (jm <= 6)
|
262
|
-
return 31;
|
263
|
-
if (jm <= 11)
|
264
|
-
return 30;
|
265
|
-
if (this.isLeapJalaaliYear(jy))
|
266
|
-
return 30;
|
267
|
-
return 29;
|
268
|
-
}
|
269
|
-
/*
|
270
|
-
This determines if the Jalaali (Persian) year is
|
271
|
-
leap (366-day long) or is the common year (365 days)
|
272
|
-
|
273
|
-
@param jy Jalaali calendar year (-61 to 3177)
|
274
|
-
@returns number of years since the last leap year (0 to 4)
|
275
|
-
*/
|
276
|
-
jalCalLeap(jy) {
|
277
|
-
let bl = this.breaks.length, jp = this.breaks[0], jm, jump, leap, n, i;
|
278
|
-
if (jy < jp || jy >= this.breaks[bl - 1])
|
279
|
-
throw new Error('Invalid Jalaali year ' + jy);
|
280
|
-
for (i = 1; i < bl; i += 1) {
|
281
|
-
jm = this.breaks[i];
|
282
|
-
jump = jm - jp;
|
283
|
-
if (jy < jm)
|
284
|
-
break;
|
285
|
-
jp = jm;
|
286
|
-
}
|
287
|
-
n = jy - jp;
|
288
|
-
if (jump - n < 6)
|
289
|
-
n = n - jump + this.div(jump + 4, 33) * 33;
|
290
|
-
leap = this.mod(this.mod(n + 1, 33) - 1, 4);
|
291
|
-
if (leap === -1) {
|
292
|
-
leap = 4;
|
293
|
-
}
|
294
|
-
return leap;
|
295
|
-
}
|
296
|
-
jalCal(jy, withoutLeap) {
|
297
|
-
let bl = this.breaks.length, gy = jy + 621, leapJ = -14, jp = this.breaks[0], jm, jump, leap, leapG, march, n, i;
|
298
|
-
if (jy < jp || jy >= this.breaks[bl - 1])
|
299
|
-
throw new Error('Invalid Jalaali year ' + jy);
|
300
|
-
// Find the limiting years for the Jalaali year jy.
|
301
|
-
for (i = 1; i < bl; i += 1) {
|
302
|
-
jm = this.breaks[i];
|
303
|
-
jump = jm - jp;
|
304
|
-
if (jy < jm)
|
305
|
-
break;
|
306
|
-
leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4);
|
307
|
-
jp = jm;
|
308
|
-
}
|
309
|
-
n = jy - jp;
|
310
|
-
// Find the number of leap years from AD 621 to the beginning
|
311
|
-
// of the current Jalaali year in the Persian calendar.
|
312
|
-
leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4);
|
313
|
-
if (this.mod(jump, 33) === 4 && jump - n === 4)
|
314
|
-
leapJ += 1;
|
315
|
-
// And the same in the Gregorian calendar (until the year gy).
|
316
|
-
leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150;
|
317
|
-
// Determine the Gregorian date of Farvardin the 1st.
|
318
|
-
march = 20 + leapJ - leapG;
|
319
|
-
// return with gy and march when we don't need leap
|
320
|
-
if (withoutLeap)
|
321
|
-
return { gy: gy, march: march };
|
322
|
-
// Find how many years have passed since the last leap year.
|
323
|
-
if (jump - n < 6)
|
324
|
-
n = n - jump + this.div(jump + 4, 33) * 33;
|
325
|
-
leap = this.mod(this.mod(n + 1, 33) - 1, 4);
|
326
|
-
if (leap === -1) {
|
327
|
-
leap = 4;
|
328
|
-
}
|
329
|
-
return {
|
330
|
-
leap: leap,
|
331
|
-
gy: gy,
|
332
|
-
march: march,
|
333
|
-
};
|
334
|
-
}
|
335
|
-
j2d(jy, jm, jd) {
|
336
|
-
let r = this.jalCal(jy, true);
|
337
|
-
return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1;
|
338
|
-
}
|
339
|
-
d2j(jdn) {
|
340
|
-
let gy = this.d2g(jdn).gy, // Calculate Gregorian year (gy).
|
341
|
-
jy = gy - 621, r = this.jalCal(jy, false), jdn1f = this.g2d(gy, 3, r.march), jd, jm, k;
|
342
|
-
// Find number of days that passed since 1 Farvardin.
|
343
|
-
k = jdn - jdn1f;
|
344
|
-
if (k >= 0) {
|
345
|
-
if (k <= 185) {
|
346
|
-
// The first 6 months.
|
347
|
-
jm = 1 + this.div(k, 31);
|
348
|
-
jd = this.mod(k, 31) + 1;
|
349
|
-
return {
|
350
|
-
jy: jy,
|
351
|
-
jm: jm,
|
352
|
-
jd: jd,
|
353
|
-
};
|
354
|
-
}
|
355
|
-
else {
|
356
|
-
// The remaining months.
|
357
|
-
k -= 186;
|
358
|
-
}
|
359
|
-
}
|
360
|
-
else {
|
361
|
-
// Previous Jalaali year.
|
362
|
-
jy -= 1;
|
363
|
-
k += 179;
|
364
|
-
if (r.leap === 1)
|
365
|
-
k += 1;
|
366
|
-
}
|
367
|
-
jm = 7 + this.div(k, 30);
|
368
|
-
jd = this.mod(k, 30) + 1;
|
369
|
-
return {
|
370
|
-
jy: jy,
|
371
|
-
jm: jm,
|
372
|
-
jd: jd,
|
373
|
-
};
|
374
|
-
}
|
375
|
-
g2d(gy, gm, gd) {
|
376
|
-
let d = this.div((gy + this.div(gm - 8, 6) + 100100) * 1461, 4) + this.div(153 * this.mod(gm + 9, 12) + 2, 5) + gd - 34840408;
|
377
|
-
d = d - this.div(this.div(gy + 100100 + this.div(gm - 8, 6), 100) * 3, 4) + 752;
|
378
|
-
return d;
|
379
|
-
}
|
380
|
-
d2g(jdn) {
|
381
|
-
let j, i, gd, gm, gy;
|
382
|
-
j = 4 * jdn + 139361631;
|
383
|
-
j = j + this.div(this.div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908;
|
384
|
-
i = this.div(this.mod(j, 1461), 4) * 5 + 308;
|
385
|
-
gd = this.div(this.mod(i, 153), 5) + 1;
|
386
|
-
gm = this.mod(this.div(i, 153), 12) + 1;
|
387
|
-
gy = this.div(j, 1461) - 100100 + this.div(8 - gm, 6);
|
388
|
-
return {
|
389
|
-
gy: gy,
|
390
|
-
gm: gm,
|
391
|
-
gd: gd,
|
392
|
-
};
|
393
|
-
}
|
394
|
-
jalaaliWeek(jy, jm, jd) {
|
395
|
-
let dayOfWeek = this.jalaaliToDateObject(jy, jm, jd, 0, 0, 0, 0).getDay();
|
396
|
-
let startDayDifference = dayOfWeek == 6 ? 0 : -(dayOfWeek + 1);
|
397
|
-
let endDayDifference = 6 + startDayDifference;
|
398
|
-
return {
|
399
|
-
saturday: this.d2j(this.j2d(jy, jm, jd + startDayDifference)),
|
400
|
-
friday: this.d2j(this.j2d(jy, jm, jd + endDayDifference)),
|
401
|
-
};
|
402
|
-
}
|
403
|
-
jalaaliToDateObject(jy, jm, jd, h = 0, m = 0, s = 0, ms = 0) {
|
404
|
-
let gregorianCalenderDate = this.toGregorian(jy, jm, jd);
|
405
|
-
return new Date(gregorianCalenderDate.getFullYear(), gregorianCalenderDate.getMonth() - 1, gregorianCalenderDate.getDate(), h || 0, m || 0, s || 0, ms || 0);
|
406
|
-
}
|
407
|
-
/*
|
408
|
-
Utility helper functions.
|
409
|
-
*/
|
410
|
-
div(a, b) {
|
411
|
-
return ~~(a / b);
|
412
|
-
}
|
413
|
-
mod(a, b) {
|
414
|
-
return a - ~~(a / b) * b;
|
415
|
-
}
|
416
|
-
}
|
417
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamFsYWxpLmNhbGVuZGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2phbGFsaS5jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFvQixVQUFVLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7QUFFbkcsTUFBTSxPQUFPLGNBQWUsU0FBUSxVQUFVO0lBQzVDOztPQUVHO0lBQ0gsWUFBWSxNQUF3QjtRQUNsQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFHaEI7O1FBRUE7UUFDUSxXQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUwvSCxDQUFDO0lBT0QsTUFBTSxDQUFDLEtBQWtCO1FBQ3ZCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksVUFBVSxDQUNuQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMs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RSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxFQUFFLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztJQUVBO0lBQ0EsU0FBUyxDQUFDLElBQVU7UUFDbEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNWLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRTtZQUNYLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRTtTQUNWLENBQUM7SUFDSixDQUFDO0lBRUQ7O01BRUU7SUFDRixXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ3BCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O01BRUU7SUFDRixrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQ7O01BRUU7SUFDRixpQkFBaUIsQ0FBQyxFQUFFO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOztNQUVFO0lBQ0Ysa0JBQWtCLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQUU7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMxQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxVQUFVLENBQUMsRUFBVTtRQUMzQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDekIsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ25CLEVBQUUsRUFDRixJQUFJLEVBQ0osSUFBSSxFQUNKLENBQUMsRUFDRCxDQUFDLENBQUM7UUFFSixJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFeEYsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNCLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ2YsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFBRSxNQUFNO1lBQ25CLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDVixDQUFDO1FBQ0QsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFWixJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0QsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hCLElBQUksR0FBRyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sTUFBTSxDQUFDLEVBQVUsRUFBRSxXQUFvQjtRQUM3QyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFDekIsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQ2IsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUNYLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNuQixFQUFFLEVBQ0YsSUFBSSxFQUNKLElBQUksRUFDSixLQUFLLEVBQ0wsS0FBSyxFQUNMLENBQUMsRUFDRCxDQUFDLENBQUM7UUFFSixJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFeEYsbURBQW1EO1FBQ25ELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQixFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNmLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQUUsTUFBTTtZQUNuQixLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDVixDQUFDO1FBQ0QsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFWiw2REFBNkQ7UUFDN0QsdURBQXVEO1FBQ3ZELEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQztZQUFFLEtBQUssSUFBSSxDQUFDLENBQUM7UUFFM0QsOERBQThEO1FBQzlELEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUV6RSxxREFBcUQ7UUFDckQsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRTNCLG1EQUFtRDtRQUNuRCxJQUFJLFdBQVc7WUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFakQsNERBQTREO1FBQzVELElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3RCxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEIsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUk7WUFDVixFQUFFLEVBQUUsRUFBRTtZQUNOLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQztJQUNKLENBQUM7SUFFTyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ3BCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVPLEdBQUcsQ0FBQyxHQUFXO1FBQ3JCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLGlDQUFpQztRQUMxRCxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFDYixDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQzFCLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUNoQyxFQUFFLEVBQ0YsRUFBRSxFQUNGLENBQUMsQ0FBQztRQUVKLHFEQUFxRDtRQUNyRCxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNiLHNCQUFzQjtnQkFDdEIsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDekIsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDekIsT0FBTztvQkFDTCxFQUFFLEVBQUUsRUFBRTtvQkFDTixFQUFFLEVBQUUsRUFBRTtvQkFDTixFQUFFLEVBQUUsRUFBRTtpQkFDUCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHdCQUF3QjtnQkFDeEIsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUNYLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLHlCQUF5QjtZQUN6QixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1IsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUNULElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO2dCQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekIsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPO1lBQ0wsRUFBRSxFQUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRTtZQUNOLEVBQUUsRUFBRSxFQUFFO1NBQ1AsQ0FBQztJQUNKLENBQUM7SUFFTyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO1FBQzVDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUM7UUFDOUgsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNoRixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxHQUFHLENBQUMsR0FBVztRQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDckIsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDN0MsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RCxPQUFPO1lBQ0wsRUFBRSxFQUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRTtZQUNOLEVBQUUsRUFBRSxFQUFFO1NBQ1AsQ0FBQztJQUNKLENBQUM7SUFFTyxXQUFXLENBQUMsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO1FBQ3BELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUUxRSxJQUFJLGtCQUFrQixHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxJQUFJLGdCQUFnQixHQUFHLENBQUMsR0FBRyxrQkFBa0IsQ0FBQztRQUU5QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzdELE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztTQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQixDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLElBQVksQ0FBQyxFQUFFLElBQVksQ0FBQyxFQUFFLElBQVksQ0FBQyxFQUFFLEtBQWEsQ0FBQztRQUN6SCxJQUFJLHFCQUFxQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6RCxPQUFPLElBQUksSUFBSSxDQUNiLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxFQUNuQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQ3BDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxFQUMvQixDQUFDLElBQUksQ0FBQyxFQUNOLENBQUMsSUFBSSxDQUFDLEVBQ04sQ0FBQyxJQUFJLENBQUMsRUFDTixFQUFFLElBQUksQ0FBQyxDQUNSLENBQUM7SUFDSixDQUFDO0lBRUQ7O01BRUU7SUFFTSxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDOUIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVPLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ2FsZW5kYXIsIEFYQ2FsZW5kYXJDb25maWcsIEFYRGF0ZVRpbWUsIEFYRGF0ZVZhbHVlLCBUaW1lVW5pdCB9IGZyb20gJy4vZGF0ZXRpbWUuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgSmFsYWxpQ2FsZW5kYXIgZXh0ZW5kcyBBWENhbGVuZGFyIHtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQVhDYWxlbmRhckNvbmZpZykge1xuICAgIHN1cGVyKGNvbmZpZyk7XG4gIH1cblxuICAvKlxuICBKYWxhYWxpIHllYXJzIHN0YXJ0aW5nIHRoZSAzMy15ZWFyIHJ1bGUuXG4qL1xuICBwcml2YXRlIGJyZWFrcyA9IFstNjEsIDksIDM4LCAxOTksIDQyNiwgNjg2LCA3NTYsIDgxOCwgMTExMSwgMTE4MSwgMTIxMCwgMTYzNSwgMjA2MCwgMjA5NywgMjE5MiwgMjI2MiwgMjMyNCwgMjM5NCwgMjQ1NiwgMzE3OF07XG5cbiAgY3JlYXRlKHZhbHVlOiBBWERhdGVWYWx1ZSk6IEFYRGF0ZVRpbWUge1xuICAgIGNvbnN0IGEgPSB0aGlzLnRvR3JlZ29yaWFuKHZhbHVlLnllYXIsIHZhbHVlLm1vbnRoLCB2YWx1ZS5kYXRlKTtcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoXG4gICAgICBuZXcgRGF0ZShhLmdldEZ1bGxZZWFyKCksIGEuZ2V0TW9udGgoKSwgYS5nZXREYXRlKCksIHZhbHVlLmhvdXJzIHx8IDAsIHZhbHVlLm1pbnV0ZXMgfHwgMCwgdmFsdWUuc2Vjb25kcyB8fCAwLCB2YWx1ZS5tcyB8fCAwKSxcbiAgICAgIHRoaXMsXG4gICAgKTtcbiAgfVxuXG4gIG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2phbGFsaSc7XG4gIH1cblxuICBkYXlPZk1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvSmFsYWFsaShkYXRlKS5kYXk7XG4gIH1cblxuICBkYXlPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgaiA9IHRoaXMudG9KYWxhYWxpKGRhdGUpO1xuICAgIHJldHVybiAoai5tb250aCA8PSA2ID8gKGoubW9udGggLSAxKSAqIDMxIDogNiAqIDMxICsgKGoubW9udGggLSA3KSAqIDMwKSArIGouZGF5O1xuICB9XG5cbiAgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldERheSgpID09IDYgPyAxIDogZGF0ZS5nZXREYXkoKSArIDI7XG4gIH1cblxuICB3ZWVrT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIC8vVE9ETyA6IGFwcGx5IGphbGFsaVxuICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IEFYRGF0ZVRpbWUoZGF0ZSwgdGhpcykuc3RhcnRPZigneWVhcicpO1xuICAgIHJldHVybiBNYXRoLmNlaWwoKChkYXRlLmdldFRpbWUoKSAtIGZpcnN0RGF5LmRhdGUuZ2V0VGltZSgpKSAvIDg2NDAwMDAwICsgZmlyc3REYXkuZGF0ZS5nZXREYXkoKSArIDEpIC8gNyk7XG4gIH1cblxuICB5ZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvSmFsYWFsaShkYXRlKS55ZWFyO1xuICB9XG5cbiAgbW9udGhPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9KYWxhYWxpKGRhdGUpLm1vbnRoO1xuICB9XG5cbiAgYWRkKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCBhbW91bnQ6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xuICAgIGxldCB2YWx1ZSA9IGRhdGUudmFsdWVPZigpO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgdmFsdWUgKz0gMTAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICB2YWx1ZSArPSA2MDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgdmFsdWUgKz0gMzYwMDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgLy8gY29uc3QgdiA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgLy8gbGV0IGpkID0gdGhpcy5kYXlPZk1vbnRoKGRhdGUpO1xuICAgICAgICAvLyBsZXQgam0gPSB0aGlzLm1vbnRoT2ZZZWFyKGRhdGUpO1xuICAgICAgICAvLyBsZXQgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIC8vIGNvbnN0IG5tID0gam0gKyBhbW91bnQ7XG4gICAgICAgIC8vIGNvbnN0IG55ID0gbm0gJSAxMiA/IE1hdGguZmxvb3Iobm0gLyAxMikgOiAwO1xuICAgICAgICAvLyBqeSArPSBueTtcbiAgICAgICAgLy8gam0gPSBubSAtIG55ICogMTI7XG4gICAgICAgIC8vIGNvbnN0IHZ2ID0gdGhpcy50b0dyZWdvcmlhbihqeSwgam0sIGpkKTtcbiAgICAgICAgLy8gdi5zZXRGdWxsWWVhcih2di5nZXRGdWxsWWVhcigpKTtcbiAgICAgICAgLy8gdi5zZXRNb250aCh2di5nZXRNb250aCgpKTtcbiAgICAgICAgLy8gdi5zZXREYXRlKHZ2LmdldERhdGUoKSk7XG4gICAgICAgIC8vIHZhbHVlID0gdi52YWx1ZU9mKCk7XG4gICAgICAgIC8vIGJyZWFrO1xuICAgICAgICBsZXQgamQgPSB0aGlzLmRheU9mTW9udGgoZGF0ZSk7XG4gICAgICAgIGxldCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XG4gICAgICAgIGxldCBqeSA9IHRoaXMueWVhcihkYXRlKTtcblxuICAgICAgICBsZXQgbmV3TW9udGggPSBqbSArIGFtb3VudDtcbiAgICAgICAgbGV0IHllYXJzVG9BZGQgPSBNYXRoLmZsb29yKG5ld01vbnRoIC8gMTIpO1xuICAgICAgICBuZXdNb250aCA9IG5ld01vbnRoICUgMTI7XG4gICAgICAgIGlmIChuZXdNb250aCA8PSAwKSB7XG4gICAgICAgICAgbmV3TW9udGggKz0gMTI7XG4gICAgICAgICAgeWVhcnNUb0FkZC0tO1xuICAgICAgICB9XG5cbiAgICAgICAgankgKz0geWVhcnNUb0FkZDtcblxuICAgICAgICAvLyBUZW1wb3Jhcnkgc2V0IHRvIGZpcnN0IG9mIHRoZSBtb250aCB0byBwcmV2ZW50IHJvbGxvdmVyXG4gICAgICAgIGNvbnN0IHRlbXBEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqeSwgbmV3TW9udGgsIDEpO1xuICAgICAgICBjb25zdCBncmVnb3JpYW5EYXRlID0gbmV3IERhdGUodGVtcERhdGUuZ2V0RnVsbFllYXIoKSwgdGVtcERhdGUuZ2V0TW9udGgoKSwgdGVtcERhdGUuZ2V0RGF0ZSgpKTtcblxuICAgICAgICAvLyBBZGp1c3QgdGhlIGRheSB0byBlaXRoZXIgdGhlIG9yaWdpbmFsIGRheSBvciB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aCwgd2hpY2hldmVyIGlzIHNtYWxsZXJcbiAgICAgICAgY29uc3QgbGFzdERheU9mTmV3TW9udGggPSB0aGlzLmphbGFhbGlNb250aExlbmd0aChqeSwgbmV3TW9udGgpOyAvLyBJbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gZmluZCB0aGUgbGFzdCBkYXkgaW4gYSBKYWxhbGkgbW9udGhcbiAgICAgICAgamQgPSBNYXRoLm1pbihqZCwgbGFzdERheU9mTmV3TW9udGgpO1xuXG4gICAgICAgIGNvbnN0IGZpbmFsRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIG5ld01vbnRoLCBqZCk7XG4gICAgICAgIGdyZWdvcmlhbkRhdGUuc2V0RnVsbFllYXIoZmluYWxEYXRlLmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICBncmVnb3JpYW5EYXRlLnNldE1vbnRoKGZpbmFsRGF0ZS5nZXRNb250aCgpKTtcbiAgICAgICAgZ3JlZ29yaWFuRGF0ZS5zZXREYXRlKGZpbmFsRGF0ZS5nZXREYXRlKCkpO1xuXG4gICAgICAgIHZhbHVlID0gZ3JlZ29yaWFuRGF0ZS52YWx1ZU9mKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHZhbHVlICs9IDcgKiA4NjQwMDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICBjb25zdCB2ID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICBsZXQgamQgPSB0aGlzLmRheU9mTW9udGgoZGF0ZSk7XG4gICAgICAgIGxldCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XG4gICAgICAgIGxldCBqeSA9IHRoaXMueWVhcihkYXRlKTtcbiAgICAgICAgY29uc3QgdnYgPSB0aGlzLnRvR3JlZ29yaWFuKGp5ICsgYW1vdW50LCBqbSwgamQpO1xuICAgICAgICB2LnNldEZ1bGxZZWFyKHZ2LmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICB2LnNldE1vbnRoKHZ2LmdldE1vbnRoKCkpO1xuICAgICAgICB2LnNldERhdGUodnYuZ2V0RGF0ZSgpKTtcbiAgICAgICAgdmFsdWUgPSB2LnZhbHVlT2YoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdmFsdWUgKz0gODY0MDAwMDAgKiBhbW91bnQ7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSh2YWx1ZSksIHRoaXMpO1xuICB9XG5cbiAgc2V0KGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCB2YWx1ZTogbnVtYmVyKTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgY29uc3QgakRhdGUgPSB0aGlzLnRvSmFsYWFsaShjbG9uZSk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIHZhbHVlLCBjbG9uZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgdmFsdWUsIGNsb25lLmdldFNlY29uZHMoKSwgY2xvbmUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICBjbG9uZS5zZXRIb3Vycyh2YWx1ZSwgY2xvbmUuZ2V0TWludXRlcygpLCBjbG9uZS5nZXRTZWNvbmRzKCksIGNsb25lLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSAnZGF5Jzoge1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oakRhdGUueWVhciwgakRhdGUubW9udGgsIHZhbHVlKTtcbiAgICAgICAgY2xvbmUuc2V0RGF0ZShnRGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vbnRoJzoge1xuICAgICAgICBjb25zdCBnRGF0ZTIgPSB0aGlzLnRvR3JlZ29yaWFuKGpEYXRlLnllYXIsIHZhbHVlLCBqRGF0ZS5kYXkpO1xuICAgICAgICBjbG9uZS5zZXRNb250aChnRGF0ZTIuZ2V0TW9udGgoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAneWVhcic6IHtcbiAgICAgICAgY29uc3QgZ0RhdGUzID0gdGhpcy50b0dyZWdvcmlhbih2YWx1ZSwgakRhdGUubW9udGgsIGpEYXRlLmRheSk7XG4gICAgICAgIGNsb25lLnNldEZ1bGxZZWFyKGdEYXRlMy5nZXRGdWxsWWVhcigpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gIH1cblxuICBzdGFydE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIDAsIDApO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIDAsIDAsIDApO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcykuYWRkKCdkYXknLCAtdGhpcy5kYXlPZldlZWsoY2xvbmUpICsgMSkuc3RhcnRPZignZGF5Jyk7XG4gICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgY29uc3QgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcbiAgICAgICAgY29uc3QgZ0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgMSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShnRGF0ZSwgdGhpcykuc3RhcnRPZignZGF5Jyk7XG4gICAgICB9XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICBjb25zdCBqeSA9IHRoaXMueWVhcihkYXRlKTtcbiAgICAgICAgY29uc3QgZ0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCAxLCAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGdEYXRlLCB0aGlzKS5zdGFydE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBlbmRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWUge1xuICAgIGNvbnN0IGNsb25lID0gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgY2xvbmUuZ2V0TWludXRlcygpLCBjbG9uZS5nZXRTZWNvbmRzKCksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIDU5LCA5OTkpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIDU5LCA1OSwgOTk5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBjbG9uZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgY2FzZSAnd2Vlayc6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRPZihkYXRlLCAnd2VlaycpLmFkZCgnZGF5JywgNikuZW5kT2YoJ2RheScpO1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9udGgnOiB7XG4gICAgICAgIGNvbnN0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGpkID0gdGhpcy5qYWxhYWxpTW9udGhMZW5ndGgoanksIGptKTtcbiAgICAgICAgY29uc3QgZ0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgamQpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMpLmVuZE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3llYXInOiB7XG4gICAgICAgIGNvbnN0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIDEyLCB0aGlzLmphbGFhbGlNb250aExlbmd0aChqeSwgMTIpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGdEYXRlLCB0aGlzKS5lbmRPZignZGF5Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcGFyc2UodmFsdWU6IHN0cmluZyk6IEFYRGF0ZVRpbWUge1xuICAgIGNvbnN0IFt5LCBNLCBkLCBoLCBtLCBzLCBtc10gPSB2YWx1ZS5zcGxpdCgvW15hLXpBLVowLTldKy9naSk7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oTnVtYmVyKHkpID8/IDAsIE51bWJlcihNKSA/PyAxLCBOdW1iZXIoZCkgPz8gMSk7XG4gICAgaWYgKGggIT0gbnVsbCkgZGF0ZS5zZXRIb3VycyhOdW1iZXIoaCkpO1xuICAgIGlmIChtICE9IG51bGwpIGRhdGUuc2V0TWludXRlcyhOdW1iZXIobSkpO1xuICAgIGlmIChzICE9IG51bGwpIGRhdGUuc2V0U2Vjb25kcyhOdW1iZXIocykpO1xuICAgIGlmIChtcyAhPSBudWxsKSBkYXRlLnNldE1pbGxpc2Vjb25kcyhOdW1iZXIoZCkpO1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzKTtcbiAgfVxuXG4gIC8qXG4gIENvbnZlcnRzIGEgR3JlZ29yaWFuIGRhdGUgdG8gSmFsYWFsaS5cbiovXG4gIHRvSmFsYWFsaShkYXRlOiBEYXRlKTogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0ge1xuICAgIGNvbnN0IGdkID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgZ20gPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgIGNvbnN0IGd5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IHIgPSB0aGlzLmQyaih0aGlzLmcyZChneSwgZ20sIGdkKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXI6IHIuanksXG4gICAgICBtb250aDogci5qbSxcbiAgICAgIGRheTogci5qZCxcbiAgICB9O1xuICB9XG5cbiAgLypcbiAgICBDb252ZXJ0cyBhIEphbGFhbGkgZGF0ZSB0byBHcmVnb3JpYW4uXG4gICovXG4gIHRvR3JlZ29yaWFuKGp5LCBqbSwgamQpOiBEYXRlIHtcbiAgICBjb25zdCBnID0gdGhpcy5kMmcodGhpcy5qMmQoanksIGptLCBqZCkpO1xuICAgIHJldHVybiBuZXcgRGF0ZShnLmd5LCBnLmdtIC0gMSwgZy5nZCk7XG4gIH1cblxuICAvKlxuICAgIENoZWNrcyB3aGV0aGVyIGEgSmFsYWFsaSBkYXRlIGlzIHZhbGlkIG9yIG5vdC5cbiAgKi9cbiAgaXNWYWxpZEphbGFhbGlEYXRlKGp5LCBqbSwgamQpIHtcbiAgICByZXR1cm4gankgPj0gLTYxICYmIGp5IDw9IDMxNzcgJiYgam0gPj0gMSAmJiBqbSA8PSAxMiAmJiBqZCA+PSAxICYmIGpkIDw9IHRoaXMuamFsYWFsaU1vbnRoTGVuZ3RoKGp5LCBqbSk7XG4gIH1cblxuICAvKlxuICAgIElzIHRoaXMgYSBsZWFwIHllYXIgb3Igbm90P1xuICAqL1xuICBpc0xlYXBKYWxhYWxpWWVhcihqeSkge1xuICAgIHJldHVybiB0aGlzLmphbENhbExlYXAoankpID09PSAwO1xuICB9XG5cbiAgLypcbiAgICBOdW1iZXIgb2YgZGF5cyBpbiBhIGdpdmVuIG1vbnRoIGluIGEgSmFsYWFsaSB5ZWFyLlxuICAqL1xuICBqYWxhYWxpTW9udGhMZW5ndGgoanksIGptKSB7XG4gICAgaWYgKGptIDw9IDYpIHJldHVybiAzMTtcbiAgICBpZiAoam0gPD0gMTEpIHJldHVybiAzMDtcbiAgICBpZiAodGhpcy5pc0xlYXBKYWxhYWxpWWVhcihqeSkpIHJldHVybiAzMDtcbiAgICByZXR1cm4gMjk7XG4gIH1cblxuICAvKlxuICAgICAgVGhpcyBkZXRlcm1pbmVzIGlmIHRoZSBKYWxhYWxpIChQZXJzaWFuKSB5ZWFyIGlzXG4gICAgICBsZWFwICgzNjYtZGF5IGxvbmcpIG9yIGlzIHRoZSBjb21tb24geWVhciAoMzY1IGRheXMpXG4gIFxuICAgICAgQHBhcmFtIGp5IEphbGFhbGkgY2FsZW5kYXIgeWVhciAoLTYxIHRvIDMxNzcpXG4gICAgICBAcmV0dXJucyBudW1iZXIgb2YgeWVhcnMgc2luY2UgdGhlIGxhc3QgbGVhcCB5ZWFyICgwIHRvIDQpXG4gICAqL1xuICBwcml2YXRlIGphbENhbExlYXAoank6IG51bWJlcikge1xuICAgIGxldCBibCA9IHRoaXMuYnJlYWtzLmxlbmd0aCxcbiAgICAgIGpwID0gdGhpcy5icmVha3NbMF0sXG4gICAgICBqbSxcbiAgICAgIGp1bXAsXG4gICAgICBsZWFwLFxuICAgICAgbixcbiAgICAgIGk7XG5cbiAgICBpZiAoankgPCBqcCB8fCBqeSA+PSB0aGlzLmJyZWFrc1tibCAtIDFdKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSmFsYWFsaSB5ZWFyICcgKyBqeSk7XG5cbiAgICBmb3IgKGkgPSAxOyBpIDwgYmw7IGkgKz0gMSkge1xuICAgICAgam0gPSB0aGlzLmJyZWFrc1tpXTtcbiAgICAgIGp1bXAgPSBqbSAtIGpwO1xuICAgICAgaWYgKGp5IDwgam0pIGJyZWFrO1xuICAgICAganAgPSBqbTtcbiAgICB9XG4gICAgbiA9IGp5IC0ganA7XG5cbiAgICBpZiAoanVtcCAtIG4gPCA2KSBuID0gbiAtIGp1bXAgKyB0aGlzLmRpdihqdW1wICsgNCwgMzMpICogMzM7XG4gICAgbGVhcCA9IHRoaXMubW9kKHRoaXMubW9kKG4gKyAxLCAzMykgLSAxLCA0KTtcbiAgICBpZiAobGVhcCA9PT0gLTEpIHtcbiAgICAgIGxlYXAgPSA0O1xuICAgIH1cblxuICAgIHJldHVybiBsZWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBqYWxDYWwoank6IG51bWJlciwgd2l0aG91dExlYXA6IGJvb2xlYW4pIHtcbiAgICBsZXQgYmwgPSB0aGlzLmJyZWFrcy5sZW5ndGgsXG4gICAgICBneSA9IGp5ICsgNjIxLFxuICAgICAgbGVhcEogPSAtMTQsXG4gICAgICBqcCA9IHRoaXMuYnJlYWtzWzBdLFxuICAgICAgam0sXG4gICAgICBqdW1wLFxuICAgICAgbGVhcCxcbiAgICAgIGxlYXBHLFxuICAgICAgbWFyY2gsXG4gICAgICBuLFxuICAgICAgaTtcblxuICAgIGlmIChqeSA8IGpwIHx8IGp5ID49IHRoaXMuYnJlYWtzW2JsIC0gMV0pIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKYWxhYWxpIHllYXIgJyArIGp5KTtcblxuICAgIC8vIEZpbmQgdGhlIGxpbWl0aW5nIHllYXJzIGZvciB0aGUgSmFsYWFsaSB5ZWFyIGp5LlxuICAgIGZvciAoaSA9IDE7IGkgPCBibDsgaSArPSAxKSB7XG4gICAgICBqbSA9IHRoaXMuYnJlYWtzW2ldO1xuICAgICAganVtcCA9IGptIC0ganA7XG4gICAgICBpZiAoankgPCBqbSkgYnJlYWs7XG4gICAgICBsZWFwSiA9IGxlYXBKICsgdGhpcy5kaXYoanVtcCwgMzMpICogOCArIHRoaXMuZGl2KHRoaXMubW9kKGp1bXAsIDMzKSwgNCk7XG4gICAgICBqcCA9IGptO1xuICAgIH1cbiAgICBuID0gankgLSBqcDtcblxuICAgIC8vIEZpbmQgdGhlIG51bWJlciBvZiBsZWFwIHllYXJzIGZyb20gQUQgNjIxIHRvIHRoZSBiZWdpbm5pbmdcbiAgICAvLyBvZiB0aGUgY3VycmVudCBKYWxhYWxpIHllYXIgaW4gdGhlIFBlcnNpYW4gY2FsZW5kYXIuXG4gICAgbGVhcEogPSBsZWFwSiArIHRoaXMuZGl2KG4sIDMzKSAqIDggKyB0aGlzLmRpdih0aGlzLm1vZChuLCAzMykgKyAzLCA0KTtcbiAgICBpZiAodGhpcy5tb2QoanVtcCwgMzMpID09PSA0ICYmIGp1bXAgLSBuID09PSA0KSBsZWFwSiArPSAxO1xuXG4gICAgLy8gQW5kIHRoZSBzYW1lIGluIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgKHVudGlsIHRoZSB5ZWFyIGd5KS5cbiAgICBsZWFwRyA9IHRoaXMuZGl2KGd5LCA0KSAtIHRoaXMuZGl2KCh0aGlzLmRpdihneSwgMTAwKSArIDEpICogMywgNCkgLSAxNTA7XG5cbiAgICAvLyBEZXRlcm1pbmUgdGhlIEdyZWdvcmlhbiBkYXRlIG9mIEZhcnZhcmRpbiB0aGUgMXN0LlxuICAgIG1hcmNoID0gMjAgKyBsZWFwSiAtIGxlYXBHO1xuXG4gICAgLy8gcmV0dXJuIHdpdGggZ3kgYW5kIG1hcmNoIHdoZW4gd2UgZG9uJ3QgbmVlZCBsZWFwXG4gICAgaWYgKHdpdGhvdXRMZWFwKSByZXR1cm4geyBneTogZ3ksIG1hcmNoOiBtYXJjaCB9O1xuXG4gICAgLy8gRmluZCBob3cgbWFueSB5ZWFycyBoYXZlIHBhc3NlZCBzaW5jZSB0aGUgbGFzdCBsZWFwIHllYXIuXG4gICAgaWYgKGp1bXAgLSBuIDwgNikgbiA9IG4gLSBqdW1wICsgdGhpcy5kaXYoanVtcCArIDQsIDMzKSAqIDMzO1xuICAgIGxlYXAgPSB0aGlzLm1vZCh0aGlzLm1vZChuICsgMSwgMzMpIC0gMSwgNCk7XG4gICAgaWYgKGxlYXAgPT09IC0xKSB7XG4gICAgICBsZWFwID0gNDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGVhcDogbGVhcCxcbiAgICAgIGd5OiBneSxcbiAgICAgIG1hcmNoOiBtYXJjaCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBqMmQoanksIGptLCBqZCk6IG51bWJlciB7XG4gICAgbGV0IHIgPSB0aGlzLmphbENhbChqeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXMuZzJkKHIuZ3ksIDMsIHIubWFyY2gpICsgKGptIC0gMSkgKiAzMSAtIHRoaXMuZGl2KGptLCA3KSAqIChqbSAtIDcpICsgamQgLSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBkMmooamRuOiBudW1iZXIpIHtcbiAgICBsZXQgZ3kgPSB0aGlzLmQyZyhqZG4pLmd5LCAvLyBDYWxjdWxhdGUgR3JlZ29yaWFuIHllYXIgKGd5KS5cbiAgICAgIGp5ID0gZ3kgLSA2MjEsXG4gICAgICByID0gdGhpcy5qYWxDYWwoanksIGZhbHNlKSxcbiAgICAgIGpkbjFmID0gdGhpcy5nMmQoZ3ksIDMsIHIubWFyY2gpLFxuICAgICAgamQsXG4gICAgICBqbSxcbiAgICAgIGs7XG5cbiAgICAvLyBGaW5kIG51bWJlciBvZiBkYXlzIHRoYXQgcGFzc2VkIHNpbmNlIDEgRmFydmFyZGluLlxuICAgIGsgPSBqZG4gLSBqZG4xZjtcbiAgICBpZiAoayA+PSAwKSB7XG4gICAgICBpZiAoayA8PSAxODUpIHtcbiAgICAgICAgLy8gVGhlIGZpcnN0IDYgbW9udGhzLlxuICAgICAgICBqbSA9IDEgKyB0aGlzLmRpdihrLCAzMSk7XG4gICAgICAgIGpkID0gdGhpcy5tb2QoaywgMzEpICsgMTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBqeToganksXG4gICAgICAgICAgam06IGptLFxuICAgICAgICAgIGpkOiBqZCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRoZSByZW1haW5pbmcgbW9udGhzLlxuICAgICAgICBrIC09IDE4NjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUHJldmlvdXMgSmFsYWFsaSB5ZWFyLlxuICAgICAgankgLT0gMTtcbiAgICAgIGsgKz0gMTc5O1xuICAgICAgaWYgKHIubGVhcCA9PT0gMSkgayArPSAxO1xuICAgIH1cbiAgICBqbSA9IDcgKyB0aGlzLmRpdihrLCAzMCk7XG4gICAgamQgPSB0aGlzLm1vZChrLCAzMCkgKyAxO1xuICAgIHJldHVybiB7XG4gICAgICBqeToganksXG4gICAgICBqbTogam0sXG4gICAgICBqZDogamQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZzJkKGd5OiBudW1iZXIsIGdtOiBudW1iZXIsIGdkOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkID0gdGhpcy5kaXYoKGd5ICsgdGhpcy5kaXYoZ20gLSA4LCA2KSArIDEwMDEwMCkgKiAxNDYxLCA0KSArIHRoaXMuZGl2KDE1MyAqIHRoaXMubW9kKGdtICsgOSwgMTIpICsgMiwgNSkgKyBnZCAtIDM0ODQwNDA4O1xuICAgIGQgPSBkIC0gdGhpcy5kaXYodGhpcy5kaXYoZ3kgKyAxMDAxMDAgKyB0aGlzLmRpdihnbSAtIDgsIDYpLCAxMDApICogMywgNCkgKyA3NTI7XG4gICAgcmV0dXJuIGQ7XG4gIH1cblxuICBwcml2YXRlIGQyZyhqZG46IG51bWJlcikge1xuICAgIGxldCBqLCBpLCBnZCwgZ20sIGd5O1xuICAgIGogPSA0ICogamRuICsgMTM5MzYxNjMxO1xuICAgIGogPSBqICsgdGhpcy5kaXYodGhpcy5kaXYoNCAqIGpkbiArIDE4MzE4NzcyMCwgMTQ2MDk3KSAqIDMsIDQpICogNCAtIDM5MDg7XG4gICAgaSA9IHRoaXMuZGl2KHRoaXMubW9kKGosIDE0NjEpLCA0KSAqIDUgKyAzMDg7XG4gICAgZ2QgPSB0aGlzLmRpdih0aGlzLm1vZChpLCAxNTMpLCA1KSArIDE7XG4gICAgZ20gPSB0aGlzLm1vZCh0aGlzLmRpdihpLCAxNTMpLCAxMikgKyAxO1xuICAgIGd5ID0gdGhpcy5kaXYoaiwgMTQ2MSkgLSAxMDAxMDAgKyB0aGlzLmRpdig4IC0gZ20sIDYpO1xuICAgIHJldHVybiB7XG4gICAgICBneTogZ3ksXG4gICAgICBnbTogZ20sXG4gICAgICBnZDogZ2QsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgamFsYWFsaVdlZWsoank6IG51bWJlciwgam06IG51bWJlciwgamQ6IG51bWJlcik6IHsgc2F0dXJkYXk6IGFueTsgZnJpZGF5OiBhbnkgfSB7XG4gICAgbGV0IGRheU9mV2VlayA9IHRoaXMuamFsYWFsaVRvRGF0ZU9iamVjdChqeSwgam0sIGpkLCAwLCAwLCAwLCAwKS5nZXREYXkoKTtcblxuICAgIGxldCBzdGFydERheURpZmZlcmVuY2UgPSBkYXlPZldlZWsgPT0gNiA/IDAgOiAtKGRheU9mV2VlayArIDEpO1xuICAgIGxldCBlbmREYXlEaWZmZXJlbmNlID0gNiArIHN0YXJ0RGF5RGlmZmVyZW5jZTtcblxuICAgIHJldHVybiB7XG4gICAgICBzYXR1cmRheTogdGhpcy5kMmoodGhpcy5qMmQoanksIGptLCBqZCArIHN0YXJ0RGF5RGlmZmVyZW5jZSkpLFxuICAgICAgZnJpZGF5OiB0aGlzLmQyaih0aGlzLmoyZChqeSwgam0sIGpkICsgZW5kRGF5RGlmZmVyZW5jZSkpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGphbGFhbGlUb0RhdGVPYmplY3Qoank6IG51bWJlciwgam06IG51bWJlciwgamQ6IG51bWJlciwgaDogbnVtYmVyID0gMCwgbTogbnVtYmVyID0gMCwgczogbnVtYmVyID0gMCwgbXM6IG51bWJlciA9IDApIHtcbiAgICBsZXQgZ3JlZ29yaWFuQ2FsZW5kZXJEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqeSwgam0sIGpkKTtcblxuICAgIHJldHVybiBuZXcgRGF0ZShcbiAgICAgIGdyZWdvcmlhbkNhbGVuZGVyRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgZ3JlZ29yaWFuQ2FsZW5kZXJEYXRlLmdldE1vbnRoKCkgLSAxLFxuICAgICAgZ3JlZ29yaWFuQ2FsZW5kZXJEYXRlLmdldERhdGUoKSxcbiAgICAgIGggfHwgMCxcbiAgICAgIG0gfHwgMCxcbiAgICAgIHMgfHwgMCxcbiAgICAgIG1zIHx8IDAsXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAgVXRpbGl0eSBoZWxwZXIgZnVuY3Rpb25zLlxuICAqL1xuXG4gIHByaXZhdGUgZGl2KGE6IG51bWJlciwgYjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIH5+KGEgLyBiKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9kKGE6IG51bWJlciwgYjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGEgLSB+fihhIC8gYikgKiBiO1xuICB9XG59XG4iXX0=
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Generated bundle index. Do not edit.
|
3
|
-
*/
|
4
|
-
export * from './index';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2V2ZW50cy9zcmMvYWNvcmV4LWNvcmUtZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
package/esm2022/events/index.mjs
DELETED
@@ -1,3 +0,0 @@
|
|
1
|
-
export * from './lib/event.service';
|
2
|
-
export * from './lib/event.type';
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZXZlbnRzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9ldmVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2V2ZW50LnR5cGUnO1xuIl19
|
@@ -1,43 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import { Subject } from 'rxjs';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class AXEventService {
|
5
|
-
constructor() {
|
6
|
-
this.eventSubject = new Subject();
|
7
|
-
// Observable property
|
8
|
-
this.onEvent = this.eventSubject.asObservable();
|
9
|
-
this.list = [];
|
10
|
-
}
|
11
|
-
emitEvent(event) {
|
12
|
-
this.eventSubject.next(event);
|
13
|
-
}
|
14
|
-
broadcast(key, options) {
|
15
|
-
const d = this.list.find((c) => c.key === key);
|
16
|
-
if (d) {
|
17
|
-
d.events.forEach((c) => {
|
18
|
-
c(options);
|
19
|
-
});
|
20
|
-
}
|
21
|
-
}
|
22
|
-
on(key, callback) {
|
23
|
-
let d = this.list.find((c) => c.key === key);
|
24
|
-
if (!d) {
|
25
|
-
d = { key, events: [] };
|
26
|
-
this.list.push(d);
|
27
|
-
}
|
28
|
-
d.events.push(callback);
|
29
|
-
}
|
30
|
-
destroy(key, callback) {
|
31
|
-
const d = this.list.find((c) => c.key === key);
|
32
|
-
if (d) {
|
33
|
-
d.events = [];
|
34
|
-
}
|
35
|
-
}
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
37
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXEventService, providedIn: 'root' }); }
|
38
|
-
}
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXEventService, decorators: [{
|
40
|
-
type: Injectable,
|
41
|
-
args: [{ providedIn: 'root' }]
|
42
|
-
}] });
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9ldmVudHMvc3JjL2xpYi9ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFRM0MsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFVSxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDbEQsc0JBQXNCO1FBQ2YsWUFBTyxHQUE0QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBTW5FLFNBQUksR0FBVSxFQUFFLENBQUM7S0EwQjFCO0lBOUJDLFNBQVMsQ0FBQyxLQUFrQjtRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBSU0sU0FBUyxDQUFDLEdBQVcsRUFBRSxPQUFhO1FBQ3pDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDTixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUMxQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDYixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU0sRUFBRSxDQUFDLEdBQVcsRUFBRSxRQUFpQztRQUN0RCxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQVcsRUFBRSxRQUFpQztRQUMzRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ04sQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7OEdBbENVLGNBQWM7a0hBQWQsY0FBYyxjQURELE1BQU07OzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWEV2ZW50RGF0YSB7XG4gIHR5cGU6IHN0cmluZztcbiAgcGF5bG9hZD86IGFueTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWEV2ZW50U2VydmljZSB7XG4gIHByaXZhdGUgZXZlbnRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8QVhFdmVudERhdGE+KCk7XG4gIC8vIE9ic2VydmFibGUgcHJvcGVydHlcbiAgcHVibGljIG9uRXZlbnQ6IE9ic2VydmFibGU8QVhFdmVudERhdGE+ID0gdGhpcy5ldmVudFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZW1pdEV2ZW50KGV2ZW50OiBBWEV2ZW50RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnRTdWJqZWN0Lm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0OiBhbnlbXSA9IFtdO1xuXG4gIHB1YmxpYyBicm9hZGNhc3Qoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBkID0gdGhpcy5saXN0LmZpbmQoKGMpID0+IGMua2V5ID09PSBrZXkpO1xuICAgIGlmIChkKSB7XG4gICAgICBkLmV2ZW50cy5mb3JFYWNoKChjOiBhbnkpID0+IHtcbiAgICAgICAgYyhvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbihrZXk6IHN0cmluZywgY2FsbGJhY2s6IChvcHRpb25zPzogYW55KSA9PiB2b2lkKSB7XG4gICAgbGV0IGQgPSB0aGlzLmxpc3QuZmluZCgoYykgPT4gYy5rZXkgPT09IGtleSk7XG4gICAgaWYgKCFkKSB7XG4gICAgICBkID0geyBrZXksIGV2ZW50czogW10gfTtcbiAgICAgIHRoaXMubGlzdC5wdXNoKGQpO1xuICAgIH1cbiAgICBkLmV2ZW50cy5wdXNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KGtleTogc3RyaW5nLCBjYWxsYmFjazogKG9wdGlvbnM/OiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBkID0gdGhpcy5saXN0LmZpbmQoKGMpID0+IGMua2V5ID09PSBrZXkpO1xuICAgIGlmIChkKSB7XG4gICAgICBkLmV2ZW50cyA9IFtdO1xuICAgIH1cbiAgfVxufVxuIl19
|
@@ -1,6 +0,0 @@
|
|
1
|
-
export const AXEventTypes = {
|
2
|
-
AXLanguageChanged: 'AX_LANGUAGE_CHANGED',
|
3
|
-
AXLanguageLoaded: 'AX_LANGUAGE_LOADED',
|
4
|
-
AXCalendarChanged: 'AX_CALENDAR_CHANGED',
|
5
|
-
};
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9ldmVudHMvc3JjL2xpYi9ldmVudC50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixpQkFBaUIsRUFBRSxxQkFBcUI7SUFDeEMsZ0JBQWdCLEVBQUUsb0JBQW9CO0lBQ3RDLGlCQUFpQixFQUFFLHFCQUFxQjtDQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFYRXZlbnRUeXBlcyA9IHtcbiAgQVhMYW5ndWFnZUNoYW5nZWQ6ICdBWF9MQU5HVUFHRV9DSEFOR0VEJyxcbiAgQVhMYW5ndWFnZUxvYWRlZDogJ0FYX0xBTkdVQUdFX0xPQURFRCcsXG4gIEFYQ2FsZW5kYXJDaGFuZ2VkOiAnQVhfQ0FMRU5EQVJfQ0hBTkdFRCcsXG59O1xuIl19
|
@@ -1,5 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Generated bundle index. Do not edit.
|
3
|
-
*/
|
4
|
-
export * from './index';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9maWxlL3NyYy9hY29yZXgtY29yZS1maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
package/esm2022/file/index.mjs
DELETED
@@ -1,4 +0,0 @@
|
|
1
|
-
export * from './lib/file-size-formatter';
|
2
|
-
export * from './lib/file.module';
|
3
|
-
export * from './lib/file.service';
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZmlsZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9maWxlLXNpemUtZm9ybWF0dGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGUuc2VydmljZSc7XG4iXX0=
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export class AXFileSizeFormatter {
|
4
|
-
get name() {
|
5
|
-
return 'filesize';
|
6
|
-
}
|
7
|
-
format(value) {
|
8
|
-
const size = Number(value);
|
9
|
-
if (size === 0)
|
10
|
-
return '0 Bytes';
|
11
|
-
if (Number.isNaN(size))
|
12
|
-
return 'Unknown';
|
13
|
-
const k = 1024;
|
14
|
-
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
15
|
-
const i = Math.floor(Math.log(size) / Math.log(k));
|
16
|
-
return parseFloat((size / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
17
|
-
}
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXFileSizeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
19
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXFileSizeFormatter }); }
|
20
|
-
}
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXFileSizeFormatter, decorators: [{
|
22
|
-
type: Injectable
|
23
|
-
}] });
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zaXplLWZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9maWxlL3NyYy9saWIvZmlsZS1zaXplLWZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWEzQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLElBQUksSUFBSTtRQUNOLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsSUFBSSxJQUFJLEtBQUssQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ2pDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUV6QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDZixNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuRCxPQUFPLFVBQVUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQzs4R0FoQlUsbUJBQW1CO2tIQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEZvcm1hdE9wdGlvbnMsIEFYRm9ybWF0dGVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlU2l6ZUZvcm1hdHRlck9wdGlvbnMgZXh0ZW5kcyBBWEZvcm1hdE9wdGlvbnMge1xuICBmb3JtYXQ6IHN0cmluZztcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvY29yZS9mb3JtYXQnIHtcbiAgaW50ZXJmYWNlIEFYRm9ybWF0T3B0aW9uc01hcCB7XG4gICAgZmlsZXNpemU6IEFYRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25zO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEZpbGVTaXplRm9ybWF0dGVyIGltcGxlbWVudHMgQVhGb3JtYXR0ZXIge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZmlsZXNpemUnO1xuICB9XG5cbiAgZm9ybWF0KHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNpemUgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgaWYgKHNpemUgPT09IDApIHJldHVybiAnMCBCeXRlcyc7XG4gICAgaWYgKE51bWJlci5pc05hTihzaXplKSkgcmV0dXJuICdVbmtub3duJztcblxuICAgIGNvbnN0IGsgPSAxMDI0O1xuICAgIGNvbnN0IHNpemVzID0gWydCeXRlcycsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKHNpemUpIC8gTWF0aC5sb2coaykpO1xuXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKHNpemUgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgyKSkgKyAnICcgKyBzaXplc1tpXTtcbiAgfVxufVxuIl19
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { AXFormatModule } from '@acorex/core/format';
|
2
|
-
import { NgModule } from '@angular/core';
|
3
|
-
import { AXFileSizeFormatter } from './file-size-formatter';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "@acorex/core/format";
|
6
|
-
export class AXFileModule {
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXFileModule, imports: [i1.AXFormatModule] }); }
|
9
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXFileModule, providers: [AXFileSizeFormatter], imports: [AXFormatModule.forChild({ formatters: [AXFileSizeFormatter] })] }); }
|
10
|
-
}
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXFileModule, decorators: [{
|
12
|
-
type: NgModule,
|
13
|
-
args: [{
|
14
|
-
imports: [AXFormatModule.forChild({ formatters: [AXFileSizeFormatter] })],
|
15
|
-
exports: [],
|
16
|
-
declarations: [],
|
17
|
-
providers: [AXFileSizeFormatter],
|
18
|
-
}]
|
19
|
-
}] });
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvZmlsZS9zcmMvbGliL2ZpbGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFRNUQsTUFBTSxPQUFPLFlBQVk7OEdBQVosWUFBWTsrR0FBWixZQUFZOytHQUFaLFlBQVksYUFGWixDQUFDLG1CQUFtQixDQUFDLFlBSHRCLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7OzJGQUs3RCxZQUFZO2tCQU54QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDekUsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLFNBQVMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGaWxlU2l6ZUZvcm1hdHRlciB9IGZyb20gJy4vZmlsZS1zaXplLWZvcm1hdHRlcic7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtBWEZvcm1hdE1vZHVsZS5mb3JDaGlsZCh7IGZvcm1hdHRlcnM6IFtBWEZpbGVTaXplRm9ybWF0dGVyXSB9KV0sXG4gIGV4cG9ydHM6IFtdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBwcm92aWRlcnM6IFtBWEZpbGVTaXplRm9ybWF0dGVyXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhGaWxlTW9kdWxlIHt9XG4iXX0=
|