@getopenpay/openpay-js-react 0.5.25-alpha.a551871 → 0.5.26-alpha.153f26b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/{Resource-CpYeGio5-Crlrtvzx.js → Resource-BGoGzezJ-D6AGhJvO.js} +2 -2
- package/dist/SimpleSpanProcessor-EUrRvOxD-Cx0ByL0E.js +910 -0
- package/dist/detect-resources-CeCsS5c2-T4BVBhqT.js +862 -0
- package/dist/diag-api-b72ohECP-DeE8Ubm6.js +6 -0
- package/dist/{index-TeVCMfiW-BtVV3Emw.js → index-0F1by-jA-BqILNNkT.js} +33 -33
- package/dist/{index-By2_XDEC-BWEZq0hE.js → index-3_JD_UJB-DRHt9Q6d.js} +2 -2
- package/dist/{index-DZ1Er9UK-CFqxcZP4.js → index-CfXib0tt-DXx3V2OH.js} +2 -2
- package/dist/{index-NCAOVimP-BcCtrd4O.js → index-DKqJssii-Cw5XWpWg.js} +66 -66
- package/dist/{index-CvuCprS8-B_Yax6-R.js → index-Db8m-dbQ-DT_iOm2i.js} +2 -2
- package/dist/index-Dgbfu9zy.js +10423 -0
- package/dist/index-DkMLIoAy-CDGaA3KQ.js +1012 -0
- package/dist/{index-mdlHE8Fi-DDx5Cjgi.js → index-DkTmkVoN-DmchP8Pf.js} +2 -2
- package/dist/{index-gOa9aopa-oVE-SOM0.js → index-RQ76L6S5-BXvE5isJ.js} +5 -5
- package/dist/{index-Dbr9bp6a-sEQgAlIq.js → index-l5J9XaMl-CQcTnQqW.js} +10 -10
- package/dist/index.d.ts +18 -0
- package/dist/index.js +4 -4
- package/dist/{metrics-api-l2AFyrzy-MaTXNkC6.js → metrics-api-CWasuQP9-CCSb8OHf.js} +14 -14
- package/dist/{suppress-tracing-D5T6gdNh-B4bDPm8x.js → suppress-tracing-BOJu4Nwm-CtrfuoLj.js} +2 -2
- package/dist/{url-CHzjVJbO-CQh_-bbK.js → url-DlMm-vrv-1uvNj_ep.js} +89 -89
- package/dist/{utils-D8tO_9FV-Dz_8ziJx.js → utils-CRXyxzkZ-C5WXE8kl.js} +10 -10
- package/dist/{utils-DAJoEkd6-DqcqG-Cu.js → utils-TP7isLKj-Cxp1nWtV.js} +2 -2
- package/package.json +1 -1
- package/dist/SimpleSpanProcessor-gnSJN3jD-DOHVdqI6.js +0 -910
- package/dist/detect-resources-BQutTEeG-CLQLes2c.js +0 -862
- package/dist/diag-api-DQpLxQUF-Bq4RIuXi.js +0 -6
- package/dist/index-BxfodL6B-wW9M3hrZ.js +0 -1012
- package/dist/index-DznVXDC2.js +0 -10133
|
@@ -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-DlMm-vrv-1uvNj_ep.js";
|
|
2
|
+
import { a as X, u as J, s as Bt } from "./suppress-tracing-BOJu4Nwm-CtrfuoLj.js";
|
|
3
|
+
import { r as O } from "./diag-api-b72ohECP-DeE8Ubm6.js";
|
|
4
|
+
import { A as Q, a as Xt } from "./ExportResult-BacsqwKA-wgTHEn_9.js";
|
|
5
|
+
import { s as u, z as N, H as q, m as M, G as K, I as jt, V as Gt } from "./index-Dgbfu9zy.js";
|
|
6
|
+
import { bm as xt, 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 zt(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 Yt = (
|
|
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(E) {
|
|
84
|
+
var T = j(E);
|
|
85
|
+
if (T) {
|
|
86
|
+
var c = { value: T.value };
|
|
87
|
+
T.metadata && (c.metadata = T.metadata), i[T.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], E = i[1];
|
|
138
|
+
if (!nt(_)) {
|
|
139
|
+
O.warn("Invalid attribute key: " + _);
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (!ot(E)) {
|
|
143
|
+
O.warn("Invalid attribute value set for key: " + _);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
Array.isArray(E) ? r[_] = E.slice() : r[_] = E;
|
|
147
|
+
}
|
|
148
|
+
} catch (T) {
|
|
149
|
+
e = { error: T };
|
|
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 Et(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 Ee(t) {
|
|
272
|
+
return _e.indexOf(t) > -1;
|
|
273
|
+
}
|
|
274
|
+
var R = 1 / 0, L = 128, Tt = 128, ut = 128, G = {
|
|
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: Tt,
|
|
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 Te(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 x(t) {
|
|
390
|
+
var e = {};
|
|
391
|
+
for (var n in G) {
|
|
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
|
+
Te(r, e, t);
|
|
400
|
+
else if (ie(r))
|
|
401
|
+
ue(r, e, t);
|
|
402
|
+
else if (Ee(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 = x(B);
|
|
414
|
+
return Object.assign({}, G, t);
|
|
415
|
+
}
|
|
416
|
+
function Oe() {
|
|
417
|
+
return x(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 E = _.value;
|
|
487
|
+
try {
|
|
488
|
+
E.inject(e, n, r);
|
|
489
|
+
} catch (T) {
|
|
490
|
+
O.warn("Failed to inject with " + E.constructor.name + ". Err: " + T.message);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
} catch (T) {
|
|
494
|
+
o = { error: T };
|
|
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, z = ",", Y = "=", 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 + Y + e.get(r)), n;
|
|
540
|
+
}, []).join(z);
|
|
541
|
+
}, t.prototype._parse = function(e) {
|
|
542
|
+
e.length > be || (this._internalState = e.split(z).reverse().reduce(function(n, r) {
|
|
543
|
+
var o = r.trim(), a = o.indexOf(Y);
|
|
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 Ge = (
|
|
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 E = Array.isArray(_) ? _.join(",") : _;
|
|
591
|
+
i.traceState = new lt(typeof E == "string" ? E : 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 xe(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 || (Et(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: Gt(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]", ze = "[object Undefined]", Ye = Function.prototype, st = Ye.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 ? ze : $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 E = _[a];
|
|
730
|
+
o[E] = C(e[E]);
|
|
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 E = _[a], T = e[E];
|
|
739
|
+
if (y(T))
|
|
740
|
+
typeof T > "u" ? delete o[E] : o[E] = T;
|
|
741
|
+
else {
|
|
742
|
+
var c = o[E], m = T;
|
|
743
|
+
if (W(t, E, r) || W(e, E, r))
|
|
744
|
+
delete o[E];
|
|
745
|
+
else {
|
|
746
|
+
if (f(c) && f(m)) {
|
|
747
|
+
var V = r.get(c) || [], F = r.get(m) || [];
|
|
748
|
+
V.push({ obj: t, key: E }), F.push({ obj: e, key: E }), r.set(c, V), r.set(m, F);
|
|
749
|
+
}
|
|
750
|
+
o[E] = Rt(o[E], T, 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 Er = (
|
|
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
|
+
), Tr = 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 Er();
|
|
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], Tr(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: zt,
|
|
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: G,
|
|
930
|
+
DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Tt,
|
|
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: xt,
|
|
950
|
+
W3CBaggagePropagator: Yt,
|
|
951
|
+
W3CTraceContextPropagator: Ge,
|
|
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: Et,
|
|
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: x,
|
|
983
|
+
parseTraceParent: ct,
|
|
984
|
+
sanitizeAttributes: Jt,
|
|
985
|
+
setGlobalErrorHandler: ee,
|
|
986
|
+
setRPCMetadata: xe,
|
|
987
|
+
suppressTracing: J,
|
|
988
|
+
timeInputToHrTime: yt,
|
|
989
|
+
unrefTimer: ye,
|
|
990
|
+
unsuppressTracing: Bt,
|
|
991
|
+
urlMatches: dt
|
|
992
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
993
|
+
export {
|
|
994
|
+
Et as E,
|
|
995
|
+
fe as O,
|
|
996
|
+
dr as P,
|
|
997
|
+
Jt as Q,
|
|
998
|
+
ye as S,
|
|
999
|
+
Ge as V,
|
|
1000
|
+
Yt 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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtRGtNTElvQXktIX57MDBpfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGggYXMgaF8sIGRDIGFzIGZfLCBnIGFzIGdfLCB3IGFzIHdlJDEsIGRHIGFzIFIkMSwgTyBhcyBPJDEsIGEgYXMgWmUkMSwgZEggYXMgTl8sIGRFIGFzIHFlJDEsIGRLIGFzIFFlJDEsIGMgYXMgeGUkMSwgZEwgYXMga2UkMSwgZEQgYXMgamUkMSwgZEYgYXMgWGUkMSwgcCBhcyBwXywgZEogYXMgcl8sIGRJIGFzIGJfIH0gZnJvbSAnLi91cmwtRGxNbS12cnYtIX57MDBifX4uanMnO1xuaW1wb3J0IHsgYSwgdSwgcyB9IGZyb20gJy4vc3VwcHJlc3MtdHJhY2luZy1CT0p1NE53bS0hfnswMG59fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1iNzJvaEVDUC0hfnswMGF9fi5qcyc7XG5pbXBvcnQgeyBBIGFzIEEkMSwgYSBhcyBhJDEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CYWNzcXdLQS0hfnswMGx9fi5qcyc7XG5pbXBvcnQgeyBzIGFzIHNlJDEsIHogYXMgemUkMSwgSCBhcyBIbiwgbSBhcyBtciwgRyBhcyBHZSQxLCBJIGFzIElzLCBWIGFzIFZzIH0gZnJvbSAnLi9pbmRleC0hfnswMDd9fi5qcyc7XG5pbXBvcnQgeyBibSBhcyB0UywgYmwgYXMgVEEgfSBmcm9tICcuL3Nkay1pbmZvLUNodUt1OHpXLSF+ezAwan1+LmpzJztcblxudmFyIGw7XG4oZnVuY3Rpb24ocikge1xuICByW3IuTk9UX1JFQ09SRCA9IDBdID0gXCJOT1RfUkVDT1JEXCIsIHJbci5SRUNPUkQgPSAxXSA9IFwiUkVDT1JEXCIsIHJbci5SRUNPUkRfQU5EX1NBTVBMRUQgPSAyXSA9IFwiUkVDT1JEX0FORF9TQU1QTEVEXCI7XG59KShsIHx8IChsID0ge30pKTtcbnZhciB4ciA9IFwiPVwiLCBVID0gXCI7XCIsIEkgPSBcIixcIiwgbSA9IFwiYmFnZ2FnZVwiLCBGciA9IDE4MCwgS3IgPSA0MDk2LCBZciA9IDgxOTIsIHpyID0gZnVuY3Rpb24ociwgZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIHJbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gcjtcbiAgdmFyIG4gPSB0LmNhbGwociksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKGUgPT09IHZvaWQgMCB8fCBlLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBvID0geyBlcnJvcjogXyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59O1xuZnVuY3Rpb24gcnIocikge1xuICByZXR1cm4gci5yZWR1Y2UoZnVuY3Rpb24oZSwgdCkge1xuICAgIHZhciBuID0gXCJcIiArIGUgKyAoZSAhPT0gXCJcIiA/IEkgOiBcIlwiKSArIHQ7XG4gICAgcmV0dXJuIG4ubGVuZ3RoID4gWXIgPyBlIDogbjtcbiAgfSwgXCJcIik7XG59XG5mdW5jdGlvbiBlcihyKSB7XG4gIHJldHVybiByLmdldEFsbEVudHJpZXMoKS5tYXAoZnVuY3Rpb24oZSkge1xuICAgIHZhciB0ID0genIoZSwgMiksIG4gPSB0WzBdLCBhID0gdFsxXSwgaSA9IGVuY29kZVVSSUNvbXBvbmVudChuKSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGEudmFsdWUpO1xuICAgIHJldHVybiBhLm1ldGFkYXRhICE9PSB2b2lkIDAgJiYgKGkgKz0gVSArIGEubWV0YWRhdGEudG9TdHJpbmcoKSksIGk7XG4gIH0pO1xufVxuZnVuY3Rpb24gdyhyKSB7XG4gIHZhciBlID0gci5zcGxpdChVKTtcbiAgaWYgKCEoZS5sZW5ndGggPD0gMCkpIHtcbiAgICB2YXIgdCA9IGUuc2hpZnQoKTtcbiAgICBpZiAodCkge1xuICAgICAgdmFyIG4gPSB0LmluZGV4T2YoeHIpO1xuICAgICAgaWYgKCEobiA8PSAwKSkge1xuICAgICAgICB2YXIgYSA9IGRlY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZygwLCBuKS50cmltKCkpLCBpID0gZGVjb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKG4gKyAxKS50cmltKCkpLCBvO1xuICAgICAgICByZXR1cm4gZS5sZW5ndGggPiAwICYmIChvID0gZl8oZS5qb2luKFUpKSksIHsga2V5OiBhLCB2YWx1ZTogaSwgbWV0YWRhdGE6IG8gfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIFdyKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByICE9IFwic3RyaW5nXCIgfHwgci5sZW5ndGggPT09IDAgPyB7fSA6IHIuc3BsaXQoSSkubWFwKGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gdyhlKTtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gZSAhPT0gdm9pZCAwICYmIGUudmFsdWUubGVuZ3RoID4gMDtcbiAgfSkucmVkdWNlKGZ1bmN0aW9uKGUsIHQpIHtcbiAgICByZXR1cm4gZVt0LmtleV0gPSB0LnZhbHVlLCBlO1xuICB9LCB7fSk7XG59XG52YXIgWnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgfVxuICAgIHJldHVybiByLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihlLCB0LCBuKSB7XG4gICAgICB2YXIgYSQxID0geV8uZ2V0QmFnZ2FnZShlKTtcbiAgICAgIGlmICghKCFhJDEgfHwgYShlKSkpIHtcbiAgICAgICAgdmFyIGkgPSBlcihhJDEpLmZpbHRlcihmdW5jdGlvbihfKSB7XG4gICAgICAgICAgcmV0dXJuIF8ubGVuZ3RoIDw9IEtyO1xuICAgICAgICB9KS5zbGljZSgwLCBGciksIG8gPSBycihpKTtcbiAgICAgICAgby5sZW5ndGggPiAwICYmIG4uc2V0KHQsIG0sIG8pO1xuICAgICAgfVxuICAgIH0sIHIucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihlLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IG4uZ2V0KHQsIG0pLCBpID0gQXJyYXkuaXNBcnJheShhKSA/IGEuam9pbihJKSA6IGE7XG4gICAgICBpZiAoIWkpXG4gICAgICAgIHJldHVybiBlO1xuICAgICAgdmFyIG8gPSB7fTtcbiAgICAgIGlmIChpLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB2YXIgXyA9IGkuc3BsaXQoSSk7XG4gICAgICByZXR1cm4gXy5mb3JFYWNoKGZ1bmN0aW9uKEUpIHtcbiAgICAgICAgdmFyIFQgPSB3KEUpO1xuICAgICAgICBpZiAoVCkge1xuICAgICAgICAgIHZhciBzID0geyB2YWx1ZTogVC52YWx1ZSB9O1xuICAgICAgICAgIFQubWV0YWRhdGEgJiYgKHMubWV0YWRhdGEgPSBULm1ldGFkYXRhKSwgb1tULmtleV0gPSBzO1xuICAgICAgICB9XG4gICAgICB9KSwgT2JqZWN0LmVudHJpZXMobykubGVuZ3RoID09PSAwID8gZSA6IHlfLnNldEJhZ2dhZ2UoZSwgeV8uY3JlYXRlQmFnZ2FnZShvKSk7XG4gICAgfSwgci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW21dO1xuICAgIH0sIHI7XG4gIH0pKClcbiksICRyID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKGUsIHQpIHtcbiAgICAgIHRoaXMuX21vbm90b25pY0Nsb2NrID0gdCwgdGhpcy5fZXBvY2hNaWxsaXMgPSBlLm5vdygpLCB0aGlzLl9wZXJmb3JtYW5jZU1pbGxpcyA9IHQubm93KCk7XG4gICAgfVxuICAgIHJldHVybiByLnByb3RvdHlwZS5ub3cgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gdGhpcy5fbW9ub3RvbmljQ2xvY2subm93KCkgLSB0aGlzLl9wZXJmb3JtYW5jZU1pbGxpcztcbiAgICAgIHJldHVybiB0aGlzLl9lcG9jaE1pbGxpcyArIGU7XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgdHIgPSBmdW5jdGlvbihyKSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gZSAmJiByW2VdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwocik7XG4gIGlmIChyICYmIHR5cGVvZiByLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHIgJiYgbiA+PSByLmxlbmd0aCAmJiAociA9IHZvaWQgMCksIHsgdmFsdWU6IHIgJiYgcltuKytdLCBkb25lOiAhciB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihlID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgSnIgPSBmdW5jdGlvbihyLCBlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiByO1xuICB2YXIgbiA9IHQuY2FsbChyKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAoZSA9PT0gdm9pZCAwIHx8IGUtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG8gPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiBRcihyJDEpIHtcbiAgdmFyIGUsIHQsIG4gPSB7fTtcbiAgaWYgKHR5cGVvZiByJDEgIT0gXCJvYmplY3RcIiB8fCByJDEgPT0gbnVsbClcbiAgICByZXR1cm4gbjtcbiAgdHJ5IHtcbiAgICBmb3IgKHZhciBhID0gdHIoT2JqZWN0LmVudHJpZXMociQxKSksIGkgPSBhLm5leHQoKTsgIWkuZG9uZTsgaSA9IGEubmV4dCgpKSB7XG4gICAgICB2YXIgbyA9IEpyKGkudmFsdWUsIDIpLCBfID0gb1swXSwgRSA9IG9bMV07XG4gICAgICBpZiAoIW5yKF8pKSB7XG4gICAgICAgIHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIGtleTogXCIgKyBfKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWFyKEUpKSB7XG4gICAgICAgIHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIHZhbHVlIHNldCBmb3Iga2V5OiBcIiArIF8pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIEFycmF5LmlzQXJyYXkoRSkgPyBuW19dID0gRS5zbGljZSgpIDogbltfXSA9IEU7XG4gICAgfVxuICB9IGNhdGNoIChUKSB7XG4gICAgZSA9IHsgZXJyb3I6IFQgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaSAmJiAhaS5kb25lICYmICh0ID0gYS5yZXR1cm4pICYmIHQuY2FsbChhKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGUpIHRocm93IGUuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBuO1xufVxuZnVuY3Rpb24gbnIocikge1xuICByZXR1cm4gdHlwZW9mIHIgPT0gXCJzdHJpbmdcIiAmJiByLmxlbmd0aCA+IDA7XG59XG5mdW5jdGlvbiBhcihyKSB7XG4gIHJldHVybiByID09IG51bGwgPyB0cnVlIDogQXJyYXkuaXNBcnJheShyKSA/IHFyKHIpIDogaXIocik7XG59XG5mdW5jdGlvbiBxcihyKSB7XG4gIHZhciBlLCB0LCBuO1xuICB0cnkge1xuICAgIGZvciAodmFyIGEgPSB0cihyKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gaS52YWx1ZTtcbiAgICAgIGlmIChvICE9IG51bGwpIHtcbiAgICAgICAgaWYgKCFuKSB7XG4gICAgICAgICAgaWYgKGlyKG8pKSB7XG4gICAgICAgICAgICBuID0gdHlwZW9mIG87XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbyAhPT0gbilcbiAgICAgICAgICByZXR1cm4gITE7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChfKSB7XG4gICAgZSA9IHsgZXJyb3I6IF8gfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaSAmJiAhaS5kb25lICYmICh0ID0gYS5yZXR1cm4pICYmIHQuY2FsbChhKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGUpIHRocm93IGUuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gaXIocikge1xuICBzd2l0Y2ggKHR5cGVvZiByKSB7XG4gICAgY2FzZSBcIm51bWJlclwiOlxuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gb3IoKSB7XG4gIHJldHVybiBmdW5jdGlvbihyJDEpIHtcbiAgICByLmVycm9yKGtyKHIkMSkpO1xuICB9O1xufVxuZnVuY3Rpb24ga3Iocikge1xuICByZXR1cm4gdHlwZW9mIHIgPT0gXCJzdHJpbmdcIiA/IHIgOiBKU09OLnN0cmluZ2lmeShyZShyKSk7XG59XG5mdW5jdGlvbiByZShyKSB7XG4gIGZvciAodmFyIGUgPSB7fSwgdCA9IHI7IHQgIT09IG51bGw7IClcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pIHtcbiAgICAgIGlmICghZVtuXSkge1xuICAgICAgICB2YXIgYSA9IHRbbl07XG4gICAgICAgIGEgJiYgKGVbbl0gPSBTdHJpbmcoYSkpO1xuICAgICAgfVxuICAgIH0pLCB0ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO1xuICByZXR1cm4gZTtcbn1cbnZhciBfciA9IG9yKCk7XG5mdW5jdGlvbiBlZShyKSB7XG4gIF9yID0gcjtcbn1cbmZ1bmN0aW9uIEVyKHIpIHtcbiAgdHJ5IHtcbiAgICBfcihyKTtcbiAgfSBjYXRjaCB7XG4gIH1cbn1cbnZhciB2O1xuKGZ1bmN0aW9uKHIpIHtcbiAgci5BbHdheXNPZmYgPSBcImFsd2F5c19vZmZcIiwgci5BbHdheXNPbiA9IFwiYWx3YXlzX29uXCIsIHIuUGFyZW50QmFzZWRBbHdheXNPZmYgPSBcInBhcmVudGJhc2VkX2Fsd2F5c19vZmZcIiwgci5QYXJlbnRCYXNlZEFsd2F5c09uID0gXCJwYXJlbnRiYXNlZF9hbHdheXNfb25cIiwgci5QYXJlbnRCYXNlZFRyYWNlSWRSYXRpbyA9IFwicGFyZW50YmFzZWRfdHJhY2VpZHJhdGlvXCIsIHIuVHJhY2VJZFJhdGlvID0gXCJ0cmFjZWlkcmF0aW9cIjtcbn0pKHYgfHwgKHYgPSB7fSkpO1xudmFyIHRlID0gXCIsXCIsIG5lID0gW1wiT1RFTF9TREtfRElTQUJMRURcIl07XG5mdW5jdGlvbiBhZShyKSB7XG4gIHJldHVybiBuZS5pbmRleE9mKHIpID4gLTE7XG59XG52YXIgaWUgPSBbXG4gIFwiT1RFTF9CU1BfRVhQT1JUX1RJTUVPVVRcIixcbiAgXCJPVEVMX0JTUF9NQVhfRVhQT1JUX0JBVENIX1NJWkVcIixcbiAgXCJPVEVMX0JTUF9NQVhfUVVFVUVfU0laRVwiLFxuICBcIk9URUxfQlNQX1NDSEVEVUxFX0RFTEFZXCIsXG4gIFwiT1RFTF9CTFJQX0VYUE9SVF9USU1FT1VUXCIsXG4gIFwiT1RFTF9CTFJQX01BWF9FWFBPUlRfQkFUQ0hfU0laRVwiLFxuICBcIk9URUxfQkxSUF9NQVhfUVVFVUVfU0laRVwiLFxuICBcIk9URUxfQkxSUF9TQ0hFRFVMRV9ERUxBWVwiLFxuICBcIk9URUxfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVFwiLFxuICBcIk9URUxfQVRUUklCVVRFX0NPVU5UX0xJTUlUXCIsXG4gIFwiT1RFTF9TUEFOX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVRcIixcbiAgXCJPVEVMX1NQQU5fQVRUUklCVVRFX0NPVU5UX0xJTUlUXCIsXG4gIFwiT1RFTF9MT0dSRUNPUkRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVFwiLFxuICBcIk9URUxfTE9HUkVDT1JEX0FUVFJJQlVURV9DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfU1BBTl9FVkVOVF9DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfU1BBTl9MSU5LX0NPVU5UX0xJTUlUXCIsXG4gIFwiT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfRVZFTlRfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX1NQQU5fQVRUUklCVVRFX1BFUl9MSU5LX0NPVU5UX0xJTUlUXCIsXG4gIFwiT1RFTF9FWFBPUlRFUl9PVExQX1RJTUVPVVRcIixcbiAgXCJPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX1RJTUVPVVRcIixcbiAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19USU1FT1VUXCIsXG4gIFwiT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfVElNRU9VVFwiLFxuICBcIk9URUxfRVhQT1JURVJfSkFFR0VSX0FHRU5UX1BPUlRcIlxuXTtcbmZ1bmN0aW9uIG9lKHIpIHtcbiAgcmV0dXJuIGllLmluZGV4T2YocikgPiAtMTtcbn1cbnZhciBfZSA9IFtcbiAgXCJPVEVMX05PX1BBVENIX01PRFVMRVNcIixcbiAgXCJPVEVMX1BST1BBR0FUT1JTXCIsXG4gIFwiT1RFTF9TRU1DT05WX1NUQUJJTElUWV9PUFRfSU5cIlxuXTtcbmZ1bmN0aW9uIEVlKHIpIHtcbiAgcmV0dXJuIF9lLmluZGV4T2YocikgPiAtMTtcbn1cbnZhciBwID0gMSAvIDAsIGQgPSAxMjgsIFRyID0gMTI4LCB1ciA9IDEyOCwgViA9IHtcbiAgT1RFTF9TREtfRElTQUJMRUQ6IGZhbHNlLFxuICBDT05UQUlORVJfTkFNRTogXCJcIixcbiAgRUNTX0NPTlRBSU5FUl9NRVRBREFUQV9VUklfVjQ6IFwiXCIsXG4gIEVDU19DT05UQUlORVJfTUVUQURBVEFfVVJJOiBcIlwiLFxuICBIT1NUTkFNRTogXCJcIixcbiAgS1VCRVJORVRFU19TRVJWSUNFX0hPU1Q6IFwiXCIsXG4gIE5BTUVTUEFDRTogXCJcIixcbiAgT1RFTF9CU1BfRVhQT1JUX1RJTUVPVVQ6IDNlNCxcbiAgT1RFTF9CU1BfTUFYX0VYUE9SVF9CQVRDSF9TSVpFOiA1MTIsXG4gIE9URUxfQlNQX01BWF9RVUVVRV9TSVpFOiAyMDQ4LFxuICBPVEVMX0JTUF9TQ0hFRFVMRV9ERUxBWTogNWUzLFxuICBPVEVMX0JMUlBfRVhQT1JUX1RJTUVPVVQ6IDNlNCxcbiAgT1RFTF9CTFJQX01BWF9FWFBPUlRfQkFUQ0hfU0laRTogNTEyLFxuICBPVEVMX0JMUlBfTUFYX1FVRVVFX1NJWkU6IDIwNDgsXG4gIE9URUxfQkxSUF9TQ0hFRFVMRV9ERUxBWTogNWUzLFxuICBPVEVMX0VYUE9SVEVSX0pBRUdFUl9BR0VOVF9IT1NUOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX0pBRUdFUl9BR0VOVF9QT1JUOiA2ODMyLFxuICBPVEVMX0VYUE9SVEVSX0pBRUdFUl9FTkRQT0lOVDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9KQUVHRVJfUEFTU1dPUkQ6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfSkFFR0VSX1VTRVI6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfRU5EUE9JTlQ6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0VORFBPSU5UOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfSEVBREVSUzogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19IRUFERVJTOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19IRUFERVJTOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19IRUFERVJTOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVElNRU9VVDogMWU0LFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX1RJTUVPVVQ6IDFlNCxcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfVElNRU9VVDogMWU0LFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19USU1FT1VUOiAxZTQsXG4gIE9URUxfRVhQT1JURVJfWklQS0lOX0VORFBPSU5UOiBcImh0dHA6Ly9sb2NhbGhvc3Q6OTQxMS9hcGkvdjIvc3BhbnNcIixcbiAgT1RFTF9MT0dfTEVWRUw6IHNlJDEuSU5GTyxcbiAgT1RFTF9OT19QQVRDSF9NT0RVTEVTOiBbXSxcbiAgT1RFTF9QUk9QQUdBVE9SUzogW1widHJhY2Vjb250ZXh0XCIsIFwiYmFnZ2FnZVwiXSxcbiAgT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTOiBcIlwiLFxuICBPVEVMX1NFUlZJQ0VfTkFNRTogXCJcIixcbiAgT1RFTF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUOiBwLFxuICBPVEVMX0FUVFJJQlVURV9DT1VOVF9MSU1JVDogZCxcbiAgT1RFTF9TUEFOX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQ6IHAsXG4gIE9URUxfU1BBTl9BVFRSSUJVVEVfQ09VTlRfTElNSVQ6IGQsXG4gIE9URUxfTE9HUkVDT1JEX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQ6IHAsXG4gIE9URUxfTE9HUkVDT1JEX0FUVFJJQlVURV9DT1VOVF9MSU1JVDogZCxcbiAgT1RFTF9TUEFOX0VWRU5UX0NPVU5UX0xJTUlUOiAxMjgsXG4gIE9URUxfU1BBTl9MSU5LX0NPVU5UX0xJTUlUOiAxMjgsXG4gIE9URUxfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBUcixcbiAgT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogdXIsXG4gIE9URUxfVFJBQ0VTX0VYUE9SVEVSOiBcIlwiLFxuICBPVEVMX1RSQUNFU19TQU1QTEVSOiB2LlBhcmVudEJhc2VkQWx3YXlzT24sXG4gIE9URUxfVFJBQ0VTX1NBTVBMRVJfQVJHOiBcIlwiLFxuICBPVEVMX0xPR1NfRVhQT1JURVI6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9JTlNFQ1VSRTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19JTlNFQ1VSRTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfSU5TRUNVUkU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0lOU0VDVVJFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0NPTVBSRVNTSU9OOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0NPTVBSRVNTSU9OOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19DT01QUkVTU0lPTjogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfQ09NUFJFU1NJT046IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9DTElFTlRfS0VZOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0NMSUVOVF9LRVk6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0NMSUVOVF9LRVk6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0NMSUVOVF9LRVk6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9DTElFTlRfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfQ0xJRU5UX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19DTElFTlRfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0NMSUVOVF9DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1BST1RPQ09MOiBcImh0dHAvcHJvdG9idWZcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19QUk9UT0NPTDogXCJodHRwL3Byb3RvYnVmXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX1BST1RPQ09MOiBcImh0dHAvcHJvdG9idWZcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfUFJPVE9DT0w6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19URU1QT1JBTElUWV9QUkVGRVJFTkNFOiBcImN1bXVsYXRpdmVcIixcbiAgT1RFTF9TRU1DT05WX1NUQUJJTElUWV9PUFRfSU46IFtdXG59O1xuZnVuY3Rpb24gVGUociwgZSwgdCkge1xuICBpZiAoISh0eXBlb2YgdFtyXSA+IFwidVwiKSkge1xuICAgIHZhciBuID0gU3RyaW5nKHRbcl0pO1xuICAgIGVbcl0gPSBuLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiO1xuICB9XG59XG5mdW5jdGlvbiB1ZShyLCBlLCB0LCBuLCBhKSB7XG4gIGlmIChuID09PSB2b2lkIDAgJiYgKG4gPSAtMSAvIDApLCBhID09PSB2b2lkIDAgJiYgKGEgPSAxIC8gMCksIHR5cGVvZiB0W3JdIDwgXCJ1XCIpIHtcbiAgICB2YXIgaSA9IE51bWJlcih0W3JdKTtcbiAgICBpc05hTihpKSB8fCAoaSA8IG4gPyBlW3JdID0gbiA6IGkgPiBhID8gZVtyXSA9IGEgOiBlW3JdID0gaSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGZlKHIsIGUsIHQsIG4pIHtcbiAgbiA9PT0gdm9pZCAwICYmIChuID0gdGUpO1xuICB2YXIgYSA9IHRbcl07XG4gIHR5cGVvZiBhID09IFwic3RyaW5nXCIgJiYgKGVbcl0gPSBhLnNwbGl0KG4pLm1hcChmdW5jdGlvbihpKSB7XG4gICAgcmV0dXJuIGkudHJpbSgpO1xuICB9KSk7XG59XG52YXIgc2UgPSB7XG4gIEFMTDogc2UkMS5BTEwsXG4gIFZFUkJPU0U6IHNlJDEuVkVSQk9TRSxcbiAgREVCVUc6IHNlJDEuREVCVUcsXG4gIElORk86IHNlJDEuSU5GTyxcbiAgV0FSTjogc2UkMS5XQVJOLFxuICBFUlJPUjogc2UkMS5FUlJPUixcbiAgTk9ORTogc2UkMS5OT05FXG59O1xuZnVuY3Rpb24gbGUociwgZSwgdCkge1xuICB2YXIgbiA9IHRbcl07XG4gIGlmICh0eXBlb2YgbiA9PSBcInN0cmluZ1wiKSB7XG4gICAgdmFyIGEgPSBzZVtuLnRvVXBwZXJDYXNlKCldO1xuICAgIGEgIT0gbnVsbCAmJiAoZVtyXSA9IGEpO1xuICB9XG59XG5mdW5jdGlvbiBqKHIpIHtcbiAgdmFyIGUgPSB7fTtcbiAgZm9yICh2YXIgdCBpbiBWKSB7XG4gICAgdmFyIG4gPSB0O1xuICAgIHN3aXRjaCAobikge1xuICAgICAgY2FzZSBcIk9URUxfTE9HX0xFVkVMXCI6XG4gICAgICAgIGxlKG4sIGUsIHIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChhZShuKSlcbiAgICAgICAgICBUZShuLCBlLCByKTtcbiAgICAgICAgZWxzZSBpZiAob2UobikpXG4gICAgICAgICAgdWUobiwgZSwgcik7XG4gICAgICAgIGVsc2UgaWYgKEVlKG4pKVxuICAgICAgICAgIGZlKG4sIGUsIHIpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB2YXIgYSA9IHJbbl07XG4gICAgICAgICAgdHlwZW9mIGEgPCBcInVcIiAmJiBhICE9PSBudWxsICYmIChlW25dID0gU3RyaW5nKGEpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZTtcbn1cbmZ1bmN0aW9uIE9lKCkge1xuICB2YXIgciA9IGooaF8pO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgViwgcik7XG59XG5mdW5jdGlvbiBjZSgpIHtcbiAgcmV0dXJuIGooaF8pO1xufVxudmFyIFJlID0gZnVuY3Rpb24ociwgZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIHJbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gcjtcbiAgdmFyIG4gPSB0LmNhbGwociksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKGUgPT09IHZvaWQgMCB8fCBlLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBvID0geyBlcnJvcjogXyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBwZSA9IGZ1bmN0aW9uKHIsIGUsIHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBhID0gZS5sZW5ndGgsIGk7IG4gPCBhOyBuKyspXG4gICAgKGkgfHwgIShuIGluIGUpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsIDAsIG4pKSwgaVtuXSA9IGVbbl0pO1xuICByZXR1cm4gci5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSk7XG59O1xuZnVuY3Rpb24gZGUocikge1xuICByZXR1cm4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgcGUoW10sIFJlKEEkMShyKSksIGZhbHNlKSkpO1xufVxudmFyIExlID0gOCwgQWUgPSAxNiwgUGUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgLyogQF9fUFVSRV9fICovIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgICAgdGhpcy5nZW5lcmF0ZVRyYWNlSWQgPSBZKEFlKSwgdGhpcy5nZW5lcmF0ZVNwYW5JZCA9IFkoTGUpO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfSkoKVxuKSwgUiA9IEFycmF5KDMyKTtcbmZ1bmN0aW9uIFkocikge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgdCA9IDA7IHQgPCByICogMjsgdCsrKVxuICAgICAgUlt0XSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KSArIDQ4LCBSW3RdID49IDU4ICYmIChSW3RdICs9IDM5KTtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBSLnNsaWNlKDAsIHIgKiAyKSk7XG4gIH07XG59XG5mdW5jdGlvbiBTZShyKSB7XG59XG52YXIgSWUgPSBmdW5jdGlvbihyKSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gZSAmJiByW2VdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwocik7XG4gIGlmIChyICYmIHR5cGVvZiByLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHIgJiYgbiA+PSByLmxlbmd0aCAmJiAociA9IHZvaWQgMCksIHsgdmFsdWU6IHIgJiYgcltuKytdLCBkb25lOiAhciB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihlID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgdmUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIkMShlKSB7XG4gICAgICBlID09PSB2b2lkIDAgJiYgKGUgPSB7fSk7XG4gICAgICB2YXIgdDtcbiAgICAgIHRoaXMuX3Byb3BhZ2F0b3JzID0gKHQgPSBlLnByb3BhZ2F0b3JzKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogW10sIHRoaXMuX2ZpZWxkcyA9IEFycmF5LmZyb20obmV3IFNldCh0aGlzLl9wcm9wYWdhdG9ycy5tYXAoZnVuY3Rpb24obikge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG4uZmllbGRzID09IFwiZnVuY3Rpb25cIiA/IG4uZmllbGRzKCkgOiBbXTtcbiAgICAgIH0pLnJlZHVjZShmdW5jdGlvbihuLCBhKSB7XG4gICAgICAgIHJldHVybiBuLmNvbmNhdChhKTtcbiAgICAgIH0sIFtdKSkpO1xuICAgIH1cbiAgICByZXR1cm4gciQxLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihlLCB0LCBuKSB7XG4gICAgICB2YXIgYSwgaTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBJZSh0aGlzLl9wcm9wYWdhdG9ycyksIF8gPSBvLm5leHQoKTsgIV8uZG9uZTsgXyA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIEUgPSBfLnZhbHVlO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBFLmluamVjdChlLCB0LCBuKTtcbiAgICAgICAgICB9IGNhdGNoIChUKSB7XG4gICAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gaW5qZWN0IHdpdGggXCIgKyBFLmNvbnN0cnVjdG9yLm5hbWUgKyBcIi4gRXJyOiBcIiArIFQubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChUKSB7XG4gICAgICAgIGEgPSB7IGVycm9yOiBUIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIF8gJiYgIV8uZG9uZSAmJiAoaSA9IG8ucmV0dXJuKSAmJiBpLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCByJDEucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihlLCB0LCBuKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJvcGFnYXRvcnMucmVkdWNlKGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gaS5leHRyYWN0KGEsIHQsIG4pO1xuICAgICAgICB9IGNhdGNoIChvKSB7XG4gICAgICAgICAgci53YXJuKFwiRmFpbGVkIHRvIGV4dHJhY3Qgd2l0aCBcIiArIGkuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgby5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0sIGUpO1xuICAgIH0sIHIkMS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmllbGRzLnNsaWNlKCk7XG4gICAgfSwgciQxO1xuICB9KSgpXG4pLCBCID0gXCJbXzAtOWEtei0qL11cIiwgeWUgPSBcIlthLXpdXCIgKyBCICsgXCJ7MCwyNTV9XCIsIGhlID0gXCJbYS16MC05XVwiICsgQiArIFwiezAsMjQwfUBbYS16XVwiICsgQiArIFwiezAsMTN9XCIsIGdlID0gbmV3IFJlZ0V4cChcIl4oPzpcIiArIHllICsgXCJ8XCIgKyBoZSArIFwiKSRcIiksIG1lID0gL15bIC1+XXswLDI1NX1bIS1+XSQvLCBDZSA9IC8sfD0vO1xuZnVuY3Rpb24gTmUocikge1xuICByZXR1cm4gZ2UudGVzdChyKTtcbn1cbmZ1bmN0aW9uIE1lKHIpIHtcbiAgcmV0dXJuIG1lLnRlc3QocikgJiYgIUNlLnRlc3Qocik7XG59XG52YXIgeiA9IDMyLCBVZSA9IDUxMiwgVyA9IFwiLFwiLCBaID0gXCI9XCIsIGZyID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKGUpIHtcbiAgICAgIHRoaXMuX2ludGVybmFsU3RhdGUgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpLCBlICYmIHRoaXMuX3BhcnNlKGUpO1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oZSwgdCkge1xuICAgICAgdmFyIG4gPSB0aGlzLl9jbG9uZSgpO1xuICAgICAgcmV0dXJuIG4uX2ludGVybmFsU3RhdGUuaGFzKGUpICYmIG4uX2ludGVybmFsU3RhdGUuZGVsZXRlKGUpLCBuLl9pbnRlcm5hbFN0YXRlLnNldChlLCB0KSwgbjtcbiAgICB9LCByLnByb3RvdHlwZS51bnNldCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHZhciB0ID0gdGhpcy5fY2xvbmUoKTtcbiAgICAgIHJldHVybiB0Ll9pbnRlcm5hbFN0YXRlLmRlbGV0ZShlKSwgdDtcbiAgICB9LCByLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxTdGF0ZS5nZXQoZSk7XG4gICAgfSwgci5wcm90b3R5cGUuc2VyaWFsaXplID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICByZXR1cm4gdGhpcy5fa2V5cygpLnJlZHVjZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHJldHVybiB0LnB1c2gobiArIFogKyBlLmdldChuKSksIHQ7XG4gICAgICB9LCBbXSkuam9pbihXKTtcbiAgICB9LCByLnByb3RvdHlwZS5fcGFyc2UgPSBmdW5jdGlvbihlKSB7XG4gICAgICBlLmxlbmd0aCA+IFVlIHx8ICh0aGlzLl9pbnRlcm5hbFN0YXRlID0gZS5zcGxpdChXKS5yZXZlcnNlKCkucmVkdWNlKGZ1bmN0aW9uKHQsIG4pIHtcbiAgICAgICAgdmFyIGEgPSBuLnRyaW0oKSwgaSA9IGEuaW5kZXhPZihaKTtcbiAgICAgICAgaWYgKGkgIT09IC0xKSB7XG4gICAgICAgICAgdmFyIG8gPSBhLnNsaWNlKDAsIGkpLCBfID0gYS5zbGljZShpICsgMSwgbi5sZW5ndGgpO1xuICAgICAgICAgIE5lKG8pICYmIE1lKF8pICYmIHQuc2V0KG8sIF8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgICAgfSwgLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSksIHRoaXMuX2ludGVybmFsU3RhdGUuc2l6ZSA+IHogJiYgKHRoaXMuX2ludGVybmFsU3RhdGUgPSBuZXcgTWFwKEFycmF5LmZyb20odGhpcy5faW50ZXJuYWxTdGF0ZS5lbnRyaWVzKCkpLnJldmVyc2UoKS5zbGljZSgwLCB6KSkpKTtcbiAgICB9LCByLnByb3RvdHlwZS5fa2V5cyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5faW50ZXJuYWxTdGF0ZS5rZXlzKCkpLnJldmVyc2UoKTtcbiAgICB9LCByLnByb3RvdHlwZS5fY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gbmV3IHIoKTtcbiAgICAgIHJldHVybiBlLl9pbnRlcm5hbFN0YXRlID0gbmV3IE1hcCh0aGlzLl9pbnRlcm5hbFN0YXRlKSwgZTtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBMID0gXCJ0cmFjZXBhcmVudFwiLCBBID0gXCJ0cmFjZXN0YXRlXCIsIEJlID0gXCIwMFwiLCBiZSA9IFwiKD8hZmYpW1xcXFxkYS1mXXsyfVwiLCBEZSA9IFwiKD8hWzBdezMyfSlbXFxcXGRhLWZdezMyfVwiLCBYZSA9IFwiKD8hWzBdezE2fSlbXFxcXGRhLWZdezE2fVwiLCBHZSA9IFwiW1xcXFxkYS1mXXsyfVwiLCB3ZSA9IG5ldyBSZWdFeHAoXCJeXFxcXHM/KFwiICsgYmUgKyBcIiktKFwiICsgRGUgKyBcIiktKFwiICsgWGUgKyBcIiktKFwiICsgR2UgKyBcIikoLS4qKT9cXFxccz8kXCIpO1xuZnVuY3Rpb24gc3Iocikge1xuICB2YXIgZSA9IHdlLmV4ZWMocik7XG4gIHJldHVybiAhZSB8fCBlWzFdID09PSBcIjAwXCIgJiYgZVs1XSA/IG51bGwgOiB7XG4gICAgdHJhY2VJZDogZVsyXSxcbiAgICBzcGFuSWQ6IGVbM10sXG4gICAgdHJhY2VGbGFnczogcGFyc2VJbnQoZVs0XSwgMTYpXG4gIH07XG59XG52YXIgVmUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgfVxuICAgIHJldHVybiByLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihlLCB0LCBuKSB7XG4gICAgICB2YXIgYSQxID0gemUkMS5nZXRTcGFuQ29udGV4dChlKTtcbiAgICAgIGlmICghKCFhJDEgfHwgYShlKSB8fCAhSG4oYSQxKSkpIHtcbiAgICAgICAgdmFyIGkgPSBCZSArIFwiLVwiICsgYSQxLnRyYWNlSWQgKyBcIi1cIiArIGEkMS5zcGFuSWQgKyBcIi0wXCIgKyBOdW1iZXIoYSQxLnRyYWNlRmxhZ3MgfHwgbXIuTk9ORSkudG9TdHJpbmcoMTYpO1xuICAgICAgICBuLnNldCh0LCBMLCBpKSwgYSQxLnRyYWNlU3RhdGUgJiYgbi5zZXQodCwgQSwgYSQxLnRyYWNlU3RhdGUuc2VyaWFsaXplKCkpO1xuICAgICAgfVxuICAgIH0sIHIucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihlLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IG4uZ2V0KHQsIEwpO1xuICAgICAgaWYgKCFhKVxuICAgICAgICByZXR1cm4gZTtcbiAgICAgIHZhciBpID0gQXJyYXkuaXNBcnJheShhKSA/IGFbMF0gOiBhO1xuICAgICAgaWYgKHR5cGVvZiBpICE9IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiBlO1xuICAgICAgdmFyIG8gPSBzcihpKTtcbiAgICAgIGlmICghbylcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICBvLmlzUmVtb3RlID0gdHJ1ZTtcbiAgICAgIHZhciBfID0gbi5nZXQodCwgQSk7XG4gICAgICBpZiAoXykge1xuICAgICAgICB2YXIgRSA9IEFycmF5LmlzQXJyYXkoXykgPyBfLmpvaW4oXCIsXCIpIDogXztcbiAgICAgICAgby50cmFjZVN0YXRlID0gbmV3IGZyKHR5cGVvZiBFID09IFwic3RyaW5nXCIgPyBFIDogdm9pZCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB6ZSQxLnNldFNwYW5Db250ZXh0KGUsIG8pO1xuICAgIH0sIHIucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFtMLCBBXTtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBIID0gSXMoXCJPcGVuVGVsZW1ldHJ5IFNESyBDb250ZXh0IEtleSBSUENfTUVUQURBVEFcIiksIGI7XG4oZnVuY3Rpb24ocikge1xuICByLkhUVFAgPSBcImh0dHBcIjtcbn0pKGIgfHwgKGIgPSB7fSkpO1xuZnVuY3Rpb24gamUociwgZSkge1xuICByZXR1cm4gci5zZXRWYWx1ZShILCBlKTtcbn1cbmZ1bmN0aW9uIEhlKHIpIHtcbiAgcmV0dXJuIHIuZGVsZXRlVmFsdWUoSCk7XG59XG5mdW5jdGlvbiB4ZShyKSB7XG4gIHJldHVybiByLmdldFZhbHVlKEgpO1xufVxudmFyIEQgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgfVxuICAgIHJldHVybiByLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBsLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkFsd2F5c09mZlNhbXBsZXJcIjtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBQID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogbC5SRUNPUkRfQU5EX1NBTVBMRURcbiAgICAgIH07XG4gICAgfSwgci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkFsd2F5c09uU2FtcGxlclwiO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIEZlID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKGUpIHtcbiAgICAgIHZhciB0LCBuLCBhLCBpO1xuICAgICAgdGhpcy5fcm9vdCA9IGUucm9vdCwgdGhpcy5fcm9vdCB8fCAoRXIobmV3IEVycm9yKFwiUGFyZW50QmFzZWRTYW1wbGVyIG11c3QgaGF2ZSBhIHJvb3Qgc2FtcGxlciBjb25maWd1cmVkXCIpKSwgdGhpcy5fcm9vdCA9IG5ldyBQKCkpLCB0aGlzLl9yZW1vdGVQYXJlbnRTYW1wbGVkID0gKHQgPSBlLnJlbW90ZVBhcmVudFNhbXBsZWQpICE9PSBudWxsICYmIHQgIT09IHZvaWQgMCA/IHQgOiBuZXcgUCgpLCB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkID0gKG4gPSBlLnJlbW90ZVBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIG4gIT09IHZvaWQgMCA/IG4gOiBuZXcgRCgpLCB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQgPSAoYSA9IGUubG9jYWxQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogbmV3IFAoKSwgdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkID0gKGkgPSBlLmxvY2FsUGFyZW50Tm90U2FtcGxlZCkgIT09IG51bGwgJiYgaSAhPT0gdm9pZCAwID8gaSA6IG5ldyBEKCk7XG4gICAgfVxuICAgIHJldHVybiByLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbihlLCB0LCBuLCBhLCBpLCBvKSB7XG4gICAgICB2YXIgXyA9IHplJDEuZ2V0U3BhbkNvbnRleHQoZSk7XG4gICAgICByZXR1cm4gIV8gfHwgIUhuKF8pID8gdGhpcy5fcm9vdC5zaG91bGRTYW1wbGUoZSwgdCwgbiwgYSwgaSwgbykgOiBfLmlzUmVtb3RlID8gXy50cmFjZUZsYWdzICYgbXIuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUoZSwgdCwgbiwgYSwgaSwgbykgOiBfLnRyYWNlRmxhZ3MgJiBtci5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZShlLCB0LCBuLCBhLCBpLCBvKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUoZSwgdCwgbiwgYSwgaSwgbyk7XG4gICAgfSwgci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgS2UgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoZSkge1xuICAgICAgZSA9PT0gdm9pZCAwICYmIChlID0gMCksIHRoaXMuX3JhdGlvID0gZSwgdGhpcy5fcmF0aW8gPSB0aGlzLl9ub3JtYWxpemUoZSksIHRoaXMuX3VwcGVyQm91bmQgPSBNYXRoLmZsb29yKHRoaXMuX3JhdGlvICogNDI5NDk2NzI5NSk7XG4gICAgfVxuICAgIHJldHVybiByLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbihlLCB0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogVnModCkgJiYgdGhpcy5fYWNjdW11bGF0ZSh0KSA8IHRoaXMuX3VwcGVyQm91bmQgPyBsLlJFQ09SRF9BTkRfU0FNUExFRCA6IGwuTk9UX1JFQ09SRFxuICAgICAgfTtcbiAgICB9LCByLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiVHJhY2VJZFJhdGlvQmFzZWR7XCIgKyB0aGlzLl9yYXRpbyArIFwifVwiO1xuICAgIH0sIHIucHJvdG90eXBlLl9ub3JtYWxpemUgPSBmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGUgIT0gXCJudW1iZXJcIiB8fCBpc05hTihlKSA/IDAgOiBlID49IDEgPyAxIDogZSA8PSAwID8gMCA6IGU7XG4gICAgfSwgci5wcm90b3R5cGUuX2FjY3VtdWxhdGUgPSBmdW5jdGlvbihlKSB7XG4gICAgICBmb3IgKHZhciB0ID0gMCwgbiA9IDA7IG4gPCBlLmxlbmd0aCAvIDg7IG4rKykge1xuICAgICAgICB2YXIgYSA9IG4gKiA4LCBpID0gcGFyc2VJbnQoZS5zbGljZShhLCBhICsgOCksIDE2KTtcbiAgICAgICAgdCA9ICh0IF4gaSkgPj4+IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gdDtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBZZSA9IFwiW29iamVjdCBPYmplY3RdXCIsIHplID0gXCJbb2JqZWN0IE51bGxdXCIsIFdlID0gXCJbb2JqZWN0IFVuZGVmaW5lZF1cIiwgWmUgPSBGdW5jdGlvbi5wcm90b3R5cGUsIGxyID0gWmUudG9TdHJpbmcsICRlID0gbHIuY2FsbChPYmplY3QpLCBKZSA9IFFlKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSwgT3IgPSBPYmplY3QucHJvdG90eXBlLCBjciA9IE9yLmhhc093blByb3BlcnR5LCBmID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdm9pZCAwLCBSciA9IE9yLnRvU3RyaW5nO1xuZnVuY3Rpb24gUWUociwgZSkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiByKGUodCkpO1xuICB9O1xufVxuZnVuY3Rpb24gJChyKSB7XG4gIGlmICghcWUocikgfHwga2UocikgIT09IFllKVxuICAgIHJldHVybiBmYWxzZTtcbiAgdmFyIGUgPSBKZShyKTtcbiAgaWYgKGUgPT09IG51bGwpXG4gICAgcmV0dXJuIHRydWU7XG4gIHZhciB0ID0gY3IuY2FsbChlLCBcImNvbnN0cnVjdG9yXCIpICYmIGUuY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgdCA9PSBcImZ1bmN0aW9uXCIgJiYgdCBpbnN0YW5jZW9mIHQgJiYgbHIuY2FsbCh0KSA9PT0gJGU7XG59XG5mdW5jdGlvbiBxZShyKSB7XG4gIHJldHVybiByICE9IG51bGwgJiYgdHlwZW9mIHIgPT0gXCJvYmplY3RcIjtcbn1cbmZ1bmN0aW9uIGtlKHIpIHtcbiAgcmV0dXJuIHIgPT0gbnVsbCA/IHIgPT09IHZvaWQgMCA/IFdlIDogemUgOiBmICYmIGYgaW4gT2JqZWN0KHIpID8gcnQocikgOiBldChyKTtcbn1cbmZ1bmN0aW9uIHJ0KHIpIHtcbiAgdmFyIGUgPSBjci5jYWxsKHIsIGYpLCB0ID0gcltmXSwgbiA9IGZhbHNlO1xuICB0cnkge1xuICAgIHJbZl0gPSB2b2lkIDAsIG4gPSAhMDtcbiAgfSBjYXRjaCB7XG4gIH1cbiAgdmFyIGEgPSBSci5jYWxsKHIpO1xuICByZXR1cm4gbiAmJiAoZSA/IHJbZl0gPSB0IDogZGVsZXRlIHJbZl0pLCBhO1xufVxuZnVuY3Rpb24gZXQocikge1xuICByZXR1cm4gUnIuY2FsbChyKTtcbn1cbnZhciB0dCA9IDIwO1xuZnVuY3Rpb24gbnQoKSB7XG4gIGZvciAodmFyIHIgPSBbXSwgZSA9IDA7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspXG4gICAgcltlXSA9IGFyZ3VtZW50c1tlXTtcbiAgZm9yICh2YXIgdCA9IHIuc2hpZnQoKSwgbiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpOyByLmxlbmd0aCA+IDA7IClcbiAgICB0ID0gcHIodCwgci5zaGlmdCgpLCAwLCBuKTtcbiAgcmV0dXJuIHQ7XG59XG5mdW5jdGlvbiBDKHIpIHtcbiAgcmV0dXJuIHkocikgPyByLnNsaWNlKCkgOiByO1xufVxuZnVuY3Rpb24gcHIociwgZSwgdCwgbikge1xuICB0ID09PSB2b2lkIDAgJiYgKHQgPSAwKTtcbiAgdmFyIGE7XG4gIGlmICghKHQgPiB0dCkpIHtcbiAgICBpZiAodCsrLCBTKHIpIHx8IFMoZSkgfHwgZHIoZSkpXG4gICAgICBhID0gQyhlKTtcbiAgICBlbHNlIGlmICh5KHIpKSB7XG4gICAgICBpZiAoYSA9IHIuc2xpY2UoKSwgeShlKSlcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIG8gPSBlLmxlbmd0aDsgaSA8IG87IGkrKylcbiAgICAgICAgICBhLnB1c2goQyhlW2ldKSk7XG4gICAgICBlbHNlIGlmIChPKGUpKVxuICAgICAgICBmb3IgKHZhciBfID0gT2JqZWN0LmtleXMoZSksIGkgPSAwLCBvID0gXy5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgRSA9IF9baV07XG4gICAgICAgICAgYVtFXSA9IEMoZVtFXSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKE8ocikpXG4gICAgICBpZiAoTyhlKSkge1xuICAgICAgICBpZiAoIWF0KHIsIGUpKVxuICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICBhID0gT2JqZWN0LmFzc2lnbih7fSwgcik7XG4gICAgICAgIGZvciAodmFyIF8gPSBPYmplY3Qua2V5cyhlKSwgaSA9IDAsIG8gPSBfLmxlbmd0aDsgaSA8IG87IGkrKykge1xuICAgICAgICAgIHZhciBFID0gX1tpXSwgVCA9IGVbRV07XG4gICAgICAgICAgaWYgKFMoVCkpXG4gICAgICAgICAgICB0eXBlb2YgVCA+IFwidVwiID8gZGVsZXRlIGFbRV0gOiBhW0VdID0gVDtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBzID0gYVtFXSwgaCA9IFQ7XG4gICAgICAgICAgICBpZiAoSihyLCBFLCBuKSB8fCBKKGUsIEUsIG4pKVxuICAgICAgICAgICAgICBkZWxldGUgYVtFXTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBpZiAoTyhzKSAmJiBPKGgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHggPSBuLmdldChzKSB8fCBbXSwgRiA9IG4uZ2V0KGgpIHx8IFtdO1xuICAgICAgICAgICAgICAgIHgucHVzaCh7IG9iajogciwga2V5OiBFIH0pLCBGLnB1c2goeyBvYmo6IGUsIGtleTogRSB9KSwgbi5zZXQocywgeCksIG4uc2V0KGgsIEYpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFbRV0gPSBwcihhW0VdLCBULCB0LCBuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZVxuICAgICAgICBhID0gZTtcbiAgICByZXR1cm4gYTtcbiAgfVxufVxuZnVuY3Rpb24gSihyLCBlLCB0KSB7XG4gIGZvciAodmFyIG4gPSB0LmdldChyW2VdKSB8fCBbXSwgYSA9IDAsIGkgPSBuLmxlbmd0aDsgYSA8IGk7IGErKykge1xuICAgIHZhciBvID0gblthXTtcbiAgICBpZiAoby5rZXkgPT09IGUgJiYgby5vYmogPT09IHIpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiB5KHIpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocik7XG59XG5mdW5jdGlvbiBkcihyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PSBcImZ1bmN0aW9uXCI7XG59XG5mdW5jdGlvbiBPKHIpIHtcbiAgcmV0dXJuICFTKHIpICYmICF5KHIpICYmICFkcihyKSAmJiB0eXBlb2YgciA9PSBcIm9iamVjdFwiO1xufVxuZnVuY3Rpb24gUyhyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PSBcInN0cmluZ1wiIHx8IHR5cGVvZiByID09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHIgPT0gXCJib29sZWFuXCIgfHwgdHlwZW9mIHIgPiBcInVcIiB8fCByIGluc3RhbmNlb2YgRGF0ZSB8fCByIGluc3RhbmNlb2YgUmVnRXhwIHx8IHIgPT09IG51bGw7XG59XG5mdW5jdGlvbiBhdChyLCBlKSB7XG4gIHJldHVybiAhKCEkKHIpIHx8ICEkKGUpKTtcbn1cbnZhciBpdCA9IC8qIEBfX1BVUkVfXyAqLyAoZnVuY3Rpb24oKSB7XG4gIHZhciByID0gZnVuY3Rpb24oZSwgdCkge1xuICAgIHJldHVybiByID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24obiwgYSkge1xuICAgICAgbi5fX3Byb3RvX18gPSBhO1xuICAgIH0gfHwgZnVuY3Rpb24obiwgYSkge1xuICAgICAgZm9yICh2YXIgaSBpbiBhKSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSwgaSkgJiYgKG5baV0gPSBhW2ldKTtcbiAgICB9LCByKGUsIHQpO1xuICB9O1xuICByZXR1cm4gZnVuY3Rpb24oZSwgdCkge1xuICAgIGlmICh0eXBlb2YgdCAhPSBcImZ1bmN0aW9uXCIgJiYgdCAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKHQpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICByKGUsIHQpO1xuICAgIGZ1bmN0aW9uIG4oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZTtcbiAgICB9XG4gICAgZS5wcm90b3R5cGUgPSB0ID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZSh0KSA6IChuLnByb3RvdHlwZSA9IHQucHJvdG90eXBlLCBuZXcgbigpKTtcbiAgfTtcbn0pKCksIExyID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbihyKSB7XG4gICAgaXQoZSwgcik7XG4gICAgZnVuY3Rpb24gZSh0KSB7XG4gICAgICB2YXIgbiA9IHIuY2FsbCh0aGlzLCB0KSB8fCB0aGlzO1xuICAgICAgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihuLCBlLnByb3RvdHlwZSksIG47XG4gICAgfVxuICAgIHJldHVybiBlO1xuICB9KShFcnJvcilcbik7XG5mdW5jdGlvbiBvdChyLCBlKSB7XG4gIHZhciB0LCBuID0gbmV3IFByb21pc2UoZnVuY3Rpb24oaSwgbykge1xuICAgIHQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgbyhuZXcgTHIoXCJPcGVyYXRpb24gdGltZWQgb3V0LlwiKSk7XG4gICAgfSwgZSk7XG4gIH0pO1xuICByZXR1cm4gUHJvbWlzZS5yYWNlKFtyLCBuXSkudGhlbihmdW5jdGlvbihhKSB7XG4gICAgcmV0dXJuIGNsZWFyVGltZW91dCh0KSwgYTtcbiAgfSwgZnVuY3Rpb24oYSkge1xuICAgIHRocm93IGNsZWFyVGltZW91dCh0KSwgYTtcbiAgfSk7XG59XG5mdW5jdGlvbiBfdChyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIHIuX19vcmlnaW5hbCA9PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIHIuX191bndyYXAgPT0gXCJmdW5jdGlvblwiICYmIHIuX193cmFwcGVkID09PSB0cnVlO1xufVxudmFyIEV0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgICAgdmFyIGUgPSB0aGlzO1xuICAgICAgdGhpcy5fcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsIG4pIHtcbiAgICAgICAgZS5fcmVzb2x2ZSA9IHQsIGUuX3JlamVjdCA9IG47XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLnByb3RvdHlwZSwgXCJwcm9taXNlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9taXNlO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSksIHIucHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbihlKSB7XG4gICAgICB0aGlzLl9yZXNvbHZlKGUpO1xuICAgIH0sIHIucHJvdG90eXBlLnJlamVjdCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHRoaXMuX3JlamVjdChlKTtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBUdCA9IGZ1bmN0aW9uKHIsIGUpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiByW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghdCkgcmV0dXJuIHI7XG4gIHZhciBuID0gdC5jYWxsKHIpLCBhLCBpID0gW10sIG87XG4gIHRyeSB7XG4gICAgZm9yICg7IChlID09PSB2b2lkIDAgfHwgZS0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoIChfKSB7XG4gICAgbyA9IHsgZXJyb3I6IF8gfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmICh0ID0gbi5yZXR1cm4pICYmIHQuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKG8pIHRocm93IG8uZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgdXQgPSBmdW5jdGlvbihyLCBlLCB0KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgYSA9IGUubGVuZ3RoLCBpOyBuIDwgYTsgbisrKVxuICAgIChpIHx8ICEobiBpbiBlKSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLCAwLCBuKSksIGlbbl0gPSBlW25dKTtcbiAgcmV0dXJuIHIuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpO1xufSwgZnQgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoZSwgdCkge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSBlLCB0aGlzLl90aGF0ID0gdCwgdGhpcy5faXNDYWxsZWQgPSBmYWxzZSwgdGhpcy5fZGVmZXJyZWQgPSBuZXcgRXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLnByb3RvdHlwZSwgXCJpc0NhbGxlZFwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDYWxsZWQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLCBcInByb21pc2VcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmVycmVkLnByb21pc2U7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KSwgci5wcm90b3R5cGUuY2FsbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgZm9yICh2YXIgZSwgdCA9IHRoaXMsIG4gPSBbXSwgYSA9IDA7IGEgPCBhcmd1bWVudHMubGVuZ3RoOyBhKyspXG4gICAgICAgIG5bYV0gPSBhcmd1bWVudHNbYV07XG4gICAgICBpZiAoIXRoaXMuX2lzQ2FsbGVkKSB7XG4gICAgICAgIHRoaXMuX2lzQ2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKGUgPSB0aGlzLl9jYWxsYmFjaykuY2FsbC5hcHBseShlLCB1dChbdGhpcy5fdGhhdF0sIFR0KG4pLCAhMSkpKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZXNvbHZlKGkpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgIH0sIHI7XG4gIH0pKClcbik7XG5mdW5jdGlvbiBzdChyLCBlKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0KSB7XG4gICAgR2UkMS53aXRoKHUoR2UkMS5hY3RpdmUoKSksIGZ1bmN0aW9uKCkge1xuICAgICAgci5leHBvcnQoZSwgZnVuY3Rpb24obikge1xuICAgICAgICB0KG4pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxudmFyIGx0ID0ge1xuICBnZXRLZXlQYWlyczogZXIsXG4gIHNlcmlhbGl6ZUtleVBhaXJzOiBycixcbiAgcGFyc2VLZXlQYWlyc0ludG9SZWNvcmQ6IFdyLFxuICBwYXJzZVBhaXJLZXlWYWx1ZTogd1xufSwgT3QgPSB7XG4gIF9leHBvcnQ6IHN0XG59O1xuY29uc3QgUHQgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmZyZWV6ZSgvKiBAX19QVVJFX18gKi8gT2JqZWN0LmRlZmluZVByb3BlcnR5KHtcbiAgX19wcm90b19fOiBudWxsLFxuICBBbHdheXNPZmZTYW1wbGVyOiBELFxuICBBbHdheXNPblNhbXBsZXI6IFAsXG4gIEFuY2hvcmVkQ2xvY2s6ICRyLFxuICBCaW5kT25jZUZ1dHVyZTogZnQsXG4gIENvbXBvc2l0ZVByb3BhZ2F0b3I6IHZlLFxuICBERUZBVUxUX0FUVFJJQlVURV9DT1VOVF9MSU1JVDogZCxcbiAgREVGQVVMVF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUOiBwLFxuICBERUZBVUxUX0VOVklST05NRU5UOiBWLFxuICBERUZBVUxUX1NQQU5fQVRUUklCVVRFX1BFUl9FVkVOVF9DT1VOVF9MSU1JVDogVHIsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0xJTktfQ09VTlRfTElNSVQ6IHVyLFxuICBnZXQgRXhwb3J0UmVzdWx0Q29kZSgpIHtcbiAgICByZXR1cm4gYSQxO1xuICB9LFxuICBQYXJlbnRCYXNlZFNhbXBsZXI6IEZlLFxuICBnZXQgUlBDVHlwZSgpIHtcbiAgICByZXR1cm4gYjtcbiAgfSxcbiAgUmFuZG9tSWRHZW5lcmF0b3I6IFBlLFxuICBTREtfSU5GTzogVEEsXG4gIFRSQUNFX1BBUkVOVF9IRUFERVI6IEwsXG4gIFRSQUNFX1NUQVRFX0hFQURFUjogQSxcbiAgVGltZW91dEVycm9yOiBMcixcbiAgVHJhY2VJZFJhdGlvQmFzZWRTYW1wbGVyOiBLZSxcbiAgVHJhY2VTdGF0ZTogZnIsXG4gIGdldCBUcmFjZXNTYW1wbGVyVmFsdWVzKCkge1xuICAgIHJldHVybiB2O1xuICB9LFxuICBWRVJTSU9OOiB0UyxcbiAgVzNDQmFnZ2FnZVByb3BhZ2F0b3I6IFpyLFxuICBXM0NUcmFjZUNvbnRleHRQcm9wYWdhdG9yOiBWZSxcbiAgX2dsb2JhbFRoaXM6IGhfLFxuICBhZGRIclRpbWVzOiBiXyxcbiAgYmFnZ2FnZVV0aWxzOiBsdCxcbiAgY2FsbFdpdGhUaW1lb3V0OiBvdCxcbiAgZGVsZXRlUlBDTWV0YWRhdGE6IEhlLFxuICBnZXRFbnY6IE9lLFxuICBnZXRFbnZXaXRob3V0RGVmYXVsdHM6IGNlLFxuICBnZXRSUENNZXRhZGF0YTogeGUsXG4gIGdldFRpbWVPcmlnaW46IHJfLFxuICBnbG9iYWxFcnJvckhhbmRsZXI6IEVyLFxuICBoZXhUb0Jhc2U2NDogZGUsXG4gIGhleFRvQmluYXJ5OiBBJDEsXG4gIGhyVGltZTogcF8sXG4gIGhyVGltZUR1cmF0aW9uOiBYZSQxLFxuICBoclRpbWVUb01pY3Jvc2Vjb25kczogamUkMSxcbiAgaHJUaW1lVG9NaWxsaXNlY29uZHM6IGtlJDEsXG4gIGhyVGltZVRvTmFub3NlY29uZHM6IHhlJDEsXG4gIGhyVGltZVRvVGltZVN0YW1wOiBRZSQxLFxuICBpbnRlcm5hbDogT3QsXG4gIGlzQXR0cmlidXRlS2V5OiBucixcbiAgaXNBdHRyaWJ1dGVWYWx1ZTogYXIsXG4gIGlzVGltZUlucHV0OiBxZSQxLFxuICBpc1RpbWVJbnB1dEhyVGltZTogTl8sXG4gIGlzVHJhY2luZ1N1cHByZXNzZWQ6IGEsXG4gIGlzVXJsSWdub3JlZDogWmUkMSxcbiAgaXNXcmFwcGVkOiBfdCxcbiAgbG9nZ2luZ0Vycm9ySGFuZGxlcjogb3IsXG4gIG1lcmdlOiBudCxcbiAgbWlsbGlzVG9IclRpbWU6IE8kMSxcbiAgb3RwZXJmb3JtYW5jZTogUiQxLFxuICBwYXJzZUVudmlyb25tZW50OiBqLFxuICBwYXJzZVRyYWNlUGFyZW50OiBzcixcbiAgc2FuaXRpemVBdHRyaWJ1dGVzOiBRcixcbiAgc2V0R2xvYmFsRXJyb3JIYW5kbGVyOiBlZSxcbiAgc2V0UlBDTWV0YWRhdGE6IGplLFxuICBzdXBwcmVzc1RyYWNpbmc6IHUsXG4gIHRpbWVJbnB1dFRvSHJUaW1lOiB3ZSQxLFxuICB1bnJlZlRpbWVyOiBTZSxcbiAgdW5zdXBwcmVzc1RyYWNpbmc6IHMsXG4gIHVybE1hdGNoZXM6IGdfXG59LCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6IFwiTW9kdWxlXCIgfSkpO1xuXG5leHBvcnQgeyBFciBhcyBFLCBPZSBhcyBPLCBQdCBhcyBQLCBRciBhcyBRLCBTZSBhcyBTLCBWZSBhcyBWLCBaciBhcyBaLCBhciBhcyBhLCB2IGFzIGIsIGNlIGFzIGMsIGQsIE90IGFzIGUsIGZ0IGFzIGYsIGwsIG50IGFzIG4sIHAsIHZlIGFzIHYgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsR0FBSSxNQUFNQyxJQUFJLEtBQUtDLElBQUksS0FBS0MsSUFBTSxNQUFNQyxJQUFLLEtBQUtDLElBQUssS0FBS0MsSUFBTSxNQUFNQyxJQUFJLE1BQU1DLElBQU0sTUFBTUMsSUFBTSxLQUFLQyxJQUFNLE1BQU1DLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFNLEtBQUtDLElBQUksTUFBTUMsSUFBSSxNQUFNQyxVQUFVO0FBQzdNLFNBQVMsS0FBQUMsR0FBRyxLQUFBQyxHQUFHLEtBQUFDLFVBQVM7QUFDeEIsU0FBUyxLQUFBQyxTQUFTO0FBQ2xCLFNBQVMsS0FBS0MsR0FBSyxLQUFLQyxVQUFXO0FBQ25DLFNBQVMsS0FBS0MsR0FBTSxLQUFLQyxHQUFNLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFNLEtBQUtDLElBQUksS0FBS0MsVUFBVTtBQUNwRixTQUFTLE1BQU1DLElBQUksTUFBTUMsVUFBVTtBQUVuQyxJQUFJQztBQUFBLENBQ0gsU0FBU1osR0FBRztBQUNYLEVBQUFBLEVBQUVBLEVBQUUsYUFBYSxDQUFDLElBQUksY0FBY0EsRUFBRUEsRUFBRSxTQUFTLENBQUMsSUFBSSxVQUFVQSxFQUFFQSxFQUFFLHFCQUFxQixDQUFDLElBQUk7QUFDaEcsR0FBR1ksTUFBTUEsSUFBSSxDQUFDLEVBQUU7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O0FBQUEsRUFDakIsbUJBQW1CZjtBQUFBLEVBQ25CLFlBQVlvRjtBQUFBLEVBQ1osbUJBQW1CcEU7QUFBQSxFQUNuQixZQUFZakI7QUFDZCxHQUFHLE9BQU8sYUFBYSxFQUFFLE9BQU8sU0FBUyxDQUFDLENBQUM7IiwKICAibmFtZXMiOiBbInlfIiwgImhfIiwgImZfIiwgImdfIiwgIndlJDEiLCAiUiQxIiwgIk8kMSIsICJaZSQxIiwgIk5fIiwgInFlJDEiLCAiUWUkMSIsICJ4ZSQxIiwgImtlJDEiLCAiamUkMSIsICJYZSQxIiwgInBfIiwgInJfIiwgImJfIiwgImEiLCAidSIsICJzIiwgInIiLCAiQSQxIiwgImEkMSIsICJzZSQxIiwgInplJDEiLCAiSG4iLCAibXIiLCAiR2UkMSIsICJJcyIsICJWcyIsICJ0UyIsICJUQSIsICJsIiwgInhyIiwgIlUiLCAibSIsICJGciIsICJLciIsICJZciIsICJ6ciIsICJ0IiwgIm4iLCAiaSIsICJvIiwgInJyIiwgImVyIiwgInciLCAiV3IiLCAiWnIiLCAiJHIiLCAidHIiLCAiSnIiLCAiUXIiLCAiciQxIiwgIm5yIiwgImFyIiwgInFyIiwgImlyIiwgIm9yIiwgImtyIiwgInJlIiwgIl9yIiwgIkVyIiwgInYiLCAidGUiLCAiYWUiLCAiaWUiLCAib2UiLCAicCIsICJkIiwgIlRyIiwgInVyIiwgIlYiLCAiZmUiLCAic2UiLCAibGUiLCAiaiIsICJPZSIsICJjZSIsICJSZSIsICJwZSIsICJkZSIsICJMZSIsICJBZSIsICJQZSIsICJZIiwgIlIiLCAiU2UiLCAidmUiLCAiQiIsICJ5ZSIsICJoZSIsICJnZSIsICJtZSIsICJ6IiwgIlVlIiwgIlciLCAiWiIsICJmciIsICJMIiwgIkEiLCAiQmUiLCAiYmUiLCAiWGUiLCAiR2UiLCAid2UiLCAic3IiLCAiVmUiLCAiYiIsICJqZSIsICJ4ZSIsICJQIiwgIlllIiwgInplIiwgIldlIiwgIlplIiwgImxyIiwgIiRlIiwgIkplIiwgIlFlIiwgIk9yIiwgImNyIiwgImYiLCAiUnIiLCAiJCIsICJxZSIsICJrZSIsICJydCIsICJldCIsICJ0dCIsICJudCIsICJwciIsICJ5IiwgIlMiLCAiZHIiLCAiTyIsICJhdCIsICJoIiwgIkoiLCAieCIsICJpdCIsICJMciIsICJvdCIsICJfdCIsICJFdCIsICJUdCIsICJ1dCIsICJmdCIsICJzdCIsICJsdCIsICJPdCIsICJQdCJdCn0K
|