@getopenpay/openpay-js-react 0.5.15 → 0.5.16

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 (36) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/Resource-D6e1SVqp-BeOAe8CK.js +176 -0
  3. package/dist/SimpleSpanProcessor-B5oeCAH_-CNwRvldN.js +910 -0
  4. package/dist/detect-resources-D-FR6I1M-DgVqsro8.js +862 -0
  5. package/dist/{diag-api-DbLQG6Cy-7Q64bfX9.js → diag-api-7f_bGNCd-CpEfr1jK.js} +2 -2
  6. package/dist/index-BFik66y9-BRo2pwAy.js +1012 -0
  7. package/dist/index-Bk9VFx-5-BeIAJsOs.js +127 -0
  8. package/dist/index-C1R5n4f5-BEiNGyPJ.js +430 -0
  9. package/dist/{index-B2hBQXxN-CgWoAORq.js → index-CfN_T6km-BTbU3RrT.js} +2 -2
  10. package/dist/index-Ck97EOCA-Zm6JWqpV.js +1613 -0
  11. package/dist/index-DjSIi8qA-DbNOQoO0.js +147 -0
  12. package/dist/{index-CDEhufnp-CDtO0j1l.js → index-SfjGhwLd-D8Gzvy7d.js} +2 -2
  13. package/dist/index-Zrl0yXaO-DZcZ2j3o.js +6718 -0
  14. package/dist/index-ghrKKt8-.js +9352 -0
  15. package/dist/{index-BJ3-FtuX-DlTusXVc.js → index-uguPxhWW-DM-QuCEc.js} +5 -5
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/metrics-api-Db6Frex7-qndTY0vL.js +160 -0
  19. package/dist/{suppress-tracing-i166ZvAf-D2QqEK4Q.js → suppress-tracing-CDURENlV-rNvzoerf.js} +2 -2
  20. package/dist/url-CIe6o1oH-CoerVU9o.js +798 -0
  21. package/dist/{utils-BFjwGsZE-dHVj8huE.js → utils-BhSCC4TN-CdIRB2pa.js} +2 -2
  22. package/dist/utils-cMYN_8r4-CH-hT-iy.js +270 -0
  23. package/package.json +1 -1
  24. package/dist/Resource-C_JyOUi0-DCzIGxs8.js +0 -176
  25. package/dist/SimpleSpanProcessor-DsaymkqA-CtD-GEtk.js +0 -910
  26. package/dist/detect-resources-WIF4Hgfd-BW23wWaP.js +0 -862
  27. package/dist/index-0_SuCli2-B5_tBBpx.js +0 -430
  28. package/dist/index-3-QFb-PY-DJRVxNSq.js +0 -127
  29. package/dist/index-CV8wT6Y2-Bh-lYVds.js +0 -6718
  30. package/dist/index-DIoaqP4_-Cs74t_lP.js +0 -1012
  31. package/dist/index-DJhVQsLX-BiIZL-r4.js +0 -147
  32. package/dist/index-Din5I5pT-Be1fPmsi.js +0 -1613
  33. package/dist/index-nPWqtn7T.js +0 -9357
  34. package/dist/metrics-api-B_K2nQRV-Be59r2AI.js +0 -160
  35. package/dist/url-D2-xNTDs-BLiqCwPG.js +0 -798
  36. package/dist/utils-Blz-BInC-461m4Gx4.js +0 -270
@@ -0,0 +1,1613 @@
1
+ import { Q as Xe } from "./index-ghrKKt8-.js";
2
+ function At(I) {
3
+ return I === void 0 && (I = {}), typeof I.addEventListener == "function" && typeof I.removeEventListener == "function";
4
+ }
5
+ var dt = "OT_ZONE_CONTEXT", Gt = (
6
+ /** @class */
7
+ (function() {
8
+ function I() {
9
+ this._enabled = !1, this._zoneCounter = 0;
10
+ }
11
+ return I.prototype._activeContextFromZone = function(C) {
12
+ return C && C.get(dt) || Xe;
13
+ }, I.prototype._bindFunction = function(C, V) {
14
+ var H = this, ee = function() {
15
+ for (var te = this, ae = [], he = 0; he < arguments.length; he++)
16
+ ae[he] = arguments[he];
17
+ return H.with(C, function() {
18
+ return V.apply(te, ae);
19
+ });
20
+ };
21
+ return Object.defineProperty(ee, "length", {
22
+ enumerable: !1,
23
+ configurable: !0,
24
+ writable: !1,
25
+ value: V.length
26
+ }), ee;
27
+ }, I.prototype._bindListener = function(C, V) {
28
+ var H = V;
29
+ return H.__ot_listeners !== void 0 || (H.__ot_listeners = {}, typeof H.addEventListener == "function" && (H.addEventListener = this._patchAddEventListener(H, H.addEventListener, C)), typeof H.removeEventListener == "function" && (H.removeEventListener = this._patchRemoveEventListener(H, H.removeEventListener))), V;
30
+ }, I.prototype._createZoneName = function() {
31
+ this._zoneCounter++;
32
+ var C = Math.random();
33
+ return this._zoneCounter + "-" + C;
34
+ }, I.prototype._createZone = function(C, V) {
35
+ var H;
36
+ return Zone.current.fork({
37
+ name: C,
38
+ properties: (H = {}, H[dt] = V, H)
39
+ });
40
+ }, I.prototype._getActiveZone = function() {
41
+ return Zone.current;
42
+ }, I.prototype._patchAddEventListener = function(C, V, H) {
43
+ var ee = this;
44
+ return function(te, ae, he) {
45
+ C.__ot_listeners === void 0 && (C.__ot_listeners = {});
46
+ var Te = C.__ot_listeners[te];
47
+ Te === void 0 && (Te = /* @__PURE__ */ new WeakMap(), C.__ot_listeners[te] = Te);
48
+ var be = ee.bind(H, ae);
49
+ return Te.set(ae, be), V.call(this, te, be, he);
50
+ };
51
+ }, I.prototype._patchRemoveEventListener = function(C, V) {
52
+ return function(H, ee) {
53
+ if (C.__ot_listeners === void 0 || C.__ot_listeners[H] === void 0)
54
+ return V.call(this, H, ee);
55
+ var te = C.__ot_listeners[H], ae = te.get(ee);
56
+ return te.delete(ee), V.call(this, H, ae || ee);
57
+ };
58
+ }, I.prototype.active = function() {
59
+ if (!this._enabled)
60
+ return Xe;
61
+ var C = this._getActiveZone(), V = this._activeContextFromZone(C);
62
+ return V || Xe;
63
+ }, I.prototype.bind = function(C, V) {
64
+ return C === void 0 && (C = this.active()), typeof V == "function" ? this._bindFunction(C, V) : (At(V) && this._bindListener(C, V), V);
65
+ }, I.prototype.disable = function() {
66
+ return this._enabled = !1, this;
67
+ }, I.prototype.enable = function() {
68
+ return this._enabled = !0, this;
69
+ }, I.prototype.with = function(C, V, H) {
70
+ for (var ee = [], te = 3; te < arguments.length; te++)
71
+ ee[te - 3] = arguments[te];
72
+ var ae = this._createZoneName(), he = this._createZone(ae, C);
73
+ return he.run(V, H, ee);
74
+ }, I;
75
+ })()
76
+ ), kt = {}, mt;
77
+ function xt() {
78
+ if (mt) return kt;
79
+ mt = 1;
80
+ /**
81
+ * @license Angular v<unknown>
82
+ * (c) 2010-2025 Google LLC. https://angular.io/
83
+ * License: MIT
84
+ */
85
+ const I = globalThis;
86
+ function C(e) {
87
+ return (I.__Zone_symbol_prefix || "__zone_symbol__") + e;
88
+ }
89
+ function V() {
90
+ const e = I.performance;
91
+ function n(L) {
92
+ e && e.mark && e.mark(L);
93
+ }
94
+ function c(L, a) {
95
+ e && e.measure && e.measure(L, a);
96
+ }
97
+ n("Zone");
98
+ class t {
99
+ static __symbol__ = C;
100
+ static assertZonePatched() {
101
+ if (I.Promise !== O.ZoneAwarePromise)
102
+ throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)");
103
+ }
104
+ static get root() {
105
+ let a = t.current;
106
+ for (; a.parent; )
107
+ a = a.parent;
108
+ return a;
109
+ }
110
+ static get current() {
111
+ return E.zone;
112
+ }
113
+ static get currentTask() {
114
+ return S;
115
+ }
116
+ static __load_patch(a, s, r = !1) {
117
+ if (O.hasOwnProperty(a)) {
118
+ const T = I[C("forceDuplicateZoneCheck")] === !0;
119
+ if (!r && T)
120
+ throw Error("Already loaded patch: " + a);
121
+ } else if (!I["__Zone_disable_" + a]) {
122
+ const T = "Zone:" + a;
123
+ n(T), O[a] = s(I, t, D), c(T, T);
124
+ }
125
+ }
126
+ get parent() {
127
+ return this._parent;
128
+ }
129
+ get name() {
130
+ return this._name;
131
+ }
132
+ _parent;
133
+ _name;
134
+ _properties;
135
+ _zoneDelegate;
136
+ constructor(a, s) {
137
+ this._parent = a, this._name = s ? s.name || "unnamed" : "<root>", this._properties = s && s.properties || {}, this._zoneDelegate = new u(this, this._parent && this._parent._zoneDelegate, s);
138
+ }
139
+ get(a) {
140
+ const s = this.getZoneWith(a);
141
+ if (s)
142
+ return s._properties[a];
143
+ }
144
+ getZoneWith(a) {
145
+ let s = this;
146
+ for (; s; ) {
147
+ if (s._properties.hasOwnProperty(a))
148
+ return s;
149
+ s = s._parent;
150
+ }
151
+ return null;
152
+ }
153
+ fork(a) {
154
+ if (!a)
155
+ throw new Error("ZoneSpec required!");
156
+ return this._zoneDelegate.fork(this, a);
157
+ }
158
+ wrap(a, s) {
159
+ if (typeof a != "function")
160
+ throw new Error("Expecting function got: " + a);
161
+ const r = this._zoneDelegate.intercept(this, a, s), T = this;
162
+ return function() {
163
+ return T.runGuarded(r, this, arguments, s);
164
+ };
165
+ }
166
+ run(a, s, r, T) {
167
+ E = { parent: E, zone: this };
168
+ try {
169
+ return this._zoneDelegate.invoke(this, a, s, r, T);
170
+ } finally {
171
+ E = E.parent;
172
+ }
173
+ }
174
+ runGuarded(a, s = null, r, T) {
175
+ E = { parent: E, zone: this };
176
+ try {
177
+ try {
178
+ return this._zoneDelegate.invoke(this, a, s, r, T);
179
+ } catch (U) {
180
+ if (this._zoneDelegate.handleError(this, U))
181
+ throw U;
182
+ }
183
+ } finally {
184
+ E = E.parent;
185
+ }
186
+ }
187
+ runTask(a, s, r) {
188
+ if (a.zone != this)
189
+ throw new Error("A task can only be run in the zone of creation! (Creation: " + (a.zone || re).name + "; Execution: " + this.name + ")");
190
+ const T = a, { type: U, data: { isPeriodic: ie = !1, isRefreshable: N = !1 } = {} } = a;
191
+ if (a.state === K && (U === B || U === k))
192
+ return;
193
+ const me = a.state != A;
194
+ me && T._transitionTo(A, p);
195
+ const ve = S;
196
+ S = T, E = { parent: E, zone: this };
197
+ try {
198
+ U == k && a.data && !ie && !N && (a.cancelFn = void 0);
199
+ try {
200
+ return this._zoneDelegate.invokeTask(this, T, s, r);
201
+ } catch (se) {
202
+ if (this._zoneDelegate.handleError(this, se))
203
+ throw se;
204
+ }
205
+ } finally {
206
+ const se = a.state;
207
+ if (se !== K && se !== J)
208
+ if (U == B || ie || N && se === v)
209
+ me && T._transitionTo(p, A, v);
210
+ else {
211
+ const we = T._zoneDelegates;
212
+ this._updateTaskCount(T, -1), me && T._transitionTo(K, A, K), N && (T._zoneDelegates = we);
213
+ }
214
+ E = E.parent, S = ve;
215
+ }
216
+ }
217
+ scheduleTask(a) {
218
+ if (a.zone && a.zone !== this) {
219
+ let r = this;
220
+ for (; r; ) {
221
+ if (r === a.zone)
222
+ throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${a.zone.name}`);
223
+ r = r.parent;
224
+ }
225
+ }
226
+ a._transitionTo(v, K);
227
+ const s = [];
228
+ a._zoneDelegates = s, a._zone = this;
229
+ try {
230
+ a = this._zoneDelegate.scheduleTask(this, a);
231
+ } catch (r) {
232
+ throw a._transitionTo(J, v, K), this._zoneDelegate.handleError(this, r), r;
233
+ }
234
+ return a._zoneDelegates === s && this._updateTaskCount(a, 1), a.state == v && a._transitionTo(p, v), a;
235
+ }
236
+ scheduleMicroTask(a, s, r, T) {
237
+ return this.scheduleTask(new d($, a, s, r, T, void 0));
238
+ }
239
+ scheduleMacroTask(a, s, r, T, U) {
240
+ return this.scheduleTask(new d(k, a, s, r, T, U));
241
+ }
242
+ scheduleEventTask(a, s, r, T, U) {
243
+ return this.scheduleTask(new d(B, a, s, r, T, U));
244
+ }
245
+ cancelTask(a) {
246
+ if (a.zone != this)
247
+ throw new Error("A task can only be cancelled in the zone of creation! (Creation: " + (a.zone || re).name + "; Execution: " + this.name + ")");
248
+ if (!(a.state !== p && a.state !== A)) {
249
+ a._transitionTo(G, p, A);
250
+ try {
251
+ this._zoneDelegate.cancelTask(this, a);
252
+ } catch (s) {
253
+ throw a._transitionTo(J, G), this._zoneDelegate.handleError(this, s), s;
254
+ }
255
+ return this._updateTaskCount(a, -1), a._transitionTo(K, G), a.runCount = -1, a;
256
+ }
257
+ }
258
+ _updateTaskCount(a, s) {
259
+ const r = a._zoneDelegates;
260
+ s == -1 && (a._zoneDelegates = null);
261
+ for (let T = 0; T < r.length; T++)
262
+ r[T]._updateTaskCount(a.type, s);
263
+ }
264
+ }
265
+ const i = {
266
+ name: "",
267
+ onHasTask: (L, a, s, r) => L.hasTask(s, r),
268
+ onScheduleTask: (L, a, s, r) => L.scheduleTask(s, r),
269
+ onInvokeTask: (L, a, s, r, T, U) => L.invokeTask(s, r, T, U),
270
+ onCancelTask: (L, a, s, r) => L.cancelTask(s, r)
271
+ };
272
+ class u {
273
+ get zone() {
274
+ return this._zone;
275
+ }
276
+ _zone;
277
+ _taskCounts = {
278
+ microTask: 0,
279
+ macroTask: 0,
280
+ eventTask: 0
281
+ };
282
+ _parentDelegate;
283
+ _forkDlgt;
284
+ _forkZS;
285
+ _forkCurrZone;
286
+ _interceptDlgt;
287
+ _interceptZS;
288
+ _interceptCurrZone;
289
+ _invokeDlgt;
290
+ _invokeZS;
291
+ _invokeCurrZone;
292
+ _handleErrorDlgt;
293
+ _handleErrorZS;
294
+ _handleErrorCurrZone;
295
+ _scheduleTaskDlgt;
296
+ _scheduleTaskZS;
297
+ _scheduleTaskCurrZone;
298
+ _invokeTaskDlgt;
299
+ _invokeTaskZS;
300
+ _invokeTaskCurrZone;
301
+ _cancelTaskDlgt;
302
+ _cancelTaskZS;
303
+ _cancelTaskCurrZone;
304
+ _hasTaskDlgt;
305
+ _hasTaskDlgtOwner;
306
+ _hasTaskZS;
307
+ _hasTaskCurrZone;
308
+ constructor(a, s, r) {
309
+ this._zone = a, this._parentDelegate = s, this._forkZS = r && (r && r.onFork ? r : s._forkZS), this._forkDlgt = r && (r.onFork ? s : s._forkDlgt), this._forkCurrZone = r && (r.onFork ? this._zone : s._forkCurrZone), this._interceptZS = r && (r.onIntercept ? r : s._interceptZS), this._interceptDlgt = r && (r.onIntercept ? s : s._interceptDlgt), this._interceptCurrZone = r && (r.onIntercept ? this._zone : s._interceptCurrZone), this._invokeZS = r && (r.onInvoke ? r : s._invokeZS), this._invokeDlgt = r && (r.onInvoke ? s : s._invokeDlgt), this._invokeCurrZone = r && (r.onInvoke ? this._zone : s._invokeCurrZone), this._handleErrorZS = r && (r.onHandleError ? r : s._handleErrorZS), this._handleErrorDlgt = r && (r.onHandleError ? s : s._handleErrorDlgt), this._handleErrorCurrZone = r && (r.onHandleError ? this._zone : s._handleErrorCurrZone), this._scheduleTaskZS = r && (r.onScheduleTask ? r : s._scheduleTaskZS), this._scheduleTaskDlgt = r && (r.onScheduleTask ? s : s._scheduleTaskDlgt), this._scheduleTaskCurrZone = r && (r.onScheduleTask ? this._zone : s._scheduleTaskCurrZone), this._invokeTaskZS = r && (r.onInvokeTask ? r : s._invokeTaskZS), this._invokeTaskDlgt = r && (r.onInvokeTask ? s : s._invokeTaskDlgt), this._invokeTaskCurrZone = r && (r.onInvokeTask ? this._zone : s._invokeTaskCurrZone), this._cancelTaskZS = r && (r.onCancelTask ? r : s._cancelTaskZS), this._cancelTaskDlgt = r && (r.onCancelTask ? s : s._cancelTaskDlgt), this._cancelTaskCurrZone = r && (r.onCancelTask ? this._zone : s._cancelTaskCurrZone), this._hasTaskZS = null, this._hasTaskDlgt = null, this._hasTaskDlgtOwner = null, this._hasTaskCurrZone = null;
310
+ const T = r && r.onHasTask, U = s && s._hasTaskZS;
311
+ (T || U) && (this._hasTaskZS = T ? r : i, this._hasTaskDlgt = s, this._hasTaskDlgtOwner = this, this._hasTaskCurrZone = this._zone, r.onScheduleTask || (this._scheduleTaskZS = i, this._scheduleTaskDlgt = s, this._scheduleTaskCurrZone = this._zone), r.onInvokeTask || (this._invokeTaskZS = i, this._invokeTaskDlgt = s, this._invokeTaskCurrZone = this._zone), r.onCancelTask || (this._cancelTaskZS = i, this._cancelTaskDlgt = s, this._cancelTaskCurrZone = this._zone));
312
+ }
313
+ fork(a, s) {
314
+ return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, a, s) : new t(a, s);
315
+ }
316
+ intercept(a, s, r) {
317
+ return this._interceptZS ? this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, a, s, r) : s;
318
+ }
319
+ invoke(a, s, r, T, U) {
320
+ return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, a, s, r, T, U) : s.apply(r, T);
321
+ }
322
+ handleError(a, s) {
323
+ return this._handleErrorZS ? this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, a, s) : !0;
324
+ }
325
+ scheduleTask(a, s) {
326
+ let r = s;
327
+ if (this._scheduleTaskZS)
328
+ this._hasTaskZS && r._zoneDelegates.push(this._hasTaskDlgtOwner), r = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, a, s), r || (r = s);
329
+ else if (s.scheduleFn)
330
+ s.scheduleFn(s);
331
+ else if (s.type == $)
332
+ X(s);
333
+ else
334
+ throw new Error("Task is missing scheduleFn.");
335
+ return r;
336
+ }
337
+ invokeTask(a, s, r, T) {
338
+ return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, a, s, r, T) : s.callback.apply(r, T);
339
+ }
340
+ cancelTask(a, s) {
341
+ let r;
342
+ if (this._cancelTaskZS)
343
+ r = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, a, s);
344
+ else {
345
+ if (!s.cancelFn)
346
+ throw Error("Task is not cancelable");
347
+ r = s.cancelFn(s);
348
+ }
349
+ return r;
350
+ }
351
+ hasTask(a, s) {
352
+ try {
353
+ this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, a, s);
354
+ } catch (r) {
355
+ this.handleError(a, r);
356
+ }
357
+ }
358
+ _updateTaskCount(a, s) {
359
+ const r = this._taskCounts, T = r[a], U = r[a] = T + s;
360
+ if (U < 0)
361
+ throw new Error("More tasks executed then were scheduled.");
362
+ if (T == 0 || U == 0) {
363
+ const ie = {
364
+ microTask: r.microTask > 0,
365
+ macroTask: r.macroTask > 0,
366
+ eventTask: r.eventTask > 0,
367
+ change: a
368
+ };
369
+ this.hasTask(this._zone, ie);
370
+ }
371
+ }
372
+ }
373
+ class d {
374
+ type;
375
+ source;
376
+ invoke;
377
+ callback;
378
+ data;
379
+ scheduleFn;
380
+ cancelFn;
381
+ _zone = null;
382
+ runCount = 0;
383
+ _zoneDelegates = null;
384
+ _state = "notScheduled";
385
+ constructor(a, s, r, T, U, ie) {
386
+ if (this.type = a, this.source = s, this.data = T, this.scheduleFn = U, this.cancelFn = ie, !r)
387
+ throw new Error("callback is not defined");
388
+ this.callback = r;
389
+ const N = this;
390
+ a === B && T && T.useG ? this.invoke = d.invokeTask : this.invoke = function() {
391
+ return d.invokeTask.call(I, N, this, arguments);
392
+ };
393
+ }
394
+ static invokeTask(a, s, r) {
395
+ a || (a = this), oe++;
396
+ try {
397
+ return a.runCount++, a.zone.runTask(a, s, r);
398
+ } finally {
399
+ oe == 1 && ne(), oe--;
400
+ }
401
+ }
402
+ get zone() {
403
+ return this._zone;
404
+ }
405
+ get state() {
406
+ return this._state;
407
+ }
408
+ cancelScheduleRequest() {
409
+ this._transitionTo(K, v);
410
+ }
411
+ _transitionTo(a, s, r) {
412
+ if (this._state === s || this._state === r)
413
+ this._state = a, a == K && (this._zoneDelegates = null);
414
+ else
415
+ throw new Error(`${this.type} '${this.source}': can not transition to '${a}', expecting state '${s}'${r ? " or '" + r + "'" : ""}, was '${this._state}'.`);
416
+ }
417
+ toString() {
418
+ return this.data && typeof this.data.handleId < "u" ? this.data.handleId.toString() : Object.prototype.toString.call(this);
419
+ }
420
+ // add toJSON method to prevent cyclic error when
421
+ // call JSON.stringify(zoneTask)
422
+ toJSON() {
423
+ return {
424
+ type: this.type,
425
+ state: this.state,
426
+ source: this.source,
427
+ zone: this.zone.name,
428
+ runCount: this.runCount
429
+ };
430
+ }
431
+ }
432
+ const g = C("setTimeout"), y = C("Promise"), w = C("then");
433
+ let _ = [], R = !1, j;
434
+ function x(L) {
435
+ if (j || I[y] && (j = I[y].resolve(0)), j) {
436
+ let a = j[w];
437
+ a || (a = j.then), a.call(j, L);
438
+ } else
439
+ I[g](L, 0);
440
+ }
441
+ function X(L) {
442
+ oe === 0 && _.length === 0 && x(ne), L && _.push(L);
443
+ }
444
+ function ne() {
445
+ if (!R) {
446
+ for (R = !0; _.length; ) {
447
+ const L = _;
448
+ _ = [];
449
+ for (let a = 0; a < L.length; a++) {
450
+ const s = L[a];
451
+ try {
452
+ s.zone.runTask(s, null, null);
453
+ } catch (r) {
454
+ D.onUnhandledError(r);
455
+ }
456
+ }
457
+ }
458
+ D.microtaskDrainDone(), R = !1;
459
+ }
460
+ }
461
+ const re = { name: "NO ZONE" }, K = "notScheduled", v = "scheduling", p = "scheduled", A = "running", G = "canceling", J = "unknown", $ = "microTask", k = "macroTask", B = "eventTask", O = {}, D = {
462
+ symbol: C,
463
+ currentZoneFrame: () => E,
464
+ onUnhandledError: Y,
465
+ microtaskDrainDone: Y,
466
+ scheduleMicroTask: X,
467
+ showUncaughtError: () => !t[C("ignoreConsoleErrorUncaughtError")],
468
+ patchEventTarget: () => [],
469
+ patchOnProperties: Y,
470
+ patchMethod: () => Y,
471
+ bindArguments: () => [],
472
+ patchThen: () => Y,
473
+ patchMacroTask: () => Y,
474
+ patchEventPrototype: () => Y,
475
+ isIEOrEdge: () => !1,
476
+ getGlobalObjects: () => {
477
+ },
478
+ ObjectDefineProperty: () => Y,
479
+ ObjectGetOwnPropertyDescriptor: () => {
480
+ },
481
+ ObjectCreate: () => {
482
+ },
483
+ ArraySlice: () => [],
484
+ patchClass: () => Y,
485
+ wrapWithCurrentZone: () => Y,
486
+ filterProperties: () => [],
487
+ attachOriginToPatched: () => Y,
488
+ _redefineProperty: () => Y,
489
+ patchCallbacks: () => Y,
490
+ nativeScheduleMicroTask: x
491
+ };
492
+ let E = { parent: null, zone: new t(null, null) }, S = null, oe = 0;
493
+ function Y() {
494
+ }
495
+ return c("Zone", "Zone"), t;
496
+ }
497
+ function H() {
498
+ const e = globalThis, n = e[C("forceDuplicateZoneCheck")] === !0;
499
+ if (e.Zone && (n || typeof e.Zone.__symbol__ != "function"))
500
+ throw new Error("Zone already loaded.");
501
+ return e.Zone ??= V(), e.Zone;
502
+ }
503
+ const ee = Object.getOwnPropertyDescriptor, te = Object.defineProperty, ae = Object.getPrototypeOf, he = Object.create, Te = Array.prototype.slice, be = "addEventListener", Ne = "removeEventListener", Ie = C(be), Fe = C(Ne), _e = "true", ge = "false", Se = C("");
504
+ function Ae(e, n) {
505
+ return Zone.current.wrap(e, n);
506
+ }
507
+ function xe(e, n, c, t, i) {
508
+ return Zone.current.scheduleMacroTask(e, n, c, t, i);
509
+ }
510
+ const F = C, Pe = typeof window < "u", Ce = Pe ? window : void 0, Q = Pe && Ce || globalThis, yt = "removeAttribute";
511
+ function He(e, n) {
512
+ for (let c = e.length - 1; c >= 0; c--)
513
+ typeof e[c] == "function" && (e[c] = Ae(e[c], n + "_" + c));
514
+ return e;
515
+ }
516
+ function vt(e, n) {
517
+ const c = e.constructor.name;
518
+ for (let t = 0; t < n.length; t++) {
519
+ const i = n[t], u = e[i];
520
+ if (u) {
521
+ const d = ee(e, i);
522
+ if (!$e(d))
523
+ continue;
524
+ e[i] = ((g) => {
525
+ const y = function() {
526
+ return g.apply(this, He(arguments, c + "." + i));
527
+ };
528
+ return ke(y, g), y;
529
+ })(u);
530
+ }
531
+ }
532
+ }
533
+ function $e(e) {
534
+ return e ? e.writable === !1 ? !1 : !(typeof e.get == "function" && typeof e.set > "u") : !0;
535
+ }
536
+ const Be = typeof WorkerGlobalScope < "u" && self instanceof WorkerGlobalScope, Re = !("nw" in Q) && typeof Q.process < "u" && Q.process.toString() === "[object process]", Ge = !Re && !Be && !!(Pe && Ce.HTMLElement), Ye = typeof Q.process < "u" && Q.process.toString() === "[object process]" && !Be && !!(Pe && Ce.HTMLElement), je = {}, Tt = F("enable_beforeunload"), Ke = function(e) {
537
+ if (e = e || Q.event, !e)
538
+ return;
539
+ let n = je[e.type];
540
+ n || (n = je[e.type] = F("ON_PROPERTY" + e.type));
541
+ const c = this || e.target || Q, t = c[n];
542
+ let i;
543
+ if (Ge && c === Ce && e.type === "error") {
544
+ const u = e;
545
+ i = t && t.call(this, u.message, u.filename, u.lineno, u.colno, u.error), i === !0 && e.preventDefault();
546
+ } else
547
+ i = t && t.apply(this, arguments), // https://github.com/angular/angular/issues/47579
548
+ // https://www.w3.org/TR/2011/WD-html5-20110525/history.html#beforeunloadevent
549
+ // This is the only specific case we should check for. The spec defines that the
550
+ // `returnValue` attribute represents the message to show the user. When the event
551
+ // is created, this attribute must be set to the empty string.
552
+ e.type === "beforeunload" && // To prevent any breaking changes resulting from this change, given that
553
+ // it was already causing a significant number of failures in G3, we have hidden
554
+ // that behavior behind a global configuration flag. Consumers can enable this
555
+ // flag explicitly if they want the `beforeunload` event to be handled as defined
556
+ // in the specification.
557
+ Q[Tt] && // The IDL event definition is `attribute DOMString returnValue`, so we check whether
558
+ // `typeof result` is a string.
559
+ typeof i == "string" ? e.returnValue = i : i != null && !i && e.preventDefault();
560
+ return i;
561
+ };
562
+ function Je(e, n, c) {
563
+ let t = ee(e, n);
564
+ if (!t && c && ee(c, n) && (t = { enumerable: !0, configurable: !0 }), !t || !t.configurable)
565
+ return;
566
+ const i = F("on" + n + "patched");
567
+ if (e.hasOwnProperty(i) && e[i])
568
+ return;
569
+ delete t.writable, delete t.value;
570
+ const u = t.get, d = t.set, g = n.slice(2);
571
+ let y = je[g];
572
+ y || (y = je[g] = F("ON_PROPERTY" + g)), t.set = function(w) {
573
+ let _ = this;
574
+ !_ && e === Q && (_ = Q), _ && (typeof _[y] == "function" && _.removeEventListener(g, Ke), d?.call(_, null), _[y] = w, typeof w == "function" && _.addEventListener(g, Ke, !1));
575
+ }, t.get = function() {
576
+ let w = this;
577
+ if (!w && e === Q && (w = Q), !w)
578
+ return null;
579
+ const _ = w[y];
580
+ if (_)
581
+ return _;
582
+ if (u) {
583
+ let R = u.call(this);
584
+ if (R)
585
+ return t.set.call(this, R), typeof w[yt] == "function" && w.removeAttribute(n), R;
586
+ }
587
+ return null;
588
+ }, te(e, n, t), e[i] = !0;
589
+ }
590
+ function Qe(e, n, c) {
591
+ if (n)
592
+ for (let t = 0; t < n.length; t++)
593
+ Je(e, "on" + n[t], c);
594
+ else {
595
+ const t = [];
596
+ for (const i in e)
597
+ i.slice(0, 2) == "on" && t.push(i);
598
+ for (let i = 0; i < t.length; i++)
599
+ Je(e, t[i], c);
600
+ }
601
+ }
602
+ const le = F("originalInstance");
603
+ function Oe(e) {
604
+ const n = Q[e];
605
+ if (!n)
606
+ return;
607
+ Q[F(e)] = n, Q[e] = function() {
608
+ const i = He(arguments, e);
609
+ switch (i.length) {
610
+ case 0:
611
+ this[le] = new n();
612
+ break;
613
+ case 1:
614
+ this[le] = new n(i[0]);
615
+ break;
616
+ case 2:
617
+ this[le] = new n(i[0], i[1]);
618
+ break;
619
+ case 3:
620
+ this[le] = new n(i[0], i[1], i[2]);
621
+ break;
622
+ case 4:
623
+ this[le] = new n(i[0], i[1], i[2], i[3]);
624
+ break;
625
+ default:
626
+ throw new Error("Arg list too long.");
627
+ }
628
+ }, ke(Q[e], n);
629
+ const c = new n(function() {
630
+ });
631
+ let t;
632
+ for (t in c)
633
+ e === "XMLHttpRequest" && t === "responseBlob" || (function(i) {
634
+ typeof c[i] == "function" ? Q[e].prototype[i] = function() {
635
+ return this[le][i].apply(this[le], arguments);
636
+ } : te(Q[e].prototype, i, {
637
+ set: function(u) {
638
+ typeof u == "function" ? (this[le][i] = Ae(u, e + "." + i), ke(this[le][i], u)) : this[le][i] = u;
639
+ },
640
+ get: function() {
641
+ return this[le][i];
642
+ }
643
+ });
644
+ })(t);
645
+ for (t in n)
646
+ t !== "prototype" && n.hasOwnProperty(t) && (Q[e][t] = n[t]);
647
+ }
648
+ function de(e, n, c) {
649
+ let t = e;
650
+ for (; t && !t.hasOwnProperty(n); )
651
+ t = ae(t);
652
+ !t && e[n] && (t = e);
653
+ const i = F(n);
654
+ let u = null;
655
+ if (t && (!(u = t[i]) || !t.hasOwnProperty(i))) {
656
+ u = t[i] = t[n];
657
+ const d = t && ee(t, n);
658
+ if ($e(d)) {
659
+ const g = c(u, i, n);
660
+ t[n] = function() {
661
+ return g(this, arguments);
662
+ }, ke(t[n], u);
663
+ }
664
+ }
665
+ return u;
666
+ }
667
+ function bt(e, n, c) {
668
+ let t = null;
669
+ function i(u) {
670
+ const d = u.data;
671
+ return d.args[d.cbIdx] = function() {
672
+ u.invoke.apply(this, arguments);
673
+ }, t.apply(d.target, d.args), u;
674
+ }
675
+ t = de(e, n, (u) => function(d, g) {
676
+ const y = c(d, g);
677
+ return y.cbIdx >= 0 && typeof g[y.cbIdx] == "function" ? xe(y.name, g[y.cbIdx], y, i) : u.apply(d, g);
678
+ });
679
+ }
680
+ function ke(e, n) {
681
+ e[F("OriginalDelegate")] = n;
682
+ }
683
+ let et = !1, Ue = !1;
684
+ function Et() {
685
+ if (et)
686
+ return Ue;
687
+ et = !0;
688
+ try {
689
+ const e = Ce.navigator.userAgent;
690
+ (e.indexOf("MSIE ") !== -1 || e.indexOf("Trident/") !== -1 || e.indexOf("Edge/") !== -1) && (Ue = !0);
691
+ } catch {
692
+ }
693
+ return Ue;
694
+ }
695
+ function tt(e) {
696
+ return typeof e == "function";
697
+ }
698
+ function nt(e) {
699
+ return typeof e == "number";
700
+ }
701
+ const wt = {
702
+ useG: !0
703
+ }, ce = {}, rt = {}, ot = new RegExp("^" + Se + "(\\w+)(true|false)$"), st = F("propagationStopped");
704
+ function at(e, n) {
705
+ const c = (n ? n(e) : e) + ge, t = (n ? n(e) : e) + _e, i = Se + c, u = Se + t;
706
+ ce[e] = {}, ce[e][ge] = i, ce[e][_e] = u;
707
+ }
708
+ function Zt(e, n, c, t) {
709
+ const i = t && t.add || be, u = t && t.rm || Ne, d = t && t.listeners || "eventListeners", g = t && t.rmAll || "removeAllListeners", y = F(i), w = "." + i + ":", _ = "prependListener", R = "." + _ + ":", j = function(v, p, A) {
710
+ if (v.isRemoved)
711
+ return;
712
+ const G = v.callback;
713
+ typeof G == "object" && G.handleEvent && (v.callback = (k) => G.handleEvent(k), v.originalDelegate = G);
714
+ let J;
715
+ try {
716
+ v.invoke(v, p, [A]);
717
+ } catch (k) {
718
+ J = k;
719
+ }
720
+ const $ = v.options;
721
+ if ($ && typeof $ == "object" && $.once) {
722
+ const k = v.originalDelegate ? v.originalDelegate : v.callback;
723
+ p[u].call(p, A.type, k, $);
724
+ }
725
+ return J;
726
+ };
727
+ function x(v, p, A) {
728
+ if (p = p || e.event, !p)
729
+ return;
730
+ const G = v || p.target || e, J = G[ce[p.type][A ? _e : ge]];
731
+ if (J) {
732
+ const $ = [];
733
+ if (J.length === 1) {
734
+ const k = j(J[0], G, p);
735
+ k && $.push(k);
736
+ } else {
737
+ const k = J.slice();
738
+ for (let B = 0; B < k.length && !(p && p[st] === !0); B++) {
739
+ const O = j(k[B], G, p);
740
+ O && $.push(O);
741
+ }
742
+ }
743
+ if ($.length === 1)
744
+ throw $[0];
745
+ for (let k = 0; k < $.length; k++) {
746
+ const B = $[k];
747
+ n.nativeScheduleMicroTask(() => {
748
+ throw B;
749
+ });
750
+ }
751
+ }
752
+ }
753
+ const X = function(v) {
754
+ return x(this, v, !1);
755
+ }, ne = function(v) {
756
+ return x(this, v, !0);
757
+ };
758
+ function re(v, p) {
759
+ if (!v)
760
+ return !1;
761
+ let A = !0;
762
+ p && p.useG !== void 0 && (A = p.useG);
763
+ const G = p && p.vh;
764
+ let J = !0;
765
+ p && p.chkDup !== void 0 && (J = p.chkDup);
766
+ let $ = !1;
767
+ p && p.rt !== void 0 && ($ = p.rt);
768
+ let k = v;
769
+ for (; k && !k.hasOwnProperty(i); )
770
+ k = ae(k);
771
+ if (!k && v[i] && (k = v), !k || k[y])
772
+ return !1;
773
+ const B = p && p.eventNameToString, O = {}, D = k[y] = k[i], E = k[F(u)] = k[u], S = k[F(d)] = k[d], oe = k[F(g)] = k[g];
774
+ let Y;
775
+ p && p.prepend && (Y = k[F(p.prepend)] = k[p.prepend]);
776
+ function L(o, h) {
777
+ return h ? typeof o == "boolean" ? { capture: o, passive: !0 } : o ? typeof o == "object" && o.passive !== !1 ? { ...o, passive: !0 } : o : { passive: !0 } : o;
778
+ }
779
+ const a = function(o) {
780
+ if (!O.isExisting)
781
+ return D.call(O.target, O.eventName, O.capture ? ne : X, O.options);
782
+ }, s = function(o) {
783
+ if (!o.isRemoved) {
784
+ const h = ce[o.eventName];
785
+ let b;
786
+ h && (b = h[o.capture ? _e : ge]);
787
+ const Z = b && o.target[b];
788
+ if (Z) {
789
+ for (let m = 0; m < Z.length; m++)
790
+ if (Z[m] === o) {
791
+ Z.splice(m, 1), o.isRemoved = !0, o.removeAbortListener && (o.removeAbortListener(), o.removeAbortListener = null), Z.length === 0 && (o.allRemoved = !0, o.target[b] = null);
792
+ break;
793
+ }
794
+ }
795
+ }
796
+ if (o.allRemoved)
797
+ return E.call(o.target, o.eventName, o.capture ? ne : X, o.options);
798
+ }, r = function(o) {
799
+ return D.call(O.target, O.eventName, o.invoke, O.options);
800
+ }, T = function(o) {
801
+ return Y.call(O.target, O.eventName, o.invoke, O.options);
802
+ }, U = function(o) {
803
+ return E.call(o.target, o.eventName, o.invoke, o.options);
804
+ }, ie = A ? a : r, N = A ? s : U, me = function(o, h) {
805
+ const b = typeof h;
806
+ return b === "function" && o.callback === h || b === "object" && o.originalDelegate === h;
807
+ }, ve = p?.diff || me, se = Zone[F("UNPATCHED_EVENTS")], we = e[F("PASSIVE_EVENTS")];
808
+ function f(o) {
809
+ if (typeof o == "object" && o !== null) {
810
+ const h = { ...o };
811
+ return o.signal && (h.signal = o.signal), h;
812
+ }
813
+ return o;
814
+ }
815
+ const l = function(o, h, b, Z, m = !1, z = !1) {
816
+ return function() {
817
+ const M = this || e;
818
+ let P = arguments[0];
819
+ p && p.transferEventName && (P = p.transferEventName(P));
820
+ let W = arguments[1];
821
+ if (!W)
822
+ return o.apply(this, arguments);
823
+ if (Re && P === "uncaughtException")
824
+ return o.apply(this, arguments);
825
+ let q = !1;
826
+ if (typeof W != "function") {
827
+ if (!W.handleEvent)
828
+ return o.apply(this, arguments);
829
+ q = !0;
830
+ }
831
+ if (G && !G(o, W, M, arguments))
832
+ return;
833
+ const ye = !!we && we.indexOf(P) !== -1, fe = f(L(arguments[2], ye)), Ze = fe?.signal;
834
+ if (Ze?.aborted)
835
+ return;
836
+ if (se) {
837
+ for (let pe = 0; pe < se.length; pe++)
838
+ if (P === se[pe])
839
+ return ye ? o.call(M, P, W, fe) : o.apply(this, arguments);
840
+ }
841
+ const qe = fe ? typeof fe == "boolean" ? !0 : fe.capture : !1, ht = fe && typeof fe == "object" ? fe.once : !1, Ft = Zone.current;
842
+ let Ve = ce[P];
843
+ Ve || (at(P, B), Ve = ce[P]);
844
+ const ft = Ve[qe ? _e : ge];
845
+ let De = M[ft], pt = !1;
846
+ if (De) {
847
+ if (pt = !0, J) {
848
+ for (let pe = 0; pe < De.length; pe++)
849
+ if (ve(De[pe], W))
850
+ return;
851
+ }
852
+ } else
853
+ De = M[ft] = [];
854
+ let Me;
855
+ const _t = M.constructor.name, gt = rt[_t];
856
+ gt && (Me = gt[P]), Me || (Me = _t + h + (B ? B(P) : P)), O.options = fe, ht && (O.options.once = !1), O.target = M, O.capture = qe, O.eventName = P, O.isExisting = pt;
857
+ const ze = A ? wt : void 0;
858
+ ze && (ze.taskData = O), Ze && (O.options.signal = void 0);
859
+ const ue = Ft.scheduleEventTask(Me, W, ze, b, Z);
860
+ if (Ze) {
861
+ O.options.signal = Ze;
862
+ const pe = () => ue.zone.cancelTask(ue);
863
+ o.call(Ze, "abort", pe, { once: !0 }), ue.removeAbortListener = () => Ze.removeEventListener("abort", pe);
864
+ }
865
+ if (O.target = null, ze && (ze.taskData = null), ht && (O.options.once = !0), typeof ue.options != "boolean" && (ue.options = fe), ue.target = M, ue.capture = qe, ue.eventName = P, q && (ue.originalDelegate = W), z ? De.unshift(ue) : De.push(ue), m)
866
+ return M;
867
+ };
868
+ };
869
+ return k[i] = l(D, w, ie, N, $), Y && (k[_] = l(Y, R, T, N, $, !0)), k[u] = function() {
870
+ const o = this || e;
871
+ let h = arguments[0];
872
+ p && p.transferEventName && (h = p.transferEventName(h));
873
+ const b = arguments[2], Z = b ? typeof b == "boolean" ? !0 : b.capture : !1, m = arguments[1];
874
+ if (!m)
875
+ return E.apply(this, arguments);
876
+ if (G && !G(E, m, o, arguments))
877
+ return;
878
+ const z = ce[h];
879
+ let M;
880
+ z && (M = z[Z ? _e : ge]);
881
+ const P = M && o[M];
882
+ if (P)
883
+ for (let W = 0; W < P.length; W++) {
884
+ const q = P[W];
885
+ if (ve(q, m)) {
886
+ if (P.splice(W, 1), q.isRemoved = !0, P.length === 0 && (q.allRemoved = !0, o[M] = null, !Z && typeof h == "string")) {
887
+ const ye = Se + "ON_PROPERTY" + h;
888
+ o[ye] = null;
889
+ }
890
+ return q.zone.cancelTask(q), $ ? o : void 0;
891
+ }
892
+ }
893
+ return E.apply(this, arguments);
894
+ }, k[d] = function() {
895
+ const o = this || e;
896
+ let h = arguments[0];
897
+ p && p.transferEventName && (h = p.transferEventName(h));
898
+ const b = [], Z = it(o, B ? B(h) : h);
899
+ for (let m = 0; m < Z.length; m++) {
900
+ const z = Z[m];
901
+ let M = z.originalDelegate ? z.originalDelegate : z.callback;
902
+ b.push(M);
903
+ }
904
+ return b;
905
+ }, k[g] = function() {
906
+ const o = this || e;
907
+ let h = arguments[0];
908
+ if (h) {
909
+ p && p.transferEventName && (h = p.transferEventName(h));
910
+ const b = ce[h];
911
+ if (b) {
912
+ const Z = b[ge], m = b[_e], z = o[Z], M = o[m];
913
+ if (z) {
914
+ const P = z.slice();
915
+ for (let W = 0; W < P.length; W++) {
916
+ const q = P[W];
917
+ let ye = q.originalDelegate ? q.originalDelegate : q.callback;
918
+ this[u].call(this, h, ye, q.options);
919
+ }
920
+ }
921
+ if (M) {
922
+ const P = M.slice();
923
+ for (let W = 0; W < P.length; W++) {
924
+ const q = P[W];
925
+ let ye = q.originalDelegate ? q.originalDelegate : q.callback;
926
+ this[u].call(this, h, ye, q.options);
927
+ }
928
+ }
929
+ }
930
+ } else {
931
+ const b = Object.keys(o);
932
+ for (let Z = 0; Z < b.length; Z++) {
933
+ const m = b[Z], z = ot.exec(m);
934
+ let M = z && z[1];
935
+ M && M !== "removeListener" && this[g].call(this, M);
936
+ }
937
+ this[g].call(this, "removeListener");
938
+ }
939
+ if ($)
940
+ return this;
941
+ }, ke(k[i], D), ke(k[u], E), oe && ke(k[g], oe), S && ke(k[d], S), !0;
942
+ }
943
+ let K = [];
944
+ for (let v = 0; v < c.length; v++)
945
+ K[v] = re(c[v], t);
946
+ return K;
947
+ }
948
+ function it(e, n) {
949
+ if (!n) {
950
+ const u = [];
951
+ for (let d in e) {
952
+ const g = ot.exec(d);
953
+ let y = g && g[1];
954
+ if (y && (!n || y === n)) {
955
+ const w = e[d];
956
+ if (w)
957
+ for (let _ = 0; _ < w.length; _++)
958
+ u.push(w[_]);
959
+ }
960
+ }
961
+ return u;
962
+ }
963
+ let c = ce[n];
964
+ c || (at(n), c = ce[n]);
965
+ const t = e[c[ge]], i = e[c[_e]];
966
+ return t ? i ? t.concat(i) : t.slice() : i ? i.slice() : [];
967
+ }
968
+ function Dt(e, n) {
969
+ const c = e.Event;
970
+ c && c.prototype && n.patchMethod(c.prototype, "stopImmediatePropagation", (t) => function(i, u) {
971
+ i[st] = !0, t && t.apply(i, u);
972
+ });
973
+ }
974
+ function St(e, n) {
975
+ n.patchMethod(e, "queueMicrotask", (c) => function(t, i) {
976
+ Zone.current.scheduleMicroTask("queueMicrotask", i[0]);
977
+ });
978
+ }
979
+ const Le = F("zoneTask");
980
+ function Ee(e, n, c, t) {
981
+ let i = null, u = null;
982
+ n += t, c += t;
983
+ const d = {};
984
+ function g(w) {
985
+ const _ = w.data;
986
+ _.args[0] = function() {
987
+ return w.invoke.apply(this, arguments);
988
+ };
989
+ const R = i.apply(e, _.args);
990
+ return nt(R) ? _.handleId = R : (_.handle = R, _.isRefreshable = tt(R.refresh)), w;
991
+ }
992
+ function y(w) {
993
+ const { handle: _, handleId: R } = w.data;
994
+ return u.call(e, _ ?? R);
995
+ }
996
+ i = de(e, n, (w) => function(_, R) {
997
+ if (tt(R[0])) {
998
+ const j = {
999
+ isRefreshable: !1,
1000
+ isPeriodic: t === "Interval",
1001
+ delay: t === "Timeout" || t === "Interval" ? R[1] || 0 : void 0,
1002
+ args: R
1003
+ }, x = R[0];
1004
+ R[0] = function() {
1005
+ try {
1006
+ return x.apply(this, arguments);
1007
+ } finally {
1008
+ const { handle: p, handleId: A, isPeriodic: G, isRefreshable: J } = j;
1009
+ !G && !J && (A ? delete d[A] : p && (p[Le] = null));
1010
+ }
1011
+ };
1012
+ const X = xe(n, R[0], j, g, y);
1013
+ if (!X)
1014
+ return X;
1015
+ const { handleId: ne, handle: re, isRefreshable: K, isPeriodic: v } = X.data;
1016
+ if (ne)
1017
+ d[ne] = X;
1018
+ else if (re && (re[Le] = X, K && !v)) {
1019
+ const p = re.refresh;
1020
+ re.refresh = function() {
1021
+ const { zone: A, state: G } = X;
1022
+ return G === "notScheduled" ? (X._state = "scheduled", A._updateTaskCount(X, 1)) : G === "running" && (X._state = "scheduling"), p.call(this);
1023
+ };
1024
+ }
1025
+ return re ?? ne ?? X;
1026
+ } else
1027
+ return w.apply(e, R);
1028
+ }), u = de(e, c, (w) => function(_, R) {
1029
+ const j = R[0];
1030
+ let x;
1031
+ nt(j) ? (x = d[j], delete d[j]) : (x = j?.[Le], x ? j[Le] = null : x = j), x?.type ? x.cancelFn && x.zone.cancelTask(x) : w.apply(e, R);
1032
+ });
1033
+ }
1034
+ function Ct(e, n) {
1035
+ const { isBrowser: c, isMix: t } = n.getGlobalObjects();
1036
+ if (!c && !t || !e.customElements || !("customElements" in e))
1037
+ return;
1038
+ const i = [
1039
+ "connectedCallback",
1040
+ "disconnectedCallback",
1041
+ "adoptedCallback",
1042
+ "attributeChangedCallback",
1043
+ "formAssociatedCallback",
1044
+ "formDisabledCallback",
1045
+ "formResetCallback",
1046
+ "formStateRestoreCallback"
1047
+ ];
1048
+ n.patchCallbacks(n, e.customElements, "customElements", "define", i);
1049
+ }
1050
+ function Ot(e, n) {
1051
+ if (Zone[n.symbol("patchEventTarget")])
1052
+ return;
1053
+ const { eventNames: c, zoneSymbolEventNames: t, TRUE_STR: i, FALSE_STR: u, ZONE_SYMBOL_PREFIX: d } = n.getGlobalObjects();
1054
+ for (let y = 0; y < c.length; y++) {
1055
+ const w = c[y], _ = w + u, R = w + i, j = d + _, x = d + R;
1056
+ t[w] = {}, t[w][u] = j, t[w][i] = x;
1057
+ }
1058
+ const g = e.EventTarget;
1059
+ if (!(!g || !g.prototype))
1060
+ return n.patchEventTarget(e, n, [g && g.prototype]), !0;
1061
+ }
1062
+ function zt(e, n) {
1063
+ n.patchEventPrototype(e, n);
1064
+ }
1065
+ function ct(e, n, c) {
1066
+ if (!c || c.length === 0)
1067
+ return n;
1068
+ const t = c.filter((u) => u.target === e);
1069
+ if (t.length === 0)
1070
+ return n;
1071
+ const i = t[0].ignoreProperties;
1072
+ return n.filter((u) => i.indexOf(u) === -1);
1073
+ }
1074
+ function lt(e, n, c, t) {
1075
+ if (!e)
1076
+ return;
1077
+ const i = ct(e, n, c);
1078
+ Qe(e, i, t);
1079
+ }
1080
+ function We(e) {
1081
+ return Object.getOwnPropertyNames(e).filter((n) => n.startsWith("on") && n.length > 2).map((n) => n.substring(2));
1082
+ }
1083
+ function Pt(e, n) {
1084
+ if (Re && !Ye || Zone[e.symbol("patchEvents")])
1085
+ return;
1086
+ const c = n.__Zone_ignore_on_properties;
1087
+ let t = [];
1088
+ if (Ge) {
1089
+ const i = window;
1090
+ t = t.concat([
1091
+ "Document",
1092
+ "SVGElement",
1093
+ "Element",
1094
+ "HTMLElement",
1095
+ "HTMLBodyElement",
1096
+ "HTMLMediaElement",
1097
+ "HTMLFrameSetElement",
1098
+ "HTMLFrameElement",
1099
+ "HTMLIFrameElement",
1100
+ "HTMLMarqueeElement",
1101
+ "Worker"
1102
+ ]);
1103
+ const u = [];
1104
+ lt(i, We(i), c && c.concat(u), ae(i));
1105
+ }
1106
+ t = t.concat([
1107
+ "XMLHttpRequest",
1108
+ "XMLHttpRequestEventTarget",
1109
+ "IDBIndex",
1110
+ "IDBRequest",
1111
+ "IDBOpenDBRequest",
1112
+ "IDBDatabase",
1113
+ "IDBTransaction",
1114
+ "IDBCursor",
1115
+ "WebSocket"
1116
+ ]);
1117
+ for (let i = 0; i < t.length; i++) {
1118
+ const u = n[t[i]];
1119
+ u?.prototype && lt(u.prototype, We(u.prototype), c);
1120
+ }
1121
+ }
1122
+ function Rt(e) {
1123
+ e.__load_patch("legacy", (n) => {
1124
+ const c = n[e.__symbol__("legacyPatch")];
1125
+ c && c();
1126
+ }), e.__load_patch("timers", (n) => {
1127
+ const c = "clear";
1128
+ Ee(n, "set", c, "Timeout"), Ee(n, "set", c, "Interval"), Ee(n, "set", c, "Immediate");
1129
+ }), e.__load_patch("requestAnimationFrame", (n) => {
1130
+ Ee(n, "request", "cancel", "AnimationFrame"), Ee(n, "mozRequest", "mozCancel", "AnimationFrame"), Ee(n, "webkitRequest", "webkitCancel", "AnimationFrame");
1131
+ }), e.__load_patch("blocking", (n, c) => {
1132
+ const t = ["alert", "prompt", "confirm"];
1133
+ for (let i = 0; i < t.length; i++) {
1134
+ const u = t[i];
1135
+ de(n, u, (d, g, y) => function(w, _) {
1136
+ return c.current.run(d, n, _, y);
1137
+ });
1138
+ }
1139
+ }), e.__load_patch("EventTarget", (n, c, t) => {
1140
+ zt(n, t), Ot(n, t);
1141
+ const i = n.XMLHttpRequestEventTarget;
1142
+ i && i.prototype && t.patchEventTarget(n, t, [i.prototype]);
1143
+ }), e.__load_patch("MutationObserver", (n, c, t) => {
1144
+ Oe("MutationObserver"), Oe("WebKitMutationObserver");
1145
+ }), e.__load_patch("IntersectionObserver", (n, c, t) => {
1146
+ Oe("IntersectionObserver");
1147
+ }), e.__load_patch("FileReader", (n, c, t) => {
1148
+ Oe("FileReader");
1149
+ }), e.__load_patch("on_property", (n, c, t) => {
1150
+ Pt(t, n);
1151
+ }), e.__load_patch("customElements", (n, c, t) => {
1152
+ Ct(n, t);
1153
+ }), e.__load_patch("XHR", (n, c) => {
1154
+ w(n);
1155
+ const t = F("xhrTask"), i = F("xhrSync"), u = F("xhrListener"), d = F("xhrScheduled"), g = F("xhrURL"), y = F("xhrErrorBeforeScheduled");
1156
+ function w(_) {
1157
+ const R = _.XMLHttpRequest;
1158
+ if (!R)
1159
+ return;
1160
+ const j = R.prototype;
1161
+ function x(D) {
1162
+ return D[t];
1163
+ }
1164
+ let X = j[Ie], ne = j[Fe];
1165
+ if (!X) {
1166
+ const D = _.XMLHttpRequestEventTarget;
1167
+ if (D) {
1168
+ const E = D.prototype;
1169
+ X = E[Ie], ne = E[Fe];
1170
+ }
1171
+ }
1172
+ const re = "readystatechange", K = "scheduled";
1173
+ function v(D) {
1174
+ const E = D.data, S = E.target;
1175
+ S[d] = !1, S[y] = !1;
1176
+ const oe = S[u];
1177
+ X || (X = S[Ie], ne = S[Fe]), oe && ne.call(S, re, oe);
1178
+ const Y = S[u] = () => {
1179
+ if (S.readyState === S.DONE)
1180
+ if (!E.aborted && S[d] && D.state === K) {
1181
+ const L = S[c.__symbol__("loadfalse")];
1182
+ if (S.status !== 0 && L && L.length > 0) {
1183
+ const a = D.invoke;
1184
+ D.invoke = function() {
1185
+ const s = S[c.__symbol__("loadfalse")];
1186
+ for (let r = 0; r < s.length; r++)
1187
+ s[r] === D && s.splice(r, 1);
1188
+ !E.aborted && D.state === K && a.call(D);
1189
+ }, L.push(D);
1190
+ } else
1191
+ D.invoke();
1192
+ } else !E.aborted && S[d] === !1 && (S[y] = !0);
1193
+ };
1194
+ return X.call(S, re, Y), S[t] || (S[t] = D), B.apply(S, E.args), S[d] = !0, D;
1195
+ }
1196
+ function p() {
1197
+ }
1198
+ function A(D) {
1199
+ const E = D.data;
1200
+ return E.aborted = !0, O.apply(E.target, E.args);
1201
+ }
1202
+ const G = de(j, "open", () => function(D, E) {
1203
+ return D[i] = E[2] == !1, D[g] = E[1], G.apply(D, E);
1204
+ }), J = "XMLHttpRequest.send", $ = F("fetchTaskAborting"), k = F("fetchTaskScheduling"), B = de(j, "send", () => function(D, E) {
1205
+ if (c.current[k] === !0 || D[i])
1206
+ return B.apply(D, E);
1207
+ {
1208
+ const S = {
1209
+ target: D,
1210
+ url: D[g],
1211
+ isPeriodic: !1,
1212
+ args: E,
1213
+ aborted: !1
1214
+ }, oe = xe(J, p, S, v, A);
1215
+ D && D[y] === !0 && !S.aborted && oe.state === K && oe.invoke();
1216
+ }
1217
+ }), O = de(j, "abort", () => function(D, E) {
1218
+ const S = x(D);
1219
+ if (S && typeof S.type == "string") {
1220
+ if (S.cancelFn == null || S.data && S.data.aborted)
1221
+ return;
1222
+ S.zone.cancelTask(S);
1223
+ } else if (c.current[$] === !0)
1224
+ return O.apply(D, E);
1225
+ });
1226
+ }
1227
+ }), e.__load_patch("geolocation", (n) => {
1228
+ n.navigator && n.navigator.geolocation && vt(n.navigator.geolocation, ["getCurrentPosition", "watchPosition"]);
1229
+ }), e.__load_patch("PromiseRejectionEvent", (n, c) => {
1230
+ function t(i) {
1231
+ return function(u) {
1232
+ it(n, i).forEach((d) => {
1233
+ const g = n.PromiseRejectionEvent;
1234
+ if (g) {
1235
+ const y = new g(i, {
1236
+ promise: u.promise,
1237
+ reason: u.rejection
1238
+ });
1239
+ d.invoke(y);
1240
+ }
1241
+ });
1242
+ };
1243
+ }
1244
+ n.PromiseRejectionEvent && (c[F("unhandledPromiseRejectionHandler")] = t("unhandledrejection"), c[F("rejectionHandledHandler")] = t("rejectionhandled"));
1245
+ }), e.__load_patch("queueMicrotask", (n, c, t) => {
1246
+ St(n, t);
1247
+ });
1248
+ }
1249
+ function jt(e) {
1250
+ e.__load_patch("ZoneAwarePromise", (n, c, t) => {
1251
+ const i = Object.getOwnPropertyDescriptor, u = Object.defineProperty;
1252
+ function d(f) {
1253
+ return f && f.toString === Object.prototype.toString ? (f.constructor && f.constructor.name || "") + ": " + JSON.stringify(f) : f ? f.toString() : Object.prototype.toString.call(f);
1254
+ }
1255
+ const g = t.symbol, y = [], w = n[g("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")] !== !1, _ = g("Promise"), R = g("then"), j = "__creationTrace__";
1256
+ t.onUnhandledError = (f) => {
1257
+ if (t.showUncaughtError()) {
1258
+ const l = f && f.rejection;
1259
+ l ? console.error("Unhandled Promise rejection:", l instanceof Error ? l.message : l, "; Zone:", f.zone.name, "; Task:", f.task && f.task.source, "; Value:", l, l instanceof Error ? l.stack : void 0) : console.error(f);
1260
+ }
1261
+ }, t.microtaskDrainDone = () => {
1262
+ for (; y.length; ) {
1263
+ const f = y.shift();
1264
+ try {
1265
+ f.zone.runGuarded(() => {
1266
+ throw f.throwOriginal ? f.rejection : f;
1267
+ });
1268
+ } catch (l) {
1269
+ X(l);
1270
+ }
1271
+ }
1272
+ };
1273
+ const x = g("unhandledPromiseRejectionHandler");
1274
+ function X(f) {
1275
+ t.onUnhandledError(f);
1276
+ try {
1277
+ const l = c[x];
1278
+ typeof l == "function" && l.call(this, f);
1279
+ } catch {
1280
+ }
1281
+ }
1282
+ function ne(f) {
1283
+ return f && typeof f.then == "function";
1284
+ }
1285
+ function re(f) {
1286
+ return f;
1287
+ }
1288
+ function K(f) {
1289
+ return N.reject(f);
1290
+ }
1291
+ const v = g("state"), p = g("value"), A = g("finally"), G = g("parentPromiseValue"), J = g("parentPromiseState"), $ = "Promise.then", k = null, B = !0, O = !1, D = 0;
1292
+ function E(f, l) {
1293
+ return (o) => {
1294
+ try {
1295
+ L(f, l, o);
1296
+ } catch (h) {
1297
+ L(f, !1, h);
1298
+ }
1299
+ };
1300
+ }
1301
+ const S = function() {
1302
+ let f = !1;
1303
+ return function(l) {
1304
+ return function() {
1305
+ f || (f = !0, l.apply(null, arguments));
1306
+ };
1307
+ };
1308
+ }, oe = "Promise resolved with itself", Y = g("currentTaskTrace");
1309
+ function L(f, l, o) {
1310
+ const h = S();
1311
+ if (f === o)
1312
+ throw new TypeError(oe);
1313
+ if (f[v] === k) {
1314
+ let b = null;
1315
+ try {
1316
+ (typeof o == "object" || typeof o == "function") && (b = o && o.then);
1317
+ } catch (Z) {
1318
+ return h(() => {
1319
+ L(f, !1, Z);
1320
+ })(), f;
1321
+ }
1322
+ if (l !== O && o instanceof N && o.hasOwnProperty(v) && o.hasOwnProperty(p) && o[v] !== k)
1323
+ s(o), L(f, o[v], o[p]);
1324
+ else if (l !== O && typeof b == "function")
1325
+ try {
1326
+ b.call(o, h(E(f, l)), h(E(f, !1)));
1327
+ } catch (Z) {
1328
+ h(() => {
1329
+ L(f, !1, Z);
1330
+ })();
1331
+ }
1332
+ else {
1333
+ f[v] = l;
1334
+ const Z = f[p];
1335
+ if (f[p] = o, f[A] === A && l === B && (f[v] = f[J], f[p] = f[G]), l === O && o instanceof Error) {
1336
+ const m = c.currentTask && c.currentTask.data && c.currentTask.data[j];
1337
+ m && u(o, Y, {
1338
+ configurable: !0,
1339
+ enumerable: !1,
1340
+ writable: !0,
1341
+ value: m
1342
+ });
1343
+ }
1344
+ for (let m = 0; m < Z.length; )
1345
+ r(f, Z[m++], Z[m++], Z[m++], Z[m++]);
1346
+ if (Z.length == 0 && l == O) {
1347
+ f[v] = D;
1348
+ let m = o;
1349
+ try {
1350
+ throw new Error("Uncaught (in promise): " + d(o) + (o && o.stack ? `
1351
+ ` + o.stack : ""));
1352
+ } catch (z) {
1353
+ m = z;
1354
+ }
1355
+ w && (m.throwOriginal = !0), m.rejection = o, m.promise = f, m.zone = c.current, m.task = c.currentTask, y.push(m), t.scheduleMicroTask();
1356
+ }
1357
+ }
1358
+ }
1359
+ return f;
1360
+ }
1361
+ const a = g("rejectionHandledHandler");
1362
+ function s(f) {
1363
+ if (f[v] === D) {
1364
+ try {
1365
+ const l = c[a];
1366
+ l && typeof l == "function" && l.call(this, { rejection: f[p], promise: f });
1367
+ } catch {
1368
+ }
1369
+ f[v] = O;
1370
+ for (let l = 0; l < y.length; l++)
1371
+ f === y[l].promise && y.splice(l, 1);
1372
+ }
1373
+ }
1374
+ function r(f, l, o, h, b) {
1375
+ s(f);
1376
+ const Z = f[v], m = Z ? typeof h == "function" ? h : re : typeof b == "function" ? b : K;
1377
+ l.scheduleMicroTask($, () => {
1378
+ try {
1379
+ const z = f[p], M = !!o && A === o[A];
1380
+ M && (o[G] = z, o[J] = Z);
1381
+ const P = l.run(m, void 0, M && m !== K && m !== re ? [] : [z]);
1382
+ L(o, !0, P);
1383
+ } catch (z) {
1384
+ L(o, !1, z);
1385
+ }
1386
+ }, o);
1387
+ }
1388
+ const T = "function ZoneAwarePromise() { [native code] }", U = function() {
1389
+ }, ie = n.AggregateError;
1390
+ class N {
1391
+ static toString() {
1392
+ return T;
1393
+ }
1394
+ static resolve(l) {
1395
+ return l instanceof N ? l : L(new this(null), B, l);
1396
+ }
1397
+ static reject(l) {
1398
+ return L(new this(null), O, l);
1399
+ }
1400
+ static withResolvers() {
1401
+ const l = {};
1402
+ return l.promise = new N((o, h) => {
1403
+ l.resolve = o, l.reject = h;
1404
+ }), l;
1405
+ }
1406
+ static any(l) {
1407
+ if (!l || typeof l[Symbol.iterator] != "function")
1408
+ return Promise.reject(new ie([], "All promises were rejected"));
1409
+ const o = [];
1410
+ let h = 0;
1411
+ try {
1412
+ for (let m of l)
1413
+ h++, o.push(N.resolve(m));
1414
+ } catch {
1415
+ return Promise.reject(new ie([], "All promises were rejected"));
1416
+ }
1417
+ if (h === 0)
1418
+ return Promise.reject(new ie([], "All promises were rejected"));
1419
+ let b = !1;
1420
+ const Z = [];
1421
+ return new N((m, z) => {
1422
+ for (let M = 0; M < o.length; M++)
1423
+ o[M].then((P) => {
1424
+ b || (b = !0, m(P));
1425
+ }, (P) => {
1426
+ Z.push(P), h--, h === 0 && (b = !0, z(new ie(Z, "All promises were rejected")));
1427
+ });
1428
+ });
1429
+ }
1430
+ static race(l) {
1431
+ let o, h, b = new this((z, M) => {
1432
+ o = z, h = M;
1433
+ });
1434
+ function Z(z) {
1435
+ o(z);
1436
+ }
1437
+ function m(z) {
1438
+ h(z);
1439
+ }
1440
+ for (let z of l)
1441
+ ne(z) || (z = this.resolve(z)), z.then(Z, m);
1442
+ return b;
1443
+ }
1444
+ static all(l) {
1445
+ return N.allWithCallback(l);
1446
+ }
1447
+ static allSettled(l) {
1448
+ return (this && this.prototype instanceof N ? this : N).allWithCallback(l, {
1449
+ thenCallback: (o) => ({ status: "fulfilled", value: o }),
1450
+ errorCallback: (o) => ({ status: "rejected", reason: o })
1451
+ });
1452
+ }
1453
+ static allWithCallback(l, o) {
1454
+ let h, b, Z = new this((P, W) => {
1455
+ h = P, b = W;
1456
+ }), m = 2, z = 0;
1457
+ const M = [];
1458
+ for (let P of l) {
1459
+ ne(P) || (P = this.resolve(P));
1460
+ const W = z;
1461
+ try {
1462
+ P.then((q) => {
1463
+ M[W] = o ? o.thenCallback(q) : q, m--, m === 0 && h(M);
1464
+ }, (q) => {
1465
+ o ? (M[W] = o.errorCallback(q), m--, m === 0 && h(M)) : b(q);
1466
+ });
1467
+ } catch (q) {
1468
+ b(q);
1469
+ }
1470
+ m++, z++;
1471
+ }
1472
+ return m -= 2, m === 0 && h(M), Z;
1473
+ }
1474
+ constructor(l) {
1475
+ const o = this;
1476
+ if (!(o instanceof N))
1477
+ throw new Error("Must be an instanceof Promise.");
1478
+ o[v] = k, o[p] = [];
1479
+ try {
1480
+ const h = S();
1481
+ l && l(h(E(o, B)), h(E(o, O)));
1482
+ } catch (h) {
1483
+ L(o, !1, h);
1484
+ }
1485
+ }
1486
+ get [Symbol.toStringTag]() {
1487
+ return "Promise";
1488
+ }
1489
+ get [Symbol.species]() {
1490
+ return N;
1491
+ }
1492
+ then(l, o) {
1493
+ let h = this.constructor?.[Symbol.species];
1494
+ (!h || typeof h != "function") && (h = this.constructor || N);
1495
+ const b = new h(U), Z = c.current;
1496
+ return this[v] == k ? this[p].push(Z, b, l, o) : r(this, Z, b, l, o), b;
1497
+ }
1498
+ catch(l) {
1499
+ return this.then(null, l);
1500
+ }
1501
+ finally(l) {
1502
+ let o = this.constructor?.[Symbol.species];
1503
+ (!o || typeof o != "function") && (o = N);
1504
+ const h = new o(U);
1505
+ h[A] = A;
1506
+ const b = c.current;
1507
+ return this[v] == k ? this[p].push(b, h, l, l) : r(this, b, h, l, l), h;
1508
+ }
1509
+ }
1510
+ N.resolve = N.resolve, N.reject = N.reject, N.race = N.race, N.all = N.all;
1511
+ const me = n[_] = n.Promise;
1512
+ n.Promise = N;
1513
+ const ve = g("thenPatched");
1514
+ function se(f) {
1515
+ const l = f.prototype, o = i(l, "then");
1516
+ if (o && (o.writable === !1 || !o.configurable))
1517
+ return;
1518
+ const h = l.then;
1519
+ l[R] = h, f.prototype.then = function(b, Z) {
1520
+ return new N((m, z) => {
1521
+ h.call(this, m, z);
1522
+ }).then(b, Z);
1523
+ }, f[ve] = !0;
1524
+ }
1525
+ t.patchThen = se;
1526
+ function we(f) {
1527
+ return function(l, o) {
1528
+ let h = f.apply(l, o);
1529
+ if (h instanceof N)
1530
+ return h;
1531
+ let b = h.constructor;
1532
+ return b[ve] || se(b), h;
1533
+ };
1534
+ }
1535
+ return me && (se(me), de(n, "fetch", (f) => we(f))), Promise[c.__symbol__("uncaughtPromiseErrors")] = y, N;
1536
+ });
1537
+ }
1538
+ function Lt(e) {
1539
+ e.__load_patch("toString", (n) => {
1540
+ const c = Function.prototype.toString, t = F("OriginalDelegate"), i = F("Promise"), u = F("Error"), d = function() {
1541
+ if (typeof this == "function") {
1542
+ const w = this[t];
1543
+ if (w)
1544
+ return typeof w == "function" ? c.call(w) : Object.prototype.toString.call(w);
1545
+ if (this === Promise) {
1546
+ const _ = n[i];
1547
+ if (_)
1548
+ return c.call(_);
1549
+ }
1550
+ if (this === Error) {
1551
+ const _ = n[u];
1552
+ if (_)
1553
+ return c.call(_);
1554
+ }
1555
+ }
1556
+ return c.call(this);
1557
+ };
1558
+ d[t] = c, Function.prototype.toString = d;
1559
+ const g = Object.prototype.toString, y = "[object Promise]";
1560
+ Object.prototype.toString = function() {
1561
+ return typeof Promise == "function" && this instanceof Promise ? y : g.call(this);
1562
+ };
1563
+ });
1564
+ }
1565
+ function Mt(e, n, c, t, i) {
1566
+ const u = Zone.__symbol__(t);
1567
+ if (n[u])
1568
+ return;
1569
+ const d = n[u] = n[t];
1570
+ n[t] = function(g, y, w) {
1571
+ return y && y.prototype && i.forEach(function(_) {
1572
+ const R = `${c}.${t}::` + _, j = y.prototype;
1573
+ try {
1574
+ if (j.hasOwnProperty(_)) {
1575
+ const x = e.ObjectGetOwnPropertyDescriptor(j, _);
1576
+ x && x.value ? (x.value = e.wrapWithCurrentZone(x.value, R), e._redefineProperty(y.prototype, _, x)) : j[_] && (j[_] = e.wrapWithCurrentZone(j[_], R));
1577
+ } else j[_] && (j[_] = e.wrapWithCurrentZone(j[_], R));
1578
+ } catch {
1579
+ }
1580
+ }), d.call(n, g, y, w);
1581
+ }, e.attachOriginToPatched(n[t], d);
1582
+ }
1583
+ function Nt(e) {
1584
+ e.__load_patch("util", (n, c, t) => {
1585
+ const i = We(n);
1586
+ t.patchOnProperties = Qe, t.patchMethod = de, t.bindArguments = He, t.patchMacroTask = bt;
1587
+ const u = c.__symbol__("BLACK_LISTED_EVENTS"), d = c.__symbol__("UNPATCHED_EVENTS");
1588
+ n[d] && (n[u] = n[d]), n[u] && (c[u] = c[d] = n[u]), t.patchEventPrototype = Dt, t.patchEventTarget = Zt, t.isIEOrEdge = Et, t.ObjectDefineProperty = te, t.ObjectGetOwnPropertyDescriptor = ee, t.ObjectCreate = he, t.ArraySlice = Te, t.patchClass = Oe, t.wrapWithCurrentZone = Ae, t.filterProperties = ct, t.attachOriginToPatched = ke, t._redefineProperty = Object.defineProperty, t.patchCallbacks = Mt, t.getGlobalObjects = () => ({
1589
+ globalSources: rt,
1590
+ zoneSymbolEventNames: ce,
1591
+ eventNames: i,
1592
+ isBrowser: Ge,
1593
+ isMix: Ye,
1594
+ isNode: Re,
1595
+ TRUE_STR: _e,
1596
+ FALSE_STR: ge,
1597
+ ZONE_SYMBOL_PREFIX: Se,
1598
+ ADD_EVENT_LISTENER_STR: be,
1599
+ REMOVE_EVENT_LISTENER_STR: Ne
1600
+ });
1601
+ });
1602
+ }
1603
+ function It(e) {
1604
+ jt(e), Lt(e), Nt(e);
1605
+ }
1606
+ const ut = H();
1607
+ return It(ut), Rt(ut), kt;
1608
+ }
1609
+ xt();
1610
+ export {
1611
+ Gt as ZoneContextManager
1612
+ };
1613
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQ2s5N0VPQ0EtIX57MDBkfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFEgYXMgUWkgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcblxuZnVuY3Rpb24geHQoaikge1xuICByZXR1cm4gaiA9PT0gdm9pZCAwICYmIChqID0ge30pLCB0eXBlb2Ygai5hZGRFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygai5yZW1vdmVFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIjtcbn1cbnZhciBFdCA9IFwiT1RfWk9ORV9DT05URVhUXCIsIHp0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBqKCkge1xuICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlLCB0aGlzLl96b25lQ291bnRlciA9IDA7XG4gICAgfVxuICAgIHJldHVybiBqLnByb3RvdHlwZS5fYWN0aXZlQ29udGV4dEZyb21ab25lID0gZnVuY3Rpb24oUykge1xuICAgICAgcmV0dXJuIFMgJiYgUy5nZXQoRXQpIHx8IFFpO1xuICAgIH0sIGoucHJvdG90eXBlLl9iaW5kRnVuY3Rpb24gPSBmdW5jdGlvbihTLCBCKSB7XG4gICAgICB2YXIgeiA9IHRoaXMsIGVlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGZvciAodmFyIHRlID0gdGhpcywgaWUgPSBbXSwgZmUgPSAwOyBmZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGZlKyspXG4gICAgICAgICAgaWVbZmVdID0gYXJndW1lbnRzW2ZlXTtcbiAgICAgICAgcmV0dXJuIHoud2l0aChTLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gQi5hcHBseSh0ZSwgaWUpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLCBcImxlbmd0aFwiLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IEIubGVuZ3RoXG4gICAgICB9KSwgZWU7XG4gICAgfSwgai5wcm90b3R5cGUuX2JpbmRMaXN0ZW5lciA9IGZ1bmN0aW9uKFMsIEIpIHtcbiAgICAgIHZhciB6ID0gQjtcbiAgICAgIHJldHVybiB6Ll9fb3RfbGlzdGVuZXJzICE9PSB2b2lkIDAgfHwgKHouX19vdF9saXN0ZW5lcnMgPSB7fSwgdHlwZW9mIHouYWRkRXZlbnRMaXN0ZW5lciA9PSBcImZ1bmN0aW9uXCIgJiYgKHouYWRkRXZlbnRMaXN0ZW5lciA9IHRoaXMuX3BhdGNoQWRkRXZlbnRMaXN0ZW5lcih6LCB6LmFkZEV2ZW50TGlzdGVuZXIsIFMpKSwgdHlwZW9mIHoucmVtb3ZlRXZlbnRMaXN0ZW5lciA9PSBcImZ1bmN0aW9uXCIgJiYgKHoucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHRoaXMuX3BhdGNoUmVtb3ZlRXZlbnRMaXN0ZW5lcih6LCB6LnJlbW92ZUV2ZW50TGlzdGVuZXIpKSksIEI7XG4gICAgfSwgai5wcm90b3R5cGUuX2NyZWF0ZVpvbmVOYW1lID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl96b25lQ291bnRlcisrO1xuICAgICAgdmFyIFMgPSBNYXRoLnJhbmRvbSgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmVDb3VudGVyICsgXCItXCIgKyBTO1xuICAgIH0sIGoucHJvdG90eXBlLl9jcmVhdGVab25lID0gZnVuY3Rpb24oUywgQikge1xuICAgICAgdmFyIHo7XG4gICAgICByZXR1cm4gWm9uZS5jdXJyZW50LmZvcmsoe1xuICAgICAgICBuYW1lOiBTLFxuICAgICAgICBwcm9wZXJ0aWVzOiAoeiA9IHt9LCB6W0V0XSA9IEIsIHopXG4gICAgICB9KTtcbiAgICB9LCBqLnByb3RvdHlwZS5fZ2V0QWN0aXZlWm9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFpvbmUuY3VycmVudDtcbiAgICB9LCBqLnByb3RvdHlwZS5fcGF0Y2hBZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oUywgQiwgeikge1xuICAgICAgdmFyIGVlID0gdGhpcztcbiAgICAgIHJldHVybiBmdW5jdGlvbih0ZSwgaWUsIGZlKSB7XG4gICAgICAgIFMuX19vdF9saXN0ZW5lcnMgPT09IHZvaWQgMCAmJiAoUy5fX290X2xpc3RlbmVycyA9IHt9KTtcbiAgICAgICAgdmFyIGtlID0gUy5fX290X2xpc3RlbmVyc1t0ZV07XG4gICAgICAgIGtlID09PSB2b2lkIDAgJiYgKGtlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCksIFMuX19vdF9saXN0ZW5lcnNbdGVdID0ga2UpO1xuICAgICAgICB2YXIgdmUgPSBlZS5iaW5kKHosIGllKTtcbiAgICAgICAgcmV0dXJuIGtlLnNldChpZSwgdmUpLCBCLmNhbGwodGhpcywgdGUsIHZlLCBmZSk7XG4gICAgICB9O1xuICAgIH0sIGoucHJvdG90eXBlLl9wYXRjaFJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihTLCBCKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oeiwgZWUpIHtcbiAgICAgICAgaWYgKFMuX19vdF9saXN0ZW5lcnMgPT09IHZvaWQgMCB8fCBTLl9fb3RfbGlzdGVuZXJzW3pdID09PSB2b2lkIDApXG4gICAgICAgICAgcmV0dXJuIEIuY2FsbCh0aGlzLCB6LCBlZSk7XG4gICAgICAgIHZhciB0ZSA9IFMuX19vdF9saXN0ZW5lcnNbel0sIGllID0gdGUuZ2V0KGVlKTtcbiAgICAgICAgcmV0dXJuIHRlLmRlbGV0ZShlZSksIEIuY2FsbCh0aGlzLCB6LCBpZSB8fCBlZSk7XG4gICAgICB9O1xuICAgIH0sIGoucHJvdG90eXBlLmFjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKVxuICAgICAgICByZXR1cm4gUWk7XG4gICAgICB2YXIgUyA9IHRoaXMuX2dldEFjdGl2ZVpvbmUoKSwgQiA9IHRoaXMuX2FjdGl2ZUNvbnRleHRGcm9tWm9uZShTKTtcbiAgICAgIHJldHVybiBCIHx8IFFpO1xuICAgIH0sIGoucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihTLCBCKSB7XG4gICAgICByZXR1cm4gUyA9PT0gdm9pZCAwICYmIChTID0gdGhpcy5hY3RpdmUoKSksIHR5cGVvZiBCID09IFwiZnVuY3Rpb25cIiA/IHRoaXMuX2JpbmRGdW5jdGlvbihTLCBCKSA6ICh4dChCKSAmJiB0aGlzLl9iaW5kTGlzdGVuZXIoUywgQiksIEIpO1xuICAgIH0sIGoucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkID0gZmFsc2UsIHRoaXM7XG4gICAgfSwgai5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCA9IHRydWUsIHRoaXM7XG4gICAgfSwgai5wcm90b3R5cGUud2l0aCA9IGZ1bmN0aW9uKFMsIEIsIHopIHtcbiAgICAgIGZvciAodmFyIGVlID0gW10sIHRlID0gMzsgdGUgPCBhcmd1bWVudHMubGVuZ3RoOyB0ZSsrKVxuICAgICAgICBlZVt0ZSAtIDNdID0gYXJndW1lbnRzW3RlXTtcbiAgICAgIHZhciBpZSA9IHRoaXMuX2NyZWF0ZVpvbmVOYW1lKCksIGZlID0gdGhpcy5fY3JlYXRlWm9uZShpZSwgUyk7XG4gICAgICByZXR1cm4gZmUucnVuKEIsIHosIGVlKTtcbiAgICB9LCBqO1xuICB9KSgpXG4pLCBwdCA9IHt9LCBndDtcbmZ1bmN0aW9uIEZ0KCkge1xuICBpZiAoZ3QpIHJldHVybiBwdDtcbiAgZ3QgPSAxO1xuICAvKipcbiAgICogQGxpY2Vuc2UgQW5ndWxhciB2PHVua25vd24+XG4gICAqIChjKSAyMDEwLTIwMjUgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvL1xuICAgKiBMaWNlbnNlOiBNSVRcbiAgICovXG4gIGNvbnN0IGogPSBnbG9iYWxUaGlzO1xuICBmdW5jdGlvbiBTKHQpIHtcbiAgICByZXR1cm4gKGouX19ab25lX3N5bWJvbF9wcmVmaXggfHwgXCJfX3pvbmVfc3ltYm9sX19cIikgKyB0O1xuICB9XG4gIGZ1bmN0aW9uIEIoKSB7XG4gICAgY29uc3QgdCA9IGoucGVyZm9ybWFuY2U7XG4gICAgZnVuY3Rpb24gbihJKSB7XG4gICAgICB0ICYmIHQubWFyayAmJiB0Lm1hcmsoSSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGEoSSwgcykge1xuICAgICAgdCAmJiB0Lm1lYXN1cmUgJiYgdC5tZWFzdXJlKEksIHMpO1xuICAgIH1cbiAgICBuKFwiWm9uZVwiKTtcbiAgICBjbGFzcyBlIHtcbiAgICAgIHN0YXRpYyBfX3N5bWJvbF9fID0gUztcbiAgICAgIHN0YXRpYyBhc3NlcnRab25lUGF0Y2hlZCgpIHtcbiAgICAgICAgaWYgKGouUHJvbWlzZSAhPT0gTy5ab25lQXdhcmVQcm9taXNlKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxcbk1vc3QgbGlrZWx5IGNhdXNlIGlzIHRoYXQgYSBQcm9taXNlIHBvbHlmaWxsIGhhcyBiZWVuIGxvYWRlZCBhZnRlciBab25lLmpzIChQb2x5ZmlsbGluZyBQcm9taXNlIGFwaSBpcyBub3QgbmVjZXNzYXJ5IHdoZW4gem9uZS5qcyBpcyBsb2FkZWQuIElmIHlvdSBtdXN0IGxvYWQgb25lLCBkbyBzbyBiZWZvcmUgbG9hZGluZyB6b25lLmpzLilcIik7XG4gICAgICB9XG4gICAgICBzdGF0aWMgZ2V0IHJvb3QoKSB7XG4gICAgICAgIGxldCBzID0gZS5jdXJyZW50O1xuICAgICAgICBmb3IgKDsgcy5wYXJlbnQ7IClcbiAgICAgICAgICBzID0gcy5wYXJlbnQ7XG4gICAgICAgIHJldHVybiBzO1xuICAgICAgfVxuICAgICAgc3RhdGljIGdldCBjdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gYi56b25lO1xuICAgICAgfVxuICAgICAgc3RhdGljIGdldCBjdXJyZW50VGFzaygpIHtcbiAgICAgICAgcmV0dXJuIEQ7XG4gICAgICB9XG4gICAgICBzdGF0aWMgX19sb2FkX3BhdGNoKHMsIGksIHIgPSBmYWxzZSkge1xuICAgICAgICBpZiAoTy5oYXNPd25Qcm9wZXJ0eShzKSkge1xuICAgICAgICAgIGNvbnN0IEUgPSBqW1MoXCJmb3JjZUR1cGxpY2F0ZVpvbmVDaGVja1wiKV0gPT09IHRydWU7XG4gICAgICAgICAgaWYgKCFyICYmIEUpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcIkFscmVhZHkgbG9hZGVkIHBhdGNoOiBcIiArIHMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFqW1wiX19ab25lX2Rpc2FibGVfXCIgKyBzXSkge1xuICAgICAgICAgIGNvbnN0IEUgPSBcIlpvbmU6XCIgKyBzO1xuICAgICAgICAgIG4oRSksIE9bc10gPSBpKGosIGUsIFApLCBhKEUsIEUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBnZXQgcGFyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICAgICAgfVxuICAgICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICAgICAgfVxuICAgICAgX3BhcmVudDtcbiAgICAgIF9uYW1lO1xuICAgICAgX3Byb3BlcnRpZXM7XG4gICAgICBfem9uZURlbGVnYXRlO1xuICAgICAgY29uc3RydWN0b3IocywgaSkge1xuICAgICAgICB0aGlzLl9wYXJlbnQgPSBzLCB0aGlzLl9uYW1lID0gaSA/IGkubmFtZSB8fCBcInVubmFtZWRcIiA6IFwiPHJvb3Q+XCIsIHRoaXMuX3Byb3BlcnRpZXMgPSBpICYmIGkucHJvcGVydGllcyB8fCB7fSwgdGhpcy5fem9uZURlbGVnYXRlID0gbmV3IGYodGhpcywgdGhpcy5fcGFyZW50ICYmIHRoaXMuX3BhcmVudC5fem9uZURlbGVnYXRlLCBpKTtcbiAgICAgIH1cbiAgICAgIGdldChzKSB7XG4gICAgICAgIGNvbnN0IGkgPSB0aGlzLmdldFpvbmVXaXRoKHMpO1xuICAgICAgICBpZiAoaSlcbiAgICAgICAgICByZXR1cm4gaS5fcHJvcGVydGllc1tzXTtcbiAgICAgIH1cbiAgICAgIGdldFpvbmVXaXRoKHMpIHtcbiAgICAgICAgbGV0IGkgPSB0aGlzO1xuICAgICAgICBmb3IgKDsgaTsgKSB7XG4gICAgICAgICAgaWYgKGkuX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocykpXG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICBpID0gaS5fcGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgZm9yayhzKSB7XG4gICAgICAgIGlmICghcylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJab25lU3BlYyByZXF1aXJlZCFcIik7XG4gICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuZm9yayh0aGlzLCBzKTtcbiAgICAgIH1cbiAgICAgIHdyYXAocywgaSkge1xuICAgICAgICBpZiAodHlwZW9mIHMgIT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGluZyBmdW5jdGlvbiBnb3Q6IFwiICsgcyk7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLl96b25lRGVsZWdhdGUuaW50ZXJjZXB0KHRoaXMsIHMsIGkpLCBFID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBFLnJ1bkd1YXJkZWQociwgdGhpcywgYXJndW1lbnRzLCBpKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJ1bihzLCBpLCByLCBFKSB7XG4gICAgICAgIGIgPSB7IHBhcmVudDogYiwgem9uZTogdGhpcyB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsIHMsIGksIHIsIEUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGIgPSBiLnBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcnVuR3VhcmRlZChzLCBpID0gbnVsbCwgciwgRSkge1xuICAgICAgICBiID0geyBwYXJlbnQ6IGIsIHpvbmU6IHRoaXMgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcywgcywgaSwgciwgRSk7XG4gICAgICAgICAgfSBjYXRjaCAoRykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCBHKSlcbiAgICAgICAgICAgICAgdGhyb3cgRztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgYiA9IGIucGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBydW5UYXNrKHMsIGksIHIpIHtcbiAgICAgICAgaWYgKHMuem9uZSAhPSB0aGlzKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgdGFzayBjYW4gb25seSBiZSBydW4gaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogXCIgKyAocy56b25lIHx8IHJlKS5uYW1lICsgXCI7IEV4ZWN1dGlvbjogXCIgKyB0aGlzLm5hbWUgKyBcIilcIik7XG4gICAgICAgIGNvbnN0IEUgPSBzLCB7IHR5cGU6IEcsIGRhdGE6IHsgaXNQZXJpb2RpYzogY2UgPSBmYWxzZSwgaXNSZWZyZXNoYWJsZTogQSA9IGZhbHNlIH0gPSB7fSB9ID0gcztcbiAgICAgICAgaWYgKHMuc3RhdGUgPT09IEogJiYgKEcgPT09IFkgfHwgRyA9PT0gZykpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBnZSA9IHMuc3RhdGUgIT0geDtcbiAgICAgICAgZ2UgJiYgRS5fdHJhbnNpdGlvblRvKHgsIGQpO1xuICAgICAgICBjb25zdCB5ZSA9IEQ7XG4gICAgICAgIEQgPSBFLCBiID0geyBwYXJlbnQ6IGIsIHpvbmU6IHRoaXMgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBHID09IGcgJiYgcy5kYXRhICYmICFjZSAmJiAhQSAmJiAocy5jYW5jZWxGbiA9IHZvaWQgMCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLCBFLCBpLCByKTtcbiAgICAgICAgICB9IGNhdGNoIChzZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCBzZSkpXG4gICAgICAgICAgICAgIHRocm93IHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBjb25zdCBzZSA9IHMuc3RhdGU7XG4gICAgICAgICAgaWYgKHNlICE9PSBKICYmIHNlICE9PSBLKVxuICAgICAgICAgICAgaWYgKEcgPT0gWSB8fCBjZSB8fCBBICYmIHNlID09PSBrKVxuICAgICAgICAgICAgICBnZSAmJiBFLl90cmFuc2l0aW9uVG8oZCwgeCwgayk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgQ2UgPSBFLl96b25lRGVsZWdhdGVzO1xuICAgICAgICAgICAgICB0aGlzLl91cGRhdGVUYXNrQ291bnQoRSwgLTEpLCBnZSAmJiBFLl90cmFuc2l0aW9uVG8oSiwgeCwgSiksIEEgJiYgKEUuX3pvbmVEZWxlZ2F0ZXMgPSBDZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYiA9IGIucGFyZW50LCBEID0geWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNjaGVkdWxlVGFzayhzKSB7XG4gICAgICAgIGlmIChzLnpvbmUgJiYgcy56b25lICE9PSB0aGlzKSB7XG4gICAgICAgICAgbGV0IHIgPSB0aGlzO1xuICAgICAgICAgIGZvciAoOyByOyApIHtcbiAgICAgICAgICAgIGlmIChyID09PSBzLnpvbmUpXG4gICAgICAgICAgICAgIHRocm93IEVycm9yKGBjYW4gbm90IHJlc2NoZWR1bGUgdGFzayB0byAke3RoaXMubmFtZX0gd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9yaWdpbmFsIHpvbmUgJHtzLnpvbmUubmFtZX1gKTtcbiAgICAgICAgICAgIHIgPSByLnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcy5fdHJhbnNpdGlvblRvKGssIEopO1xuICAgICAgICBjb25zdCBpID0gW107XG4gICAgICAgIHMuX3pvbmVEZWxlZ2F0ZXMgPSBpLCBzLl96b25lID0gdGhpcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzID0gdGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLCBzKTtcbiAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgIHRocm93IHMuX3RyYW5zaXRpb25UbyhLLCBrLCBKKSwgdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsIHIpLCByO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzLl96b25lRGVsZWdhdGVzID09PSBpICYmIHRoaXMuX3VwZGF0ZVRhc2tDb3VudChzLCAxKSwgcy5zdGF0ZSA9PSBrICYmIHMuX3RyYW5zaXRpb25UbyhkLCBrKSwgcztcbiAgICAgIH1cbiAgICAgIHNjaGVkdWxlTWljcm9UYXNrKHMsIGksIHIsIEUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBwKFUsIHMsIGksIHIsIEUsIHZvaWQgMCkpO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVNYWNyb1Rhc2socywgaSwgciwgRSwgRykge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHAoZywgcywgaSwgciwgRSwgRykpO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVFdmVudFRhc2socywgaSwgciwgRSwgRykge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHAoWSwgcywgaSwgciwgRSwgRykpO1xuICAgICAgfVxuICAgICAgY2FuY2VsVGFzayhzKSB7XG4gICAgICAgIGlmIChzLnpvbmUgIT0gdGhpcylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIHRhc2sgY2FuIG9ubHkgYmUgY2FuY2VsbGVkIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246IFwiICsgKHMuem9uZSB8fCByZSkubmFtZSArIFwiOyBFeGVjdXRpb246IFwiICsgdGhpcy5uYW1lICsgXCIpXCIpO1xuICAgICAgICBpZiAoIShzLnN0YXRlICE9PSBkICYmIHMuc3RhdGUgIT09IHgpKSB7XG4gICAgICAgICAgcy5fdHJhbnNpdGlvblRvKFYsIGQsIHgpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl96b25lRGVsZWdhdGUuY2FuY2VsVGFzayh0aGlzLCBzKTtcbiAgICAgICAgICB9IGNhdGNoIChpKSB7XG4gICAgICAgICAgICB0aHJvdyBzLl90cmFuc2l0aW9uVG8oSywgViksIHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCBpKSwgaTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudChzLCAtMSksIHMuX3RyYW5zaXRpb25UbyhKLCBWKSwgcy5ydW5Db3VudCA9IC0xLCBzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfdXBkYXRlVGFza0NvdW50KHMsIGkpIHtcbiAgICAgICAgY29uc3QgciA9IHMuX3pvbmVEZWxlZ2F0ZXM7XG4gICAgICAgIGkgPT0gLTEgJiYgKHMuX3pvbmVEZWxlZ2F0ZXMgPSBudWxsKTtcbiAgICAgICAgZm9yIChsZXQgRSA9IDA7IEUgPCByLmxlbmd0aDsgRSsrKVxuICAgICAgICAgIHJbRV0uX3VwZGF0ZVRhc2tDb3VudChzLnR5cGUsIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjID0ge1xuICAgICAgbmFtZTogXCJcIixcbiAgICAgIG9uSGFzVGFzazogKEksIHMsIGksIHIpID0+IEkuaGFzVGFzayhpLCByKSxcbiAgICAgIG9uU2NoZWR1bGVUYXNrOiAoSSwgcywgaSwgcikgPT4gSS5zY2hlZHVsZVRhc2soaSwgciksXG4gICAgICBvbkludm9rZVRhc2s6IChJLCBzLCBpLCByLCBFLCBHKSA9PiBJLmludm9rZVRhc2soaSwgciwgRSwgRyksXG4gICAgICBvbkNhbmNlbFRhc2s6IChJLCBzLCBpLCByKSA9PiBJLmNhbmNlbFRhc2soaSwgcilcbiAgICB9O1xuICAgIGNsYXNzIGYge1xuICAgICAgZ2V0IHpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl96b25lO1xuICAgICAgfVxuICAgICAgX3pvbmU7XG4gICAgICBfdGFza0NvdW50cyA9IHtcbiAgICAgICAgbWljcm9UYXNrOiAwLFxuICAgICAgICBtYWNyb1Rhc2s6IDAsXG4gICAgICAgIGV2ZW50VGFzazogMFxuICAgICAgfTtcbiAgICAgIF9wYXJlbnREZWxlZ2F0ZTtcbiAgICAgIF9mb3JrRGxndDtcbiAgICAgIF9mb3JrWlM7XG4gICAgICBfZm9ya0N1cnJab25lO1xuICAgICAgX2ludGVyY2VwdERsZ3Q7XG4gICAgICBfaW50ZXJjZXB0WlM7XG4gICAgICBfaW50ZXJjZXB0Q3VyclpvbmU7XG4gICAgICBfaW52b2tlRGxndDtcbiAgICAgIF9pbnZva2VaUztcbiAgICAgIF9pbnZva2VDdXJyWm9uZTtcbiAgICAgIF9oYW5kbGVFcnJvckRsZ3Q7XG4gICAgICBfaGFuZGxlRXJyb3JaUztcbiAgICAgIF9oYW5kbGVFcnJvckN1cnJab25lO1xuICAgICAgX3NjaGVkdWxlVGFza0RsZ3Q7XG4gICAgICBfc2NoZWR1bGVUYXNrWlM7XG4gICAgICBfc2NoZWR1bGVUYXNrQ3VyclpvbmU7XG4gICAgICBfaW52b2tlVGFza0RsZ3Q7XG4gICAgICBfaW52b2tlVGFza1pTO1xuICAgICAgX2ludm9rZVRhc2tDdXJyWm9uZTtcbiAgICAgIF9jYW5jZWxUYXNrRGxndDtcbiAgICAgIF9jYW5jZWxUYXNrWlM7XG4gICAgICBfY2FuY2VsVGFza0N1cnJab25lO1xuICAgICAgX2hhc1Rhc2tEbGd0O1xuICAgICAgX2hhc1Rhc2tEbGd0T3duZXI7XG4gICAgICBfaGFzVGFza1pTO1xuICAgICAgX2hhc1Rhc2tDdXJyWm9uZTtcbiAgICAgIGNvbnN0cnVjdG9yKHMsIGksIHIpIHtcbiAgICAgICAgdGhpcy5fem9uZSA9IHMsIHRoaXMuX3BhcmVudERlbGVnYXRlID0gaSwgdGhpcy5fZm9ya1pTID0gciAmJiAociAmJiByLm9uRm9yayA/IHIgOiBpLl9mb3JrWlMpLCB0aGlzLl9mb3JrRGxndCA9IHIgJiYgKHIub25Gb3JrID8gaSA6IGkuX2ZvcmtEbGd0KSwgdGhpcy5fZm9ya0N1cnJab25lID0gciAmJiAoci5vbkZvcmsgPyB0aGlzLl96b25lIDogaS5fZm9ya0N1cnJab25lKSwgdGhpcy5faW50ZXJjZXB0WlMgPSByICYmIChyLm9uSW50ZXJjZXB0ID8gciA6IGkuX2ludGVyY2VwdFpTKSwgdGhpcy5faW50ZXJjZXB0RGxndCA9IHIgJiYgKHIub25JbnRlcmNlcHQgPyBpIDogaS5faW50ZXJjZXB0RGxndCksIHRoaXMuX2ludGVyY2VwdEN1cnJab25lID0gciAmJiAoci5vbkludGVyY2VwdCA/IHRoaXMuX3pvbmUgOiBpLl9pbnRlcmNlcHRDdXJyWm9uZSksIHRoaXMuX2ludm9rZVpTID0gciAmJiAoci5vbkludm9rZSA/IHIgOiBpLl9pbnZva2VaUyksIHRoaXMuX2ludm9rZURsZ3QgPSByICYmIChyLm9uSW52b2tlID8gaSA6IGkuX2ludm9rZURsZ3QpLCB0aGlzLl9pbnZva2VDdXJyWm9uZSA9IHIgJiYgKHIub25JbnZva2UgPyB0aGlzLl96b25lIDogaS5faW52b2tlQ3VyclpvbmUpLCB0aGlzLl9oYW5kbGVFcnJvclpTID0gciAmJiAoci5vbkhhbmRsZUVycm9yID8gciA6IGkuX2hhbmRsZUVycm9yWlMpLCB0aGlzLl9oYW5kbGVFcnJvckRsZ3QgPSByICYmIChyLm9uSGFuZGxlRXJyb3IgPyBpIDogaS5faGFuZGxlRXJyb3JEbGd0KSwgdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSA9IHIgJiYgKHIub25IYW5kbGVFcnJvciA/IHRoaXMuX3pvbmUgOiBpLl9oYW5kbGVFcnJvckN1cnJab25lKSwgdGhpcy5fc2NoZWR1bGVUYXNrWlMgPSByICYmIChyLm9uU2NoZWR1bGVUYXNrID8gciA6IGkuX3NjaGVkdWxlVGFza1pTKSwgdGhpcy5fc2NoZWR1bGVUYXNrRGxndCA9IHIgJiYgKHIub25TY2hlZHVsZVRhc2sgPyBpIDogaS5fc2NoZWR1bGVUYXNrRGxndCksIHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lID0gciAmJiAoci5vblNjaGVkdWxlVGFzayA/IHRoaXMuX3pvbmUgOiBpLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSksIHRoaXMuX2ludm9rZVRhc2taUyA9IHIgJiYgKHIub25JbnZva2VUYXNrID8gciA6IGkuX2ludm9rZVRhc2taUyksIHRoaXMuX2ludm9rZVRhc2tEbGd0ID0gciAmJiAoci5vbkludm9rZVRhc2sgPyBpIDogaS5faW52b2tlVGFza0RsZ3QpLCB0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmUgPSByICYmIChyLm9uSW52b2tlVGFzayA/IHRoaXMuX3pvbmUgOiBpLl9pbnZva2VUYXNrQ3VyclpvbmUpLCB0aGlzLl9jYW5jZWxUYXNrWlMgPSByICYmIChyLm9uQ2FuY2VsVGFzayA/IHIgOiBpLl9jYW5jZWxUYXNrWlMpLCB0aGlzLl9jYW5jZWxUYXNrRGxndCA9IHIgJiYgKHIub25DYW5jZWxUYXNrID8gaSA6IGkuX2NhbmNlbFRhc2tEbGd0KSwgdGhpcy5fY2FuY2VsVGFza0N1cnJab25lID0gciAmJiAoci5vbkNhbmNlbFRhc2sgPyB0aGlzLl96b25lIDogaS5fY2FuY2VsVGFza0N1cnJab25lKSwgdGhpcy5faGFzVGFza1pTID0gbnVsbCwgdGhpcy5faGFzVGFza0RsZ3QgPSBudWxsLCB0aGlzLl9oYXNUYXNrRGxndE93bmVyID0gbnVsbCwgdGhpcy5faGFzVGFza0N1cnJab25lID0gbnVsbDtcbiAgICAgICAgY29uc3QgRSA9IHIgJiYgci5vbkhhc1Rhc2ssIEcgPSBpICYmIGkuX2hhc1Rhc2taUztcbiAgICAgICAgKEUgfHwgRykgJiYgKHRoaXMuX2hhc1Rhc2taUyA9IEUgPyByIDogYywgdGhpcy5faGFzVGFza0RsZ3QgPSBpLCB0aGlzLl9oYXNUYXNrRGxndE93bmVyID0gdGhpcywgdGhpcy5faGFzVGFza0N1cnJab25lID0gdGhpcy5fem9uZSwgci5vblNjaGVkdWxlVGFzayB8fCAodGhpcy5fc2NoZWR1bGVUYXNrWlMgPSBjLCB0aGlzLl9zY2hlZHVsZVRhc2tEbGd0ID0gaSwgdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUgPSB0aGlzLl96b25lKSwgci5vbkludm9rZVRhc2sgfHwgKHRoaXMuX2ludm9rZVRhc2taUyA9IGMsIHRoaXMuX2ludm9rZVRhc2tEbGd0ID0gaSwgdGhpcy5faW52b2tlVGFza0N1cnJab25lID0gdGhpcy5fem9uZSksIHIub25DYW5jZWxUYXNrIHx8ICh0aGlzLl9jYW5jZWxUYXNrWlMgPSBjLCB0aGlzLl9jYW5jZWxUYXNrRGxndCA9IGksIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSA9IHRoaXMuX3pvbmUpKTtcbiAgICAgIH1cbiAgICAgIGZvcmsocywgaSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ya1pTID8gdGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCwgdGhpcy56b25lLCBzLCBpKSA6IG5ldyBlKHMsIGkpO1xuICAgICAgfVxuICAgICAgaW50ZXJjZXB0KHMsIGksIHIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludGVyY2VwdFpTID8gdGhpcy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCwgdGhpcy5faW50ZXJjZXB0Q3VyclpvbmUsIHMsIGksIHIpIDogaTtcbiAgICAgIH1cbiAgICAgIGludm9rZShzLCBpLCByLCBFLCBHKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VaUyA/IHRoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsIHRoaXMuX2ludm9rZUN1cnJab25lLCBzLCBpLCByLCBFLCBHKSA6IGkuYXBwbHkociwgRSk7XG4gICAgICB9XG4gICAgICBoYW5kbGVFcnJvcihzLCBpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYW5kbGVFcnJvclpTID8gdGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCwgdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSwgcywgaSkgOiB0cnVlO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVUYXNrKHMsIGkpIHtcbiAgICAgICAgbGV0IHIgPSBpO1xuICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVUYXNrWlMpXG4gICAgICAgICAgdGhpcy5faGFzVGFza1pTICYmIHIuX3pvbmVEZWxlZ2F0ZXMucHVzaCh0aGlzLl9oYXNUYXNrRGxndE93bmVyKSwgciA9IHRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsIHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lLCBzLCBpKSwgciB8fCAociA9IGkpO1xuICAgICAgICBlbHNlIGlmIChpLnNjaGVkdWxlRm4pXG4gICAgICAgICAgaS5zY2hlZHVsZUZuKGkpO1xuICAgICAgICBlbHNlIGlmIChpLnR5cGUgPT0gVSlcbiAgICAgICAgICBYKGkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uXCIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIGludm9rZVRhc2socywgaSwgciwgRSkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlVGFza1pTID8gdGhpcy5faW52b2tlVGFza1pTLm9uSW52b2tlVGFzayh0aGlzLl9pbnZva2VUYXNrRGxndCwgdGhpcy5faW52b2tlVGFza0N1cnJab25lLCBzLCBpLCByLCBFKSA6IGkuY2FsbGJhY2suYXBwbHkociwgRSk7XG4gICAgICB9XG4gICAgICBjYW5jZWxUYXNrKHMsIGkpIHtcbiAgICAgICAgbGV0IHI7XG4gICAgICAgIGlmICh0aGlzLl9jYW5jZWxUYXNrWlMpXG4gICAgICAgICAgciA9IHRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSwgcywgaSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmICghaS5jYW5jZWxGbilcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwiVGFzayBpcyBub3QgY2FuY2VsYWJsZVwiKTtcbiAgICAgICAgICByID0gaS5jYW5jZWxGbihpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIGhhc1Rhc2socywgaSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX2hhc1Rhc2taUyAmJiB0aGlzLl9oYXNUYXNrWlMub25IYXNUYXNrKHRoaXMuX2hhc1Rhc2tEbGd0LCB0aGlzLl9oYXNUYXNrQ3VyclpvbmUsIHMsIGkpO1xuICAgICAgICB9IGNhdGNoIChyKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihzLCByKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX3VwZGF0ZVRhc2tDb3VudChzLCBpKSB7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLl90YXNrQ291bnRzLCBFID0gcltzXSwgRyA9IHJbc10gPSBFICsgaTtcbiAgICAgICAgaWYgKEcgPCAwKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxlZC5cIik7XG4gICAgICAgIGlmIChFID09IDAgfHwgRyA9PSAwKSB7XG4gICAgICAgICAgY29uc3QgY2UgPSB7XG4gICAgICAgICAgICBtaWNyb1Rhc2s6IHIubWljcm9UYXNrID4gMCxcbiAgICAgICAgICAgIG1hY3JvVGFzazogci5tYWNyb1Rhc2sgPiAwLFxuICAgICAgICAgICAgZXZlbnRUYXNrOiByLmV2ZW50VGFzayA+IDAsXG4gICAgICAgICAgICBjaGFuZ2U6IHNcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuaGFzVGFzayh0aGlzLl96b25lLCBjZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY2xhc3MgcCB7XG4gICAgICB0eXBlO1xuICAgICAgc291cmNlO1xuICAgICAgaW52b2tlO1xuICAgICAgY2FsbGJhY2s7XG4gICAgICBkYXRhO1xuICAgICAgc2NoZWR1bGVGbjtcbiAgICAgIGNhbmNlbEZuO1xuICAgICAgX3pvbmUgPSBudWxsO1xuICAgICAgcnVuQ291bnQgPSAwO1xuICAgICAgX3pvbmVEZWxlZ2F0ZXMgPSBudWxsO1xuICAgICAgX3N0YXRlID0gXCJub3RTY2hlZHVsZWRcIjtcbiAgICAgIGNvbnN0cnVjdG9yKHMsIGksIHIsIEUsIEcsIGNlKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPSBzLCB0aGlzLnNvdXJjZSA9IGksIHRoaXMuZGF0YSA9IEUsIHRoaXMuc2NoZWR1bGVGbiA9IEcsIHRoaXMuY2FuY2VsRm4gPSBjZSwgIXIpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY2FsbGJhY2sgaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSByO1xuICAgICAgICBjb25zdCBBID0gdGhpcztcbiAgICAgICAgcyA9PT0gWSAmJiBFICYmIEUudXNlRyA/IHRoaXMuaW52b2tlID0gcC5pbnZva2VUYXNrIDogdGhpcy5pbnZva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcC5pbnZva2VUYXNrLmNhbGwoaiwgQSwgdGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBpbnZva2VUYXNrKHMsIGksIHIpIHtcbiAgICAgICAgcyB8fCAocyA9IHRoaXMpLCBvZSsrO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBzLnJ1bkNvdW50KyssIHMuem9uZS5ydW5UYXNrKHMsIGksIHIpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIG9lID09IDEgJiYgbmUoKSwgb2UtLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZ2V0IHpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl96b25lO1xuICAgICAgfVxuICAgICAgZ2V0IHN0YXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gICAgICB9XG4gICAgICBjYW5jZWxTY2hlZHVsZVJlcXVlc3QoKSB7XG4gICAgICAgIHRoaXMuX3RyYW5zaXRpb25UbyhKLCBrKTtcbiAgICAgIH1cbiAgICAgIF90cmFuc2l0aW9uVG8ocywgaSwgcikge1xuICAgICAgICBpZiAodGhpcy5fc3RhdGUgPT09IGkgfHwgdGhpcy5fc3RhdGUgPT09IHIpXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSBzLCBzID09IEogJiYgKHRoaXMuX3pvbmVEZWxlZ2F0ZXMgPSBudWxsKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLnR5cGV9ICcke3RoaXMuc291cmNlfSc6IGNhbiBub3QgdHJhbnNpdGlvbiB0byAnJHtzfScsIGV4cGVjdGluZyBzdGF0ZSAnJHtpfScke3IgPyBcIiBvciAnXCIgKyByICsgXCInXCIgOiBcIlwifSwgd2FzICcke3RoaXMuX3N0YXRlfScuYCk7XG4gICAgICB9XG4gICAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSAmJiB0eXBlb2YgdGhpcy5kYXRhLmhhbmRsZUlkIDwgXCJ1XCIgPyB0aGlzLmRhdGEuaGFuZGxlSWQudG9TdHJpbmcoKSA6IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzKTtcbiAgICAgIH1cbiAgICAgIC8vIGFkZCB0b0pTT04gbWV0aG9kIHRvIHByZXZlbnQgY3ljbGljIGVycm9yIHdoZW5cbiAgICAgIC8vIGNhbGwgSlNPTi5zdHJpbmdpZnkoem9uZVRhc2spXG4gICAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgem9uZTogdGhpcy56b25lLm5hbWUsXG4gICAgICAgICAgcnVuQ291bnQ6IHRoaXMucnVuQ291bnRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgVCA9IFMoXCJzZXRUaW1lb3V0XCIpLCB5ID0gUyhcIlByb21pc2VcIiksIHcgPSBTKFwidGhlblwiKTtcbiAgICBsZXQgXyA9IFtdLCBDID0gZmFsc2UsIE07XG4gICAgZnVuY3Rpb24gRihJKSB7XG4gICAgICBpZiAoTSB8fCBqW3ldICYmIChNID0galt5XS5yZXNvbHZlKDApKSwgTSkge1xuICAgICAgICBsZXQgcyA9IE1bd107XG4gICAgICAgIHMgfHwgKHMgPSBNLnRoZW4pLCBzLmNhbGwoTSwgSSk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgaltUXShJLCAwKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gWChJKSB7XG4gICAgICBvZSA9PT0gMCAmJiBfLmxlbmd0aCA9PT0gMCAmJiBGKG5lKSwgSSAmJiBfLnB1c2goSSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5lKCkge1xuICAgICAgaWYgKCFDKSB7XG4gICAgICAgIGZvciAoQyA9IHRydWU7IF8ubGVuZ3RoOyApIHtcbiAgICAgICAgICBjb25zdCBJID0gXztcbiAgICAgICAgICBfID0gW107XG4gICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBJLmxlbmd0aDsgcysrKSB7XG4gICAgICAgICAgICBjb25zdCBpID0gSVtzXTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGkuem9uZS5ydW5UYXNrKGksIG51bGwsIG51bGwpO1xuICAgICAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgICAgICBQLm9uVW5oYW5kbGVkRXJyb3Iocik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFAubWljcm90YXNrRHJhaW5Eb25lKCksIEMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmUgPSB7IG5hbWU6IFwiTk8gWk9ORVwiIH0sIEogPSBcIm5vdFNjaGVkdWxlZFwiLCBrID0gXCJzY2hlZHVsaW5nXCIsIGQgPSBcInNjaGVkdWxlZFwiLCB4ID0gXCJydW5uaW5nXCIsIFYgPSBcImNhbmNlbGluZ1wiLCBLID0gXCJ1bmtub3duXCIsIFUgPSBcIm1pY3JvVGFza1wiLCBnID0gXCJtYWNyb1Rhc2tcIiwgWSA9IFwiZXZlbnRUYXNrXCIsIE8gPSB7fSwgUCA9IHtcbiAgICAgIHN5bWJvbDogUyxcbiAgICAgIGN1cnJlbnRab25lRnJhbWU6ICgpID0+IGIsXG4gICAgICBvblVuaGFuZGxlZEVycm9yOiAkLFxuICAgICAgbWljcm90YXNrRHJhaW5Eb25lOiAkLFxuICAgICAgc2NoZWR1bGVNaWNyb1Rhc2s6IFgsXG4gICAgICBzaG93VW5jYXVnaHRFcnJvcjogKCkgPT4gIWVbUyhcImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0RXJyb3JcIildLFxuICAgICAgcGF0Y2hFdmVudFRhcmdldDogKCkgPT4gW10sXG4gICAgICBwYXRjaE9uUHJvcGVydGllczogJCxcbiAgICAgIHBhdGNoTWV0aG9kOiAoKSA9PiAkLFxuICAgICAgYmluZEFyZ3VtZW50czogKCkgPT4gW10sXG4gICAgICBwYXRjaFRoZW46ICgpID0+ICQsXG4gICAgICBwYXRjaE1hY3JvVGFzazogKCkgPT4gJCxcbiAgICAgIHBhdGNoRXZlbnRQcm90b3R5cGU6ICgpID0+ICQsXG4gICAgICBpc0lFT3JFZGdlOiAoKSA9PiBmYWxzZSxcbiAgICAgIGdldEdsb2JhbE9iamVjdHM6ICgpID0+IHtcbiAgICAgIH0sXG4gICAgICBPYmplY3REZWZpbmVQcm9wZXJ0eTogKCkgPT4gJCxcbiAgICAgIE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKCkgPT4ge1xuICAgICAgfSxcbiAgICAgIE9iamVjdENyZWF0ZTogKCkgPT4ge1xuICAgICAgfSxcbiAgICAgIEFycmF5U2xpY2U6ICgpID0+IFtdLFxuICAgICAgcGF0Y2hDbGFzczogKCkgPT4gJCxcbiAgICAgIHdyYXBXaXRoQ3VycmVudFpvbmU6ICgpID0+ICQsXG4gICAgICBmaWx0ZXJQcm9wZXJ0aWVzOiAoKSA9PiBbXSxcbiAgICAgIGF0dGFjaE9yaWdpblRvUGF0Y2hlZDogKCkgPT4gJCxcbiAgICAgIF9yZWRlZmluZVByb3BlcnR5OiAoKSA9PiAkLFxuICAgICAgcGF0Y2hDYWxsYmFja3M6ICgpID0+ICQsXG4gICAgICBuYXRpdmVTY2hlZHVsZU1pY3JvVGFzazogRlxuICAgIH07XG4gICAgbGV0IGIgPSB7IHBhcmVudDogbnVsbCwgem9uZTogbmV3IGUobnVsbCwgbnVsbCkgfSwgRCA9IG51bGwsIG9lID0gMDtcbiAgICBmdW5jdGlvbiAkKCkge1xuICAgIH1cbiAgICByZXR1cm4gYShcIlpvbmVcIiwgXCJab25lXCIpLCBlO1xuICB9XG4gIGZ1bmN0aW9uIHooKSB7XG4gICAgY29uc3QgdCA9IGdsb2JhbFRoaXMsIG4gPSB0W1MoXCJmb3JjZUR1cGxpY2F0ZVpvbmVDaGVja1wiKV0gPT09IHRydWU7XG4gICAgaWYgKHQuWm9uZSAmJiAobiB8fCB0eXBlb2YgdC5ab25lLl9fc3ltYm9sX18gIT0gXCJmdW5jdGlvblwiKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlpvbmUgYWxyZWFkeSBsb2FkZWQuXCIpO1xuICAgIHJldHVybiB0LlpvbmUgPz89IEIoKSwgdC5ab25lO1xuICB9XG4gIGNvbnN0IGVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwgdGUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksIGllID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLCBmZSA9IE9iamVjdC5jcmVhdGUsIGtlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLCB2ZSA9IFwiYWRkRXZlbnRMaXN0ZW5lclwiLCBBZSA9IFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLCBqZSA9IFModmUpLCBIZSA9IFMoQWUpLCBfZSA9IFwidHJ1ZVwiLCBUZSA9IFwiZmFsc2VcIiwgd2UgPSBTKFwiXCIpO1xuICBmdW5jdGlvbiB4ZSh0LCBuKSB7XG4gICAgcmV0dXJuIFpvbmUuY3VycmVudC53cmFwKHQsIG4pO1xuICB9XG4gIGZ1bmN0aW9uIEZlKHQsIG4sIGEsIGUsIGMpIHtcbiAgICByZXR1cm4gWm9uZS5jdXJyZW50LnNjaGVkdWxlTWFjcm9UYXNrKHQsIG4sIGEsIGUsIGMpO1xuICB9XG4gIGNvbnN0IEggPSBTLCBOZSA9IHR5cGVvZiB3aW5kb3cgPCBcInVcIiwgRGUgPSBOZSA/IHdpbmRvdyA6IHZvaWQgMCwgUSA9IE5lICYmIERlIHx8IGdsb2JhbFRoaXMsIG10ID0gXCJyZW1vdmVBdHRyaWJ1dGVcIjtcbiAgZnVuY3Rpb24gVmUodCwgbikge1xuICAgIGZvciAobGV0IGEgPSB0Lmxlbmd0aCAtIDE7IGEgPj0gMDsgYS0tKVxuICAgICAgdHlwZW9mIHRbYV0gPT0gXCJmdW5jdGlvblwiICYmICh0W2FdID0geGUodFthXSwgbiArIFwiX1wiICsgYSkpO1xuICAgIHJldHVybiB0O1xuICB9XG4gIGZ1bmN0aW9uIHl0KHQsIG4pIHtcbiAgICBjb25zdCBhID0gdC5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIGZvciAobGV0IGUgPSAwOyBlIDwgbi5sZW5ndGg7IGUrKykge1xuICAgICAgY29uc3QgYyA9IG5bZV0sIGYgPSB0W2NdO1xuICAgICAgaWYgKGYpIHtcbiAgICAgICAgY29uc3QgcCA9IGVlKHQsIGMpO1xuICAgICAgICBpZiAoIVhlKHApKVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB0W2NdID0gKChUKSA9PiB7XG4gICAgICAgICAgY29uc3QgeSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIFQuYXBwbHkodGhpcywgVmUoYXJndW1lbnRzLCBhICsgXCIuXCIgKyBjKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gcGUoeSwgVCksIHk7XG4gICAgICAgIH0pKGYpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBYZSh0KSB7XG4gICAgcmV0dXJuIHQgPyB0LndyaXRhYmxlID09PSBmYWxzZSA/IGZhbHNlIDogISh0eXBlb2YgdC5nZXQgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiB0LnNldCA+IFwidVwiKSA6IHRydWU7XG4gIH1cbiAgY29uc3QgWWUgPSB0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUgPCBcInVcIiAmJiBzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUsIFplID0gIShcIm53XCIgaW4gUSkgJiYgdHlwZW9mIFEucHJvY2VzcyA8IFwidVwiICYmIFEucHJvY2Vzcy50b1N0cmluZygpID09PSBcIltvYmplY3QgcHJvY2Vzc11cIiwgemUgPSAhWmUgJiYgIVllICYmICEhKE5lICYmIERlLkhUTUxFbGVtZW50KSwgJGUgPSB0eXBlb2YgUS5wcm9jZXNzIDwgXCJ1XCIgJiYgUS5wcm9jZXNzLnRvU3RyaW5nKCkgPT09IFwiW29iamVjdCBwcm9jZXNzXVwiICYmICFZZSAmJiAhIShOZSAmJiBEZS5IVE1MRWxlbWVudCksIExlID0ge30sIGt0ID0gSChcImVuYWJsZV9iZWZvcmV1bmxvYWRcIiksIEplID0gZnVuY3Rpb24odCkge1xuICAgIGlmICh0ID0gdCB8fCBRLmV2ZW50LCAhdClcbiAgICAgIHJldHVybjtcbiAgICBsZXQgbiA9IExlW3QudHlwZV07XG4gICAgbiB8fCAobiA9IExlW3QudHlwZV0gPSBIKFwiT05fUFJPUEVSVFlcIiArIHQudHlwZSkpO1xuICAgIGNvbnN0IGEgPSB0aGlzIHx8IHQudGFyZ2V0IHx8IFEsIGUgPSBhW25dO1xuICAgIGxldCBjO1xuICAgIGlmICh6ZSAmJiBhID09PSBEZSAmJiB0LnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgY29uc3QgZiA9IHQ7XG4gICAgICBjID0gZSAmJiBlLmNhbGwodGhpcywgZi5tZXNzYWdlLCBmLmZpbGVuYW1lLCBmLmxpbmVubywgZi5jb2xubywgZi5lcnJvciksIGMgPT09IHRydWUgJiYgdC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZVxuICAgICAgYyA9IGUgJiYgZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy80NzU3OVxuICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMTEvV0QtaHRtbDUtMjAxMTA1MjUvaGlzdG9yeS5odG1sI2JlZm9yZXVubG9hZGV2ZW50XG4gICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHNwZWNpZmljIGNhc2Ugd2Ugc2hvdWxkIGNoZWNrIGZvci4gVGhlIHNwZWMgZGVmaW5lcyB0aGF0IHRoZVxuICAgICAgLy8gYHJldHVyblZhbHVlYCBhdHRyaWJ1dGUgcmVwcmVzZW50cyB0aGUgbWVzc2FnZSB0byBzaG93IHRoZSB1c2VyLiBXaGVuIHRoZSBldmVudFxuICAgICAgLy8gaXMgY3JlYXRlZCwgdGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgIHQudHlwZSA9PT0gXCJiZWZvcmV1bmxvYWRcIiAmJiAvLyBUbyBwcmV2ZW50IGFueSBicmVha2luZyBjaGFuZ2VzIHJlc3VsdGluZyBmcm9tIHRoaXMgY2hhbmdlLCBnaXZlbiB0aGF0XG4gICAgICAvLyBpdCB3YXMgYWxyZWFkeSBjYXVzaW5nIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGZhaWx1cmVzIGluIEczLCB3ZSBoYXZlIGhpZGRlblxuICAgICAgLy8gdGhhdCBiZWhhdmlvciBiZWhpbmQgYSBnbG9iYWwgY29uZmlndXJhdGlvbiBmbGFnLiBDb25zdW1lcnMgY2FuIGVuYWJsZSB0aGlzXG4gICAgICAvLyBmbGFnIGV4cGxpY2l0bHkgaWYgdGhleSB3YW50IHRoZSBgYmVmb3JldW5sb2FkYCBldmVudCB0byBiZSBoYW5kbGVkIGFzIGRlZmluZWRcbiAgICAgIC8vIGluIHRoZSBzcGVjaWZpY2F0aW9uLlxuICAgICAgUVtrdF0gJiYgLy8gVGhlIElETCBldmVudCBkZWZpbml0aW9uIGlzIGBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJldHVyblZhbHVlYCwgc28gd2UgY2hlY2sgd2hldGhlclxuICAgICAgLy8gYHR5cGVvZiByZXN1bHRgIGlzIGEgc3RyaW5nLlxuICAgICAgdHlwZW9mIGMgPT0gXCJzdHJpbmdcIiA/IHQucmV0dXJuVmFsdWUgPSBjIDogYyAhPSBudWxsICYmICFjICYmIHQucHJldmVudERlZmF1bHQoKTtcbiAgICByZXR1cm4gYztcbiAgfTtcbiAgZnVuY3Rpb24gS2UodCwgbiwgYSkge1xuICAgIGxldCBlID0gZWUodCwgbik7XG4gICAgaWYgKCFlICYmIGEgJiYgZWUoYSwgbikgJiYgKGUgPSB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KSwgIWUgfHwgIWUuY29uZmlndXJhYmxlKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGMgPSBIKFwib25cIiArIG4gKyBcInBhdGNoZWRcIik7XG4gICAgaWYgKHQuaGFzT3duUHJvcGVydHkoYykgJiYgdFtjXSlcbiAgICAgIHJldHVybjtcbiAgICBkZWxldGUgZS53cml0YWJsZSwgZGVsZXRlIGUudmFsdWU7XG4gICAgY29uc3QgZiA9IGUuZ2V0LCBwID0gZS5zZXQsIFQgPSBuLnNsaWNlKDIpO1xuICAgIGxldCB5ID0gTGVbVF07XG4gICAgeSB8fCAoeSA9IExlW1RdID0gSChcIk9OX1BST1BFUlRZXCIgKyBUKSksIGUuc2V0ID0gZnVuY3Rpb24odykge1xuICAgICAgbGV0IF8gPSB0aGlzO1xuICAgICAgaWYgKCFfICYmIHQgPT09IFEgJiYgKF8gPSBRKSwgIV8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIHR5cGVvZiBfW3ldID09IFwiZnVuY3Rpb25cIiAmJiBfLnJlbW92ZUV2ZW50TGlzdGVuZXIoVCwgSmUpLCBwPy5jYWxsKF8sIG51bGwpLCBfW3ldID0gdywgdHlwZW9mIHcgPT0gXCJmdW5jdGlvblwiICYmIF8uYWRkRXZlbnRMaXN0ZW5lcihULCBKZSwgZmFsc2UpO1xuICAgIH0sIGUuZ2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgdyA9IHRoaXM7XG4gICAgICBpZiAoIXcgJiYgdCA9PT0gUSAmJiAodyA9IFEpLCAhdylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCBfID0gd1t5XTtcbiAgICAgIGlmIChfKVxuICAgICAgICByZXR1cm4gXztcbiAgICAgIGlmIChmKSB7XG4gICAgICAgIGxldCBDID0gZi5jYWxsKHRoaXMpO1xuICAgICAgICBpZiAoQylcbiAgICAgICAgICByZXR1cm4gZS5zZXQuY2FsbCh0aGlzLCBDKSwgdHlwZW9mIHdbbXRdID09IFwiZnVuY3Rpb25cIiAmJiB3LnJlbW92ZUF0dHJpYnV0ZShuKSwgQztcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sIHRlKHQsIG4sIGUpLCB0W2NdID0gdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiBRZSh0LCBuLCBhKSB7XG4gICAgaWYgKG4pXG4gICAgICBmb3IgKGxldCBlID0gMDsgZSA8IG4ubGVuZ3RoOyBlKyspXG4gICAgICAgIEtlKHQsIFwib25cIiArIG5bZV0sIGEpO1xuICAgIGVsc2Uge1xuICAgICAgY29uc3QgZSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjIGluIHQpXG4gICAgICAgIGMuc2xpY2UoMCwgMikgPT0gXCJvblwiICYmIGUucHVzaChjKTtcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgZS5sZW5ndGg7IGMrKylcbiAgICAgICAgS2UodCwgZVtjXSwgYSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGxlID0gSChcIm9yaWdpbmFsSW5zdGFuY2VcIik7XG4gIGZ1bmN0aW9uIFNlKHQpIHtcbiAgICBjb25zdCBuID0gUVt0XTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm47XG4gICAgUVtIKHQpXSA9IG4sIFFbdF0gPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IGMgPSBWZShhcmd1bWVudHMsIHQpO1xuICAgICAgc3dpdGNoIChjLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgdGhpc1tsZV0gPSBuZXcgbigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhpc1tsZV0gPSBuZXcgbihjWzBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHRoaXNbbGVdID0gbmV3IG4oY1swXSwgY1sxXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aGlzW2xlXSA9IG5ldyBuKGNbMF0sIGNbMV0sIGNbMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgdGhpc1tsZV0gPSBuZXcgbihjWzBdLCBjWzFdLCBjWzJdLCBjWzNdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBcmcgbGlzdCB0b28gbG9uZy5cIik7XG4gICAgICB9XG4gICAgfSwgcGUoUVt0XSwgbik7XG4gICAgY29uc3QgYSA9IG5ldyBuKGZ1bmN0aW9uKCkge1xuICAgIH0pO1xuICAgIGxldCBlO1xuICAgIGZvciAoZSBpbiBhKVxuICAgICAgdCA9PT0gXCJYTUxIdHRwUmVxdWVzdFwiICYmIGUgPT09IFwicmVzcG9uc2VCbG9iXCIgfHwgKGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgdHlwZW9mIGFbY10gPT0gXCJmdW5jdGlvblwiID8gUVt0XS5wcm90b3R5cGVbY10gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gdGhpc1tsZV1bY10uYXBwbHkodGhpc1tsZV0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH0gOiB0ZShRW3RdLnByb3RvdHlwZSwgYywge1xuICAgICAgICAgIHNldDogZnVuY3Rpb24oZikge1xuICAgICAgICAgICAgdHlwZW9mIGYgPT0gXCJmdW5jdGlvblwiID8gKHRoaXNbbGVdW2NdID0geGUoZiwgdCArIFwiLlwiICsgYyksIHBlKHRoaXNbbGVdW2NdLCBmKSkgOiB0aGlzW2xlXVtjXSA9IGY7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbbGVdW2NdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KShlKTtcbiAgICBmb3IgKGUgaW4gbilcbiAgICAgIGUgIT09IFwicHJvdG90eXBlXCIgJiYgbi5oYXNPd25Qcm9wZXJ0eShlKSAmJiAoUVt0XVtlXSA9IG5bZV0pO1xuICB9XG4gIGZ1bmN0aW9uIEVlKHQsIG4sIGEpIHtcbiAgICBsZXQgZSA9IHQ7XG4gICAgZm9yICg7IGUgJiYgIWUuaGFzT3duUHJvcGVydHkobik7IClcbiAgICAgIGUgPSBpZShlKTtcbiAgICAhZSAmJiB0W25dICYmIChlID0gdCk7XG4gICAgY29uc3QgYyA9IEgobik7XG4gICAgbGV0IGYgPSBudWxsO1xuICAgIGlmIChlICYmICghKGYgPSBlW2NdKSB8fCAhZS5oYXNPd25Qcm9wZXJ0eShjKSkpIHtcbiAgICAgIGYgPSBlW2NdID0gZVtuXTtcbiAgICAgIGNvbnN0IHAgPSBlICYmIGVlKGUsIG4pO1xuICAgICAgaWYgKFhlKHApKSB7XG4gICAgICAgIGNvbnN0IFQgPSBhKGYsIGMsIG4pO1xuICAgICAgICBlW25dID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIFQodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfSwgcGUoZVtuXSwgZik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmO1xuICB9XG4gIGZ1bmN0aW9uIHZ0KHQsIG4sIGEpIHtcbiAgICBsZXQgZSA9IG51bGw7XG4gICAgZnVuY3Rpb24gYyhmKSB7XG4gICAgICBjb25zdCBwID0gZi5kYXRhO1xuICAgICAgcmV0dXJuIHAuYXJnc1twLmNiSWR4XSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBmLmludm9rZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfSwgZS5hcHBseShwLnRhcmdldCwgcC5hcmdzKSwgZjtcbiAgICB9XG4gICAgZSA9IEVlKHQsIG4sIChmKSA9PiBmdW5jdGlvbihwLCBUKSB7XG4gICAgICBjb25zdCB5ID0gYShwLCBUKTtcbiAgICAgIHJldHVybiB5LmNiSWR4ID49IDAgJiYgdHlwZW9mIFRbeS5jYklkeF0gPT0gXCJmdW5jdGlvblwiID8gRmUoeS5uYW1lLCBUW3kuY2JJZHhdLCB5LCBjKSA6IGYuYXBwbHkocCwgVCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gcGUodCwgbikge1xuICAgIHRbSChcIk9yaWdpbmFsRGVsZWdhdGVcIildID0gbjtcbiAgfVxuICBsZXQgZXQgPSBmYWxzZSwgR2UgPSBmYWxzZTtcbiAgZnVuY3Rpb24gYnQoKSB7XG4gICAgaWYgKGV0KVxuICAgICAgcmV0dXJuIEdlO1xuICAgIGV0ID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdCA9IERlLm5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgICAodC5pbmRleE9mKFwiTVNJRSBcIikgIT09IC0xIHx8IHQuaW5kZXhPZihcIlRyaWRlbnQvXCIpICE9PSAtMSB8fCB0LmluZGV4T2YoXCJFZGdlL1wiKSAhPT0gLTEpICYmIChHZSA9ICEwKTtcbiAgICB9IGNhdGNoIHtcbiAgICB9XG4gICAgcmV0dXJuIEdlO1xuICB9XG4gIGZ1bmN0aW9uIHR0KHQpIHtcbiAgICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiO1xuICB9XG4gIGZ1bmN0aW9uIG50KHQpIHtcbiAgICByZXR1cm4gdHlwZW9mIHQgPT0gXCJudW1iZXJcIjtcbiAgfVxuICBjb25zdCBDdCA9IHtcbiAgICB1c2VHOiB0cnVlXG4gIH0sIGFlID0ge30sIHJ0ID0ge30sIG90ID0gbmV3IFJlZ0V4cChcIl5cIiArIHdlICsgXCIoXFxcXHcrKSh0cnVlfGZhbHNlKSRcIiksIHN0ID0gSChcInByb3BhZ2F0aW9uU3RvcHBlZFwiKTtcbiAgZnVuY3Rpb24gaXQodCwgbikge1xuICAgIGNvbnN0IGEgPSAobiA/IG4odCkgOiB0KSArIFRlLCBlID0gKG4gPyBuKHQpIDogdCkgKyBfZSwgYyA9IHdlICsgYSwgZiA9IHdlICsgZTtcbiAgICBhZVt0XSA9IHt9LCBhZVt0XVtUZV0gPSBjLCBhZVt0XVtfZV0gPSBmO1xuICB9XG4gIGZ1bmN0aW9uIFB0KHQsIG4sIGEsIGUpIHtcbiAgICBjb25zdCBjID0gZSAmJiBlLmFkZCB8fCB2ZSwgZiA9IGUgJiYgZS5ybSB8fCBBZSwgcCA9IGUgJiYgZS5saXN0ZW5lcnMgfHwgXCJldmVudExpc3RlbmVyc1wiLCBUID0gZSAmJiBlLnJtQWxsIHx8IFwicmVtb3ZlQWxsTGlzdGVuZXJzXCIsIHkgPSBIKGMpLCB3ID0gXCIuXCIgKyBjICsgXCI6XCIsIF8gPSBcInByZXBlbmRMaXN0ZW5lclwiLCBDID0gXCIuXCIgKyBfICsgXCI6XCIsIE0gPSBmdW5jdGlvbihrLCBkLCB4KSB7XG4gICAgICBpZiAoay5pc1JlbW92ZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IFYgPSBrLmNhbGxiYWNrO1xuICAgICAgdHlwZW9mIFYgPT0gXCJvYmplY3RcIiAmJiBWLmhhbmRsZUV2ZW50ICYmIChrLmNhbGxiYWNrID0gKGcpID0+IFYuaGFuZGxlRXZlbnQoZyksIGsub3JpZ2luYWxEZWxlZ2F0ZSA9IFYpO1xuICAgICAgbGV0IEs7XG4gICAgICB0cnkge1xuICAgICAgICBrLmludm9rZShrLCBkLCBbeF0pO1xuICAgICAgfSBjYXRjaCAoZykge1xuICAgICAgICBLID0gZztcbiAgICAgIH1cbiAgICAgIGNvbnN0IFUgPSBrLm9wdGlvbnM7XG4gICAgICBpZiAoVSAmJiB0eXBlb2YgVSA9PSBcIm9iamVjdFwiICYmIFUub25jZSkge1xuICAgICAgICBjb25zdCBnID0gay5vcmlnaW5hbERlbGVnYXRlID8gay5vcmlnaW5hbERlbGVnYXRlIDogay5jYWxsYmFjaztcbiAgICAgICAgZFtmXS5jYWxsKGQsIHgudHlwZSwgZywgVSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gSztcbiAgICB9O1xuICAgIGZ1bmN0aW9uIEYoaywgZCwgeCkge1xuICAgICAgaWYgKGQgPSBkIHx8IHQuZXZlbnQsICFkKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBWID0gayB8fCBkLnRhcmdldCB8fCB0LCBLID0gVlthZVtkLnR5cGVdW3ggPyBfZSA6IFRlXV07XG4gICAgICBpZiAoSykge1xuICAgICAgICBjb25zdCBVID0gW107XG4gICAgICAgIGlmIChLLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGNvbnN0IGcgPSBNKEtbMF0sIFYsIGQpO1xuICAgICAgICAgIGcgJiYgVS5wdXNoKGcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGcgPSBLLnNsaWNlKCk7XG4gICAgICAgICAgZm9yIChsZXQgWSA9IDA7IFkgPCBnLmxlbmd0aCAmJiAhKGQgJiYgZFtzdF0gPT09IHRydWUpOyBZKyspIHtcbiAgICAgICAgICAgIGNvbnN0IE8gPSBNKGdbWV0sIFYsIGQpO1xuICAgICAgICAgICAgTyAmJiBVLnB1c2goTyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChVLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICB0aHJvdyBVWzBdO1xuICAgICAgICBmb3IgKGxldCBnID0gMDsgZyA8IFUubGVuZ3RoOyBnKyspIHtcbiAgICAgICAgICBjb25zdCBZID0gVVtnXTtcbiAgICAgICAgICBuLm5hdGl2ZVNjaGVkdWxlTWljcm9UYXNrKCgpID0+IHtcbiAgICAgICAgICAgIHRocm93IFk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgWCA9IGZ1bmN0aW9uKGspIHtcbiAgICAgIHJldHVybiBGKHRoaXMsIGssIGZhbHNlKTtcbiAgICB9LCBuZSA9IGZ1bmN0aW9uKGspIHtcbiAgICAgIHJldHVybiBGKHRoaXMsIGssIHRydWUpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gcmUoaywgZCkge1xuICAgICAgaWYgKCFrKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBsZXQgeCA9IHRydWU7XG4gICAgICBkICYmIGQudXNlRyAhPT0gdm9pZCAwICYmICh4ID0gZC51c2VHKTtcbiAgICAgIGNvbnN0IFYgPSBkICYmIGQudmg7XG4gICAgICBsZXQgSyA9IHRydWU7XG4gICAgICBkICYmIGQuY2hrRHVwICE9PSB2b2lkIDAgJiYgKEsgPSBkLmNoa0R1cCk7XG4gICAgICBsZXQgVSA9IGZhbHNlO1xuICAgICAgZCAmJiBkLnJ0ICE9PSB2b2lkIDAgJiYgKFUgPSBkLnJ0KTtcbiAgICAgIGxldCBnID0gaztcbiAgICAgIGZvciAoOyBnICYmICFnLmhhc093blByb3BlcnR5KGMpOyApXG4gICAgICAgIGcgPSBpZShnKTtcbiAgICAgIGlmICghZyAmJiBrW2NdICYmIChnID0gayksICFnIHx8IGdbeV0pXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IFkgPSBkICYmIGQuZXZlbnROYW1lVG9TdHJpbmcsIE8gPSB7fSwgUCA9IGdbeV0gPSBnW2NdLCBiID0gZ1tIKGYpXSA9IGdbZl0sIEQgPSBnW0gocCldID0gZ1twXSwgb2UgPSBnW0goVCldID0gZ1tUXTtcbiAgICAgIGxldCAkO1xuICAgICAgZCAmJiBkLnByZXBlbmQgJiYgKCQgPSBnW0goZC5wcmVwZW5kKV0gPSBnW2QucHJlcGVuZF0pO1xuICAgICAgZnVuY3Rpb24gSShvLCB1KSB7XG4gICAgICAgIHJldHVybiB1ID8gdHlwZW9mIG8gPT0gXCJib29sZWFuXCIgPyB7IGNhcHR1cmU6IG8sIHBhc3NpdmU6IHRydWUgfSA6IG8gPyB0eXBlb2YgbyA9PSBcIm9iamVjdFwiICYmIG8ucGFzc2l2ZSAhPT0gZmFsc2UgPyB7IC4uLm8sIHBhc3NpdmU6IHRydWUgfSA6IG8gOiB7IHBhc3NpdmU6IHRydWUgfSA6IG87XG4gICAgICB9XG4gICAgICBjb25zdCBzID0gZnVuY3Rpb24obykge1xuICAgICAgICBpZiAoIU8uaXNFeGlzdGluZylcbiAgICAgICAgICByZXR1cm4gUC5jYWxsKE8udGFyZ2V0LCBPLmV2ZW50TmFtZSwgTy5jYXB0dXJlID8gbmUgOiBYLCBPLm9wdGlvbnMpO1xuICAgICAgfSwgaSA9IGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgaWYgKCFvLmlzUmVtb3ZlZCkge1xuICAgICAgICAgIGNvbnN0IHUgPSBhZVtvLmV2ZW50TmFtZV07XG4gICAgICAgICAgbGV0IHY7XG4gICAgICAgICAgdSAmJiAodiA9IHVbby5jYXB0dXJlID8gX2UgOiBUZV0pO1xuICAgICAgICAgIGNvbnN0IFIgPSB2ICYmIG8udGFyZ2V0W3ZdO1xuICAgICAgICAgIGlmIChSKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IFIubGVuZ3RoOyBtKyspXG4gICAgICAgICAgICAgIGlmIChSW21dID09PSBvKSB7XG4gICAgICAgICAgICAgICAgUi5zcGxpY2UobSwgMSksIG8uaXNSZW1vdmVkID0gdHJ1ZSwgby5yZW1vdmVBYm9ydExpc3RlbmVyICYmIChvLnJlbW92ZUFib3J0TGlzdGVuZXIoKSwgby5yZW1vdmVBYm9ydExpc3RlbmVyID0gbnVsbCksIFIubGVuZ3RoID09PSAwICYmIChvLmFsbFJlbW92ZWQgPSB0cnVlLCBvLnRhcmdldFt2XSA9IG51bGwpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvLmFsbFJlbW92ZWQpXG4gICAgICAgICAgcmV0dXJuIGIuY2FsbChvLnRhcmdldCwgby5ldmVudE5hbWUsIG8uY2FwdHVyZSA/IG5lIDogWCwgby5vcHRpb25zKTtcbiAgICAgIH0sIHIgPSBmdW5jdGlvbihvKSB7XG4gICAgICAgIHJldHVybiBQLmNhbGwoTy50YXJnZXQsIE8uZXZlbnROYW1lLCBvLmludm9rZSwgTy5vcHRpb25zKTtcbiAgICAgIH0sIEUgPSBmdW5jdGlvbihvKSB7XG4gICAgICAgIHJldHVybiAkLmNhbGwoTy50YXJnZXQsIE8uZXZlbnROYW1lLCBvLmludm9rZSwgTy5vcHRpb25zKTtcbiAgICAgIH0sIEcgPSBmdW5jdGlvbihvKSB7XG4gICAgICAgIHJldHVybiBiLmNhbGwoby50YXJnZXQsIG8uZXZlbnROYW1lLCBvLmludm9rZSwgby5vcHRpb25zKTtcbiAgICAgIH0sIGNlID0geCA/IHMgOiByLCBBID0geCA/IGkgOiBHLCBnZSA9IGZ1bmN0aW9uKG8sIHUpIHtcbiAgICAgICAgY29uc3QgdiA9IHR5cGVvZiB1O1xuICAgICAgICByZXR1cm4gdiA9PT0gXCJmdW5jdGlvblwiICYmIG8uY2FsbGJhY2sgPT09IHUgfHwgdiA9PT0gXCJvYmplY3RcIiAmJiBvLm9yaWdpbmFsRGVsZWdhdGUgPT09IHU7XG4gICAgICB9LCB5ZSA9IGQ/LmRpZmYgfHwgZ2UsIHNlID0gWm9uZVtIKFwiVU5QQVRDSEVEX0VWRU5UU1wiKV0sIENlID0gdFtIKFwiUEFTU0lWRV9FVkVOVFNcIildO1xuICAgICAgZnVuY3Rpb24gaChvKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiICYmIG8gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB1ID0geyAuLi5vIH07XG4gICAgICAgICAgcmV0dXJuIG8uc2lnbmFsICYmICh1LnNpZ25hbCA9IG8uc2lnbmFsKSwgdTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGwgPSBmdW5jdGlvbihvLCB1LCB2LCBSLCBtID0gZmFsc2UsIE4gPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY29uc3QgWiA9IHRoaXMgfHwgdDtcbiAgICAgICAgICBsZXQgTCA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICBkICYmIGQudHJhbnNmZXJFdmVudE5hbWUgJiYgKEwgPSBkLnRyYW5zZmVyRXZlbnROYW1lKEwpKTtcbiAgICAgICAgICBsZXQgVyA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgICBpZiAoIVcpXG4gICAgICAgICAgICByZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIGlmIChaZSAmJiBMID09PSBcInVuY2F1Z2h0RXhjZXB0aW9uXCIpXG4gICAgICAgICAgICByZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIGxldCBxID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHR5cGVvZiBXICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgaWYgKCFXLmhhbmRsZUV2ZW50KVxuICAgICAgICAgICAgICByZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgcSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChWICYmICFWKG8sIFcsIFosIGFyZ3VtZW50cykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY29uc3QgbWUgPSAhIUNlICYmIENlLmluZGV4T2YoTCkgIT09IC0xLCBoZSA9IGgoSShhcmd1bWVudHNbMl0sIG1lKSksIFBlID0gaGU/LnNpZ25hbDtcbiAgICAgICAgICBpZiAoUGU/LmFib3J0ZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgaWYgKHNlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkZSA9IDA7IGRlIDwgc2UubGVuZ3RoOyBkZSsrKVxuICAgICAgICAgICAgICBpZiAoTCA9PT0gc2VbZGVdKVxuICAgICAgICAgICAgICAgIHJldHVybiBtZSA/IG8uY2FsbChaLCBMLCBXLCBoZSkgOiBvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IFVlID0gaGUgPyB0eXBlb2YgaGUgPT0gXCJib29sZWFuXCIgPyB0cnVlIDogaGUuY2FwdHVyZSA6IGZhbHNlLCBmdCA9IGhlICYmIHR5cGVvZiBoZSA9PSBcIm9iamVjdFwiID8gaGUub25jZSA6IGZhbHNlLCBIdCA9IFpvbmUuY3VycmVudDtcbiAgICAgICAgICBsZXQgV2UgPSBhZVtMXTtcbiAgICAgICAgICBXZSB8fCAoaXQoTCwgWSksIFdlID0gYWVbTF0pO1xuICAgICAgICAgIGNvbnN0IGh0ID0gV2VbVWUgPyBfZSA6IFRlXTtcbiAgICAgICAgICBsZXQgUmUgPSBaW2h0XSwgZHQgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoUmUpIHtcbiAgICAgICAgICAgIGlmIChkdCA9IHRydWUsIEspIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgZGUgPSAwOyBkZSA8IFJlLmxlbmd0aDsgZGUrKylcbiAgICAgICAgICAgICAgICBpZiAoeWUoUmVbZGVdLCBXKSlcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIFJlID0gWltodF0gPSBbXTtcbiAgICAgICAgICBsZXQgSWU7XG4gICAgICAgICAgY29uc3QgX3QgPSBaLmNvbnN0cnVjdG9yLm5hbWUsIFR0ID0gcnRbX3RdO1xuICAgICAgICAgIFR0ICYmIChJZSA9IFR0W0xdKSwgSWUgfHwgKEllID0gX3QgKyB1ICsgKFkgPyBZKEwpIDogTCkpLCBPLm9wdGlvbnMgPSBoZSwgZnQgJiYgKE8ub3B0aW9ucy5vbmNlID0gZmFsc2UpLCBPLnRhcmdldCA9IFosIE8uY2FwdHVyZSA9IFVlLCBPLmV2ZW50TmFtZSA9IEwsIE8uaXNFeGlzdGluZyA9IGR0O1xuICAgICAgICAgIGNvbnN0IE9lID0geCA/IEN0IDogdm9pZCAwO1xuICAgICAgICAgIE9lICYmIChPZS50YXNrRGF0YSA9IE8pLCBQZSAmJiAoTy5vcHRpb25zLnNpZ25hbCA9IHZvaWQgMCk7XG4gICAgICAgICAgY29uc3QgdWUgPSBIdC5zY2hlZHVsZUV2ZW50VGFzayhJZSwgVywgT2UsIHYsIFIpO1xuICAgICAgICAgIGlmIChQZSkge1xuICAgICAgICAgICAgTy5vcHRpb25zLnNpZ25hbCA9IFBlO1xuICAgICAgICAgICAgY29uc3QgZGUgPSAoKSA9PiB1ZS56b25lLmNhbmNlbFRhc2sodWUpO1xuICAgICAgICAgICAgby5jYWxsKFBlLCBcImFib3J0XCIsIGRlLCB7IG9uY2U6IHRydWUgfSksIHVlLnJlbW92ZUFib3J0TGlzdGVuZXIgPSAoKSA9PiBQZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoTy50YXJnZXQgPSBudWxsLCBPZSAmJiAoT2UudGFza0RhdGEgPSBudWxsKSwgZnQgJiYgKE8ub3B0aW9ucy5vbmNlID0gdHJ1ZSksIHR5cGVvZiB1ZS5vcHRpb25zICE9IFwiYm9vbGVhblwiICYmICh1ZS5vcHRpb25zID0gaGUpLCB1ZS50YXJnZXQgPSBaLCB1ZS5jYXB0dXJlID0gVWUsIHVlLmV2ZW50TmFtZSA9IEwsIHEgJiYgKHVlLm9yaWdpbmFsRGVsZWdhdGUgPSBXKSwgTiA/IFJlLnVuc2hpZnQodWUpIDogUmUucHVzaCh1ZSksIG0pXG4gICAgICAgICAgICByZXR1cm4gWjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZ1tjXSA9IGwoUCwgdywgY2UsIEEsIFUpLCAkICYmIChnW19dID0gbCgkLCBDLCBFLCBBLCBVLCB0cnVlKSksIGdbZl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgY29uc3QgbyA9IHRoaXMgfHwgdDtcbiAgICAgICAgbGV0IHUgPSBhcmd1bWVudHNbMF07XG4gICAgICAgIGQgJiYgZC50cmFuc2ZlckV2ZW50TmFtZSAmJiAodSA9IGQudHJhbnNmZXJFdmVudE5hbWUodSkpO1xuICAgICAgICBjb25zdCB2ID0gYXJndW1lbnRzWzJdLCBSID0gdiA/IHR5cGVvZiB2ID09IFwiYm9vbGVhblwiID8gdHJ1ZSA6IHYuY2FwdHVyZSA6IGZhbHNlLCBtID0gYXJndW1lbnRzWzFdO1xuICAgICAgICBpZiAoIW0pXG4gICAgICAgICAgcmV0dXJuIGIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgaWYgKFYgJiYgIVYoYiwgbSwgbywgYXJndW1lbnRzKSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IE4gPSBhZVt1XTtcbiAgICAgICAgbGV0IFo7XG4gICAgICAgIE4gJiYgKFogPSBOW1IgPyBfZSA6IFRlXSk7XG4gICAgICAgIGNvbnN0IEwgPSBaICYmIG9bWl07XG4gICAgICAgIGlmIChMKVxuICAgICAgICAgIGZvciAobGV0IFcgPSAwOyBXIDwgTC5sZW5ndGg7IFcrKykge1xuICAgICAgICAgICAgY29uc3QgcSA9IExbV107XG4gICAgICAgICAgICBpZiAoeWUocSwgbSkpIHtcbiAgICAgICAgICAgICAgaWYgKEwuc3BsaWNlKFcsIDEpLCBxLmlzUmVtb3ZlZCA9IHRydWUsIEwubGVuZ3RoID09PSAwICYmIChxLmFsbFJlbW92ZWQgPSB0cnVlLCBvW1pdID0gbnVsbCwgIVIgJiYgdHlwZW9mIHUgPT0gXCJzdHJpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZSA9IHdlICsgXCJPTl9QUk9QRVJUWVwiICsgdTtcbiAgICAgICAgICAgICAgICBvW21lXSA9IG51bGw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHEuem9uZS5jYW5jZWxUYXNrKHEpLCBVID8gbyA6IHZvaWQgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIHJldHVybiBiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9LCBnW3BdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IG8gPSB0aGlzIHx8IHQ7XG4gICAgICAgIGxldCB1ID0gYXJndW1lbnRzWzBdO1xuICAgICAgICBkICYmIGQudHJhbnNmZXJFdmVudE5hbWUgJiYgKHUgPSBkLnRyYW5zZmVyRXZlbnROYW1lKHUpKTtcbiAgICAgICAgY29uc3QgdiA9IFtdLCBSID0gY3QobywgWSA/IFkodSkgOiB1KTtcbiAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBSLmxlbmd0aDsgbSsrKSB7XG4gICAgICAgICAgY29uc3QgTiA9IFJbbV07XG4gICAgICAgICAgbGV0IFogPSBOLm9yaWdpbmFsRGVsZWdhdGUgPyBOLm9yaWdpbmFsRGVsZWdhdGUgOiBOLmNhbGxiYWNrO1xuICAgICAgICAgIHYucHVzaChaKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0sIGdbVF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgY29uc3QgbyA9IHRoaXMgfHwgdDtcbiAgICAgICAgbGV0IHUgPSBhcmd1bWVudHNbMF07XG4gICAgICAgIGlmICh1KSB7XG4gICAgICAgICAgZCAmJiBkLnRyYW5zZmVyRXZlbnROYW1lICYmICh1ID0gZC50cmFuc2ZlckV2ZW50TmFtZSh1KSk7XG4gICAgICAgICAgY29uc3QgdiA9IGFlW3VdO1xuICAgICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICBjb25zdCBSID0gdltUZV0sIG0gPSB2W19lXSwgTiA9IG9bUl0sIFogPSBvW21dO1xuICAgICAgICAgICAgaWYgKE4pIHtcbiAgICAgICAgICAgICAgY29uc3QgTCA9IE4uc2xpY2UoKTtcbiAgICAgICAgICAgICAgZm9yIChsZXQgVyA9IDA7IFcgPCBMLmxlbmd0aDsgVysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcSA9IExbV107XG4gICAgICAgICAgICAgICAgbGV0IG1lID0gcS5vcmlnaW5hbERlbGVnYXRlID8gcS5vcmlnaW5hbERlbGVnYXRlIDogcS5jYWxsYmFjaztcbiAgICAgICAgICAgICAgICB0aGlzW2ZdLmNhbGwodGhpcywgdSwgbWUsIHEub3B0aW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChaKSB7XG4gICAgICAgICAgICAgIGNvbnN0IEwgPSBaLnNsaWNlKCk7XG4gICAgICAgICAgICAgIGZvciAobGV0IFcgPSAwOyBXIDwgTC5sZW5ndGg7IFcrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHEgPSBMW1ddO1xuICAgICAgICAgICAgICAgIGxldCBtZSA9IHEub3JpZ2luYWxEZWxlZ2F0ZSA/IHEub3JpZ2luYWxEZWxlZ2F0ZSA6IHEuY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgdGhpc1tmXS5jYWxsKHRoaXMsIHUsIG1lLCBxLm9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHYgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAgICBmb3IgKGxldCBSID0gMDsgUiA8IHYubGVuZ3RoOyBSKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG0gPSB2W1JdLCBOID0gb3QuZXhlYyhtKTtcbiAgICAgICAgICAgIGxldCBaID0gTiAmJiBOWzFdO1xuICAgICAgICAgICAgWiAmJiBaICE9PSBcInJlbW92ZUxpc3RlbmVyXCIgJiYgdGhpc1tUXS5jYWxsKHRoaXMsIFopO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzW1RdLmNhbGwodGhpcywgXCJyZW1vdmVMaXN0ZW5lclwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoVSlcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sIHBlKGdbY10sIFApLCBwZShnW2ZdLCBiKSwgb2UgJiYgcGUoZ1tUXSwgb2UpLCBEICYmIHBlKGdbcF0sIEQpLCB0cnVlO1xuICAgIH1cbiAgICBsZXQgSiA9IFtdO1xuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgYS5sZW5ndGg7IGsrKylcbiAgICAgIEpba10gPSByZShhW2tdLCBlKTtcbiAgICByZXR1cm4gSjtcbiAgfVxuICBmdW5jdGlvbiBjdCh0LCBuKSB7XG4gICAgaWYgKCFuKSB7XG4gICAgICBjb25zdCBmID0gW107XG4gICAgICBmb3IgKGxldCBwIGluIHQpIHtcbiAgICAgICAgY29uc3QgVCA9IG90LmV4ZWMocCk7XG4gICAgICAgIGxldCB5ID0gVCAmJiBUWzFdO1xuICAgICAgICBpZiAoeSAmJiAoIW4gfHwgeSA9PT0gbikpIHtcbiAgICAgICAgICBjb25zdCB3ID0gdFtwXTtcbiAgICAgICAgICBpZiAodylcbiAgICAgICAgICAgIGZvciAobGV0IF8gPSAwOyBfIDwgdy5sZW5ndGg7IF8rKylcbiAgICAgICAgICAgICAgZi5wdXNoKHdbX10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZjtcbiAgICB9XG4gICAgbGV0IGEgPSBhZVtuXTtcbiAgICBhIHx8IChpdChuKSwgYSA9IGFlW25dKTtcbiAgICBjb25zdCBlID0gdFthW1RlXV0sIGMgPSB0W2FbX2VdXTtcbiAgICByZXR1cm4gZSA/IGMgPyBlLmNvbmNhdChjKSA6IGUuc2xpY2UoKSA6IGMgPyBjLnNsaWNlKCkgOiBbXTtcbiAgfVxuICBmdW5jdGlvbiBSdCh0LCBuKSB7XG4gICAgY29uc3QgYSA9IHQuRXZlbnQ7XG4gICAgYSAmJiBhLnByb3RvdHlwZSAmJiBuLnBhdGNoTWV0aG9kKGEucHJvdG90eXBlLCBcInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvblwiLCAoZSkgPT4gZnVuY3Rpb24oYywgZikge1xuICAgICAgY1tzdF0gPSB0cnVlLCBlICYmIGUuYXBwbHkoYywgZik7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gd3QodCwgbikge1xuICAgIG4ucGF0Y2hNZXRob2QodCwgXCJxdWV1ZU1pY3JvdGFza1wiLCAoYSkgPT4gZnVuY3Rpb24oZSwgYykge1xuICAgICAgWm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKFwicXVldWVNaWNyb3Rhc2tcIiwgY1swXSk7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgTWUgPSBIKFwiem9uZVRhc2tcIik7XG4gIGZ1bmN0aW9uIGJlKHQsIG4sIGEsIGUpIHtcbiAgICBsZXQgYyA9IG51bGwsIGYgPSBudWxsO1xuICAgIG4gKz0gZSwgYSArPSBlO1xuICAgIGNvbnN0IHAgPSB7fTtcbiAgICBmdW5jdGlvbiBUKHcpIHtcbiAgICAgIGNvbnN0IF8gPSB3LmRhdGE7XG4gICAgICBfLmFyZ3NbMF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHcuaW52b2tlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgY29uc3QgQyA9IGMuYXBwbHkodCwgXy5hcmdzKTtcbiAgICAgIHJldHVybiBudChDKSA/IF8uaGFuZGxlSWQgPSBDIDogKF8uaGFuZGxlID0gQywgXy5pc1JlZnJlc2hhYmxlID0gdHQoQy5yZWZyZXNoKSksIHc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHkodykge1xuICAgICAgY29uc3QgeyBoYW5kbGU6IF8sIGhhbmRsZUlkOiBDIH0gPSB3LmRhdGE7XG4gICAgICByZXR1cm4gZi5jYWxsKHQsIF8gPz8gQyk7XG4gICAgfVxuICAgIGMgPSBFZSh0LCBuLCAodykgPT4gZnVuY3Rpb24oXywgQykge1xuICAgICAgaWYgKHR0KENbMF0pKSB7XG4gICAgICAgIGNvbnN0IE0gPSB7XG4gICAgICAgICAgaXNSZWZyZXNoYWJsZTogZmFsc2UsXG4gICAgICAgICAgaXNQZXJpb2RpYzogZSA9PT0gXCJJbnRlcnZhbFwiLFxuICAgICAgICAgIGRlbGF5OiBlID09PSBcIlRpbWVvdXRcIiB8fCBlID09PSBcIkludGVydmFsXCIgPyBDWzFdIHx8IDAgOiB2b2lkIDAsXG4gICAgICAgICAgYXJnczogQ1xuICAgICAgICB9LCBGID0gQ1swXTtcbiAgICAgICAgQ1swXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gRi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCB7IGhhbmRsZTogeCwgaGFuZGxlSWQ6IFYsIGlzUGVyaW9kaWM6IEssIGlzUmVmcmVzaGFibGU6IFUgfSA9IE07XG4gICAgICAgICAgICAhSyAmJiAhVSAmJiAoViA/IGRlbGV0ZSBwW1ZdIDogeCAmJiAoeFtNZV0gPSBudWxsKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBYID0gRmUobiwgQ1swXSwgTSwgVCwgeSk7XG4gICAgICAgIGlmICghWClcbiAgICAgICAgICByZXR1cm4gWDtcbiAgICAgICAgY29uc3QgeyBoYW5kbGVJZDogbmUsIGhhbmRsZTogcmUsIGlzUmVmcmVzaGFibGU6IEosIGlzUGVyaW9kaWM6IGsgfSA9IFguZGF0YTtcbiAgICAgICAgaWYgKG5lKVxuICAgICAgICAgIHBbbmVdID0gWDtcbiAgICAgICAgZWxzZSBpZiAocmUgJiYgKHJlW01lXSA9IFgsIEogJiYgIWspKSB7XG4gICAgICAgICAgY29uc3QgZCA9IHJlLnJlZnJlc2g7XG4gICAgICAgICAgcmUucmVmcmVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgeyB6b25lOiB4LCBzdGF0ZTogViB9ID0gWDtcbiAgICAgICAgICAgIHJldHVybiBWID09PSBcIm5vdFNjaGVkdWxlZFwiID8gKFguX3N0YXRlID0gXCJzY2hlZHVsZWRcIiwgeC5fdXBkYXRlVGFza0NvdW50KFgsIDEpKSA6IFYgPT09IFwicnVubmluZ1wiICYmIChYLl9zdGF0ZSA9IFwic2NoZWR1bGluZ1wiKSwgZC5jYWxsKHRoaXMpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlID8/IG5lID8/IFg7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIHcuYXBwbHkodCwgQyk7XG4gICAgfSksIGYgPSBFZSh0LCBhLCAodykgPT4gZnVuY3Rpb24oXywgQykge1xuICAgICAgY29uc3QgTSA9IENbMF07XG4gICAgICBsZXQgRjtcbiAgICAgIG50KE0pID8gKEYgPSBwW01dLCBkZWxldGUgcFtNXSkgOiAoRiA9IE0/LltNZV0sIEYgPyBNW01lXSA9IG51bGwgOiBGID0gTSksIEY/LnR5cGUgPyBGLmNhbmNlbEZuICYmIEYuem9uZS5jYW5jZWxUYXNrKEYpIDogdy5hcHBseSh0LCBDKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBEdCh0LCBuKSB7XG4gICAgY29uc3QgeyBpc0Jyb3dzZXI6IGEsIGlzTWl4OiBlIH0gPSBuLmdldEdsb2JhbE9iamVjdHMoKTtcbiAgICBpZiAoIWEgJiYgIWUgfHwgIXQuY3VzdG9tRWxlbWVudHMgfHwgIShcImN1c3RvbUVsZW1lbnRzXCIgaW4gdCkpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgYyA9IFtcbiAgICAgIFwiY29ubmVjdGVkQ2FsbGJhY2tcIixcbiAgICAgIFwiZGlzY29ubmVjdGVkQ2FsbGJhY2tcIixcbiAgICAgIFwiYWRvcHRlZENhbGxiYWNrXCIsXG4gICAgICBcImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFja1wiLFxuICAgICAgXCJmb3JtQXNzb2NpYXRlZENhbGxiYWNrXCIsXG4gICAgICBcImZvcm1EaXNhYmxlZENhbGxiYWNrXCIsXG4gICAgICBcImZvcm1SZXNldENhbGxiYWNrXCIsXG4gICAgICBcImZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFja1wiXG4gICAgXTtcbiAgICBuLnBhdGNoQ2FsbGJhY2tzKG4sIHQuY3VzdG9tRWxlbWVudHMsIFwiY3VzdG9tRWxlbWVudHNcIiwgXCJkZWZpbmVcIiwgYyk7XG4gIH1cbiAgZnVuY3Rpb24gU3QodCwgbikge1xuICAgIGlmIChab25lW24uc3ltYm9sKFwicGF0Y2hFdmVudFRhcmdldFwiKV0pXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgeyBldmVudE5hbWVzOiBhLCB6b25lU3ltYm9sRXZlbnROYW1lczogZSwgVFJVRV9TVFI6IGMsIEZBTFNFX1NUUjogZiwgWk9ORV9TWU1CT0xfUFJFRklYOiBwIH0gPSBuLmdldEdsb2JhbE9iamVjdHMoKTtcbiAgICBmb3IgKGxldCB5ID0gMDsgeSA8IGEubGVuZ3RoOyB5KyspIHtcbiAgICAgIGNvbnN0IHcgPSBhW3ldLCBfID0gdyArIGYsIEMgPSB3ICsgYywgTSA9IHAgKyBfLCBGID0gcCArIEM7XG4gICAgICBlW3ddID0ge30sIGVbd11bZl0gPSBNLCBlW3ddW2NdID0gRjtcbiAgICB9XG4gICAgY29uc3QgVCA9IHQuRXZlbnRUYXJnZXQ7XG4gICAgaWYgKCEoIVQgfHwgIVQucHJvdG90eXBlKSlcbiAgICAgIHJldHVybiBuLnBhdGNoRXZlbnRUYXJnZXQodCwgbiwgW1QgJiYgVC5wcm90b3R5cGVdKSwgdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiBPdCh0LCBuKSB7XG4gICAgbi5wYXRjaEV2ZW50UHJvdG90eXBlKHQsIG4pO1xuICB9XG4gIGZ1bmN0aW9uIGF0KHQsIG4sIGEpIHtcbiAgICBpZiAoIWEgfHwgYS5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gbjtcbiAgICBjb25zdCBlID0gYS5maWx0ZXIoKGYpID0+IGYudGFyZ2V0ID09PSB0KTtcbiAgICBpZiAoZS5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gbjtcbiAgICBjb25zdCBjID0gZVswXS5pZ25vcmVQcm9wZXJ0aWVzO1xuICAgIHJldHVybiBuLmZpbHRlcigoZikgPT4gYy5pbmRleE9mKGYpID09PSAtMSk7XG4gIH1cbiAgZnVuY3Rpb24gbHQodCwgbiwgYSwgZSkge1xuICAgIGlmICghdClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBjID0gYXQodCwgbiwgYSk7XG4gICAgUWUodCwgYywgZSk7XG4gIH1cbiAgZnVuY3Rpb24gQmUodCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5maWx0ZXIoKG4pID0+IG4uc3RhcnRzV2l0aChcIm9uXCIpICYmIG4ubGVuZ3RoID4gMikubWFwKChuKSA9PiBuLnN1YnN0cmluZygyKSk7XG4gIH1cbiAgZnVuY3Rpb24gTnQodCwgbikge1xuICAgIGlmIChaZSAmJiAhJGUgfHwgWm9uZVt0LnN5bWJvbChcInBhdGNoRXZlbnRzXCIpXSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBhID0gbi5fX1pvbmVfaWdub3JlX29uX3Byb3BlcnRpZXM7XG4gICAgbGV0IGUgPSBbXTtcbiAgICBpZiAoemUpIHtcbiAgICAgIGNvbnN0IGMgPSB3aW5kb3c7XG4gICAgICBlID0gZS5jb25jYXQoW1xuICAgICAgICBcIkRvY3VtZW50XCIsXG4gICAgICAgIFwiU1ZHRWxlbWVudFwiLFxuICAgICAgICBcIkVsZW1lbnRcIixcbiAgICAgICAgXCJIVE1MRWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxCb2R5RWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxNZWRpYUVsZW1lbnRcIixcbiAgICAgICAgXCJIVE1MRnJhbWVTZXRFbGVtZW50XCIsXG4gICAgICAgIFwiSFRNTEZyYW1lRWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxJRnJhbWVFbGVtZW50XCIsXG4gICAgICAgIFwiSFRNTE1hcnF1ZWVFbGVtZW50XCIsXG4gICAgICAgIFwiV29ya2VyXCJcbiAgICAgIF0pO1xuICAgICAgY29uc3QgZiA9IFtdO1xuICAgICAgbHQoYywgQmUoYyksIGEgJiYgYS5jb25jYXQoZiksIGllKGMpKTtcbiAgICB9XG4gICAgZSA9IGUuY29uY2F0KFtcbiAgICAgIFwiWE1MSHR0cFJlcXVlc3RcIixcbiAgICAgIFwiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldFwiLFxuICAgICAgXCJJREJJbmRleFwiLFxuICAgICAgXCJJREJSZXF1ZXN0XCIsXG4gICAgICBcIklEQk9wZW5EQlJlcXVlc3RcIixcbiAgICAgIFwiSURCRGF0YWJhc2VcIixcbiAgICAgIFwiSURCVHJhbnNhY3Rpb25cIixcbiAgICAgIFwiSURCQ3Vyc29yXCIsXG4gICAgICBcIldlYlNvY2tldFwiXG4gICAgXSk7XG4gICAgZm9yIChsZXQgYyA9IDA7IGMgPCBlLmxlbmd0aDsgYysrKSB7XG4gICAgICBjb25zdCBmID0gbltlW2NdXTtcbiAgICAgIGY/LnByb3RvdHlwZSAmJiBsdChmLnByb3RvdHlwZSwgQmUoZi5wcm90b3R5cGUpLCBhKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gWnQodCkge1xuICAgIHQuX19sb2FkX3BhdGNoKFwibGVnYWN5XCIsIChuKSA9PiB7XG4gICAgICBjb25zdCBhID0gblt0Ll9fc3ltYm9sX18oXCJsZWdhY3lQYXRjaFwiKV07XG4gICAgICBhICYmIGEoKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJ0aW1lcnNcIiwgKG4pID0+IHtcbiAgICAgIGNvbnN0IGUgPSBcImNsZWFyXCI7XG4gICAgICBiZShuLCBcInNldFwiLCBlLCBcIlRpbWVvdXRcIiksIGJlKG4sIFwic2V0XCIsIGUsIFwiSW50ZXJ2YWxcIiksIGJlKG4sIFwic2V0XCIsIGUsIFwiSW1tZWRpYXRlXCIpO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiLCAobikgPT4ge1xuICAgICAgYmUobiwgXCJyZXF1ZXN0XCIsIFwiY2FuY2VsXCIsIFwiQW5pbWF0aW9uRnJhbWVcIiksIGJlKG4sIFwibW96UmVxdWVzdFwiLCBcIm1vekNhbmNlbFwiLCBcIkFuaW1hdGlvbkZyYW1lXCIpLCBiZShuLCBcIndlYmtpdFJlcXVlc3RcIiwgXCJ3ZWJraXRDYW5jZWxcIiwgXCJBbmltYXRpb25GcmFtZVwiKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJibG9ja2luZ1wiLCAobiwgYSkgPT4ge1xuICAgICAgY29uc3QgZSA9IFtcImFsZXJ0XCIsIFwicHJvbXB0XCIsIFwiY29uZmlybVwiXTtcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgZS5sZW5ndGg7IGMrKykge1xuICAgICAgICBjb25zdCBmID0gZVtjXTtcbiAgICAgICAgRWUobiwgZiwgKHAsIFQsIHkpID0+IGZ1bmN0aW9uKHcsIF8pIHtcbiAgICAgICAgICByZXR1cm4gYS5jdXJyZW50LnJ1bihwLCBuLCBfLCB5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwiRXZlbnRUYXJnZXRcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIE90KG4sIGUpLCBTdChuLCBlKTtcbiAgICAgIGNvbnN0IGMgPSBuLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7XG4gICAgICBjICYmIGMucHJvdG90eXBlICYmIGUucGF0Y2hFdmVudFRhcmdldChuLCBlLCBbYy5wcm90b3R5cGVdKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJNdXRhdGlvbk9ic2VydmVyXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBTZShcIk11dGF0aW9uT2JzZXJ2ZXJcIiksIFNlKFwiV2ViS2l0TXV0YXRpb25PYnNlcnZlclwiKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiLCAobiwgYSwgZSkgPT4ge1xuICAgICAgU2UoXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJGaWxlUmVhZGVyXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBTZShcIkZpbGVSZWFkZXJcIik7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwib25fcHJvcGVydHlcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIE50KGUsIG4pO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcImN1c3RvbUVsZW1lbnRzXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBEdChuLCBlKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJYSFJcIiwgKG4sIGEpID0+IHtcbiAgICAgIHcobik7XG4gICAgICBjb25zdCBlID0gSChcInhoclRhc2tcIiksIGMgPSBIKFwieGhyU3luY1wiKSwgZiA9IEgoXCJ4aHJMaXN0ZW5lclwiKSwgcCA9IEgoXCJ4aHJTY2hlZHVsZWRcIiksIFQgPSBIKFwieGhyVVJMXCIpLCB5ID0gSChcInhockVycm9yQmVmb3JlU2NoZWR1bGVkXCIpO1xuICAgICAgZnVuY3Rpb24gdyhfKSB7XG4gICAgICAgIGNvbnN0IEMgPSBfLlhNTEh0dHBSZXF1ZXN0O1xuICAgICAgICBpZiAoIUMpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBNID0gQy5wcm90b3R5cGU7XG4gICAgICAgIGZ1bmN0aW9uIEYoUCkge1xuICAgICAgICAgIHJldHVybiBQW2VdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBYID0gTVtqZV0sIG5lID0gTVtIZV07XG4gICAgICAgIGlmICghWCkge1xuICAgICAgICAgIGNvbnN0IFAgPSBfLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7XG4gICAgICAgICAgaWYgKFApIHtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBQLnByb3RvdHlwZTtcbiAgICAgICAgICAgIFggPSBiW2plXSwgbmUgPSBiW0hlXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmUgPSBcInJlYWR5c3RhdGVjaGFuZ2VcIiwgSiA9IFwic2NoZWR1bGVkXCI7XG4gICAgICAgIGZ1bmN0aW9uIGsoUCkge1xuICAgICAgICAgIGNvbnN0IGIgPSBQLmRhdGEsIEQgPSBiLnRhcmdldDtcbiAgICAgICAgICBEW3BdID0gZmFsc2UsIERbeV0gPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBvZSA9IERbZl07XG4gICAgICAgICAgWCB8fCAoWCA9IERbamVdLCBuZSA9IERbSGVdKSwgb2UgJiYgbmUuY2FsbChELCByZSwgb2UpO1xuICAgICAgICAgIGNvbnN0ICQgPSBEW2ZdID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKEQucmVhZHlTdGF0ZSA9PT0gRC5ET05FKVxuICAgICAgICAgICAgICBpZiAoIWIuYWJvcnRlZCAmJiBEW3BdICYmIFAuc3RhdGUgPT09IEopIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gRFthLl9fc3ltYm9sX18oXCJsb2FkZmFsc2VcIildO1xuICAgICAgICAgICAgICAgIGlmIChELnN0YXR1cyAhPT0gMCAmJiBzICYmIHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IFAuaW52b2tlO1xuICAgICAgICAgICAgICAgICAgUC5pbnZva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IERbYS5fX3N5bWJvbF9fKFwibG9hZGZhbHNlXCIpXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgRSA9IDA7IEUgPCByLmxlbmd0aDsgRSsrKVxuICAgICAgICAgICAgICAgICAgICAgIHJbRV0gPT09IFAgJiYgci5zcGxpY2UoRSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICFiLmFib3J0ZWQgJiYgUC5zdGF0ZSA9PT0gSiAmJiBpLmNhbGwoUCk7XG4gICAgICAgICAgICAgICAgICB9LCBzLnB1c2goUCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICBQLmludm9rZSgpO1xuICAgICAgICAgICAgICB9IGVsc2UgIWIuYWJvcnRlZCAmJiBEW3BdID09PSBmYWxzZSAmJiAoRFt5XSA9IHRydWUpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIFguY2FsbChELCByZSwgJCksIERbZV0gfHwgKERbZV0gPSBQKSwgWS5hcHBseShELCBiLmFyZ3MpLCBEW3BdID0gdHJ1ZSwgUDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBkKCkge1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHgoUCkge1xuICAgICAgICAgIGNvbnN0IGIgPSBQLmRhdGE7XG4gICAgICAgICAgcmV0dXJuIGIuYWJvcnRlZCA9IHRydWUsIE8uYXBwbHkoYi50YXJnZXQsIGIuYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgViA9IEVlKE0sIFwib3BlblwiLCAoKSA9PiBmdW5jdGlvbihQLCBiKSB7XG4gICAgICAgICAgcmV0dXJuIFBbY10gPSBiWzJdID09IGZhbHNlLCBQW1RdID0gYlsxXSwgVi5hcHBseShQLCBiKTtcbiAgICAgICAgfSksIEsgPSBcIlhNTEh0dHBSZXF1ZXN0LnNlbmRcIiwgVSA9IEgoXCJmZXRjaFRhc2tBYm9ydGluZ1wiKSwgZyA9IEgoXCJmZXRjaFRhc2tTY2hlZHVsaW5nXCIpLCBZID0gRWUoTSwgXCJzZW5kXCIsICgpID0+IGZ1bmN0aW9uKFAsIGIpIHtcbiAgICAgICAgICBpZiAoYS5jdXJyZW50W2ddID09PSB0cnVlIHx8IFBbY10pXG4gICAgICAgICAgICByZXR1cm4gWS5hcHBseShQLCBiKTtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBEID0ge1xuICAgICAgICAgICAgICB0YXJnZXQ6IFAsXG4gICAgICAgICAgICAgIHVybDogUFtUXSxcbiAgICAgICAgICAgICAgaXNQZXJpb2RpYzogZmFsc2UsXG4gICAgICAgICAgICAgIGFyZ3M6IGIsXG4gICAgICAgICAgICAgIGFib3J0ZWQ6IGZhbHNlXG4gICAgICAgICAgICB9LCBvZSA9IEZlKEssIGQsIEQsIGssIHgpO1xuICAgICAgICAgICAgUCAmJiBQW3ldID09PSB0cnVlICYmICFELmFib3J0ZWQgJiYgb2Uuc3RhdGUgPT09IEogJiYgb2UuaW52b2tlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSwgTyA9IEVlKE0sIFwiYWJvcnRcIiwgKCkgPT4gZnVuY3Rpb24oUCwgYikge1xuICAgICAgICAgIGNvbnN0IEQgPSBGKFApO1xuICAgICAgICAgIGlmIChEICYmIHR5cGVvZiBELnR5cGUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKEQuY2FuY2VsRm4gPT0gbnVsbCB8fCBELmRhdGEgJiYgRC5kYXRhLmFib3J0ZWQpXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIEQuem9uZS5jYW5jZWxUYXNrKEQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYS5jdXJyZW50W1VdID09PSB0cnVlKVxuICAgICAgICAgICAgcmV0dXJuIE8uYXBwbHkoUCwgYik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcImdlb2xvY2F0aW9uXCIsIChuKSA9PiB7XG4gICAgICBuLm5hdmlnYXRvciAmJiBuLm5hdmlnYXRvci5nZW9sb2NhdGlvbiAmJiB5dChuLm5hdmlnYXRvci5nZW9sb2NhdGlvbiwgW1wiZ2V0Q3VycmVudFBvc2l0aW9uXCIsIFwid2F0Y2hQb3NpdGlvblwiXSk7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwiUHJvbWlzZVJlamVjdGlvbkV2ZW50XCIsIChuLCBhKSA9PiB7XG4gICAgICBmdW5jdGlvbiBlKGMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgICBjdChuLCBjKS5mb3JFYWNoKChUKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB5ID0gbi5Qcm9taXNlUmVqZWN0aW9uRXZlbnQ7XG4gICAgICAgICAgICBpZiAoeSkge1xuICAgICAgICAgICAgICBjb25zdCB3ID0gbmV3IHkoYywge1xuICAgICAgICAgICAgICAgIHByb21pc2U6IGYucHJvbWlzZSxcbiAgICAgICAgICAgICAgICByZWFzb246IGYucmVqZWN0aW9uXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBULmludm9rZSh3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIG4uUHJvbWlzZVJlamVjdGlvbkV2ZW50ICYmIChhW0goXCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlclwiKV0gPSBlKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIpLCBhW0goXCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlclwiKV0gPSBlKFwicmVqZWN0aW9uaGFuZGxlZFwiKSk7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwicXVldWVNaWNyb3Rhc2tcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIHd0KG4sIGUpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIEx0KHQpIHtcbiAgICB0Ll9fbG9hZF9wYXRjaChcIlpvbmVBd2FyZVByb21pc2VcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIGNvbnN0IGMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBmID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuICAgICAgZnVuY3Rpb24gcChoKSB7XG4gICAgICAgIGlmIChoICYmIGgudG9TdHJpbmcgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHtcbiAgICAgICAgICBjb25zdCBsID0gaC5jb25zdHJ1Y3RvciAmJiBoLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgICAgcmV0dXJuIChsIHx8IFwiXCIpICsgXCI6IFwiICsgSlNPTi5zdHJpbmdpZnkoaCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGggPyBoLnRvU3RyaW5nKCkgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaCk7XG4gICAgICB9XG4gICAgICBjb25zdCBUID0gZS5zeW1ib2wsIHkgPSBbXSwgdyA9IG5bVChcIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT05cIildICE9PSBmYWxzZSwgXyA9IFQoXCJQcm9taXNlXCIpLCBDID0gVChcInRoZW5cIiksIE0gPSBcIl9fY3JlYXRpb25UcmFjZV9fXCI7XG4gICAgICBlLm9uVW5oYW5kbGVkRXJyb3IgPSAoaCkgPT4ge1xuICAgICAgICBpZiAoZS5zaG93VW5jYXVnaHRFcnJvcigpKSB7XG4gICAgICAgICAgY29uc3QgbCA9IGggJiYgaC5yZWplY3Rpb247XG4gICAgICAgICAgbCA/IGNvbnNvbGUuZXJyb3IoXCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246XCIsIGwgaW5zdGFuY2VvZiBFcnJvciA/IGwubWVzc2FnZSA6IGwsIFwiOyBab25lOlwiLCBoLnpvbmUubmFtZSwgXCI7IFRhc2s6XCIsIGgudGFzayAmJiBoLnRhc2suc291cmNlLCBcIjsgVmFsdWU6XCIsIGwsIGwgaW5zdGFuY2VvZiBFcnJvciA/IGwuc3RhY2sgOiB2b2lkIDApIDogY29uc29sZS5lcnJvcihoKTtcbiAgICAgICAgfVxuICAgICAgfSwgZS5taWNyb3Rhc2tEcmFpbkRvbmUgPSAoKSA9PiB7XG4gICAgICAgIGZvciAoOyB5Lmxlbmd0aDsgKSB7XG4gICAgICAgICAgY29uc3QgaCA9IHkuc2hpZnQoKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaC56b25lLnJ1bkd1YXJkZWQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBoLnRocm93T3JpZ2luYWwgPyBoLnJlamVjdGlvbiA6IGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgICAgICBYKGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IEYgPSBUKFwidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXJcIik7XG4gICAgICBmdW5jdGlvbiBYKGgpIHtcbiAgICAgICAgZS5vblVuaGFuZGxlZEVycm9yKGgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGwgPSBhW0ZdO1xuICAgICAgICAgIHR5cGVvZiBsID09IFwiZnVuY3Rpb25cIiAmJiBsLmNhbGwodGhpcywgaCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBuZShoKSB7XG4gICAgICAgIHJldHVybiBoICYmIHR5cGVvZiBoLnRoZW4gPT0gXCJmdW5jdGlvblwiO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcmUoaCkge1xuICAgICAgICByZXR1cm4gaDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIEooaCkge1xuICAgICAgICByZXR1cm4gQS5yZWplY3QoaCk7XG4gICAgICB9XG4gICAgICBjb25zdCBrID0gVChcInN0YXRlXCIpLCBkID0gVChcInZhbHVlXCIpLCB4ID0gVChcImZpbmFsbHlcIiksIFYgPSBUKFwicGFyZW50UHJvbWlzZVZhbHVlXCIpLCBLID0gVChcInBhcmVudFByb21pc2VTdGF0ZVwiKSwgVSA9IFwiUHJvbWlzZS50aGVuXCIsIGcgPSBudWxsLCBZID0gdHJ1ZSwgTyA9IGZhbHNlLCBQID0gMDtcbiAgICAgIGZ1bmN0aW9uIGIoaCwgbCkge1xuICAgICAgICByZXR1cm4gKG8pID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgSShoLCBsLCBvKTtcbiAgICAgICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgICAgICBJKGgsIGZhbHNlLCB1KTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBEID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGxldCBoID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaCB8fCAoaCA9IHRydWUsIG8uYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgIH0sIG9lID0gXCJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmXCIsICQgPSBUKFwiY3VycmVudFRhc2tUcmFjZVwiKTtcbiAgICAgIGZ1bmN0aW9uIEkoaCwgbCwgbykge1xuICAgICAgICBjb25zdCB1ID0gRCgpO1xuICAgICAgICBpZiAoaCA9PT0gbylcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG9lKTtcbiAgICAgICAgaWYgKGhba10gPT09IGcpIHtcbiAgICAgICAgICBsZXQgdiA9IG51bGw7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBvID09IFwiZnVuY3Rpb25cIikgJiYgKHYgPSBvICYmIG8udGhlbik7XG4gICAgICAgICAgfSBjYXRjaCAoUikge1xuICAgICAgICAgICAgcmV0dXJuIHUoKCkgPT4ge1xuICAgICAgICAgICAgICBJKGgsIGZhbHNlLCBSKTtcbiAgICAgICAgICAgIH0pKCksIGg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsICE9PSBPICYmIG8gaW5zdGFuY2VvZiBBICYmIG8uaGFzT3duUHJvcGVydHkoaykgJiYgby5oYXNPd25Qcm9wZXJ0eShkKSAmJiBvW2tdICE9PSBnKVxuICAgICAgICAgICAgaShvKSwgSShoLCBvW2tdLCBvW2RdKTtcbiAgICAgICAgICBlbHNlIGlmIChsICE9PSBPICYmIHR5cGVvZiB2ID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHYuY2FsbChvLCB1KGIoaCwgbCkpLCB1KGIoaCwgITEpKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChSKSB7XG4gICAgICAgICAgICAgIHUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIEkoaCwgZmFsc2UsIFIpO1xuICAgICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaFtrXSA9IGw7XG4gICAgICAgICAgICBjb25zdCBSID0gaFtkXTtcbiAgICAgICAgICAgIGlmIChoW2RdID0gbywgaFt4XSA9PT0geCAmJiBsID09PSBZICYmIChoW2tdID0gaFtLXSwgaFtkXSA9IGhbVl0pLCBsID09PSBPICYmIG8gaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICBjb25zdCBtID0gYS5jdXJyZW50VGFzayAmJiBhLmN1cnJlbnRUYXNrLmRhdGEgJiYgYS5jdXJyZW50VGFzay5kYXRhW01dO1xuICAgICAgICAgICAgICBtICYmIGYobywgJCwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgUi5sZW5ndGg7IClcbiAgICAgICAgICAgICAgcihoLCBSW20rK10sIFJbbSsrXSwgUlttKytdLCBSW20rK10pO1xuICAgICAgICAgICAgaWYgKFIubGVuZ3RoID09IDAgJiYgbCA9PSBPKSB7XG4gICAgICAgICAgICAgIGhba10gPSBQO1xuICAgICAgICAgICAgICBsZXQgbSA9IG87XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5jYXVnaHQgKGluIHByb21pc2UpOiBcIiArIHAobykgKyAobyAmJiBvLnN0YWNrID8gYFxuYCArIG8uc3RhY2sgOiBcIlwiKSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKE4pIHtcbiAgICAgICAgICAgICAgICBtID0gTjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3ICYmIChtLnRocm93T3JpZ2luYWwgPSB0cnVlKSwgbS5yZWplY3Rpb24gPSBvLCBtLnByb21pc2UgPSBoLCBtLnpvbmUgPSBhLmN1cnJlbnQsIG0udGFzayA9IGEuY3VycmVudFRhc2ssIHkucHVzaChtKSwgZS5zY2hlZHVsZU1pY3JvVGFzaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHMgPSBUKFwicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXJcIik7XG4gICAgICBmdW5jdGlvbiBpKGgpIHtcbiAgICAgICAgaWYgKGhba10gPT09IFApIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbCA9IGFbc107XG4gICAgICAgICAgICBsICYmIHR5cGVvZiBsID09IFwiZnVuY3Rpb25cIiAmJiBsLmNhbGwodGhpcywgeyByZWplY3Rpb246IGhbZF0sIHByb21pc2U6IGggfSk7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgfVxuICAgICAgICAgIGhba10gPSBPO1xuICAgICAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgeS5sZW5ndGg7IGwrKylcbiAgICAgICAgICAgIGggPT09IHlbbF0ucHJvbWlzZSAmJiB5LnNwbGljZShsLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcihoLCBsLCBvLCB1LCB2KSB7XG4gICAgICAgIGkoaCk7XG4gICAgICAgIGNvbnN0IFIgPSBoW2tdLCBtID0gUiA/IHR5cGVvZiB1ID09IFwiZnVuY3Rpb25cIiA/IHUgOiByZSA6IHR5cGVvZiB2ID09IFwiZnVuY3Rpb25cIiA/IHYgOiBKO1xuICAgICAgICBsLnNjaGVkdWxlTWljcm9UYXNrKFUsICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgTiA9IGhbZF0sIFogPSAhIW8gJiYgeCA9PT0gb1t4XTtcbiAgICAgICAgICAgIFogJiYgKG9bVl0gPSBOLCBvW0tdID0gUik7XG4gICAgICAgICAgICBjb25zdCBMID0gbC5ydW4obSwgdm9pZCAwLCBaICYmIG0gIT09IEogJiYgbSAhPT0gcmUgPyBbXSA6IFtOXSk7XG4gICAgICAgICAgICBJKG8sICEwLCBMKTtcbiAgICAgICAgICB9IGNhdGNoIChOKSB7XG4gICAgICAgICAgICBJKG8sIGZhbHNlLCBOKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG8pO1xuICAgICAgfVxuICAgICAgY29uc3QgRSA9IFwiZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsgW25hdGl2ZSBjb2RlXSB9XCIsIEcgPSBmdW5jdGlvbigpIHtcbiAgICAgIH0sIGNlID0gbi5BZ2dyZWdhdGVFcnJvcjtcbiAgICAgIGNsYXNzIEEge1xuICAgICAgICBzdGF0aWMgdG9TdHJpbmcoKSB7XG4gICAgICAgICAgcmV0dXJuIEU7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIHJlc29sdmUobCkge1xuICAgICAgICAgIHJldHVybiBsIGluc3RhbmNlb2YgQSA/IGwgOiBJKG5ldyB0aGlzKG51bGwpLCBZLCBsKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgcmVqZWN0KGwpIHtcbiAgICAgICAgICByZXR1cm4gSShuZXcgdGhpcyhudWxsKSwgTywgbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIHdpdGhSZXNvbHZlcnMoKSB7XG4gICAgICAgICAgY29uc3QgbCA9IHt9O1xuICAgICAgICAgIHJldHVybiBsLnByb21pc2UgPSBuZXcgQSgobywgdSkgPT4ge1xuICAgICAgICAgICAgbC5yZXNvbHZlID0gbywgbC5yZWplY3QgPSB1O1xuICAgICAgICAgIH0pLCBsO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBhbnkobCkge1xuICAgICAgICAgIGlmICghbCB8fCB0eXBlb2YgbFtTeW1ib2wuaXRlcmF0b3JdICE9IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgY2UoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICAgIGNvbnN0IG8gPSBbXTtcbiAgICAgICAgICBsZXQgdSA9IDA7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAobGV0IG0gb2YgbClcbiAgICAgICAgICAgICAgdSsrLCBvLnB1c2goQS5yZXNvbHZlKG0pKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgY2UoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodSA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgY2UoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICAgIGxldCB2ID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgUiA9IFtdO1xuICAgICAgICAgIHJldHVybiBuZXcgQSgobSwgTikgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgWiA9IDA7IFogPCBvLmxlbmd0aDsgWisrKVxuICAgICAgICAgICAgICBvW1pdLnRoZW4oKEwpID0+IHtcbiAgICAgICAgICAgICAgICB2IHx8ICh2ID0gdHJ1ZSwgbShMKSk7XG4gICAgICAgICAgICAgIH0sIChMKSA9PiB7XG4gICAgICAgICAgICAgICAgUi5wdXNoKEwpLCB1LS0sIHUgPT09IDAgJiYgKHYgPSB0cnVlLCBOKG5ldyBjZShSLCBcIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkXCIpKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyByYWNlKGwpIHtcbiAgICAgICAgICBsZXQgbywgdSwgdiA9IG5ldyB0aGlzKChOLCBaKSA9PiB7XG4gICAgICAgICAgICBvID0gTiwgdSA9IFo7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZnVuY3Rpb24gUihOKSB7XG4gICAgICAgICAgICBvKE4pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBtKE4pIHtcbiAgICAgICAgICAgIHUoTik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IE4gb2YgbClcbiAgICAgICAgICAgIG5lKE4pIHx8IChOID0gdGhpcy5yZXNvbHZlKE4pKSwgTi50aGVuKFIsIG0pO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBhbGwobCkge1xuICAgICAgICAgIHJldHVybiBBLmFsbFdpdGhDYWxsYmFjayhsKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgYWxsU2V0dGxlZChsKSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzICYmIHRoaXMucHJvdG90eXBlIGluc3RhbmNlb2YgQSA/IHRoaXMgOiBBKS5hbGxXaXRoQ2FsbGJhY2sobCwge1xuICAgICAgICAgICAgdGhlbkNhbGxiYWNrOiAodSkgPT4gKHsgc3RhdHVzOiBcImZ1bGZpbGxlZFwiLCB2YWx1ZTogdSB9KSxcbiAgICAgICAgICAgIGVycm9yQ2FsbGJhY2s6ICh1KSA9PiAoeyBzdGF0dXM6IFwicmVqZWN0ZWRcIiwgcmVhc29uOiB1IH0pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGFsbFdpdGhDYWxsYmFjayhsLCBvKSB7XG4gICAgICAgICAgbGV0IHUsIHYsIFIgPSBuZXcgdGhpcygoTCwgVykgPT4ge1xuICAgICAgICAgICAgdSA9IEwsIHYgPSBXO1xuICAgICAgICAgIH0pLCBtID0gMiwgTiA9IDA7XG4gICAgICAgICAgY29uc3QgWiA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IEwgb2YgbCkge1xuICAgICAgICAgICAgbmUoTCkgfHwgKEwgPSB0aGlzLnJlc29sdmUoTCkpO1xuICAgICAgICAgICAgY29uc3QgVyA9IE47XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBMLnRoZW4oKHEpID0+IHtcbiAgICAgICAgICAgICAgICBaW1ddID0gbyA/IG8udGhlbkNhbGxiYWNrKHEpIDogcSwgbS0tLCBtID09PSAwICYmIHUoWik7XG4gICAgICAgICAgICAgIH0sIChxKSA9PiB7XG4gICAgICAgICAgICAgICAgbyA/IChaW1ddID0gby5lcnJvckNhbGxiYWNrKHEpLCBtLS0sIG0gPT09IDAgJiYgdShaKSkgOiB2KHEpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHEpIHtcbiAgICAgICAgICAgICAgdihxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG0rKywgTisrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbSAtPSAyLCBtID09PSAwICYmIHUoWiksIFI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3RydWN0b3IobCkge1xuICAgICAgICAgIGNvbnN0IG8gPSB0aGlzO1xuICAgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBBKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLlwiKTtcbiAgICAgICAgICBvW2tdID0gZywgb1tkXSA9IFtdO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB1ID0gRCgpO1xuICAgICAgICAgICAgbCAmJiBsKHUoYihvLCBZKSksIHUoYihvLCBPKSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHUpIHtcbiAgICAgICAgICAgIEkobywgZmFsc2UsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgICAgICAgcmV0dXJuIFwiUHJvbWlzZVwiO1xuICAgICAgICB9XG4gICAgICAgIGdldCBbU3ltYm9sLnNwZWNpZXNdKCkge1xuICAgICAgICAgIHJldHVybiBBO1xuICAgICAgICB9XG4gICAgICAgIHRoZW4obCwgbykge1xuICAgICAgICAgIGxldCB1ID0gdGhpcy5jb25zdHJ1Y3Rvcj8uW1N5bWJvbC5zcGVjaWVzXTtcbiAgICAgICAgICAoIXUgfHwgdHlwZW9mIHUgIT0gXCJmdW5jdGlvblwiKSAmJiAodSA9IHRoaXMuY29uc3RydWN0b3IgfHwgQSk7XG4gICAgICAgICAgY29uc3QgdiA9IG5ldyB1KEcpLCBSID0gYS5jdXJyZW50O1xuICAgICAgICAgIHJldHVybiB0aGlzW2tdID09IGcgPyB0aGlzW2RdLnB1c2goUiwgdiwgbCwgbykgOiByKHRoaXMsIFIsIHYsIGwsIG8pLCB2O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoKGwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIGwpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkobCkge1xuICAgICAgICAgIGxldCBvID0gdGhpcy5jb25zdHJ1Y3Rvcj8uW1N5bWJvbC5zcGVjaWVzXTtcbiAgICAgICAgICAoIW8gfHwgdHlwZW9mIG8gIT0gXCJmdW5jdGlvblwiKSAmJiAobyA9IEEpO1xuICAgICAgICAgIGNvbnN0IHUgPSBuZXcgbyhHKTtcbiAgICAgICAgICB1W3hdID0geDtcbiAgICAgICAgICBjb25zdCB2ID0gYS5jdXJyZW50O1xuICAgICAgICAgIHJldHVybiB0aGlzW2tdID09IGcgPyB0aGlzW2RdLnB1c2godiwgdSwgbCwgbCkgOiByKHRoaXMsIHYsIHUsIGwsIGwpLCB1O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBBLnJlc29sdmUgPSBBLnJlc29sdmUsIEEucmVqZWN0ID0gQS5yZWplY3QsIEEucmFjZSA9IEEucmFjZSwgQS5hbGwgPSBBLmFsbDtcbiAgICAgIGNvbnN0IGdlID0gbltfXSA9IG4uUHJvbWlzZTtcbiAgICAgIG4uUHJvbWlzZSA9IEE7XG4gICAgICBjb25zdCB5ZSA9IFQoXCJ0aGVuUGF0Y2hlZFwiKTtcbiAgICAgIGZ1bmN0aW9uIHNlKGgpIHtcbiAgICAgICAgY29uc3QgbCA9IGgucHJvdG90eXBlLCBvID0gYyhsLCBcInRoZW5cIik7XG4gICAgICAgIGlmIChvICYmIChvLndyaXRhYmxlID09PSBmYWxzZSB8fCAhby5jb25maWd1cmFibGUpKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdSA9IGwudGhlbjtcbiAgICAgICAgbFtDXSA9IHUsIGgucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbih2LCBSKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBBKChOLCBaKSA9PiB7XG4gICAgICAgICAgICB1LmNhbGwodGhpcywgTiwgWik7XG4gICAgICAgICAgfSkudGhlbih2LCBSKTtcbiAgICAgICAgfSwgaFt5ZV0gPSB0cnVlO1xuICAgICAgfVxuICAgICAgZS5wYXRjaFRoZW4gPSBzZTtcbiAgICAgIGZ1bmN0aW9uIENlKGgpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGwsIG8pIHtcbiAgICAgICAgICBsZXQgdSA9IGguYXBwbHkobCwgbyk7XG4gICAgICAgICAgaWYgKHUgaW5zdGFuY2VvZiBBKVxuICAgICAgICAgICAgcmV0dXJuIHU7XG4gICAgICAgICAgbGV0IHYgPSB1LmNvbnN0cnVjdG9yO1xuICAgICAgICAgIHJldHVybiB2W3llXSB8fCBzZSh2KSwgdTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZSAmJiAoc2UoZ2UpLCBFZShuLCBcImZldGNoXCIsIChoKSA9PiBDZShoKSkpLCBQcm9taXNlW2EuX19zeW1ib2xfXyhcInVuY2F1Z2h0UHJvbWlzZUVycm9yc1wiKV0gPSB5LCBBO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIE10KHQpIHtcbiAgICB0Ll9fbG9hZF9wYXRjaChcInRvU3RyaW5nXCIsIChuKSA9PiB7XG4gICAgICBjb25zdCBhID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLCBlID0gSChcIk9yaWdpbmFsRGVsZWdhdGVcIiksIGMgPSBIKFwiUHJvbWlzZVwiKSwgZiA9IEgoXCJFcnJvclwiKSwgcCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgY29uc3QgXyA9IHRoaXNbZV07XG4gICAgICAgICAgaWYgKF8pXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIF8gPT0gXCJmdW5jdGlvblwiID8gYS5jYWxsKF8pIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKF8pO1xuICAgICAgICAgIGlmICh0aGlzID09PSBQcm9taXNlKSB7XG4gICAgICAgICAgICBjb25zdCBDID0gbltjXTtcbiAgICAgICAgICAgIGlmIChDKVxuICAgICAgICAgICAgICByZXR1cm4gYS5jYWxsKEMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcyA9PT0gRXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IEMgPSBuW2ZdO1xuICAgICAgICAgICAgaWYgKEMpXG4gICAgICAgICAgICAgIHJldHVybiBhLmNhbGwoQyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhLmNhbGwodGhpcyk7XG4gICAgICB9O1xuICAgICAgcFtlXSA9IGEsIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IHA7XG4gICAgICBjb25zdCBUID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZywgeSA9IFwiW29iamVjdCBQcm9taXNlXVwiO1xuICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIFByb21pc2UgPT0gXCJmdW5jdGlvblwiICYmIHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlID8geSA6IFQuY2FsbCh0aGlzKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gSXQodCwgbiwgYSwgZSwgYykge1xuICAgIGNvbnN0IGYgPSBab25lLl9fc3ltYm9sX18oZSk7XG4gICAgaWYgKG5bZl0pXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgcCA9IG5bZl0gPSBuW2VdO1xuICAgIG5bZV0gPSBmdW5jdGlvbihULCB5LCB3KSB7XG4gICAgICByZXR1cm4geSAmJiB5LnByb3RvdHlwZSAmJiBjLmZvckVhY2goZnVuY3Rpb24oXykge1xuICAgICAgICBjb25zdCBDID0gYCR7YX0uJHtlfTo6YCArIF8sIE0gPSB5LnByb3RvdHlwZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoTS5oYXNPd25Qcm9wZXJ0eShfKSkge1xuICAgICAgICAgICAgY29uc3QgRiA9IHQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE0sIF8pO1xuICAgICAgICAgICAgRiAmJiBGLnZhbHVlID8gKEYudmFsdWUgPSB0LndyYXBXaXRoQ3VycmVudFpvbmUoRi52YWx1ZSwgQyksIHQuX3JlZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsIF8sIEYpKSA6IE1bX10gJiYgKE1bX10gPSB0LndyYXBXaXRoQ3VycmVudFpvbmUoTVtfXSwgQykpO1xuICAgICAgICAgIH0gZWxzZSBNW19dICYmIChNW19dID0gdC53cmFwV2l0aEN1cnJlbnRab25lKE1bX10sIEMpKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgIH1cbiAgICAgIH0pLCBwLmNhbGwobiwgVCwgeSwgdyk7XG4gICAgfSwgdC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQobltlXSwgcCk7XG4gIH1cbiAgZnVuY3Rpb24gQXQodCkge1xuICAgIHQuX19sb2FkX3BhdGNoKFwidXRpbFwiLCAobiwgYSwgZSkgPT4ge1xuICAgICAgY29uc3QgYyA9IEJlKG4pO1xuICAgICAgZS5wYXRjaE9uUHJvcGVydGllcyA9IFFlLCBlLnBhdGNoTWV0aG9kID0gRWUsIGUuYmluZEFyZ3VtZW50cyA9IFZlLCBlLnBhdGNoTWFjcm9UYXNrID0gdnQ7XG4gICAgICBjb25zdCBmID0gYS5fX3N5bWJvbF9fKFwiQkxBQ0tfTElTVEVEX0VWRU5UU1wiKSwgcCA9IGEuX19zeW1ib2xfXyhcIlVOUEFUQ0hFRF9FVkVOVFNcIik7XG4gICAgICBuW3BdICYmIChuW2ZdID0gbltwXSksIG5bZl0gJiYgKGFbZl0gPSBhW3BdID0gbltmXSksIGUucGF0Y2hFdmVudFByb3RvdHlwZSA9IFJ0LCBlLnBhdGNoRXZlbnRUYXJnZXQgPSBQdCwgZS5pc0lFT3JFZGdlID0gYnQsIGUuT2JqZWN0RGVmaW5lUHJvcGVydHkgPSB0ZSwgZS5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBlZSwgZS5PYmplY3RDcmVhdGUgPSBmZSwgZS5BcnJheVNsaWNlID0ga2UsIGUucGF0Y2hDbGFzcyA9IFNlLCBlLndyYXBXaXRoQ3VycmVudFpvbmUgPSB4ZSwgZS5maWx0ZXJQcm9wZXJ0aWVzID0gYXQsIGUuYXR0YWNoT3JpZ2luVG9QYXRjaGVkID0gcGUsIGUuX3JlZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksIGUucGF0Y2hDYWxsYmFja3MgPSBJdCwgZS5nZXRHbG9iYWxPYmplY3RzID0gKCkgPT4gKHtcbiAgICAgICAgZ2xvYmFsU291cmNlczogcnQsXG4gICAgICAgIHpvbmVTeW1ib2xFdmVudE5hbWVzOiBhZSxcbiAgICAgICAgZXZlbnROYW1lczogYyxcbiAgICAgICAgaXNCcm93c2VyOiB6ZSxcbiAgICAgICAgaXNNaXg6ICRlLFxuICAgICAgICBpc05vZGU6IFplLFxuICAgICAgICBUUlVFX1NUUjogX2UsXG4gICAgICAgIEZBTFNFX1NUUjogVGUsXG4gICAgICAgIFpPTkVfU1lNQk9MX1BSRUZJWDogd2UsXG4gICAgICAgIEFERF9FVkVOVF9MSVNURU5FUl9TVFI6IHZlLFxuICAgICAgICBSRU1PVkVfRVZFTlRfTElTVEVORVJfU1RSOiBBZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24ganQodCkge1xuICAgIEx0KHQpLCBNdCh0KSwgQXQodCk7XG4gIH1cbiAgY29uc3QgdXQgPSB6KCk7XG4gIHJldHVybiBqdCh1dCksIFp0KHV0KSwgcHQ7XG59XG5GdCgpO1xuXG5leHBvcnQgeyB6dCBhcyBab25lQ29udGV4dE1hbmFnZXIgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLFVBQVU7QUFFeEIsU0FBU0MsR0FBR0MsR0FBRztBQUNiLFNBQU9BLE1BQU0sV0FBV0EsSUFBSSxDQUFDLElBQUksT0FBT0EsRUFBRSxvQkFBb0IsY0FBYyxPQUFPQSxFQUFFLHVCQUF1QjtBQUM5RztBQUNBLElBQUlDLEtBQUssbUJBQW1CQztBQUFBO0FBQUEsR0FFekIsV0FBVztBQUNWLGFBQVNGLElBQUk7QUFDWCxXQUFLLFdBQVcsSUFBTyxLQUFLLGVBQWU7QUFBQSxJQUM3QztBQUNBLFdBQU9BLEVBQUUsVUFBVSx5QkFBeUIsU0FBU0csR0FBRztBQUN0RCxhQUFPQSxLQUFLQSxFQUFFLElBQUlGLEVBQUUsS0FBS0g7QUFBQSxJQUMzQixHQUFHRSxFQUFFLFVBQVUsZ0JBQWdCLFNBQVNHLEdBQUdDLEdBQUc7QUFDNUMsVUFBSUMsSUFBSSxNQUFNLEtBQUssV0FBVztBQUM1QixpQkFBUyxLQUFLLE1BQU1DLEtBQUssQ0FBQyxHQUFHQyxLQUFLLEdB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LG9CQUFvQixPQUFPLGdCQUFnQkEsRUFBRSxpQkFBaUJxRyxJQUFJckcsRUFBRSxtQkFBbUIsT0FBTztBQUFBLFFBQzdhLGVBQWU7QUFBQSxRQUNmLHNCQUFzQjBEO0FBQUEsUUFDdEIsWUFBWW5DO0FBQUEsUUFDWixXQUFXdUI7QUFBQSxRQUNYLE9BQU9DO0FBQUEsUUFDUCxRQUFRRjtBQUFBLFFBQ1IsVUFBVTtBQUFBLFFBQ1YsV0FBV2I7QUFBQSxRQUNYLG9CQUFvQkM7QUFBQSxRQUNwQix3QkFBd0J6QztBQUFBLFFBQ3hCLDJCQUEyQnFDO0FBQUEsTUFDN0I7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQ0EsV0FBUzBFLEdBQUczRyxHQUFHO0FBQ2IsSUFBQXFHLEdBQUdyRyxDQUFDLEdBQUd1RyxHQUFHdkcsQ0FBQyxHQUFHMEcsR0FBRzFHLENBQUM7QUFBQSxFQUNwQjtBQUNBLFFBQU0sS0FBS1IsRUFBRTtBQUNiLFNBQU9tSCxHQUFHLEVBQUUsR0FBR1YsR0FBRyxFQUFFLEdBQUdwRztBQUN6QjtBQUNBRSxHQUFHOyIsCiAgIm5hbWVzIjogWyJRaSIsICJ4dCIsICJqIiwgIkV0IiwgInp0IiwgIlMiLCAiQiIsICJ6IiwgImllIiwgImZlIiwgImtlIiwgInZlIiwgInB0IiwgImd0IiwgIkZ0IiwgInQiLCAiSSIsICJhIiwgInMiLCAiZSIsICJiIiwgIkQiLCAiaSIsICJFIiwgIlAiLCAiZiIsICJHIiwgImNlIiwgIkEiLCAiSiIsICJZIiwgImciLCAiZ2UiLCAieCIsICJkIiwgInllIiwgIksiLCAiayIsICJDZSIsICJwIiwgIlUiLCAiViIsICJjIiwgIlQiLCAiQyIsICJNIiwgIkYiLCAiJCIsICJBZSIsICJqZSIsICJIZSIsICJUZSIsICJ3ZSIsICJ4ZSIsICJGZSIsICJIIiwgIk5lIiwgIkRlIiwgIm10IiwgIlZlIiwgInl0IiwgIlhlIiwgInBlIiwgIlllIiwgIlplIiwgInplIiwgIiRlIiwgIkxlIiwgImt0IiwgIkplIiwgIktlIiwgIlNlIiwgIkVlIiwgInZ0IiwgIkdlIiwgImJ0IiwgIkN0IiwgImFlIiwgIml0IiwgIlB0IiwgInUiLCAidiIsICJSIiwgImgiLCAiTiIsICJaIiwgIkwiLCAibWUiLCAiaGUiLCAiUGUiLCAiZGUiLCAiVWUiLCAiZnQiLCAiSHQiLCAiV2UiLCAiaHQiLCAiUmUiLCAiZHQiLCAiSWUiLCAiVHQiLCAiT2UiLCAiY3QiLCAiUnQiLCAid3QiLCAiTWUiLCAiYmUiLCAiRHQiLCAiU3QiLCAiT3QiLCAiYXQiLCAiQmUiLCAiTnQiLCAiWnQiLCAiciIsICJ5IiwgInciLCAiTHQiLCAibyIsICJNdCIsICJfIiwgIkl0IiwgIkF0IiwgImp0Il0KfQo=