@acorex/core 7.0.20 → 7.0.21

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.
Files changed (205) hide show
  1. package/config/index.d.ts +5 -0
  2. package/config/public-api.d.ts +1 -0
  3. package/config/src/configs.d.ts +9 -0
  4. package/dateTime/index.d.ts +5 -0
  5. package/dateTime/{public-api.ts → public-api.d.ts} +1 -1
  6. package/dateTime/src/datetime.class.d.ts +100 -0
  7. package/dateTime/src/datetime.module.d.ts +8 -0
  8. package/dateTime/src/datetime.pipe.d.ts +8 -0
  9. package/dateTime/src/georgian.calendar.d.ts +20 -0
  10. package/dateTime/src/jalali.calendar.d.ts +35 -0
  11. package/esm2020/acorex-core.mjs +5 -0
  12. package/esm2020/config/acorex-core-config.mjs +5 -0
  13. package/esm2020/config/public-api.mjs +2 -0
  14. package/esm2020/config/src/configs.mjs +32 -0
  15. package/esm2020/dateTime/acorex-core-dateTime.mjs +5 -0
  16. package/esm2020/dateTime/public-api.mjs +6 -0
  17. package/esm2020/dateTime/src/datetime.class.mjs +288 -0
  18. package/esm2020/dateTime/src/datetime.module.mjs +39 -0
  19. package/esm2020/dateTime/src/datetime.pipe.mjs +26 -0
  20. package/esm2020/dateTime/src/georgian.calendar.mjs +189 -0
  21. package/esm2020/dateTime/src/jalali.calendar.mjs +359 -0
  22. package/esm2020/events/acorex-core-events.mjs +5 -0
  23. package/esm2020/events/public-api.mjs +2 -0
  24. package/esm2020/events/src/event.service.mjs +36 -0
  25. package/esm2020/file/acorex-core-file.mjs +5 -0
  26. package/esm2020/file/public-api.mjs +5 -0
  27. package/esm2020/file/src/file-download-ref.class.mjs +12 -0
  28. package/esm2020/file/src/file-download-result.class.mjs +47 -0
  29. package/esm2020/file/src/file-upload-ref.class.mjs +12 -0
  30. package/esm2020/file/src/file.service.mjs +101 -0
  31. package/esm2020/http/acorex-core-http.mjs +5 -0
  32. package/esm2020/http/public-api.mjs +6 -0
  33. package/esm2020/http/src/http-error.class.mjs +2 -0
  34. package/esm2020/http/src/http-events.interceptor.mjs +3 -0
  35. package/esm2020/http/src/http-request.class.mjs +2 -0
  36. package/esm2020/http/src/http-result.class.mjs +21 -0
  37. package/esm2020/http/src/http.module.mjs +29 -0
  38. package/esm2020/http/src/http.service.mjs +148 -0
  39. package/esm2020/image/acorex-core-image.mjs +5 -0
  40. package/esm2020/image/public-api.mjs +2 -0
  41. package/esm2020/image/src/image.service.mjs +43 -0
  42. package/esm2020/pipes/acorex-core-pipes.mjs +5 -0
  43. package/esm2020/pipes/public-api.mjs +3 -0
  44. package/esm2020/pipes/src/pipes.module.mjs +19 -0
  45. package/esm2020/pipes/src/safe.pipe.mjs +30 -0
  46. package/esm2020/platform/acorex-core-platform.mjs +5 -0
  47. package/esm2020/platform/public-api.mjs +2 -0
  48. package/esm2020/platform/src/platform.service.mjs +153 -0
  49. package/esm2020/public-api.mjs +5 -0
  50. package/esm2020/translation/acorex-core-translation.mjs +5 -0
  51. package/esm2020/translation/public-api.mjs +4 -0
  52. package/esm2020/translation/src/translation.module.mjs +18 -0
  53. package/esm2020/translation/src/translator.mjs +43 -0
  54. package/esm2020/translation/src/translator.pipe.mjs +15 -0
  55. package/esm2020/utils/acorex-core-utils.mjs +5 -0
  56. package/esm2020/utils/public-api.mjs +5 -0
  57. package/esm2020/utils/src/color-util.mjs +71 -0
  58. package/esm2020/utils/src/drawing-util.mjs +27 -0
  59. package/esm2020/utils/src/object-util.mjs +39 -0
  60. package/esm2020/utils/src/string-util.mjs +19 -0
  61. package/events/index.d.ts +5 -0
  62. package/events/public-api.d.ts +1 -0
  63. package/events/src/event.service.d.ts +9 -0
  64. package/fesm2015/acorex-core-config.mjs +40 -0
  65. package/fesm2015/acorex-core-config.mjs.map +1 -0
  66. package/fesm2015/acorex-core-dateTime.mjs +899 -0
  67. package/fesm2015/acorex-core-dateTime.mjs.map +1 -0
  68. package/fesm2015/acorex-core-events.mjs +44 -0
  69. package/fesm2015/acorex-core-events.mjs.map +1 -0
  70. package/fesm2015/acorex-core-file.mjs +177 -0
  71. package/fesm2015/acorex-core-file.mjs.map +1 -0
  72. package/fesm2015/acorex-core-http.mjs +203 -0
  73. package/fesm2015/acorex-core-http.mjs.map +1 -0
  74. package/fesm2015/acorex-core-image.mjs +54 -0
  75. package/fesm2015/acorex-core-image.mjs.map +1 -0
  76. package/fesm2015/acorex-core-pipes.mjs +54 -0
  77. package/fesm2015/acorex-core-pipes.mjs.map +1 -0
  78. package/fesm2015/acorex-core-platform.mjs +161 -0
  79. package/fesm2015/acorex-core-platform.mjs.map +1 -0
  80. package/fesm2015/acorex-core-translation.mjs +81 -0
  81. package/fesm2015/acorex-core-translation.mjs.map +1 -0
  82. package/fesm2015/acorex-core-utils.mjs +164 -0
  83. package/fesm2015/acorex-core-utils.mjs.map +1 -0
  84. package/fesm2015/acorex-core.mjs +12 -0
  85. package/fesm2015/acorex-core.mjs.map +1 -0
  86. package/fesm2020/acorex-core-config.mjs +40 -0
  87. package/fesm2020/acorex-core-config.mjs.map +1 -0
  88. package/fesm2020/acorex-core-dateTime.mjs +899 -0
  89. package/fesm2020/acorex-core-dateTime.mjs.map +1 -0
  90. package/fesm2020/acorex-core-events.mjs +44 -0
  91. package/fesm2020/acorex-core-events.mjs.map +1 -0
  92. package/fesm2020/acorex-core-file.mjs +177 -0
  93. package/fesm2020/acorex-core-file.mjs.map +1 -0
  94. package/fesm2020/acorex-core-http.mjs +202 -0
  95. package/fesm2020/acorex-core-http.mjs.map +1 -0
  96. package/fesm2020/acorex-core-image.mjs +51 -0
  97. package/fesm2020/acorex-core-image.mjs.map +1 -0
  98. package/fesm2020/acorex-core-pipes.mjs +54 -0
  99. package/fesm2020/acorex-core-pipes.mjs.map +1 -0
  100. package/fesm2020/acorex-core-platform.mjs +161 -0
  101. package/fesm2020/acorex-core-platform.mjs.map +1 -0
  102. package/fesm2020/acorex-core-translation.mjs +80 -0
  103. package/fesm2020/acorex-core-translation.mjs.map +1 -0
  104. package/fesm2020/acorex-core-utils.mjs +164 -0
  105. package/fesm2020/acorex-core-utils.mjs.map +1 -0
  106. package/fesm2020/acorex-core.mjs +12 -0
  107. package/fesm2020/acorex-core.mjs.map +1 -0
  108. package/file/index.d.ts +5 -0
  109. package/file/public-api.d.ts +4 -0
  110. package/file/src/file-download-ref.class.d.ts +6 -0
  111. package/file/src/file-download-result.class.d.ts +8 -0
  112. package/file/src/file-upload-ref.class.d.ts +5 -0
  113. package/file/src/file.service.d.ts +18 -0
  114. package/http/index.d.ts +5 -0
  115. package/http/{public-api.ts → public-api.d.ts} +1 -1
  116. package/http/src/{http-error.class.ts → http-error.class.d.ts} +2 -2
  117. package/http/src/{http-events.interceptor.ts → http-events.interceptor.d.ts} +3 -7
  118. package/http/src/{http-request.class.ts → http-request.class.d.ts} +5 -5
  119. package/http/src/http-result.class.d.ts +11 -0
  120. package/http/src/http.module.d.ts +8 -0
  121. package/http/src/http.service.d.ts +23 -0
  122. package/image/index.d.ts +5 -0
  123. package/image/public-api.d.ts +1 -0
  124. package/image/src/image.service.d.ts +12 -0
  125. package/index.d.ts +5 -0
  126. package/package.json +115 -16
  127. package/pipes/index.d.ts +5 -0
  128. package/pipes/public-api.d.ts +2 -0
  129. package/pipes/src/pipes.module.d.ts +8 -0
  130. package/pipes/src/safe.pipe.d.ts +10 -0
  131. package/platform/index.d.ts +5 -0
  132. package/platform/public-api.d.ts +1 -0
  133. package/platform/src/platform.service.d.ts +26 -0
  134. package/public-api.d.ts +1 -0
  135. package/translation/index.d.ts +5 -0
  136. package/translation/{public-api.ts → public-api.d.ts} +1 -1
  137. package/translation/src/translation.module.d.ts +7 -0
  138. package/translation/src/translator.d.ts +11 -0
  139. package/translation/src/translator.pipe.d.ts +7 -0
  140. package/utils/index.d.ts +5 -0
  141. package/utils/{public-api.ts → public-api.d.ts} +1 -1
  142. package/utils/src/color-util.d.ts +20 -0
  143. package/utils/src/drawing-util.d.ts +17 -0
  144. package/utils/src/object-util.d.ts +4 -0
  145. package/utils/src/string-util.d.ts +6 -0
  146. package/config/ax-preset.js +0 -186
  147. package/config/index.ts +0 -1
  148. package/config/ng-package.json +0 -6
  149. package/config/public-api.ts +0 -1
  150. package/config/src/configs.ts +0 -37
  151. package/dateTime/index.ts +0 -1
  152. package/dateTime/ng-package.json +0 -6
  153. package/dateTime/src/datetime.class.ts +0 -449
  154. package/dateTime/src/datetime.module.ts +0 -35
  155. package/dateTime/src/datetime.pipe.ts +0 -21
  156. package/dateTime/src/georgian.calendar.ts +0 -205
  157. package/dateTime/src/jalali.calendar.ts +0 -416
  158. package/events/index.ts +0 -1
  159. package/events/ng-package.json +0 -6
  160. package/events/public-api.ts +0 -1
  161. package/events/src/event.service.ts +0 -31
  162. package/file/index.ts +0 -1
  163. package/file/ng-package.json +0 -7
  164. package/file/public-api.ts +0 -4
  165. package/file/src/file-download-ref.class.ts +0 -16
  166. package/file/src/file-download-result.class.ts +0 -56
  167. package/file/src/file-upload-ref.class.ts +0 -14
  168. package/file/src/file.service.ts +0 -104
  169. package/http/index.ts +0 -1
  170. package/http/ng-package.json +0 -6
  171. package/http/src/http-result.class.ts +0 -34
  172. package/http/src/http.module.ts +0 -25
  173. package/http/src/http.service.ts +0 -161
  174. package/image/index.ts +0 -1
  175. package/image/ng-package.json +0 -7
  176. package/image/public-api.ts +0 -1
  177. package/image/src/image.service.ts +0 -42
  178. package/index.ts +0 -1
  179. package/karma.conf.js +0 -44
  180. package/ng-package.json +0 -7
  181. package/pipes/index.ts +0 -1
  182. package/pipes/ng-package.json +0 -6
  183. package/pipes/public-api.ts +0 -2
  184. package/pipes/src/pipes.module.ts +0 -11
  185. package/pipes/src/safe.pipe.ts +0 -24
  186. package/platform/index.ts +0 -1
  187. package/platform/ng-package.json +0 -6
  188. package/platform/public-api.ts +0 -1
  189. package/platform/src/platform.service.ts +0 -223
  190. package/public-api.ts +0 -4
  191. package/test.ts +0 -27
  192. package/translation/index.ts +0 -1
  193. package/translation/ng-package.json +0 -6
  194. package/translation/src/translation.module.ts +0 -12
  195. package/translation/src/translator.pipe.ts +0 -9
  196. package/translation/src/translator.ts +0 -49
  197. package/tsconfig.lib.json +0 -15
  198. package/tsconfig.lib.prod.json +0 -10
  199. package/tsconfig.spec.json +0 -17
  200. package/utils/index.ts +0 -1
  201. package/utils/ng-package.json +0 -6
  202. package/utils/src/color-util.ts +0 -83
  203. package/utils/src/drawing-util.ts +0 -43
  204. package/utils/src/object-util.ts +0 -82
  205. package/utils/src/string-util.ts +0 -25
@@ -0,0 +1,359 @@
1
+ import { AXDateTime } from "./datetime.class";
2
+ export class JalaliCalendar {
3
+ constructor() {
4
+ this.monthNames = ("فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند").split("_");
5
+ this.monthShortNames = ("فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند").split("_");
6
+ this.dayNames = ("شنبه_یکشنبه_دوشنبه_سه شنبه_چهارشنبه_پنج شنبه_جمعه").split("_");
7
+ this.dayShortNames = "ش_ی_د_س_چ_پ_ج".split("_");
8
+ }
9
+ create(value) {
10
+ const a = this.toGregorian(value.year, value.month, value.date);
11
+ return new AXDateTime(new Date(a.getFullYear(), a.getMonth(), a.getDate(), value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());
12
+ }
13
+ name() {
14
+ return 'jalali';
15
+ }
16
+ dayOfMonth(date) {
17
+ return this.toJalali(date).day;
18
+ }
19
+ dayOfYear(date) {
20
+ const j = this.toJalali(date);
21
+ return (j.month <= 6 ? ((j.month - 1) * 31) : ((6 * 31) + (j.month - 7) * 30)) + j.day;
22
+ }
23
+ dayOfWeek(date) {
24
+ return date.getDay() == 6 ? 1 : date.getDay() + 2;
25
+ }
26
+ weekOfYear(date) {
27
+ //TODO : apply jalali
28
+ const firstDay = new AXDateTime(date).startOf('year');
29
+ return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);
30
+ }
31
+ year(date) {
32
+ return this.toJalali(date).year;
33
+ }
34
+ monthOfYear(date) {
35
+ return this.toJalali(date).month;
36
+ }
37
+ add(date, unit, amount) {
38
+ let value = date.valueOf();
39
+ switch (unit) {
40
+ case 'second':
41
+ value += 1000 * amount;
42
+ break;
43
+ case 'minute':
44
+ value += 60000 * amount;
45
+ break;
46
+ case 'hour':
47
+ value += 3600000 * amount;
48
+ break;
49
+ case 'month':
50
+ {
51
+ const v = new Date(value);
52
+ let jd = this.dayOfMonth(date);
53
+ let jm = this.monthOfYear(date);
54
+ let jy = this.year(date);
55
+ const nm = (jm + amount);
56
+ const ny = (nm % 12) ? Math.floor(nm / 12) : 0;
57
+ jy += ny;
58
+ jm = nm - (ny * 12);
59
+ const vv = this.toGregorian(jy, jm, jd);
60
+ v.setFullYear(vv.getFullYear());
61
+ v.setMonth(vv.getMonth());
62
+ v.setDate(vv.getDate());
63
+ value = v.valueOf();
64
+ break;
65
+ }
66
+ case 'week':
67
+ value += 7 * 86400000 * amount;
68
+ break;
69
+ case 'year':
70
+ {
71
+ // const v = new Date(value);
72
+ // v.setFullYear(v.getFullYear() + amount);
73
+ // value = v.valueOf();
74
+ // break
75
+ const v = new Date(value);
76
+ let jd = this.dayOfMonth(date);
77
+ let jm = this.monthOfYear(date);
78
+ let jy = this.year(date);
79
+ const vv = this.toGregorian(jy + amount, jm, jd);
80
+ v.setFullYear(vv.getFullYear());
81
+ v.setMonth(vv.getMonth());
82
+ v.setDate(vv.getDate());
83
+ value = v.valueOf();
84
+ break;
85
+ }
86
+ case 'day':
87
+ default:
88
+ value += 86400000 * amount;
89
+ }
90
+ return new AXDateTime(new Date(value), this.name());
91
+ }
92
+ set(date, unit, value) {
93
+ const clone = new Date(date.valueOf());
94
+ const jDate = this.toJalali(clone);
95
+ switch (unit) {
96
+ case 'second':
97
+ clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());
98
+ break;
99
+ case 'minute':
100
+ clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());
101
+ break;
102
+ case 'hour':
103
+ clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());
104
+ break;
105
+ default:
106
+ case 'day':
107
+ const gDate = this.toGregorian(jDate.year, jDate.month, value);
108
+ clone.setDate(gDate.getDate());
109
+ break;
110
+ case "week":
111
+ break;
112
+ case "month":
113
+ const gDate2 = this.toGregorian(jDate.year, value, jDate.day);
114
+ clone.setMonth(gDate2.getMonth());
115
+ break;
116
+ case "year":
117
+ const gDate3 = this.toGregorian(value, jDate.month, jDate.day);
118
+ clone.setFullYear(gDate3.getFullYear());
119
+ break;
120
+ }
121
+ return new AXDateTime(clone, this.name());
122
+ }
123
+ startOf(date, unit) {
124
+ const clone = new Date(date.valueOf());
125
+ switch (unit) {
126
+ case 'second':
127
+ clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);
128
+ return new AXDateTime(clone, this.name());
129
+ case 'minute':
130
+ clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);
131
+ return new AXDateTime(clone, this.name());
132
+ case 'hour':
133
+ clone.setHours(clone.getHours(), 0, 0, 0);
134
+ return new AXDateTime(clone, this.name());
135
+ default:
136
+ case 'day':
137
+ clone.setHours(0, 0, 0, 0);
138
+ return new AXDateTime(clone, this.name());
139
+ case "week":
140
+ return new AXDateTime(clone, this.name()).add('day', -this.dayOfWeek(clone) + 1).startOf('day');
141
+ case "month":
142
+ {
143
+ const jy = this.year(date);
144
+ const jm = this.monthOfYear(date);
145
+ const gDate = this.toGregorian(jy, jm, 1);
146
+ return new AXDateTime(gDate, this.name()).startOf('day');
147
+ }
148
+ case "year":
149
+ {
150
+ const jy = this.year(date);
151
+ const gDate = this.toGregorian(jy, 1, 1);
152
+ return new AXDateTime(gDate, this.name()).startOf('day');
153
+ }
154
+ }
155
+ }
156
+ endOf(date, unit) {
157
+ const clone = new Date(date.valueOf());
158
+ switch (unit) {
159
+ case 'second':
160
+ clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);
161
+ return new AXDateTime(clone, this.name());
162
+ case 'minute':
163
+ clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);
164
+ return new AXDateTime(clone, this.name());
165
+ case 'hour':
166
+ clone.setHours(clone.getHours(), 59, 59, 999);
167
+ return new AXDateTime(clone, this.name());
168
+ default:
169
+ case 'day':
170
+ clone.setHours(23, 59, 59, 999);
171
+ return new AXDateTime(clone, this.name());
172
+ case 'week':
173
+ {
174
+ return this.startOf(date, 'week').add('day', 6).endOf('day');
175
+ }
176
+ case 'month':
177
+ {
178
+ const jy = this.year(date);
179
+ const jm = this.monthOfYear(date);
180
+ const jd = this.monthLength(jy, jm);
181
+ const gDate = this.toGregorian(jy, jm, jd);
182
+ return new AXDateTime(gDate, this.name()).endOf('day');
183
+ }
184
+ case "year":
185
+ let jy = this.year(date);
186
+ const gDate = this.toGregorian(jy, 12, this.monthLength(jy, 12));
187
+ return new AXDateTime(gDate, this.name()).endOf('day');
188
+ }
189
+ }
190
+ toJalali(date) {
191
+ const gy = date.getFullYear();
192
+ const gm = date.getMonth() + 1;
193
+ const gd = date.getDate();
194
+ const r = this.d2j(this.g2d(gy, gm, gd));
195
+ return {
196
+ year: r.jy,
197
+ month: r.jm,
198
+ day: r.jd,
199
+ };
200
+ }
201
+ /*
202
+ Converts a Jalaali date to Gregorian.
203
+ */
204
+ toGregorian(jy, jm, jd) {
205
+ const g = this.d2g(this.j2d(jy, jm, jd));
206
+ return new Date(g.gy, g.gm - 1, g.gd);
207
+ }
208
+ /*
209
+ Checks whether a Jalaali date is valid or not.
210
+ */
211
+ isValid(jy, jm, jd) {
212
+ return jy >= -61 && jy <= 3177 &&
213
+ jm >= 1 && jm <= 12 &&
214
+ jd >= 1 && jd <= this.monthLength(jy, jm);
215
+ }
216
+ /*
217
+ Is this a leap year or not?
218
+ */
219
+ isLeapYear(jy) {
220
+ return this.jalCal(jy).leap === 0;
221
+ }
222
+ /*
223
+ Number of days in a given month in a Jalaali year.
224
+ */
225
+ monthLength(jy, jm) {
226
+ if (jm <= 6)
227
+ return 31;
228
+ if (jm <= 11)
229
+ return 30;
230
+ if (this.isLeapYear(jy))
231
+ return 30;
232
+ return 29;
233
+ }
234
+ jalCal(jy) {
235
+ // Jalaali years starting the 33-year rule.
236
+ let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210,
237
+ 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178
238
+ ], bl = breaks.length, gy = jy + 621, leapJ = -14, jp = breaks[0], jm, jump, leap, leapG, march, n, i;
239
+ if (jy < jp || jy >= breaks[bl - 1])
240
+ throw new Error('Invalid Jalaali year ' + jy);
241
+ // Find the limiting years for the Jalaali year jy.
242
+ for (i = 1; i < bl; i += 1) {
243
+ jm = breaks[i];
244
+ jump = jm - jp;
245
+ if (jy < jm)
246
+ break;
247
+ leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4);
248
+ jp = jm;
249
+ }
250
+ n = jy - jp;
251
+ // Find the number of leap years from AD 621 to the beginning
252
+ // of the current Jalaali year in the Persian calendar.
253
+ leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4);
254
+ if (this.mod(jump, 33) === 4 && jump - n === 4)
255
+ leapJ += 1;
256
+ // And the same in the Gregorian calendar (until the year gy).
257
+ leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150;
258
+ // Determine the Gregorian date of Farvardin the 1st.
259
+ march = 20 + leapJ - leapG;
260
+ // Find how many years have passed since the last leap year.
261
+ if (jump - n < 6)
262
+ n = n - jump + this.div(jump + 4, 33) * 33;
263
+ leap = this.mod(this.mod(n + 1, 33) - 1, 4);
264
+ if (leap === -1) {
265
+ leap = 4;
266
+ }
267
+ return {
268
+ leap: leap,
269
+ gy: gy,
270
+ march: march
271
+ };
272
+ }
273
+ /*
274
+ Converts a date of the Jalaali calendar to the Julian Day number.
275
+ @param jy Jalaali year (1 to 3100)
276
+ @param jm Jalaali month (1 to 12)
277
+ @param jd Jalaali day (1 to 29/31)
278
+ @return Julian Day number
279
+ */
280
+ j2d(jy, jm, jd) {
281
+ let r = this.jalCal(jy);
282
+ return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1;
283
+ }
284
+ /*
285
+ Converts the Julian Day number to a date in the Jalaali calendar.
286
+ @param jdn Julian Day number
287
+ @return
288
+ jy: Jalaali year (1 to 3100)
289
+ jm: Jalaali month (1 to 12)
290
+ jd: Jalaali day (1 to 29/31)
291
+ */
292
+ d2j(jdn) {
293
+ let gy = this.d2g(jdn).gy // Calculate Gregorian year (gy).
294
+ , jy = gy - 621, r = this.jalCal(jy), jdn1f = this.g2d(gy, 3, r.march), jd, jm, k;
295
+ // Find number of days that passed since 1 Farvardin.
296
+ k = jdn - jdn1f;
297
+ if (k >= 0) {
298
+ if (k <= 185) {
299
+ // The first 6 months.
300
+ jm = 1 + this.div(k, 31);
301
+ jd = this.mod(k, 31) + 1;
302
+ return {
303
+ jy: jy,
304
+ jm: jm,
305
+ jd: jd
306
+ };
307
+ }
308
+ else {
309
+ // The remaining months.
310
+ k -= 186;
311
+ }
312
+ }
313
+ else {
314
+ // Previous Jalaali year.
315
+ jy -= 1;
316
+ k += 179;
317
+ if (r.leap === 1)
318
+ k += 1;
319
+ }
320
+ jm = 7 + this.div(k, 30);
321
+ jd = this.mod(k, 30) + 1;
322
+ return {
323
+ jy: jy,
324
+ jm: jm,
325
+ jd: jd
326
+ };
327
+ }
328
+ g2d(gy, gm, gd) {
329
+ let d = this.div((gy + this.div(gm - 8, 6) + 100100) * 1461, 4)
330
+ + this.div(153 * this.mod(gm + 9, 12) + 2, 5)
331
+ + gd - 34840408;
332
+ d = d - this.div(this.div(gy + 100100 + this.div(gm - 8, 6), 100) * 3, 4) + 752;
333
+ return d;
334
+ }
335
+ d2g(jdn) {
336
+ let j, i, gd, gm, gy;
337
+ j = 4 * jdn + 139361631;
338
+ j = j + this.div(this.div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908;
339
+ i = this.div(this.mod(j, 1461), 4) * 5 + 308;
340
+ gd = this.div(this.mod(i, 153), 5) + 1;
341
+ gm = this.mod(this.div(i, 153), 12) + 1;
342
+ gy = this.div(j, 1461) - 100100 + this.div(8 - gm, 6);
343
+ return {
344
+ gy: gy,
345
+ gm: gm,
346
+ gd: gd
347
+ };
348
+ }
349
+ /*
350
+ Utility helper functions.
351
+ */
352
+ div(a, b) {
353
+ return ~~(a / b);
354
+ }
355
+ mod(a, b) {
356
+ return a - ~~(a / b) * b;
357
+ }
358
+ }
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamFsYWxpLmNhbGVuZGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvZGF0ZVRpbWUvc3JjL2phbGFsaS5jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUF5QixNQUFNLGtCQUFrQixDQUFDO0FBRWpGLE1BQU0sT0FBTyxjQUFjO0lBQTNCO1FBRUksZUFBVSxHQUFHLENBQUMsb0VBQW9FLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFL0Ysb0JBQWUsR0FBRyxDQUFDLG9FQUFvRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBHLGFBQVEsR0FBRyxDQUFDLG1EQUFtRCxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVFLGtCQUFhLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQXFaL0MsQ0FBQztJQWxaRyxNQUFNLENBQUMsS0FBa0I7UUFDckIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0SyxDQUFDO0lB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LFVBQVUsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDOUMsS0FBSyxRQUFRO2dCQUNULEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNELE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLEtBQUssTUFBTTtnQkFDUCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM5QyxRQUFRO1lBQ1IsS0FBSyxLQUFLO2dCQUNOLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLEtBQUssTUFBTTtnQkFDUCxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEcsS0FBSyxPQUFPO2dCQUNSO29CQUNJLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzNCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDMUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM1RDtZQUNMLEtBQUssTUFBTTtnQkFDUDtvQkFDSSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3pDLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDNUQ7U0FDUjtJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBVSxFQUFFLElBQWM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkMsUUFBUSxJQUFJLEVBQUU7WUFDVixLQUFLLFFBQVE7Z0JBQ1QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDOUUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDOUMsS0FBSyxRQUFRO2dCQUNULEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzlELE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLEtBQUssTUFBTTtnQkFDUCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM5QyxRQUFRO1lBQ1IsS0FBSyxLQUFLO2dCQUNOLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ2hDLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLEtBQUssTUFBTTtnQkFDUDtvQkFDSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoRTtZQUNMLEtBQUssT0FBTztnQkFDUjtvQkFDSSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMzQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMzQyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzFEO1lBQ0wsS0FBSyxNQUFNO2dCQUNQLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqRSxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUQ7SUFDTCxDQUFDO0lBSUQsUUFBUSxDQUFDLElBQVU7UUFDZixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN4QyxPQUFPO1lBQ0gsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ1YsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ1gsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFO1NBQ1osQ0FBQTtJQUNMLENBQUM7SUFFRDs7TUFFRTtJQUNGLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDbEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN4QyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7TUFFRTtJQUNGLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSTtZQUMxQixFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ25CLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRDs7TUFFRTtJQUNGLFVBQVUsQ0FBQyxFQUFFO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVEOztNQUVFO0lBQ0YsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFBO1FBQ3RCLElBQUksRUFBRSxJQUFJLEVBQUU7WUFBRSxPQUFPLEVBQUUsQ0FBQTtRQUN2QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUE7UUFDbEMsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0lBR08sTUFBTSxDQUFDLEVBQUU7UUFDYiwyQ0FBMkM7UUFDM0MsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1lBQzdELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtTQUN6RCxFQUNLLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUNsQixFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFDYixLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQ1gsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDZCxFQUFFLEVBQ0YsSUFBSSxFQUNKLElBQUksRUFDSixLQUFLLEVBQ0wsS0FBSyxFQUNMLENBQUMsRUFDRCxDQUFDLENBQUE7UUFFUCxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFFakQsbURBQW1EO1FBQ25ELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNkLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFBO1lBQ2QsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDUCxNQUFLO1lBQ1QsS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUN4RSxFQUFFLEdBQUcsRUFBRSxDQUFBO1NBQ1Y7UUFDRCxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUVYLDZEQUE2RDtRQUM3RCx1REFBdUQ7UUFDdkQsS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDdEUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQzFDLEtBQUssSUFBSSxDQUFDLENBQUE7UUFFZCw4REFBOEQ7UUFDOUQsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBRXhFLHFEQUFxRDtRQUNyRCxLQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUE7UUFFMUIsNERBQTREO1FBQzVELElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ1osQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUM5QyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxHQUFHLENBQUMsQ0FBQTtTQUNYO1FBRUQsT0FBTztZQUNILElBQUksRUFBRSxJQUFJO1lBQ1IsRUFBRSxFQUFFLEVBQUU7WUFDTixLQUFLLEVBQUUsS0FBSztTQUNqQixDQUFBO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7TUFNRTtJQUNNLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDbEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN2QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzNGLENBQUM7SUFFRDs7Ozs7OztNQU9FO0lBQ00sR0FBRyxDQUFDLEdBQUc7UUFDWCxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxpQ0FBaUM7VUFDckQsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQ2IsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQ25CLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUNoQyxFQUFFLEVBQ0YsRUFBRSxFQUNGLENBQUMsQ0FBQTtRQUVQLHFEQUFxRDtRQUNyRCxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRTtnQkFDVixzQkFBc0I7Z0JBQ3RCLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7Z0JBQ3hCLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3hCLE9BQU87b0JBQ0gsRUFBRSxFQUFFLEVBQUU7b0JBQ0osRUFBRSxFQUFFLEVBQUU7b0JBQ04sRUFBRSxFQUFFLEVBQUU7aUJBQ1gsQ0FBQTthQUNKO2lCQUFNO2dCQUNILHdCQUF3QjtnQkFDeEIsQ0FBQyxJQUFJLEdBQUcsQ0FBQTthQUNYO1NBQ0o7YUFBTTtZQUNILHlCQUF5QjtZQUN6QixFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ1AsQ0FBQyxJQUFJLEdBQUcsQ0FBQTtZQUNSLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO2dCQUNaLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDYjtRQUNELEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDeEIsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN4QixPQUFPO1lBQ0gsRUFBRSxFQUFFLEVBQUU7WUFDSixFQUFFLEVBQUUsRUFBRTtZQUNOLEVBQUUsRUFBRSxFQUFFO1NBQ1gsQ0FBQTtJQUNMLENBQUM7SUFHTyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ2xCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7Y0FDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Y0FDM0MsRUFBRSxHQUFHLFFBQVEsQ0FBQTtRQUNuQixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO1FBQy9FLE9BQU8sQ0FBQyxDQUFBO0lBQ1osQ0FBQztJQUdPLEdBQUcsQ0FBQyxHQUFHO1FBQ1gsSUFBSSxDQUFDLEVBQ0MsQ0FBQyxFQUNELEVBQUUsRUFDRixFQUFFLEVBQ0YsRUFBRSxDQUFBO1FBQ1IsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFBO1FBQ3ZCLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBO1FBQ3pFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUE7UUFDNUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3RDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN2QyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNyRCxPQUFPO1lBQ0gsRUFBRSxFQUFFLEVBQUU7WUFDSixFQUFFLEVBQUUsRUFBRTtZQUNOLEVBQUUsRUFBRSxFQUFFO1NBQ1gsQ0FBQTtJQUNMLENBQUM7SUFFRDs7TUFFRTtJQUNNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFFTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzVCLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ2FsZW5kYXIsIEFYRGF0ZVRpbWUsIEFYRGF0ZVZhbHVlLCBUaW1lVW5pdCB9IGZyb20gXCIuL2RhdGV0aW1lLmNsYXNzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgSmFsYWxpQ2FsZW5kYXIgaW1wbGVtZW50cyBBWENhbGVuZGFyIHtcclxuXHJcbiAgICBtb250aE5hbWVzID0gKFwi2YHYsdmI2LHYr9uM2YZf2KfYsdiv24zYqNmH2LTYql/Yrtix2K/Yp9ivX9iq24zYsV/Zhdix2K/Yp9ivX9i02YfYsduM2YjYsV/ZhdmH2LFf2KLYqNin2YZf2KLYsNixX9iv24xf2KjZh9mF2YZf2KfYs9mB2YbYr1wiKS5zcGxpdChcIl9cIik7XHJcblxyXG4gICAgbW9udGhTaG9ydE5hbWVzID0gKFwi2YHYsdmI2LHYr9uM2YZf2KfYsdiv24zYqNmH2LTYql/Yrtix2K/Yp9ivX9iq24zYsV/Zhdix2K/Yp9ivX9i02YfYsduM2YjYsV/ZhdmH2LFf2KLYqNin2YZf2KLYsNixX9iv24xf2KjZh9mF2YZf2KfYs9mB2YbYr1wiKS5zcGxpdChcIl9cIik7XHJcblxyXG4gICAgZGF5TmFtZXMgPSAoXCLYtNmG2KjZh1/bjNqp2LTZhtio2Ydf2K/ZiNi02YbYqNmHX9iz2Ycg2LTZhtio2Ydf2obZh9in2LHYtNmG2KjZh1/ZvtmG2Kwg2LTZhtio2Ydf2KzZhdi52YdcIikuc3BsaXQoXCJfXCIpO1xyXG5cclxuICAgIGRheVNob3J0TmFtZXMgPSBcIti0X9uMX9ivX9izX9qGX9m+X9isXCIuc3BsaXQoXCJfXCIpO1xyXG5cclxuXHJcbiAgICBjcmVhdGUodmFsdWU6IEFYRGF0ZVZhbHVlKTogQVhEYXRlVGltZSB7XHJcbiAgICAgICAgY29uc3QgYSA9IHRoaXMudG9HcmVnb3JpYW4odmFsdWUueWVhciwgdmFsdWUubW9udGgsIHZhbHVlLmRhdGUpO1xyXG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZShhLmdldEZ1bGxZZWFyKCksIGEuZ2V0TW9udGgoKSwgYS5nZXREYXRlKCksIHZhbHVlLmhvdXJzIHx8IDAsIHZhbHVlLm1pbnV0ZXMgfHwgMCwgdmFsdWUuc2Vjb25kcyB8fCAwLCB2YWx1ZS5tcyB8fCAwKSwgdGhpcy5uYW1lKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5hbWUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gJ2phbGFsaSdcclxuICAgIH1cclxuXHJcbiAgICBkYXlPZk1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvSmFsYWxpKGRhdGUpLmRheTtcclxuICAgIH1cclxuXHJcbiAgICBkYXlPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICAgICAgY29uc3QgaiA9IHRoaXMudG9KYWxhbGkoZGF0ZSk7XHJcbiAgICAgICAgcmV0dXJuIChqLm1vbnRoIDw9IDYgPyAoKGoubW9udGggLSAxKSAqIDMxKSA6ICgoNiAqIDMxKSArIChqLm1vbnRoIC0gNykgKiAzMCkpICsgai5kYXk7XHJcbiAgICB9XHJcblxyXG4gICAgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBkYXRlLmdldERheSgpID09IDYgPyAxIDogZGF0ZS5nZXREYXkoKSArIDI7XHJcbiAgICB9XHJcblxyXG4gICAgd2Vla09mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgICAgICAvL1RPRE8gOiBhcHBseSBqYWxhbGlcclxuICAgICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBBWERhdGVUaW1lKGRhdGUpLnN0YXJ0T2YoJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKCgoKGRhdGUuZ2V0VGltZSgpIC0gZmlyc3REYXkuZGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDApICsgZmlyc3REYXkuZGF0ZS5nZXREYXkoKSArIDEpIC8gNyk7XHJcbiAgICB9XHJcblxyXG4gICAgeWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50b0phbGFsaShkYXRlKS55ZWFyO1xyXG4gICAgfVxyXG5cclxuICAgIG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvSmFsYWxpKGRhdGUpLm1vbnRoO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBhZGQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZSB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gZGF0ZS52YWx1ZU9mKCk7XHJcbiAgICAgICAgc3dpdGNoICh1bml0KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAxMDAwICogYW1vdW50O1xyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcclxuICAgICAgICAgICAgICAgIHZhbHVlICs9IDYwMDAwICogYW1vdW50O1xyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSAnaG91cic6XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAzNjAwMDAwICogYW1vdW50O1xyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGpkID0gdGhpcy5kYXlPZk1vbnRoKGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5tID0gKGptICsgYW1vdW50KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBueSA9IChubSAlIDEyKSA/IE1hdGguZmxvb3Iobm0gLyAxMikgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGp5ICs9IG55O1xyXG4gICAgICAgICAgICAgICAgICAgIGptID0gbm0gLSAobnkgKiAxMik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdnYgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgamQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHYuc2V0RnVsbFllYXIodnYuZ2V0RnVsbFllYXIoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5zZXRNb250aCh2di5nZXRNb250aCgpKTtcclxuICAgICAgICAgICAgICAgICAgICB2LnNldERhdGUodnYuZ2V0RGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHYudmFsdWVPZigpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxyXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gNyAqIDg2NDAwMDAwICogYW1vdW50O1xyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSAneWVhcic6XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgdiA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB2LnNldEZ1bGxZZWFyKHYuZ2V0RnVsbFllYXIoKSArIGFtb3VudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWUgPSB2LnZhbHVlT2YoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBicmVha1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGpkID0gdGhpcy5kYXlPZk1vbnRoKGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZ2ID0gdGhpcy50b0dyZWdvcmlhbihqeSArIGFtb3VudCwgam0sIGpkKTtcclxuICAgICAgICAgICAgICAgICAgICB2LnNldEZ1bGxZZWFyKHZ2LmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHYuc2V0TW9udGgodnYuZ2V0TW9udGgoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5zZXREYXRlKHZ2LmdldERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2LnZhbHVlT2YoKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gODY0MDAwMDAgKiBhbW91bnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSh2YWx1ZSksIHRoaXMubmFtZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lIHtcclxuICAgICAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcclxuICAgICAgICBjb25zdCBqRGF0ZSA9IHRoaXMudG9KYWxhbGkoY2xvbmUpO1xyXG4gICAgICAgIHN3aXRjaCAodW5pdCkge1xyXG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgY2xvbmUuZ2V0TWludXRlcygpLCB2YWx1ZSwgY2xvbmUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCB2YWx1ZSwgY2xvbmUuZ2V0U2Vjb25kcygpLCBjbG9uZS5nZXRNaWxsaXNlY29uZHMoKSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnaG91cic6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3Vycyh2YWx1ZSwgY2xvbmUuZ2V0TWludXRlcygpLCBjbG9uZS5nZXRTZWNvbmRzKCksIGNsb25lLmdldE1pbGxpc2Vjb25kcygpKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgICAgICAgICAgY29uc3QgZ0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGpEYXRlLnllYXIsIGpEYXRlLm1vbnRoLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXREYXRlKGdEYXRlLmdldERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIndlZWtcIjpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwibW9udGhcIjpcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdEYXRlMiA9IHRoaXMudG9HcmVnb3JpYW4oakRhdGUueWVhciwgdmFsdWUsIGpEYXRlLmRheSk7XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRNb250aChnRGF0ZTIuZ2V0TW9udGgoKSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcInllYXJcIjpcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdEYXRlMyA9IHRoaXMudG9HcmVnb3JpYW4odmFsdWUsIGpEYXRlLm1vbnRoLCBqRGF0ZS5kYXkpO1xyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0RnVsbFllYXIoZ0RhdGUzLmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcy5uYW1lKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0T2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lIHtcclxuICAgICAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcclxuICAgICAgICBzd2l0Y2ggKHVuaXQpIHtcclxuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgY2xvbmUuZ2V0U2Vjb25kcygpLCAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcy5uYW1lKCkpO1xyXG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgY2xvbmUuZ2V0TWludXRlcygpLCAwLCAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcy5uYW1lKCkpO1xyXG4gICAgICAgICAgICBjYXNlICdob3VyJzpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIDAsIDAsIDApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzLm5hbWUoKSk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcy5uYW1lKCkpO1xyXG4gICAgICAgICAgICBjYXNlIFwid2Vla1wiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzLm5hbWUoKSkuYWRkKCdkYXknLCAtdGhpcy5kYXlPZldlZWsoY2xvbmUpICsgMSkuc3RhcnRPZignZGF5Jyk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJtb250aFwiOlxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIGptLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMubmFtZSgpKS5zdGFydE9mKCdkYXknKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSBcInllYXJcIjpcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBqeSA9IHRoaXMueWVhcihkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIDEsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShnRGF0ZSwgdGhpcy5uYW1lKCkpLnN0YXJ0T2YoJ2RheScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbmRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWUge1xyXG4gICAgICAgIGNvbnN0IGNsb25lID0gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xyXG4gICAgICAgIHN3aXRjaCAodW5pdCkge1xyXG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgY2xvbmUuZ2V0TWludXRlcygpLCBjbG9uZS5nZXRTZWNvbmRzKCksIDk5OSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgNTksIDk5OSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSAnaG91cic6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCA1OSwgNTksIDk5OSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSAnd2Vlayc6XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRPZihkYXRlLCAnd2VlaycpLmFkZCgnZGF5JywgNikuZW5kT2YoJ2RheScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgankgPSB0aGlzLnllYXIoZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgam0gPSB0aGlzLm1vbnRoT2ZZZWFyKGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGpkID0gdGhpcy5tb250aExlbmd0aChqeSwgam0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqeSwgam0sIGpkKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMubmFtZSgpKS5lbmRPZignZGF5Jyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgXCJ5ZWFyXCI6XHJcbiAgICAgICAgICAgICAgICBsZXQgankgPSB0aGlzLnllYXIoZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIDEyLCB0aGlzLm1vbnRoTGVuZ3RoKGp5LCAxMikpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGdEYXRlLCB0aGlzLm5hbWUoKSkuZW5kT2YoJ2RheScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHRvSmFsYWxpKGRhdGU6IERhdGUpOiB7IHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIgfSB7XHJcbiAgICAgICAgY29uc3QgZ3kgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgY29uc3QgZ20gPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgICAgIGNvbnN0IGdkID0gZGF0ZS5nZXREYXRlKCk7XHJcbiAgICAgICAgY29uc3QgciA9IHRoaXMuZDJqKHRoaXMuZzJkKGd5LCBnbSwgZ2QpKVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHllYXI6IHIuanksXHJcbiAgICAgICAgICAgIG1vbnRoOiByLmptLFxyXG4gICAgICAgICAgICBkYXk6IHIuamQsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgIENvbnZlcnRzIGEgSmFsYWFsaSBkYXRlIHRvIEdyZWdvcmlhbi5cclxuICAgICovXHJcbiAgICB0b0dyZWdvcmlhbihqeSwgam0sIGpkKSB7XHJcbiAgICAgICAgY29uc3QgZyA9IHRoaXMuZDJnKHRoaXMuajJkKGp5LCBqbSwgamQpKVxyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShnLmd5LCBnLmdtIC0gMSwgZy5nZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAgQ2hlY2tzIHdoZXRoZXIgYSBKYWxhYWxpIGRhdGUgaXMgdmFsaWQgb3Igbm90LlxyXG4gICAgKi9cclxuICAgIGlzVmFsaWQoanksIGptLCBqZCkge1xyXG4gICAgICAgIHJldHVybiBqeSA+PSAtNjEgJiYgankgPD0gMzE3NyAmJlxyXG4gICAgICAgICAgICBqbSA+PSAxICYmIGptIDw9IDEyICYmXHJcbiAgICAgICAgICAgIGpkID49IDEgJiYgamQgPD0gdGhpcy5tb250aExlbmd0aChqeSwgam0pXHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAgSXMgdGhpcyBhIGxlYXAgeWVhciBvciBub3Q/XHJcbiAgICAqL1xyXG4gICAgaXNMZWFwWWVhcihqeSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmphbENhbChqeSkubGVhcCA9PT0gMFxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgIE51bWJlciBvZiBkYXlzIGluIGEgZ2l2ZW4gbW9udGggaW4gYSBKYWxhYWxpIHllYXIuXHJcbiAgICAqL1xyXG4gICAgbW9udGhMZW5ndGgoanksIGptKSB7XHJcbiAgICAgICAgaWYgKGptIDw9IDYpIHJldHVybiAzMVxyXG4gICAgICAgIGlmIChqbSA8PSAxMSkgcmV0dXJuIDMwXHJcbiAgICAgICAgaWYgKHRoaXMuaXNMZWFwWWVhcihqeSkpIHJldHVybiAzMFxyXG4gICAgICAgIHJldHVybiAyOVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIGphbENhbChqeSkge1xyXG4gICAgICAgIC8vIEphbGFhbGkgeWVhcnMgc3RhcnRpbmcgdGhlIDMzLXllYXIgcnVsZS5cclxuICAgICAgICBsZXQgYnJlYWtzID0gWy02MSwgOSwgMzgsIDE5OSwgNDI2LCA2ODYsIDc1NiwgODE4LCAxMTExLCAxMTgxLCAxMjEwXHJcbiAgICAgICAgICAgICwgMTYzNSwgMjA2MCwgMjA5NywgMjE5MiwgMjI2MiwgMjMyNCwgMjM5NCwgMjQ1NiwgMzE3OFxyXG4gICAgICAgIF1cclxuICAgICAgICAgICAgLCBibCA9IGJyZWFrcy5sZW5ndGhcclxuICAgICAgICAgICAgLCBneSA9IGp5ICsgNjIxXHJcbiAgICAgICAgICAgICwgbGVhcEogPSAtMTRcclxuICAgICAgICAgICAgLCBqcCA9IGJyZWFrc1swXVxyXG4gICAgICAgICAgICAsIGptXHJcbiAgICAgICAgICAgICwganVtcFxyXG4gICAgICAgICAgICAsIGxlYXBcclxuICAgICAgICAgICAgLCBsZWFwR1xyXG4gICAgICAgICAgICAsIG1hcmNoXHJcbiAgICAgICAgICAgICwgblxyXG4gICAgICAgICAgICAsIGlcclxuXHJcbiAgICAgICAgaWYgKGp5IDwganAgfHwgankgPj0gYnJlYWtzW2JsIC0gMV0pXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKYWxhYWxpIHllYXIgJyArIGp5KVxyXG5cclxuICAgICAgICAvLyBGaW5kIHRoZSBsaW1pdGluZyB5ZWFycyBmb3IgdGhlIEphbGFhbGkgeWVhciBqeS5cclxuICAgICAgICBmb3IgKGkgPSAxOyBpIDwgYmw7IGkgKz0gMSkge1xyXG4gICAgICAgICAgICBqbSA9IGJyZWFrc1tpXVxyXG4gICAgICAgICAgICBqdW1wID0gam0gLSBqcFxyXG4gICAgICAgICAgICBpZiAoankgPCBqbSlcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGxlYXBKID0gbGVhcEogKyB0aGlzLmRpdihqdW1wLCAzMykgKiA4ICsgdGhpcy5kaXYodGhpcy5tb2QoanVtcCwgMzMpLCA0KVxyXG4gICAgICAgICAgICBqcCA9IGptXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG4gPSBqeSAtIGpwXHJcblxyXG4gICAgICAgIC8vIEZpbmQgdGhlIG51bWJlciBvZiBsZWFwIHllYXJzIGZyb20gQUQgNjIxIHRvIHRoZSBiZWdpbm5pbmdcclxuICAgICAgICAvLyBvZiB0aGUgY3VycmVudCBKYWxhYWxpIHllYXIgaW4gdGhlIFBlcnNpYW4gY2FsZW5kYXIuXHJcbiAgICAgICAgbGVhcEogPSBsZWFwSiArIHRoaXMuZGl2KG4sIDMzKSAqIDggKyB0aGlzLmRpdih0aGlzLm1vZChuLCAzMykgKyAzLCA0KVxyXG4gICAgICAgIGlmICh0aGlzLm1vZChqdW1wLCAzMykgPT09IDQgJiYganVtcCAtIG4gPT09IDQpXHJcbiAgICAgICAgICAgIGxlYXBKICs9IDFcclxuXHJcbiAgICAgICAgLy8gQW5kIHRoZSBzYW1lIGluIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgKHVudGlsIHRoZSB5ZWFyIGd5KS5cclxuICAgICAgICBsZWFwRyA9IHRoaXMuZGl2KGd5LCA0KSAtIHRoaXMuZGl2KCh0aGlzLmRpdihneSwgMTAwKSArIDEpICogMywgNCkgLSAxNTBcclxuXHJcbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBHcmVnb3JpYW4gZGF0ZSBvZiBGYXJ2YXJkaW4gdGhlIDFzdC5cclxuICAgICAgICBtYXJjaCA9IDIwICsgbGVhcEogLSBsZWFwR1xyXG5cclxuICAgICAgICAvLyBGaW5kIGhvdyBtYW55IHllYXJzIGhhdmUgcGFzc2VkIHNpbmNlIHRoZSBsYXN0IGxlYXAgeWVhci5cclxuICAgICAgICBpZiAoanVtcCAtIG4gPCA2KVxyXG4gICAgICAgICAgICBuID0gbiAtIGp1bXAgKyB0aGlzLmRpdihqdW1wICsgNCwgMzMpICogMzNcclxuICAgICAgICBsZWFwID0gdGhpcy5tb2QodGhpcy5tb2QobiArIDEsIDMzKSAtIDEsIDQpXHJcbiAgICAgICAgaWYgKGxlYXAgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIGxlYXAgPSA0XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBsZWFwOiBsZWFwXHJcbiAgICAgICAgICAgICwgZ3k6IGd5XHJcbiAgICAgICAgICAgICwgbWFyY2g6IG1hcmNoXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgIENvbnZlcnRzIGEgZGF0ZSBvZiB0aGUgSmFsYWFsaSBjYWxlbmRhciB0byB0aGUgSnVsaWFuIERheSBudW1iZXIuXHJcbiAgICAgIEBwYXJhbSBqeSBKYWxhYWxpIHllYXIgKDEgdG8gMzEwMClcclxuICAgICAgQHBhcmFtIGptIEphbGFhbGkgbW9udGggKDEgdG8gMTIpXHJcbiAgICAgIEBwYXJhbSBqZCBKYWxhYWxpIGRheSAoMSB0byAyOS8zMSlcclxuICAgICAgQHJldHVybiBKdWxpYW4gRGF5IG51bWJlclxyXG4gICAgKi9cclxuICAgIHByaXZhdGUgajJkKGp5LCBqbSwgamQpIHtcclxuICAgICAgICBsZXQgciA9IHRoaXMuamFsQ2FsKGp5KVxyXG4gICAgICAgIHJldHVybiB0aGlzLmcyZChyLmd5LCAzLCByLm1hcmNoKSArIChqbSAtIDEpICogMzEgLSB0aGlzLmRpdihqbSwgNykgKiAoam0gLSA3KSArIGpkIC0gMVxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgIENvbnZlcnRzIHRoZSBKdWxpYW4gRGF5IG51bWJlciB0byBhIGRhdGUgaW4gdGhlIEphbGFhbGkgY2FsZW5kYXIuXHJcbiAgICAgIEBwYXJhbSBqZG4gSnVsaWFuIERheSBudW1iZXJcclxuICAgICAgQHJldHVyblxyXG4gICAgICAgIGp5OiBKYWxhYWxpIHllYXIgKDEgdG8gMzEwMClcclxuICAgICAgICBqbTogSmFsYWFsaSBtb250aCAoMSB0byAxMilcclxuICAgICAgICBqZDogSmFsYWFsaSBkYXkgKDEgdG8gMjkvMzEpXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBkMmooamRuKSB7XHJcbiAgICAgICAgbGV0IGd5ID0gdGhpcy5kMmcoamRuKS5neSAvLyBDYWxjdWxhdGUgR3JlZ29yaWFuIHllYXIgKGd5KS5cclxuICAgICAgICAgICAgLCBqeSA9IGd5IC0gNjIxXHJcbiAgICAgICAgICAgICwgciA9IHRoaXMuamFsQ2FsKGp5KVxyXG4gICAgICAgICAgICAsIGpkbjFmID0gdGhpcy5nMmQoZ3ksIDMsIHIubWFyY2gpXHJcbiAgICAgICAgICAgICwgamRcclxuICAgICAgICAgICAgLCBqbVxyXG4gICAgICAgICAgICAsIGtcclxuXHJcbiAgICAgICAgLy8gRmluZCBudW1iZXIgb2YgZGF5cyB0aGF0IHBhc3NlZCBzaW5jZSAxIEZhcnZhcmRpbi5cclxuICAgICAgICBrID0gamRuIC0gamRuMWZcclxuICAgICAgICBpZiAoayA+PSAwKSB7XHJcbiAgICAgICAgICAgIGlmIChrIDw9IDE4NSkge1xyXG4gICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IDYgbW9udGhzLlxyXG4gICAgICAgICAgICAgICAgam0gPSAxICsgdGhpcy5kaXYoaywgMzEpXHJcbiAgICAgICAgICAgICAgICBqZCA9IHRoaXMubW9kKGssIDMxKSArIDFcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgank6IGp5XHJcbiAgICAgICAgICAgICAgICAgICAgLCBqbTogam1cclxuICAgICAgICAgICAgICAgICAgICAsIGpkOiBqZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBtb250aHMuXHJcbiAgICAgICAgICAgICAgICBrIC09IDE4NlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gUHJldmlvdXMgSmFsYWFsaSB5ZWFyLlxyXG4gICAgICAgICAgICBqeSAtPSAxXHJcbiAgICAgICAgICAgIGsgKz0gMTc5XHJcbiAgICAgICAgICAgIGlmIChyLmxlYXAgPT09IDEpXHJcbiAgICAgICAgICAgICAgICBrICs9IDFcclxuICAgICAgICB9XHJcbiAgICAgICAgam0gPSA3ICsgdGhpcy5kaXYoaywgMzApXHJcbiAgICAgICAgamQgPSB0aGlzLm1vZChrLCAzMCkgKyAxXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgank6IGp5XHJcbiAgICAgICAgICAgICwgam06IGptXHJcbiAgICAgICAgICAgICwgamQ6IGpkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIGcyZChneSwgZ20sIGdkKSB7XHJcbiAgICAgICAgbGV0IGQgPSB0aGlzLmRpdigoZ3kgKyB0aGlzLmRpdihnbSAtIDgsIDYpICsgMTAwMTAwKSAqIDE0NjEsIDQpXHJcbiAgICAgICAgICAgICsgdGhpcy5kaXYoMTUzICogdGhpcy5tb2QoZ20gKyA5LCAxMikgKyAyLCA1KVxyXG4gICAgICAgICAgICArIGdkIC0gMzQ4NDA0MDhcclxuICAgICAgICBkID0gZCAtIHRoaXMuZGl2KHRoaXMuZGl2KGd5ICsgMTAwMTAwICsgdGhpcy5kaXYoZ20gLSA4LCA2KSwgMTAwKSAqIDMsIDQpICsgNzUyXHJcbiAgICAgICAgcmV0dXJuIGRcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBkMmcoamRuKSB7XHJcbiAgICAgICAgbGV0IGpcclxuICAgICAgICAgICAgLCBpXHJcbiAgICAgICAgICAgICwgZ2RcclxuICAgICAgICAgICAgLCBnbVxyXG4gICAgICAgICAgICAsIGd5XHJcbiAgICAgICAgaiA9IDQgKiBqZG4gKyAxMzkzNjE2MzFcclxuICAgICAgICBqID0gaiArIHRoaXMuZGl2KHRoaXMuZGl2KDQgKiBqZG4gKyAxODMxODc3MjAsIDE0NjA5NykgKiAzLCA0KSAqIDQgLSAzOTA4XHJcbiAgICAgICAgaSA9IHRoaXMuZGl2KHRoaXMubW9kKGosIDE0NjEpLCA0KSAqIDUgKyAzMDhcclxuICAgICAgICBnZCA9IHRoaXMuZGl2KHRoaXMubW9kKGksIDE1MyksIDUpICsgMVxyXG4gICAgICAgIGdtID0gdGhpcy5tb2QodGhpcy5kaXYoaSwgMTUzKSwgMTIpICsgMVxyXG4gICAgICAgIGd5ID0gdGhpcy5kaXYoaiwgMTQ2MSkgLSAxMDAxMDAgKyB0aGlzLmRpdig4IC0gZ20sIDYpXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZ3k6IGd5XHJcbiAgICAgICAgICAgICwgZ206IGdtXHJcbiAgICAgICAgICAgICwgZ2Q6IGdkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgIFV0aWxpdHkgaGVscGVyIGZ1bmN0aW9ucy5cclxuICAgICovXHJcbiAgICBwcml2YXRlIGRpdihhLCBiKSB7XHJcbiAgICAgICAgcmV0dXJuIH5+KGEgLyBiKVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbW9kKGEsIGIpIHtcclxuICAgICAgICByZXR1cm4gYSAtIH5+KGEgLyBiKSAqIGJcclxuICAgIH1cclxuXHJcbn0iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvZXZlbnRzL2Fjb3JleC1jb3JlLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './src/event.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL2V2ZW50cy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9ldmVudC5zZXJ2aWNlJzsiXX0=
@@ -0,0 +1,36 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AXEventService {
4
+ constructor() {
5
+ this.list = [];
6
+ }
7
+ broadcast(key, options) {
8
+ const d = this.list.find(c => c.key === key);
9
+ if (d) {
10
+ d.events.forEach((c) => {
11
+ c(options);
12
+ });
13
+ }
14
+ }
15
+ on(key, callback) {
16
+ let d = this.list.find(c => c.key === key);
17
+ if (!d) {
18
+ d = { key, events: [] };
19
+ this.list.push(d);
20
+ }
21
+ d.events.push(callback);
22
+ }
23
+ destroy(key, callback) {
24
+ const d = this.list.find(c => c.key === key);
25
+ if (d) {
26
+ d.events = [];
27
+ }
28
+ }
29
+ }
30
+ AXEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
31
+ AXEventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXEventService, providedIn: 'root' });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXEventService, decorators: [{
33
+ type: Injectable,
34
+ args: [{ providedIn: 'root' }]
35
+ }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL2V2ZW50cy9zcmMvZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVZLFNBQUksR0FBVSxFQUFFLENBQUM7S0EwQjVCO0lBeEJVLFNBQVMsQ0FBQyxHQUFXLEVBQUUsT0FBYTtRQUN2QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEVBQUU7WUFDSCxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUssRUFBRSxFQUFFO2dCQUN2QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVNLEVBQUUsQ0FBQyxHQUFXLEVBQUUsUUFBaUM7UUFDcEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxHQUFXLEVBQUUsUUFBaUM7UUFDekQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxFQUFFO1lBQ0gsQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDakI7SUFDTCxDQUFDOzsyR0ExQlEsY0FBYzsrR0FBZCxjQUFjLGNBREQsTUFBTTsyRkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQVhFdmVudFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBsaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIHB1YmxpYyBicm9hZGNhc3Qoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkID0gdGhpcy5saXN0LmZpbmQoYyA9PiBjLmtleSA9PT0ga2V5KTtcclxuICAgICAgICBpZiAoZCkge1xyXG4gICAgICAgICAgICBkLmV2ZW50cy5mb3JFYWNoKChjOmFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYyhvcHRpb25zKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbihrZXk6IHN0cmluZywgY2FsbGJhY2s6IChvcHRpb25zPzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgbGV0IGQgPSB0aGlzLmxpc3QuZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xyXG4gICAgICAgIGlmICghZCkge1xyXG4gICAgICAgICAgICBkID0geyBrZXksIGV2ZW50czogW10gfTtcclxuICAgICAgICAgICAgdGhpcy5saXN0LnB1c2goZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGQuZXZlbnRzLnB1c2goY2FsbGJhY2spO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkZXN0cm95KGtleTogc3RyaW5nLCBjYWxsYmFjazogKG9wdGlvbnM/OiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkID0gdGhpcy5saXN0LmZpbmQoYyA9PiBjLmtleSA9PT0ga2V5KTtcclxuICAgICAgICBpZiAoZCkge1xyXG4gICAgICAgICAgICBkLmV2ZW50cyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL2ZpbGUvYWNvcmV4LWNvcmUtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,5 @@
1
+ export * from './src/file-download-ref.class';
2
+ export * from './src/file-download-result.class';
3
+ export * from './src/file-upload-ref.class';
4
+ export * from './src/file.service';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL2ZpbGUvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIGV4cG9ydCAqIGZyb20gJy4vc3JjL2ZpbGUtZG93bmxvYWQtcmVmLmNsYXNzJztcclxuIGV4cG9ydCAqIGZyb20gJy4vc3JjL2ZpbGUtZG93bmxvYWQtcmVzdWx0LmNsYXNzJztcclxuIGV4cG9ydCAqIGZyb20gJy4vc3JjL2ZpbGUtdXBsb2FkLXJlZi5jbGFzcyc7XHJcbiBleHBvcnQgKiBmcm9tICcuL3NyYy9maWxlLnNlcnZpY2UnOyJdfQ==
@@ -0,0 +1,12 @@
1
+ export class AXFileDownloadRef extends Promise {
2
+ constructor(executor) {
3
+ super(executor);
4
+ }
5
+ //abort the operation
6
+ abort() {
7
+ if (this.abortMethod) {
8
+ this.abortMethod();
9
+ }
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kb3dubG9hZC1yZWYuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9maWxlL3NyYy9maWxlLWRvd25sb2FkLXJlZi5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsT0FBNkI7SUFHaEUsWUFBWSxRQUFnSDtRQUN4SCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEIsQ0FBQztJQUNELHFCQUFxQjtJQUNkLEtBQUs7UUFDUixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGaWxlRG93bmxvYWRSZXN1bHQgfSBmcm9tIFwiLi9maWxlLWRvd25sb2FkLXJlc3VsdC5jbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFYRmlsZURvd25sb2FkUmVmIGV4dGVuZHMgUHJvbWlzZTxBWEZpbGVEb3dubG9hZFJlc3VsdD5cclxue1xyXG4gICAgcHVibGljIGFib3J0TWV0aG9kOiAoKSA9PiB2b2lkO1xyXG4gICAgY29uc3RydWN0b3IoZXhlY3V0b3I6IChyZXNvbHZlOiAodmFsdWU/OiBQcm9taXNlTGlrZTxBWEZpbGVEb3dubG9hZFJlc3VsdD4pID0+IHZvaWQsIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCkgPT4gdm9pZCkge1xyXG4gICAgICAgIHN1cGVyKGV4ZWN1dG9yKTtcclxuXHJcbiAgICB9XHJcbiAgICAvL2Fib3J0IHRoZSBvcGVyYXRpb25cclxuICAgIHB1YmxpYyBhYm9ydCgpIHtcclxuICAgICAgICBpZiAodGhpcy5hYm9ydE1ldGhvZCkge1xyXG4gICAgICAgICAgICB0aGlzLmFib3J0TWV0aG9kKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
@@ -0,0 +1,47 @@
1
+ export class AXFileDownloadResult {
2
+ constructor(response) {
3
+ this._response = response;
4
+ }
5
+ save(filename) {
6
+ this._defaultBrowserDownload(filename);
7
+ return Promise.resolve();
8
+ // else {
9
+ // return new Promise((resolve, reject) => {
10
+ // const button = document.createElement("button");
11
+ // button.addEventListener('click', async () => {
12
+ // debugger
13
+ // button.remove();
14
+ // const opts = {
15
+ // types: [{
16
+ // description: 'Save File',
17
+ // suggestedName: filename
18
+ // // accept: {'text/plain': ['.txt']},
19
+ // }],
20
+ // };
21
+ // const result = await window['showSaveFilePicker'](opts);
22
+ // console.log(result);
23
+ // resolve();
24
+ // });
25
+ // button.click();
26
+ // });
27
+ // }
28
+ }
29
+ blob() {
30
+ return this._response;
31
+ }
32
+ base64() {
33
+ return new Promise((resolve, reject) => {
34
+ var reader = new window.FileReader();
35
+ reader.onloadend = () => resolve(reader.result);
36
+ reader.onerror = (e) => reject(e);
37
+ reader.readAsDataURL(this._response);
38
+ });
39
+ }
40
+ _defaultBrowserDownload(filename = 'download') {
41
+ const link = document.createElement("a");
42
+ link.href = URL.createObjectURL(this._response);
43
+ link.download = filename;
44
+ link.click();
45
+ }
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kb3dubG9hZC1yZXN1bHQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9maWxlL3NyYy9maWxlLWRvd25sb2FkLXJlc3VsdC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sb0JBQW9CO0lBSTdCLFlBQVksUUFBYztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWlCO1FBQ2xCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QixTQUFTO1FBQ1QsNENBQTRDO1FBQzVDLHVEQUF1RDtRQUN2RCxxREFBcUQ7UUFDckQsbUJBQW1CO1FBQ25CLDJCQUEyQjtRQUMzQix5QkFBeUI7UUFDekIsd0JBQXdCO1FBQ3hCLDRDQUE0QztRQUM1QywwQ0FBMEM7UUFDMUMseURBQXlEO1FBQ3pELGtCQUFrQjtRQUNsQixhQUFhO1FBQ2IsbUVBQW1FO1FBQ25FLCtCQUErQjtRQUUvQixxQkFBcUI7UUFDckIsVUFBVTtRQUNWLHNCQUFzQjtRQUN0QixNQUFNO1FBRU4sSUFBSTtJQUNSLENBQUM7SUFHRCxJQUFJO1FBQ0EsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxJQUFJLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBZ0IsQ0FBQyxDQUFDO1lBQzFELE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxXQUFtQixVQUFVO1FBQ3pELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFYRmlsZURvd25sb2FkUmVzdWx0IHtcclxuXHJcbiAgICBfcmVzcG9uc2U6IEJsb2I7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVzcG9uc2U6IEJsb2IpIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZSA9IHJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmUoZmlsZW5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0aGlzLl9kZWZhdWx0QnJvd3NlckRvd25sb2FkKGZpbGVuYW1lKTtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgLy8gZWxzZSB7XHJcbiAgICAgICAgLy8gcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAvLyAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcclxuICAgICAgICAvLyAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIC8vICAgICAgICAgZGVidWdnZXJcclxuICAgICAgICAvLyAgICAgICAgIGJ1dHRvbi5yZW1vdmUoKTtcclxuICAgICAgICAvLyAgICAgICAgIGNvbnN0IG9wdHMgPSB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdHlwZXM6IFt7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU2F2ZSBGaWxlJyxcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgc3VnZ2VzdGVkTmFtZTogZmlsZW5hbWVcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgLy8gICBhY2NlcHQ6IHsndGV4dC9wbGFpbic6IFsnLnR4dCddfSxcclxuICAgICAgICAvLyAgICAgICAgICAgICB9XSxcclxuICAgICAgICAvLyAgICAgICAgIH07XHJcbiAgICAgICAgLy8gICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3aW5kb3dbJ3Nob3dTYXZlRmlsZVBpY2tlciddKG9wdHMpO1xyXG4gICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuXHJcbiAgICAgICAgLy8gICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAgIC8vICAgICBidXR0b24uY2xpY2soKTtcclxuICAgICAgICAvLyB9KTtcclxuXHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBibG9iKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZTtcclxuICAgIH1cclxuXHJcbiAgICBiYXNlNjQoKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IHdpbmRvdy5GaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKTtcclxuICAgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZSkgPT4gcmVqZWN0KGUpO1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTCh0aGlzLl9yZXNwb25zZSk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9kZWZhdWx0QnJvd3NlckRvd25sb2FkKGZpbGVuYW1lOiBzdHJpbmcgPSAnZG93bmxvYWQnKSB7XHJcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5fcmVzcG9uc2UpO1xyXG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlbmFtZTtcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -0,0 +1,12 @@
1
+ export class AXFileUploadRef extends Promise {
2
+ constructor(executor) {
3
+ super(executor);
4
+ }
5
+ //abort the operation
6
+ abort() {
7
+ if (this.abortMethod) {
8
+ this.abortMethod();
9
+ }
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQtcmVmLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvZmlsZS9zcmMvZmlsZS11cGxvYWQtcmVmLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxlQUF5QixTQUFRLE9BQVU7SUFHcEQsWUFBWSxRQUE2RjtRQUNyRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEIsQ0FBQztJQUNELHFCQUFxQjtJQUNkLEtBQUs7UUFDUixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFYRmlsZVVwbG9hZFJlZjxUID0gYW55PiBleHRlbmRzIFByb21pc2U8VD5cclxue1xyXG4gICAgcHVibGljIGFib3J0TWV0aG9kOiAoKSA9PiB2b2lkO1xyXG4gICAgY29uc3RydWN0b3IoZXhlY3V0b3I6IChyZXNvbHZlOiAodmFsdWU/OiBQcm9taXNlTGlrZTxUPikgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgc3VwZXIoZXhlY3V0b3IpO1xyXG5cclxuICAgIH1cclxuICAgIC8vYWJvcnQgdGhlIG9wZXJhdGlvblxyXG4gICAgcHVibGljIGFib3J0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmFib3J0TWV0aG9kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWJvcnRNZXRob2QoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=