@getopenpay/openpay-js-react 0.5.2 → 0.5.4-alpha.745f12a

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 (28) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{Resource-ClqPz4cT-B63iamRE.js → Resource-DDwQoNEL-BtNvf3FR.js} +3 -3
  3. package/dist/{SimpleSpanProcessor-Nr_3vHRR-DpwU9Aab.js → SimpleSpanProcessor-D70Bwi5r-D_w0jehB.js} +18 -18
  4. package/dist/detect-resources-BSC2dzfy-CqmwmncJ.js +854 -0
  5. package/dist/diag-api-CJh5gJqT-iEDBm-aJ.js +6 -0
  6. package/dist/index-0h1ED0pR-CE8U7IjL.js +150 -0
  7. package/dist/{index-SXk-qCno-CDmD9jUc.js → index-BO56xLq2-CLRN9cx2.js} +5 -5
  8. package/dist/{index-D_nykiTR-C6hMmTZk.js → index-BjluLWoM-leQUT24R.js} +21 -21
  9. package/dist/{index-CH9cpqGO-V1k-wL1j.js → index-CAznt40s-Z-7RjgRr.js} +6 -6
  10. package/dist/index-CJ8rEEUc.js +9112 -0
  11. package/dist/index-CdtBaIbO-BWh23hoK.js +830 -0
  12. package/dist/{index-BsUTJmEM-BcWcG78s.js → index-DFMxgGzs-BSA8TU4k.js} +2 -2
  13. package/dist/{index-C7jh2Wln-B4-4VQCM.js → index-DRYcQ66s-pGLL3Shc.js} +69 -69
  14. package/dist/{index-Dmrzgy93-BunD1EqM.js → index-HwXDP3Pe-DS3xj6cm.js} +2 -2
  15. package/dist/{index-DvRkl7fn-DqTHFOHX.js → index-uCjF0nIN-DrG1K2tf.js} +12 -12
  16. package/dist/index.d.ts +42 -13
  17. package/dist/index.js +7 -7
  18. package/dist/{metrics-api-Cq7Yy_0G-oH7wSx2L.js → metrics-api-B7qVLdHx-Du-Yh-45.js} +12 -12
  19. package/dist/{sdk-info-dGKZKiMh-DY-lzyLf.js → sdk-info-CYGB4K8l-DimobWle.js} +15 -15
  20. package/dist/{url-Cs3e5iPM-IFosTaBW.js → url-BPGxzsvj-CkB-P11L.js} +163 -163
  21. package/dist/{utils-BSElv7-s-BRESJkjR.js → utils-CULcMFge-CPUURlvX.js} +2 -2
  22. package/dist/{utils-BMDrIg4l-xbgtXIR8.js → utils-VlUhsBAR-Dzra4gYA.js} +4 -4
  23. package/package.json +1 -1
  24. package/dist/detect-resources-Bqpyh1Oz-DbIsf0pI.js +0 -854
  25. package/dist/diag-api-BL9yo0U7-CzLzw4JZ.js +0 -6
  26. package/dist/index-D13E8mA3.js +0 -8469
  27. package/dist/index-DQmhSl2i-BNMgdwyf.js +0 -830
  28. package/dist/index-De02Z0PM-DxhXBN8Z.js +0 -150
@@ -0,0 +1,830 @@
1
+ import { y as P, f as yt, dG as dt, dI as ht, p as mt, dD as gt, dH as vt, dJ as _t, b as St, dK as bt, dC as Tt, dF as Pt, a as Ot, O as At, dE as Et, W as wt, g as Rt } from "./url-BPGxzsvj-CkB-P11L.js";
2
+ import { j as E, g as K, z as w, t as jt, $ as W, x as $ } from "./index-CJ8rEEUc.js";
3
+ import { r as d } from "./diag-api-CJh5gJqT-iEDBm-aJ.js";
4
+ import { a as Ct, A as J } from "./ExportResult-Bo1QOwfo-BBnR58Dk.js";
5
+ import { bo as Nt, bp as It, br as xt, bs as Dt, bt as Mt, bq as kt, bm as Ut, bu as $t, O as Lt, bn as Bt, bv as Ft } from "./sdk-info-CYGB4K8l-DimobWle.js";
6
+ import { l as zt } from "./utils-BGeftTvk-CchVJ54o.js";
7
+ var p;
8
+ (function(t) {
9
+ t[t.NOT_RECORD = 0] = "NOT_RECORD", t[t.RECORD = 1] = "RECORD", t[t.RECORD_AND_SAMPLED = 2] = "RECORD_AND_SAMPLED";
10
+ })(p || (p = {}));
11
+ var I = W("OpenTelemetry SDK Context Key SUPPRESS_TRACING");
12
+ function q(t) {
13
+ return t.setValue(I, !0);
14
+ }
15
+ function Ht(t) {
16
+ return t.deleteValue(I);
17
+ }
18
+ function x(t) {
19
+ return t.getValue(I) === !0;
20
+ }
21
+ var Vt = "=", R = ";", S = ",", O = "baggage", Kt = 180, Wt = 4096, Jt = 8192, qt = function(t, r) {
22
+ var e = typeof Symbol == "function" && t[Symbol.iterator];
23
+ if (!e) return t;
24
+ var n = e.call(t), o, a = [], i;
25
+ try {
26
+ for (; (r === void 0 || r-- > 0) && !(o = n.next()).done; ) a.push(o.value);
27
+ } catch (u) {
28
+ i = { error: u };
29
+ } finally {
30
+ try {
31
+ o && !o.done && (e = n.return) && e.call(n);
32
+ } finally {
33
+ if (i) throw i.error;
34
+ }
35
+ }
36
+ return a;
37
+ };
38
+ function G(t) {
39
+ return t.reduce(function(r, e) {
40
+ var n = "" + r + (r !== "" ? S : "") + e;
41
+ return n.length > Jt ? r : n;
42
+ }, "");
43
+ }
44
+ function Q(t) {
45
+ return t.getAllEntries().map(function(r) {
46
+ var e = qt(r, 2), n = e[0], o = e[1], a = encodeURIComponent(n) + "=" + encodeURIComponent(o.value);
47
+ return o.metadata !== void 0 && (a += R + o.metadata.toString()), a;
48
+ });
49
+ }
50
+ function D(t) {
51
+ var r = t.split(R);
52
+ if (!(r.length <= 0)) {
53
+ var e = r.shift();
54
+ if (e) {
55
+ var n = e.indexOf(Vt);
56
+ if (!(n <= 0)) {
57
+ var o = decodeURIComponent(e.substring(0, n).trim()), a = decodeURIComponent(e.substring(n + 1).trim()), i;
58
+ return r.length > 0 && (i = yt(r.join(R))), { key: o, value: a, metadata: i };
59
+ }
60
+ }
61
+ }
62
+ }
63
+ function Gt(t) {
64
+ return typeof t != "string" || t.length === 0 ? {} : t.split(S).map(function(r) {
65
+ return D(r);
66
+ }).filter(function(r) {
67
+ return r !== void 0 && r.value.length > 0;
68
+ }).reduce(function(r, e) {
69
+ return r[e.key] = e.value, r;
70
+ }, {});
71
+ }
72
+ var Qt = (
73
+ /** @class */
74
+ function() {
75
+ function t() {
76
+ }
77
+ return t.prototype.inject = function(r, e, n) {
78
+ var o = P.getBaggage(r);
79
+ if (!(!o || x(r))) {
80
+ var a = Q(o).filter(function(u) {
81
+ return u.length <= Wt;
82
+ }).slice(0, Kt), i = G(a);
83
+ i.length > 0 && n.set(e, O, i);
84
+ }
85
+ }, t.prototype.extract = function(r, e, n) {
86
+ var o = n.get(e, O), a = Array.isArray(o) ? o.join(S) : o;
87
+ if (!a)
88
+ return r;
89
+ var i = {};
90
+ if (a.length === 0)
91
+ return r;
92
+ var u = a.split(S);
93
+ return u.forEach(function(l) {
94
+ var c = D(l);
95
+ if (c) {
96
+ var f = { value: c.value };
97
+ c.metadata && (f.metadata = c.metadata), i[c.key] = f;
98
+ }
99
+ }), Object.entries(i).length === 0 ? r : P.setBaggage(r, P.createBaggage(i));
100
+ }, t.prototype.fields = function() {
101
+ return [O];
102
+ }, t;
103
+ }()
104
+ ), Xt = (
105
+ /** @class */
106
+ function() {
107
+ function t(r, e) {
108
+ this._monotonicClock = e, this._epochMillis = r.now(), this._performanceMillis = e.now();
109
+ }
110
+ return t.prototype.now = function() {
111
+ var r = this._monotonicClock.now() - this._performanceMillis;
112
+ return this._epochMillis + r;
113
+ }, t;
114
+ }()
115
+ ), X = function(t) {
116
+ var r = typeof Symbol == "function" && Symbol.iterator, e = r && t[r], n = 0;
117
+ if (e) return e.call(t);
118
+ if (t && typeof t.length == "number") return {
119
+ next: function() {
120
+ return t && n >= t.length && (t = void 0), { value: t && t[n++], done: !t };
121
+ }
122
+ };
123
+ throw new TypeError(r ? "Object is not iterable." : "Symbol.iterator is not defined.");
124
+ }, Zt = function(t, r) {
125
+ var e = typeof Symbol == "function" && t[Symbol.iterator];
126
+ if (!e) return t;
127
+ var n = e.call(t), o, a = [], i;
128
+ try {
129
+ for (; (r === void 0 || r-- > 0) && !(o = n.next()).done; ) a.push(o.value);
130
+ } catch (u) {
131
+ i = { error: u };
132
+ } finally {
133
+ try {
134
+ o && !o.done && (e = n.return) && e.call(n);
135
+ } finally {
136
+ if (i) throw i.error;
137
+ }
138
+ }
139
+ return a;
140
+ };
141
+ function Yt(t) {
142
+ var r, e, n = {};
143
+ if (typeof t != "object" || t == null)
144
+ return n;
145
+ try {
146
+ for (var o = X(Object.entries(t)), a = o.next(); !a.done; a = o.next()) {
147
+ var i = Zt(a.value, 2), u = i[0], l = i[1];
148
+ if (!Z(u)) {
149
+ d.warn("Invalid attribute key: " + u);
150
+ continue;
151
+ }
152
+ if (!Y(l)) {
153
+ d.warn("Invalid attribute value set for key: " + u);
154
+ continue;
155
+ }
156
+ Array.isArray(l) ? n[u] = l.slice() : n[u] = l;
157
+ }
158
+ } catch (c) {
159
+ r = { error: c };
160
+ } finally {
161
+ try {
162
+ a && !a.done && (e = o.return) && e.call(o);
163
+ } finally {
164
+ if (r) throw r.error;
165
+ }
166
+ }
167
+ return n;
168
+ }
169
+ function Z(t) {
170
+ return typeof t == "string" && t.length > 0;
171
+ }
172
+ function Y(t) {
173
+ return t == null ? !0 : Array.isArray(t) ? tr(t) : tt(t);
174
+ }
175
+ function tr(t) {
176
+ var r, e, n;
177
+ try {
178
+ for (var o = X(t), a = o.next(); !a.done; a = o.next()) {
179
+ var i = a.value;
180
+ if (i != null) {
181
+ if (!n) {
182
+ if (tt(i)) {
183
+ n = typeof i;
184
+ continue;
185
+ }
186
+ return !1;
187
+ }
188
+ if (typeof i !== n)
189
+ return !1;
190
+ }
191
+ }
192
+ } catch (u) {
193
+ r = { error: u };
194
+ } finally {
195
+ try {
196
+ a && !a.done && (e = o.return) && e.call(o);
197
+ } finally {
198
+ if (r) throw r.error;
199
+ }
200
+ }
201
+ return !0;
202
+ }
203
+ function tt(t) {
204
+ switch (typeof t) {
205
+ case "number":
206
+ case "boolean":
207
+ case "string":
208
+ return !0;
209
+ }
210
+ return !1;
211
+ }
212
+ function rt() {
213
+ return function(t) {
214
+ d.error(rr(t));
215
+ };
216
+ }
217
+ function rr(t) {
218
+ return typeof t == "string" ? t : JSON.stringify(er(t));
219
+ }
220
+ function er(t) {
221
+ for (var r = {}, e = t; e !== null; )
222
+ Object.getOwnPropertyNames(e).forEach(function(n) {
223
+ if (!r[n]) {
224
+ var o = e[n];
225
+ o && (r[n] = String(o));
226
+ }
227
+ }), e = Object.getPrototypeOf(e);
228
+ return r;
229
+ }
230
+ var et = rt();
231
+ function nr(t) {
232
+ et = t;
233
+ }
234
+ function nt(t) {
235
+ try {
236
+ et(t);
237
+ } catch {
238
+ }
239
+ }
240
+ var or = function(t, r) {
241
+ var e = typeof Symbol == "function" && t[Symbol.iterator];
242
+ if (!e) return t;
243
+ var n = e.call(t), o, a = [], i;
244
+ try {
245
+ for (; (r === void 0 || r-- > 0) && !(o = n.next()).done; ) a.push(o.value);
246
+ } catch (u) {
247
+ i = { error: u };
248
+ } finally {
249
+ try {
250
+ o && !o.done && (e = n.return) && e.call(n);
251
+ } finally {
252
+ if (i) throw i.error;
253
+ }
254
+ }
255
+ return a;
256
+ }, ar = function(t, r, e) {
257
+ if (arguments.length === 2) for (var n = 0, o = r.length, a; n < o; n++)
258
+ (a || !(n in r)) && (a || (a = Array.prototype.slice.call(r, 0, n)), a[n] = r[n]);
259
+ return t.concat(a || Array.prototype.slice.call(r));
260
+ };
261
+ function ir(t) {
262
+ return btoa(String.fromCharCode.apply(String, ar([], or(J(t)), !1)));
263
+ }
264
+ var ur = 8, lr = 16, cr = (
265
+ /** @class */
266
+ /* @__PURE__ */ function() {
267
+ function t() {
268
+ this.generateTraceId = L(lr), this.generateSpanId = L(ur);
269
+ }
270
+ return t;
271
+ }()
272
+ ), h = Array(32);
273
+ function L(t) {
274
+ return function() {
275
+ for (var r = 0; r < t * 2; r++)
276
+ h[r] = Math.floor(Math.random() * 16) + 48, h[r] >= 58 && (h[r] += 39);
277
+ return String.fromCharCode.apply(null, h.slice(0, t * 2));
278
+ };
279
+ }
280
+ function sr(t) {
281
+ }
282
+ var fr = function(t) {
283
+ var r = typeof Symbol == "function" && Symbol.iterator, e = r && t[r], n = 0;
284
+ if (e) return e.call(t);
285
+ if (t && typeof t.length == "number") return {
286
+ next: function() {
287
+ return t && n >= t.length && (t = void 0), { value: t && t[n++], done: !t };
288
+ }
289
+ };
290
+ throw new TypeError(r ? "Object is not iterable." : "Symbol.iterator is not defined.");
291
+ }, pr = (
292
+ /** @class */
293
+ function() {
294
+ function t(r) {
295
+ r === void 0 && (r = {});
296
+ var e;
297
+ this._propagators = (e = r.propagators) !== null && e !== void 0 ? e : [], this._fields = Array.from(new Set(this._propagators.map(function(n) {
298
+ return typeof n.fields == "function" ? n.fields() : [];
299
+ }).reduce(function(n, o) {
300
+ return n.concat(o);
301
+ }, [])));
302
+ }
303
+ return t.prototype.inject = function(r, e, n) {
304
+ var o, a;
305
+ try {
306
+ for (var i = fr(this._propagators), u = i.next(); !u.done; u = i.next()) {
307
+ var l = u.value;
308
+ try {
309
+ l.inject(r, e, n);
310
+ } catch (c) {
311
+ d.warn("Failed to inject with " + l.constructor.name + ". Err: " + c.message);
312
+ }
313
+ }
314
+ } catch (c) {
315
+ o = { error: c };
316
+ } finally {
317
+ try {
318
+ u && !u.done && (a = i.return) && a.call(i);
319
+ } finally {
320
+ if (o) throw o.error;
321
+ }
322
+ }
323
+ }, t.prototype.extract = function(r, e, n) {
324
+ return this._propagators.reduce(function(o, a) {
325
+ try {
326
+ return a.extract(o, e, n);
327
+ } catch (i) {
328
+ d.warn("Failed to extract with " + a.constructor.name + ". Err: " + i.message);
329
+ }
330
+ return o;
331
+ }, r);
332
+ }, t.prototype.fields = function() {
333
+ return this._fields.slice();
334
+ }, t;
335
+ }()
336
+ ), j = "[_0-9a-z-*/]", yr = "[a-z]" + j + "{0,255}", dr = "[a-z0-9]" + j + "{0,240}@[a-z]" + j + "{0,13}", hr = new RegExp("^(?:" + yr + "|" + dr + ")$"), mr = /^[ -~]{0,255}[!-~]$/, gr = /,|=/;
337
+ function vr(t) {
338
+ return hr.test(t);
339
+ }
340
+ function _r(t) {
341
+ return mr.test(t) && !gr.test(t);
342
+ }
343
+ var B = 32, Sr = 512, F = ",", z = "=", ot = (
344
+ /** @class */
345
+ function() {
346
+ function t(r) {
347
+ this._internalState = /* @__PURE__ */ new Map(), r && this._parse(r);
348
+ }
349
+ return t.prototype.set = function(r, e) {
350
+ var n = this._clone();
351
+ return n._internalState.has(r) && n._internalState.delete(r), n._internalState.set(r, e), n;
352
+ }, t.prototype.unset = function(r) {
353
+ var e = this._clone();
354
+ return e._internalState.delete(r), e;
355
+ }, t.prototype.get = function(r) {
356
+ return this._internalState.get(r);
357
+ }, t.prototype.serialize = function() {
358
+ var r = this;
359
+ return this._keys().reduce(function(e, n) {
360
+ return e.push(n + z + r.get(n)), e;
361
+ }, []).join(F);
362
+ }, t.prototype._parse = function(r) {
363
+ r.length > Sr || (this._internalState = r.split(F).reverse().reduce(function(e, n) {
364
+ var o = n.trim(), a = o.indexOf(z);
365
+ if (a !== -1) {
366
+ var i = o.slice(0, a), u = o.slice(a + 1, n.length);
367
+ vr(i) && _r(u) && e.set(i, u);
368
+ }
369
+ return e;
370
+ }, /* @__PURE__ */ new Map()), this._internalState.size > B && (this._internalState = new Map(Array.from(this._internalState.entries()).reverse().slice(0, B))));
371
+ }, t.prototype._keys = function() {
372
+ return Array.from(this._internalState.keys()).reverse();
373
+ }, t.prototype._clone = function() {
374
+ var r = new t();
375
+ return r._internalState = new Map(this._internalState), r;
376
+ }, t;
377
+ }()
378
+ ), m = "traceparent", g = "tracestate", br = "00", Tr = "(?!ff)[\\da-f]{2}", Pr = "(?![0]{32})[\\da-f]{32}", Or = "(?![0]{16})[\\da-f]{16}", Ar = "[\\da-f]{2}", Er = new RegExp("^\\s?(" + Tr + ")-(" + Pr + ")-(" + Or + ")-(" + Ar + ")(-.*)?\\s?$");
379
+ function at(t) {
380
+ var r = Er.exec(t);
381
+ return !r || r[1] === "00" && r[5] ? null : {
382
+ traceId: r[2],
383
+ spanId: r[3],
384
+ traceFlags: parseInt(r[4], 16)
385
+ };
386
+ }
387
+ var wr = (
388
+ /** @class */
389
+ function() {
390
+ function t() {
391
+ }
392
+ return t.prototype.inject = function(r, e, n) {
393
+ var o = E.getSpanContext(r);
394
+ if (!(!o || x(r) || !K(o))) {
395
+ var a = br + "-" + o.traceId + "-" + o.spanId + "-0" + Number(o.traceFlags || w.NONE).toString(16);
396
+ n.set(e, m, a), o.traceState && n.set(e, g, o.traceState.serialize());
397
+ }
398
+ }, t.prototype.extract = function(r, e, n) {
399
+ var o = n.get(e, m);
400
+ if (!o)
401
+ return r;
402
+ var a = Array.isArray(o) ? o[0] : o;
403
+ if (typeof a != "string")
404
+ return r;
405
+ var i = at(a);
406
+ if (!i)
407
+ return r;
408
+ i.isRemote = !0;
409
+ var u = n.get(e, g);
410
+ if (u) {
411
+ var l = Array.isArray(u) ? u.join(",") : u;
412
+ i.traceState = new ot(typeof l == "string" ? l : void 0);
413
+ }
414
+ return E.setSpanContext(r, i);
415
+ }, t.prototype.fields = function() {
416
+ return [m, g];
417
+ }, t;
418
+ }()
419
+ ), M = W("OpenTelemetry SDK Context Key RPC_METADATA"), C;
420
+ (function(t) {
421
+ t.HTTP = "http";
422
+ })(C || (C = {}));
423
+ function Rr(t, r) {
424
+ return t.setValue(M, r);
425
+ }
426
+ function jr(t) {
427
+ return t.deleteValue(M);
428
+ }
429
+ function Cr(t) {
430
+ return t.getValue(M);
431
+ }
432
+ var N = (
433
+ /** @class */
434
+ function() {
435
+ function t() {
436
+ }
437
+ return t.prototype.shouldSample = function() {
438
+ return {
439
+ decision: p.NOT_RECORD
440
+ };
441
+ }, t.prototype.toString = function() {
442
+ return "AlwaysOffSampler";
443
+ }, t;
444
+ }()
445
+ ), v = (
446
+ /** @class */
447
+ function() {
448
+ function t() {
449
+ }
450
+ return t.prototype.shouldSample = function() {
451
+ return {
452
+ decision: p.RECORD_AND_SAMPLED
453
+ };
454
+ }, t.prototype.toString = function() {
455
+ return "AlwaysOnSampler";
456
+ }, t;
457
+ }()
458
+ ), Nr = (
459
+ /** @class */
460
+ function() {
461
+ function t(r) {
462
+ var e, n, o, a;
463
+ this._root = r.root, this._root || (nt(new Error("ParentBasedSampler must have a root sampler configured")), this._root = new v()), this._remoteParentSampled = (e = r.remoteParentSampled) !== null && e !== void 0 ? e : new v(), this._remoteParentNotSampled = (n = r.remoteParentNotSampled) !== null && n !== void 0 ? n : new N(), this._localParentSampled = (o = r.localParentSampled) !== null && o !== void 0 ? o : new v(), this._localParentNotSampled = (a = r.localParentNotSampled) !== null && a !== void 0 ? a : new N();
464
+ }
465
+ return t.prototype.shouldSample = function(r, e, n, o, a, i) {
466
+ var u = E.getSpanContext(r);
467
+ return !u || !K(u) ? this._root.shouldSample(r, e, n, o, a, i) : u.isRemote ? u.traceFlags & w.SAMPLED ? this._remoteParentSampled.shouldSample(r, e, n, o, a, i) : this._remoteParentNotSampled.shouldSample(r, e, n, o, a, i) : u.traceFlags & w.SAMPLED ? this._localParentSampled.shouldSample(r, e, n, o, a, i) : this._localParentNotSampled.shouldSample(r, e, n, o, a, i);
468
+ }, t.prototype.toString = function() {
469
+ return "ParentBased{root=" + this._root.toString() + ", remoteParentSampled=" + this._remoteParentSampled.toString() + ", remoteParentNotSampled=" + this._remoteParentNotSampled.toString() + ", localParentSampled=" + this._localParentSampled.toString() + ", localParentNotSampled=" + this._localParentNotSampled.toString() + "}";
470
+ }, t;
471
+ }()
472
+ ), Ir = (
473
+ /** @class */
474
+ function() {
475
+ function t(r) {
476
+ r === void 0 && (r = 0), this._ratio = r, this._ratio = this._normalize(r), this._upperBound = Math.floor(this._ratio * 4294967295);
477
+ }
478
+ return t.prototype.shouldSample = function(r, e) {
479
+ return {
480
+ decision: jt(e) && this._accumulate(e) < this._upperBound ? p.RECORD_AND_SAMPLED : p.NOT_RECORD
481
+ };
482
+ }, t.prototype.toString = function() {
483
+ return "TraceIdRatioBased{" + this._ratio + "}";
484
+ }, t.prototype._normalize = function(r) {
485
+ return typeof r != "number" || isNaN(r) ? 0 : r >= 1 ? 1 : r <= 0 ? 0 : r;
486
+ }, t.prototype._accumulate = function(r) {
487
+ for (var e = 0, n = 0; n < r.length / 8; n++) {
488
+ var o = n * 8, a = parseInt(r.slice(o, o + 8), 16);
489
+ e = (e ^ a) >>> 0;
490
+ }
491
+ return e;
492
+ }, t;
493
+ }()
494
+ ), xr = "[object Object]", Dr = "[object Null]", Mr = "[object Undefined]", kr = Function.prototype, it = kr.toString, Ur = it.call(Object), $r = Lr(Object.getPrototypeOf, Object), ut = Object.prototype, lt = ut.hasOwnProperty, s = Symbol ? Symbol.toStringTag : void 0, ct = ut.toString;
495
+ function Lr(t, r) {
496
+ return function(e) {
497
+ return t(r(e));
498
+ };
499
+ }
500
+ function H(t) {
501
+ if (!Br(t) || Fr(t) !== xr)
502
+ return !1;
503
+ var r = $r(t);
504
+ if (r === null)
505
+ return !0;
506
+ var e = lt.call(r, "constructor") && r.constructor;
507
+ return typeof e == "function" && e instanceof e && it.call(e) === Ur;
508
+ }
509
+ function Br(t) {
510
+ return t != null && typeof t == "object";
511
+ }
512
+ function Fr(t) {
513
+ return t == null ? t === void 0 ? Mr : Dr : s && s in Object(t) ? zr(t) : Hr(t);
514
+ }
515
+ function zr(t) {
516
+ var r = lt.call(t, s), e = t[s], n = !1;
517
+ try {
518
+ t[s] = void 0, n = !0;
519
+ } catch {
520
+ }
521
+ var o = ct.call(t);
522
+ return n && (r ? t[s] = e : delete t[s]), o;
523
+ }
524
+ function Hr(t) {
525
+ return ct.call(t);
526
+ }
527
+ var Vr = 20;
528
+ function Kr() {
529
+ for (var t = [], r = 0; r < arguments.length; r++)
530
+ t[r] = arguments[r];
531
+ for (var e = t.shift(), n = /* @__PURE__ */ new WeakMap(); t.length > 0; )
532
+ e = st(e, t.shift(), 0, n);
533
+ return e;
534
+ }
535
+ function A(t) {
536
+ return b(t) ? t.slice() : t;
537
+ }
538
+ function st(t, r, e, n) {
539
+ e === void 0 && (e = 0);
540
+ var o;
541
+ if (!(e > Vr)) {
542
+ if (e++, _(t) || _(r) || ft(r))
543
+ o = A(r);
544
+ else if (b(t)) {
545
+ if (o = t.slice(), b(r))
546
+ for (var a = 0, i = r.length; a < i; a++)
547
+ o.push(A(r[a]));
548
+ else if (y(r))
549
+ for (var u = Object.keys(r), a = 0, i = u.length; a < i; a++) {
550
+ var l = u[a];
551
+ o[l] = A(r[l]);
552
+ }
553
+ } else if (y(t))
554
+ if (y(r)) {
555
+ if (!Wr(t, r))
556
+ return r;
557
+ o = Object.assign({}, t);
558
+ for (var u = Object.keys(r), a = 0, i = u.length; a < i; a++) {
559
+ var l = u[a], c = r[l];
560
+ if (_(c))
561
+ typeof c > "u" ? delete o[l] : o[l] = c;
562
+ else {
563
+ var f = o[l], T = c;
564
+ if (V(t, l, n) || V(r, l, n))
565
+ delete o[l];
566
+ else {
567
+ if (y(f) && y(T)) {
568
+ var k = n.get(f) || [], U = n.get(T) || [];
569
+ k.push({ obj: t, key: l }), U.push({ obj: r, key: l }), n.set(f, k), n.set(T, U);
570
+ }
571
+ o[l] = st(o[l], c, e, n);
572
+ }
573
+ }
574
+ }
575
+ } else
576
+ o = r;
577
+ return o;
578
+ }
579
+ }
580
+ function V(t, r, e) {
581
+ for (var n = e.get(t[r]) || [], o = 0, a = n.length; o < a; o++) {
582
+ var i = n[o];
583
+ if (i.key === r && i.obj === t)
584
+ return !0;
585
+ }
586
+ return !1;
587
+ }
588
+ function b(t) {
589
+ return Array.isArray(t);
590
+ }
591
+ function ft(t) {
592
+ return typeof t == "function";
593
+ }
594
+ function y(t) {
595
+ return !_(t) && !b(t) && !ft(t) && typeof t == "object";
596
+ }
597
+ function _(t) {
598
+ return typeof t == "string" || typeof t == "number" || typeof t == "boolean" || typeof t > "u" || t instanceof Date || t instanceof RegExp || t === null;
599
+ }
600
+ function Wr(t, r) {
601
+ return !(!H(t) || !H(r));
602
+ }
603
+ var Jr = /* @__PURE__ */ function() {
604
+ var t = function(r, e) {
605
+ return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, o) {
606
+ n.__proto__ = o;
607
+ } || function(n, o) {
608
+ for (var a in o) Object.prototype.hasOwnProperty.call(o, a) && (n[a] = o[a]);
609
+ }, t(r, e);
610
+ };
611
+ return function(r, e) {
612
+ if (typeof e != "function" && e !== null)
613
+ throw new TypeError("Class extends value " + String(e) + " is not a constructor or null");
614
+ t(r, e);
615
+ function n() {
616
+ this.constructor = r;
617
+ }
618
+ r.prototype = e === null ? Object.create(e) : (n.prototype = e.prototype, new n());
619
+ };
620
+ }(), pt = (
621
+ /** @class */
622
+ function(t) {
623
+ Jr(r, t);
624
+ function r(e) {
625
+ var n = t.call(this, e) || this;
626
+ return Object.setPrototypeOf(n, r.prototype), n;
627
+ }
628
+ return r;
629
+ }(Error)
630
+ );
631
+ function qr(t, r) {
632
+ var e, n = new Promise(function(o, a) {
633
+ e = setTimeout(function() {
634
+ a(new pt("Operation timed out."));
635
+ }, r);
636
+ });
637
+ return Promise.race([t, n]).then(function(o) {
638
+ return clearTimeout(e), o;
639
+ }, function(o) {
640
+ throw clearTimeout(e), o;
641
+ });
642
+ }
643
+ function Gr(t) {
644
+ return typeof t == "function" && typeof t.__original == "function" && typeof t.__unwrap == "function" && t.__wrapped === !0;
645
+ }
646
+ var Qr = (
647
+ /** @class */
648
+ function() {
649
+ function t() {
650
+ var r = this;
651
+ this._promise = new Promise(function(e, n) {
652
+ r._resolve = e, r._reject = n;
653
+ });
654
+ }
655
+ return Object.defineProperty(t.prototype, "promise", {
656
+ get: function() {
657
+ return this._promise;
658
+ },
659
+ enumerable: !1,
660
+ configurable: !0
661
+ }), t.prototype.resolve = function(r) {
662
+ this._resolve(r);
663
+ }, t.prototype.reject = function(r) {
664
+ this._reject(r);
665
+ }, t;
666
+ }()
667
+ ), Xr = function(t, r) {
668
+ var e = typeof Symbol == "function" && t[Symbol.iterator];
669
+ if (!e) return t;
670
+ var n = e.call(t), o, a = [], i;
671
+ try {
672
+ for (; (r === void 0 || r-- > 0) && !(o = n.next()).done; ) a.push(o.value);
673
+ } catch (u) {
674
+ i = { error: u };
675
+ } finally {
676
+ try {
677
+ o && !o.done && (e = n.return) && e.call(n);
678
+ } finally {
679
+ if (i) throw i.error;
680
+ }
681
+ }
682
+ return a;
683
+ }, Zr = function(t, r, e) {
684
+ if (arguments.length === 2) for (var n = 0, o = r.length, a; n < o; n++)
685
+ (a || !(n in r)) && (a || (a = Array.prototype.slice.call(r, 0, n)), a[n] = r[n]);
686
+ return t.concat(a || Array.prototype.slice.call(r));
687
+ }, Yr = (
688
+ /** @class */
689
+ function() {
690
+ function t(r, e) {
691
+ this._callback = r, this._that = e, this._isCalled = !1, this._deferred = new Qr();
692
+ }
693
+ return Object.defineProperty(t.prototype, "isCalled", {
694
+ get: function() {
695
+ return this._isCalled;
696
+ },
697
+ enumerable: !1,
698
+ configurable: !0
699
+ }), Object.defineProperty(t.prototype, "promise", {
700
+ get: function() {
701
+ return this._deferred.promise;
702
+ },
703
+ enumerable: !1,
704
+ configurable: !0
705
+ }), t.prototype.call = function() {
706
+ for (var r, e = this, n = [], o = 0; o < arguments.length; o++)
707
+ n[o] = arguments[o];
708
+ if (!this._isCalled) {
709
+ this._isCalled = !0;
710
+ try {
711
+ Promise.resolve((r = this._callback).call.apply(r, Zr([this._that], Xr(n), !1))).then(function(a) {
712
+ return e._deferred.resolve(a);
713
+ }, function(a) {
714
+ return e._deferred.reject(a);
715
+ });
716
+ } catch (a) {
717
+ this._deferred.reject(a);
718
+ }
719
+ }
720
+ return this._deferred.promise;
721
+ }, t;
722
+ }()
723
+ );
724
+ function te(t, r) {
725
+ return new Promise(function(e) {
726
+ $.with(q($.active()), function() {
727
+ t.export(r, function(n) {
728
+ e(n);
729
+ });
730
+ });
731
+ });
732
+ }
733
+ var re = {
734
+ getKeyPairs: Q,
735
+ serializeKeyPairs: G,
736
+ parseKeyPairsIntoRecord: Gt,
737
+ parsePairKeyValue: D
738
+ }, ee = {
739
+ _export: te
740
+ };
741
+ const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
742
+ __proto__: null,
743
+ AlwaysOffSampler: N,
744
+ AlwaysOnSampler: v,
745
+ AnchoredClock: Xt,
746
+ BindOnceFuture: Yr,
747
+ CompositePropagator: pr,
748
+ DEFAULT_ATTRIBUTE_COUNT_LIMIT: Nt,
749
+ DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT: It,
750
+ DEFAULT_ENVIRONMENT: xt,
751
+ DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Dt,
752
+ DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: Mt,
753
+ get ExportResultCode() {
754
+ return Ct;
755
+ },
756
+ ParentBasedSampler: Nr,
757
+ get RPCType() {
758
+ return C;
759
+ },
760
+ RandomIdGenerator: cr,
761
+ SDK_INFO: kt,
762
+ TRACE_PARENT_HEADER: m,
763
+ TRACE_STATE_HEADER: g,
764
+ TimeoutError: pt,
765
+ TraceIdRatioBasedSampler: Ir,
766
+ TraceState: ot,
767
+ get TracesSamplerValues() {
768
+ return Ut;
769
+ },
770
+ VERSION: $t,
771
+ W3CBaggagePropagator: Qt,
772
+ W3CTraceContextPropagator: wr,
773
+ _globalThis: zt,
774
+ addHrTimes: dt,
775
+ baggageUtils: re,
776
+ callWithTimeout: qr,
777
+ deleteRPCMetadata: jr,
778
+ getEnv: Lt,
779
+ getEnvWithoutDefaults: Bt,
780
+ getRPCMetadata: Cr,
781
+ getTimeOrigin: ht,
782
+ globalErrorHandler: nt,
783
+ hexToBase64: ir,
784
+ hexToBinary: J,
785
+ hrTime: mt,
786
+ hrTimeDuration: gt,
787
+ hrTimeToMicroseconds: vt,
788
+ hrTimeToMilliseconds: _t,
789
+ hrTimeToNanoseconds: St,
790
+ hrTimeToTimeStamp: bt,
791
+ internal: ee,
792
+ isAttributeKey: Z,
793
+ isAttributeValue: Y,
794
+ isTimeInput: Tt,
795
+ isTimeInputHrTime: Pt,
796
+ isTracingSuppressed: x,
797
+ isUrlIgnored: Ot,
798
+ isWrapped: Gr,
799
+ loggingErrorHandler: rt,
800
+ merge: Kr,
801
+ millisToHrTime: At,
802
+ otperformance: Et,
803
+ parseEnvironment: Ft,
804
+ parseTraceParent: at,
805
+ sanitizeAttributes: Yt,
806
+ setGlobalErrorHandler: nr,
807
+ setRPCMetadata: Rr,
808
+ suppressTracing: q,
809
+ timeInputToHrTime: wt,
810
+ unrefTimer: sr,
811
+ unsuppressTracing: Ht,
812
+ urlMatches: Rt
813
+ }, Symbol.toStringTag, { value: "Module" }));
814
+ export {
815
+ Qt as J,
816
+ q as W,
817
+ Y as Z,
818
+ Yt as a,
819
+ pr as b,
820
+ wr as c,
821
+ Yr as d,
822
+ Kr as k,
823
+ ce as l,
824
+ nt as n,
825
+ p,
826
+ sr as s,
827
+ ee as t,
828
+ x as w
829
+ };
830
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQ2R0QmFJYk8tIX57MDBqfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGYgYXMgZl8sIGRHIGFzIEhfLCBkSSBhcyByXywgcCBhcyBwXywgZEQgYXMgd2UsIGRIIGFzIGtlJDEsIGRKIGFzIHhlJDEsIGIgYXMgUWUkMSwgZEsgYXMgWGUkMSwgZEMgYXMgcWUkMSwgZEYgYXMgTl8sIGEgYXMgWmUkMSwgTywgZEUgYXMgUiQxLCBXIGFzIFdlJDEsIGcgYXMgZ18gfSBmcm9tICcuL3VybC1CUEd4enN2ai0hfnswMDh9fi5qcyc7XG5pbXBvcnQgeyBqIGFzIGplLCBnIGFzIGduLCB6IGFzIHp0LCB0IGFzIHRzLCAkIGFzICRpLCB4IGFzIHhlIH0gZnJvbSAnLi9pbmRleC0hfnswMDR9fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1DSmg1Z0pxVC0hfnswMDd9fi5qcyc7XG5pbXBvcnQgeyBhLCBBIGFzIEEkMSB9IGZyb20gJy4vRXhwb3J0UmVzdWx0LUJvMVFPd2ZvLSF+ezAwbH1+LmpzJztcbmltcG9ydCB7IGJvIGFzIFAkMSwgYnAgYXMgTSQxLCBiciBhcyBJJDEsIGJzIGFzIGtfLCBidCBhcyBKXywgYnEgYXMgWEEsIGJtIGFzIHIkMSwgYnUgYXMgJF8sIE8gYXMgT1QsIGJuIGFzIExULCBidiBhcyBVJDEgfSBmcm9tICcuL3Nkay1pbmZvLUNZR0I0SzhsLSF+ezAwZ31+LmpzJztcbmltcG9ydCB7IGwgfSBmcm9tICcuL3V0aWxzLUJHZWZ0VHZrLSF+ezAwYX1+LmpzJztcblxudmFyIHA7XG4oZnVuY3Rpb24oZSkge1xuICBlW2UuTk9UX1JFQ09SRCA9IDBdID0gXCJOT1RfUkVDT1JEXCIsIGVbZS5SRUNPUkQgPSAxXSA9IFwiUkVDT1JEXCIsIGVbZS5SRUNPUkRfQU5EX1NBTVBMRUQgPSAyXSA9IFwiUkVDT1JEX0FORF9TQU1QTEVEXCI7XG59KShwIHx8IChwID0ge30pKTtcbnZhciBOID0gJGkoXCJPcGVuVGVsZW1ldHJ5IFNESyBDb250ZXh0IEtleSBTVVBQUkVTU19UUkFDSU5HXCIpO1xuZnVuY3Rpb24gVyhlKSB7XG4gIHJldHVybiBlLnNldFZhbHVlKE4sICEwKTtcbn1cbmZ1bmN0aW9uIEZlKGUpIHtcbiAgcmV0dXJuIGUuZGVsZXRlVmFsdWUoTik7XG59XG5mdW5jdGlvbiB3KGUpIHtcbiAgcmV0dXJuIGUuZ2V0VmFsdWUoTikgPT09ICEwO1xufVxudmFyIHplID0gXCI9XCIsIEMgPSBcIjtcIiwgUyA9IFwiLFwiLCBQID0gXCJiYWdnYWdlXCIsIGtlID0gMTgwLCBZZSA9IDQwOTYsIFhlID0gODE5MiwgV2UgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiAkKGUpIHtcbiAgcmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKHIsIHQpIHtcbiAgICB2YXIgbiA9IFwiXCIgKyByICsgKHIgIT09IFwiXCIgPyBTIDogXCJcIikgKyB0O1xuICAgIHJldHVybiBuLmxlbmd0aCA+IFhlID8gciA6IG47XG4gIH0sIFwiXCIpO1xufVxuZnVuY3Rpb24gSihlKSB7XG4gIHJldHVybiBlLmdldEFsbEVudHJpZXMoKS5tYXAoZnVuY3Rpb24ocikge1xuICAgIHZhciB0ID0gV2UociwgMiksIG4gPSB0WzBdLCBhID0gdFsxXSwgaSA9IGVuY29kZVVSSUNvbXBvbmVudChuKSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGEudmFsdWUpO1xuICAgIHJldHVybiBhLm1ldGFkYXRhICE9PSB2b2lkIDAgJiYgKGkgKz0gQyArIGEubWV0YWRhdGEudG9TdHJpbmcoKSksIGk7XG4gIH0pO1xufVxuZnVuY3Rpb24gRChlKSB7XG4gIHZhciByID0gZS5zcGxpdChDKTtcbiAgaWYgKCEoci5sZW5ndGggPD0gMCkpIHtcbiAgICB2YXIgdCA9IHIuc2hpZnQoKTtcbiAgICBpZiAodCkge1xuICAgICAgdmFyIG4gPSB0LmluZGV4T2YoemUpO1xuICAgICAgaWYgKCEobiA8PSAwKSkge1xuICAgICAgICB2YXIgYSA9IGRlY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZygwLCBuKS50cmltKCkpLCBpID0gZGVjb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKG4gKyAxKS50cmltKCkpLCBvO1xuICAgICAgICByZXR1cm4gci5sZW5ndGggPiAwICYmIChvID0gZl8oci5qb2luKEMpKSksIHsga2V5OiBhLCB2YWx1ZTogaSwgbWV0YWRhdGE6IG8gfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uICRlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlICE9IFwic3RyaW5nXCIgfHwgZS5sZW5ndGggPT09IDAgPyB7fSA6IGUuc3BsaXQoUykubWFwKGZ1bmN0aW9uKHIpIHtcbiAgICByZXR1cm4gRChyKTtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uKHIpIHtcbiAgICByZXR1cm4gciAhPT0gdm9pZCAwICYmIHIudmFsdWUubGVuZ3RoID4gMDtcbiAgfSkucmVkdWNlKGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gclt0LmtleV0gPSB0LnZhbHVlLCByO1xuICB9LCB7fSk7XG59XG52YXIgSmUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIsIHQsIG4pIHtcbiAgICAgIHZhciBhID0geV8uZ2V0QmFnZ2FnZShyKTtcbiAgICAgIGlmICghKCFhIHx8IHcocikpKSB7XG4gICAgICAgIHZhciBpID0gSihhKS5maWx0ZXIoZnVuY3Rpb24odSkge1xuICAgICAgICAgIHJldHVybiB1Lmxlbmd0aCA8PSBZZTtcbiAgICAgICAgfSkuc2xpY2UoMCwga2UpLCBvID0gJChpKTtcbiAgICAgICAgby5sZW5ndGggPiAwICYmIG4uc2V0KHQsIFAsIG8pO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IG4uZ2V0KHQsIFApLCBpID0gQXJyYXkuaXNBcnJheShhKSA/IGEuam9pbihTKSA6IGE7XG4gICAgICBpZiAoIWkpXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIG8gPSB7fTtcbiAgICAgIGlmIChpLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB2YXIgdSA9IGkuc3BsaXQoUyk7XG4gICAgICByZXR1cm4gdS5mb3JFYWNoKGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgdmFyIGwgPSBEKGYpO1xuICAgICAgICBpZiAobCkge1xuICAgICAgICAgIHZhciBjID0geyB2YWx1ZTogbC52YWx1ZSB9O1xuICAgICAgICAgIGwubWV0YWRhdGEgJiYgKGMubWV0YWRhdGEgPSBsLm1ldGFkYXRhKSwgb1tsLmtleV0gPSBjO1xuICAgICAgICB9XG4gICAgICB9KSwgT2JqZWN0LmVudHJpZXMobykubGVuZ3RoID09PSAwID8gciA6IHlfLnNldEJhZ2dhZ2UociwgeV8uY3JlYXRlQmFnZ2FnZShvKSk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW1BdO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyLCB0KSB7XG4gICAgICB0aGlzLl9tb25vdG9uaWNDbG9jayA9IHQsIHRoaXMuX2Vwb2NoTWlsbGlzID0gci5ub3coKSwgdGhpcy5fcGVyZm9ybWFuY2VNaWxsaXMgPSB0Lm5vdygpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUubm93ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgciA9IHRoaXMuX21vbm90b25pY0Nsb2NrLm5vdygpIC0gdGhpcy5fcGVyZm9ybWFuY2VNaWxsaXM7XG4gICAgICByZXR1cm4gdGhpcy5fZXBvY2hNaWxsaXMgKyByO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcSA9IGZ1bmN0aW9uKGUpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHQgPSByICYmIGVbcl0sIG4gPSAwO1xuICBpZiAodCkgcmV0dXJuIHQuY2FsbChlKTtcbiAgaWYgKGUgJiYgdHlwZW9mIGUubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZSAmJiBuID49IGUubGVuZ3RoICYmIChlID0gdm9pZCAwKSwgeyB2YWx1ZTogZSAmJiBlW24rK10sIGRvbmU6ICFlIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHIgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBRZSA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghdCkgcmV0dXJuIGU7XG4gIHZhciBuID0gdC5jYWxsKGUpLCBhLCBpID0gW10sIG87XG4gIHRyeSB7XG4gICAgZm9yICg7IChyID09PSB2b2lkIDAgfHwgci0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoICh1KSB7XG4gICAgbyA9IHsgZXJyb3I6IHUgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmICh0ID0gbi5yZXR1cm4pICYmIHQuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKG8pIHRocm93IG8uZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufTtcbmZ1bmN0aW9uIFplKGUpIHtcbiAgdmFyIHIkMSwgdCwgbiA9IHt9O1xuICBpZiAodHlwZW9mIGUgIT0gXCJvYmplY3RcIiB8fCBlID09IG51bGwpXG4gICAgcmV0dXJuIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHEoT2JqZWN0LmVudHJpZXMoZSkpLCBpID0gYS5uZXh0KCk7ICFpLmRvbmU7IGkgPSBhLm5leHQoKSkge1xuICAgICAgdmFyIG8gPSBRZShpLnZhbHVlLCAyKSwgdSA9IG9bMF0sIGYgPSBvWzFdO1xuICAgICAgaWYgKCFRKHUpKSB7XG4gICAgICAgIHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIGtleTogXCIgKyB1KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIVooZikpIHtcbiAgICAgICAgci53YXJuKFwiSW52YWxpZCBhdHRyaWJ1dGUgdmFsdWUgc2V0IGZvciBrZXk6IFwiICsgdSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgQXJyYXkuaXNBcnJheShmKSA/IG5bdV0gPSBmLnNsaWNlKCkgOiBuW3VdID0gZjtcbiAgICB9XG4gIH0gY2F0Y2ggKGwpIHtcbiAgICByJDEgPSB7IGVycm9yOiBsIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyJDEpIHRocm93IHIkMS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG47XG59XG5mdW5jdGlvbiBRKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgJiYgZS5sZW5ndGggPiAwO1xufVxuZnVuY3Rpb24gWihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyAhMCA6IEFycmF5LmlzQXJyYXkoZSkgPyBlcihlKSA6IGVlKGUpO1xufVxuZnVuY3Rpb24gZXIoZSkge1xuICB2YXIgciwgdCwgbjtcbiAgdHJ5IHtcbiAgICBmb3IgKHZhciBhID0gcShlKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gaS52YWx1ZTtcbiAgICAgIGlmIChvICE9IG51bGwpIHtcbiAgICAgICAgaWYgKCFuKSB7XG4gICAgICAgICAgaWYgKGVlKG8pKSB7XG4gICAgICAgICAgICBuID0gdHlwZW9mIG87XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbyAhPT0gbilcbiAgICAgICAgICByZXR1cm4gITE7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoICh1KSB7XG4gICAgciA9IHsgZXJyb3I6IHUgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaSAmJiAhaS5kb25lICYmICh0ID0gYS5yZXR1cm4pICYmIHQuY2FsbChhKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiAhMDtcbn1cbmZ1bmN0aW9uIGVlKGUpIHtcbiAgc3dpdGNoICh0eXBlb2YgZSkge1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiAhMDtcbiAgfVxuICByZXR1cm4gITE7XG59XG5mdW5jdGlvbiByZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICByLmVycm9yKHJyKGUpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIHJyKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgPyBlIDogSlNPTi5zdHJpbmdpZnkodHIoZSkpO1xufVxuZnVuY3Rpb24gdHIoZSkge1xuICBmb3IgKHZhciByID0ge30sIHQgPSBlOyB0ICE9PSBudWxsOyApXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuZm9yRWFjaChmdW5jdGlvbihuKSB7XG4gICAgICBpZiAoIXJbbl0pIHtcbiAgICAgICAgdmFyIGEgPSB0W25dO1xuICAgICAgICBhICYmIChyW25dID0gU3RyaW5nKGEpKTtcbiAgICAgIH1cbiAgICB9KSwgdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgcmV0dXJuIHI7XG59XG52YXIgdGUgPSByZSgpO1xuZnVuY3Rpb24gbnIoZSkge1xuICB0ZSA9IGU7XG59XG5mdW5jdGlvbiBuZShlKSB7XG4gIHRyeSB7XG4gICAgdGUoZSk7XG4gIH0gY2F0Y2gge1xuICB9XG59XG52YXIgYXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIGlyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn07XG5mdW5jdGlvbiBvcihlKSB7XG4gIHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBpcihbXSwgYXIoQSQxKGUpKSwgITEpKSk7XG59XG52YXIgdXIgPSA4LCBmciA9IDE2LCBsciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVUcmFjZUlkID0gVihmciksIHRoaXMuZ2VuZXJhdGVTcGFuSWQgPSBWKHVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGU7XG4gIH0oKVxuKSwgeSA9IEFycmF5KDMyKTtcbmZ1bmN0aW9uIFYoZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgdCA9IDA7IHQgPCBlICogMjsgdCsrKVxuICAgICAgeVt0XSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KSArIDQ4LCB5W3RdID49IDU4ICYmICh5W3RdICs9IDM5KTtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCB5LnNsaWNlKDAsIGUgKiAyKSk7XG4gIH07XG59XG5mdW5jdGlvbiBzcihlKSB7XG59XG52YXIgY3IgPSBmdW5jdGlvbihlKSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gciAmJiBlW3JdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihyID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgcHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyKSB7XG4gICAgICByID09PSB2b2lkIDAgJiYgKHIgPSB7fSk7XG4gICAgICB2YXIgdDtcbiAgICAgIHRoaXMuX3Byb3BhZ2F0b3JzID0gKHQgPSByLnByb3BhZ2F0b3JzKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogW10sIHRoaXMuX2ZpZWxkcyA9IEFycmF5LmZyb20obmV3IFNldCh0aGlzLl9wcm9wYWdhdG9ycy5tYXAoZnVuY3Rpb24obikge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG4uZmllbGRzID09IFwiZnVuY3Rpb25cIiA/IG4uZmllbGRzKCkgOiBbXTtcbiAgICAgIH0pLnJlZHVjZShmdW5jdGlvbihuLCBhKSB7XG4gICAgICAgIHJldHVybiBuLmNvbmNhdChhKTtcbiAgICAgIH0sIFtdKSkpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24ociQxLCB0LCBuKSB7XG4gICAgICB2YXIgYSwgaTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBjcih0aGlzLl9wcm9wYWdhdG9ycyksIHUgPSBvLm5leHQoKTsgIXUuZG9uZTsgdSA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIGYgPSB1LnZhbHVlO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmLmluamVjdChyJDEsIHQsIG4pO1xuICAgICAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgICAgIHIud2FybihcIkZhaWxlZCB0byBpbmplY3Qgd2l0aCBcIiArIGYuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgbC5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgYSA9IHsgZXJyb3I6IGwgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdSAmJiAhdS5kb25lICYmIChpID0gby5yZXR1cm4pICYmIGkuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyJDEsIHQsIG4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9wYWdhdG9ycy5yZWR1Y2UoZnVuY3Rpb24oYSwgaSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBpLmV4dHJhY3QoYSwgdCwgbik7XG4gICAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gZXh0cmFjdCB3aXRoIFwiICsgaS5jb25zdHJ1Y3Rvci5uYW1lICsgXCIuIEVycjogXCIgKyBvLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgciQxKTtcbiAgICB9LCBlLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maWVsZHMuc2xpY2UoKTtcbiAgICB9LCBlO1xuICB9KClcbiksIEkgPSBcIltfMC05YS16LSovXVwiLCBkciA9IFwiW2Etel1cIiArIEkgKyBcInswLDI1NX1cIiwgX3IgPSBcIlthLXowLTldXCIgKyBJICsgXCJ7MCwyNDB9QFthLXpdXCIgKyBJICsgXCJ7MCwxM31cIiwgeXIgPSBuZXcgUmVnRXhwKFwiXig/OlwiICsgZHIgKyBcInxcIiArIF9yICsgXCIpJFwiKSwgdnIgPSAvXlsgLX5dezAsMjU1fVshLX5dJC8sIGhyID0gLyx8PS87XG5mdW5jdGlvbiBtcihlKSB7XG4gIHJldHVybiB5ci50ZXN0KGUpO1xufVxuZnVuY3Rpb24gZ3IoZSkge1xuICByZXR1cm4gdnIudGVzdChlKSAmJiAhaHIudGVzdChlKTtcbn1cbnZhciBVID0gMzIsIFNyID0gNTEyLCBIID0gXCIsXCIsIEsgPSBcIj1cIiwgYWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyKSB7XG4gICAgICB0aGlzLl9pbnRlcm5hbFN0YXRlID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSwgciAmJiB0aGlzLl9wYXJzZShyKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICAgIHZhciBuID0gdGhpcy5fY2xvbmUoKTtcbiAgICAgIHJldHVybiBuLl9pbnRlcm5hbFN0YXRlLmhhcyhyKSAmJiBuLl9pbnRlcm5hbFN0YXRlLmRlbGV0ZShyKSwgbi5faW50ZXJuYWxTdGF0ZS5zZXQociwgdCksIG47XG4gICAgfSwgZS5wcm90b3R5cGUudW5zZXQgPSBmdW5jdGlvbihyKSB7XG4gICAgICB2YXIgdCA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gdC5faW50ZXJuYWxTdGF0ZS5kZWxldGUociksIHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVybmFsU3RhdGUuZ2V0KHIpO1xuICAgIH0sIGUucHJvdG90eXBlLnNlcmlhbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2tleXMoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICByZXR1cm4gdC5wdXNoKG4gKyBLICsgci5nZXQobikpLCB0O1xuICAgICAgfSwgW10pLmpvaW4oSCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX3BhcnNlID0gZnVuY3Rpb24ocikge1xuICAgICAgci5sZW5ndGggPiBTciB8fCAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IHIuc3BsaXQoSCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHZhciBhID0gbi50cmltKCksIGkgPSBhLmluZGV4T2YoSyk7XG4gICAgICAgIGlmIChpICE9PSAtMSkge1xuICAgICAgICAgIHZhciBvID0gYS5zbGljZSgwLCBpKSwgdSA9IGEuc2xpY2UoaSArIDEsIG4ubGVuZ3RoKTtcbiAgICAgICAgICBtcihvKSAmJiBncih1KSAmJiB0LnNldChvLCB1KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH0sIC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCkpLCB0aGlzLl9pbnRlcm5hbFN0YXRlLnNpemUgPiBVICYmICh0aGlzLl9pbnRlcm5hbFN0YXRlID0gbmV3IE1hcChBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUuZW50cmllcygpKS5yZXZlcnNlKCkuc2xpY2UoMCwgVSkpKSk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2tleXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUua2V5cygpKS5yZXZlcnNlKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2Nsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgciA9IG5ldyBlKCk7XG4gICAgICByZXR1cm4gci5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAodGhpcy5faW50ZXJuYWxTdGF0ZSksIHI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB2ID0gXCJ0cmFjZXBhcmVudFwiLCBoID0gXCJ0cmFjZXN0YXRlXCIsIEFyID0gXCIwMFwiLCBFciA9IFwiKD8hZmYpW1xcXFxkYS1mXXsyfVwiLCBUciA9IFwiKD8hWzBdezMyfSlbXFxcXGRhLWZdezMyfVwiLCBQciA9IFwiKD8hWzBdezE2fSlbXFxcXGRhLWZdezE2fVwiLCBSciA9IFwiW1xcXFxkYS1mXXsyfVwiLCBPciA9IG5ldyBSZWdFeHAoXCJeXFxcXHM/KFwiICsgRXIgKyBcIiktKFwiICsgVHIgKyBcIiktKFwiICsgUHIgKyBcIiktKFwiICsgUnIgKyBcIikoLS4qKT9cXFxccz8kXCIpO1xuZnVuY3Rpb24gaWUoZSkge1xuICB2YXIgciA9IE9yLmV4ZWMoZSk7XG4gIHJldHVybiAhciB8fCByWzFdID09PSBcIjAwXCIgJiYgcls1XSA/IG51bGwgOiB7XG4gICAgdHJhY2VJZDogclsyXSxcbiAgICBzcGFuSWQ6IHJbM10sXG4gICAgdHJhY2VGbGFnczogcGFyc2VJbnQocls0XSwgMTYpXG4gIH07XG59XG52YXIgYnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIsIHQsIG4pIHtcbiAgICAgIHZhciBhID0gamUuZ2V0U3BhbkNvbnRleHQocik7XG4gICAgICBpZiAoISghYSB8fCB3KHIpIHx8ICFnbihhKSkpIHtcbiAgICAgICAgdmFyIGkgPSBBciArIFwiLVwiICsgYS50cmFjZUlkICsgXCItXCIgKyBhLnNwYW5JZCArIFwiLTBcIiArIE51bWJlcihhLnRyYWNlRmxhZ3MgfHwgenQuTk9ORSkudG9TdHJpbmcoMTYpO1xuICAgICAgICBuLnNldCh0LCB2LCBpKSwgYS50cmFjZVN0YXRlICYmIG4uc2V0KHQsIGgsIGEudHJhY2VTdGF0ZS5zZXJpYWxpemUoKSk7XG4gICAgICB9XG4gICAgfSwgZS5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uKHIsIHQsIG4pIHtcbiAgICAgIHZhciBhID0gbi5nZXQodCwgdik7XG4gICAgICBpZiAoIWEpXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIGkgPSBBcnJheS5pc0FycmF5KGEpID8gYVswXSA6IGE7XG4gICAgICBpZiAodHlwZW9mIGkgIT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB2YXIgbyA9IGllKGkpO1xuICAgICAgaWYgKCFvKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIG8uaXNSZW1vdGUgPSAhMDtcbiAgICAgIHZhciB1ID0gbi5nZXQodCwgaCk7XG4gICAgICBpZiAodSkge1xuICAgICAgICB2YXIgZiA9IEFycmF5LmlzQXJyYXkodSkgPyB1LmpvaW4oXCIsXCIpIDogdTtcbiAgICAgICAgby50cmFjZVN0YXRlID0gbmV3IGFlKHR5cGVvZiBmID09IFwic3RyaW5nXCIgPyBmIDogdm9pZCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBqZS5zZXRTcGFuQ29udGV4dChyLCBvKTtcbiAgICB9LCBlLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBbdiwgaF07XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBMID0gJGkoXCJPcGVuVGVsZW1ldHJ5IFNESyBDb250ZXh0IEtleSBSUENfTUVUQURBVEFcIiksIGo7XG4oZnVuY3Rpb24oZSkge1xuICBlLkhUVFAgPSBcImh0dHBcIjtcbn0pKGogfHwgKGogPSB7fSkpO1xuZnVuY3Rpb24gQ3IoZSwgcikge1xuICByZXR1cm4gZS5zZXRWYWx1ZShMLCByKTtcbn1cbmZ1bmN0aW9uIElyKGUpIHtcbiAgcmV0dXJuIGUuZGVsZXRlVmFsdWUoTCk7XG59XG5mdW5jdGlvbiBqcihlKSB7XG4gIHJldHVybiBlLmdldFZhbHVlKEwpO1xufVxudmFyIE0gPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IHAuTk9UX1JFQ09SRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiQWx3YXlzT2ZmU2FtcGxlclwiO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgbSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogcC5SRUNPUkRfQU5EX1NBTVBMRURcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkFsd2F5c09uU2FtcGxlclwiO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgTXIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyKSB7XG4gICAgICB2YXIgdCwgbiwgYSwgaTtcbiAgICAgIHRoaXMuX3Jvb3QgPSByLnJvb3QsIHRoaXMuX3Jvb3QgfHwgKG5lKG5ldyBFcnJvcihcIlBhcmVudEJhc2VkU2FtcGxlciBtdXN0IGhhdmUgYSByb290IHNhbXBsZXIgY29uZmlndXJlZFwiKSksIHRoaXMuX3Jvb3QgPSBuZXcgbSgpKSwgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZCA9ICh0ID0gci5yZW1vdGVQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogbmV3IG0oKSwgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZCA9IChuID0gci5yZW1vdGVQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDogbmV3IE0oKSwgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkID0gKGEgPSByLmxvY2FsUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IG5ldyBtKCksIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZCA9IChpID0gci5sb2NhbFBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBuZXcgTSgpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24ociwgdCwgbiwgYSwgaSwgbykge1xuICAgICAgdmFyIHUgPSBqZS5nZXRTcGFuQ29udGV4dChyKTtcbiAgICAgIHJldHVybiAhdSB8fCAhZ24odSkgPyB0aGlzLl9yb290LnNob3VsZFNhbXBsZShyLCB0LCBuLCBhLCBpLCBvKSA6IHUuaXNSZW1vdGUgPyB1LnRyYWNlRmxhZ3MgJiB6dC5TQU1QTEVEID8gdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkLnNob3VsZFNhbXBsZShyLCB0LCBuLCBhLCBpLCBvKSA6IHUudHJhY2VGbGFncyAmIHp0LlNBTVBMRUQgPyB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHIsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkLnNob3VsZFNhbXBsZShyLCB0LCBuLCBhLCBpLCBvKTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiUGFyZW50QmFzZWR7cm9vdD1cIiArIHRoaXMuX3Jvb3QudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnRTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIHJlbW90ZVBhcmVudE5vdFNhbXBsZWQ9XCIgKyB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgbG9jYWxQYXJlbnRTYW1wbGVkPVwiICsgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgbG9jYWxQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIn1cIjtcbiAgICB9LCBlO1xuICB9KClcbiksIE5yID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgciA9PT0gdm9pZCAwICYmIChyID0gMCksIHRoaXMuX3JhdGlvID0gciwgdGhpcy5fcmF0aW8gPSB0aGlzLl9ub3JtYWxpemUociksIHRoaXMuX3VwcGVyQm91bmQgPSBNYXRoLmZsb29yKHRoaXMuX3JhdGlvICogNDI5NDk2NzI5NSk7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbihyLCB0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogdHModCkgJiYgdGhpcy5fYWNjdW11bGF0ZSh0KSA8IHRoaXMuX3VwcGVyQm91bmQgPyBwLlJFQ09SRF9BTkRfU0FNUExFRCA6IHAuTk9UX1JFQ09SRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiVHJhY2VJZFJhdGlvQmFzZWR7XCIgKyB0aGlzLl9yYXRpbyArIFwifVwiO1xuICAgIH0sIGUucHJvdG90eXBlLl9ub3JtYWxpemUgPSBmdW5jdGlvbihyKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHIgIT0gXCJudW1iZXJcIiB8fCBpc05hTihyKSA/IDAgOiByID49IDEgPyAxIDogciA8PSAwID8gMCA6IHI7XG4gICAgfSwgZS5wcm90b3R5cGUuX2FjY3VtdWxhdGUgPSBmdW5jdGlvbihyKSB7XG4gICAgICBmb3IgKHZhciB0ID0gMCwgbiA9IDA7IG4gPCByLmxlbmd0aCAvIDg7IG4rKykge1xuICAgICAgICB2YXIgYSA9IG4gKiA4LCBpID0gcGFyc2VJbnQoci5zbGljZShhLCBhICsgOCksIDE2KTtcbiAgICAgICAgdCA9ICh0IF4gaSkgPj4+IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gdDtcbiAgICB9LCBlO1xuICB9KClcbiksIHdyID0gXCJbb2JqZWN0IE9iamVjdF1cIiwgRHIgPSBcIltvYmplY3QgTnVsbF1cIiwgTHIgPSBcIltvYmplY3QgVW5kZWZpbmVkXVwiLCB4ciA9IEZ1bmN0aW9uLnByb3RvdHlwZSwgb2UgPSB4ci50b1N0cmluZywgR3IgPSBvZS5jYWxsKE9iamVjdCksIEJyID0gVnIoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpLCB1ZSA9IE9iamVjdC5wcm90b3R5cGUsIGZlID0gdWUuaGFzT3duUHJvcGVydHksIHMgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB2b2lkIDAsIGxlID0gdWUudG9TdHJpbmc7XG5mdW5jdGlvbiBWcihlLCByKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGUocih0KSk7XG4gIH07XG59XG5mdW5jdGlvbiBGKGUpIHtcbiAgaWYgKCFVcihlKSB8fCBIcihlKSAhPT0gd3IpXG4gICAgcmV0dXJuICExO1xuICB2YXIgciA9IEJyKGUpO1xuICBpZiAociA9PT0gbnVsbClcbiAgICByZXR1cm4gITA7XG4gIHZhciB0ID0gZmUuY2FsbChyLCBcImNvbnN0cnVjdG9yXCIpICYmIHIuY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgdCA9PSBcImZ1bmN0aW9uXCIgJiYgdCBpbnN0YW5jZW9mIHQgJiYgb2UuY2FsbCh0KSA9PT0gR3I7XG59XG5mdW5jdGlvbiBVcihlKSB7XG4gIHJldHVybiBlICE9IG51bGwgJiYgdHlwZW9mIGUgPT0gXCJvYmplY3RcIjtcbn1cbmZ1bmN0aW9uIEhyKGUpIHtcbiAgcmV0dXJuIGUgPT0gbnVsbCA/IGUgPT09IHZvaWQgMCA/IExyIDogRHIgOiBzICYmIHMgaW4gT2JqZWN0KGUpID8gS3IoZSkgOiBGcihlKTtcbn1cbmZ1bmN0aW9uIEtyKGUpIHtcbiAgdmFyIHIgPSBmZS5jYWxsKGUsIHMpLCB0ID0gZVtzXSwgbiA9ICExO1xuICB0cnkge1xuICAgIGVbc10gPSB2b2lkIDAsIG4gPSAhMDtcbiAgfSBjYXRjaCB7XG4gIH1cbiAgdmFyIGEgPSBsZS5jYWxsKGUpO1xuICByZXR1cm4gbiAmJiAociA/IGVbc10gPSB0IDogZGVsZXRlIGVbc10pLCBhO1xufVxuZnVuY3Rpb24gRnIoZSkge1xuICByZXR1cm4gbGUuY2FsbChlKTtcbn1cbnZhciB6ciA9IDIwO1xuZnVuY3Rpb24ga3IoKSB7XG4gIGZvciAodmFyIGUgPSBbXSwgciA9IDA7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspXG4gICAgZVtyXSA9IGFyZ3VtZW50c1tyXTtcbiAgZm9yICh2YXIgdCA9IGUuc2hpZnQoKSwgbiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpOyBlLmxlbmd0aCA+IDA7IClcbiAgICB0ID0gc2UodCwgZS5zaGlmdCgpLCAwLCBuKTtcbiAgcmV0dXJuIHQ7XG59XG5mdW5jdGlvbiBSKGUpIHtcbiAgcmV0dXJuIEEoZSkgPyBlLnNsaWNlKCkgOiBlO1xufVxuZnVuY3Rpb24gc2UoZSwgciwgdCwgbikge1xuICB0ID09PSB2b2lkIDAgJiYgKHQgPSAwKTtcbiAgdmFyIGE7XG4gIGlmICghKHQgPiB6cikpIHtcbiAgICBpZiAodCsrLCBnKGUpIHx8IGcocikgfHwgY2UocikpXG4gICAgICBhID0gUihyKTtcbiAgICBlbHNlIGlmIChBKGUpKSB7XG4gICAgICBpZiAoYSA9IGUuc2xpY2UoKSwgQShyKSlcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG8gPSByLmxlbmd0aDsgaSA8IG87IGkrKylcbiAgICAgICAgICBhLnB1c2goUihyW2ldKSk7XG4gICAgICBlbHNlIGlmIChkKHIpKVxuICAgICAgICBmb3IgKHZhciB1ID0gT2JqZWN0LmtleXMociksIGkgPSAwLCBvID0gdS5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgZiA9IHVbaV07XG4gICAgICAgICAgYVtmXSA9IFIocltmXSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGQoZSkpXG4gICAgICBpZiAoZChyKSkge1xuICAgICAgICBpZiAoIVlyKGUsIHIpKVxuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICBhID0gT2JqZWN0LmFzc2lnbih7fSwgZSk7XG4gICAgICAgIGZvciAodmFyIHUgPSBPYmplY3Qua2V5cyhyKSwgaSA9IDAsIG8gPSB1Lmxlbmd0aDsgaSA8IG87IGkrKykge1xuICAgICAgICAgIHZhciBmID0gdVtpXSwgbCA9IHJbZl07XG4gICAgICAgICAgaWYgKGcobCkpXG4gICAgICAgICAgICB0eXBlb2YgbCA+IFwidVwiID8gZGVsZXRlIGFbZl0gOiBhW2ZdID0gbDtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjID0gYVtmXSwgRSA9IGw7XG4gICAgICAgICAgICBpZiAoeihlLCBmLCBuKSB8fCB6KHIsIGYsIG4pKVxuICAgICAgICAgICAgICBkZWxldGUgYVtmXTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoZChjKSAmJiBkKEUpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHggPSBuLmdldChjKSB8fCBbXSwgRyA9IG4uZ2V0KEUpIHx8IFtdO1xuICAgICAgICAgICAgICAgIHgucHVzaCh7IG9iajogZSwga2V5OiBmIH0pLCBHLnB1c2goeyBvYmo6IHIsIGtleTogZiB9KSwgbi5zZXQoYywgeCksIG4uc2V0KEUsIEcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFbZl0gPSBzZShhW2ZdLCBsLCB0LCBuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZVxuICAgICAgICBhID0gcjtcbiAgICByZXR1cm4gYTtcbiAgfVxufVxuZnVuY3Rpb24geihlLCByLCB0KSB7XG4gIGZvciAodmFyIG4gPSB0LmdldChlW3JdKSB8fCBbXSwgYSA9IDAsIGkgPSBuLmxlbmd0aDsgYSA8IGk7IGErKykge1xuICAgIHZhciBvID0gblthXTtcbiAgICBpZiAoby5rZXkgPT09IHIgJiYgby5vYmogPT09IGUpXG4gICAgICByZXR1cm4gITA7XG4gIH1cbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gQShlKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGUpO1xufVxuZnVuY3Rpb24gY2UoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gZChlKSB7XG4gIHJldHVybiAhZyhlKSAmJiAhQShlKSAmJiAhY2UoZSkgJiYgdHlwZW9mIGUgPT0gXCJvYmplY3RcIjtcbn1cbmZ1bmN0aW9uIGcoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgZSA9PSBcIm51bWJlclwiIHx8IHR5cGVvZiBlID09IFwiYm9vbGVhblwiIHx8IHR5cGVvZiBlID4gXCJ1XCIgfHwgZSBpbnN0YW5jZW9mIERhdGUgfHwgZSBpbnN0YW5jZW9mIFJlZ0V4cCB8fCBlID09PSBudWxsO1xufVxuZnVuY3Rpb24gWXIoZSwgcikge1xuICByZXR1cm4gISghRihlKSB8fCAhRihyKSk7XG59XG52YXIgWHIgPSAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7XG4gIHZhciBlID0gZnVuY3Rpb24ociwgdCkge1xuICAgIHJldHVybiBlID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24obiwgYSkge1xuICAgICAgbi5fX3Byb3RvX18gPSBhO1xuICAgIH0gfHwgZnVuY3Rpb24obiwgYSkge1xuICAgICAgZm9yICh2YXIgaSBpbiBhKSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwgaSkgJiYgKG5baV0gPSBhW2ldKTtcbiAgICB9LCBlKHIsIHQpO1xuICB9O1xuICByZXR1cm4gZnVuY3Rpb24ociwgdCkge1xuICAgIGlmICh0eXBlb2YgdCAhPSBcImZ1bmN0aW9uXCIgJiYgdCAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKHQpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICBlKHIsIHQpO1xuICAgIGZ1bmN0aW9uIG4oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gcjtcbiAgICB9XG4gICAgci5wcm90b3R5cGUgPSB0ID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZSh0KSA6IChuLnByb3RvdHlwZSA9IHQucHJvdG90eXBlLCBuZXcgbigpKTtcbiAgfTtcbn0oKSwgcGUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oZSkge1xuICAgIFhyKHIsIGUpO1xuICAgIGZ1bmN0aW9uIHIodCkge1xuICAgICAgdmFyIG4gPSBlLmNhbGwodGhpcywgdCkgfHwgdGhpcztcbiAgICAgIHJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2Yobiwgci5wcm90b3R5cGUpLCBuO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfShFcnJvcilcbik7XG5mdW5jdGlvbiBXcihlLCByKSB7XG4gIHZhciB0LCBuID0gbmV3IFByb21pc2UoZnVuY3Rpb24oaSwgbykge1xuICAgIHQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgbyhuZXcgcGUoXCJPcGVyYXRpb24gdGltZWQgb3V0LlwiKSk7XG4gICAgfSwgcik7XG4gIH0pO1xuICByZXR1cm4gUHJvbWlzZS5yYWNlKFtlLCBuXSkudGhlbihmdW5jdGlvbihhKSB7XG4gICAgcmV0dXJuIGNsZWFyVGltZW91dCh0KSwgYTtcbiAgfSwgZnVuY3Rpb24oYSkge1xuICAgIHRocm93IGNsZWFyVGltZW91dCh0KSwgYTtcbiAgfSk7XG59XG5mdW5jdGlvbiAkcihlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGUuX19vcmlnaW5hbCA9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGUuX191bndyYXAgPT0gXCJmdW5jdGlvblwiICYmIGUuX193cmFwcGVkID09PSAhMDtcbn1cbnZhciBKciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgdmFyIHIgPSB0aGlzO1xuICAgICAgdGhpcy5fcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsIG4pIHtcbiAgICAgICAgci5fcmVzb2x2ZSA9IHQsIHIuX3JlamVjdCA9IG47XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJwcm9taXNlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9taXNlO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH0pLCBlLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24ocikge1xuICAgICAgdGhpcy5fcmVzb2x2ZShyKTtcbiAgICB9LCBlLnByb3RvdHlwZS5yZWplY3QgPSBmdW5jdGlvbihyKSB7XG4gICAgICB0aGlzLl9yZWplY3Qocik7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBxciA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghdCkgcmV0dXJuIGU7XG4gIHZhciBuID0gdC5jYWxsKGUpLCBhLCBpID0gW10sIG87XG4gIHRyeSB7XG4gICAgZm9yICg7IChyID09PSB2b2lkIDAgfHwgci0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoICh1KSB7XG4gICAgbyA9IHsgZXJyb3I6IHUgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmICh0ID0gbi5yZXR1cm4pICYmIHQuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKG8pIHRocm93IG8uZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgUXIgPSBmdW5jdGlvbihlLCByLCB0KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgYSA9IHIubGVuZ3RoLCBpOyBuIDwgYTsgbisrKVxuICAgIChpIHx8ICEobiBpbiByKSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyLCAwLCBuKSksIGlbbl0gPSByW25dKTtcbiAgcmV0dXJuIGUuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwocikpO1xufSwgWnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyLCB0KSB7XG4gICAgICB0aGlzLl9jYWxsYmFjayA9IHIsIHRoaXMuX3RoYXQgPSB0LCB0aGlzLl9pc0NhbGxlZCA9ICExLCB0aGlzLl9kZWZlcnJlZCA9IG5ldyBKcigpO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcImlzQ2FsbGVkXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NhbGxlZDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCBcInByb21pc2VcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmVycmVkLnByb21pc2U7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIGUucHJvdG90eXBlLmNhbGwgPSBmdW5jdGlvbigpIHtcbiAgICAgIGZvciAodmFyIHIsIHQgPSB0aGlzLCBuID0gW10sIGEgPSAwOyBhIDwgYXJndW1lbnRzLmxlbmd0aDsgYSsrKVxuICAgICAgICBuW2FdID0gYXJndW1lbnRzW2FdO1xuICAgICAgaWYgKCF0aGlzLl9pc0NhbGxlZCkge1xuICAgICAgICB0aGlzLl9pc0NhbGxlZCA9ICEwO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgociA9IHRoaXMuX2NhbGxiYWNrKS5jYWxsLmFwcGx5KHIsIFFyKFt0aGlzLl90aGF0XSwgcXIobiksICExKSkpLnRoZW4oZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgcmV0dXJuIHQuX2RlZmVycmVkLnJlc29sdmUoaSk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgcmV0dXJuIHQuX2RlZmVycmVkLnJlamVjdChpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoaSkge1xuICAgICAgICAgIHRoaXMuX2RlZmVycmVkLnJlamVjdChpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2RlZmVycmVkLnByb21pc2U7XG4gICAgfSwgZTtcbiAgfSgpXG4pO1xuZnVuY3Rpb24gZXQoZSwgcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCkge1xuICAgIHhlLndpdGgoVyh4ZS5hY3RpdmUoKSksIGZ1bmN0aW9uKCkge1xuICAgICAgZS5leHBvcnQociwgZnVuY3Rpb24obikge1xuICAgICAgICB0KG4pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxudmFyIHJ0ID0ge1xuICBnZXRLZXlQYWlyczogSixcbiAgc2VyaWFsaXplS2V5UGFpcnM6ICQsXG4gIHBhcnNlS2V5UGFpcnNJbnRvUmVjb3JkOiAkZSxcbiAgcGFyc2VQYWlyS2V5VmFsdWU6IERcbn0sIHR0ID0ge1xuICBfZXhwb3J0OiBldFxufTtcbmNvbnN0IGx0ID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5mcmVlemUoLyogQF9fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgQWx3YXlzT2ZmU2FtcGxlcjogTSxcbiAgQWx3YXlzT25TYW1wbGVyOiBtLFxuICBBbmNob3JlZENsb2NrOiBxZSxcbiAgQmluZE9uY2VGdXR1cmU6IFpyLFxuICBDb21wb3NpdGVQcm9wYWdhdG9yOiBwcixcbiAgREVGQVVMVF9BVFRSSUJVVEVfQ09VTlRfTElNSVQ6IFAkMSxcbiAgREVGQVVMVF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUOiBNJDEsXG4gIERFRkFVTFRfRU5WSVJPTk1FTlQ6IEkkMSxcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfRVZFTlRfQ09VTlRfTElNSVQ6IGtfLFxuICBERUZBVUxUX1NQQU5fQVRUUklCVVRFX1BFUl9MSU5LX0NPVU5UX0xJTUlUOiBKXyxcbiAgZ2V0IEV4cG9ydFJlc3VsdENvZGUoKSB7XG4gICAgcmV0dXJuIGE7XG4gIH0sXG4gIFBhcmVudEJhc2VkU2FtcGxlcjogTXIsXG4gIGdldCBSUENUeXBlKCkge1xuICAgIHJldHVybiBqO1xuICB9LFxuICBSYW5kb21JZEdlbmVyYXRvcjogbHIsXG4gIFNES19JTkZPOiBYQSxcbiAgVFJBQ0VfUEFSRU5UX0hFQURFUjogdixcbiAgVFJBQ0VfU1RBVEVfSEVBREVSOiBoLFxuICBUaW1lb3V0RXJyb3I6IHBlLFxuICBUcmFjZUlkUmF0aW9CYXNlZFNhbXBsZXI6IE5yLFxuICBUcmFjZVN0YXRlOiBhZSxcbiAgZ2V0IFRyYWNlc1NhbXBsZXJWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHIkMTtcbiAgfSxcbiAgVkVSU0lPTjogJF8sXG4gIFczQ0JhZ2dhZ2VQcm9wYWdhdG9yOiBKZSxcbiAgVzNDVHJhY2VDb250ZXh0UHJvcGFnYXRvcjogYnIsXG4gIF9nbG9iYWxUaGlzOiBsLFxuICBhZGRIclRpbWVzOiBIXyxcbiAgYmFnZ2FnZVV0aWxzOiBydCxcbiAgY2FsbFdpdGhUaW1lb3V0OiBXcixcbiAgZGVsZXRlUlBDTWV0YWRhdGE6IElyLFxuICBnZXRFbnY6IE9ULFxuICBnZXRFbnZXaXRob3V0RGVmYXVsdHM6IExULFxuICBnZXRSUENNZXRhZGF0YToganIsXG4gIGdldFRpbWVPcmlnaW46IHJfLFxuICBnbG9iYWxFcnJvckhhbmRsZXI6IG5lLFxuICBoZXhUb0Jhc2U2NDogb3IsXG4gIGhleFRvQmluYXJ5OiBBJDEsXG4gIGhyVGltZTogcF8sXG4gIGhyVGltZUR1cmF0aW9uOiB3ZSxcbiAgaHJUaW1lVG9NaWNyb3NlY29uZHM6IGtlJDEsXG4gIGhyVGltZVRvTWlsbGlzZWNvbmRzOiB4ZSQxLFxuICBoclRpbWVUb05hbm9zZWNvbmRzOiBRZSQxLFxuICBoclRpbWVUb1RpbWVTdGFtcDogWGUkMSxcbiAgaW50ZXJuYWw6IHR0LFxuICBpc0F0dHJpYnV0ZUtleTogUSxcbiAgaXNBdHRyaWJ1dGVWYWx1ZTogWixcbiAgaXNUaW1lSW5wdXQ6IHFlJDEsXG4gIGlzVGltZUlucHV0SHJUaW1lOiBOXyxcbiAgaXNUcmFjaW5nU3VwcHJlc3NlZDogdyxcbiAgaXNVcmxJZ25vcmVkOiBaZSQxLFxuICBpc1dyYXBwZWQ6ICRyLFxuICBsb2dnaW5nRXJyb3JIYW5kbGVyOiByZSxcbiAgbWVyZ2U6IGtyLFxuICBtaWxsaXNUb0hyVGltZTogTyxcbiAgb3RwZXJmb3JtYW5jZTogUiQxLFxuICBwYXJzZUVudmlyb25tZW50OiBVJDEsXG4gIHBhcnNlVHJhY2VQYXJlbnQ6IGllLFxuICBzYW5pdGl6ZUF0dHJpYnV0ZXM6IFplLFxuICBzZXRHbG9iYWxFcnJvckhhbmRsZXI6IG5yLFxuICBzZXRSUENNZXRhZGF0YTogQ3IsXG4gIHN1cHByZXNzVHJhY2luZzogVyxcbiAgdGltZUlucHV0VG9IclRpbWU6IFdlJDEsXG4gIHVucmVmVGltZXI6IHNyLFxuICB1bnN1cHByZXNzVHJhY2luZzogRmUsXG4gIHVybE1hdGNoZXM6IGdfXG59LCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6IFwiTW9kdWxlXCIgfSkpO1xuXG5leHBvcnQgeyBKZSBhcyBKLCBXLCBaLCBaZSBhcyBhLCBwciBhcyBiLCBiciBhcyBjLCBaciBhcyBkLCBrciBhcyBrLCBsdCBhcyBsLCBuZSBhcyBuLCBwLCBzciBhcyBzLCB0dCBhcyB0LCB3IH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFLQSxHQUFJLEtBQUtDLElBQUksTUFBTUMsSUFBSSxNQUFNQyxJQUFJLEtBQUtDLElBQUksTUFBTUMsSUFBSSxNQUFNQyxJQUFNLE1BQU1DLElBQU0sS0FBS0MsSUFBTSxNQUFNQyxJQUFNLE1BQU1DLElBQU0sTUFBTUMsSUFBSSxLQUFLQyxJQUFNLEtBQUFDLElBQUcsTUFBTUMsSUFBSyxLQUFLQyxJQUFNLEtBQUtDLFVBQVU7QUFDMUwsU0FBUyxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxJQUFJLEtBQUtDLEdBQUksS0FBS0MsU0FBVTtBQUNyRSxTQUFTLEtBQUFDLFNBQVM7QUFDbEIsU0FBUyxLQUFBQyxJQUFHLEtBQUtDLFNBQVc7QUFDNUIsU0FBUyxNQUFNQyxJQUFLLE1BQU1DLElBQUssTUFBTUMsSUFBSyxNQUFNQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsSUFBSSxNQUFNQyxJQUFLLE1BQU1DLElBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLFVBQVc7QUFDakksU0FB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LE9BQU8sYUFBYSxFQUFFLE9BQU8sU0FBUyxDQUFDLENBQUM7IiwKICAibmFtZXMiOiBbInlfIiwgImZfIiwgIkhfIiwgInJfIiwgInBfIiwgIndlIiwgImtlJDEiLCAieGUkMSIsICJRZSQxIiwgIlhlJDEiLCAicWUkMSIsICJOXyIsICJaZSQxIiwgIk8iLCAiUiQxIiwgIldlJDEiLCAiZ18iLCAiamUiLCAiZ24iLCAienQiLCAidHMiLCAiJGkiLCAieGUiLCAiciIsICJhIiwgIkEkMSIsICJQJDEiLCAiTSQxIiwgIkkkMSIsICJrXyIsICJKXyIsICJYQSIsICJyJDEiLCAiJF8iLCAiT1QiLCAiTFQiLCAiVSQxIiwgImwiLCAiZSIsICJOIiwgIlciLCAiRmUiLCAidyIsICJ6ZSIsICJDIiwgIlAiLCAia2UiLCAiWWUiLCAiWGUiLCAiV2UiLCAidCIsICJpIiwgIm8iLCAiJCIsICJKIiwgIiRlIiwgIkplIiwgImYiLCAiYyIsICJxZSIsICJxIiwgIlFlIiwgIlplIiwgIlEiLCAiWiIsICJlciIsICJlZSIsICJyZSIsICJ0ciIsICJ0ZSIsICJuZSIsICJhciIsICJpciIsICJvciIsICJmciIsICJsciIsICJWIiwgInkiLCAiY3IiLCAiSSIsICJkciIsICJfciIsICJ5ciIsICJ2ciIsICJociIsICJtciIsICJnciIsICJVIiwgIkgiLCAiSyIsICJhZSIsICJ2IiwgImgiLCAiQXIiLCAiRXIiLCAiVHIiLCAiUHIiLCAiUnIiLCAiT3IiLCAiaWUiLCAiYnIiLCAiTCIsICJqIiwgIkNyIiwgIklyIiwgImpyIiwgIk0iLCAibSIsICJNciIsICJOciIsICJ3ciIsICJMciIsICJ4ciIsICJvZSIsICJHciIsICJCciIsICJWciIsICJ1ZSIsICJmZSIsICJsZSIsICJGIiwgIlVyIiwgIkhyIiwgIktyIiwgIkZyIiwgInpyIiwgImtyIiwgInNlIiwgIlIiLCAiQSIsICJnIiwgImNlIiwgImQiLCAiWXIiLCAiRSIsICJ6IiwgIngiLCAiRyIsICJYciIsICJwZSIsICJXciIsICIkciIsICJKciIsICJxciIsICJRciIsICJaciIsICJldCIsICJydCIsICJ0dCIsICJsdCJdCn0K