@getopenpay/openpay-js-react 0.5.17 → 0.5.18

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 (30) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{Resource-Ci2cMsNJ-r_pjpkns.js → Resource-HFr7ikKe-BkkXR00c.js} +2 -2
  3. package/dist/SimpleSpanProcessor-CXkHxvZK-CtgJXZxx.js +910 -0
  4. package/dist/detect-resources-CrwG-OzH-B3ZitYTN.js +862 -0
  5. package/dist/diag-api-CjpUap0H-CHa67IYb.js +6 -0
  6. package/dist/{index-BE9m_H38-DZJya01O.js → index-B6cgwvwx-DMnT8m0d.js} +2 -2
  7. package/dist/index-BBPNNneM-kIn-dVHD.js +1012 -0
  8. package/dist/{index-1sGeF-S8-Cf5_9V8Q.js → index-BZ0BoexZ-CUX_5xZE.js} +2 -2
  9. package/dist/{index-925BJ6Jo-FMJz60P8.js → index-BbMdoJGB-BBMW7CtA.js} +6 -6
  10. package/dist/{index-BXyoTbrS-DGGjVY6j.js → index-D8qGXAcL-4qcWCIXD.js} +10 -10
  11. package/dist/{index-C3N5jtkQ-BnMnAIzy.js → index-DAjwRG06-CTho4gsn.js} +2 -2
  12. package/dist/{index-DHKyZPe5-DB9begqh.js → index-DHMgbwEW-n9BBoeYI.js} +23 -23
  13. package/dist/{index-CfmI3mSs-kdYEhELt.js → index-DSODCre4-DXZ7TtVV.js} +2 -2
  14. package/dist/{index-CD5ZzJ0E-BNo61tUq.js → index-DfiR_U2V-CFfpYe6F.js} +15 -15
  15. package/dist/index-Du2j-1vJ.js +9660 -0
  16. package/dist/index.d.ts +59 -0
  17. package/dist/index.js +7 -7
  18. package/dist/{metrics-api-B-98-wmH-CgGZj7qs.js → metrics-api-C4CAQNbw-C50jWnQn.js} +10 -10
  19. package/dist/suppress-tracing-BiiEFr8F-BsLEY_uR.js +17 -0
  20. package/dist/url-C62Jr65Y-DvJVmGJM.js +798 -0
  21. package/dist/{utils-DCVGrgLr-DxhyWIXT.js → utils-CBe9LQu0-rzqmNwAr.js} +9 -9
  22. package/dist/{utils-CKW-Vl9c-CCUGWG5V.js → utils-OFrrLDTb-BD_ZQVMg.js} +2 -2
  23. package/package.json +1 -1
  24. package/dist/SimpleSpanProcessor-B0eU7C8A-CjPgIH6s.js +0 -910
  25. package/dist/detect-resources-ChhXDAxq-Btymf6C7.js +0 -862
  26. package/dist/diag-api-DC4dxlqZ-DOFCnxry.js +0 -6
  27. package/dist/index-BRlq-xUA.js +0 -9354
  28. package/dist/index-v1SRbPSI-Ck3VxOS9.js +0 -1012
  29. package/dist/suppress-tracing-BuitcWA2-BFsdq8P_.js +0 -17
  30. package/dist/url-CTAMV9Fr-n8hDYbJZ.js +0 -798
@@ -0,0 +1,1012 @@
1
+ import { y as v, h as B, dC as St, g as dt, w as yt, dG as It, O as At, a as ht, dH as mt, dE as vt, dK as gt, c as Ct, dL as Nt, dD as Mt, dF as bt, p as Ut, dJ as wt, dI as Dt } from "./url-C62Jr65Y-DvJVmGJM.js";
2
+ import { a as X, u as J, s as Bt } from "./suppress-tracing-BiiEFr8F-BsLEY_uR.js";
3
+ import { r as O } from "./diag-api-CjpUap0H-CHa67IYb.js";
4
+ import { A as Q, a as Xt } from "./ExportResult-BacsqwKA-wgTHEn_9.js";
5
+ import { X as u, x as N, P as q, Y as M, T as K, n as jt, g as xt } from "./index-Du2j-1vJ.js";
6
+ import { bm as Gt, bl as Ht } from "./sdk-info-ChuKu8zW-BkU0NT3O.js";
7
+ var s;
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
+ })(s || (s = {}));
11
+ var Vt = "=", b = ";", I = ",", g = "baggage", Ft = 180, Kt = 4096, kt = 8192, $t = function(t, e) {
12
+ var n = typeof Symbol == "function" && t[Symbol.iterator];
13
+ if (!n) return t;
14
+ var r = n.call(t), o, a = [], i;
15
+ try {
16
+ for (; (e === void 0 || e-- > 0) && !(o = r.next()).done; ) a.push(o.value);
17
+ } catch (_) {
18
+ i = { error: _ };
19
+ } finally {
20
+ try {
21
+ o && !o.done && (n = r.return) && n.call(r);
22
+ } finally {
23
+ if (i) throw i.error;
24
+ }
25
+ }
26
+ return a;
27
+ };
28
+ function tt(t) {
29
+ return t.reduce(function(e, n) {
30
+ var r = "" + e + (e !== "" ? I : "") + n;
31
+ return r.length > kt ? e : r;
32
+ }, "");
33
+ }
34
+ function et(t) {
35
+ return t.getAllEntries().map(function(e) {
36
+ var n = $t(e, 2), r = n[0], o = n[1], a = encodeURIComponent(r) + "=" + encodeURIComponent(o.value);
37
+ return o.metadata !== void 0 && (a += b + o.metadata.toString()), a;
38
+ });
39
+ }
40
+ function j(t) {
41
+ var e = t.split(b);
42
+ if (!(e.length <= 0)) {
43
+ var n = e.shift();
44
+ if (n) {
45
+ var r = n.indexOf(Vt);
46
+ if (!(r <= 0)) {
47
+ var o = decodeURIComponent(n.substring(0, r).trim()), a = decodeURIComponent(n.substring(r + 1).trim()), i;
48
+ return e.length > 0 && (i = St(e.join(b))), { key: o, value: a, metadata: i };
49
+ }
50
+ }
51
+ }
52
+ }
53
+ function Yt(t) {
54
+ return typeof t != "string" || t.length === 0 ? {} : t.split(I).map(function(e) {
55
+ return j(e);
56
+ }).filter(function(e) {
57
+ return e !== void 0 && e.value.length > 0;
58
+ }).reduce(function(e, n) {
59
+ return e[n.key] = n.value, e;
60
+ }, {});
61
+ }
62
+ var zt = (
63
+ /** @class */
64
+ (function() {
65
+ function t() {
66
+ }
67
+ return t.prototype.inject = function(e, n, r) {
68
+ var o = v.getBaggage(e);
69
+ if (!(!o || X(e))) {
70
+ var a = et(o).filter(function(_) {
71
+ return _.length <= Kt;
72
+ }).slice(0, Ft), i = tt(a);
73
+ i.length > 0 && r.set(n, g, i);
74
+ }
75
+ }, t.prototype.extract = function(e, n, r) {
76
+ var o = r.get(n, g), a = Array.isArray(o) ? o.join(I) : o;
77
+ if (!a)
78
+ return e;
79
+ var i = {};
80
+ if (a.length === 0)
81
+ return e;
82
+ var _ = a.split(I);
83
+ return _.forEach(function(T) {
84
+ var E = j(T);
85
+ if (E) {
86
+ var c = { value: E.value };
87
+ E.metadata && (c.metadata = E.metadata), i[E.key] = c;
88
+ }
89
+ }), Object.entries(i).length === 0 ? e : v.setBaggage(e, v.createBaggage(i));
90
+ }, t.prototype.fields = function() {
91
+ return [g];
92
+ }, t;
93
+ })()
94
+ ), Zt = (
95
+ /** @class */
96
+ (function() {
97
+ function t(e, n) {
98
+ this._monotonicClock = n, this._epochMillis = e.now(), this._performanceMillis = n.now();
99
+ }
100
+ return t.prototype.now = function() {
101
+ var e = this._monotonicClock.now() - this._performanceMillis;
102
+ return this._epochMillis + e;
103
+ }, t;
104
+ })()
105
+ ), rt = function(t) {
106
+ var e = typeof Symbol == "function" && Symbol.iterator, n = e && t[e], r = 0;
107
+ if (n) return n.call(t);
108
+ if (t && typeof t.length == "number") return {
109
+ next: function() {
110
+ return t && r >= t.length && (t = void 0), { value: t && t[r++], done: !t };
111
+ }
112
+ };
113
+ throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
114
+ }, Wt = function(t, e) {
115
+ var n = typeof Symbol == "function" && t[Symbol.iterator];
116
+ if (!n) return t;
117
+ var r = n.call(t), o, a = [], i;
118
+ try {
119
+ for (; (e === void 0 || e-- > 0) && !(o = r.next()).done; ) a.push(o.value);
120
+ } catch (_) {
121
+ i = { error: _ };
122
+ } finally {
123
+ try {
124
+ o && !o.done && (n = r.return) && n.call(r);
125
+ } finally {
126
+ if (i) throw i.error;
127
+ }
128
+ }
129
+ return a;
130
+ };
131
+ function Jt(t) {
132
+ var e, n, r = {};
133
+ if (typeof t != "object" || t == null)
134
+ return r;
135
+ try {
136
+ for (var o = rt(Object.entries(t)), a = o.next(); !a.done; a = o.next()) {
137
+ var i = Wt(a.value, 2), _ = i[0], T = i[1];
138
+ if (!nt(_)) {
139
+ O.warn("Invalid attribute key: " + _);
140
+ continue;
141
+ }
142
+ if (!ot(T)) {
143
+ O.warn("Invalid attribute value set for key: " + _);
144
+ continue;
145
+ }
146
+ Array.isArray(T) ? r[_] = T.slice() : r[_] = T;
147
+ }
148
+ } catch (E) {
149
+ e = { error: E };
150
+ } finally {
151
+ try {
152
+ a && !a.done && (n = o.return) && n.call(o);
153
+ } finally {
154
+ if (e) throw e.error;
155
+ }
156
+ }
157
+ return r;
158
+ }
159
+ function nt(t) {
160
+ return typeof t == "string" && t.length > 0;
161
+ }
162
+ function ot(t) {
163
+ return t == null ? !0 : Array.isArray(t) ? Qt(t) : at(t);
164
+ }
165
+ function Qt(t) {
166
+ var e, n, r;
167
+ try {
168
+ for (var o = rt(t), a = o.next(); !a.done; a = o.next()) {
169
+ var i = a.value;
170
+ if (i != null) {
171
+ if (!r) {
172
+ if (at(i)) {
173
+ r = typeof i;
174
+ continue;
175
+ }
176
+ return !1;
177
+ }
178
+ if (typeof i !== r)
179
+ return !1;
180
+ }
181
+ }
182
+ } catch (_) {
183
+ e = { error: _ };
184
+ } finally {
185
+ try {
186
+ a && !a.done && (n = o.return) && n.call(o);
187
+ } finally {
188
+ if (e) throw e.error;
189
+ }
190
+ }
191
+ return !0;
192
+ }
193
+ function at(t) {
194
+ switch (typeof t) {
195
+ case "number":
196
+ case "boolean":
197
+ case "string":
198
+ return !0;
199
+ }
200
+ return !1;
201
+ }
202
+ function it() {
203
+ return function(t) {
204
+ O.error(qt(t));
205
+ };
206
+ }
207
+ function qt(t) {
208
+ return typeof t == "string" ? t : JSON.stringify(te(t));
209
+ }
210
+ function te(t) {
211
+ for (var e = {}, n = t; n !== null; )
212
+ Object.getOwnPropertyNames(n).forEach(function(r) {
213
+ if (!e[r]) {
214
+ var o = n[r];
215
+ o && (e[r] = String(o));
216
+ }
217
+ }), n = Object.getPrototypeOf(n);
218
+ return e;
219
+ }
220
+ var _t = it();
221
+ function ee(t) {
222
+ _t = t;
223
+ }
224
+ function Tt(t) {
225
+ try {
226
+ _t(t);
227
+ } catch {
228
+ }
229
+ }
230
+ var A;
231
+ (function(t) {
232
+ t.AlwaysOff = "always_off", t.AlwaysOn = "always_on", t.ParentBasedAlwaysOff = "parentbased_always_off", t.ParentBasedAlwaysOn = "parentbased_always_on", t.ParentBasedTraceIdRatio = "parentbased_traceidratio", t.TraceIdRatio = "traceidratio";
233
+ })(A || (A = {}));
234
+ var re = ",", ne = ["OTEL_SDK_DISABLED"];
235
+ function oe(t) {
236
+ return ne.indexOf(t) > -1;
237
+ }
238
+ var ae = [
239
+ "OTEL_BSP_EXPORT_TIMEOUT",
240
+ "OTEL_BSP_MAX_EXPORT_BATCH_SIZE",
241
+ "OTEL_BSP_MAX_QUEUE_SIZE",
242
+ "OTEL_BSP_SCHEDULE_DELAY",
243
+ "OTEL_BLRP_EXPORT_TIMEOUT",
244
+ "OTEL_BLRP_MAX_EXPORT_BATCH_SIZE",
245
+ "OTEL_BLRP_MAX_QUEUE_SIZE",
246
+ "OTEL_BLRP_SCHEDULE_DELAY",
247
+ "OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT",
248
+ "OTEL_ATTRIBUTE_COUNT_LIMIT",
249
+ "OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT",
250
+ "OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT",
251
+ "OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT",
252
+ "OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT",
253
+ "OTEL_SPAN_EVENT_COUNT_LIMIT",
254
+ "OTEL_SPAN_LINK_COUNT_LIMIT",
255
+ "OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT",
256
+ "OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT",
257
+ "OTEL_EXPORTER_OTLP_TIMEOUT",
258
+ "OTEL_EXPORTER_OTLP_TRACES_TIMEOUT",
259
+ "OTEL_EXPORTER_OTLP_METRICS_TIMEOUT",
260
+ "OTEL_EXPORTER_OTLP_LOGS_TIMEOUT",
261
+ "OTEL_EXPORTER_JAEGER_AGENT_PORT"
262
+ ];
263
+ function ie(t) {
264
+ return ae.indexOf(t) > -1;
265
+ }
266
+ var _e = [
267
+ "OTEL_NO_PATCH_MODULES",
268
+ "OTEL_PROPAGATORS",
269
+ "OTEL_SEMCONV_STABILITY_OPT_IN"
270
+ ];
271
+ function Te(t) {
272
+ return _e.indexOf(t) > -1;
273
+ }
274
+ var R = 1 / 0, L = 128, Et = 128, ut = 128, x = {
275
+ OTEL_SDK_DISABLED: !1,
276
+ CONTAINER_NAME: "",
277
+ ECS_CONTAINER_METADATA_URI_V4: "",
278
+ ECS_CONTAINER_METADATA_URI: "",
279
+ HOSTNAME: "",
280
+ KUBERNETES_SERVICE_HOST: "",
281
+ NAMESPACE: "",
282
+ OTEL_BSP_EXPORT_TIMEOUT: 3e4,
283
+ OTEL_BSP_MAX_EXPORT_BATCH_SIZE: 512,
284
+ OTEL_BSP_MAX_QUEUE_SIZE: 2048,
285
+ OTEL_BSP_SCHEDULE_DELAY: 5e3,
286
+ OTEL_BLRP_EXPORT_TIMEOUT: 3e4,
287
+ OTEL_BLRP_MAX_EXPORT_BATCH_SIZE: 512,
288
+ OTEL_BLRP_MAX_QUEUE_SIZE: 2048,
289
+ OTEL_BLRP_SCHEDULE_DELAY: 5e3,
290
+ OTEL_EXPORTER_JAEGER_AGENT_HOST: "",
291
+ OTEL_EXPORTER_JAEGER_AGENT_PORT: 6832,
292
+ OTEL_EXPORTER_JAEGER_ENDPOINT: "",
293
+ OTEL_EXPORTER_JAEGER_PASSWORD: "",
294
+ OTEL_EXPORTER_JAEGER_USER: "",
295
+ OTEL_EXPORTER_OTLP_ENDPOINT: "",
296
+ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: "",
297
+ OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: "",
298
+ OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: "",
299
+ OTEL_EXPORTER_OTLP_HEADERS: "",
300
+ OTEL_EXPORTER_OTLP_TRACES_HEADERS: "",
301
+ OTEL_EXPORTER_OTLP_METRICS_HEADERS: "",
302
+ OTEL_EXPORTER_OTLP_LOGS_HEADERS: "",
303
+ OTEL_EXPORTER_OTLP_TIMEOUT: 1e4,
304
+ OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: 1e4,
305
+ OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: 1e4,
306
+ OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: 1e4,
307
+ OTEL_EXPORTER_ZIPKIN_ENDPOINT: "http://localhost:9411/api/v2/spans",
308
+ OTEL_LOG_LEVEL: u.INFO,
309
+ OTEL_NO_PATCH_MODULES: [],
310
+ OTEL_PROPAGATORS: ["tracecontext", "baggage"],
311
+ OTEL_RESOURCE_ATTRIBUTES: "",
312
+ OTEL_SERVICE_NAME: "",
313
+ OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT: R,
314
+ OTEL_ATTRIBUTE_COUNT_LIMIT: L,
315
+ OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: R,
316
+ OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT: L,
317
+ OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT: R,
318
+ OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT: L,
319
+ OTEL_SPAN_EVENT_COUNT_LIMIT: 128,
320
+ OTEL_SPAN_LINK_COUNT_LIMIT: 128,
321
+ OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Et,
322
+ OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: ut,
323
+ OTEL_TRACES_EXPORTER: "",
324
+ OTEL_TRACES_SAMPLER: A.ParentBasedAlwaysOn,
325
+ OTEL_TRACES_SAMPLER_ARG: "",
326
+ OTEL_LOGS_EXPORTER: "",
327
+ OTEL_EXPORTER_OTLP_INSECURE: "",
328
+ OTEL_EXPORTER_OTLP_TRACES_INSECURE: "",
329
+ OTEL_EXPORTER_OTLP_METRICS_INSECURE: "",
330
+ OTEL_EXPORTER_OTLP_LOGS_INSECURE: "",
331
+ OTEL_EXPORTER_OTLP_CERTIFICATE: "",
332
+ OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE: "",
333
+ OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE: "",
334
+ OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE: "",
335
+ OTEL_EXPORTER_OTLP_COMPRESSION: "",
336
+ OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: "",
337
+ OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: "",
338
+ OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: "",
339
+ OTEL_EXPORTER_OTLP_CLIENT_KEY: "",
340
+ OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY: "",
341
+ OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY: "",
342
+ OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY: "",
343
+ OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE: "",
344
+ OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE: "",
345
+ OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE: "",
346
+ OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE: "",
347
+ OTEL_EXPORTER_OTLP_PROTOCOL: "http/protobuf",
348
+ OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: "http/protobuf",
349
+ OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: "http/protobuf",
350
+ OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: "http/protobuf",
351
+ OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "cumulative",
352
+ OTEL_SEMCONV_STABILITY_OPT_IN: []
353
+ };
354
+ function Ee(t, e, n) {
355
+ if (!(typeof n[t] > "u")) {
356
+ var r = String(n[t]);
357
+ e[t] = r.toLowerCase() === "true";
358
+ }
359
+ }
360
+ function ue(t, e, n, r, o) {
361
+ if (r === void 0 && (r = -1 / 0), o === void 0 && (o = 1 / 0), typeof n[t] < "u") {
362
+ var a = Number(n[t]);
363
+ isNaN(a) || (a < r ? e[t] = r : a > o ? e[t] = o : e[t] = a);
364
+ }
365
+ }
366
+ function le(t, e, n, r) {
367
+ r === void 0 && (r = re);
368
+ var o = n[t];
369
+ typeof o == "string" && (e[t] = o.split(r).map(function(a) {
370
+ return a.trim();
371
+ }));
372
+ }
373
+ var ce = {
374
+ ALL: u.ALL,
375
+ VERBOSE: u.VERBOSE,
376
+ DEBUG: u.DEBUG,
377
+ INFO: u.INFO,
378
+ WARN: u.WARN,
379
+ ERROR: u.ERROR,
380
+ NONE: u.NONE
381
+ };
382
+ function se(t, e, n) {
383
+ var r = n[t];
384
+ if (typeof r == "string") {
385
+ var o = ce[r.toUpperCase()];
386
+ o != null && (e[t] = o);
387
+ }
388
+ }
389
+ function G(t) {
390
+ var e = {};
391
+ for (var n in x) {
392
+ var r = n;
393
+ switch (r) {
394
+ case "OTEL_LOG_LEVEL":
395
+ se(r, e, t);
396
+ break;
397
+ default:
398
+ if (oe(r))
399
+ Ee(r, e, t);
400
+ else if (ie(r))
401
+ ue(r, e, t);
402
+ else if (Te(r))
403
+ le(r, e, t);
404
+ else {
405
+ var o = t[r];
406
+ typeof o < "u" && o !== null && (e[r] = String(o));
407
+ }
408
+ }
409
+ }
410
+ return e;
411
+ }
412
+ function fe() {
413
+ var t = G(B);
414
+ return Object.assign({}, x, t);
415
+ }
416
+ function Oe() {
417
+ return G(B);
418
+ }
419
+ var pe = function(t, e) {
420
+ var n = typeof Symbol == "function" && t[Symbol.iterator];
421
+ if (!n) return t;
422
+ var r = n.call(t), o, a = [], i;
423
+ try {
424
+ for (; (e === void 0 || e-- > 0) && !(o = r.next()).done; ) a.push(o.value);
425
+ } catch (_) {
426
+ i = { error: _ };
427
+ } finally {
428
+ try {
429
+ o && !o.done && (n = r.return) && n.call(r);
430
+ } finally {
431
+ if (i) throw i.error;
432
+ }
433
+ }
434
+ return a;
435
+ }, Re = function(t, e, n) {
436
+ if (arguments.length === 2) for (var r = 0, o = e.length, a; r < o; r++)
437
+ (a || !(r in e)) && (a || (a = Array.prototype.slice.call(e, 0, r)), a[r] = e[r]);
438
+ return t.concat(a || Array.prototype.slice.call(e));
439
+ };
440
+ function Le(t) {
441
+ return btoa(String.fromCharCode.apply(String, Re([], pe(Q(t)), !1)));
442
+ }
443
+ var Pe = 8, Se = 16, de = (
444
+ /** @class */
445
+ /* @__PURE__ */ (function() {
446
+ function t() {
447
+ this.generateTraceId = k(Se), this.generateSpanId = k(Pe);
448
+ }
449
+ return t;
450
+ })()
451
+ ), p = Array(32);
452
+ function k(t) {
453
+ return function() {
454
+ for (var e = 0; e < t * 2; e++)
455
+ p[e] = Math.floor(Math.random() * 16) + 48, p[e] >= 58 && (p[e] += 39);
456
+ return String.fromCharCode.apply(null, p.slice(0, t * 2));
457
+ };
458
+ }
459
+ function ye(t) {
460
+ }
461
+ var Ie = function(t) {
462
+ var e = typeof Symbol == "function" && Symbol.iterator, n = e && t[e], r = 0;
463
+ if (n) return n.call(t);
464
+ if (t && typeof t.length == "number") return {
465
+ next: function() {
466
+ return t && r >= t.length && (t = void 0), { value: t && t[r++], done: !t };
467
+ }
468
+ };
469
+ throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
470
+ }, Ae = (
471
+ /** @class */
472
+ (function() {
473
+ function t(e) {
474
+ e === void 0 && (e = {});
475
+ var n;
476
+ this._propagators = (n = e.propagators) !== null && n !== void 0 ? n : [], this._fields = Array.from(new Set(this._propagators.map(function(r) {
477
+ return typeof r.fields == "function" ? r.fields() : [];
478
+ }).reduce(function(r, o) {
479
+ return r.concat(o);
480
+ }, [])));
481
+ }
482
+ return t.prototype.inject = function(e, n, r) {
483
+ var o, a;
484
+ try {
485
+ for (var i = Ie(this._propagators), _ = i.next(); !_.done; _ = i.next()) {
486
+ var T = _.value;
487
+ try {
488
+ T.inject(e, n, r);
489
+ } catch (E) {
490
+ O.warn("Failed to inject with " + T.constructor.name + ". Err: " + E.message);
491
+ }
492
+ }
493
+ } catch (E) {
494
+ o = { error: E };
495
+ } finally {
496
+ try {
497
+ _ && !_.done && (a = i.return) && a.call(i);
498
+ } finally {
499
+ if (o) throw o.error;
500
+ }
501
+ }
502
+ }, t.prototype.extract = function(e, n, r) {
503
+ return this._propagators.reduce(function(o, a) {
504
+ try {
505
+ return a.extract(o, n, r);
506
+ } catch (i) {
507
+ O.warn("Failed to extract with " + a.constructor.name + ". Err: " + i.message);
508
+ }
509
+ return o;
510
+ }, e);
511
+ }, t.prototype.fields = function() {
512
+ return this._fields.slice();
513
+ }, t;
514
+ })()
515
+ ), U = "[_0-9a-z-*/]", he = "[a-z]" + U + "{0,255}", me = "[a-z0-9]" + U + "{0,240}@[a-z]" + U + "{0,13}", ve = new RegExp("^(?:" + he + "|" + me + ")$"), ge = /^[ -~]{0,255}[!-~]$/, Ce = /,|=/;
516
+ function Ne(t) {
517
+ return ve.test(t);
518
+ }
519
+ function Me(t) {
520
+ return ge.test(t) && !Ce.test(t);
521
+ }
522
+ var $ = 32, be = 512, Y = ",", z = "=", lt = (
523
+ /** @class */
524
+ (function() {
525
+ function t(e) {
526
+ this._internalState = /* @__PURE__ */ new Map(), e && this._parse(e);
527
+ }
528
+ return t.prototype.set = function(e, n) {
529
+ var r = this._clone();
530
+ return r._internalState.has(e) && r._internalState.delete(e), r._internalState.set(e, n), r;
531
+ }, t.prototype.unset = function(e) {
532
+ var n = this._clone();
533
+ return n._internalState.delete(e), n;
534
+ }, t.prototype.get = function(e) {
535
+ return this._internalState.get(e);
536
+ }, t.prototype.serialize = function() {
537
+ var e = this;
538
+ return this._keys().reduce(function(n, r) {
539
+ return n.push(r + z + e.get(r)), n;
540
+ }, []).join(Y);
541
+ }, t.prototype._parse = function(e) {
542
+ e.length > be || (this._internalState = e.split(Y).reverse().reduce(function(n, r) {
543
+ var o = r.trim(), a = o.indexOf(z);
544
+ if (a !== -1) {
545
+ var i = o.slice(0, a), _ = o.slice(a + 1, r.length);
546
+ Ne(i) && Me(_) && n.set(i, _);
547
+ }
548
+ return n;
549
+ }, /* @__PURE__ */ new Map()), this._internalState.size > $ && (this._internalState = new Map(Array.from(this._internalState.entries()).reverse().slice(0, $))));
550
+ }, t.prototype._keys = function() {
551
+ return Array.from(this._internalState.keys()).reverse();
552
+ }, t.prototype._clone = function() {
553
+ var e = new t();
554
+ return e._internalState = new Map(this._internalState), e;
555
+ }, t;
556
+ })()
557
+ ), P = "traceparent", S = "tracestate", Ue = "00", we = "(?!ff)[\\da-f]{2}", De = "(?![0]{32})[\\da-f]{32}", Be = "(?![0]{16})[\\da-f]{16}", Xe = "[\\da-f]{2}", je = new RegExp("^\\s?(" + we + ")-(" + De + ")-(" + Be + ")-(" + Xe + ")(-.*)?\\s?$");
558
+ function ct(t) {
559
+ var e = je.exec(t);
560
+ return !e || e[1] === "00" && e[5] ? null : {
561
+ traceId: e[2],
562
+ spanId: e[3],
563
+ traceFlags: parseInt(e[4], 16)
564
+ };
565
+ }
566
+ var xe = (
567
+ /** @class */
568
+ (function() {
569
+ function t() {
570
+ }
571
+ return t.prototype.inject = function(e, n, r) {
572
+ var o = N.getSpanContext(e);
573
+ if (!(!o || X(e) || !q(o))) {
574
+ var a = Ue + "-" + o.traceId + "-" + o.spanId + "-0" + Number(o.traceFlags || M.NONE).toString(16);
575
+ r.set(n, P, a), o.traceState && r.set(n, S, o.traceState.serialize());
576
+ }
577
+ }, t.prototype.extract = function(e, n, r) {
578
+ var o = r.get(n, P);
579
+ if (!o)
580
+ return e;
581
+ var a = Array.isArray(o) ? o[0] : o;
582
+ if (typeof a != "string")
583
+ return e;
584
+ var i = ct(a);
585
+ if (!i)
586
+ return e;
587
+ i.isRemote = !0;
588
+ var _ = r.get(n, S);
589
+ if (_) {
590
+ var T = Array.isArray(_) ? _.join(",") : _;
591
+ i.traceState = new lt(typeof T == "string" ? T : void 0);
592
+ }
593
+ return N.setSpanContext(e, i);
594
+ }, t.prototype.fields = function() {
595
+ return [P, S];
596
+ }, t;
597
+ })()
598
+ ), H = jt("OpenTelemetry SDK Context Key RPC_METADATA"), w;
599
+ (function(t) {
600
+ t.HTTP = "http";
601
+ })(w || (w = {}));
602
+ function Ge(t, e) {
603
+ return t.setValue(H, e);
604
+ }
605
+ function He(t) {
606
+ return t.deleteValue(H);
607
+ }
608
+ function Ve(t) {
609
+ return t.getValue(H);
610
+ }
611
+ var D = (
612
+ /** @class */
613
+ (function() {
614
+ function t() {
615
+ }
616
+ return t.prototype.shouldSample = function() {
617
+ return {
618
+ decision: s.NOT_RECORD
619
+ };
620
+ }, t.prototype.toString = function() {
621
+ return "AlwaysOffSampler";
622
+ }, t;
623
+ })()
624
+ ), d = (
625
+ /** @class */
626
+ (function() {
627
+ function t() {
628
+ }
629
+ return t.prototype.shouldSample = function() {
630
+ return {
631
+ decision: s.RECORD_AND_SAMPLED
632
+ };
633
+ }, t.prototype.toString = function() {
634
+ return "AlwaysOnSampler";
635
+ }, t;
636
+ })()
637
+ ), Fe = (
638
+ /** @class */
639
+ (function() {
640
+ function t(e) {
641
+ var n, r, o, a;
642
+ this._root = e.root, this._root || (Tt(new Error("ParentBasedSampler must have a root sampler configured")), this._root = new d()), this._remoteParentSampled = (n = e.remoteParentSampled) !== null && n !== void 0 ? n : new d(), this._remoteParentNotSampled = (r = e.remoteParentNotSampled) !== null && r !== void 0 ? r : new D(), this._localParentSampled = (o = e.localParentSampled) !== null && o !== void 0 ? o : new d(), this._localParentNotSampled = (a = e.localParentNotSampled) !== null && a !== void 0 ? a : new D();
643
+ }
644
+ return t.prototype.shouldSample = function(e, n, r, o, a, i) {
645
+ var _ = N.getSpanContext(e);
646
+ return !_ || !q(_) ? this._root.shouldSample(e, n, r, o, a, i) : _.isRemote ? _.traceFlags & M.SAMPLED ? this._remoteParentSampled.shouldSample(e, n, r, o, a, i) : this._remoteParentNotSampled.shouldSample(e, n, r, o, a, i) : _.traceFlags & M.SAMPLED ? this._localParentSampled.shouldSample(e, n, r, o, a, i) : this._localParentNotSampled.shouldSample(e, n, r, o, a, i);
647
+ }, t.prototype.toString = function() {
648
+ return "ParentBased{root=" + this._root.toString() + ", remoteParentSampled=" + this._remoteParentSampled.toString() + ", remoteParentNotSampled=" + this._remoteParentNotSampled.toString() + ", localParentSampled=" + this._localParentSampled.toString() + ", localParentNotSampled=" + this._localParentNotSampled.toString() + "}";
649
+ }, t;
650
+ })()
651
+ ), Ke = (
652
+ /** @class */
653
+ (function() {
654
+ function t(e) {
655
+ e === void 0 && (e = 0), this._ratio = e, this._ratio = this._normalize(e), this._upperBound = Math.floor(this._ratio * 4294967295);
656
+ }
657
+ return t.prototype.shouldSample = function(e, n) {
658
+ return {
659
+ decision: xt(n) && this._accumulate(n) < this._upperBound ? s.RECORD_AND_SAMPLED : s.NOT_RECORD
660
+ };
661
+ }, t.prototype.toString = function() {
662
+ return "TraceIdRatioBased{" + this._ratio + "}";
663
+ }, t.prototype._normalize = function(e) {
664
+ return typeof e != "number" || isNaN(e) ? 0 : e >= 1 ? 1 : e <= 0 ? 0 : e;
665
+ }, t.prototype._accumulate = function(e) {
666
+ for (var n = 0, r = 0; r < e.length / 8; r++) {
667
+ var o = r * 8, a = parseInt(e.slice(o, o + 8), 16);
668
+ n = (n ^ a) >>> 0;
669
+ }
670
+ return n;
671
+ }, t;
672
+ })()
673
+ ), ke = "[object Object]", $e = "[object Null]", Ye = "[object Undefined]", ze = Function.prototype, st = ze.toString, Ze = st.call(Object), We = Je(Object.getPrototypeOf, Object), ft = Object.prototype, Ot = ft.hasOwnProperty, l = Symbol ? Symbol.toStringTag : void 0, pt = ft.toString;
674
+ function Je(t, e) {
675
+ return function(n) {
676
+ return t(e(n));
677
+ };
678
+ }
679
+ function Z(t) {
680
+ if (!Qe(t) || qe(t) !== ke)
681
+ return !1;
682
+ var e = We(t);
683
+ if (e === null)
684
+ return !0;
685
+ var n = Ot.call(e, "constructor") && e.constructor;
686
+ return typeof n == "function" && n instanceof n && st.call(n) === Ze;
687
+ }
688
+ function Qe(t) {
689
+ return t != null && typeof t == "object";
690
+ }
691
+ function qe(t) {
692
+ return t == null ? t === void 0 ? Ye : $e : l && l in Object(t) ? tr(t) : er(t);
693
+ }
694
+ function tr(t) {
695
+ var e = Ot.call(t, l), n = t[l], r = !1;
696
+ try {
697
+ t[l] = void 0, r = !0;
698
+ } catch {
699
+ }
700
+ var o = pt.call(t);
701
+ return r && (e ? t[l] = n : delete t[l]), o;
702
+ }
703
+ function er(t) {
704
+ return pt.call(t);
705
+ }
706
+ var rr = 20;
707
+ function nr() {
708
+ for (var t = [], e = 0; e < arguments.length; e++)
709
+ t[e] = arguments[e];
710
+ for (var n = t.shift(), r = /* @__PURE__ */ new WeakMap(); t.length > 0; )
711
+ n = Rt(n, t.shift(), 0, r);
712
+ return n;
713
+ }
714
+ function C(t) {
715
+ return h(t) ? t.slice() : t;
716
+ }
717
+ function Rt(t, e, n, r) {
718
+ n === void 0 && (n = 0);
719
+ var o;
720
+ if (!(n > rr)) {
721
+ if (n++, y(t) || y(e) || Lt(e))
722
+ o = C(e);
723
+ else if (h(t)) {
724
+ if (o = t.slice(), h(e))
725
+ for (var a = 0, i = e.length; a < i; a++)
726
+ o.push(C(e[a]));
727
+ else if (f(e))
728
+ for (var _ = Object.keys(e), a = 0, i = _.length; a < i; a++) {
729
+ var T = _[a];
730
+ o[T] = C(e[T]);
731
+ }
732
+ } else if (f(t))
733
+ if (f(e)) {
734
+ if (!or(t, e))
735
+ return e;
736
+ o = Object.assign({}, t);
737
+ for (var _ = Object.keys(e), a = 0, i = _.length; a < i; a++) {
738
+ var T = _[a], E = e[T];
739
+ if (y(E))
740
+ typeof E > "u" ? delete o[T] : o[T] = E;
741
+ else {
742
+ var c = o[T], m = E;
743
+ if (W(t, T, r) || W(e, T, r))
744
+ delete o[T];
745
+ else {
746
+ if (f(c) && f(m)) {
747
+ var V = r.get(c) || [], F = r.get(m) || [];
748
+ V.push({ obj: t, key: T }), F.push({ obj: e, key: T }), r.set(c, V), r.set(m, F);
749
+ }
750
+ o[T] = Rt(o[T], E, n, r);
751
+ }
752
+ }
753
+ }
754
+ } else
755
+ o = e;
756
+ return o;
757
+ }
758
+ }
759
+ function W(t, e, n) {
760
+ for (var r = n.get(t[e]) || [], o = 0, a = r.length; o < a; o++) {
761
+ var i = r[o];
762
+ if (i.key === e && i.obj === t)
763
+ return !0;
764
+ }
765
+ return !1;
766
+ }
767
+ function h(t) {
768
+ return Array.isArray(t);
769
+ }
770
+ function Lt(t) {
771
+ return typeof t == "function";
772
+ }
773
+ function f(t) {
774
+ return !y(t) && !h(t) && !Lt(t) && typeof t == "object";
775
+ }
776
+ function y(t) {
777
+ return typeof t == "string" || typeof t == "number" || typeof t == "boolean" || typeof t > "u" || t instanceof Date || t instanceof RegExp || t === null;
778
+ }
779
+ function or(t, e) {
780
+ return !(!Z(t) || !Z(e));
781
+ }
782
+ var ar = /* @__PURE__ */ (function() {
783
+ var t = function(e, n) {
784
+ return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, o) {
785
+ r.__proto__ = o;
786
+ } || function(r, o) {
787
+ for (var a in o) Object.prototype.hasOwnProperty.call(o, a) && (r[a] = o[a]);
788
+ }, t(e, n);
789
+ };
790
+ return function(e, n) {
791
+ if (typeof n != "function" && n !== null)
792
+ throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");
793
+ t(e, n);
794
+ function r() {
795
+ this.constructor = e;
796
+ }
797
+ e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r());
798
+ };
799
+ })(), Pt = (
800
+ /** @class */
801
+ (function(t) {
802
+ ar(e, t);
803
+ function e(n) {
804
+ var r = t.call(this, n) || this;
805
+ return Object.setPrototypeOf(r, e.prototype), r;
806
+ }
807
+ return e;
808
+ })(Error)
809
+ );
810
+ function ir(t, e) {
811
+ var n, r = new Promise(function(o, a) {
812
+ n = setTimeout(function() {
813
+ a(new Pt("Operation timed out."));
814
+ }, e);
815
+ });
816
+ return Promise.race([t, r]).then(function(o) {
817
+ return clearTimeout(n), o;
818
+ }, function(o) {
819
+ throw clearTimeout(n), o;
820
+ });
821
+ }
822
+ function _r(t) {
823
+ return typeof t == "function" && typeof t.__original == "function" && typeof t.__unwrap == "function" && t.__wrapped === !0;
824
+ }
825
+ var Tr = (
826
+ /** @class */
827
+ (function() {
828
+ function t() {
829
+ var e = this;
830
+ this._promise = new Promise(function(n, r) {
831
+ e._resolve = n, e._reject = r;
832
+ });
833
+ }
834
+ return Object.defineProperty(t.prototype, "promise", {
835
+ get: function() {
836
+ return this._promise;
837
+ },
838
+ enumerable: !1,
839
+ configurable: !0
840
+ }), t.prototype.resolve = function(e) {
841
+ this._resolve(e);
842
+ }, t.prototype.reject = function(e) {
843
+ this._reject(e);
844
+ }, t;
845
+ })()
846
+ ), Er = function(t, e) {
847
+ var n = typeof Symbol == "function" && t[Symbol.iterator];
848
+ if (!n) return t;
849
+ var r = n.call(t), o, a = [], i;
850
+ try {
851
+ for (; (e === void 0 || e-- > 0) && !(o = r.next()).done; ) a.push(o.value);
852
+ } catch (_) {
853
+ i = { error: _ };
854
+ } finally {
855
+ try {
856
+ o && !o.done && (n = r.return) && n.call(r);
857
+ } finally {
858
+ if (i) throw i.error;
859
+ }
860
+ }
861
+ return a;
862
+ }, ur = function(t, e, n) {
863
+ if (arguments.length === 2) for (var r = 0, o = e.length, a; r < o; r++)
864
+ (a || !(r in e)) && (a || (a = Array.prototype.slice.call(e, 0, r)), a[r] = e[r]);
865
+ return t.concat(a || Array.prototype.slice.call(e));
866
+ }, lr = (
867
+ /** @class */
868
+ (function() {
869
+ function t(e, n) {
870
+ this._callback = e, this._that = n, this._isCalled = !1, this._deferred = new Tr();
871
+ }
872
+ return Object.defineProperty(t.prototype, "isCalled", {
873
+ get: function() {
874
+ return this._isCalled;
875
+ },
876
+ enumerable: !1,
877
+ configurable: !0
878
+ }), Object.defineProperty(t.prototype, "promise", {
879
+ get: function() {
880
+ return this._deferred.promise;
881
+ },
882
+ enumerable: !1,
883
+ configurable: !0
884
+ }), t.prototype.call = function() {
885
+ for (var e, n = this, r = [], o = 0; o < arguments.length; o++)
886
+ r[o] = arguments[o];
887
+ if (!this._isCalled) {
888
+ this._isCalled = !0;
889
+ try {
890
+ Promise.resolve((e = this._callback).call.apply(e, ur([this._that], Er(r), !1))).then(function(a) {
891
+ return n._deferred.resolve(a);
892
+ }, function(a) {
893
+ return n._deferred.reject(a);
894
+ });
895
+ } catch (a) {
896
+ this._deferred.reject(a);
897
+ }
898
+ }
899
+ return this._deferred.promise;
900
+ }, t;
901
+ })()
902
+ );
903
+ function cr(t, e) {
904
+ return new Promise(function(n) {
905
+ K.with(J(K.active()), function() {
906
+ t.export(e, function(r) {
907
+ n(r);
908
+ });
909
+ });
910
+ });
911
+ }
912
+ var sr = {
913
+ getKeyPairs: et,
914
+ serializeKeyPairs: tt,
915
+ parseKeyPairsIntoRecord: Yt,
916
+ parsePairKeyValue: j
917
+ }, fr = {
918
+ _export: cr
919
+ };
920
+ const dr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
921
+ __proto__: null,
922
+ AlwaysOffSampler: D,
923
+ AlwaysOnSampler: d,
924
+ AnchoredClock: Zt,
925
+ BindOnceFuture: lr,
926
+ CompositePropagator: Ae,
927
+ DEFAULT_ATTRIBUTE_COUNT_LIMIT: L,
928
+ DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT: R,
929
+ DEFAULT_ENVIRONMENT: x,
930
+ DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Et,
931
+ DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: ut,
932
+ get ExportResultCode() {
933
+ return Xt;
934
+ },
935
+ ParentBasedSampler: Fe,
936
+ get RPCType() {
937
+ return w;
938
+ },
939
+ RandomIdGenerator: de,
940
+ SDK_INFO: Ht,
941
+ TRACE_PARENT_HEADER: P,
942
+ TRACE_STATE_HEADER: S,
943
+ TimeoutError: Pt,
944
+ TraceIdRatioBasedSampler: Ke,
945
+ TraceState: lt,
946
+ get TracesSamplerValues() {
947
+ return A;
948
+ },
949
+ VERSION: Gt,
950
+ W3CBaggagePropagator: zt,
951
+ W3CTraceContextPropagator: xe,
952
+ _globalThis: B,
953
+ addHrTimes: Dt,
954
+ baggageUtils: sr,
955
+ callWithTimeout: ir,
956
+ deleteRPCMetadata: He,
957
+ getEnv: fe,
958
+ getEnvWithoutDefaults: Oe,
959
+ getRPCMetadata: Ve,
960
+ getTimeOrigin: wt,
961
+ globalErrorHandler: Tt,
962
+ hexToBase64: Le,
963
+ hexToBinary: Q,
964
+ hrTime: Ut,
965
+ hrTimeDuration: bt,
966
+ hrTimeToMicroseconds: Mt,
967
+ hrTimeToMilliseconds: Nt,
968
+ hrTimeToNanoseconds: Ct,
969
+ hrTimeToTimeStamp: gt,
970
+ internal: fr,
971
+ isAttributeKey: nt,
972
+ isAttributeValue: ot,
973
+ isTimeInput: vt,
974
+ isTimeInputHrTime: mt,
975
+ isTracingSuppressed: X,
976
+ isUrlIgnored: ht,
977
+ isWrapped: _r,
978
+ loggingErrorHandler: it,
979
+ merge: nr,
980
+ millisToHrTime: At,
981
+ otperformance: It,
982
+ parseEnvironment: G,
983
+ parseTraceParent: ct,
984
+ sanitizeAttributes: Jt,
985
+ setGlobalErrorHandler: ee,
986
+ setRPCMetadata: Ge,
987
+ suppressTracing: J,
988
+ timeInputToHrTime: yt,
989
+ unrefTimer: ye,
990
+ unsuppressTracing: Bt,
991
+ urlMatches: dt
992
+ }, Symbol.toStringTag, { value: "Module" }));
993
+ export {
994
+ Tt as E,
995
+ fe as O,
996
+ dr as P,
997
+ Jt as Q,
998
+ ye as S,
999
+ xe as V,
1000
+ zt as Z,
1001
+ ot as a,
1002
+ A as b,
1003
+ Oe as c,
1004
+ L as d,
1005
+ fr as e,
1006
+ lr as f,
1007
+ s as l,
1008
+ nr as n,
1009
+ R as p,
1010
+ Ae as v
1011
+ };
1012
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQkJQTk5uZU0tIX57MDBpfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGggYXMgaF8sIGRDIGFzIGZfLCBnIGFzIGdfLCB3IGFzIHdlJDEsIGRHIGFzIFIkMSwgTyBhcyBPJDEsIGEgYXMgWmUkMSwgZEggYXMgTl8sIGRFIGFzIHFlJDEsIGRLIGFzIFFlJDEsIGMgYXMgeGUkMiwgZEwgYXMga2UkMSwgZEQgYXMgamUkMSwgZEYgYXMgWGUkMSwgcCBhcyBwXywgZEogYXMgcl8sIGRJIGFzIGJfIH0gZnJvbSAnLi91cmwtQzYySnI2NVktIX57MDBifX4uanMnO1xuaW1wb3J0IHsgYSwgdSwgcyB9IGZyb20gJy4vc3VwcHJlc3MtdHJhY2luZy1CaWlFRnI4Ri0hfnswMG59fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1DanBVYXAwSC0hfnswMGF9fi5qcyc7XG5pbXBvcnQgeyBBIGFzIEEkMSwgYSBhcyBhJDEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CYWNzcXdLQS0hfnswMGx9fi5qcyc7XG5pbXBvcnQgeyBYLCB4IGFzIHhlJDEsIFAgYXMgUG4sIFkgYXMgWXQsIFQgYXMgVGUkMSwgbiBhcyBucywgZyBhcyBncyB9IGZyb20gJy4vaW5kZXgtIX57MDA3fX4uanMnO1xuaW1wb3J0IHsgYm0gYXMgdFMsIGJsIGFzIFRBIH0gZnJvbSAnLi9zZGstaW5mby1DaHVLdTh6Vy0hfnswMGp9fi5qcyc7XG5cbnZhciBsO1xuKGZ1bmN0aW9uKHIpIHtcbiAgcltyLk5PVF9SRUNPUkQgPSAwXSA9IFwiTk9UX1JFQ09SRFwiLCByW3IuUkVDT1JEID0gMV0gPSBcIlJFQ09SRFwiLCByW3IuUkVDT1JEX0FORF9TQU1QTEVEID0gMl0gPSBcIlJFQ09SRF9BTkRfU0FNUExFRFwiO1xufSkobCB8fCAobCA9IHt9KSk7XG52YXIgeHIgPSBcIj1cIiwgVSA9IFwiO1wiLCBJID0gXCIsXCIsIG0gPSBcImJhZ2dhZ2VcIiwgRnIgPSAxODAsIEtyID0gNDA5NiwgWXIgPSA4MTkyLCB6ciA9IGZ1bmN0aW9uKHIsIGUpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiByW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghdCkgcmV0dXJuIHI7XG4gIHZhciBuID0gdC5jYWxsKHIpLCBhLCBpID0gW10sIG87XG4gIHRyeSB7XG4gICAgZm9yICg7IChlID09PSB2b2lkIDAgfHwgZS0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoIChfKSB7XG4gICAgbyA9IHsgZXJyb3I6IF8gfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmICh0ID0gbi5yZXR1cm4pICYmIHQuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKG8pIHRocm93IG8uZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufTtcbmZ1bmN0aW9uIHJyKHIpIHtcbiAgcmV0dXJuIHIucmVkdWNlKGZ1bmN0aW9uKGUsIHQpIHtcbiAgICB2YXIgbiA9IFwiXCIgKyBlICsgKGUgIT09IFwiXCIgPyBJIDogXCJcIikgKyB0O1xuICAgIHJldHVybiBuLmxlbmd0aCA+IFlyID8gZSA6IG47XG4gIH0sIFwiXCIpO1xufVxuZnVuY3Rpb24gZXIocikge1xuICByZXR1cm4gci5nZXRBbGxFbnRyaWVzKCkubWFwKGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgdCA9IHpyKGUsIDIpLCBuID0gdFswXSwgYSA9IHRbMV0sIGkgPSBlbmNvZGVVUklDb21wb25lbnQobikgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChhLnZhbHVlKTtcbiAgICByZXR1cm4gYS5tZXRhZGF0YSAhPT0gdm9pZCAwICYmIChpICs9IFUgKyBhLm1ldGFkYXRhLnRvU3RyaW5nKCkpLCBpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHcocikge1xuICB2YXIgZSA9IHIuc3BsaXQoVSk7XG4gIGlmICghKGUubGVuZ3RoIDw9IDApKSB7XG4gICAgdmFyIHQgPSBlLnNoaWZ0KCk7XG4gICAgaWYgKHQpIHtcbiAgICAgIHZhciBuID0gdC5pbmRleE9mKHhyKTtcbiAgICAgIGlmICghKG4gPD0gMCkpIHtcbiAgICAgICAgdmFyIGEgPSBkZWNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoMCwgbikudHJpbSgpKSwgaSA9IGRlY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhuICsgMSkudHJpbSgpKSwgbztcbiAgICAgICAgcmV0dXJuIGUubGVuZ3RoID4gMCAmJiAobyA9IGZfKGUuam9pbihVKSkpLCB7IGtleTogYSwgdmFsdWU6IGksIG1ldGFkYXRhOiBvIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBXcihyKSB7XG4gIHJldHVybiB0eXBlb2YgciAhPSBcInN0cmluZ1wiIHx8IHIubGVuZ3RoID09PSAwID8ge30gOiByLnNwbGl0KEkpLm1hcChmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIHcoZSk7XG4gIH0pLmZpbHRlcihmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIGUgIT09IHZvaWQgMCAmJiBlLnZhbHVlLmxlbmd0aCA+IDA7XG4gIH0pLnJlZHVjZShmdW5jdGlvbihlLCB0KSB7XG4gICAgcmV0dXJuIGVbdC5rZXldID0gdC52YWx1ZSwgZTtcbiAgfSwge30pO1xufVxudmFyIFpyID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEkMSA9IHlfLmdldEJhZ2dhZ2UoZSk7XG4gICAgICBpZiAoISghYSQxIHx8IGEoZSkpKSB7XG4gICAgICAgIHZhciBpID0gZXIoYSQxKS5maWx0ZXIoZnVuY3Rpb24oXykge1xuICAgICAgICAgIHJldHVybiBfLmxlbmd0aCA8PSBLcjtcbiAgICAgICAgfSkuc2xpY2UoMCwgRnIpLCBvID0gcnIoaSk7XG4gICAgICAgIG8ubGVuZ3RoID4gMCAmJiBuLnNldCh0LCBtLCBvKTtcbiAgICAgIH1cbiAgICB9LCByLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCBtKSwgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhLmpvaW4oSSkgOiBhO1xuICAgICAgaWYgKCFpKVxuICAgICAgICByZXR1cm4gZTtcbiAgICAgIHZhciBvID0ge307XG4gICAgICBpZiAoaS5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBlO1xuICAgICAgdmFyIF8gPSBpLnNwbGl0KEkpO1xuICAgICAgcmV0dXJuIF8uZm9yRWFjaChmdW5jdGlvbihFKSB7XG4gICAgICAgIHZhciBUID0gdyhFKTtcbiAgICAgICAgaWYgKFQpIHtcbiAgICAgICAgICB2YXIgcyA9IHsgdmFsdWU6IFQudmFsdWUgfTtcbiAgICAgICAgICBULm1ldGFkYXRhICYmIChzLm1ldGFkYXRhID0gVC5tZXRhZGF0YSksIG9bVC5rZXldID0gcztcbiAgICAgICAgfVxuICAgICAgfSksIE9iamVjdC5lbnRyaWVzKG8pLmxlbmd0aCA9PT0gMCA/IGUgOiB5Xy5zZXRCYWdnYWdlKGUsIHlfLmNyZWF0ZUJhZ2dhZ2UobykpO1xuICAgIH0sIHIucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFttXTtcbiAgICB9LCByO1xuICB9KSgpXG4pLCAkciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlLCB0KSB7XG4gICAgICB0aGlzLl9tb25vdG9uaWNDbG9jayA9IHQsIHRoaXMuX2Vwb2NoTWlsbGlzID0gZS5ub3coKSwgdGhpcy5fcGVyZm9ybWFuY2VNaWxsaXMgPSB0Lm5vdygpO1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUubm93ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZSA9IHRoaXMuX21vbm90b25pY0Nsb2NrLm5vdygpIC0gdGhpcy5fcGVyZm9ybWFuY2VNaWxsaXM7XG4gICAgICByZXR1cm4gdGhpcy5fZXBvY2hNaWxsaXMgKyBlO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIHRyID0gZnVuY3Rpb24ocikge1xuICB2YXIgZSA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgdCA9IGUgJiYgcltlXSwgbiA9IDA7XG4gIGlmICh0KSByZXR1cm4gdC5jYWxsKHIpO1xuICBpZiAociAmJiB0eXBlb2Ygci5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByICYmIG4gPj0gci5sZW5ndGggJiYgKHIgPSB2b2lkIDApLCB7IHZhbHVlOiByICYmIHJbbisrXSwgZG9uZTogIXIgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoZSA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIEpyID0gZnVuY3Rpb24ociwgZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIHJbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gcjtcbiAgdmFyIG4gPSB0LmNhbGwociksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKGUgPT09IHZvaWQgMCB8fCBlLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBvID0geyBlcnJvcjogXyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59O1xuZnVuY3Rpb24gUXIociQxKSB7XG4gIHZhciBlLCB0LCBuID0ge307XG4gIGlmICh0eXBlb2YgciQxICE9IFwib2JqZWN0XCIgfHwgciQxID09IG51bGwpXG4gICAgcmV0dXJuIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHRyKE9iamVjdC5lbnRyaWVzKHIkMSkpLCBpID0gYS5uZXh0KCk7ICFpLmRvbmU7IGkgPSBhLm5leHQoKSkge1xuICAgICAgdmFyIG8gPSBKcihpLnZhbHVlLCAyKSwgXyA9IG9bMF0sIEUgPSBvWzFdO1xuICAgICAgaWYgKCFucihfKSkge1xuICAgICAgICByLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgXyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFhcihFKSkge1xuICAgICAgICByLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSB2YWx1ZSBzZXQgZm9yIGtleTogXCIgKyBfKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBBcnJheS5pc0FycmF5KEUpID8gbltfXSA9IEUuc2xpY2UoKSA6IG5bX10gPSBFO1xuICAgIH1cbiAgfSBjYXRjaCAoVCkge1xuICAgIGUgPSB7IGVycm9yOiBUIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChlKSB0aHJvdyBlLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbjtcbn1cbmZ1bmN0aW9uIG5yKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09IFwic3RyaW5nXCIgJiYgci5sZW5ndGggPiAwO1xufVxuZnVuY3Rpb24gYXIocikge1xuICByZXR1cm4gciA9PSBudWxsID8gdHJ1ZSA6IEFycmF5LmlzQXJyYXkocikgPyBxcihyKSA6IGlyKHIpO1xufVxuZnVuY3Rpb24gcXIocikge1xuICB2YXIgZSwgdCwgbjtcbiAgdHJ5IHtcbiAgICBmb3IgKHZhciBhID0gdHIociksIGkgPSBhLm5leHQoKTsgIWkuZG9uZTsgaSA9IGEubmV4dCgpKSB7XG4gICAgICB2YXIgbyA9IGkudmFsdWU7XG4gICAgICBpZiAobyAhPSBudWxsKSB7XG4gICAgICAgIGlmICghbikge1xuICAgICAgICAgIGlmIChpcihvKSkge1xuICAgICAgICAgICAgbiA9IHR5cGVvZiBvO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG8gIT09IG4pXG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoXykge1xuICAgIGUgPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChlKSB0aHJvdyBlLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGlyKHIpIHtcbiAgc3dpdGNoICh0eXBlb2Ygcikge1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIG9yKCkge1xuICByZXR1cm4gZnVuY3Rpb24ociQxKSB7XG4gICAgci5lcnJvcihrcihyJDEpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGtyKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09IFwic3RyaW5nXCIgPyByIDogSlNPTi5zdHJpbmdpZnkocmUocikpO1xufVxuZnVuY3Rpb24gcmUocikge1xuICBmb3IgKHZhciBlID0ge30sIHQgPSByOyB0ICE9PSBudWxsOyApXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuZm9yRWFjaChmdW5jdGlvbihuKSB7XG4gICAgICBpZiAoIWVbbl0pIHtcbiAgICAgICAgdmFyIGEgPSB0W25dO1xuICAgICAgICBhICYmIChlW25dID0gU3RyaW5nKGEpKTtcbiAgICAgIH1cbiAgICB9KSwgdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgcmV0dXJuIGU7XG59XG52YXIgX3IgPSBvcigpO1xuZnVuY3Rpb24gZWUocikge1xuICBfciA9IHI7XG59XG5mdW5jdGlvbiBFcihyKSB7XG4gIHRyeSB7XG4gICAgX3Iocik7XG4gIH0gY2F0Y2gge1xuICB9XG59XG52YXIgdjtcbihmdW5jdGlvbihyKSB7XG4gIHIuQWx3YXlzT2ZmID0gXCJhbHdheXNfb2ZmXCIsIHIuQWx3YXlzT24gPSBcImFsd2F5c19vblwiLCByLlBhcmVudEJhc2VkQWx3YXlzT2ZmID0gXCJwYXJlbnRiYXNlZF9hbHdheXNfb2ZmXCIsIHIuUGFyZW50QmFzZWRBbHdheXNPbiA9IFwicGFyZW50YmFzZWRfYWx3YXlzX29uXCIsIHIuUGFyZW50QmFzZWRUcmFjZUlkUmF0aW8gPSBcInBhcmVudGJhc2VkX3RyYWNlaWRyYXRpb1wiLCByLlRyYWNlSWRSYXRpbyA9IFwidHJhY2VpZHJhdGlvXCI7XG59KSh2IHx8ICh2ID0ge30pKTtcbnZhciB0ZSA9IFwiLFwiLCBuZSA9IFtcIk9URUxfU0RLX0RJU0FCTEVEXCJdO1xuZnVuY3Rpb24gYWUocikge1xuICByZXR1cm4gbmUuaW5kZXhPZihyKSA+IC0xO1xufVxudmFyIGllID0gW1xuICBcIk9URUxfQlNQX0VYUE9SVF9USU1FT1VUXCIsXG4gIFwiT1RFTF9CU1BfTUFYX0VYUE9SVF9CQVRDSF9TSVpFXCIsXG4gIFwiT1RFTF9CU1BfTUFYX1FVRVVFX1NJWkVcIixcbiAgXCJPVEVMX0JTUF9TQ0hFRFVMRV9ERUxBWVwiLFxuICBcIk9URUxfQkxSUF9FWFBPUlRfVElNRU9VVFwiLFxuICBcIk9URUxfQkxSUF9NQVhfRVhQT1JUX0JBVENIX1NJWkVcIixcbiAgXCJPVEVMX0JMUlBfTUFYX1FVRVVFX1NJWkVcIixcbiAgXCJPVEVMX0JMUlBfU0NIRURVTEVfREVMQVlcIixcbiAgXCJPVEVMX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVRcIixcbiAgXCJPVEVMX0FUVFJJQlVURV9DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfU1BBTl9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUXCIsXG4gIFwiT1RFTF9TUEFOX0FUVFJJQlVURV9DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfTE9HUkVDT1JEX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVRcIixcbiAgXCJPVEVMX0xPR1JFQ09SRF9BVFRSSUJVVEVfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX1NQQU5fRVZFTlRfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX1NQQU5fTElOS19DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUXCIsXG4gIFwiT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfRVhQT1JURVJfT1RMUF9USU1FT1VUXCIsXG4gIFwiT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19USU1FT1VUXCIsXG4gIFwiT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfVElNRU9VVFwiLFxuICBcIk9URUxfRVhQT1JURVJfT1RMUF9MT0dTX1RJTUVPVVRcIixcbiAgXCJPVEVMX0VYUE9SVEVSX0pBRUdFUl9BR0VOVF9QT1JUXCJcbl07XG5mdW5jdGlvbiBvZShyKSB7XG4gIHJldHVybiBpZS5pbmRleE9mKHIpID4gLTE7XG59XG52YXIgX2UgPSBbXG4gIFwiT1RFTF9OT19QQVRDSF9NT0RVTEVTXCIsXG4gIFwiT1RFTF9QUk9QQUdBVE9SU1wiLFxuICBcIk9URUxfU0VNQ09OVl9TVEFCSUxJVFlfT1BUX0lOXCJcbl07XG5mdW5jdGlvbiBFZShyKSB7XG4gIHJldHVybiBfZS5pbmRleE9mKHIpID4gLTE7XG59XG52YXIgcCA9IDEgLyAwLCBkID0gMTI4LCBUciA9IDEyOCwgdXIgPSAxMjgsIFYgPSB7XG4gIE9URUxfU0RLX0RJU0FCTEVEOiBmYWxzZSxcbiAgQ09OVEFJTkVSX05BTUU6IFwiXCIsXG4gIEVDU19DT05UQUlORVJfTUVUQURBVEFfVVJJX1Y0OiBcIlwiLFxuICBFQ1NfQ09OVEFJTkVSX01FVEFEQVRBX1VSSTogXCJcIixcbiAgSE9TVE5BTUU6IFwiXCIsXG4gIEtVQkVSTkVURVNfU0VSVklDRV9IT1NUOiBcIlwiLFxuICBOQU1FU1BBQ0U6IFwiXCIsXG4gIE9URUxfQlNQX0VYUE9SVF9USU1FT1VUOiAzZTQsXG4gIE9URUxfQlNQX01BWF9FWFBPUlRfQkFUQ0hfU0laRTogNTEyLFxuICBPVEVMX0JTUF9NQVhfUVVFVUVfU0laRTogMjA0OCxcbiAgT1RFTF9CU1BfU0NIRURVTEVfREVMQVk6IDVlMyxcbiAgT1RFTF9CTFJQX0VYUE9SVF9USU1FT1VUOiAzZTQsXG4gIE9URUxfQkxSUF9NQVhfRVhQT1JUX0JBVENIX1NJWkU6IDUxMixcbiAgT1RFTF9CTFJQX01BWF9RVUVVRV9TSVpFOiAyMDQ4LFxuICBPVEVMX0JMUlBfU0NIRURVTEVfREVMQVk6IDVlMyxcbiAgT1RFTF9FWFBPUlRFUl9KQUVHRVJfQUdFTlRfSE9TVDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9KQUVHRVJfQUdFTlRfUE9SVDogNjgzMixcbiAgT1RFTF9FWFBPUlRFUl9KQUVHRVJfRU5EUE9JTlQ6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfSkFFR0VSX1BBU1NXT1JEOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX0pBRUdFUl9VU0VSOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQ6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfRU5EUE9JTlQ6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0VORFBPSU5UOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19FTkRQT0lOVDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0hFQURFUlM6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfSEVBREVSUzogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfSEVBREVSUzogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfSEVBREVSUzogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RJTUVPVVQ6IDFlNCxcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19USU1FT1VUOiAxZTQsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX1RJTUVPVVQ6IDFlNCxcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfVElNRU9VVDogMWU0LFxuICBPVEVMX0VYUE9SVEVSX1pJUEtJTl9FTkRQT0lOVDogXCJodHRwOi8vbG9jYWxob3N0Ojk0MTEvYXBpL3YyL3NwYW5zXCIsXG4gIE9URUxfTE9HX0xFVkVMOiBYLklORk8sXG4gIE9URUxfTk9fUEFUQ0hfTU9EVUxFUzogW10sXG4gIE9URUxfUFJPUEFHQVRPUlM6IFtcInRyYWNlY29udGV4dFwiLCBcImJhZ2dhZ2VcIl0sXG4gIE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFUzogXCJcIixcbiAgT1RFTF9TRVJWSUNFX05BTUU6IFwiXCIsXG4gIE9URUxfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogcCxcbiAgT1RFTF9BVFRSSUJVVEVfQ09VTlRfTElNSVQ6IGQsXG4gIE9URUxfU1BBTl9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUOiBwLFxuICBPVEVMX1NQQU5fQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBkLFxuICBPVEVMX0xPR1JFQ09SRF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUOiBwLFxuICBPVEVMX0xPR1JFQ09SRF9BVFRSSUJVVEVfQ09VTlRfTElNSVQ6IGQsXG4gIE9URUxfU1BBTl9FVkVOVF9DT1VOVF9MSU1JVDogMTI4LFxuICBPVEVMX1NQQU5fTElOS19DT1VOVF9MSU1JVDogMTI4LFxuICBPVEVMX1NQQU5fQVRUUklCVVRFX1BFUl9FVkVOVF9DT1VOVF9MSU1JVDogVHIsXG4gIE9URUxfU1BBTl9BVFRSSUJVVEVfUEVSX0xJTktfQ09VTlRfTElNSVQ6IHVyLFxuICBPVEVMX1RSQUNFU19FWFBPUlRFUjogXCJcIixcbiAgT1RFTF9UUkFDRVNfU0FNUExFUjogdi5QYXJlbnRCYXNlZEFsd2F5c09uLFxuICBPVEVMX1RSQUNFU19TQU1QTEVSX0FSRzogXCJcIixcbiAgT1RFTF9MT0dTX0VYUE9SVEVSOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfSU5TRUNVUkU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfSU5TRUNVUkU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0lOU0VDVVJFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19JTlNFQ1VSRTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9DT01QUkVTU0lPTjogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19DT01QUkVTU0lPTjogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfQ09NUFJFU1NJT046IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0NPTVBSRVNTSU9OOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfQ0xJRU5UX0tFWTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19DTElFTlRfS0VZOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19DTElFTlRfS0VZOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19DTElFTlRfS0VZOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfQ0xJRU5UX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0NMSUVOVF9DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfQ0xJRU5UX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19DTElFTlRfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9QUk9UT0NPTDogXCJodHRwL3Byb3RvYnVmXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfUFJPVE9DT0w6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19QUk9UT0NPTDogXCJodHRwL3Byb3RvYnVmXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX1BST1RPQ09MOiBcImh0dHAvcHJvdG9idWZcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfVEVNUE9SQUxJVFlfUFJFRkVSRU5DRTogXCJjdW11bGF0aXZlXCIsXG4gIE9URUxfU0VNQ09OVl9TVEFCSUxJVFlfT1BUX0lOOiBbXVxufTtcbmZ1bmN0aW9uIFRlKHIsIGUsIHQpIHtcbiAgaWYgKCEodHlwZW9mIHRbcl0gPiBcInVcIikpIHtcbiAgICB2YXIgbiA9IFN0cmluZyh0W3JdKTtcbiAgICBlW3JdID0gbi50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIjtcbiAgfVxufVxuZnVuY3Rpb24gdWUociwgZSwgdCwgbiwgYSkge1xuICBpZiAobiA9PT0gdm9pZCAwICYmIChuID0gLTEgLyAwKSwgYSA9PT0gdm9pZCAwICYmIChhID0gMSAvIDApLCB0eXBlb2YgdFtyXSA8IFwidVwiKSB7XG4gICAgdmFyIGkgPSBOdW1iZXIodFtyXSk7XG4gICAgaXNOYU4oaSkgfHwgKGkgPCBuID8gZVtyXSA9IG4gOiBpID4gYSA/IGVbcl0gPSBhIDogZVtyXSA9IGkpO1xuICB9XG59XG5mdW5jdGlvbiBmZShyLCBlLCB0LCBuKSB7XG4gIG4gPT09IHZvaWQgMCAmJiAobiA9IHRlKTtcbiAgdmFyIGEgPSB0W3JdO1xuICB0eXBlb2YgYSA9PSBcInN0cmluZ1wiICYmIChlW3JdID0gYS5zcGxpdChuKS5tYXAoZnVuY3Rpb24oaSkge1xuICAgIHJldHVybiBpLnRyaW0oKTtcbiAgfSkpO1xufVxudmFyIHNlID0ge1xuICBBTEw6IFguQUxMLFxuICBWRVJCT1NFOiBYLlZFUkJPU0UsXG4gIERFQlVHOiBYLkRFQlVHLFxuICBJTkZPOiBYLklORk8sXG4gIFdBUk46IFguV0FSTixcbiAgRVJST1I6IFguRVJST1IsXG4gIE5PTkU6IFguTk9ORVxufTtcbmZ1bmN0aW9uIGxlKHIsIGUsIHQpIHtcbiAgdmFyIG4gPSB0W3JdO1xuICBpZiAodHlwZW9mIG4gPT0gXCJzdHJpbmdcIikge1xuICAgIHZhciBhID0gc2Vbbi50b1VwcGVyQ2FzZSgpXTtcbiAgICBhICE9IG51bGwgJiYgKGVbcl0gPSBhKTtcbiAgfVxufVxuZnVuY3Rpb24gaihyKSB7XG4gIHZhciBlID0ge307XG4gIGZvciAodmFyIHQgaW4gVikge1xuICAgIHZhciBuID0gdDtcbiAgICBzd2l0Y2ggKG4pIHtcbiAgICAgIGNhc2UgXCJPVEVMX0xPR19MRVZFTFwiOlxuICAgICAgICBsZShuLCBlLCByKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoYWUobikpXG4gICAgICAgICAgVGUobiwgZSwgcik7XG4gICAgICAgIGVsc2UgaWYgKG9lKG4pKVxuICAgICAgICAgIHVlKG4sIGUsIHIpO1xuICAgICAgICBlbHNlIGlmIChFZShuKSlcbiAgICAgICAgICBmZShuLCBlLCByKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmFyIGEgPSByW25dO1xuICAgICAgICAgIHR5cGVvZiBhIDwgXCJ1XCIgJiYgYSAhPT0gbnVsbCAmJiAoZVtuXSA9IFN0cmluZyhhKSk7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGU7XG59XG5mdW5jdGlvbiBPZSgpIHtcbiAgdmFyIHIgPSBqKGhfKTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIFYsIHIpO1xufVxuZnVuY3Rpb24gY2UoKSB7XG4gIHJldHVybiBqKGhfKTtcbn1cbnZhciBSZSA9IGZ1bmN0aW9uKHIsIGUpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiByW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghdCkgcmV0dXJuIHI7XG4gIHZhciBuID0gdC5jYWxsKHIpLCBhLCBpID0gW10sIG87XG4gIHRyeSB7XG4gICAgZm9yICg7IChlID09PSB2b2lkIDAgfHwgZS0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoIChfKSB7XG4gICAgbyA9IHsgZXJyb3I6IF8gfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmICh0ID0gbi5yZXR1cm4pICYmIHQuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKG8pIHRocm93IG8uZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgcGUgPSBmdW5jdGlvbihyLCBlLCB0KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgYSA9IGUubGVuZ3RoLCBpOyBuIDwgYTsgbisrKVxuICAgIChpIHx8ICEobiBpbiBlKSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLCAwLCBuKSksIGlbbl0gPSBlW25dKTtcbiAgcmV0dXJuIHIuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpO1xufTtcbmZ1bmN0aW9uIGRlKHIpIHtcbiAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIHBlKFtdLCBSZShBJDEocikpLCBmYWxzZSkpKTtcbn1cbnZhciBMZSA9IDgsIEFlID0gMTYsIFBlID0gKFxuICAvKiogQGNsYXNzICovXG4gIC8qIEBfX1BVUkVfXyAqLyAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVUcmFjZUlkID0gWShBZSksIHRoaXMuZ2VuZXJhdGVTcGFuSWQgPSBZKExlKTtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH0pKClcbiksIFIgPSBBcnJheSgzMik7XG5mdW5jdGlvbiBZKHIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIHQgPSAwOyB0IDwgciAqIDI7IHQrKylcbiAgICAgIFJbdF0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNikgKyA0OCwgUlt0XSA+PSA1OCAmJiAoUlt0XSArPSAzOSk7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgUi5zbGljZSgwLCByICogMikpO1xuICB9O1xufVxuZnVuY3Rpb24gU2Uocikge1xufVxudmFyIEllID0gZnVuY3Rpb24ocikge1xuICB2YXIgZSA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgdCA9IGUgJiYgcltlXSwgbiA9IDA7XG4gIGlmICh0KSByZXR1cm4gdC5jYWxsKHIpO1xuICBpZiAociAmJiB0eXBlb2Ygci5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByICYmIG4gPj0gci5sZW5ndGggJiYgKHIgPSB2b2lkIDApLCB7IHZhbHVlOiByICYmIHJbbisrXSwgZG9uZTogIXIgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoZSA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIHZlID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByJDEoZSkge1xuICAgICAgZSA9PT0gdm9pZCAwICYmIChlID0ge30pO1xuICAgICAgdmFyIHQ7XG4gICAgICB0aGlzLl9wcm9wYWdhdG9ycyA9ICh0ID0gZS5wcm9wYWdhdG9ycykgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IFtdLCB0aGlzLl9maWVsZHMgPSBBcnJheS5mcm9tKG5ldyBTZXQodGhpcy5fcHJvcGFnYXRvcnMubWFwKGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBuLmZpZWxkcyA9PSBcImZ1bmN0aW9uXCIgPyBuLmZpZWxkcygpIDogW107XG4gICAgICB9KS5yZWR1Y2UoZnVuY3Rpb24obiwgYSkge1xuICAgICAgICByZXR1cm4gbi5jb25jYXQoYSk7XG4gICAgICB9LCBbXSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIHIkMS5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEsIGk7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gSWUodGhpcy5fcHJvcGFnYXRvcnMpLCBfID0gby5uZXh0KCk7ICFfLmRvbmU7IF8gPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBFID0gXy52YWx1ZTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgRS5pbmplY3QoZSwgdCwgbik7XG4gICAgICAgICAgfSBjYXRjaCAoVCkge1xuICAgICAgICAgICAgci53YXJuKFwiRmFpbGVkIHRvIGluamVjdCB3aXRoIFwiICsgRS5jb25zdHJ1Y3Rvci5uYW1lICsgXCIuIEVycjogXCIgKyBULm1lc3NhZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoVCkge1xuICAgICAgICBhID0geyBlcnJvcjogVCB9O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBfICYmICFfLmRvbmUgJiYgKGkgPSBvLnJldHVybikgJiYgaS5jYWxsKG8pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGlmIChhKSB0aHJvdyBhLmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgciQxLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgcmV0dXJuIHRoaXMuX3Byb3BhZ2F0b3JzLnJlZHVjZShmdW5jdGlvbihhLCBpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGkuZXh0cmFjdChhLCB0LCBuKTtcbiAgICAgICAgfSBjYXRjaCAobykge1xuICAgICAgICAgIHIud2FybihcIkZhaWxlZCB0byBleHRyYWN0IHdpdGggXCIgKyBpLmNvbnN0cnVjdG9yLm5hbWUgKyBcIi4gRXJyOiBcIiArIG8ubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9LCBlKTtcbiAgICB9LCByJDEucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkcy5zbGljZSgpO1xuICAgIH0sIHIkMTtcbiAgfSkoKVxuKSwgQiA9IFwiW18wLTlhLXotKi9dXCIsIHllID0gXCJbYS16XVwiICsgQiArIFwiezAsMjU1fVwiLCBoZSA9IFwiW2EtejAtOV1cIiArIEIgKyBcInswLDI0MH1AW2Etel1cIiArIEIgKyBcInswLDEzfVwiLCBnZSA9IG5ldyBSZWdFeHAoXCJeKD86XCIgKyB5ZSArIFwifFwiICsgaGUgKyBcIikkXCIpLCBtZSA9IC9eWyAtfl17MCwyNTV9WyEtfl0kLywgQ2UgPSAvLHw9LztcbmZ1bmN0aW9uIE5lKHIpIHtcbiAgcmV0dXJuIGdlLnRlc3Qocik7XG59XG5mdW5jdGlvbiBNZShyKSB7XG4gIHJldHVybiBtZS50ZXN0KHIpICYmICFDZS50ZXN0KHIpO1xufVxudmFyIHogPSAzMiwgVWUgPSA1MTIsIFcgPSBcIixcIiwgWiA9IFwiPVwiLCBmciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlKSB7XG4gICAgICB0aGlzLl9pbnRlcm5hbFN0YXRlID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSwgZSAmJiB0aGlzLl9wYXJzZShlKTtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgICAgIHZhciBuID0gdGhpcy5fY2xvbmUoKTtcbiAgICAgIHJldHVybiBuLl9pbnRlcm5hbFN0YXRlLmhhcyhlKSAmJiBuLl9pbnRlcm5hbFN0YXRlLmRlbGV0ZShlKSwgbi5faW50ZXJuYWxTdGF0ZS5zZXQoZSwgdCksIG47XG4gICAgfSwgci5wcm90b3R5cGUudW5zZXQgPSBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgdCA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gdC5faW50ZXJuYWxTdGF0ZS5kZWxldGUoZSksIHQ7XG4gICAgfSwgci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVybmFsU3RhdGUuZ2V0KGUpO1xuICAgIH0sIHIucHJvdG90eXBlLnNlcmlhbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGUgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2tleXMoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICByZXR1cm4gdC5wdXNoKG4gKyBaICsgZS5nZXQobikpLCB0O1xuICAgICAgfSwgW10pLmpvaW4oVyk7XG4gICAgfSwgci5wcm90b3R5cGUuX3BhcnNlID0gZnVuY3Rpb24oZSkge1xuICAgICAgZS5sZW5ndGggPiBVZSB8fCAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IGUuc3BsaXQoVykucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHZhciBhID0gbi50cmltKCksIGkgPSBhLmluZGV4T2YoWik7XG4gICAgICAgIGlmIChpICE9PSAtMSkge1xuICAgICAgICAgIHZhciBvID0gYS5zbGljZSgwLCBpKSwgXyA9IGEuc2xpY2UoaSArIDEsIG4ubGVuZ3RoKTtcbiAgICAgICAgICBOZShvKSAmJiBNZShfKSAmJiB0LnNldChvLCBfKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH0sIC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCkpLCB0aGlzLl9pbnRlcm5hbFN0YXRlLnNpemUgPiB6ICYmICh0aGlzLl9pbnRlcm5hbFN0YXRlID0gbmV3IE1hcChBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUuZW50cmllcygpKS5yZXZlcnNlKCkuc2xpY2UoMCwgeikpKSk7XG4gICAgfSwgci5wcm90b3R5cGUuX2tleXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUua2V5cygpKS5yZXZlcnNlKCk7XG4gICAgfSwgci5wcm90b3R5cGUuX2Nsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZSA9IG5ldyByKCk7XG4gICAgICByZXR1cm4gZS5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAodGhpcy5faW50ZXJuYWxTdGF0ZSksIGU7XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgTCA9IFwidHJhY2VwYXJlbnRcIiwgQSA9IFwidHJhY2VzdGF0ZVwiLCBCZSA9IFwiMDBcIiwgYmUgPSBcIig/IWZmKVtcXFxcZGEtZl17Mn1cIiwgRGUgPSBcIig/IVswXXszMn0pW1xcXFxkYS1mXXszMn1cIiwgWGUgPSBcIig/IVswXXsxNn0pW1xcXFxkYS1mXXsxNn1cIiwgR2UgPSBcIltcXFxcZGEtZl17Mn1cIiwgd2UgPSBuZXcgUmVnRXhwKFwiXlxcXFxzPyhcIiArIGJlICsgXCIpLShcIiArIERlICsgXCIpLShcIiArIFhlICsgXCIpLShcIiArIEdlICsgXCIpKC0uKik/XFxcXHM/JFwiKTtcbmZ1bmN0aW9uIHNyKHIpIHtcbiAgdmFyIGUgPSB3ZS5leGVjKHIpO1xuICByZXR1cm4gIWUgfHwgZVsxXSA9PT0gXCIwMFwiICYmIGVbNV0gPyBudWxsIDoge1xuICAgIHRyYWNlSWQ6IGVbMl0sXG4gICAgc3BhbklkOiBlWzNdLFxuICAgIHRyYWNlRmxhZ3M6IHBhcnNlSW50KGVbNF0sIDE2KVxuICB9O1xufVxudmFyIFZlID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEkMSA9IHhlJDEuZ2V0U3BhbkNvbnRleHQoZSk7XG4gICAgICBpZiAoISghYSQxIHx8IGEoZSkgfHwgIVBuKGEkMSkpKSB7XG4gICAgICAgIHZhciBpID0gQmUgKyBcIi1cIiArIGEkMS50cmFjZUlkICsgXCItXCIgKyBhJDEuc3BhbklkICsgXCItMFwiICsgTnVtYmVyKGEkMS50cmFjZUZsYWdzIHx8IFl0Lk5PTkUpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgbi5zZXQodCwgTCwgaSksIGEkMS50cmFjZVN0YXRlICYmIG4uc2V0KHQsIEEsIGEkMS50cmFjZVN0YXRlLnNlcmlhbGl6ZSgpKTtcbiAgICAgIH1cbiAgICB9LCByLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCBMKTtcbiAgICAgIGlmICghYSlcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB2YXIgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhWzBdIDogYTtcbiAgICAgIGlmICh0eXBlb2YgaSAhPSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gZTtcbiAgICAgIHZhciBvID0gc3IoaSk7XG4gICAgICBpZiAoIW8pXG4gICAgICAgIHJldHVybiBlO1xuICAgICAgby5pc1JlbW90ZSA9IHRydWU7XG4gICAgICB2YXIgXyA9IG4uZ2V0KHQsIEEpO1xuICAgICAgaWYgKF8pIHtcbiAgICAgICAgdmFyIEUgPSBBcnJheS5pc0FycmF5KF8pID8gXy5qb2luKFwiLFwiKSA6IF87XG4gICAgICAgIG8udHJhY2VTdGF0ZSA9IG5ldyBmcih0eXBlb2YgRSA9PSBcInN0cmluZ1wiID8gRSA6IHZvaWQgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4geGUkMS5zZXRTcGFuQ29udGV4dChlLCBvKTtcbiAgICB9LCByLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBbTCwgQV07XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgSCA9IG5zKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgUlBDX01FVEFEQVRBXCIpLCBiO1xuKGZ1bmN0aW9uKHIpIHtcbiAgci5IVFRQID0gXCJodHRwXCI7XG59KShiIHx8IChiID0ge30pKTtcbmZ1bmN0aW9uIGplKHIsIGUpIHtcbiAgcmV0dXJuIHIuc2V0VmFsdWUoSCwgZSk7XG59XG5mdW5jdGlvbiBIZShyKSB7XG4gIHJldHVybiByLmRlbGV0ZVZhbHVlKEgpO1xufVxuZnVuY3Rpb24geGUocikge1xuICByZXR1cm4gci5nZXRWYWx1ZShIKTtcbn1cbnZhciBEID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogbC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPZmZTYW1wbGVyXCI7XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgUCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IGwuUkVDT1JEX0FORF9TQU1QTEVEXG4gICAgICB9O1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPblNhbXBsZXJcIjtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBGZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlKSB7XG4gICAgICB2YXIgdCwgbiwgYSwgaTtcbiAgICAgIHRoaXMuX3Jvb3QgPSBlLnJvb3QsIHRoaXMuX3Jvb3QgfHwgKEVyKG5ldyBFcnJvcihcIlBhcmVudEJhc2VkU2FtcGxlciBtdXN0IGhhdmUgYSByb290IHNhbXBsZXIgY29uZmlndXJlZFwiKSksIHRoaXMuX3Jvb3QgPSBuZXcgUCgpKSwgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZCA9ICh0ID0gZS5yZW1vdGVQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogbmV3IFAoKSwgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZCA9IChuID0gZS5yZW1vdGVQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDogbmV3IEQoKSwgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkID0gKGEgPSBlLmxvY2FsUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IG5ldyBQKCksIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZCA9IChpID0gZS5sb2NhbFBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBuZXcgRCgpO1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oZSwgdCwgbiwgYSwgaSwgbykge1xuICAgICAgdmFyIF8gPSB4ZSQxLmdldFNwYW5Db250ZXh0KGUpO1xuICAgICAgcmV0dXJuICFfIHx8ICFQbihfKSA/IHRoaXMuX3Jvb3Quc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogXy5pc1JlbW90ZSA/IF8udHJhY2VGbGFncyAmIFl0LlNBTVBMRUQgPyB0aGlzLl9yZW1vdGVQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZShlLCB0LCBuLCBhLCBpLCBvKSA6IHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQuc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogXy50cmFjZUZsYWdzICYgWXQuU0FNUExFRCA/IHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC5zaG91bGRTYW1wbGUoZSwgdCwgbiwgYSwgaSwgbykgOiB0aGlzLl9sb2NhbFBhcmVudE5vdFNhbXBsZWQuc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pO1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJQYXJlbnRCYXNlZHtyb290PVwiICsgdGhpcy5fcm9vdC50b1N0cmluZygpICsgXCIsIHJlbW90ZVBhcmVudFNhbXBsZWQ9XCIgKyB0aGlzLl9yZW1vdGVQYXJlbnRTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCBsb2NhbFBhcmVudFNhbXBsZWQ9XCIgKyB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCBsb2NhbFBhcmVudE5vdFNhbXBsZWQ9XCIgKyB0aGlzLl9sb2NhbFBhcmVudE5vdFNhbXBsZWQudG9TdHJpbmcoKSArIFwifVwiO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIEtlID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKGUpIHtcbiAgICAgIGUgPT09IHZvaWQgMCAmJiAoZSA9IDApLCB0aGlzLl9yYXRpbyA9IGUsIHRoaXMuX3JhdGlvID0gdGhpcy5fbm9ybWFsaXplKGUpLCB0aGlzLl91cHBlckJvdW5kID0gTWF0aC5mbG9vcih0aGlzLl9yYXRpbyAqIDQyOTQ5NjcyOTUpO1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oZSwgdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IGdzKHQpICYmIHRoaXMuX2FjY3VtdWxhdGUodCkgPCB0aGlzLl91cHBlckJvdW5kID8gbC5SRUNPUkRfQU5EX1NBTVBMRUQgOiBsLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlRyYWNlSWRSYXRpb0Jhc2Vke1wiICsgdGhpcy5fcmF0aW8gKyBcIn1cIjtcbiAgICB9LCByLnByb3RvdHlwZS5fbm9ybWFsaXplID0gZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBlICE9IFwibnVtYmVyXCIgfHwgaXNOYU4oZSkgPyAwIDogZSA+PSAxID8gMSA6IGUgPD0gMCA/IDAgOiBlO1xuICAgIH0sIHIucHJvdG90eXBlLl9hY2N1bXVsYXRlID0gZnVuY3Rpb24oZSkge1xuICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSAwOyBuIDwgZS5sZW5ndGggLyA4OyBuKyspIHtcbiAgICAgICAgdmFyIGEgPSBuICogOCwgaSA9IHBhcnNlSW50KGUuc2xpY2UoYSwgYSArIDgpLCAxNik7XG4gICAgICAgIHQgPSAodCBeIGkpID4+PiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgWWUgPSBcIltvYmplY3QgT2JqZWN0XVwiLCB6ZSA9IFwiW29iamVjdCBOdWxsXVwiLCBXZSA9IFwiW29iamVjdCBVbmRlZmluZWRdXCIsIFplID0gRnVuY3Rpb24ucHJvdG90eXBlLCBsciA9IFplLnRvU3RyaW5nLCAkZSA9IGxyLmNhbGwoT2JqZWN0KSwgSmUgPSBRZShPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksIE9yID0gT2JqZWN0LnByb3RvdHlwZSwgY3IgPSBPci5oYXNPd25Qcm9wZXJ0eSwgZiA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHZvaWQgMCwgUnIgPSBPci50b1N0cmluZztcbmZ1bmN0aW9uIFFlKHIsIGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gcihlKHQpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uICQocikge1xuICBpZiAoIXFlKHIpIHx8IGtlKHIpICE9PSBZZSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIHZhciBlID0gSmUocik7XG4gIGlmIChlID09PSBudWxsKVxuICAgIHJldHVybiB0cnVlO1xuICB2YXIgdCA9IGNyLmNhbGwoZSwgXCJjb25zdHJ1Y3RvclwiKSAmJiBlLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiICYmIHQgaW5zdGFuY2VvZiB0ICYmIGxyLmNhbGwodCkgPT09ICRlO1xufVxuZnVuY3Rpb24gcWUocikge1xuICByZXR1cm4gciAhPSBudWxsICYmIHR5cGVvZiByID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBrZShyKSB7XG4gIHJldHVybiByID09IG51bGwgPyByID09PSB2b2lkIDAgPyBXZSA6IHplIDogZiAmJiBmIGluIE9iamVjdChyKSA/IHJ0KHIpIDogZXQocik7XG59XG5mdW5jdGlvbiBydChyKSB7XG4gIHZhciBlID0gY3IuY2FsbChyLCBmKSwgdCA9IHJbZl0sIG4gPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICByW2ZdID0gdm9pZCAwLCBuID0gITA7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHZhciBhID0gUnIuY2FsbChyKTtcbiAgcmV0dXJuIG4gJiYgKGUgPyByW2ZdID0gdCA6IGRlbGV0ZSByW2ZdKSwgYTtcbn1cbmZ1bmN0aW9uIGV0KHIpIHtcbiAgcmV0dXJuIFJyLmNhbGwocik7XG59XG52YXIgdHQgPSAyMDtcbmZ1bmN0aW9uIG50KCkge1xuICBmb3IgKHZhciByID0gW10sIGUgPSAwOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKVxuICAgIHJbZV0gPSBhcmd1bWVudHNbZV07XG4gIGZvciAodmFyIHQgPSByLnNoaWZ0KCksIG4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTsgci5sZW5ndGggPiAwOyApXG4gICAgdCA9IHByKHQsIHIuc2hpZnQoKSwgMCwgbik7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gQyhyKSB7XG4gIHJldHVybiB5KHIpID8gci5zbGljZSgpIDogcjtcbn1cbmZ1bmN0aW9uIHByKHIsIGUsIHQsIG4pIHtcbiAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCk7XG4gIHZhciBhO1xuICBpZiAoISh0ID4gdHQpKSB7XG4gICAgaWYgKHQrKywgUyhyKSB8fCBTKGUpIHx8IGRyKGUpKVxuICAgICAgYSA9IEMoZSk7XG4gICAgZWxzZSBpZiAoeShyKSkge1xuICAgICAgaWYgKGEgPSByLnNsaWNlKCksIHkoZSkpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBvID0gZS5sZW5ndGg7IGkgPCBvOyBpKyspXG4gICAgICAgICAgYS5wdXNoKEMoZVtpXSkpO1xuICAgICAgZWxzZSBpZiAoTyhlKSlcbiAgICAgICAgZm9yICh2YXIgXyA9IE9iamVjdC5rZXlzKGUpLCBpID0gMCwgbyA9IF8ubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIEUgPSBfW2ldO1xuICAgICAgICAgIGFbRV0gPSBDKGVbRV0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChPKHIpKVxuICAgICAgaWYgKE8oZSkpIHtcbiAgICAgICAgaWYgKCFhdChyLCBlKSlcbiAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgYSA9IE9iamVjdC5hc3NpZ24oe30sIHIpO1xuICAgICAgICBmb3IgKHZhciBfID0gT2JqZWN0LmtleXMoZSksIGkgPSAwLCBvID0gXy5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgRSA9IF9baV0sIFQgPSBlW0VdO1xuICAgICAgICAgIGlmIChTKFQpKVxuICAgICAgICAgICAgdHlwZW9mIFQgPiBcInVcIiA/IGRlbGV0ZSBhW0VdIDogYVtFXSA9IFQ7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgcyA9IGFbRV0sIGggPSBUO1xuICAgICAgICAgICAgaWYgKEoociwgRSwgbikgfHwgSihlLCBFLCBuKSlcbiAgICAgICAgICAgICAgZGVsZXRlIGFbRV07XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKE8ocykgJiYgTyhoKSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gbi5nZXQocykgfHwgW10sIEYgPSBuLmdldChoKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB4LnB1c2goeyBvYmo6IHIsIGtleTogRSB9KSwgRi5wdXNoKHsgb2JqOiBlLCBrZXk6IEUgfSksIG4uc2V0KHMsIHgpLCBuLnNldChoLCBGKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhW0VdID0gcHIoYVtFXSwgVCwgdCwgbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2VcbiAgICAgICAgYSA9IGU7XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmZ1bmN0aW9uIEoociwgZSwgdCkge1xuICBmb3IgKHZhciBuID0gdC5nZXQocltlXSkgfHwgW10sIGEgPSAwLCBpID0gbi5sZW5ndGg7IGEgPCBpOyBhKyspIHtcbiAgICB2YXIgbyA9IG5bYV07XG4gICAgaWYgKG8ua2V5ID09PSBlICYmIG8ub2JqID09PSByKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24geShyKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHIpO1xufVxuZnVuY3Rpb24gZHIocikge1xuICByZXR1cm4gdHlwZW9mIHIgPT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gTyhyKSB7XG4gIHJldHVybiAhUyhyKSAmJiAheShyKSAmJiAhZHIocikgJiYgdHlwZW9mIHIgPT0gXCJvYmplY3RcIjtcbn1cbmZ1bmN0aW9uIFMocikge1xuICByZXR1cm4gdHlwZW9mIHIgPT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgciA9PSBcIm51bWJlclwiIHx8IHR5cGVvZiByID09IFwiYm9vbGVhblwiIHx8IHR5cGVvZiByID4gXCJ1XCIgfHwgciBpbnN0YW5jZW9mIERhdGUgfHwgciBpbnN0YW5jZW9mIFJlZ0V4cCB8fCByID09PSBudWxsO1xufVxuZnVuY3Rpb24gYXQociwgZSkge1xuICByZXR1cm4gISghJChyKSB8fCAhJChlKSk7XG59XG52YXIgaXQgPSAvKiBAX19QVVJFX18gKi8gKGZ1bmN0aW9uKCkge1xuICB2YXIgciA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgICByZXR1cm4gciA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIG4uX19wcm90b19fID0gYTtcbiAgICB9IHx8IGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIGZvciAodmFyIGkgaW4gYSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGkpICYmIChuW2ldID0gYVtpXSk7XG4gICAgfSwgcihlLCB0KTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKGUsIHQpIHtcbiAgICBpZiAodHlwZW9mIHQgIT0gXCJmdW5jdGlvblwiICYmIHQgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyh0KSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgcihlLCB0KTtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGU7XG4gICAgfVxuICAgIGUucHJvdG90eXBlID0gdCA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4oKSk7XG4gIH07XG59KSgpLCBMciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24ocikge1xuICAgIGl0KGUsIHIpO1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdmFyIG4gPSByLmNhbGwodGhpcywgdCkgfHwgdGhpcztcbiAgICAgIHJldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YobiwgZS5wcm90b3R5cGUpLCBuO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfSkoRXJyb3IpXG4pO1xuZnVuY3Rpb24gb3QociwgZSkge1xuICB2YXIgdCwgbiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKGksIG8pIHtcbiAgICB0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIG8obmV3IExyKFwiT3BlcmF0aW9uIHRpbWVkIG91dC5cIikpO1xuICAgIH0sIGUpO1xuICB9KTtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbciwgbl0pLnRoZW4oZnVuY3Rpb24oYSkge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0sIGZ1bmN0aW9uKGEpIHtcbiAgICB0aHJvdyBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0pO1xufVxuZnVuY3Rpb24gX3Qocikge1xuICByZXR1cm4gdHlwZW9mIHIgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiByLl9fb3JpZ2luYWwgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiByLl9fdW53cmFwID09IFwiZnVuY3Rpb25cIiAmJiByLl9fd3JhcHBlZCA9PT0gdHJ1ZTtcbn1cbnZhciBFdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICAgIHZhciBlID0gdGhpcztcbiAgICAgIHRoaXMuX3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIGUuX3Jlc29sdmUgPSB0LCBlLl9yZWplY3QgPSBuO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoci5wcm90b3R5cGUsIFwicHJvbWlzZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvbWlzZTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pLCByLnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24oZSkge1xuICAgICAgdGhpcy5fcmVzb2x2ZShlKTtcbiAgICB9LCByLnByb3RvdHlwZS5yZWplY3QgPSBmdW5jdGlvbihlKSB7XG4gICAgICB0aGlzLl9yZWplY3QoZSk7XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgVHQgPSBmdW5jdGlvbihyLCBlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiByO1xuICB2YXIgbiA9IHQuY2FsbChyKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAoZSA9PT0gdm9pZCAwIHx8IGUtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG8gPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIHV0ID0gZnVuY3Rpb24ociwgZSwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSBlLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gZSkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwgMCwgbikpLCBpW25dID0gZVtuXSk7XG4gIHJldHVybiByLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKTtcbn0sIGZ0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKGUsIHQpIHtcbiAgICAgIHRoaXMuX2NhbGxiYWNrID0gZSwgdGhpcy5fdGhhdCA9IHQsIHRoaXMuX2lzQ2FsbGVkID0gZmFsc2UsIHRoaXMuX2RlZmVycmVkID0gbmV3IEV0KCk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoci5wcm90b3R5cGUsIFwiaXNDYWxsZWRcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2FsbGVkO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLnByb3RvdHlwZSwgXCJwcm9taXNlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSksIHIucHJvdG90eXBlLmNhbGwgPSBmdW5jdGlvbigpIHtcbiAgICAgIGZvciAodmFyIGUsIHQgPSB0aGlzLCBuID0gW10sIGEgPSAwOyBhIDwgYXJndW1lbnRzLmxlbmd0aDsgYSsrKVxuICAgICAgICBuW2FdID0gYXJndW1lbnRzW2FdO1xuICAgICAgaWYgKCF0aGlzLl9pc0NhbGxlZCkge1xuICAgICAgICB0aGlzLl9pc0NhbGxlZCA9IHRydWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKChlID0gdGhpcy5fY2FsbGJhY2spLmNhbGwuYXBwbHkoZSwgdXQoW3RoaXMuX3RoYXRdLCBUdChuKSwgITEpKSkudGhlbihmdW5jdGlvbihpKSB7XG4gICAgICAgICAgICByZXR1cm4gdC5fZGVmZXJyZWQucmVzb2x2ZShpKTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihpKSB7XG4gICAgICAgICAgICByZXR1cm4gdC5fZGVmZXJyZWQucmVqZWN0KGkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChpKSB7XG4gICAgICAgICAgdGhpcy5fZGVmZXJyZWQucmVqZWN0KGkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fZGVmZXJyZWQucHJvbWlzZTtcbiAgICB9LCByO1xuICB9KSgpXG4pO1xuZnVuY3Rpb24gc3QociwgZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCkge1xuICAgIFRlJDEud2l0aCh1KFRlJDEuYWN0aXZlKCkpLCBmdW5jdGlvbigpIHtcbiAgICAgIHIuZXhwb3J0KGUsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdChuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbnZhciBsdCA9IHtcbiAgZ2V0S2V5UGFpcnM6IGVyLFxuICBzZXJpYWxpemVLZXlQYWlyczogcnIsXG4gIHBhcnNlS2V5UGFpcnNJbnRvUmVjb3JkOiBXcixcbiAgcGFyc2VQYWlyS2V5VmFsdWU6IHdcbn0sIE90ID0ge1xuICBfZXhwb3J0OiBzdFxufTtcbmNvbnN0IFB0ID0gLyogQF9fUFVSRV9fICovIE9iamVjdC5mcmVlemUoLyogQF9fUFVSRV9fICovIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgQWx3YXlzT2ZmU2FtcGxlcjogRCxcbiAgQWx3YXlzT25TYW1wbGVyOiBQLFxuICBBbmNob3JlZENsb2NrOiAkcixcbiAgQmluZE9uY2VGdXR1cmU6IGZ0LFxuICBDb21wb3NpdGVQcm9wYWdhdG9yOiB2ZSxcbiAgREVGQVVMVF9BVFRSSUJVVEVfQ09VTlRfTElNSVQ6IGQsXG4gIERFRkFVTFRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogcCxcbiAgREVGQVVMVF9FTlZJUk9OTUVOVDogVixcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfRVZFTlRfQ09VTlRfTElNSVQ6IFRyLFxuICBERUZBVUxUX1NQQU5fQVRUUklCVVRFX1BFUl9MSU5LX0NPVU5UX0xJTUlUOiB1cixcbiAgZ2V0IEV4cG9ydFJlc3VsdENvZGUoKSB7XG4gICAgcmV0dXJuIGEkMTtcbiAgfSxcbiAgUGFyZW50QmFzZWRTYW1wbGVyOiBGZSxcbiAgZ2V0IFJQQ1R5cGUoKSB7XG4gICAgcmV0dXJuIGI7XG4gIH0sXG4gIFJhbmRvbUlkR2VuZXJhdG9yOiBQZSxcbiAgU0RLX0lORk86IFRBLFxuICBUUkFDRV9QQVJFTlRfSEVBREVSOiBMLFxuICBUUkFDRV9TVEFURV9IRUFERVI6IEEsXG4gIFRpbWVvdXRFcnJvcjogTHIsXG4gIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlcjogS2UsXG4gIFRyYWNlU3RhdGU6IGZyLFxuICBnZXQgVHJhY2VzU2FtcGxlclZhbHVlcygpIHtcbiAgICByZXR1cm4gdjtcbiAgfSxcbiAgVkVSU0lPTjogdFMsXG4gIFczQ0JhZ2dhZ2VQcm9wYWdhdG9yOiBacixcbiAgVzNDVHJhY2VDb250ZXh0UHJvcGFnYXRvcjogVmUsXG4gIF9nbG9iYWxUaGlzOiBoXyxcbiAgYWRkSHJUaW1lczogYl8sXG4gIGJhZ2dhZ2VVdGlsczogbHQsXG4gIGNhbGxXaXRoVGltZW91dDogb3QsXG4gIGRlbGV0ZVJQQ01ldGFkYXRhOiBIZSxcbiAgZ2V0RW52OiBPZSxcbiAgZ2V0RW52V2l0aG91dERlZmF1bHRzOiBjZSxcbiAgZ2V0UlBDTWV0YWRhdGE6IHhlLFxuICBnZXRUaW1lT3JpZ2luOiByXyxcbiAgZ2xvYmFsRXJyb3JIYW5kbGVyOiBFcixcbiAgaGV4VG9CYXNlNjQ6IGRlLFxuICBoZXhUb0JpbmFyeTogQSQxLFxuICBoclRpbWU6IHBfLFxuICBoclRpbWVEdXJhdGlvbjogWGUkMSxcbiAgaHJUaW1lVG9NaWNyb3NlY29uZHM6IGplJDEsXG4gIGhyVGltZVRvTWlsbGlzZWNvbmRzOiBrZSQxLFxuICBoclRpbWVUb05hbm9zZWNvbmRzOiB4ZSQyLFxuICBoclRpbWVUb1RpbWVTdGFtcDogUWUkMSxcbiAgaW50ZXJuYWw6IE90LFxuICBpc0F0dHJpYnV0ZUtleTogbnIsXG4gIGlzQXR0cmlidXRlVmFsdWU6IGFyLFxuICBpc1RpbWVJbnB1dDogcWUkMSxcbiAgaXNUaW1lSW5wdXRIclRpbWU6IE5fLFxuICBpc1RyYWNpbmdTdXBwcmVzc2VkOiBhLFxuICBpc1VybElnbm9yZWQ6IFplJDEsXG4gIGlzV3JhcHBlZDogX3QsXG4gIGxvZ2dpbmdFcnJvckhhbmRsZXI6IG9yLFxuICBtZXJnZTogbnQsXG4gIG1pbGxpc1RvSHJUaW1lOiBPJDEsXG4gIG90cGVyZm9ybWFuY2U6IFIkMSxcbiAgcGFyc2VFbnZpcm9ubWVudDogaixcbiAgcGFyc2VUcmFjZVBhcmVudDogc3IsXG4gIHNhbml0aXplQXR0cmlidXRlczogUXIsXG4gIHNldEdsb2JhbEVycm9ySGFuZGxlcjogZWUsXG4gIHNldFJQQ01ldGFkYXRhOiBqZSxcbiAgc3VwcHJlc3NUcmFjaW5nOiB1LFxuICB0aW1lSW5wdXRUb0hyVGltZTogd2UkMSxcbiAgdW5yZWZUaW1lcjogU2UsXG4gIHVuc3VwcHJlc3NUcmFjaW5nOiBzLFxuICB1cmxNYXRjaGVzOiBnX1xufSwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiBcIk1vZHVsZVwiIH0pKTtcblxuZXhwb3J0IHsgRXIgYXMgRSwgT2UgYXMgTywgUHQgYXMgUCwgUXIgYXMgUSwgU2UgYXMgUywgVmUgYXMgViwgWnIgYXMgWiwgYXIgYXMgYSwgdiBhcyBiLCBjZSBhcyBjLCBkLCBPdCBhcyBlLCBmdCBhcyBmLCBsLCBudCBhcyBuLCBwLCB2ZSBhcyB2IH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFLQSxHQUFJLEtBQUtDLEdBQUksTUFBTUMsSUFBSSxLQUFLQyxJQUFJLEtBQUtDLElBQU0sTUFBTUMsSUFBSyxLQUFLQyxJQUFLLEtBQUtDLElBQU0sTUFBTUMsSUFBSSxNQUFNQyxJQUFNLE1BQU1DLElBQU0sS0FBS0MsSUFBTSxNQUFNQyxJQUFNLE1BQU1DLElBQU0sTUFBTUMsSUFBTSxLQUFLQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsVUFBVTtBQUM3TSxTQUFTLEtBQUFDLEdBQUcsS0FBQUMsR0FBRyxLQUFBQyxVQUFTO0FBQ3hCLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLEtBQUtDLEdBQUssS0FBS0MsVUFBVztBQUNuQyxTQUFTLEtBQUFDLEdBQUcsS0FBS0MsR0FBTSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBTSxLQUFLQyxJQUFJLEtBQUtDLFVBQVU7QUFDNUUsU0FBUyxNQUFNQyxJQUFJLE1BQU1DLFVBQVU7QUFFbkMsSUFBSUM7QUFBQSxDQUNILFNBQVNaLEdBQUc7QUFDWCxFQUFBQSxFQUFFQSxFQUFFLGFBQWEsQ0FBQyxJQUFJLGNBQWNBLEVBQUVBLEVBQUUsU0FBUyxDQUFDLElBQUksVUFBVUEsRUFBRUEsRUFBRSxxQkFBcUIsQ0FBQyxJQUFJO0FBQ2hHLEdBQUdZLE1BQU1BLElBQUksQ0FBQyxFQUFFO0FBQ2hCLElBQUlDLEtBQUssS0FBS0MsSUFBSSxLQUFL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QUEsRUFDcEIsdUJBQXVCO0FBQUEsRUFDdkIsZ0JBQWdCMkQ7QUFBQSxFQUNoQixpQkFBaUIvRjtBQUFBLEVBQ2pCLG1CQUFtQmY7QUFBQSxFQUNuQixZQUFZd0Y7QUFBQSxFQUNaLG1CQUFtQnhFO0FBQUEsRUFDbkIsWUFBWWpCO0FBQ2QsR0FBRyxPQUFPLGFBQWEsRUFBRSxPQUFPLFNBQVMsQ0FBQyxDQUFDOyIsCiAgIm5hbWVzIjogWyJ5XyIsICJoXyIsICJmXyIsICJnXyIsICJ3ZSQxIiwgIlIkMSIsICJPJDEiLCAiWmUkMSIsICJOXyIsICJxZSQxIiwgIlFlJDEiLCAieGUkMiIsICJrZSQxIiwgImplJDEiLCAiWGUkMSIsICJwXyIsICJyXyIsICJiXyIsICJhIiwgInUiLCAicyIsICJyIiwgIkEkMSIsICJhJDEiLCAiWCIsICJ4ZSQxIiwgIlBuIiwgIll0IiwgIlRlJDEiLCAibnMiLCAiZ3MiLCAidFMiLCAiVEEiLCAibCIsICJ4ciIsICJVIiwgIm0iLCAiRnIiLCAiS3IiLCAiWXIiLCAienIiLCAidCIsICJuIiwgImkiLCAibyIsICJyciIsICJlciIsICJ3IiwgIldyIiwgIlpyIiwgIkUiLCAiVCIsICIkciIsICJ0ciIsICJKciIsICJRciIsICJyJDEiLCAibnIiLCAiYXIiLCAicXIiLCAiaXIiLCAib3IiLCAia3IiLCAicmUiLCAiX3IiLCAiRXIiLCAidiIsICJ0ZSIsICJhZSIsICJpZSIsICJvZSIsICJFZSIsICJwIiwgImQiLCAiVHIiLCAidXIiLCAiViIsICJUZSIsICJmZSIsICJzZSIsICJsZSIsICJqIiwgIk9lIiwgImNlIiwgIlJlIiwgInBlIiwgImRlIiwgIkxlIiwgIkFlIiwgIlBlIiwgIlkiLCAiUiIsICJTZSIsICJ2ZSIsICJCIiwgInllIiwgImhlIiwgImdlIiwgIm1lIiwgInoiLCAiVWUiLCAiVyIsICJaIiwgImZyIiwgIkwiLCAiQSIsICJCZSIsICJiZSIsICJYZSIsICJHZSIsICJ3ZSIsICJzciIsICJWZSIsICJiIiwgImplIiwgInhlIiwgIlAiLCAiWWUiLCAiemUiLCAiV2UiLCAiWmUiLCAibHIiLCAiJGUiLCAiSmUiLCAiUWUiLCAiT3IiLCAiY3IiLCAiZiIsICJSciIsICIkIiwgInFlIiwgImtlIiwgInJ0IiwgImV0IiwgInR0IiwgIm50IiwgInByIiwgInkiLCAiUyIsICJkciIsICJPIiwgImF0IiwgImgiLCAiSiIsICJ4IiwgIml0IiwgIkxyIiwgIm90IiwgIl90IiwgIkV0IiwgIlR0IiwgInV0IiwgImZ0IiwgInN0IiwgImx0IiwgIk90IiwgIlB0Il0KfQo=