@getopenpay/openpay-js-react 0.5.15 → 0.5.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/Resource-Ci2cMsNJ-r_pjpkns.js +176 -0
  3. package/dist/SimpleSpanProcessor-B0eU7C8A-CjPgIH6s.js +910 -0
  4. package/dist/detect-resources-ChhXDAxq-Btymf6C7.js +862 -0
  5. package/dist/{diag-api-DbLQG6Cy-7Q64bfX9.js → diag-api-DC4dxlqZ-DOFCnxry.js} +2 -2
  6. package/dist/index-1sGeF-S8-Cf5_9V8Q.js +1613 -0
  7. package/dist/{index-BJ3-FtuX-DlTusXVc.js → index-925BJ6Jo-FMJz60P8.js} +5 -5
  8. package/dist/{index-B2hBQXxN-CgWoAORq.js → index-BE9m_H38-DZJya01O.js} +2 -2
  9. package/dist/index-BRlq-xUA.js +9354 -0
  10. package/dist/index-BXyoTbrS-DGGjVY6j.js +430 -0
  11. package/dist/{index-CDEhufnp-CDtO0j1l.js → index-C3N5jtkQ-BnMnAIzy.js} +2 -2
  12. package/dist/index-CD5ZzJ0E-BNo61tUq.js +127 -0
  13. package/dist/index-CfmI3mSs-kdYEhELt.js +6718 -0
  14. package/dist/index-DHKyZPe5-DB9begqh.js +147 -0
  15. package/dist/index-v1SRbPSI-Ck3VxOS9.js +1012 -0
  16. package/dist/index.d.ts +7 -2
  17. package/dist/index.js +5 -5
  18. package/dist/metrics-api-B-98-wmH-CgGZj7qs.js +160 -0
  19. package/dist/{suppress-tracing-i166ZvAf-D2QqEK4Q.js → suppress-tracing-BuitcWA2-BFsdq8P_.js} +2 -2
  20. package/dist/url-CTAMV9Fr-n8hDYbJZ.js +798 -0
  21. package/dist/{utils-BFjwGsZE-dHVj8huE.js → utils-CKW-Vl9c-CCUGWG5V.js} +2 -2
  22. package/dist/utils-DCVGrgLr-DxhyWIXT.js +270 -0
  23. package/package.json +1 -1
  24. package/dist/Resource-C_JyOUi0-DCzIGxs8.js +0 -176
  25. package/dist/SimpleSpanProcessor-DsaymkqA-CtD-GEtk.js +0 -910
  26. package/dist/detect-resources-WIF4Hgfd-BW23wWaP.js +0 -862
  27. package/dist/index-0_SuCli2-B5_tBBpx.js +0 -430
  28. package/dist/index-3-QFb-PY-DJRVxNSq.js +0 -127
  29. package/dist/index-CV8wT6Y2-Bh-lYVds.js +0 -6718
  30. package/dist/index-DIoaqP4_-Cs74t_lP.js +0 -1012
  31. package/dist/index-DJhVQsLX-BiIZL-r4.js +0 -147
  32. package/dist/index-Din5I5pT-Be1fPmsi.js +0 -1613
  33. package/dist/index-nPWqtn7T.js +0 -9357
  34. package/dist/metrics-api-B_K2nQRV-Be59r2AI.js +0 -160
  35. package/dist/url-D2-xNTDs-BLiqCwPG.js +0 -798
  36. package/dist/utils-Blz-BInC-461m4Gx4.js +0 -270
@@ -1,430 +0,0 @@
1
- import { r as D } from "./diag-api-DbLQG6Cy-7Q64bfX9.js";
2
- import { J as B, q as z, Z as $, $ as W, y as v, a as X, x as Z, k as G, p as C, O as I, E as J, h as b } from "./url-D2-xNTDs-BLiqCwPG.js";
3
- import { B as V, U as K, W as Q } from "./utils-Blz-BInC-461m4Gx4.js";
4
- import { T as E, y as k, C as x, b as Y, V as tt } from "./utils-BFjwGsZE-dHVj8huE.js";
5
- import { M as P, T as h, e as et } from "./index-nPWqtn7T.js";
6
- var g;
7
- (function(o) {
8
- o.COMPONENT = "component", o.HTTP_ERROR_NAME = "http.error_name", o.HTTP_STATUS_TEXT = "http.status_text";
9
- })(g || (g = {}));
10
- var nt = function(o, i, t, n) {
11
- function r(e) {
12
- return e instanceof t ? e : new t(function(s) {
13
- s(e);
14
- });
15
- }
16
- return new (t || (t = Promise))(function(e, s) {
17
- function a(l) {
18
- try {
19
- u(n.next(l));
20
- } catch (y) {
21
- s(y);
22
- }
23
- }
24
- function c(l) {
25
- try {
26
- u(n.throw(l));
27
- } catch (y) {
28
- s(y);
29
- }
30
- }
31
- function u(l) {
32
- l.done ? e(l.value) : r(l.value).then(a, c);
33
- }
34
- u((n = n.apply(o, [])).next());
35
- });
36
- }, rt = function(o, i) {
37
- var t = { label: 0, sent: function() {
38
- if (e[0] & 1) throw e[1];
39
- return e[1];
40
- }, trys: [], ops: [] }, n, r, e, s;
41
- return s = { next: a(0), throw: a(1), return: a(2) }, typeof Symbol == "function" && (s[Symbol.iterator] = function() {
42
- return this;
43
- }), s;
44
- function a(u) {
45
- return function(l) {
46
- return c([u, l]);
47
- };
48
- }
49
- function c(u) {
50
- if (n) throw new TypeError("Generator is already executing.");
51
- for (; t; ) try {
52
- if (n = 1, r && (e = u[0] & 2 ? r.return : u[0] ? r.throw || ((e = r.return) && e.call(r), 0) : r.next) && !(e = e.call(r, u[1])).done) return e;
53
- switch (r = 0, e && (u = [u[0] & 2, e.value]), u[0]) {
54
- case 0:
55
- case 1:
56
- e = u;
57
- break;
58
- case 4:
59
- return t.label++, { value: u[1], done: !1 };
60
- case 5:
61
- t.label++, r = u[1], u = [0];
62
- continue;
63
- case 7:
64
- u = t.ops.pop(), t.trys.pop();
65
- continue;
66
- default:
67
- if (e = t.trys, !(e = e.length > 0 && e[e.length - 1]) && (u[0] === 6 || u[0] === 2)) {
68
- t = 0;
69
- continue;
70
- }
71
- if (u[0] === 3 && (!e || u[1] > e[0] && u[1] < e[3])) {
72
- t.label = u[1];
73
- break;
74
- }
75
- if (u[0] === 6 && t.label < e[1]) {
76
- t.label = e[1], e = u;
77
- break;
78
- }
79
- if (e && t.label < e[2]) {
80
- t.label = e[2], t.ops.push(u);
81
- break;
82
- }
83
- e[2] && t.ops.pop(), t.trys.pop();
84
- continue;
85
- }
86
- u = i.call(o, t);
87
- } catch (l) {
88
- u = [6, l], r = 0;
89
- } finally {
90
- n = e = 0;
91
- }
92
- if (u[0] & 5) throw u[1];
93
- return { value: u[0] ? u[1] : void 0, done: !0 };
94
- }
95
- }, ot = function(o) {
96
- var i = typeof Symbol == "function" && Symbol.iterator, t = i && o[i], n = 0;
97
- if (t) return t.call(o);
98
- if (o && typeof o.length == "number") return {
99
- next: function() {
100
- return o && n >= o.length && (o = void 0), { value: o && o[n++], done: !o };
101
- }
102
- };
103
- throw new TypeError(i ? "Object is not iterable." : "Symbol.iterator is not defined.");
104
- }, it = function(o, i) {
105
- var t = typeof Symbol == "function" && o[Symbol.iterator];
106
- if (!t) return o;
107
- var n = t.call(o), r, e = [], s;
108
- try {
109
- for (; (i === void 0 || i-- > 0) && !(r = n.next()).done; ) e.push(r.value);
110
- } catch (a) {
111
- s = { error: a };
112
- } finally {
113
- try {
114
- r && !r.done && (t = n.return) && t.call(n);
115
- } finally {
116
- if (s) throw s.error;
117
- }
118
- }
119
- return e;
120
- }, N = D.createComponentLogger({
121
- namespace: "@opentelemetry/opentelemetry-instrumentation-fetch/utils"
122
- });
123
- function st() {
124
- for (var o = [], i = 0; i < arguments.length; i++)
125
- o[i] = arguments[i];
126
- if (o[0] instanceof URL || typeof o[0] == "string") {
127
- var t = o[1];
128
- if (!t?.body)
129
- return Promise.resolve();
130
- if (t.body instanceof ReadableStream) {
131
- var n = at(t.body), r = n.body, e = n.length;
132
- return t.body = r, e;
133
- } else
134
- return Promise.resolve(ut(t.body));
135
- } else {
136
- var s = o[0];
137
- return s?.body ? s.clone().text().then(function(a) {
138
- return S(a);
139
- }) : Promise.resolve();
140
- }
141
- }
142
- function at(o) {
143
- if (!o.pipeThrough)
144
- return N.warn("Platform has ReadableStream but not pipeThrough!"), {
145
- body: o,
146
- length: Promise.resolve(void 0)
147
- };
148
- var i = 0, t, n = new Promise(function(e) {
149
- t = e;
150
- }), r = new TransformStream({
151
- start: function() {
152
- },
153
- transform: function(e, s) {
154
- return nt(this, void 0, void 0, function() {
155
- var a;
156
- return rt(this, function(c) {
157
- switch (c.label) {
158
- case 0:
159
- return [4, e];
160
- case 1:
161
- return a = c.sent(), i += a.byteLength, s.enqueue(e), [
162
- 2
163
- /*return*/
164
- ];
165
- }
166
- });
167
- });
168
- },
169
- flush: function() {
170
- t(i);
171
- }
172
- });
173
- return {
174
- body: o.pipeThrough(r),
175
- length: n
176
- };
177
- }
178
- function ut(o) {
179
- if (typeof Document < "u" && o instanceof Document)
180
- return new XMLSerializer().serializeToString(document).length;
181
- if (o instanceof Blob)
182
- return o.size;
183
- if (o.byteLength !== void 0)
184
- return o.byteLength;
185
- if (o instanceof FormData)
186
- return ft(o);
187
- if (o instanceof URLSearchParams)
188
- return S(o.toString());
189
- if (typeof o == "string")
190
- return S(o);
191
- N.warn("unknown body type");
192
- }
193
- var ct = new TextEncoder();
194
- function S(o) {
195
- return ct.encode(o).byteLength;
196
- }
197
- function ft(o) {
198
- var i, t, n = 0;
199
- try {
200
- for (var r = ot(o.entries()), e = r.next(); !e.done; e = r.next()) {
201
- var s = it(e.value, 2), a = s[0], c = s[1];
202
- n += a.length, c instanceof Blob ? n += c.size : n += c.length;
203
- }
204
- } catch (u) {
205
- i = { error: u };
206
- } finally {
207
- try {
208
- e && !e.done && (t = r.return) && t.call(r);
209
- } finally {
210
- if (i) throw i.error;
211
- }
212
- }
213
- return n;
214
- }
215
- var O = "0.57.2", lt = /* @__PURE__ */ function() {
216
- var o = function(i, t) {
217
- return o = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, r) {
218
- n.__proto__ = r;
219
- } || function(n, r) {
220
- for (var e in r) Object.prototype.hasOwnProperty.call(r, e) && (n[e] = r[e]);
221
- }, o(i, t);
222
- };
223
- return function(i, t) {
224
- if (typeof t != "function" && t !== null)
225
- throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
226
- o(i, t);
227
- function n() {
228
- this.constructor = i;
229
- }
230
- i.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n());
231
- };
232
- }(), pt = function(o, i) {
233
- var t = typeof Symbol == "function" && o[Symbol.iterator];
234
- if (!t) return o;
235
- var n = t.call(o), r, e = [], s;
236
- try {
237
- for (; (i === void 0 || i-- > 0) && !(r = n.next()).done; ) e.push(r.value);
238
- } catch (a) {
239
- s = { error: a };
240
- } finally {
241
- try {
242
- r && !r.done && (t = n.return) && t.call(n);
243
- } finally {
244
- if (s) throw s.error;
245
- }
246
- }
247
- return e;
248
- }, ht = function(o, i, t) {
249
- if (arguments.length === 2) for (var n = 0, r = i.length, e; n < r; n++)
250
- (e || !(n in i)) && (e || (e = Array.prototype.slice.call(i, 0, n)), e[n] = i[n]);
251
- return o.concat(e || Array.prototype.slice.call(i));
252
- }, _, yt = 300, U = typeof process == "object" && ((_ = process.release) === null || _ === void 0 ? void 0 : _.name) === "node", _t = (
253
- /** @class */
254
- function(o) {
255
- lt(i, o);
256
- function i(t) {
257
- t === void 0 && (t = {});
258
- var n = o.call(this, "@opentelemetry/instrumentation-fetch", O, t) || this;
259
- return n.component = "fetch", n.version = O, n.moduleName = n.component, n._usedResources = /* @__PURE__ */ new WeakSet(), n._tasksCount = 0, n;
260
- }
261
- return i.prototype.init = function() {
262
- }, i.prototype._addChildSpan = function(t, n) {
263
- var r = this.tracer.startSpan("CORS Preflight", {
264
- startTime: n[E.FETCH_START]
265
- }, P.setSpan(h.active(), t));
266
- k(r, n, this.getConfig().ignoreNetworkEvents), r.end(n[E.RESPONSE_END]);
267
- }, i.prototype._addFinalSpanAttributes = function(t, n) {
268
- var r = x(n.url);
269
- t.setAttribute(B, n.status), n.statusText != null && t.setAttribute(g.HTTP_STATUS_TEXT, n.statusText), t.setAttribute(z, r.host), t.setAttribute($, r.protocol.replace(":", "")), typeof navigator < "u" && t.setAttribute(W, navigator.userAgent);
270
- }, i.prototype._addHeaders = function(t, n) {
271
- if (!Y(n, this.getConfig().propagateTraceHeaderCorsUrls)) {
272
- var r = {};
273
- v.inject(h.active(), r), Object.keys(r).length > 0 && this._diag.debug("headers inject skipped due to CORS policy");
274
- return;
275
- }
276
- if (t instanceof Request)
277
- v.inject(h.active(), t.headers, {
278
- set: function(e, s, a) {
279
- return e.set(s, typeof a == "string" ? a : String(a));
280
- }
281
- });
282
- else if (t.headers instanceof Headers)
283
- v.inject(h.active(), t.headers, {
284
- set: function(e, s, a) {
285
- return e.set(s, typeof a == "string" ? a : String(a));
286
- }
287
- });
288
- else if (t.headers instanceof Map)
289
- v.inject(h.active(), t.headers, {
290
- set: function(e, s, a) {
291
- return e.set(s, typeof a == "string" ? a : String(a));
292
- }
293
- });
294
- else {
295
- var r = {};
296
- v.inject(h.active(), r), t.headers = Object.assign({}, r, t.headers || {});
297
- }
298
- }, i.prototype._clearResources = function() {
299
- this._tasksCount === 0 && this.getConfig().clearTimingResources && (performance.clearResourceTimings(), this._usedResources = /* @__PURE__ */ new WeakSet());
300
- }, i.prototype._createSpan = function(t, n) {
301
- var r;
302
- if (n === void 0 && (n = {}), X(t, this.getConfig().ignoreUrls)) {
303
- this._diag.debug("ignoring span as url matches ignored url");
304
- return;
305
- }
306
- var e = (n.method || "GET").toUpperCase(), s = "HTTP " + e;
307
- return this.tracer.startSpan(s, {
308
- kind: et.CLIENT,
309
- attributes: (r = {}, r[g.COMPONENT] = this.moduleName, r[Z] = e, r[G] = t, r)
310
- });
311
- }, i.prototype._findResourceAndAddNetworkEvents = function(t, n, r) {
312
- var e = n.entries;
313
- if (!e.length) {
314
- if (!performance.getEntriesByType)
315
- return;
316
- e = performance.getEntriesByType("resource");
317
- }
318
- var s = tt(n.spanUrl, n.startTime, r, e, this._usedResources, "fetch");
319
- if (s.mainRequest) {
320
- var a = s.mainRequest;
321
- this._markResourceAsUsed(a);
322
- var c = s.corsPreFlightRequest;
323
- c && (this._addChildSpan(t, c), this._markResourceAsUsed(c)), k(t, a, this.getConfig().ignoreNetworkEvents);
324
- }
325
- }, i.prototype._markResourceAsUsed = function(t) {
326
- this._usedResources.add(t);
327
- }, i.prototype._endSpan = function(t, n, r) {
328
- var e = this, s = I(Date.now()), a = C();
329
- this._addFinalSpanAttributes(t, r), setTimeout(function() {
330
- var c;
331
- (c = n.observer) === null || c === void 0 || c.disconnect(), e._findResourceAndAddNetworkEvents(t, n, a), e._tasksCount--, e._clearResources(), t.end(s);
332
- }, yt);
333
- }, i.prototype._patchConstructor = function() {
334
- var t = this;
335
- return function(n) {
336
- var r = t;
337
- return function() {
338
- for (var e = [], s = 0; s < arguments.length; s++)
339
- e[s] = arguments[s];
340
- var a = this, c = x(e[0] instanceof Request ? e[0].url : String(e[0])).href, u = e[0] instanceof Request ? e[0] : e[1] || {}, l = r._createSpan(c, u);
341
- if (!l)
342
- return n.apply(this, e);
343
- var y = r._prepareSpanData(c);
344
- r.getConfig().measureRequestSize && st.apply(void 0, ht([], pt(e), !1)).then(function(f) {
345
- f && l.setAttribute(J, f);
346
- }).catch(function(f) {
347
- r._diag.warn("getFetchBodyLength", f);
348
- });
349
- function T(f, p) {
350
- r._applyAttributesAfterFetch(f, u, p), r._endSpan(f, y, {
351
- status: p.status || 0,
352
- statusText: p.message,
353
- url: c
354
- });
355
- }
356
- function w(f, p) {
357
- r._applyAttributesAfterFetch(f, u, p), p.status >= 200 && p.status < 400 ? r._endSpan(f, y, p) : r._endSpan(f, y, {
358
- status: p.status,
359
- statusText: p.statusText,
360
- url: c
361
- });
362
- }
363
- function j(f, p, d) {
364
- try {
365
- var F = d.clone(), L = d.clone(), A = F.body;
366
- if (A) {
367
- var H = A.getReader(), R = function() {
368
- H.read().then(function(m) {
369
- var M = m.done;
370
- M ? w(f, L) : R();
371
- }, function(m) {
372
- T(f, m);
373
- });
374
- };
375
- R();
376
- } else
377
- w(f, d);
378
- } finally {
379
- p(d);
380
- }
381
- }
382
- function q(f, p, d) {
383
- try {
384
- T(f, d);
385
- } finally {
386
- p(d);
387
- }
388
- }
389
- return new Promise(function(f, p) {
390
- return h.with(P.setSpan(h.active(), l), function() {
391
- return r._addHeaders(u, c), r._tasksCount++, n.apply(a, u instanceof Request ? [u] : [c, u]).then(j.bind(a, l, f), q.bind(a, l, p));
392
- });
393
- });
394
- };
395
- };
396
- }, i.prototype._applyAttributesAfterFetch = function(t, n, r) {
397
- var e = this, s = this.getConfig().applyCustomAttributesOnSpan;
398
- s && V(function() {
399
- return s(t, n, r);
400
- }, function(a) {
401
- a && e._diag.error("applyCustomAttributesOnSpan", a);
402
- });
403
- }, i.prototype._prepareSpanData = function(t) {
404
- var n = C(), r = [];
405
- if (typeof PerformanceObserver != "function")
406
- return { entries: r, startTime: n, spanUrl: t };
407
- var e = new PerformanceObserver(function(s) {
408
- var a = s.getEntries();
409
- a.forEach(function(c) {
410
- c.initiatorType === "fetch" && c.name === t && r.push(c);
411
- });
412
- });
413
- return e.observe({
414
- entryTypes: ["resource"]
415
- }), { entries: r, observer: e, startTime: n, spanUrl: t };
416
- }, i.prototype.enable = function() {
417
- if (U) {
418
- this._diag.warn("this instrumentation is intended for web usage only, it does not instrument Node.js's fetch()");
419
- return;
420
- }
421
- K(fetch) && (this._unwrap(b, "fetch"), this._diag.debug("removing previous patch for constructor")), this._wrap(b, "fetch", this._patchConstructor());
422
- }, i.prototype.disable = function() {
423
- U || (this._unwrap(b, "fetch"), this._usedResources = /* @__PURE__ */ new WeakSet());
424
- }, i;
425
- }(Q)
426
- );
427
- export {
428
- _t as FetchInstrumentation
429
- };
430
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtMF9TdUNsaTItIX57MDA5fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHIgfSBmcm9tICcuL2RpYWctYXBpLURiTFFHNkN5LSF+ezAwYX1+LmpzJztcbmltcG9ydCB7IEogYXMgSkEsIHEgYXMgcUEsIFogYXMgWkEsICQgYXMgJEEsIHkgYXMgeV8sIGEgYXMgWmUsIHggYXMgeEEsIGsgYXMga0EsIHAgYXMgcF8sIE8sIEUgYXMgRXIsIGggYXMgaF8gfSBmcm9tICcuL3VybC1EMi14TlREcy0hfnswMGJ9fi5qcyc7XG5pbXBvcnQgeyBCLCBVIGFzIFUkMSwgVyB9IGZyb20gJy4vdXRpbHMtQmx6LUJJbkMtIX57MDBjfX4uanMnO1xuaW1wb3J0IHsgVCwgeSBhcyB5JDEsIEMsIGIgYXMgYiQxLCBWIH0gZnJvbSAnLi91dGlscy1CRmp3R3NaRS0hfnswMDh9fi5qcyc7XG5pbXBvcnQgeyBNIGFzIE1lLCBUIGFzIFRlLCBlIGFzIGV0IH0gZnJvbSAnLi9pbmRleC0hfnswMDd9fi5qcyc7XG5cbnZhciB5O1xuKGZ1bmN0aW9uKGEpIHtcbiAgYS5DT01QT05FTlQgPSBcImNvbXBvbmVudFwiLCBhLkhUVFBfRVJST1JfTkFNRSA9IFwiaHR0cC5lcnJvcl9uYW1lXCIsIGEuSFRUUF9TVEFUVVNfVEVYVCA9IFwiaHR0cC5zdGF0dXNfdGV4dFwiO1xufSkoeSB8fCAoeSA9IHt9KSk7XG52YXIgbmUgPSBmdW5jdGlvbihhLCBvLCBlLCByKSB7XG4gIGZ1bmN0aW9uIG4odCkge1xuICAgIHJldHVybiB0IGluc3RhbmNlb2YgZSA/IHQgOiBuZXcgZShmdW5jdGlvbihpKSB7XG4gICAgICBpKHQpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKGUgfHwgKGUgPSBQcm9taXNlKSkoZnVuY3Rpb24odCwgaSkge1xuICAgIGZ1bmN0aW9uIHMoYykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShyLm5leHQoYykpO1xuICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICBpKGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmKGMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUoci50aHJvdyhjKSk7XG4gICAgICB9IGNhdGNoIChoKSB7XG4gICAgICAgIGkoaCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUoYykge1xuICAgICAgYy5kb25lID8gdChjLnZhbHVlKSA6IG4oYy52YWx1ZSkudGhlbihzLCBmKTtcbiAgICB9XG4gICAgdSgociA9IHIuYXBwbHkoYSwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn0sIGFlID0gZnVuY3Rpb24oYSwgbykge1xuICB2YXIgZSA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTtcbiAgICByZXR1cm4gdFsxXTtcbiAgfSwgdHJ5czogW10sIG9wczogW10gfSwgciwgbiwgdCwgaTtcbiAgcmV0dXJuIGkgPSB7IG5leHQ6IHMoMCksIHRocm93OiBzKDEpLCByZXR1cm46IHMoMikgfSwgdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgKGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgaTtcbiAgZnVuY3Rpb24gcyh1KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGMpIHtcbiAgICAgIHJldHVybiBmKFt1LCBjXSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBmKHUpIHtcbiAgICBpZiAocikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgZm9yICg7IGU7ICkgdHJ5IHtcbiAgICAgIGlmIChyID0gMSwgbiAmJiAodCA9IHVbMF0gJiAyID8gbi5yZXR1cm4gOiB1WzBdID8gbi50aHJvdyB8fCAoKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pLCAwKSA6IG4ubmV4dCkgJiYgISh0ID0gdC5jYWxsKG4sIHVbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgIHN3aXRjaCAobiA9IDAsIHQgJiYgKHUgPSBbdVswXSAmIDIsIHQudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0ID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBlLmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBlLmxhYmVsKyssIG4gPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IGUub3BzLnBvcCgpLCBlLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKHQgPSBlLnRyeXMsICEodCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICBlID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIXQgfHwgdVsxXSA+IHRbMF0gJiYgdVsxXSA8IHRbM10pKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiBlLmxhYmVsIDwgdFsxXSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IHRbMV0sIHQgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0ICYmIGUubGFiZWwgPCB0WzJdKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gdFsyXSwgZS5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0WzJdICYmIGUub3BzLnBvcCgpLCBlLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gby5jYWxsKGEsIGUpO1xuICAgIH0gY2F0Y2ggKGMpIHtcbiAgICAgIHUgPSBbNiwgY10sIG4gPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICByID0gdCA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufSwgaWUgPSBmdW5jdGlvbihhKSB7XG4gIHZhciBvID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBlID0gbyAmJiBhW29dLCByID0gMDtcbiAgaWYgKGUpIHJldHVybiBlLmNhbGwoYSk7XG4gIGlmIChhICYmIHR5cGVvZiBhLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGEgJiYgciA+PSBhLmxlbmd0aCAmJiAoYSA9IHZvaWQgMCksIHsgdmFsdWU6IGEgJiYgYVtyKytdLCBkb25lOiAhYSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihvID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgb2UgPSBmdW5jdGlvbihhLCBvKSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgYVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWUpIHJldHVybiBhO1xuICB2YXIgciA9IGUuY2FsbChhKSwgbiwgdCA9IFtdLCBpO1xuICB0cnkge1xuICAgIGZvciAoOyAobyA9PT0gdm9pZCAwIHx8IG8tLSA+IDApICYmICEobiA9IHIubmV4dCgpKS5kb25lOyApIHQucHVzaChuLnZhbHVlKTtcbiAgfSBjYXRjaCAocykge1xuICAgIGkgPSB7IGVycm9yOiBzIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIG4gJiYgIW4uZG9uZSAmJiAoZSA9IHIucmV0dXJuKSAmJiBlLmNhbGwocik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChpKSB0aHJvdyBpLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdDtcbn0sIFUgPSByLmNyZWF0ZUNvbXBvbmVudExvZ2dlcih7XG4gIG5hbWVzcGFjZTogXCJAb3BlbnRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWluc3RydW1lbnRhdGlvbi1mZXRjaC91dGlsc1wiXG59KTtcbmZ1bmN0aW9uIHNlKCkge1xuICBmb3IgKHZhciBhID0gW10sIG8gPSAwOyBvIDwgYXJndW1lbnRzLmxlbmd0aDsgbysrKVxuICAgIGFbb10gPSBhcmd1bWVudHNbb107XG4gIGlmIChhWzBdIGluc3RhbmNlb2YgVVJMIHx8IHR5cGVvZiBhWzBdID09IFwic3RyaW5nXCIpIHtcbiAgICB2YXIgZSA9IGFbMV07XG4gICAgaWYgKCFlPy5ib2R5KVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIGlmIChlLmJvZHkgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbSkge1xuICAgICAgdmFyIHIgPSB1ZShlLmJvZHkpLCBuID0gci5ib2R5LCB0ID0gci5sZW5ndGg7XG4gICAgICByZXR1cm4gZS5ib2R5ID0gbiwgdDtcbiAgICB9IGVsc2VcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmUoZS5ib2R5KSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGkgPSBhWzBdO1xuICAgIHJldHVybiBpPy5ib2R5ID8gaS5jbG9uZSgpLnRleHQoKS50aGVuKGZ1bmN0aW9uKHMpIHtcbiAgICAgIHJldHVybiBiKHMpO1xuICAgIH0pIDogUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cbn1cbmZ1bmN0aW9uIHVlKGEpIHtcbiAgaWYgKCFhLnBpcGVUaHJvdWdoKVxuICAgIHJldHVybiBVLndhcm4oXCJQbGF0Zm9ybSBoYXMgUmVhZGFibGVTdHJlYW0gYnV0IG5vdCBwaXBlVGhyb3VnaCFcIiksIHtcbiAgICAgIGJvZHk6IGEsXG4gICAgICBsZW5ndGg6IFByb21pc2UucmVzb2x2ZSh2b2lkIDApXG4gICAgfTtcbiAgdmFyIG8gPSAwLCBlLCByID0gbmV3IFByb21pc2UoZnVuY3Rpb24odCkge1xuICAgIGUgPSB0O1xuICB9KSwgbiA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB9LFxuICAgIHRyYW5zZm9ybTogZnVuY3Rpb24odCwgaSkge1xuICAgICAgcmV0dXJuIG5lKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHM7XG4gICAgICAgIHJldHVybiBhZSh0aGlzLCBmdW5jdGlvbihmKSB7XG4gICAgICAgICAgc3dpdGNoIChmLmxhYmVsKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIHJldHVybiBbNCwgdF07XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIHJldHVybiBzID0gZi5zZW50KCksIG8gKz0gcy5ieXRlTGVuZ3RoLCBpLmVucXVldWUodCksIFtcbiAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgLypyZXR1cm4qL1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGZsdXNoOiBmdW5jdGlvbigpIHtcbiAgICAgIGUobyk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBib2R5OiBhLnBpcGVUaHJvdWdoKG4pLFxuICAgIGxlbmd0aDogclxuICB9O1xufVxuZnVuY3Rpb24gZmUoYSkge1xuICBpZiAodHlwZW9mIERvY3VtZW50IDwgXCJ1XCIgJiYgYSBpbnN0YW5jZW9mIERvY3VtZW50KVxuICAgIHJldHVybiBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKGRvY3VtZW50KS5sZW5ndGg7XG4gIGlmIChhIGluc3RhbmNlb2YgQmxvYilcbiAgICByZXR1cm4gYS5zaXplO1xuICBpZiAoYS5ieXRlTGVuZ3RoICE9PSB2b2lkIDApXG4gICAgcmV0dXJuIGEuYnl0ZUxlbmd0aDtcbiAgaWYgKGEgaW5zdGFuY2VvZiBGb3JtRGF0YSlcbiAgICByZXR1cm4gbGUoYSk7XG4gIGlmIChhIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zKVxuICAgIHJldHVybiBiKGEudG9TdHJpbmcoKSk7XG4gIGlmICh0eXBlb2YgYSA9PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBiKGEpO1xuICBVLndhcm4oXCJ1bmtub3duIGJvZHkgdHlwZVwiKTtcbn1cbnZhciBjZSA9IG5ldyBUZXh0RW5jb2RlcigpO1xuZnVuY3Rpb24gYihhKSB7XG4gIHJldHVybiBjZS5lbmNvZGUoYSkuYnl0ZUxlbmd0aDtcbn1cbmZ1bmN0aW9uIGxlKGEpIHtcbiAgdmFyIG8sIGUsIHIgPSAwO1xuICB0cnkge1xuICAgIGZvciAodmFyIG4gPSBpZShhLmVudHJpZXMoKSksIHQgPSBuLm5leHQoKTsgIXQuZG9uZTsgdCA9IG4ubmV4dCgpKSB7XG4gICAgICB2YXIgaSA9IG9lKHQudmFsdWUsIDIpLCBzID0gaVswXSwgZiA9IGlbMV07XG4gICAgICByICs9IHMubGVuZ3RoLCBmIGluc3RhbmNlb2YgQmxvYiA/IHIgKz0gZi5zaXplIDogciArPSBmLmxlbmd0aDtcbiAgICB9XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICB0ICYmICF0LmRvbmUgJiYgKGUgPSBuLnJldHVybikgJiYgZS5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG52YXIgayA9IFwiMC41Ny4yXCIsIGRlID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgYSA9IGZ1bmN0aW9uKG8sIGUpIHtcbiAgICByZXR1cm4gYSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgIHIuX19wcm90b19fID0gbjtcbiAgICB9IHx8IGZ1bmN0aW9uKHIsIG4pIHtcbiAgICAgIGZvciAodmFyIHQgaW4gbikgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sIHQpICYmIChyW3RdID0gblt0XSk7XG4gICAgfSwgYShvLCBlKTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKG8sIGUpIHtcbiAgICBpZiAodHlwZW9mIGUgIT0gXCJmdW5jdGlvblwiICYmIGUgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhlKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgYShvLCBlKTtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IG87XG4gICAgfVxuICAgIG8ucHJvdG90eXBlID0gZSA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoZSkgOiAoci5wcm90b3R5cGUgPSBlLnByb3RvdHlwZSwgbmV3IHIoKSk7XG4gIH07XG59KCksIGhlID0gZnVuY3Rpb24oYSwgbykge1xuICB2YXIgZSA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGFbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFlKSByZXR1cm4gYTtcbiAgdmFyIHIgPSBlLmNhbGwoYSksIG4sIHQgPSBbXSwgaTtcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKG8gPT09IHZvaWQgMCB8fCBvLS0gPiAwKSAmJiAhKG4gPSByLm5leHQoKSkuZG9uZTsgKSB0LnB1c2gobi52YWx1ZSk7XG4gIH0gY2F0Y2ggKHMpIHtcbiAgICBpID0geyBlcnJvcjogcyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBuICYmICFuLmRvbmUgJiYgKGUgPSByLnJldHVybikgJiYgZS5jYWxsKHIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoaSkgdGhyb3cgaS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHQ7XG59LCBwZSA9IGZ1bmN0aW9uKGEsIG8sIGUpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIHIgPSAwLCBuID0gby5sZW5ndGgsIHQ7IHIgPCBuOyByKyspXG4gICAgKHQgfHwgIShyIGluIG8pKSAmJiAodCB8fCAodCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG8sIDAsIHIpKSwgdFtyXSA9IG9bcl0pO1xuICByZXR1cm4gYS5jb25jYXQodCB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChvKSk7XG59LCBTLCB2ZSA9IDMwMCwgSCA9IHR5cGVvZiBwcm9jZXNzID09IFwib2JqZWN0XCIgJiYgKChTID0gcHJvY2Vzcy5yZWxlYXNlKSA9PT0gbnVsbCB8fCBTID09PSB2b2lkIDAgPyB2b2lkIDAgOiBTLm5hbWUpID09PSBcIm5vZGVcIiwgU2UgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oYSkge1xuICAgIGRlKG8sIGEpO1xuICAgIGZ1bmN0aW9uIG8oZSkge1xuICAgICAgZSA9PT0gdm9pZCAwICYmIChlID0ge30pO1xuICAgICAgdmFyIHIgPSBhLmNhbGwodGhpcywgXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZmV0Y2hcIiwgaywgZSkgfHwgdGhpcztcbiAgICAgIHJldHVybiByLmNvbXBvbmVudCA9IFwiZmV0Y2hcIiwgci52ZXJzaW9uID0gaywgci5tb2R1bGVOYW1lID0gci5jb21wb25lbnQsIHIuX3VzZWRSZXNvdXJjZXMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtTZXQoKSwgci5fdGFza3NDb3VudCA9IDAsIHI7XG4gICAgfVxuICAgIHJldHVybiBvLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24oKSB7XG4gICAgfSwgby5wcm90b3R5cGUuX2FkZENoaWxkU3BhbiA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgICAgIHZhciBuID0gdGhpcy50cmFjZXIuc3RhcnRTcGFuKFwiQ09SUyBQcmVmbGlnaHRcIiwge1xuICAgICAgICBzdGFydFRpbWU6IHJbVC5GRVRDSF9TVEFSVF1cbiAgICAgIH0sIE1lLnNldFNwYW4oVGUuYWN0aXZlKCksIGUpKTtcbiAgICAgIHkkMShuLCByLCB0aGlzLmdldENvbmZpZygpLmlnbm9yZU5ldHdvcmtFdmVudHMpLCBuLmVuZChyW1QuUkVTUE9OU0VfRU5EXSk7XG4gICAgfSwgby5wcm90b3R5cGUuX2FkZEZpbmFsU3BhbkF0dHJpYnV0ZXMgPSBmdW5jdGlvbihlLCByKSB7XG4gICAgICB2YXIgbiA9IEMoci51cmwpO1xuICAgICAgZS5zZXRBdHRyaWJ1dGUoSkEsIHIuc3RhdHVzKSwgci5zdGF0dXNUZXh0ICE9IG51bGwgJiYgZS5zZXRBdHRyaWJ1dGUoeS5IVFRQX1NUQVRVU19URVhULCByLnN0YXR1c1RleHQpLCBlLnNldEF0dHJpYnV0ZShxQSwgbi5ob3N0KSwgZS5zZXRBdHRyaWJ1dGUoWkEsIG4ucHJvdG9jb2wucmVwbGFjZShcIjpcIiwgXCJcIikpLCB0eXBlb2YgbmF2aWdhdG9yIDwgXCJ1XCIgJiYgZS5zZXRBdHRyaWJ1dGUoJEEsIG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9hZGRIZWFkZXJzID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgaWYgKCFiJDEociwgdGhpcy5nZXRDb25maWcoKS5wcm9wYWdhdGVUcmFjZUhlYWRlckNvcnNVcmxzKSkge1xuICAgICAgICB2YXIgbiA9IHt9O1xuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIG4pLCBPYmplY3Qua2V5cyhuKS5sZW5ndGggPiAwICYmIHRoaXMuX2RpYWcuZGVidWcoXCJoZWFkZXJzIGluamVjdCBza2lwcGVkIGR1ZSB0byBDT1JTIHBvbGljeVwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBSZXF1ZXN0KVxuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIGUuaGVhZGVycywge1xuICAgICAgICAgIHNldDogZnVuY3Rpb24odCwgaSwgcykge1xuICAgICAgICAgICAgcmV0dXJuIHQuc2V0KGksIHR5cGVvZiBzID09IFwic3RyaW5nXCIgPyBzIDogU3RyaW5nKHMpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgZWxzZSBpZiAoZS5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycylcbiAgICAgICAgeV8uaW5qZWN0KFRlLmFjdGl2ZSgpLCBlLmhlYWRlcnMsIHtcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIGksIHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0LnNldChpLCB0eXBlb2YgcyA9PSBcInN0cmluZ1wiID8gcyA6IFN0cmluZyhzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGVsc2UgaWYgKGUuaGVhZGVycyBpbnN0YW5jZW9mIE1hcClcbiAgICAgICAgeV8uaW5qZWN0KFRlLmFjdGl2ZSgpLCBlLmhlYWRlcnMsIHtcbiAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHQsIGksIHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0LnNldChpLCB0eXBlb2YgcyA9PSBcInN0cmluZ1wiID8gcyA6IFN0cmluZyhzKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIgbiA9IHt9O1xuICAgICAgICB5Xy5pbmplY3QoVGUuYWN0aXZlKCksIG4pLCBlLmhlYWRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBuLCBlLmhlYWRlcnMgfHwge30pO1xuICAgICAgfVxuICAgIH0sIG8ucHJvdG90eXBlLl9jbGVhclJlc291cmNlcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fdGFza3NDb3VudCA9PT0gMCAmJiB0aGlzLmdldENvbmZpZygpLmNsZWFyVGltaW5nUmVzb3VyY2VzICYmIChwZXJmb3JtYW5jZS5jbGVhclJlc291cmNlVGltaW5ncygpLCB0aGlzLl91c2VkUmVzb3VyY2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCkpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9jcmVhdGVTcGFuID0gZnVuY3Rpb24oZSwgcikge1xuICAgICAgdmFyIG47XG4gICAgICBpZiAociA9PT0gdm9pZCAwICYmIChyID0ge30pLCBaZShlLCB0aGlzLmdldENvbmZpZygpLmlnbm9yZVVybHMpKSB7XG4gICAgICAgIHRoaXMuX2RpYWcuZGVidWcoXCJpZ25vcmluZyBzcGFuIGFzIHVybCBtYXRjaGVzIGlnbm9yZWQgdXJsXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgdCA9IChyLm1ldGhvZCB8fCBcIkdFVFwiKS50b1VwcGVyQ2FzZSgpLCBpID0gXCJIVFRQIFwiICsgdDtcbiAgICAgIHJldHVybiB0aGlzLnRyYWNlci5zdGFydFNwYW4oaSwge1xuICAgICAgICBraW5kOiBldC5DTElFTlQsXG4gICAgICAgIGF0dHJpYnV0ZXM6IChuID0ge30sIG5beS5DT01QT05FTlRdID0gdGhpcy5tb2R1bGVOYW1lLCBuW3hBXSA9IHQsIG5ba0FdID0gZSwgbilcbiAgICAgIH0pO1xuICAgIH0sIG8ucHJvdG90eXBlLl9maW5kUmVzb3VyY2VBbmRBZGROZXR3b3JrRXZlbnRzID0gZnVuY3Rpb24oZSwgciwgbikge1xuICAgICAgdmFyIHQgPSByLmVudHJpZXM7XG4gICAgICBpZiAoIXQubGVuZ3RoKSB7XG4gICAgICAgIGlmICghcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIHQgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwicmVzb3VyY2VcIik7XG4gICAgICB9XG4gICAgICB2YXIgaSA9IFYoci5zcGFuVXJsLCByLnN0YXJ0VGltZSwgbiwgdCwgdGhpcy5fdXNlZFJlc291cmNlcywgXCJmZXRjaFwiKTtcbiAgICAgIGlmIChpLm1haW5SZXF1ZXN0KSB7XG4gICAgICAgIHZhciBzID0gaS5tYWluUmVxdWVzdDtcbiAgICAgICAgdGhpcy5fbWFya1Jlc291cmNlQXNVc2VkKHMpO1xuICAgICAgICB2YXIgZiA9IGkuY29yc1ByZUZsaWdodFJlcXVlc3Q7XG4gICAgICAgIGYgJiYgKHRoaXMuX2FkZENoaWxkU3BhbihlLCBmKSwgdGhpcy5fbWFya1Jlc291cmNlQXNVc2VkKGYpKSwgeSQxKGUsIHMsIHRoaXMuZ2V0Q29uZmlnKCkuaWdub3JlTmV0d29ya0V2ZW50cyk7XG4gICAgICB9XG4gICAgfSwgby5wcm90b3R5cGUuX21hcmtSZXNvdXJjZUFzVXNlZCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHRoaXMuX3VzZWRSZXNvdXJjZXMuYWRkKGUpO1xuICAgIH0sIG8ucHJvdG90eXBlLl9lbmRTcGFuID0gZnVuY3Rpb24oZSwgciwgbikge1xuICAgICAgdmFyIHQgPSB0aGlzLCBpID0gTyhEYXRlLm5vdygpKSwgcyA9IHBfKCk7XG4gICAgICB0aGlzLl9hZGRGaW5hbFNwYW5BdHRyaWJ1dGVzKGUsIG4pLCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgZjtcbiAgICAgICAgKGYgPSByLm9ic2VydmVyKSA9PT0gbnVsbCB8fCBmID09PSB2b2lkIDAgfHwgZi5kaXNjb25uZWN0KCksIHQuX2ZpbmRSZXNvdXJjZUFuZEFkZE5ldHdvcmtFdmVudHMoZSwgciwgcyksIHQuX3Rhc2tzQ291bnQtLSwgdC5fY2xlYXJSZXNvdXJjZXMoKSwgZS5lbmQoaSk7XG4gICAgICB9LCB2ZSk7XG4gICAgfSwgby5wcm90b3R5cGUuX3BhdGNoQ29uc3RydWN0b3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gdGhpcztcbiAgICAgIHJldHVybiBmdW5jdGlvbihyKSB7XG4gICAgICAgIHZhciBuID0gZTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGZvciAodmFyIGkgPSBbXSwgcyA9IDA7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspXG4gICAgICAgICAgICBpW3NdID0gYXJndW1lbnRzW3NdO1xuICAgICAgICAgIHZhciBmID0gdGhpcywgdSA9IEMoaVswXSBpbnN0YW5jZW9mIFJlcXVlc3QgPyBpWzBdLnVybCA6IFN0cmluZyhpWzBdKSkuaHJlZiwgYyA9IGlbMF0gaW5zdGFuY2VvZiBSZXF1ZXN0ID8gaVswXSA6IGlbMV0gfHwge30sIGggPSBuLl9jcmVhdGVTcGFuKHUsIGMpO1xuICAgICAgICAgIGlmICghaClcbiAgICAgICAgICAgIHJldHVybiByLmFwcGx5KHRoaXMsIGkpO1xuICAgICAgICAgIHZhciBnID0gbi5fcHJlcGFyZVNwYW5EYXRhKHUpO1xuICAgICAgICAgIG4uZ2V0Q29uZmlnKCkubWVhc3VyZVJlcXVlc3RTaXplICYmIHNlLmFwcGx5KHZvaWQgMCwgcGUoW10sIGhlKGkpLCBmYWxzZSkpLnRoZW4oZnVuY3Rpb24obCkge1xuICAgICAgICAgICAgbCAmJiBoLnNldEF0dHJpYnV0ZShFciwgbCk7XG4gICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24obCkge1xuICAgICAgICAgICAgbi5fZGlhZy53YXJuKFwiZ2V0RmV0Y2hCb2R5TGVuZ3RoXCIsIGwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGZ1bmN0aW9uIEUobCwgZCkge1xuICAgICAgICAgICAgbi5fYXBwbHlBdHRyaWJ1dGVzQWZ0ZXJGZXRjaChsLCBjLCBkKSwgbi5fZW5kU3BhbihsLCBnLCB7XG4gICAgICAgICAgICAgIHN0YXR1czogZC5zdGF0dXMgfHwgMCxcbiAgICAgICAgICAgICAgc3RhdHVzVGV4dDogZC5tZXNzYWdlLFxuICAgICAgICAgICAgICB1cmw6IHVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiB3KGwsIGQpIHtcbiAgICAgICAgICAgIG4uX2FwcGx5QXR0cmlidXRlc0FmdGVyRmV0Y2gobCwgYywgZCksIGQuc3RhdHVzID49IDIwMCAmJiBkLnN0YXR1cyA8IDQwMCA/IG4uX2VuZFNwYW4obCwgZywgZCkgOiBuLl9lbmRTcGFuKGwsIGcsIHtcbiAgICAgICAgICAgICAgc3RhdHVzOiBkLnN0YXR1cyxcbiAgICAgICAgICAgICAgc3RhdHVzVGV4dDogZC5zdGF0dXNUZXh0LFxuICAgICAgICAgICAgICB1cmw6IHVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBNKGwsIGQsIHYpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHZhciBqID0gdi5jbG9uZSgpLCBEID0gdi5jbG9uZSgpLCBSID0gai5ib2R5O1xuICAgICAgICAgICAgICBpZiAoUikge1xuICAgICAgICAgICAgICAgIHZhciBCID0gUi5nZXRSZWFkZXIoKSwgQSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgQi5yZWFkKCkudGhlbihmdW5jdGlvbihtKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBGID0gbS5kb25lO1xuICAgICAgICAgICAgICAgICAgICBGID8gdyhsLCBEKSA6IEEoKTtcbiAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKG0pIHtcbiAgICAgICAgICAgICAgICAgICAgRShsLCBtKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgQSgpO1xuICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICB3KGwsIHYpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgZCh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gTChsLCBkLCB2KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBFKGwsIHYpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgZCh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGwsIGQpIHtcbiAgICAgICAgICAgIHJldHVybiBUZS53aXRoKE1lLnNldFNwYW4oVGUuYWN0aXZlKCksIGgpLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG4uX2FkZEhlYWRlcnMoYywgdSksIG4uX3Rhc2tzQ291bnQrKywgci5hcHBseShmLCBjIGluc3RhbmNlb2YgUmVxdWVzdCA/IFtjXSA6IFt1LCBjXSkudGhlbihNLmJpbmQoZiwgaCwgbCksIEwuYmluZChmLCBoLCBkKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgfSwgby5wcm90b3R5cGUuX2FwcGx5QXR0cmlidXRlc0FmdGVyRmV0Y2ggPSBmdW5jdGlvbihlLCByLCBuKSB7XG4gICAgICB2YXIgdCA9IHRoaXMsIGkgPSB0aGlzLmdldENvbmZpZygpLmFwcGx5Q3VzdG9tQXR0cmlidXRlc09uU3BhbjtcbiAgICAgIGkgJiYgQihmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGkoZSwgciwgbik7XG4gICAgICB9LCBmdW5jdGlvbihzKSB7XG4gICAgICAgIHMgJiYgdC5fZGlhZy5lcnJvcihcImFwcGx5Q3VzdG9tQXR0cmlidXRlc09uU3BhblwiLCBzKTtcbiAgICAgIH0pO1xuICAgIH0sIG8ucHJvdG90eXBlLl9wcmVwYXJlU3BhbkRhdGEgPSBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgciA9IHBfKCksIG4gPSBbXTtcbiAgICAgIGlmICh0eXBlb2YgUGVyZm9ybWFuY2VPYnNlcnZlciAhPSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIHJldHVybiB7IGVudHJpZXM6IG4sIHN0YXJ0VGltZTogciwgc3BhblVybDogZSB9O1xuICAgICAgdmFyIHQgPSBuZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihmdW5jdGlvbihpKSB7XG4gICAgICAgIHZhciBzID0gaS5nZXRFbnRyaWVzKCk7XG4gICAgICAgIHMuZm9yRWFjaChmdW5jdGlvbihmKSB7XG4gICAgICAgICAgZi5pbml0aWF0b3JUeXBlID09PSBcImZldGNoXCIgJiYgZi5uYW1lID09PSBlICYmIG4ucHVzaChmKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0Lm9ic2VydmUoe1xuICAgICAgICBlbnRyeVR5cGVzOiBbXCJyZXNvdXJjZVwiXVxuICAgICAgfSksIHsgZW50cmllczogbiwgb2JzZXJ2ZXI6IHQsIHN0YXJ0VGltZTogciwgc3BhblVybDogZSB9O1xuICAgIH0sIG8ucHJvdG90eXBlLmVuYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKEgpIHtcbiAgICAgICAgdGhpcy5fZGlhZy53YXJuKFwidGhpcyBpbnN0cnVtZW50YXRpb24gaXMgaW50ZW5kZWQgZm9yIHdlYiB1c2FnZSBvbmx5LCBpdCBkb2VzIG5vdCBpbnN0cnVtZW50IE5vZGUuanMncyBmZXRjaCgpXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBVJDEoZmV0Y2gpICYmICh0aGlzLl91bndyYXAoaF8sIFwiZmV0Y2hcIiksIHRoaXMuX2RpYWcuZGVidWcoXCJyZW1vdmluZyBwcmV2aW91cyBwYXRjaCBmb3IgY29uc3RydWN0b3JcIikpLCB0aGlzLl93cmFwKGhfLCBcImZldGNoXCIsIHRoaXMuX3BhdGNoQ29uc3RydWN0b3IoKSk7XG4gICAgfSwgby5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgSCB8fCAodGhpcy5fdW53cmFwKGhfLCBcImZldGNoXCIpLCB0aGlzLl91c2VkUmVzb3VyY2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCkpO1xuICAgIH0sIG87XG4gIH0oVylcbik7XG5cbmV4cG9ydCB7IFNlIGFzIEZldGNoSW5zdHJ1bWVudGF0aW9uIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFBQSxTQUFTO0FBQ2xCLFNBQVMsS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLEdBQUksS0FBQUMsR0FBRyxLQUFLQyxHQUFJLEtBQUtDLFNBQVU7QUFDckgsU0FBUyxLQUFBQyxHQUFHLEtBQUtDLEdBQUssS0FBQUMsU0FBUztBQUMvQixTQUFTLEtBQUFDLEdBQUcsS0FBS0MsR0FBSyxLQUFBQyxHQUFHLEtBQUtDLEdBQUssS0FBQUMsVUFBUztBQUM1QyxTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLLFVBQVU7QUFFMUMsSUFBSUM7QUFBQSxDQUNILFNBQVNDLEdBQUc7QUFDWCxFQUFBQSxFQUFFLFlBQVksYUFBYUEsRUFBRSxrQkFBa0IsbUJBQW1CQSxFQUFFLG1CQUFtQjtBQUN6RixHQUFHRCxNQUFNQSxJQUFJLENBQUMsRUFBRTtBQUNoQixJQUFJRSxLQUFLLFNBQVNELEdBQUdFLEdBQUdDLEdBQUczQixHQUFHO0FBQzVCLFdBQVM0QixFQUFFQyxHQUFHO0FBQ1osV0FBT0EsYUFBYUYsSUFBSUUsSUFBSSxJQUFJRixFQUFFLFNBQVNHLEdBQUc7QUFDNUMsTUFBQUEsRUFBRUQsQ0FBQztBQUFBLElBQ0wsQ0FBQztBQUFBLEVBQ0g7QUFDQSxTQUFPLEtBQUtGLE1BQU1BLElBQUksVUFBVSxTQUFTRSxHQUFHQyxHQUFHO0FBQzdDLGFBQVNDLEVBQUVDLEdBQUc7QUFDWixVQUFJO0FBQ0YsVUFBRWhDLEVBQUUsS0FBS2dDLENBQUMsQ0FBQztBQUFBLE1BQ2IsU0FBU0MsR0FBRztBQUNWLFFBQUFILEVBQUVHLENBQUM7QUFBQSxNQUNMO0FBQUEs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QUc7QUFDTCxhQUFLLE1BQU0sS0FBSywrRkFBK0Y7QUFDL0c7QUFBQSxNQUNGO0FBQ0EsTUFBQXJDLEVBQUksS0FBSyxNQUFNLEtBQUssUUFBUUYsR0FBSSxPQUFPLEdBQUcsS0FBSyxNQUFNLE1BQU0seUNBQXlDLElBQUksS0FBSyxNQUFNQSxHQUFJLFNBQVMsS0FBSyxrQkFBa0IsQ0FBQztBQUFBLElBQzFKLEdBQUdjLEVBQUUsVUFBVSxVQUFVLFdBQVc7QUFDbEMsTUFBQXlCLE1BQU0sS0FBSyxRQUFRdkMsR0FBSSxPQUFPLEdBQUcsS0FBSyxpQkFBaUMsb0JBQUksUUFBUTtBQUFBLElBQ3JGLEdBQUdjO0FBQUEsRUFDTCxFQUFFWCxDQUFDO0FBQUE7IiwKICAibmFtZXMiOiBbInIiLCAiSkEiLCAicUEiLCAiWkEiLCAiJEEiLCAieV8iLCAiWmUiLCAieEEiLCAia0EiLCAicF8iLCAiTyIsICJFciIsICJoXyIsICJCIiwgIlUkMSIsICJXIiwgIlQiLCAieSQxIiwgIkMiLCAiYiQxIiwgIlYiLCAiTWUiLCAiVGUiLCAieSIsICJhIiwgIm5lIiwgIm8iLCAiZSIsICJuIiwgInQiLCAiaSIsICJzIiwgImMiLCAiaCIsICJmIiwgImFlIiwgImllIiwgIm9lIiwgIlUiLCAic2UiLCAidWUiLCAiZmUiLCAiYiIsICJsZSIsICJjZSIsICJrIiwgImRlIiwgImhlIiwgInBlIiwgIlMiLCAidmUiLCAiSCIsICJTZSIsICJ1IiwgImciLCAibCIsICJFIiwgImQiLCAiTSIsICJ2IiwgImoiLCAiRCIsICJSIiwgIkEiLCAiRiIsICJMIl0KfQo=
@@ -1,127 +0,0 @@
1
- import { Q as c } from "./index-nPWqtn7T.js";
2
- import { t as u } from "./SimpleSpanProcessor-DsaymkqA-CtD-GEtk.js";
3
- import { R as b, g as x, D as _, e as S, S as w, j as P, B as C, G as O, P as T, r as M, x as j, W as A, z as B } from "./SimpleSpanProcessor-DsaymkqA-CtD-GEtk.js";
4
- import { T as E, u as F, y as N, V as k, D, C as G, b as I, U as Q } from "./utils-BFjwGsZE-dHVj8huE.js";
5
- var l = function(n, r) {
6
- var t = typeof Symbol == "function" && n[Symbol.iterator];
7
- if (!t) return n;
8
- var e = t.call(n), a, o = [], i;
9
- try {
10
- for (; (r === void 0 || r-- > 0) && !(a = e.next()).done; ) o.push(a.value);
11
- } catch (s) {
12
- i = { error: s };
13
- } finally {
14
- try {
15
- a && !a.done && (t = e.return) && t.call(e);
16
- } finally {
17
- if (i) throw i.error;
18
- }
19
- }
20
- return o;
21
- }, p = function(n, r, t) {
22
- if (arguments.length === 2) for (var e = 0, a = r.length, o; e < a; e++)
23
- (o || !(e in r)) && (o || (o = Array.prototype.slice.call(r, 0, e)), o[e] = r[e]);
24
- return n.concat(o || Array.prototype.slice.call(r));
25
- }, f = (
26
- /** @class */
27
- function() {
28
- function n() {
29
- this._enabled = !1, this._currentContext = c;
30
- }
31
- return n.prototype._bindFunction = function(r, t) {
32
- r === void 0 && (r = c);
33
- var e = this, a = function() {
34
- for (var o = this, i = [], s = 0; s < arguments.length; s++)
35
- i[s] = arguments[s];
36
- return e.with(r, function() {
37
- return t.apply(o, i);
38
- });
39
- };
40
- return Object.defineProperty(a, "length", {
41
- enumerable: !1,
42
- configurable: !0,
43
- writable: !1,
44
- value: t.length
45
- }), a;
46
- }, n.prototype.active = function() {
47
- return this._currentContext;
48
- }, n.prototype.bind = function(r, t) {
49
- return r === void 0 && (r = this.active()), typeof t == "function" ? this._bindFunction(r, t) : t;
50
- }, n.prototype.disable = function() {
51
- return this._currentContext = c, this._enabled = !1, this;
52
- }, n.prototype.enable = function() {
53
- return this._enabled ? this : (this._enabled = !0, this._currentContext = c, this);
54
- }, n.prototype.with = function(r, t, e) {
55
- for (var a = [], o = 3; o < arguments.length; o++)
56
- a[o - 3] = arguments[o];
57
- var i = this._currentContext;
58
- this._currentContext = r || c;
59
- try {
60
- return t.call.apply(t, p([e], l(a), !1));
61
- } finally {
62
- this._currentContext = i;
63
- }
64
- }, n;
65
- }()
66
- ), h = /* @__PURE__ */ function() {
67
- var n = function(r, t) {
68
- return n = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, a) {
69
- e.__proto__ = a;
70
- } || function(e, a) {
71
- for (var o in a) Object.prototype.hasOwnProperty.call(a, o) && (e[o] = a[o]);
72
- }, n(r, t);
73
- };
74
- return function(r, t) {
75
- if (typeof t != "function" && t !== null)
76
- throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
77
- n(r, t);
78
- function e() {
79
- this.constructor = r;
80
- }
81
- r.prototype = t === null ? Object.create(t) : (e.prototype = t.prototype, new e());
82
- };
83
- }(), g = (
84
- /** @class */
85
- function(n) {
86
- h(r, n);
87
- function r(t) {
88
- t === void 0 && (t = {});
89
- var e = n.call(this, t) || this;
90
- if (t.contextManager)
91
- throw "contextManager should be defined in register method not in constructor";
92
- if (t.propagator)
93
- throw "propagator should be defined in register method not in constructor";
94
- return e;
95
- }
96
- return r.prototype.register = function(t) {
97
- t === void 0 && (t = {}), t.contextManager === void 0 && (t.contextManager = new f()), t.contextManager && t.contextManager.enable(), n.prototype.register.call(this, t);
98
- }, r;
99
- }(u)
100
- );
101
- export {
102
- b as AlwaysOffSampler,
103
- x as AlwaysOnSampler,
104
- u as BasicTracerProvider,
105
- _ as BatchSpanProcessor,
106
- S as ConsoleSpanExporter,
107
- w as ForceFlushState,
108
- P as NoopSpanProcessor,
109
- C as ParentBasedSampler,
110
- E as PerformanceTimingNames,
111
- O as RandomIdGenerator,
112
- T as SamplingDecision,
113
- M as SimpleSpanProcessor,
114
- j as Span,
115
- f as StackContextManager,
116
- A as TraceIdRatioBasedSampler,
117
- B as Tracer,
118
- g as WebTracerProvider,
119
- F as addSpanNetworkEvent,
120
- N as addSpanNetworkEvents,
121
- k as getResource,
122
- D as hasKey,
123
- G as parseUrl,
124
- I as shouldPropagateTraceHeaders,
125
- Q as sortResources
126
- };
127
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtMy1RRmItUFktIX57MDA2fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFEgYXMgUWkgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcbmltcG9ydCB7IHQgYXMgdGUgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItRHNheW1rcUEtIX57MDA0fX4uanMnO1xuZXhwb3J0IHsgUiBhcyBBbHdheXNPZmZTYW1wbGVyLCBnIGFzIEFsd2F5c09uU2FtcGxlciwgRCBhcyBCYXRjaFNwYW5Qcm9jZXNzb3IsIGUgYXMgQ29uc29sZVNwYW5FeHBvcnRlciwgUyBhcyBGb3JjZUZsdXNoU3RhdGUsIGogYXMgTm9vcFNwYW5Qcm9jZXNzb3IsIEIgYXMgUGFyZW50QmFzZWRTYW1wbGVyLCBHIGFzIFJhbmRvbUlkR2VuZXJhdG9yLCBQIGFzIFNhbXBsaW5nRGVjaXNpb24sIHIgYXMgU2ltcGxlU3BhblByb2Nlc3NvciwgeCBhcyBTcGFuLCBXIGFzIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlciwgeiBhcyBUcmFjZXIgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItRHNheW1rcUEtIX57MDA0fX4uanMnO1xuZXhwb3J0IHsgVCBhcyBQZXJmb3JtYW5jZVRpbWluZ05hbWVzLCB1IGFzIGFkZFNwYW5OZXR3b3JrRXZlbnQsIHkgYXMgYWRkU3Bhbk5ldHdvcmtFdmVudHMsIFYgYXMgZ2V0UmVzb3VyY2UsIEQgYXMgaGFzS2V5LCBDIGFzIHBhcnNlVXJsLCBiIGFzIHNob3VsZFByb3BhZ2F0ZVRyYWNlSGVhZGVycywgVSBhcyBzb3J0UmVzb3VyY2VzIH0gZnJvbSAnLi91dGlscy1CRmp3R3NaRS0hfnswMDh9fi5qcyc7XG5cbnZhciBsID0gZnVuY3Rpb24obiwgcikge1xuICB2YXIgZSA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIG5bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFlKSByZXR1cm4gbjtcbiAgdmFyIHQgPSBlLmNhbGwobiksIG8sIGEgPSBbXSwgcztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHIgPT09IHZvaWQgMCB8fCByLS0gPiAwKSAmJiAhKG8gPSB0Lm5leHQoKSkuZG9uZTsgKSBhLnB1c2goby52YWx1ZSk7XG4gIH0gY2F0Y2ggKGkpIHtcbiAgICBzID0geyBlcnJvcjogaSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBvICYmICFvLmRvbmUgJiYgKGUgPSB0LnJldHVybikgJiYgZS5jYWxsKHQpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAocykgdGhyb3cgcy5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGE7XG59LCBwID0gZnVuY3Rpb24obiwgciwgZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgdCA9IDAsIG8gPSByLmxlbmd0aCwgYTsgdCA8IG87IHQrKylcbiAgICAoYSB8fCAhKHQgaW4gcikpICYmIChhIHx8IChhID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgdCkpLCBhW3RdID0gclt0XSk7XG4gIHJldHVybiBuLmNvbmNhdChhIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn0sIGYgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gbigpIHtcbiAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZSwgdGhpcy5fY3VycmVudENvbnRleHQgPSBRaTtcbiAgICB9XG4gICAgcmV0dXJuIG4ucHJvdG90eXBlLl9iaW5kRnVuY3Rpb24gPSBmdW5jdGlvbihyLCBlKSB7XG4gICAgICByID09PSB2b2lkIDAgJiYgKHIgPSBRaSk7XG4gICAgICB2YXIgdCA9IHRoaXMsIG8gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yICh2YXIgYSA9IHRoaXMsIHMgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIHQud2l0aChyLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gZS5hcHBseShhLCBzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImxlbmd0aFwiLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IGUubGVuZ3RoXG4gICAgICB9KSwgbztcbiAgICB9LCBuLnByb3RvdHlwZS5hY3RpdmUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q29udGV4dDtcbiAgICB9LCBuLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24ociwgZSkge1xuICAgICAgcmV0dXJuIHIgPT09IHZvaWQgMCAmJiAociA9IHRoaXMuYWN0aXZlKCkpLCB0eXBlb2YgZSA9PSBcImZ1bmN0aW9uXCIgPyB0aGlzLl9iaW5kRnVuY3Rpb24ociwgZSkgOiBlO1xuICAgIH0sIG4ucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q29udGV4dCA9IFFpLCB0aGlzLl9lbmFibGVkID0gZmFsc2UsIHRoaXM7XG4gICAgfSwgbi5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCA/IHRoaXMgOiAodGhpcy5fZW5hYmxlZCA9IHRydWUsIHRoaXMuX2N1cnJlbnRDb250ZXh0ID0gUWksIHRoaXMpO1xuICAgIH0sIG4ucHJvdG90eXBlLndpdGggPSBmdW5jdGlvbihyLCBlLCB0KSB7XG4gICAgICBmb3IgKHZhciBvID0gW10sIGEgPSAzOyBhIDwgYXJndW1lbnRzLmxlbmd0aDsgYSsrKVxuICAgICAgICBvW2EgLSAzXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIHZhciBzID0gdGhpcy5fY3VycmVudENvbnRleHQ7XG4gICAgICB0aGlzLl9jdXJyZW50Q29udGV4dCA9IHIgfHwgUWk7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gZS5jYWxsLmFwcGx5KGUsIHAoW3RdLCBsKG8pLCAhMSkpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5fY3VycmVudENvbnRleHQgPSBzO1xuICAgICAgfVxuICAgIH0sIG47XG4gIH0oKVxuKSwgZCA9IC8qIEBfX1BVUkVfXyAqLyBmdW5jdGlvbigpIHtcbiAgdmFyIG4gPSBmdW5jdGlvbihyLCBlKSB7XG4gICAgcmV0dXJuIG4gPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbih0LCBvKSB7XG4gICAgICB0Ll9fcHJvdG9fXyA9IG87XG4gICAgfSB8fCBmdW5jdGlvbih0LCBvKSB7XG4gICAgICBmb3IgKHZhciBhIGluIG8pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBhKSAmJiAodFthXSA9IG9bYV0pO1xuICAgIH0sIG4ociwgZSk7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbihyLCBlKSB7XG4gICAgaWYgKHR5cGVvZiBlICE9IFwiZnVuY3Rpb25cIiAmJiBlICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoZSkgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIG4ociwgZSk7XG4gICAgZnVuY3Rpb24gdCgpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSByO1xuICAgIH1cbiAgICByLnByb3RvdHlwZSA9IGUgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGUpIDogKHQucHJvdG90eXBlID0gZS5wcm90b3R5cGUsIG5ldyB0KCkpO1xuICB9O1xufSgpLCB2ID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKG4pIHtcbiAgICBkKHIsIG4pO1xuICAgIGZ1bmN0aW9uIHIoZSkge1xuICAgICAgZSA9PT0gdm9pZCAwICYmIChlID0ge30pO1xuICAgICAgdmFyIHQgPSBuLmNhbGwodGhpcywgZSkgfHwgdGhpcztcbiAgICAgIGlmIChlLmNvbnRleHRNYW5hZ2VyKVxuICAgICAgICB0aHJvdyBcImNvbnRleHRNYW5hZ2VyIHNob3VsZCBiZSBkZWZpbmVkIGluIHJlZ2lzdGVyIG1ldGhvZCBub3QgaW4gY29uc3RydWN0b3JcIjtcbiAgICAgIGlmIChlLnByb3BhZ2F0b3IpXG4gICAgICAgIHRocm93IFwicHJvcGFnYXRvciBzaG91bGQgYmUgZGVmaW5lZCBpbiByZWdpc3RlciBtZXRob2Qgbm90IGluIGNvbnN0cnVjdG9yXCI7XG4gICAgICByZXR1cm4gdDtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24oZSkge1xuICAgICAgZSA9PT0gdm9pZCAwICYmIChlID0ge30pLCBlLmNvbnRleHRNYW5hZ2VyID09PSB2b2lkIDAgJiYgKGUuY29udGV4dE1hbmFnZXIgPSBuZXcgZigpKSwgZS5jb250ZXh0TWFuYWdlciAmJiBlLmNvbnRleHRNYW5hZ2VyLmVuYWJsZSgpLCBuLnByb3RvdHlwZS5yZWdpc3Rlci5jYWxsKHRoaXMsIGUpO1xuICAgIH0sIHI7XG4gIH0odGUpXG4pO1xuXG5leHBvcnQgeyB0ZSBhcyBCYXNpY1RyYWNlclByb3ZpZGVyLCBmIGFzIFN0YWNrQ29udGV4dE1hbmFnZXIsIHYgYXMgV2ViVHJhY2VyUHJvdmlkZXIgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLFNBQVU7QUFDeEIsU0FBUyxLQUFLQyxTQUFVO0FBQ3hCLFNBQWMsS0FBTEMsR0FBNEIsS0FBTEMsR0FBMkIsS0FBTEMsR0FBOEIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBMkIsS0FBTEMsR0FBNkIsS0FBTEMsR0FB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LE1BQU0sT0FBTyxPQUFPLE9BQU9BLENBQUMsS0FBS2lCLEVBQUUsWUFBWWpCLEVBQUUsV0FBVyxJQUFJaUIsRUFBRTtBQUFBLEVBQ2xGO0FBQ0YsRUFBRSxHQUFHTTtBQUFBO0FBQUEsRUFFSCxTQUFTLEdBQUc7QUFDVixJQUFBRCxFQUFFLEdBQUcsQ0FBQztBQUNOLGFBQVMsRUFBRXRCLEdBQUc7QUFDWixNQUFBQSxNQUFNLFdBQVdBLElBQUksQ0FBQztBQUN0QixVQUFJaUIsSUFBSSxFQUFFLEtBQUssTUFBTWpCLENBQUMsS0FBSztBQUMzQixVQUFJQSxFQUFFO0FBQ0osY0FBTTtBQUNSLFVBQUlBLEVBQUU7QUFDSixjQUFNO0FBQ1IsYUFBT2lCO0FBQUEsSUFDVDtBQUNBLFdBQU8sRUFBRSxVQUFVLFdBQVcsU0FBU2pCLEdBQUc7QUFDeEMsTUFBQUEsTUFBTSxXQUFXQSxJQUFJLENBQUMsSUFBSUEsRUFBRSxtQkFBbUIsV0FBV0EsRUFBRSxpQkFBaUIsSUFBSSxFQUFFLElBQUlBLEVBQUUsa0JBQWtCQSxFQUFFLGVBQWUsT0FBTyxHQUFHLEVBQUUsVUFBVSxTQUFTLEtBQUssTUFBTUEsQ0FBQztBQUFBLElBQ3pLLEdBQUc7QUFBQSxFQUNMLEVBQUVKLENBQUU7QUFBQTsiLAogICJuYW1lcyI6IFsiUWkiLCAidGUiLCAiUiIsICJnIiwgIkQiLCAiZSIsICJTIiwgImoiLCAiQiIsICJHIiwgIlAiLCAiciIsICJ4IiwgIlciLCAieiIsICJUIiwgInUiLCAieSIsICJWIiwgIkMiLCAiYiIsICJVIiwgInQiLCAibyIsICJhIiwgInMiLCAiaSIsICJkIiwgInYiXQp9Cg==