@getopenpay/openpay-js 0.5.14 → 0.5.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ExportResult-B-YLKMaU.js → ExportResult-BacsqwKA.js} +1 -1
- package/dist/{Resource-qJjZ52YV.js → Resource-CUhg8dEK.js} +6 -6
- package/dist/SimpleSpanProcessor-BtNzab2_.js +910 -0
- package/dist/_commonjsHelpers-CdLE1o9f.js +30 -0
- package/dist/detect-resources-6fNItMfQ.js +862 -0
- package/dist/{diag-api-CCLNzlUs.js → diag-api-BaoBTidT.js} +2 -2
- package/dist/index-2Dpi7rDE.js +127 -0
- package/dist/index-BkFKN09r.js +18 -0
- package/dist/index-BohOdvI5.js +6718 -0
- package/dist/index-Cb6WFqJj.js +1012 -0
- package/dist/index-CfhP31jP.js +147 -0
- package/dist/index-CmjNpx1j.js +1619 -0
- package/dist/index-CsjF5pDg.js +6 -0
- package/dist/index-Dcezwdcs.js +7000 -0
- package/dist/index-DhyFkarT.js +430 -0
- package/dist/index-t_WVTb5S.js +28 -0
- package/dist/index.d.ts +27 -2
- package/dist/index.es.js +2 -2
- package/dist/index.umd.js +40 -40
- package/dist/lifecycle-D1BdEbZs.js +119 -0
- package/dist/{metrics-api-DtBUlvdW.js → metrics-api-CsLzDvjo.js} +28 -28
- package/dist/sdk-info-ChuKu8zW.js +285 -0
- package/dist/suppress-tracing-Cu47NVB2.js +17 -0
- package/dist/url-CgnFZYDI.js +798 -0
- package/dist/utils-BJ1UAbM8.js +101 -0
- package/dist/utils-De78ey-v.js +12 -0
- package/dist/utils-Dius2V8g.js +270 -0
- package/package.json +4 -4
- package/dist/SimpleSpanProcessor-BwonVfHA.js +0 -957
- package/dist/_commonjsHelpers-f76XedMs.js +0 -25
- package/dist/detect-resources-Bi3A_QRE.js +0 -854
- package/dist/index-BIZrcIxl.js +0 -19
- package/dist/index-Bs_K1BID.js +0 -431
- package/dist/index-CRez6biP.js +0 -150
- package/dist/index-Cmp0890G.js +0 -1599
- package/dist/index-DCgcMBKE.js +0 -52
- package/dist/index-DDPV-DRN.js +0 -7040
- package/dist/index-SVnUIdm3.js +0 -130
- package/dist/index-UHBeywOG.js +0 -330
- package/dist/index-sp5MCjj0.js +0 -6685
- package/dist/index-wETKGbBW.js +0 -830
- package/dist/lifecycle-BjQ-7GLm.js +0 -119
- package/dist/sdk-info-Ved2vK62.js +0 -484
- package/dist/url-C-ZmHCbX.js +0 -797
- package/dist/utils-CX5YT7yI.js +0 -14
- package/dist/utils-DwFEBfnB.js +0 -142
- package/dist/utils-wV4fOQ_R.js +0 -381
package/dist/utils-CX5YT7yI.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
var l = typeof globalThis == "object" ? globalThis : typeof self == "object" ? self : typeof window == "object" ? window : typeof global == "object" ? global : {};
|
|
2
|
-
// @__NO_SIDE_EFFECTS__
|
|
3
|
-
function b(t) {
|
|
4
|
-
for (var r = {}, a = t.length, e = 0; e < a; e++) {
|
|
5
|
-
var o = t[e];
|
|
6
|
-
o && (r[String(o).toUpperCase().replace(/[-.]/g, "_")] = o);
|
|
7
|
-
}
|
|
8
|
-
return r;
|
|
9
|
-
}
|
|
10
|
-
export {
|
|
11
|
-
l as _,
|
|
12
|
-
b as c
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidXRpbHMtIX57MDBjfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyBVcGRhdGVzIHRvIHRoaXMgZmlsZSBzaG91bGQgYWxzbyBiZSByZXBsaWNhdGVkIHRvIEBvcGVudGVsZW1ldHJ5L2FwaSB0b28uXG4vKipcbiAqIC0gZ2xvYmFsVGhpcyAoTmV3IHN0YW5kYXJkKVxuICogLSBzZWxmIChXaWxsIHJldHVybiB0aGUgY3VycmVudCB3aW5kb3cgaW5zdGFuY2UgZm9yIHN1cHBvcnRlZCBicm93c2VycylcbiAqIC0gd2luZG93IChmYWxsYmFjayBmb3Igb2xkZXIgYnJvd3NlciBpbXBsZW1lbnRhdGlvbnMpXG4gKiAtIGdsb2JhbCAoTm9kZUpTIGltcGxlbWVudGF0aW9uKVxuICogLSA8b2JqZWN0PiAoV2hlbiBhbGwgZWxzZSBmYWlscylcbiAqL1xuLyoqIG9ubHkgZ2xvYmFscyB0aGF0IGNvbW1vbiB0byBub2RlIGFuZCBicm93c2VycyBhcmUgYWxsb3dlZCAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vZGUvbm8tdW5zdXBwb3J0ZWQtZmVhdHVyZXMvZXMtYnVpbHRpbnMsIG5vLXVuZGVmXG52YXIgX2dsb2JhbFRoaXMgPSB0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCdcbiAgICA/IGdsb2JhbFRoaXNcbiAgICA6IHR5cGVvZiBzZWxmID09PSAnb2JqZWN0J1xuICAgICAgICA/IHNlbGZcbiAgICAgICAgOiB0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyB3aW5kb3dcbiAgICAgICAgICAgIDogdHlwZW9mIGdsb2JhbCA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICA/IGdsb2JhbFxuICAgICAgICAgICAgICAgIDoge307XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENyZWF0ZXMgYSBjb25zdCBtYXAgZnJvbSB0aGUgZ2l2ZW4gdmFsdWVzXG4gKiBAcGFyYW0gdmFsdWVzIC0gQW4gYXJyYXkgb2YgdmFsdWVzIHRvIGJlIHVzZWQgYXMga2V5cyBhbmQgdmFsdWVzIGluIHRoZSBtYXAuXG4gKiBAcmV0dXJucyBBIHBvcHVsYXRlZCB2ZXJzaW9uIG9mIHRoZSBtYXAgd2l0aCB0aGUgdmFsdWVzIGFuZCBrZXlzIGRlcml2ZWQgZnJvbSB0aGUgdmFsdWVzLlxuICovXG4vKiNfX05PX1NJREVfRUZGRUNUU19fKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbnN0TWFwKHZhbHVlcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3QsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB2YXIgcmVzID0ge307XG4gICAgdmFyIGxlbiA9IHZhbHVlcy5sZW5ndGg7XG4gICAgZm9yICh2YXIgbHAgPSAwOyBscCA8IGxlbjsgbHArKykge1xuICAgICAgICB2YXIgdmFsID0gdmFsdWVzW2xwXTtcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgcmVzW1N0cmluZyh2YWwpLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgvWy0uXS9nLCAnXycpXSA9IHZhbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgeyBfZ2xvYmFsVGhpcyBhcyBfLCBjcmVhdGVDb25zdE1hcCBhcyBjIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBeUJBLElBQUlBLElBQWMsT0FBTyxjQUFlLFdBQ2xDLGFBQ0EsT0FBTyxRQUFTLFdBQ1osT0FDQSxPQUFPLFVBQVcsV0FDZCxTQUNBLE9BQU8sVUFBVyxXQUNkLFNBQ0EsQ0FBQztBQUFBO0FBdUJuQixTQUFTQyxFQUFlQyxHQUFRO0FBSTVCLFdBRklDLElBQU0sQ0FBQyxHQUNQQyxJQUFNRixFQUFPLFFBQ1JHLElBQUssR0FBR0EsSUFBS0QsR0FBS0MsS0FBTTtBQUM3QixRQUFJQyxJQUFNSixFQUFPRyxDQUFFO0FBQ25CLElBQUlDLE1BQ0FILEVBQUksT0FBT0csQ0FBRyxFQUFFLFlBQVksRUFBRSxRQUFRLFNBQVMsR0FBRyxDQUFDLElBQUlBO0FBQUEsRUFFL0Q7QUFDQSxTQUFPSDtBQUNYOyIsCiAgIm5hbWVzIjogWyJfZ2xvYmFsVGhpcyIsICJjcmVhdGVDb25zdE1hcCIsICJ2YWx1ZXMiLCAicmVzIiwgImxlbiIsICJscCIsICJ2YWwiXQp9Cg==
|
package/dist/utils-DwFEBfnB.js
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { S as C, a as p, h as _, t as O, u as h } from "./url-C-ZmHCbX.js";
|
|
2
|
-
var T;
|
|
3
|
-
(function(t) {
|
|
4
|
-
t.CONNECT_END = "connectEnd", t.CONNECT_START = "connectStart", t.DECODED_BODY_SIZE = "decodedBodySize", t.DOM_COMPLETE = "domComplete", t.DOM_CONTENT_LOADED_EVENT_END = "domContentLoadedEventEnd", t.DOM_CONTENT_LOADED_EVENT_START = "domContentLoadedEventStart", t.DOM_INTERACTIVE = "domInteractive", t.DOMAIN_LOOKUP_END = "domainLookupEnd", t.DOMAIN_LOOKUP_START = "domainLookupStart", t.ENCODED_BODY_SIZE = "encodedBodySize", t.FETCH_START = "fetchStart", t.LOAD_EVENT_END = "loadEventEnd", t.LOAD_EVENT_START = "loadEventStart", t.NAVIGATION_START = "navigationStart", t.REDIRECT_END = "redirectEnd", t.REDIRECT_START = "redirectStart", t.REQUEST_START = "requestStart", t.RESPONSE_END = "responseEnd", t.RESPONSE_START = "responseStart", t.SECURE_CONNECTION_START = "secureConnectionStart", t.UNLOAD_EVENT_END = "unloadEventEnd", t.UNLOAD_EVENT_START = "unloadEventStart";
|
|
5
|
-
})(T || (T = {}));
|
|
6
|
-
var v;
|
|
7
|
-
function L() {
|
|
8
|
-
return v || (v = document.createElement("a")), v;
|
|
9
|
-
}
|
|
10
|
-
function D(t, n) {
|
|
11
|
-
return n in t;
|
|
12
|
-
}
|
|
13
|
-
function S(t, n, e, d) {
|
|
14
|
-
var E = void 0, o = void 0;
|
|
15
|
-
D(e, n) && typeof e[n] == "number" && (E = e[n]);
|
|
16
|
-
var a = d || T.FETCH_START;
|
|
17
|
-
if (D(e, a) && typeof e[a] == "number" && (o = e[a]), E !== void 0 && o !== void 0 && E >= o)
|
|
18
|
-
return t.addEvent(n, E), t;
|
|
19
|
-
}
|
|
20
|
-
function x(t, n, e) {
|
|
21
|
-
e === void 0 && (e = !1), e || (S(t, T.FETCH_START, n), S(t, T.DOMAIN_LOOKUP_START, n), S(t, T.DOMAIN_LOOKUP_END, n), S(t, T.CONNECT_START, n), D(n, "name") && n.name.startsWith("https:") && S(t, T.SECURE_CONNECTION_START, n), S(t, T.CONNECT_END, n), S(t, T.REQUEST_START, n), S(t, T.RESPONSE_START, n), S(t, T.RESPONSE_END, n));
|
|
22
|
-
var d = n[T.ENCODED_BODY_SIZE];
|
|
23
|
-
d !== void 0 && t.setAttribute(C, d);
|
|
24
|
-
var E = n[T.DECODED_BODY_SIZE];
|
|
25
|
-
E !== void 0 && d !== E && t.setAttribute(p, E);
|
|
26
|
-
}
|
|
27
|
-
function I(t) {
|
|
28
|
-
return t.slice().sort(function(n, e) {
|
|
29
|
-
var d = n[T.FETCH_START], E = e[T.FETCH_START];
|
|
30
|
-
return d > E ? 1 : d < E ? -1 : 0;
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
function A() {
|
|
34
|
-
return typeof location < "u" ? location.origin : void 0;
|
|
35
|
-
}
|
|
36
|
-
function b(t, n, e, d, E, o) {
|
|
37
|
-
E === void 0 && (E = /* @__PURE__ */ new WeakSet());
|
|
38
|
-
var a = R(t);
|
|
39
|
-
t = a.toString();
|
|
40
|
-
var u = c(t, n, e, d, E, o);
|
|
41
|
-
if (u.length === 0)
|
|
42
|
-
return {
|
|
43
|
-
mainRequest: void 0
|
|
44
|
-
};
|
|
45
|
-
if (u.length === 1)
|
|
46
|
-
return {
|
|
47
|
-
mainRequest: u[0]
|
|
48
|
-
};
|
|
49
|
-
var i = I(u);
|
|
50
|
-
if (a.origin !== A() && i.length > 1) {
|
|
51
|
-
var r = i[0], N = y(i, r[T.RESPONSE_END], e), f = r[T.RESPONSE_END], l = N[T.FETCH_START];
|
|
52
|
-
return l < f && (N = r, r = void 0), {
|
|
53
|
-
corsPreFlightRequest: r,
|
|
54
|
-
mainRequest: N
|
|
55
|
-
};
|
|
56
|
-
} else
|
|
57
|
-
return {
|
|
58
|
-
mainRequest: u[0]
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
function y(t, n, e) {
|
|
62
|
-
for (var d = _(e), E = _(O(n)), o = t[1], a, u = t.length, i = 1; i < u; i++) {
|
|
63
|
-
var r = t[i], N = _(O(r[T.FETCH_START])), f = _(O(r[T.RESPONSE_END])), l = d - f;
|
|
64
|
-
N >= E && (!a || l < a) && (a = l, o = r);
|
|
65
|
-
}
|
|
66
|
-
return o;
|
|
67
|
-
}
|
|
68
|
-
function c(t, n, e, d, E, o) {
|
|
69
|
-
var a = _(n), u = _(e), i = d.filter(function(r) {
|
|
70
|
-
var N = _(O(r[T.FETCH_START])), f = _(O(r[T.RESPONSE_END]));
|
|
71
|
-
return r.initiatorType.toLowerCase() === (o || "xmlhttprequest") && r.name === t && N >= a && f <= u;
|
|
72
|
-
});
|
|
73
|
-
return i.length > 0 && (i = i.filter(function(r) {
|
|
74
|
-
return !E.has(r);
|
|
75
|
-
})), i;
|
|
76
|
-
}
|
|
77
|
-
function R(t) {
|
|
78
|
-
if (typeof URL == "function")
|
|
79
|
-
return new URL(t, typeof document < "u" ? document.baseURI : typeof location < "u" ? location.href : void 0);
|
|
80
|
-
var n = L();
|
|
81
|
-
return n.href = t, n;
|
|
82
|
-
}
|
|
83
|
-
function B(t) {
|
|
84
|
-
var n = R(t);
|
|
85
|
-
return n.href;
|
|
86
|
-
}
|
|
87
|
-
function M(t, n) {
|
|
88
|
-
if (t.nodeType === Node.DOCUMENT_NODE)
|
|
89
|
-
return "/";
|
|
90
|
-
var e = H(t, n);
|
|
91
|
-
if (n && e.indexOf("@id") > 0)
|
|
92
|
-
return e;
|
|
93
|
-
var d = "";
|
|
94
|
-
return t.parentNode && (d += M(t.parentNode, !1)), d += e, d;
|
|
95
|
-
}
|
|
96
|
-
function U(t) {
|
|
97
|
-
if (!t.parentNode)
|
|
98
|
-
return 0;
|
|
99
|
-
var n = [t.nodeType];
|
|
100
|
-
t.nodeType === Node.CDATA_SECTION_NODE && n.push(Node.TEXT_NODE);
|
|
101
|
-
var e = Array.from(t.parentNode.childNodes);
|
|
102
|
-
return e = e.filter(function(d) {
|
|
103
|
-
var E = d.localName;
|
|
104
|
-
return n.indexOf(d.nodeType) >= 0 && E === t.localName;
|
|
105
|
-
}), e.length >= 1 ? e.indexOf(t) + 1 : 0;
|
|
106
|
-
}
|
|
107
|
-
function H(t, n) {
|
|
108
|
-
var e = t.nodeType, d = U(t), E = "";
|
|
109
|
-
if (e === Node.ELEMENT_NODE) {
|
|
110
|
-
var o = t.getAttribute("id");
|
|
111
|
-
if (n && o)
|
|
112
|
-
return '//*[@id="' + o + '"]';
|
|
113
|
-
E = t.localName;
|
|
114
|
-
} else if (e === Node.TEXT_NODE || e === Node.CDATA_SECTION_NODE)
|
|
115
|
-
E = "text()";
|
|
116
|
-
else if (e === Node.COMMENT_NODE)
|
|
117
|
-
E = "comment()";
|
|
118
|
-
else
|
|
119
|
-
return "";
|
|
120
|
-
return E && d > 1 ? "/" + E + "[" + d + "]" : "/" + E;
|
|
121
|
-
}
|
|
122
|
-
function s(t, n) {
|
|
123
|
-
var e = n || [];
|
|
124
|
-
(typeof e == "string" || e instanceof RegExp) && (e = [e]);
|
|
125
|
-
var d = R(t);
|
|
126
|
-
return d.origin === A() ? !0 : e.some(function(E) {
|
|
127
|
-
return h(t, E);
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
export {
|
|
131
|
-
T as P,
|
|
132
|
-
S as a,
|
|
133
|
-
x as b,
|
|
134
|
-
b as c,
|
|
135
|
-
I as d,
|
|
136
|
-
M as g,
|
|
137
|
-
D as h,
|
|
138
|
-
B as n,
|
|
139
|
-
R as p,
|
|
140
|
-
s
|
|
141
|
-
};
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidXRpbHMtIX57MDA4fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFMgYXMgU0VNQVRUUlNfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSCwgYSBhcyBTRU1BVFRSU19IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCwgaCBhcyBoclRpbWVUb05hbm9zZWNvbmRzLCB0IGFzIHRpbWVJbnB1dFRvSHJUaW1lLCB1IGFzIHVybE1hdGNoZXMgfSBmcm9tICcuL3VybC0hfnswMDl9fi5qcyc7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgUGVyZm9ybWFuY2VUaW1pbmdOYW1lcztcbihmdW5jdGlvbiAoUGVyZm9ybWFuY2VUaW1pbmdOYW1lcykge1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJDT05ORUNUX0VORFwiXSA9IFwiY29ubmVjdEVuZFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJDT05ORUNUX1NUQVJUXCJdID0gXCJjb25uZWN0U3RhcnRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiREVDT0RFRF9CT0RZX1NJWkVcIl0gPSBcImRlY29kZWRCb2R5U2l6ZVwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJET01fQ09NUExFVEVcIl0gPSBcImRvbUNvbXBsZXRlXCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIkRPTV9DT05URU5UX0xPQURFRF9FVkVOVF9FTkRcIl0gPSBcImRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJET01fQ09OVEVOVF9MT0FERURfRVZFTlRfU1RBUlRcIl0gPSBcImRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0XCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIkRPTV9JTlRFUkFDVElWRVwiXSA9IFwiZG9tSW50ZXJhY3RpdmVcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiRE9NQUlOX0xPT0tVUF9FTkRcIl0gPSBcImRvbWFpbkxvb2t1cEVuZFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJET01BSU5fTE9PS1VQX1NUQVJUXCJdID0gXCJkb21haW5Mb29rdXBTdGFydFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJFTkNPREVEX0JPRFlfU0laRVwiXSA9IFwiZW5jb2RlZEJvZHlTaXplXCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIkZFVENIX1NUQVJUXCJdID0gXCJmZXRjaFN0YXJ0XCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIkxPQURfRVZFTlRfRU5EXCJdID0gXCJsb2FkRXZlbnRFbmRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiTE9BRF9FVkVOVF9TVEFSVFwiXSA9IFwibG9hZEV2ZW50U3RhcnRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiTkFWSUdBVElPTl9TVEFSVFwiXSA9IFwibmF2aWdhdGlvblN0YXJ0XCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIlJFRElSRUNUX0VORFwiXSA9IFwicmVkaXJlY3RFbmRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiUkVESVJFQ1RfU1RBUlRcIl0gPSBcInJlZGlyZWN0U3RhcnRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiUkVRVUVTVF9TVEFSVFwiXSA9IFwicmVxdWVzdFN0YXJ0XCI7XG4gICAgUGVyZm9ybWFuY2VUaW1pbmdOYW1lc1tcIlJFU1BPTlNFX0VORFwiXSA9IFwicmVzcG9uc2VFbmRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiUkVTUE9OU0VfU1RBUlRcIl0gPSBcInJlc3BvbnNlU3RhcnRcIjtcbiAgICBQZXJmb3JtYW5jZVRpbWluZ05hbWVzW1wiU0VDVVJFX0NPTk5FQ1RJT05fU1RBUlRcIl0gPSBcInNlY3VyZUNvbm5lY3Rpb25TdGFydFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJVTkxPQURfRVZFTlRfRU5EXCJdID0gXCJ1bmxvYWRFdmVudEVuZFwiO1xuICAgIFBlcmZvcm1hbmNlVGltaW5nTmFtZXNbXCJVTkxPQURfRVZFTlRfU1RBUlRcIl0gPSBcInVubG9hZEV2ZW50U3RhcnRcIjtcbn0pKFBlcmZvcm1hbmNlVGltaW5nTmFtZXMgfHwgKFBlcmZvcm1hbmNlVGltaW5nTmFtZXMgPSB7fSkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8gVXNlZCB0byBub3JtYWxpemUgcmVsYXRpdmUgVVJMc1xudmFyIHVybE5vcm1hbGl6aW5nQW5jaG9yO1xuZnVuY3Rpb24gZ2V0VXJsTm9ybWFsaXppbmdBbmNob3IoKSB7XG4gICAgaWYgKCF1cmxOb3JtYWxpemluZ0FuY2hvcikge1xuICAgICAgICB1cmxOb3JtYWxpemluZ0FuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICB9XG4gICAgcmV0dXJuIHVybE5vcm1hbGl6aW5nQW5jaG9yO1xufVxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gYmUgYWJsZSB0byB1c2UgZW51bSBhcyB0eXBlZCBrZXkgaW4gdHlwZSBhbmQgaW4gaW50ZXJmYWNlIHdoZW4gdXNpbmcgZm9yRWFjaFxuICogQHBhcmFtIG9ialxuICogQHBhcmFtIGtleVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gaGFzS2V5KG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIGtleSBpbiBvYmo7XG59XG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3Igc3RhcnRpbmcgYW4gZXZlbnQgb24gc3BhbiBiYXNlZCBvbiB7QGxpbmsgUGVyZm9ybWFuY2VFbnRyaWVzfVxuICogQHBhcmFtIHNwYW5cbiAqIEBwYXJhbSBwZXJmb3JtYW5jZU5hbWUgbmFtZSBvZiBwZXJmb3JtYW5jZSBlbnRyeSBmb3IgdGltZSBzdGFydFxuICogQHBhcmFtIGVudHJpZXNcbiAqIEBwYXJhbSByZWZQZXJmTmFtZSBuYW1lIG9mIHBlcmZvcm1hbmNlIGVudHJ5IHRvIHVzZSBmb3IgcmVmZXJlbmNlXG4gKi9cbmZ1bmN0aW9uIGFkZFNwYW5OZXR3b3JrRXZlbnQoc3BhbiwgcGVyZm9ybWFuY2VOYW1lLCBlbnRyaWVzLCByZWZQZXJmTmFtZSkge1xuICAgIHZhciBwZXJmVGltZSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgcmVmVGltZSA9IHVuZGVmaW5lZDtcbiAgICBpZiAoaGFzS2V5KGVudHJpZXMsIHBlcmZvcm1hbmNlTmFtZSkgJiZcbiAgICAgICAgdHlwZW9mIGVudHJpZXNbcGVyZm9ybWFuY2VOYW1lXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcGVyZlRpbWUgPSBlbnRyaWVzW3BlcmZvcm1hbmNlTmFtZV07XG4gICAgfVxuICAgIHZhciByZWZOYW1lID0gcmVmUGVyZk5hbWUgfHwgUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5GRVRDSF9TVEFSVDtcbiAgICAvLyBVc2UgYSByZWZlcmVuY2UgdGltZSB3aGljaCBpcyB0aGUgZWFybGllc3QgcG9zc2libGUgdmFsdWUgc28gdGhhdCB0aGUgcGVyZm9ybWFuY2UgdGltaW5ncyB0aGF0IGFyZSBlYXJsaWVyIHNob3VsZCBub3QgYmUgYWRkZWRcbiAgICAvLyB1c2luZyBGRVRDSCBTVEFSVCB0aW1lIGluIGNhc2Ugbm8gcmVmZXJlbmNlIGlzIHByb3ZpZGVkXG4gICAgaWYgKGhhc0tleShlbnRyaWVzLCByZWZOYW1lKSAmJiB0eXBlb2YgZW50cmllc1tyZWZOYW1lXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmVmVGltZSA9IGVudHJpZXNbcmVmTmFtZV07XG4gICAgfVxuICAgIGlmIChwZXJmVGltZSAhPT0gdW5kZWZpbmVkICYmIHJlZlRpbWUgIT09IHVuZGVmaW5lZCAmJiBwZXJmVGltZSA+PSByZWZUaW1lKSB7XG4gICAgICAgIHNwYW4uYWRkRXZlbnQocGVyZm9ybWFuY2VOYW1lLCBwZXJmVGltZSk7XG4gICAgICAgIHJldHVybiBzcGFuO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGFkZGluZyBuZXR3b3JrIGV2ZW50cyBhbmQgY29udGVudCBsZW5ndGggYXR0cmlidXRlc1xuICogQHBhcmFtIHNwYW5cbiAqIEBwYXJhbSByZXNvdXJjZVxuICogQHBhcmFtIGlnbm9yZU5ldHdvcmtFdmVudHNcbiAqL1xuZnVuY3Rpb24gYWRkU3Bhbk5ldHdvcmtFdmVudHMoc3BhbiwgcmVzb3VyY2UsIGlnbm9yZU5ldHdvcmtFdmVudHMpIHtcbiAgICBpZiAoaWdub3JlTmV0d29ya0V2ZW50cyA9PT0gdm9pZCAwKSB7IGlnbm9yZU5ldHdvcmtFdmVudHMgPSBmYWxzZTsgfVxuICAgIGlmICghaWdub3JlTmV0d29ya0V2ZW50cykge1xuICAgICAgICBhZGRTcGFuTmV0d29ya0V2ZW50KHNwYW4sIFBlcmZvcm1hbmNlVGltaW5nTmFtZXMuRkVUQ0hfU1RBUlQsIHJlc291cmNlKTtcbiAgICAgICAgYWRkU3Bhbk5ldHdvcmtFdmVudChzcGFuLCBQZXJmb3JtYW5jZVRpbWluZ05hbWVzLkRPTUFJTl9MT09LVVBfU1RBUlQsIHJlc291cmNlKTtcbiAgICAgICAgYWRkU3Bhbk5ldHdvcmtFdmVudChzcGFuLCBQZXJmb3JtYW5jZVRpbWluZ05hbWVzLkRPTUFJTl9MT09LVVBfRU5ELCByZXNvdXJjZSk7XG4gICAgICAgIGFkZFNwYW5OZXR3b3JrRXZlbnQoc3BhbiwgUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5DT05ORUNUX1NUQVJULCByZXNvdXJjZSk7XG4gICAgICAgIGlmIChoYXNLZXkocmVzb3VyY2UsICduYW1lJykgJiZcbiAgICAgICAgICAgIHJlc291cmNlWyduYW1lJ10uc3RhcnRzV2l0aCgnaHR0cHM6JykpIHtcbiAgICAgICAgICAgIGFkZFNwYW5OZXR3b3JrRXZlbnQoc3BhbiwgUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5TRUNVUkVfQ09OTkVDVElPTl9TVEFSVCwgcmVzb3VyY2UpO1xuICAgICAgICB9XG4gICAgICAgIGFkZFNwYW5OZXR3b3JrRXZlbnQoc3BhbiwgUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5DT05ORUNUX0VORCwgcmVzb3VyY2UpO1xuICAgICAgICBhZGRTcGFuTmV0d29ya0V2ZW50KHNwYW4sIFBlcmZvcm1hbmNlVGltaW5nTmFtZXMuUkVRVUVTVF9TVEFSVCwgcmVzb3VyY2UpO1xuICAgICAgICBhZGRTcGFuTmV0d29ya0V2ZW50KHNwYW4sIFBlcmZvcm1hbmNlVGltaW5nTmFtZXMuUkVTUE9OU0VfU1RBUlQsIHJlc291cmNlKTtcbiAgICAgICAgYWRkU3Bhbk5ldHdvcmtFdmVudChzcGFuLCBQZXJmb3JtYW5jZVRpbWluZ05hbWVzLlJFU1BPTlNFX0VORCwgcmVzb3VyY2UpO1xuICAgIH1cbiAgICB2YXIgZW5jb2RlZExlbmd0aCA9IHJlc291cmNlW1BlcmZvcm1hbmNlVGltaW5nTmFtZXMuRU5DT0RFRF9CT0RZX1NJWkVdO1xuICAgIGlmIChlbmNvZGVkTGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoU0VNQVRUUlNfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSCwgZW5jb2RlZExlbmd0aCk7XG4gICAgfVxuICAgIHZhciBkZWNvZGVkTGVuZ3RoID0gcmVzb3VyY2VbUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5ERUNPREVEX0JPRFlfU0laRV07XG4gICAgLy8gU3BlYzogTm90IHNldCBpZiB0cmFuc3BvcnQgZW5jb2Rpbmcgbm90IHVzZWQgKGluIHdoaWNoIGNhc2UgZW5jb2RlZCBhbmQgZGVjb2RlZCBzaXplcyBtYXRjaClcbiAgICBpZiAoZGVjb2RlZExlbmd0aCAhPT0gdW5kZWZpbmVkICYmIGVuY29kZWRMZW5ndGggIT09IGRlY29kZWRMZW5ndGgpIHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoU0VNQVRUUlNfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQsIGRlY29kZWRMZW5ndGgpO1xuICAgIH1cbn1cbi8qKlxuICogc29ydCByZXNvdXJjZXMgYnkgc3RhcnRUaW1lXG4gKiBAcGFyYW0gZmlsdGVyZWRSZXNvdXJjZXNcbiAqL1xuZnVuY3Rpb24gc29ydFJlc291cmNlcyhmaWx0ZXJlZFJlc291cmNlcykge1xuICAgIHJldHVybiBmaWx0ZXJlZFJlc291cmNlcy5zbGljZSgpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgdmFyIHZhbHVlQSA9IGFbUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5GRVRDSF9TVEFSVF07XG4gICAgICAgIHZhciB2YWx1ZUIgPSBiW1BlcmZvcm1hbmNlVGltaW5nTmFtZXMuRkVUQ0hfU1RBUlRdO1xuICAgICAgICBpZiAodmFsdWVBID4gdmFsdWVCKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWx1ZUEgPCB2YWx1ZUIpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9KTtcbn1cbi8qKiBSZXR1cm5zIHRoZSBvcmlnaW4gaWYgcHJlc2VudCAoaWYgaW4gYnJvd3NlciBjb250ZXh0KS4gKi9cbmZ1bmN0aW9uIGdldE9yaWdpbigpIHtcbiAgICByZXR1cm4gdHlwZW9mIGxvY2F0aW9uICE9PSAndW5kZWZpbmVkJyA/IGxvY2F0aW9uLm9yaWdpbiA6IHVuZGVmaW5lZDtcbn1cbi8qKlxuICogR2V0IGNsb3Nlc3QgcGVyZm9ybWFuY2UgcmVzb3VyY2UgaWdub3JpbmcgdGhlIHJlc291cmNlcyB0aGF0IGhhdmUgYmVlblxuICogYWxyZWFkeSB1c2VkLlxuICogQHBhcmFtIHNwYW5VcmxcbiAqIEBwYXJhbSBzdGFydFRpbWVIUlxuICogQHBhcmFtIGVuZFRpbWVIUlxuICogQHBhcmFtIHJlc291cmNlc1xuICogQHBhcmFtIGlnbm9yZWRSZXNvdXJjZXNcbiAqIEBwYXJhbSBpbml0aWF0b3JUeXBlXG4gKi9cbmZ1bmN0aW9uIGdldFJlc291cmNlKHNwYW5VcmwsIHN0YXJ0VGltZUhSLCBlbmRUaW1lSFIsIHJlc291cmNlcywgaWdub3JlZFJlc291cmNlcywgaW5pdGlhdG9yVHlwZSkge1xuICAgIGlmIChpZ25vcmVkUmVzb3VyY2VzID09PSB2b2lkIDApIHsgaWdub3JlZFJlc291cmNlcyA9IG5ldyBXZWFrU2V0KCk7IH1cbiAgICAvLyBkZS1yZWxhdGl2aXplIHRoZSBVUkwgYmVmb3JlIHVzYWdlIChkb2VzIG5vIGhhcm0gdG8gYWJzb2x1dGUgVVJMcylcbiAgICB2YXIgcGFyc2VkU3BhblVybCA9IHBhcnNlVXJsKHNwYW5VcmwpO1xuICAgIHNwYW5VcmwgPSBwYXJzZWRTcGFuVXJsLnRvU3RyaW5nKCk7XG4gICAgdmFyIGZpbHRlcmVkUmVzb3VyY2VzID0gZmlsdGVyUmVzb3VyY2VzRm9yU3BhbihzcGFuVXJsLCBzdGFydFRpbWVIUiwgZW5kVGltZUhSLCByZXNvdXJjZXMsIGlnbm9yZWRSZXNvdXJjZXMsIGluaXRpYXRvclR5cGUpO1xuICAgIGlmIChmaWx0ZXJlZFJlc291cmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1haW5SZXF1ZXN0OiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChmaWx0ZXJlZFJlc291cmNlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1haW5SZXF1ZXN0OiBmaWx0ZXJlZFJlc291cmNlc1swXSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHNvcnRlZCA9IHNvcnRSZXNvdXJjZXMoZmlsdGVyZWRSZXNvdXJjZXMpO1xuICAgIGlmIChwYXJzZWRTcGFuVXJsLm9yaWdpbiAhPT0gZ2V0T3JpZ2luKCkgJiYgc29ydGVkLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdmFyIGNvcnNQcmVGbGlnaHRSZXF1ZXN0ID0gc29ydGVkWzBdO1xuICAgICAgICB2YXIgbWFpblJlcXVlc3QgPSBmaW5kTWFpblJlcXVlc3Qoc29ydGVkLCBjb3JzUHJlRmxpZ2h0UmVxdWVzdFtQZXJmb3JtYW5jZVRpbWluZ05hbWVzLlJFU1BPTlNFX0VORF0sIGVuZFRpbWVIUik7XG4gICAgICAgIHZhciByZXNwb25zZUVuZCA9IGNvcnNQcmVGbGlnaHRSZXF1ZXN0W1BlcmZvcm1hbmNlVGltaW5nTmFtZXMuUkVTUE9OU0VfRU5EXTtcbiAgICAgICAgdmFyIGZldGNoU3RhcnQgPSBtYWluUmVxdWVzdFtQZXJmb3JtYW5jZVRpbWluZ05hbWVzLkZFVENIX1NUQVJUXTtcbiAgICAgICAgLy8gbm8gY29yc1ByZUZsaWdodFJlcXVlc3RcbiAgICAgICAgaWYgKGZldGNoU3RhcnQgPCByZXNwb25zZUVuZCkge1xuICAgICAgICAgICAgbWFpblJlcXVlc3QgPSBjb3JzUHJlRmxpZ2h0UmVxdWVzdDtcbiAgICAgICAgICAgIGNvcnNQcmVGbGlnaHRSZXF1ZXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3JzUHJlRmxpZ2h0UmVxdWVzdDogY29yc1ByZUZsaWdodFJlcXVlc3QsXG4gICAgICAgICAgICBtYWluUmVxdWVzdDogbWFpblJlcXVlc3QsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWFpblJlcXVlc3Q6IGZpbHRlcmVkUmVzb3VyY2VzWzBdLFxuICAgICAgICB9O1xuICAgIH1cbn1cbi8qKlxuICogV2lsbCBmaW5kIHRoZSBtYWluIHJlcXVlc3Qgc2tpcHBpbmcgdGhlIGNvcnMgcHJlIGZsaWdodCByZXF1ZXN0c1xuICogQHBhcmFtIHJlc291cmNlc1xuICogQHBhcmFtIGNvcnNQcmVGbGlnaHRSZXF1ZXN0RW5kVGltZVxuICogQHBhcmFtIHNwYW5FbmRUaW1lSFJcbiAqL1xuZnVuY3Rpb24gZmluZE1haW5SZXF1ZXN0KHJlc291cmNlcywgY29yc1ByZUZsaWdodFJlcXVlc3RFbmRUaW1lLCBzcGFuRW5kVGltZUhSKSB7XG4gICAgdmFyIHNwYW5FbmRUaW1lID0gaHJUaW1lVG9OYW5vc2Vjb25kcyhzcGFuRW5kVGltZUhSKTtcbiAgICB2YXIgbWluVGltZSA9IGhyVGltZVRvTmFub3NlY29uZHModGltZUlucHV0VG9IclRpbWUoY29yc1ByZUZsaWdodFJlcXVlc3RFbmRUaW1lKSk7XG4gICAgdmFyIG1haW5SZXF1ZXN0ID0gcmVzb3VyY2VzWzFdO1xuICAgIHZhciBiZXN0R2FwO1xuICAgIHZhciBsZW5ndGggPSByZXNvdXJjZXMubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VzW2ldO1xuICAgICAgICB2YXIgcmVzb3VyY2VTdGFydFRpbWUgPSBoclRpbWVUb05hbm9zZWNvbmRzKHRpbWVJbnB1dFRvSHJUaW1lKHJlc291cmNlW1BlcmZvcm1hbmNlVGltaW5nTmFtZXMuRkVUQ0hfU1RBUlRdKSk7XG4gICAgICAgIHZhciByZXNvdXJjZUVuZFRpbWUgPSBoclRpbWVUb05hbm9zZWNvbmRzKHRpbWVJbnB1dFRvSHJUaW1lKHJlc291cmNlW1BlcmZvcm1hbmNlVGltaW5nTmFtZXMuUkVTUE9OU0VfRU5EXSkpO1xuICAgICAgICB2YXIgY3VycmVudEdhcCA9IHNwYW5FbmRUaW1lIC0gcmVzb3VyY2VFbmRUaW1lO1xuICAgICAgICBpZiAocmVzb3VyY2VTdGFydFRpbWUgPj0gbWluVGltZSAmJiAoIWJlc3RHYXAgfHwgY3VycmVudEdhcCA8IGJlc3RHYXApKSB7XG4gICAgICAgICAgICBiZXN0R2FwID0gY3VycmVudEdhcDtcbiAgICAgICAgICAgIG1haW5SZXF1ZXN0ID0gcmVzb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1haW5SZXF1ZXN0O1xufVxuLyoqXG4gKiBGaWx0ZXIgYWxsIHJlc291cmNlcyB0aGF0IGhhcyBzdGFydGVkIGFuZCBmaW5pc2hlZCBhY2NvcmRpbmcgdG8gc3BhbiBzdGFydCB0aW1lIGFuZCBlbmQgdGltZS5cbiAqICAgICBJdCB3aWxsIHJldHVybiB0aGUgY2xvc2VzdCByZXNvdXJjZSB0byBhIHN0YXJ0IHRpbWVcbiAqIEBwYXJhbSBzcGFuVXJsXG4gKiBAcGFyYW0gc3RhcnRUaW1lSFJcbiAqIEBwYXJhbSBlbmRUaW1lSFJcbiAqIEBwYXJhbSByZXNvdXJjZXNcbiAqIEBwYXJhbSBpZ25vcmVkUmVzb3VyY2VzXG4gKi9cbmZ1bmN0aW9uIGZpbHRlclJlc291cmNlc0ZvclNwYW4oc3BhblVybCwgc3RhcnRUaW1lSFIsIGVuZFRpbWVIUiwgcmVzb3VyY2VzLCBpZ25vcmVkUmVzb3VyY2VzLCBpbml0aWF0b3JUeXBlKSB7XG4gICAgdmFyIHN0YXJ0VGltZSA9IGhyVGltZVRvTmFub3NlY29uZHMoc3RhcnRUaW1lSFIpO1xuICAgIHZhciBlbmRUaW1lID0gaHJUaW1lVG9OYW5vc2Vjb25kcyhlbmRUaW1lSFIpO1xuICAgIHZhciBmaWx0ZXJlZFJlc291cmNlcyA9IHJlc291cmNlcy5maWx0ZXIoZnVuY3Rpb24gKHJlc291cmNlKSB7XG4gICAgICAgIHZhciByZXNvdXJjZVN0YXJ0VGltZSA9IGhyVGltZVRvTmFub3NlY29uZHModGltZUlucHV0VG9IclRpbWUocmVzb3VyY2VbUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5GRVRDSF9TVEFSVF0pKTtcbiAgICAgICAgdmFyIHJlc291cmNlRW5kVGltZSA9IGhyVGltZVRvTmFub3NlY29uZHModGltZUlucHV0VG9IclRpbWUocmVzb3VyY2VbUGVyZm9ybWFuY2VUaW1pbmdOYW1lcy5SRVNQT05TRV9FTkRdKSk7XG4gICAgICAgIHJldHVybiAocmVzb3VyY2UuaW5pdGlhdG9yVHlwZS50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgKGluaXRpYXRvclR5cGUgfHwgJ3htbGh0dHByZXF1ZXN0JykgJiZcbiAgICAgICAgICAgIHJlc291cmNlLm5hbWUgPT09IHNwYW5VcmwgJiZcbiAgICAgICAgICAgIHJlc291cmNlU3RhcnRUaW1lID49IHN0YXJ0VGltZSAmJlxuICAgICAgICAgICAgcmVzb3VyY2VFbmRUaW1lIDw9IGVuZFRpbWUpO1xuICAgIH0pO1xuICAgIGlmIChmaWx0ZXJlZFJlc291cmNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZpbHRlcmVkUmVzb3VyY2VzID0gZmlsdGVyZWRSZXNvdXJjZXMuZmlsdGVyKGZ1bmN0aW9uIChyZXNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuICFpZ25vcmVkUmVzb3VyY2VzLmhhcyhyZXNvdXJjZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRSZXNvdXJjZXM7XG59XG4vKipcbiAqIFBhcnNlcyB1cmwgdXNpbmcgVVJMIGNvbnN0cnVjdG9yIG9yIGZhbGxiYWNrIHRvIGFuY2hvciBlbGVtZW50LlxuICogQHBhcmFtIHVybFxuICovXG5mdW5jdGlvbiBwYXJzZVVybCh1cmwpIHtcbiAgICBpZiAodHlwZW9mIFVSTCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFVSTCh1cmwsIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gZG9jdW1lbnQuYmFzZVVSSVxuICAgICAgICAgICAgOiB0eXBlb2YgbG9jYXRpb24gIT09ICd1bmRlZmluZWQnIC8vIFNvbWUgSlMgcnVudGltZXMgKGUuZy4gRGVubykgZG9uJ3QgZGVmaW5lIHRoaXNcbiAgICAgICAgICAgICAgICA/IGxvY2F0aW9uLmhyZWZcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHZhciBlbGVtZW50ID0gZ2V0VXJsTm9ybWFsaXppbmdBbmNob3IoKTtcbiAgICBlbGVtZW50LmhyZWYgPSB1cmw7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59XG4vKipcbiAqIFBhcnNlcyB1cmwgdXNpbmcgVVJMIGNvbnN0cnVjdG9yIG9yIGZhbGxiYWNrIHRvIGFuY2hvciBlbGVtZW50IGFuZCBzZXJpYWxpemVcbiAqIGl0IHRvIGEgc3RyaW5nLlxuICpcbiAqIFBlcmZvcm1zIHRoZSBzdGVwcyBkZXNjcmliZWQgaW4gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdXJscy1hbmQtZmV0Y2hpbmcuaHRtbCNwYXJzZS1hLXVybFxuICpcbiAqIEBwYXJhbSB1cmxcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplVXJsKHVybCkge1xuICAgIHZhciB1cmxMaWtlID0gcGFyc2VVcmwodXJsKTtcbiAgICByZXR1cm4gdXJsTGlrZS5ocmVmO1xufVxuLyoqXG4gKiBHZXQgZWxlbWVudCBYUGF0aFxuICogQHBhcmFtIHRhcmdldCAtIHRhcmdldCBlbGVtZW50XG4gKiBAcGFyYW0gb3B0aW1pc2VkIC0gd2hlbiBpZCBhdHRyaWJ1dGUgb2YgZWxlbWVudCBpcyBwcmVzZW50IHRoZSB4cGF0aCBjYW4gYmVcbiAqIHNpbXBsaWZpZWQgdG8gY29udGFpbiBpZFxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlc1xuZnVuY3Rpb24gZ2V0RWxlbWVudFhQYXRoKHRhcmdldCwgb3B0aW1pc2VkKSB7XG4gICAgaWYgKHRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9OT0RFKSB7XG4gICAgICAgIHJldHVybiAnLyc7XG4gICAgfVxuICAgIHZhciB0YXJnZXRWYWx1ZSA9IGdldE5vZGVWYWx1ZSh0YXJnZXQsIG9wdGltaXNlZCk7XG4gICAgaWYgKG9wdGltaXNlZCAmJiB0YXJnZXRWYWx1ZS5pbmRleE9mKCdAaWQnKSA+IDApIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldFZhbHVlO1xuICAgIH1cbiAgICB2YXIgeHBhdGggPSAnJztcbiAgICBpZiAodGFyZ2V0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgeHBhdGggKz0gZ2V0RWxlbWVudFhQYXRoKHRhcmdldC5wYXJlbnROb2RlLCBmYWxzZSk7XG4gICAgfVxuICAgIHhwYXRoICs9IHRhcmdldFZhbHVlO1xuICAgIHJldHVybiB4cGF0aDtcbn1cbi8qKlxuICogZ2V0IG5vZGUgaW5kZXggd2l0aGluIHRoZSBzaWJsaW5nc1xuICogQHBhcmFtIHRhcmdldFxuICovXG5mdW5jdGlvbiBnZXROb2RlSW5kZXgodGFyZ2V0KSB7XG4gICAgaWYgKCF0YXJnZXQucGFyZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgdmFyIGFsbG93ZWRUeXBlcyA9IFt0YXJnZXQubm9kZVR5cGVdO1xuICAgIGlmICh0YXJnZXQubm9kZVR5cGUgPT09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFKSB7XG4gICAgICAgIGFsbG93ZWRUeXBlcy5wdXNoKE5vZGUuVEVYVF9OT0RFKTtcbiAgICB9XG4gICAgdmFyIGVsZW1lbnRzID0gQXJyYXkuZnJvbSh0YXJnZXQucGFyZW50Tm9kZS5jaGlsZE5vZGVzKTtcbiAgICBlbGVtZW50cyA9IGVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgbG9jYWxOYW1lID0gZWxlbWVudC5sb2NhbE5hbWU7XG4gICAgICAgIHJldHVybiAoYWxsb3dlZFR5cGVzLmluZGV4T2YoZWxlbWVudC5ub2RlVHlwZSkgPj0gMCAmJlxuICAgICAgICAgICAgbG9jYWxOYW1lID09PSB0YXJnZXQubG9jYWxOYW1lKTtcbiAgICB9KTtcbiAgICBpZiAoZWxlbWVudHMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRzLmluZGV4T2YodGFyZ2V0KSArIDE7IC8vIHhwYXRoIHN0YXJ0cyBmcm9tIDFcbiAgICB9XG4gICAgLy8gaWYgdGhlcmUgYXJlIG5vIG90aGVyIHNpbWlsYXIgY2hpbGQgeHBhdGggZG9lc24ndCBuZWVkIGluZGV4XG4gICAgcmV0dXJuIDA7XG59XG4vKipcbiAqIGdldCBub2RlIHZhbHVlIGZvciB4cGF0aFxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIG9wdGltaXNlZFxuICovXG5mdW5jdGlvbiBnZXROb2RlVmFsdWUodGFyZ2V0LCBvcHRpbWlzZWQpIHtcbiAgICB2YXIgbm9kZVR5cGUgPSB0YXJnZXQubm9kZVR5cGU7XG4gICAgdmFyIGluZGV4ID0gZ2V0Tm9kZUluZGV4KHRhcmdldCk7XG4gICAgdmFyIG5vZGVWYWx1ZSA9ICcnO1xuICAgIGlmIChub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgdmFyIGlkID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnaWQnKTtcbiAgICAgICAgaWYgKG9wdGltaXNlZCAmJiBpZCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiLy8qW0BpZD1cXFwiXCIgKyBpZCArIFwiXFxcIl1cIjtcbiAgICAgICAgfVxuICAgICAgICBub2RlVmFsdWUgPSB0YXJnZXQubG9jYWxOYW1lO1xuICAgIH1cbiAgICBlbHNlIGlmIChub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgfHxcbiAgICAgICAgbm9kZVR5cGUgPT09IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFKSB7XG4gICAgICAgIG5vZGVWYWx1ZSA9ICd0ZXh0KCknO1xuICAgIH1cbiAgICBlbHNlIGlmIChub2RlVHlwZSA9PT0gTm9kZS5DT01NRU5UX05PREUpIHtcbiAgICAgICAgbm9kZVZhbHVlID0gJ2NvbW1lbnQoKSc7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIC8vIGlmIGluZGV4IGlzIDEgaXQgY2FuIGJlIG9taXR0ZWQgaW4geHBhdGhcbiAgICBpZiAobm9kZVZhbHVlICYmIGluZGV4ID4gMSkge1xuICAgICAgICByZXR1cm4gXCIvXCIgKyBub2RlVmFsdWUgKyBcIltcIiArIGluZGV4ICsgXCJdXCI7XG4gICAgfVxuICAgIHJldHVybiBcIi9cIiArIG5vZGVWYWx1ZTtcbn1cbi8qKlxuICogQ2hlY2tzIGlmIHRyYWNlIGhlYWRlcnMgc2hvdWxkIGJlIHByb3BhZ2F0ZWRcbiAqIEBwYXJhbSBzcGFuVXJsXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBzaG91bGRQcm9wYWdhdGVUcmFjZUhlYWRlcnMoc3BhblVybCwgcHJvcGFnYXRlVHJhY2VIZWFkZXJDb3JzVXJscykge1xuICAgIHZhciBwcm9wYWdhdGVUcmFjZUhlYWRlclVybHMgPSBwcm9wYWdhdGVUcmFjZUhlYWRlckNvcnNVcmxzIHx8IFtdO1xuICAgIGlmICh0eXBlb2YgcHJvcGFnYXRlVHJhY2VIZWFkZXJVcmxzID09PSAnc3RyaW5nJyB8fFxuICAgICAgICBwcm9wYWdhdGVUcmFjZUhlYWRlclVybHMgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcHJvcGFnYXRlVHJhY2VIZWFkZXJVcmxzID0gW3Byb3BhZ2F0ZVRyYWNlSGVhZGVyVXJsc107XG4gICAgfVxuICAgIHZhciBwYXJzZWRTcGFuVXJsID0gcGFyc2VVcmwoc3BhblVybCk7XG4gICAgaWYgKHBhcnNlZFNwYW5Vcmwub3JpZ2luID09PSBnZXRPcmlnaW4oKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBwcm9wYWdhdGVUcmFjZUhlYWRlclVybHMuc29tZShmdW5jdGlvbiAocHJvcGFnYXRlVHJhY2VIZWFkZXJVcmwpIHtcbiAgICAgICAgICAgIHJldHVybiB1cmxNYXRjaGVzKHNwYW5VcmwsIHByb3BhZ2F0ZVRyYWNlSGVhZGVyVXJsKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgeyBQZXJmb3JtYW5jZVRpbWluZ05hbWVzIGFzIFAsIGFkZFNwYW5OZXR3b3JrRXZlbnQgYXMgYSwgYWRkU3Bhbk5ldHdvcmtFdmVudHMgYXMgYiwgZ2V0UmVzb3VyY2UgYXMgYywgc29ydFJlc291cmNlcyBhcyBkLCBnZXRFbGVtZW50WFBhdGggYXMgZywgaGFzS2V5IGFzIGgsIG5vcm1hbGl6ZVVybCBhcyBuLCBwYXJzZVVybCBhcyBwLCBzaG91bGRQcm9wYWdhdGVUcmFjZUhlYWRlcnMgYXMgcyB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsR0FBdUMsS0FBS0MsR0FBb0QsS0FBS0MsR0FBcUIsS0FBS0MsR0FBbUIsS0FBS0MsU0FBa0I7QUFpQnZMLElBQUlDO0FBQUEsQ0FDSCxTQUFVQSxHQUF3QjtBQUMvQixFQUFBQSxFQUF1QixjQUFpQixjQUN4Q0EsRUFBdUIsZ0JBQW1CLGdCQUMxQ0EsRUFBdUIsb0JBQXVCLG1CQUM5Q0EsRUFBdUIsZUFBa0IsZUFDekNBLEVBQXVCLCtCQUFrQyw0QkFDekRBLEVBQXVCLGlDQUFvQyw4QkFDM0RBLEVBQXVCLGtCQUFxQixrQkFDNUNBLEVBQXVCLG9CQUF1QixtQkFDOUNBLEVBQXVCLHNCQUF5QixxQkFDaERBLEVBQXVCLG9CQUF1QixtQkFDOUNBLEVBQXVCLGNBQWlCLGNBQ3hDQSxFQUF1QixpQkFBb0IsZ0JBQzNDQSxFQUF1QixtQkFBc0Isa0JBQzdDQSxFQUF1QixtQkFBc0IsbUJBQzdDQSxFQUF1QixlQUFrQixlQUN6Q0EsRUFBdUIsaUJBQW9CLGlCQUMzQ0EsRUFBdUIsZ0JBQW1CLGdCQUMxQ0EsRUFBdUIs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QThCO0FBQ3hFLE1BQUlDLElBQTJCRCxLQUFnQyxDQUFDO0FBQ2hFLEdBQUksT0FBT0MsS0FBNkIsWUFDcENBLGFBQW9DLFlBQ3BDQSxJQUEyQixDQUFDQSxDQUF3QjtBQUV4RCxNQUFJeEMsSUFBZ0JDLEVBQVNQLENBQU87QUFDcEMsU0FBSU0sRUFBYyxXQUFXUixFQUFVLElBQzVCLEtBR0FnRCxFQUF5QixLQUFLLFNBQVVDLEdBQXlCO0FBQ3BFLFdBQU8zRSxFQUFXNEIsR0FBUytDLENBQXVCO0FBQUEsRUFDdEQsQ0FBQztBQUVUOyIsCiAgIm5hbWVzIjogWyJTRU1BVFRSU19IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIIiwgIlNFTUFUVFJTX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEIiwgImhyVGltZVRvTmFub3NlY29uZHMiLCAidGltZUlucHV0VG9IclRpbWUiLCAidXJsTWF0Y2hlcyIsICJQZXJmb3JtYW5jZVRpbWluZ05hbWVzIiwgInVybE5vcm1hbGl6aW5nQW5jaG9yIiwgImdldFVybE5vcm1hbGl6aW5nQW5jaG9yIiwgImhhc0tleSIsICJvYmoiLCAia2V5IiwgImFkZFNwYW5OZXR3b3JrRXZlbnQiLCAic3BhbiIsICJwZXJmb3JtYW5jZU5hbWUiLCAiZW50cmllcyIsICJyZWZQZXJmTmFtZSIsICJwZXJmVGltZSIsICJyZWZUaW1lIiwgInJlZk5hbWUiLCAiYWRkU3Bhbk5ldHdvcmtFdmVudHMiLCAicmVzb3VyY2UiLCAiaWdub3JlTmV0d29ya0V2ZW50cyIsICJlbmNvZGVkTGVuZ3RoIiwgImRlY29kZWRMZW5ndGgiLCAic29ydFJlc291cmNlcyIsICJmaWx0ZXJlZFJlc291cmNlcyIsICJhIiwgImIiLCAidmFsdWVBIiwgInZhbHVlQiIsICJnZXRPcmlnaW4iLCAiZ2V0UmVzb3VyY2UiLCAic3BhblVybCIsICJzdGFydFRpbWVIUiIsICJlbmRUaW1lSFIiLCAicmVzb3VyY2VzIiwgImlnbm9yZWRSZXNvdXJjZXMiLCAiaW5pdGlhdG9yVHlwZSIsICJwYXJzZWRTcGFuVXJsIiwgInBhcnNlVXJsIiwgImZpbHRlclJlc291cmNlc0ZvclNwYW4iLCAic29ydGVkIiwgImNvcnNQcmVGbGlnaHRSZXF1ZXN0IiwgIm1haW5SZXF1ZXN0IiwgImZpbmRNYWluUmVxdWVzdCIsICJyZXNwb25zZUVuZCIsICJmZXRjaFN0YXJ0IiwgImNvcnNQcmVGbGlnaHRSZXF1ZXN0RW5kVGltZSIsICJzcGFuRW5kVGltZUhSIiwgInNwYW5FbmRUaW1lIiwgIm1pblRpbWUiLCAiYmVzdEdhcCIsICJsZW5ndGgiLCAicmVzb3VyY2VTdGFydFRpbWUiLCAicmVzb3VyY2VFbmRUaW1lIiwgImN1cnJlbnRHYXAiLCAic3RhcnRUaW1lIiwgImVuZFRpbWUiLCAidXJsIiwgImVsZW1lbnQiLCAibm9ybWFsaXplVXJsIiwgInVybExpa2UiLCAiZ2V0RWxlbWVudFhQYXRoIiwgInRhcmdldCIsICJvcHRpbWlzZWQiLCAidGFyZ2V0VmFsdWUiLCAiZ2V0Tm9kZVZhbHVlIiwgInhwYXRoIiwgImdldE5vZGVJbmRleCIsICJhbGxvd2VkVHlwZXMiLCAiZWxlbWVudHMiLCAibG9jYWxOYW1lIiwgIm5vZGVUeXBlIiwgImluZGV4IiwgIm5vZGVWYWx1ZSIsICJpZCIsICJzaG91bGRQcm9wYWdhdGVUcmFjZUhlYWRlcnMiLCAicHJvcGFnYXRlVHJhY2VIZWFkZXJDb3JzVXJscyIsICJwcm9wYWdhdGVUcmFjZUhlYWRlclVybHMiLCAicHJvcGFnYXRlVHJhY2VIZWFkZXJVcmwiXQp9Cg==
|