@adobe/helix-rum-enhancer 2.50.0 → 2.50.1
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/CHANGELOG.md +7 -0
- package/package.json +21 -21
- package/rollup.config.js +6 -1
- package/src/index.js +417 -430
- package/src/index.md5 +1 -1
- package/src/index.sri +1 -1
- package/src/plugins/a11y.map.js +1 -1
- package/src/plugins/a11y.md5 +1 -1
- package/src/plugins/cwv.js +313 -205
- package/src/plugins/cwv.map.js +314 -206
- package/src/plugins/cwv.md5 +1 -1
- package/src/plugins/form.map.js +1 -1
- package/src/plugins/martech.map.js +1 -1
- package/src/plugins/onetrust.map.js +1 -1
- package/src/plugins/onetrust.md5 +1 -1
- package/src/plugins/redirect.map.js +1 -1
- package/src/plugins/trustarc.map.js +1 -1
- package/src/plugins/trustarc.md5 +1 -1
- package/src/plugins/usercentrics.map.js +1 -1
- package/src/plugins/video.map.js +1 -1
- package/src/plugins/video.md5 +1 -1
- package/src/plugins/webcomponent.map.js +1 -1
- package/src/plugins/webcomponent.md5 +1 -1
package/src/plugins/cwv.map.js
CHANGED
|
@@ -9,287 +9,395 @@
|
|
|
9
9
|
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
10
|
* governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
|
-
(function (
|
|
12
|
+
(function (t) {
|
|
13
13
|
|
|
14
|
-
let
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
let n = -1;
|
|
15
|
+
const e = () => n,
|
|
16
|
+
i = t => {
|
|
17
|
+
addEventListener("pageshow", e => {
|
|
18
|
+
e.persisted && (n = e.timeStamp, t(e));
|
|
18
19
|
}, true);
|
|
19
20
|
},
|
|
20
|
-
|
|
21
|
-
let
|
|
22
|
-
return
|
|
23
|
-
|
|
21
|
+
o = (t, n, e, i) => {
|
|
22
|
+
let o, s;
|
|
23
|
+
return a => {
|
|
24
|
+
n.value >= 0 && (a || i) && (s = n.value - (o ?? 0), (s || void 0 === o) && (o = n.value, n.delta = s, n.rating = ((t, n) => t > n[1] ? "poor" : t > n[0] ? "needs-improvement" : "good")(n.value, e), t(n)));
|
|
24
25
|
};
|
|
25
26
|
},
|
|
26
|
-
s =
|
|
27
|
-
requestAnimationFrame(() => requestAnimationFrame(
|
|
27
|
+
s = t => {
|
|
28
|
+
requestAnimationFrame(() => requestAnimationFrame(() => t()));
|
|
28
29
|
},
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
30
|
+
a = () => {
|
|
31
|
+
const t = performance.getEntriesByType("navigation")[0];
|
|
32
|
+
if (t && t.responseStart > 0 && t.responseStart < performance.now()) return t;
|
|
32
33
|
},
|
|
33
|
-
r = () =>
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
r = () => a()?.activationStart ?? 0;
|
|
35
|
+
let c = -1;
|
|
36
|
+
const f = new Set(),
|
|
37
|
+
h = () => "hidden" !== document.visibilityState || document.prerendering ? 1 / 0 : 0,
|
|
38
|
+
d = t => {
|
|
39
|
+
if ("hidden" === document.visibilityState) {
|
|
40
|
+
if ("visibilitychange" === t.type) for (const t of f) t();
|
|
41
|
+
isFinite(c) || (c = "visibilitychange" === t.type ? t.timeStamp : 0, removeEventListener("prerenderingchange", d, true));
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
l = (t = false) => {
|
|
45
|
+
if (t && (c = 1 / 0), c < 0) {
|
|
46
|
+
const t = r(),
|
|
47
|
+
n = document.prerendering ? void 0 : globalThis.performance.getEntriesByType("visibility-state").find(n => "hidden" === n.name && n.startTime >= t)?.startTime;
|
|
48
|
+
c = n ?? h(), addEventListener("visibilitychange", d, true), addEventListener("prerenderingchange", d, true), i(() => {
|
|
49
|
+
setTimeout(() => {
|
|
50
|
+
c = h();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
38
54
|
return {
|
|
39
|
-
|
|
55
|
+
get firstHiddenTime() {
|
|
56
|
+
return c;
|
|
57
|
+
},
|
|
58
|
+
onHidden(t) {
|
|
59
|
+
f.add(t);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
},
|
|
63
|
+
g = (t, n = -1, i, o = 0, s, c, f) => {
|
|
64
|
+
const h = a(),
|
|
65
|
+
d = h?.navigationId || 0;
|
|
66
|
+
let l = "navigate";
|
|
67
|
+
i ? l = i : e() >= 0 ? l = "back-forward-cache" : h && (document.prerendering || r() > 0 ? l = "prerender" : document.wasDiscarded ? l = "restore" : h.type && (l = h.type.replace(/_/g, "-")));
|
|
68
|
+
return {
|
|
69
|
+
name: t,
|
|
40
70
|
value: n,
|
|
41
71
|
rating: "good",
|
|
42
72
|
delta: 0,
|
|
43
73
|
entries: [],
|
|
44
|
-
id: `
|
|
45
|
-
navigationType:
|
|
74
|
+
id: `v6-${Date.now()}-${Math.floor(8999999999999 * Math.random()) + 1e12}`,
|
|
75
|
+
navigationType: l,
|
|
76
|
+
navigationId: o || d,
|
|
77
|
+
navigationInteractionId: s,
|
|
78
|
+
navigationURL: c || h?.name,
|
|
79
|
+
navigationStartTime: f || 0
|
|
46
80
|
};
|
|
47
81
|
},
|
|
48
|
-
|
|
49
|
-
function
|
|
50
|
-
let
|
|
51
|
-
return
|
|
82
|
+
u = new WeakMap();
|
|
83
|
+
function v(t, n) {
|
|
84
|
+
let e = u.get(n);
|
|
85
|
+
return e || (e = new WeakMap(), u.set(n, e)), e.get(t) || e.set(t, new n()), e.get(t);
|
|
52
86
|
}
|
|
53
|
-
class
|
|
87
|
+
class m {
|
|
54
88
|
t;
|
|
55
89
|
i = 0;
|
|
56
90
|
o = [];
|
|
57
|
-
h(
|
|
58
|
-
if (
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
this.i &&
|
|
91
|
+
h(t) {
|
|
92
|
+
if (t.hadRecentInput) return;
|
|
93
|
+
const n = this.o[0],
|
|
94
|
+
e = this.o.at(-1);
|
|
95
|
+
this.i && n && e && t.startTime - e.startTime < 1e3 && t.startTime - n.startTime < 5e3 ? (this.i += t.value, this.o.push(t)) : (this.i = t.value, this.o = [t]), this.t?.(t);
|
|
62
96
|
}
|
|
63
97
|
}
|
|
64
|
-
const
|
|
98
|
+
const p = (t, n, e = {}) => {
|
|
65
99
|
try {
|
|
66
|
-
|
|
67
|
-
|
|
100
|
+
const i = t.filter(t => PerformanceObserver.supportedEntryTypes.includes(t));
|
|
101
|
+
if (i.length > 0) {
|
|
102
|
+
const t = new PerformanceObserver(t => {
|
|
68
103
|
queueMicrotask(() => {
|
|
69
|
-
t
|
|
104
|
+
const e = t.getEntries();
|
|
105
|
+
i.length > 1 && e.sort((t, n) => t.startTime + t.duration - (n.startTime + n.duration)), n(e);
|
|
70
106
|
});
|
|
71
107
|
});
|
|
72
|
-
|
|
73
|
-
type:
|
|
108
|
+
for (const n of i) t.observe({
|
|
109
|
+
type: n,
|
|
74
110
|
buffered: !0,
|
|
75
|
-
...
|
|
76
|
-
})
|
|
111
|
+
...e
|
|
112
|
+
});
|
|
113
|
+
return t;
|
|
77
114
|
}
|
|
78
115
|
} catch {}
|
|
79
116
|
},
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
};
|
|
86
|
-
let u = -1;
|
|
87
|
-
const m = new Set(),
|
|
88
|
-
g = () => "hidden" !== document.visibilityState || document.prerendering ? 1 / 0 : 0,
|
|
89
|
-
p = e => {
|
|
90
|
-
if ("hidden" === document.visibilityState) {
|
|
91
|
-
if ("visibilitychange" === e.type) for (const e of m) e();
|
|
92
|
-
isFinite(u) || (u = "visibilitychange" === e.type ? e.timeStamp : 0, removeEventListener("prerenderingchange", p, true));
|
|
117
|
+
b = t => globalThis.PerformanceObserver?.supportedEntryTypes?.includes("soft-navigation") && "function" == typeof globalThis.PerformanceSoftNavigation?.prototype?.getLargestInteractionContentfulPaint && t && t.reportSoftNavs,
|
|
118
|
+
T = (t, n) => {
|
|
119
|
+
if (t.set(n.navigationId, n), t.size > 2) {
|
|
120
|
+
const n = t.keys().next().value;
|
|
121
|
+
void 0 !== n && t.delete(n);
|
|
93
122
|
}
|
|
94
123
|
},
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
u = t ?? g(), addEventListener("visibilitychange", p, true), addEventListener("prerenderingchange", p, true), n(() => {
|
|
100
|
-
setTimeout(() => {
|
|
101
|
-
u = g();
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
return {
|
|
106
|
-
get firstHiddenTime() {
|
|
107
|
-
return u;
|
|
108
|
-
},
|
|
109
|
-
onHidden(e) {
|
|
110
|
-
m.add(e);
|
|
111
|
-
}
|
|
124
|
+
y = t => {
|
|
125
|
+
let n = false;
|
|
126
|
+
return () => {
|
|
127
|
+
n || (t(), n = true);
|
|
112
128
|
};
|
|
129
|
+
};
|
|
130
|
+
class _ {
|
|
131
|
+
l;
|
|
132
|
+
}
|
|
133
|
+
const E = t => {
|
|
134
|
+
document.prerendering ? addEventListener("prerenderingchange", t, true) : t();
|
|
113
135
|
},
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
for (const t of e) "first-contentful-paint" === t.name && (h.disconnect(), t.startTime < o.firstHiddenTime && (d.value = Math.max(t.startTime - r(), 0), d.entries.push(t), a(true)));
|
|
136
|
+
M = [1800, 3e3],
|
|
137
|
+
L = (t, n = {}) => {
|
|
138
|
+
const a = b(n);
|
|
139
|
+
E(() => {
|
|
140
|
+
const c = v(n, _),
|
|
141
|
+
f = l();
|
|
142
|
+
let h,
|
|
143
|
+
d = g("FCP");
|
|
144
|
+
const u = p(["paint"], t => {
|
|
145
|
+
for (const n of t) "first-contentful-paint" === n.name && (u.disconnect(), n.startTime < f.firstHiddenTime && (d.value = Math.max(n.startTime - r(), 0), d.entries.push(n), d.navigationId = n.navigationId || d.navigationId, h(true)));
|
|
125
146
|
});
|
|
126
|
-
|
|
127
|
-
d =
|
|
128
|
-
d.value = performance.now() -
|
|
147
|
+
if (u && (h = o(t, d, M, n.reportAllChanges), i(i => {
|
|
148
|
+
d = g("FCP", -1, "back-forward-cache", d.navigationId, d.navigationInteractionId, d.navigationURL, e()), h = o(t, d, M, n.reportAllChanges), s(() => {
|
|
149
|
+
d.value = performance.now() - i.timeStamp, h(true);
|
|
129
150
|
});
|
|
130
|
-
}))
|
|
151
|
+
})), a) {
|
|
152
|
+
p(["soft-navigation"], e => {
|
|
153
|
+
e.forEach(e => {
|
|
154
|
+
c.l && e.navigationId && T(c.l, e);
|
|
155
|
+
const i = Math.max((e.presentationTime || e.paintTime || 0) - e.startTime, 0);
|
|
156
|
+
d = g("FCP", i, "soft-navigation", e.navigationId, e.interactionId, e.name, e.startTime), h = o(t, d, M, n.reportAllChanges), h(true);
|
|
157
|
+
});
|
|
158
|
+
}, n);
|
|
159
|
+
}
|
|
131
160
|
});
|
|
132
161
|
},
|
|
133
|
-
|
|
134
|
-
let
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const
|
|
138
|
-
for (const
|
|
162
|
+
w = [.1, .25];
|
|
163
|
+
let P = 0,
|
|
164
|
+
I = 1 / 0,
|
|
165
|
+
k = 0;
|
|
166
|
+
const C = t => {
|
|
167
|
+
for (const n of t) n.interactionId && (I = Math.min(I, n.interactionId), k = Math.max(k, n.interactionId), P = k ? (k - I) / 7 + 1 : 0);
|
|
139
168
|
};
|
|
140
|
-
let
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
"interactionCount" in performance ||
|
|
169
|
+
let F;
|
|
170
|
+
const N = () => F ? P : performance.interactionCount ?? 0,
|
|
171
|
+
B = () => {
|
|
172
|
+
"interactionCount" in performance || F || (F = p(["event"], C, {
|
|
144
173
|
durationThreshold: 0
|
|
145
174
|
}));
|
|
146
175
|
};
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
m;
|
|
176
|
+
class S {
|
|
177
|
+
u = 0;
|
|
178
|
+
v = [];
|
|
179
|
+
m = new Map();
|
|
152
180
|
p;
|
|
153
|
-
|
|
154
|
-
|
|
181
|
+
T;
|
|
182
|
+
_() {
|
|
183
|
+
return N() - this.u;
|
|
155
184
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
return this.l[e];
|
|
185
|
+
M() {
|
|
186
|
+
this.u = N(), this.v.length = 0, this.m.clear();
|
|
159
187
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
188
|
+
L(t) {
|
|
189
|
+
const n = this._(),
|
|
190
|
+
e = Math.min(this.v.length - 1, Math.floor(n / 50));
|
|
191
|
+
return !n || -1 !== e || "soft-navigation" !== t && "back-forward-cache" !== t ? this.v[e] : {
|
|
192
|
+
P: 8,
|
|
193
|
+
id: -1,
|
|
194
|
+
entries: []
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
h(t) {
|
|
198
|
+
if (this.p?.(t), !t.interactionId) return;
|
|
199
|
+
const n = this.v.at(-1);
|
|
200
|
+
let e = this.m.get(t.interactionId);
|
|
201
|
+
if (e || this.v.length < 10 || t.duration > n.P) {
|
|
202
|
+
if (e ? t.duration > e.P ? (e.entries = [t], e.P = t.duration) : t.duration === e.P && t.startTime === e.entries[0].startTime && e.entries.push(t) : (e = {
|
|
203
|
+
id: t.interactionId,
|
|
204
|
+
entries: [t],
|
|
205
|
+
P: t.duration
|
|
206
|
+
}, this.m.set(e.id, e), this.v.push(e)), this.v.sort((t, n) => n.P - t.P), this.v.length > 10) {
|
|
207
|
+
const t = this.v.splice(10);
|
|
208
|
+
for (const n of t) this.m.delete(n.id);
|
|
172
209
|
}
|
|
173
|
-
this.
|
|
210
|
+
this.T?.(e);
|
|
174
211
|
}
|
|
175
212
|
}
|
|
176
213
|
}
|
|
177
|
-
const
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
214
|
+
const q = t => {
|
|
215
|
+
const n = "requestIdleCallback" in globalThis ? 1e3 : 0,
|
|
216
|
+
e = globalThis.requestIdleCallback || setTimeout,
|
|
217
|
+
i = globalThis.cancelIdleCallback || clearTimeout;
|
|
218
|
+
if ("hidden" === document.visibilityState) t();else {
|
|
219
|
+
const o = y(t);
|
|
182
220
|
let s = -1;
|
|
183
|
-
const
|
|
184
|
-
|
|
221
|
+
const a = () => {
|
|
222
|
+
i(s), o();
|
|
185
223
|
};
|
|
186
|
-
addEventListener("visibilitychange",
|
|
224
|
+
addEventListener("visibilitychange", a, {
|
|
187
225
|
once: true,
|
|
188
226
|
capture: true
|
|
189
|
-
}), s =
|
|
190
|
-
removeEventListener("visibilitychange",
|
|
227
|
+
}), s = e(() => {
|
|
228
|
+
removeEventListener("visibilitychange", a, {
|
|
191
229
|
capture: true
|
|
192
|
-
}),
|
|
230
|
+
}), o();
|
|
231
|
+
}, {
|
|
232
|
+
timeout: n
|
|
193
233
|
});
|
|
194
234
|
}
|
|
195
235
|
},
|
|
196
|
-
|
|
197
|
-
class
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
236
|
+
A = [200, 500];
|
|
237
|
+
class H {
|
|
238
|
+
p;
|
|
239
|
+
l;
|
|
240
|
+
h(t) {
|
|
241
|
+
this.p?.(t);
|
|
201
242
|
}
|
|
202
243
|
}
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
document.prerendering ?
|
|
244
|
+
const O = [2500, 4e3],
|
|
245
|
+
U = [800, 1800],
|
|
246
|
+
V = t => {
|
|
247
|
+
document.prerendering ? E(() => V(t)) : "complete" !== document.readyState ? addEventListener("load", () => V(t), true) : setTimeout(t);
|
|
207
248
|
};
|
|
208
|
-
return
|
|
209
|
-
const
|
|
210
|
-
|
|
249
|
+
return t.CLSThresholds = w, t.FCPThresholds = M, t.INPThresholds = A, t.LCPThresholds = O, t.TTFBThresholds = U, t.onCLS = (t, n = {}) => {
|
|
250
|
+
const a = l();
|
|
251
|
+
L(y(() => {
|
|
211
252
|
let r,
|
|
212
|
-
|
|
213
|
-
const
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
253
|
+
c = g("CLS", 0);
|
|
254
|
+
const f = v(n, m),
|
|
255
|
+
h = (e, i, s, a, h) => {
|
|
256
|
+
c = g("CLS", 0, e, i, s, a, h), f.i = 0, r = o(t, c, w, n.reportAllChanges);
|
|
257
|
+
},
|
|
258
|
+
d = (t = false) => {
|
|
259
|
+
f.i > c.value && (c.value = f.i, c.entries = f.o), r(t);
|
|
260
|
+
},
|
|
261
|
+
l = t => {
|
|
262
|
+
d(true), h("soft-navigation", t.navigationId, t.interactionId, t.name, t.startTime);
|
|
263
|
+
},
|
|
264
|
+
u = t => {
|
|
265
|
+
for (const n of t) "soft-navigation" !== n.entryType ? f.h(n) : l(n);
|
|
266
|
+
d();
|
|
217
267
|
},
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
268
|
+
T = ["layout-shift"];
|
|
269
|
+
b(n) && T.push("soft-navigation");
|
|
270
|
+
const y = p(T, u);
|
|
271
|
+
y && (r = o(t, c, w, n.reportAllChanges), a.onHidden(() => {
|
|
272
|
+
u(y.takeRecords()), r(true);
|
|
273
|
+
}), i(() => {
|
|
274
|
+
h("back-forward-cache", c.navigationId, c.navigationInteractionId, c.navigationURL, e()), s(r);
|
|
223
275
|
}), setTimeout(r));
|
|
224
276
|
}));
|
|
225
|
-
},
|
|
277
|
+
}, t.onFCP = L, t.onINP = (t, n = {}) => {
|
|
226
278
|
if (!globalThis.PerformanceEventTiming || !("interactionId" in PerformanceEventTiming.prototype)) return;
|
|
227
|
-
const s =
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
let
|
|
231
|
-
r =
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
279
|
+
const s = l();
|
|
280
|
+
E(() => {
|
|
281
|
+
B();
|
|
282
|
+
let a,
|
|
283
|
+
r = g("INP");
|
|
284
|
+
const c = v(n, S),
|
|
285
|
+
f = (e, i, s, f, h) => {
|
|
286
|
+
c.M(), r = g("INP", -1, e, i, s, f, h), a = o(t, r, A, n.reportAllChanges);
|
|
287
|
+
},
|
|
288
|
+
h = () => {
|
|
289
|
+
const t = c.L(r.navigationType);
|
|
290
|
+
t && t.P !== r.value && (r.value = t.P, r.entries = t.entries, a());
|
|
291
|
+
},
|
|
292
|
+
d = t => {
|
|
293
|
+
h(), a(true), f("soft-navigation", t.navigationId, t.interactionId, t.name, t.startTime);
|
|
294
|
+
},
|
|
295
|
+
l = (t, n = false) => {
|
|
296
|
+
q(() => {
|
|
297
|
+
for (const n of t) "soft-navigation" !== n.entryType ? c.h(n) : d(n);
|
|
298
|
+
h(), n && a(true);
|
|
238
299
|
});
|
|
239
300
|
},
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}),
|
|
249
|
-
|
|
301
|
+
u = ["event", "first-input"];
|
|
302
|
+
b(n) && u.push("soft-navigation");
|
|
303
|
+
const m = p(u, l, {
|
|
304
|
+
...n,
|
|
305
|
+
durationThreshold: n.durationThreshold ?? 40
|
|
306
|
+
});
|
|
307
|
+
a = o(t, r, A, n.reportAllChanges), m && (s.onHidden(() => {
|
|
308
|
+
l(m.takeRecords(), true);
|
|
309
|
+
}), i(() => {
|
|
310
|
+
f("back-forward-cache", r.navigationId, r.navigationInteractionId, r.navigationURL, e());
|
|
250
311
|
}));
|
|
251
312
|
});
|
|
252
|
-
},
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
313
|
+
}, t.onLCP = (t, n = {}) => {
|
|
314
|
+
let a = false;
|
|
315
|
+
const c = b(n);
|
|
316
|
+
E(() => {
|
|
317
|
+
let f,
|
|
318
|
+
h = l(),
|
|
319
|
+
d = g("LCP");
|
|
320
|
+
const u = v(n, H),
|
|
321
|
+
m = (e, i, s, r, c) => {
|
|
322
|
+
d = g("LCP", -1, e, i, s, r, c), f = o(t, d, O, n.reportAllChanges), a = false, "soft-navigation" === e && (h = l(true));
|
|
323
|
+
},
|
|
324
|
+
b = t => {
|
|
325
|
+
u.l && t.navigationId && T(u.l, t), a || f(true), m("soft-navigation", t.navigationId, t.interactionId, t.name, t.startTime);
|
|
326
|
+
const n = t.getLargestInteractionContentfulPaint?.();
|
|
327
|
+
n && y([n]);
|
|
328
|
+
},
|
|
329
|
+
y = t => {
|
|
330
|
+
n.reportAllChanges || c || (t = t.slice(-1));
|
|
331
|
+
for (const n of t) {
|
|
332
|
+
if (!n) continue;
|
|
333
|
+
if ("soft-navigation" === n.entryType) {
|
|
334
|
+
b(n);
|
|
335
|
+
continue;
|
|
336
|
+
}
|
|
337
|
+
let t = 0,
|
|
338
|
+
e = [],
|
|
339
|
+
i = n.startTime;
|
|
340
|
+
if ("largest-contentful-paint" === n.entryType) t = Math.max(n.startTime - r(), 0), u.h(n), e = [n];else if ("interaction-contentful-paint" === n.entryType) {
|
|
341
|
+
const o = n;
|
|
342
|
+
if (!d.navigationId) continue;
|
|
343
|
+
if ("interactionId" in o && o.interactionId != d.navigationInteractionId) continue;
|
|
344
|
+
i = o.largestContentfulPaint?.renderTime || 0, t = Math.max(i - n.startTime, 0), o.largestContentfulPaint && (u.h(o.largestContentfulPaint), e = [o.largestContentfulPaint]);
|
|
345
|
+
}
|
|
346
|
+
i < h.firstHiddenTime && (d.value = t, d.entries = e, f());
|
|
347
|
+
}
|
|
261
348
|
},
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
349
|
+
_ = ["largest-contentful-paint"];
|
|
350
|
+
c && _.push("interaction-contentful-paint", "soft-navigation");
|
|
351
|
+
const E = p(_, y);
|
|
352
|
+
if (E) {
|
|
353
|
+
f = o(t, d, O, n.reportAllChanges);
|
|
354
|
+
const r = ["keydown", "click", "visibilitychange"],
|
|
355
|
+
h = t => {
|
|
356
|
+
if (t.isTrusted && !a) {
|
|
357
|
+
const t = d.id;
|
|
358
|
+
q(() => {
|
|
359
|
+
if (!a) {
|
|
360
|
+
if (!c) {
|
|
361
|
+
E.disconnect();
|
|
362
|
+
for (const t of r) removeEventListener(t, h, {
|
|
363
|
+
capture: true
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
t === d.id && (a = true, f(true));
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
}
|
|
272
370
|
};
|
|
273
|
-
for (const
|
|
371
|
+
for (const t of r) addEventListener(t, h, {
|
|
274
372
|
capture: true
|
|
275
373
|
});
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
374
|
+
i(i => {
|
|
375
|
+
m("back-forward-cache", d.navigationId, d.navigationInteractionId, d.navigationURL, e()), f = o(t, d, O, n.reportAllChanges), s(() => {
|
|
376
|
+
d.value = performance.now() - i.timeStamp, a = true, f(true);
|
|
279
377
|
});
|
|
280
378
|
});
|
|
281
379
|
}
|
|
282
380
|
});
|
|
283
|
-
},
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
381
|
+
}, t.onTTFB = (t, n = {}) => {
|
|
382
|
+
const s = b(n);
|
|
383
|
+
let c = g("TTFB"),
|
|
384
|
+
f = o(t, c, U, n.reportAllChanges);
|
|
385
|
+
V(() => {
|
|
386
|
+
const h = a();
|
|
387
|
+
if (h) {
|
|
388
|
+
const a = h.responseStart;
|
|
389
|
+
if (c.value = Math.max(a - r(), 0), c.entries = [h], f(true), i(() => {
|
|
390
|
+
c = g("TTFB", 0, "back-forward-cache", c.navigationId, c.navigationInteractionId, c.navigationURL, e()), f = o(t, c, U, n.reportAllChanges), f(true);
|
|
391
|
+
}), s) {
|
|
392
|
+
p(["soft-navigation"], e => {
|
|
393
|
+
e.forEach(e => {
|
|
394
|
+
e.navigationId && (c = g("TTFB", 0, "soft-navigation", e.navigationId, e.interactionId, e.name, e.startTime), c.entries = [e], f = o(t, c, U, n.reportAllChanges), f(true));
|
|
395
|
+
});
|
|
396
|
+
}, n);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
291
399
|
});
|
|
292
|
-
},
|
|
400
|
+
}, t;
|
|
293
401
|
})({});
|
|
294
402
|
|
|
295
403
|
function addCWVTracking({
|
|
@@ -348,4 +456,4 @@ function addCWVTracking({
|
|
|
348
456
|
}
|
|
349
457
|
|
|
350
458
|
export { addCWVTracking as default };
|
|
351
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3d2Lm1hcC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3dlYi12aXRhbHMvZGlzdC93ZWItdml0YWxzLmlpZmUuanMiLCIuLi8uLi9wbHVnaW5zL2N3di5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgd2ViVml0YWxzPWZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2xldCB0PS0xO2NvbnN0IG49ZT0+e2FkZEV2ZW50TGlzdGVuZXIoXCJwYWdlc2hvd1wiLG49PntuLnBlcnNpc3RlZCYmKHQ9bi50aW1lU3RhbXAsZShuKSl9LCEwKX0saT0oZSx0LG4saSk9PntsZXQgcyxvO3JldHVybiByPT57dC52YWx1ZT49MCYmKHJ8fGkpJiYobz10LnZhbHVlLShzPz8wKSwob3x8dm9pZCAwPT09cykmJihzPXQudmFsdWUsdC5kZWx0YT1vLHQucmF0aW5nPSgoZSx0KT0+ZT50WzFdP1wicG9vclwiOmU+dFswXT9cIm5lZWRzLWltcHJvdmVtZW50XCI6XCJnb29kXCIpKHQudmFsdWUsbiksZSh0KSkpfX0scz1lPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSkpfSxvPSgpPT57Y29uc3QgZT1wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwibmF2aWdhdGlvblwiKVswXTtpZihlJiZlLnJlc3BvbnNlU3RhcnQ+MCYmZS5yZXNwb25zZVN0YXJ0PHBlcmZvcm1hbmNlLm5vdygpKXJldHVybiBlfSxyPSgpPT5vKCk/LmFjdGl2YXRpb25TdGFydD8/MCxjPShlLG49LTEpPT57Y29uc3QgaT1vKCk7bGV0IHM9XCJuYXZpZ2F0ZVwiO3Q+PTA/cz1cImJhY2stZm9yd2FyZC1jYWNoZVwiOmkmJihkb2N1bWVudC5wcmVyZW5kZXJpbmd8fHIoKT4wP3M9XCJwcmVyZW5kZXJcIjpkb2N1bWVudC53YXNEaXNjYXJkZWQ/cz1cInJlc3RvcmVcIjppLnR5cGUmJihzPWkudHlwZS5yZXBsYWNlKC9fL2csXCItXCIpKSk7cmV0dXJue25hbWU6ZSx2YWx1ZTpuLHJhdGluZzpcImdvb2RcIixkZWx0YTowLGVudHJpZXM6W10saWQ6YHY1LSR7RGF0ZS5ub3coKX0tJHtNYXRoLmZsb29yKDg5OTk5OTk5OTk5OTkqTWF0aC5yYW5kb20oKSkrMWUxMn1gLG5hdmlnYXRpb25UeXBlOnN9fSxhPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIGQoZSx0KXtsZXQgbj1hLmdldCh0KTtyZXR1cm4gbnx8KG49bmV3IFdlYWtNYXAsYS5zZXQodCxuKSksbi5nZXQoZSl8fG4uc2V0KGUsbmV3IHQpLG4uZ2V0KGUpfWNsYXNzIGh7dDtpPTA7bz1bXTtoKGUpe2lmKGUuaGFkUmVjZW50SW5wdXQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5vWzBdLG49dGhpcy5vLmF0KC0xKTt0aGlzLmkmJnQmJm4mJmUuc3RhcnRUaW1lLW4uc3RhcnRUaW1lPDFlMyYmZS5zdGFydFRpbWUtdC5zdGFydFRpbWU8NWUzPyh0aGlzLmkrPWUudmFsdWUsdGhpcy5vLnB1c2goZSkpOih0aGlzLmk9ZS52YWx1ZSx0aGlzLm89W2VdKSx0aGlzLnQ/LihlKX19Y29uc3QgZj0oZSx0LG49e30pPT57dHJ5e2lmKFBlcmZvcm1hbmNlT2JzZXJ2ZXIuc3VwcG9ydGVkRW50cnlUeXBlcy5pbmNsdWRlcyhlKSl7Y29uc3QgaT1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcihlPT57cXVldWVNaWNyb3Rhc2soKCk9Pnt0KGUuZ2V0RW50cmllcygpKX0pfSk7cmV0dXJuIGkub2JzZXJ2ZSh7dHlwZTplLGJ1ZmZlcmVkOiEwLC4uLm59KSxpfX1jYXRjaHt9fSxsPWU9PntsZXQgdD0hMTtyZXR1cm4oKT0+e3R8fChlKCksdD0hMCl9fTtsZXQgdT0tMTtjb25zdCBtPW5ldyBTZXQsZz0oKT0+XCJoaWRkZW5cIiE9PWRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZXx8ZG9jdW1lbnQucHJlcmVuZGVyaW5nPzEvMDowLHA9ZT0+e2lmKFwiaGlkZGVuXCI9PT1kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUpe2lmKFwidmlzaWJpbGl0eWNoYW5nZVwiPT09ZS50eXBlKWZvcihjb25zdCBlIG9mIG0pZSgpO2lzRmluaXRlKHUpfHwodT1cInZpc2liaWxpdHljaGFuZ2VcIj09PWUudHlwZT9lLnRpbWVTdGFtcDowLHJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwcmVyZW5kZXJpbmdjaGFuZ2VcIixwLCEwKSl9fSx2PSgpPT57aWYodTwwKXtjb25zdCBlPXIoKSx0PWRvY3VtZW50LnByZXJlbmRlcmluZz92b2lkIDA6Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwidmlzaWJpbGl0eS1zdGF0ZVwiKS5maW5kKHQ9PlwiaGlkZGVuXCI9PT10Lm5hbWUmJnQuc3RhcnRUaW1lPj1lKT8uc3RhcnRUaW1lO3U9dD8/ZygpLGFkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIscCwhMCksYWRkRXZlbnRMaXN0ZW5lcihcInByZXJlbmRlcmluZ2NoYW5nZVwiLHAsITApLG4oKCk9PntzZXRUaW1lb3V0KCgpPT57dT1nKCl9KX0pfXJldHVybntnZXQgZmlyc3RIaWRkZW5UaW1lKCl7cmV0dXJuIHV9LG9uSGlkZGVuKGUpe20uYWRkKGUpfX19LHk9ZT0+e2RvY3VtZW50LnByZXJlbmRlcmluZz9hZGRFdmVudExpc3RlbmVyKFwicHJlcmVuZGVyaW5nY2hhbmdlXCIsZSwhMCk6ZSgpfSxUPVsxODAwLDNlM10sYj0oZSx0PXt9KT0+e3koKCk9Pntjb25zdCBvPXYoKTtsZXQgYSxkPWMoXCJGQ1BcIik7Y29uc3QgaD1mKFwicGFpbnRcIixlPT57Zm9yKGNvbnN0IHQgb2YgZSlcImZpcnN0LWNvbnRlbnRmdWwtcGFpbnRcIj09PXQubmFtZSYmKGguZGlzY29ubmVjdCgpLHQuc3RhcnRUaW1lPG8uZmlyc3RIaWRkZW5UaW1lJiYoZC52YWx1ZT1NYXRoLm1heCh0LnN0YXJ0VGltZS1yKCksMCksZC5lbnRyaWVzLnB1c2godCksYSghMCkpKX0pO2gmJihhPWkoZSxkLFQsdC5yZXBvcnRBbGxDaGFuZ2VzKSxuKG49PntkPWMoXCJGQ1BcIiksYT1pKGUsZCxULHQucmVwb3J0QWxsQ2hhbmdlcykscygoKT0+e2QudmFsdWU9cGVyZm9ybWFuY2Uubm93KCktbi50aW1lU3RhbXAsYSghMCl9KX0pKX0pfSxFPVsuMSwuMjVdO2xldCBMPTAsUD0xLzAsXz0wO2NvbnN0IE09ZT0+e2Zvcihjb25zdCB0IG9mIGUpdC5pbnRlcmFjdGlvbklkJiYoUD1NYXRoLm1pbihQLHQuaW50ZXJhY3Rpb25JZCksXz1NYXRoLm1heChfLHQuaW50ZXJhY3Rpb25JZCksTD1fPyhfLVApLzcrMTowKX07bGV0IHc7Y29uc3QgQz0oKT0+dz9MOnBlcmZvcm1hbmNlLmludGVyYWN0aW9uQ291bnQ/PzAsST0oKT0+e1wiaW50ZXJhY3Rpb25Db3VudFwiaW4gcGVyZm9ybWFuY2V8fHd8fCh3PWYoXCJldmVudFwiLE0se2R1cmF0aW9uVGhyZXNob2xkOjB9KSl9O2xldCBGPTA7Y2xhc3Mga3tsPVtdO3U9bmV3IE1hcDttO3A7digpe0Y9QygpLHRoaXMubC5sZW5ndGg9MCx0aGlzLnUuY2xlYXIoKX1UKCl7Y29uc3QgZT1NYXRoLm1pbih0aGlzLmwubGVuZ3RoLTEsTWF0aC5mbG9vcigoQygpLUYpLzUwKSk7cmV0dXJuIHRoaXMubFtlXX1oKGUpe2lmKHRoaXMubT8uKGUpLCFlLmludGVyYWN0aW9uSWQmJlwiZmlyc3QtaW5wdXRcIiE9PWUuZW50cnlUeXBlKXJldHVybjtjb25zdCB0PXRoaXMubC5hdCgtMSk7bGV0IG49dGhpcy51LmdldChlLmludGVyYWN0aW9uSWQpO2lmKG58fHRoaXMubC5sZW5ndGg8MTB8fGUuZHVyYXRpb24+dC5MKXtpZihuP2UuZHVyYXRpb24+bi5MPyhuLmVudHJpZXM9W2VdLG4uTD1lLmR1cmF0aW9uKTplLmR1cmF0aW9uPT09bi5MJiZlLnN0YXJ0VGltZT09PW4uZW50cmllc1swXS5zdGFydFRpbWUmJm4uZW50cmllcy5wdXNoKGUpOihuPXtpZDplLmludGVyYWN0aW9uSWQsZW50cmllczpbZV0sTDplLmR1cmF0aW9ufSx0aGlzLnUuc2V0KG4uaWQsbiksdGhpcy5sLnB1c2gobikpLHRoaXMubC5zb3J0KChlLHQpPT50LkwtZS5MKSx0aGlzLmwubGVuZ3RoPjEwKXtjb25zdCBlPXRoaXMubC5zcGxpY2UoMTApO2Zvcihjb25zdCB0IG9mIGUpdGhpcy51LmRlbGV0ZSh0LmlkKX10aGlzLnA/LihuKX19fWNvbnN0IEE9ZT0+e2NvbnN0IHQ9Z2xvYmFsVGhpcy5yZXF1ZXN0SWRsZUNhbGxiYWNrfHxzZXRUaW1lb3V0LG49Z2xvYmFsVGhpcy5jYW5jZWxJZGxlQ2FsbGJhY2t8fGNsZWFyVGltZW91dDtpZihcImhpZGRlblwiPT09ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlKWUoKTtlbHNle2NvbnN0IGk9bChlKTtsZXQgcz0tMTtjb25zdCBvPSgpPT57bihzKSxpKCl9O2FkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsbyx7b25jZTohMCxjYXB0dXJlOiEwfSkscz10KCgpPT57cmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIixvLHtjYXB0dXJlOiEwfSksaSgpfSl9fSxCPVsyMDAsNTAwXTtjbGFzcyBTe207aChlKXt0aGlzLm0/LihlKX19Y29uc3QgcT1bMjUwMCw0ZTNdLE49WzgwMCwxODAwXSxIPWU9Pntkb2N1bWVudC5wcmVyZW5kZXJpbmc/eSgoKT0+SChlKSk6XCJjb21wbGV0ZVwiIT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCgpPT5IKGUpLCEwKTpzZXRUaW1lb3V0KGUpfTtyZXR1cm4gZS5DTFNUaHJlc2hvbGRzPUUsZS5GQ1BUaHJlc2hvbGRzPVQsZS5JTlBUaHJlc2hvbGRzPUIsZS5MQ1BUaHJlc2hvbGRzPXEsZS5UVEZCVGhyZXNob2xkcz1OLGUub25DTFM9KGUsdD17fSk9Pntjb25zdCBvPXYoKTtiKGwoKCk9PntsZXQgcixhPWMoXCJDTFNcIiwwKTtjb25zdCBsPWQodCxoKSx1PWU9Pntmb3IoY29uc3QgdCBvZiBlKWwuaCh0KTtsLmk+YS52YWx1ZSYmKGEudmFsdWU9bC5pLGEuZW50cmllcz1sLm8scigpKX0sbT1mKFwibGF5b3V0LXNoaWZ0XCIsdSk7bSYmKHI9aShlLGEsRSx0LnJlcG9ydEFsbENoYW5nZXMpLG8ub25IaWRkZW4oKCk9Pnt1KG0udGFrZVJlY29yZHMoKSkscighMCl9KSxuKCgpPT57bC5pPTAsYT1jKFwiQ0xTXCIsMCkscj1pKGUsYSxFLHQucmVwb3J0QWxsQ2hhbmdlcykscyhyKX0pLHNldFRpbWVvdXQocikpfSkpfSxlLm9uRkNQPWIsZS5vbklOUD0oZSx0PXt9KT0+e2lmKCFnbG9iYWxUaGlzLlBlcmZvcm1hbmNlRXZlbnRUaW1pbmd8fCEoXCJpbnRlcmFjdGlvbklkXCJpbiBQZXJmb3JtYW5jZUV2ZW50VGltaW5nLnByb3RvdHlwZSkpcmV0dXJuO2NvbnN0IHM9digpO3koKCk9PntJKCk7bGV0IG8scj1jKFwiSU5QXCIpO2NvbnN0IGE9ZCh0LGspLGg9ZT0+e0EoKCk9Pntmb3IoY29uc3QgdCBvZiBlKWEuaCh0KTtjb25zdCB0PWEuVCgpO3QmJnQuTCE9PXIudmFsdWUmJihyLnZhbHVlPXQuTCxyLmVudHJpZXM9dC5lbnRyaWVzLG8oKSl9KX0sbD1mKFwiZXZlbnRcIixoLHtkdXJhdGlvblRocmVzaG9sZDp0LmR1cmF0aW9uVGhyZXNob2xkPz80MH0pO289aShlLHIsQix0LnJlcG9ydEFsbENoYW5nZXMpLGwmJihsLm9ic2VydmUoe3R5cGU6XCJmaXJzdC1pbnB1dFwiLGJ1ZmZlcmVkOiEwfSkscy5vbkhpZGRlbigoKT0+e2gobC50YWtlUmVjb3JkcygpKSxvKCEwKX0pLG4oKCk9PnthLnYoKSxyPWMoXCJJTlBcIiksbz1pKGUscixCLHQucmVwb3J0QWxsQ2hhbmdlcyl9KSl9KX0sZS5vbkxDUD0oZSx0PXt9KT0+e3koKCk9Pntjb25zdCBvPXYoKTtsZXQgYSxoPWMoXCJMQ1BcIik7Y29uc3QgdT1kKHQsUyksbT1lPT57dC5yZXBvcnRBbGxDaGFuZ2VzfHwoZT1lLnNsaWNlKC0xKSk7Zm9yKGNvbnN0IHQgb2YgZSl1LmgodCksdC5zdGFydFRpbWU8by5maXJzdEhpZGRlblRpbWUmJihoLnZhbHVlPU1hdGgubWF4KHQuc3RhcnRUaW1lLXIoKSwwKSxoLmVudHJpZXM9W3RdLGEoKSl9LGc9ZihcImxhcmdlc3QtY29udGVudGZ1bC1wYWludFwiLG0pO2lmKGcpe2E9aShlLGgscSx0LnJlcG9ydEFsbENoYW5nZXMpO2NvbnN0IG89bCgoKT0+e20oZy50YWtlUmVjb3JkcygpKSxnLmRpc2Nvbm5lY3QoKSxhKCEwKX0pLHI9ZT0+e2UuaXNUcnVzdGVkJiYoQShvKSxyZW1vdmVFdmVudExpc3RlbmVyKGUudHlwZSxyLHtjYXB0dXJlOiEwfSkpfTtmb3IoY29uc3QgZSBvZltcImtleWRvd25cIixcImNsaWNrXCIsXCJ2aXNpYmlsaXR5Y2hhbmdlXCJdKWFkZEV2ZW50TGlzdGVuZXIoZSxyLHtjYXB0dXJlOiEwfSk7bihuPT57aD1jKFwiTENQXCIpLGE9aShlLGgscSx0LnJlcG9ydEFsbENoYW5nZXMpLHMoKCk9PntoLnZhbHVlPXBlcmZvcm1hbmNlLm5vdygpLW4udGltZVN0YW1wLGEoITApfSl9KX19KX0sZS5vblRURkI9KGUsdD17fSk9PntsZXQgcz1jKFwiVFRGQlwiKSxhPWkoZSxzLE4sdC5yZXBvcnRBbGxDaGFuZ2VzKTtIKCgpPT57Y29uc3QgZD1vKCk7ZCYmKHMudmFsdWU9TWF0aC5tYXgoZC5yZXNwb25zZVN0YXJ0LXIoKSwwKSxzLmVudHJpZXM9W2RdLGEoITApLG4oKCk9PntzPWMoXCJUVEZCXCIsMCksYT1pKGUscyxOLHQucmVwb3J0QWxsQ2hhbmdlcyksYSghMCl9KSl9KX0sZX0oe30pO1xuIiwiLypcbiAqIENvcHlyaWdodCAyMDI0IEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHlcbiAqIG9mIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OU1xuICogT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlXG4gKiBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcywgaW1wb3J0L25vLXJlbGF0aXZlLXBhY2thZ2VzLCBuby11bnVzZWQtdmFyc1xuaW1wb3J0ICogYXMgd2ViVml0YWxzIGZyb20gJy4uL25vZGVfbW9kdWxlcy93ZWItdml0YWxzL2Rpc3Qvd2ViLXZpdGFscy5paWZlLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkQ1dWVHJhY2tpbmcoe1xuICBzYW1wbGVSVU0sIHNvdXJjZVNlbGVjdG9yLCB0YXJnZXRTZWxlY3RvciwgZmZsYWdzLFxufSkge1xuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3d2U2NyaXB0ID0gbmV3IFVSTCgnLnJ1bS93ZWItdml0YWxzL2Rpc3Qvd2ViLXZpdGFscy5paWZlLmpzJywgc2FtcGxlUlVNLmJhc2VVUkwpLmhyZWY7XG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7Y3d2U2NyaXB0fVwiXWApKSB7XG4gICAgICAgIC8vIHdlYiB2aXRhbHMgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZCBhbHJlYWR5XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgc2NyaXB0LnNyYyA9IGN3dlNjcmlwdDtcbiAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0b3JlQ1dWID0gKG1lYXN1cmVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHsgY3d2OiB7fSB9O1xuICAgICAgICAgIGRhdGEuY3d2W21lYXN1cmVtZW50Lm5hbWVdID0gbWVhc3VyZW1lbnQudmFsdWU7XG4gICAgICAgICAgaWYgKG1lYXN1cmVtZW50Lm5hbWUgPT09ICdMQ1AnICYmIG1lYXN1cmVtZW50LmVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgeyBlbGVtZW50IH0gPSBtZWFzdXJlbWVudC5lbnRyaWVzLnBvcCgpO1xuICAgICAgICAgICAgZGF0YS50YXJnZXQgPSB0YXJnZXRTZWxlY3RvcihlbGVtZW50KTtcbiAgICAgICAgICAgIGRhdGEuc291cmNlID0gc291cmNlU2VsZWN0b3IoZWxlbWVudCkgfHwgKGVsZW1lbnQgJiYgZWxlbWVudC5vdXRlckhUTUwuc2xpY2UoMCwgMzApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1lYXN1cmVtZW50Lm5hbWUgPT09ICdDTFMnICYmIG1lYXN1cmVtZW50LmVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gQXR0cmlidXRlIENMUyB0byB0aGUgZWxlbWVudCBvZiB0aGUgc2luZ2xlIGxhcmdlc3QgbGF5b3V0IHNoaWZ0XG4gICAgICAgICAgICAvLyAobWlycm9ycyB3ZWItdml0YWxzJyBgbGFyZ2VzdFNoaWZ0VGFyZ2V0YCwgZGVyaXZlZCBmcm9tIHRoZSBzdGFuZGFyZCBlbnRyaWVzKS5cbiAgICAgICAgICAgIGNvbnN0IGxhcmdlc3QgPSBtZWFzdXJlbWVudC5lbnRyaWVzXG4gICAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IChiLnZhbHVlID4gKGEgPyBhLnZhbHVlIDogMCkgPyBiIDogYSksIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGFyZ2VzdCAmJiBsYXJnZXN0LnNvdXJjZXNcbiAgICAgICAgICAgICAgJiYgbGFyZ2VzdC5zb3VyY2VzLm1hcCgocykgPT4gcy5ub2RlKS5maW5kKChuKSA9PiBuICYmIG4ubm9kZVR5cGUgPT09IDEpO1xuICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgZGF0YS5zb3VyY2UgPSBzb3VyY2VTZWxlY3Rvcihub2RlKSB8fCBub2RlLm91dGVySFRNTC5zbGljZSgwLCAzMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHNhbXBsZVJVTSgnY3d2JywgZGF0YSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNFYWdlciA9IChtZXRyaWMpID0+IFsnQ0xTJywgJ0xDUCddLmluY2x1ZGVzKG1ldHJpYyk7XG5cbiAgICAgICAgLy8gV2hlbiBsb2FkaW5nIGB3ZWItdml0YWxzYCB1c2luZyBhIGNsYXNzaWMgc2NyaXB0LCBhbGwgdGhlIHB1YmxpY1xuICAgICAgICAvLyBtZXRob2RzIGNhbiBiZSBmb3VuZCBvbiB0aGUgYHdlYlZpdGFsc2AgZ2xvYmFsIG5hbWVzcGFjZS5cbiAgICAgICAgWydJTlAnLCAnVFRGQicsICdDTFMnLCAnTENQJ10uZm9yRWFjaCgobWV0cmljKSA9PiB7XG4gICAgICAgICAgY29uc3QgbWV0cmljRm4gPSB3aW5kb3cud2ViVml0YWxzW2BvbiR7bWV0cmljfWBdO1xuICAgICAgICAgIGlmICh0eXBlb2YgbWV0cmljRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGxldCBvcHRzID0ge307XG4gICAgICAgICAgICBmZmxhZ3MuZW5hYmxlZCgnZWFnZXJjd3YnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIG9wdHMgPSB7IHJlcG9ydEFsbENoYW5nZXM6IGlzRWFnZXIobWV0cmljKSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtZXRyaWNGbihzdG9yZUNXViwgb3B0cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgfVxuICB9LCAyMDAwKTsgLy8gd2FpdCBmb3IgZGVsYXllZFxufVxuIl0sIm5hbWVzIjpbImUiLCJ0IiwibiIsImFkZEV2ZW50TGlzdGVuZXIiLCJwZXJzaXN0ZWQiLCJ0aW1lU3RhbXAiLCJpIiwicyIsIm8iLCJyIiwidmFsdWUiLCJkZWx0YSIsInJhdGluZyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInBlcmZvcm1hbmNlIiwiZ2V0RW50cmllc0J5VHlwZSIsInJlc3BvbnNlU3RhcnQiLCJub3ciLCJhY3RpdmF0aW9uU3RhcnQiLCJjIiwiZG9jdW1lbnQiLCJwcmVyZW5kZXJpbmciLCJ3YXNEaXNjYXJkZWQiLCJ0eXBlIiwicmVwbGFjZSIsIm5hbWUiLCJlbnRyaWVzIiwiaWQiLCJEYXRlIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwibmF2aWdhdGlvblR5cGUiLCJhIiwiV2Vha01hcCIsImQiLCJnZXQiLCJzZXQiLCJoIiwiaGFkUmVjZW50SW5wdXQiLCJhdCIsInN0YXJ0VGltZSIsInB1c2giLCJmIiwiUGVyZm9ybWFuY2VPYnNlcnZlciIsInN1cHBvcnRlZEVudHJ5VHlwZXMiLCJpbmNsdWRlcyIsInF1ZXVlTWljcm90YXNrIiwiZ2V0RW50cmllcyIsIm9ic2VydmUiLCJidWZmZXJlZCIsImwiLCJ1IiwibSIsIlNldCIsImciLCJ2aXNpYmlsaXR5U3RhdGUiLCJwIiwiaXNGaW5pdGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidiIsImdsb2JhbFRoaXMiLCJmaW5kIiwic2V0VGltZW91dCIsImZpcnN0SGlkZGVuVGltZSIsIm9uSGlkZGVuIiwiYWRkIiwieSIsIlQiLCJiIiwiZGlzY29ubmVjdCIsIm1heCIsInJlcG9ydEFsbENoYW5nZXMiLCJFIiwiTCIsIlAiLCJfIiwiTSIsImludGVyYWN0aW9uSWQiLCJtaW4iLCJ3IiwiQyIsImludGVyYWN0aW9uQ291bnQiLCJJIiwiZHVyYXRpb25UaHJlc2hvbGQiLCJGIiwiayIsIk1hcCIsImxlbmd0aCIsImNsZWFyIiwiZW50cnlUeXBlIiwiZHVyYXRpb24iLCJzb3J0Iiwic3BsaWNlIiwiZGVsZXRlIiwiQSIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJjYW5jZWxJZGxlQ2FsbGJhY2siLCJjbGVhclRpbWVvdXQiLCJvbmNlIiwiY2FwdHVyZSIsIkIiLCJTIiwicSIsIk4iLCJIIiwicmVhZHlTdGF0ZSIsIkNMU1RocmVzaG9sZHMiLCJGQ1BUaHJlc2hvbGRzIiwiSU5QVGhyZXNob2xkcyIsIkxDUFRocmVzaG9sZHMiLCJUVEZCVGhyZXNob2xkcyIsIm9uQ0xTIiwidGFrZVJlY29yZHMiLCJvbkZDUCIsIm9uSU5QIiwiUGVyZm9ybWFuY2VFdmVudFRpbWluZyIsInByb3RvdHlwZSIsIm9uTENQIiwic2xpY2UiLCJpc1RydXN0ZWQiLCJvblRURkIiLCJhZGRDV1ZUcmFja2luZyIsInNhbXBsZVJVTSIsInNvdXJjZVNlbGVjdG9yIiwidGFyZ2V0U2VsZWN0b3IiLCJmZmxhZ3MiLCJjd3ZTY3JpcHQiLCJVUkwiLCJiYXNlVVJMIiwiaHJlZiIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JpcHQiLCJjcmVhdGVFbGVtZW50Iiwic3JjIiwib25sb2FkIiwic3RvcmVDV1YiLCJtZWFzdXJlbWVudCIsImRhdGEiLCJjd3YiLCJlbGVtZW50IiwicG9wIiwidGFyZ2V0Iiwic291cmNlIiwib3V0ZXJIVE1MIiwibGFyZ2VzdCIsInJlZHVjZSIsInVuZGVmaW5lZCIsIm5vZGUiLCJzb3VyY2VzIiwibWFwIiwibm9kZVR5cGUiLCJpc0VhZ2VyIiwibWV0cmljIiwiZm9yRWFjaCIsIm1ldHJpY0ZuIiwid2luZG93Iiwid2ViVml0YWxzIiwib3B0cyIsImVuYWJsZWQiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Q0FBYyxVQUFTQSxDQUFDLEVBQUM7O0VBQWMsSUFBSUMsQ0FBQyxHQUFDLEVBQUU7RUFBQyxNQUFNQyxDQUFDLEdBQUNGLENBQUMsSUFBRTtBQUFDRyxNQUFBQSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUNELENBQUMsSUFBRTtBQUFDQSxRQUFBQSxDQUFDLENBQUNFLFNBQVMsS0FBR0gsQ0FBQyxHQUFDQyxDQUFDLENBQUNHLFNBQVMsRUFBQ0wsQ0FBQyxDQUFDRSxDQUFDLENBQUMsQ0FBQztNQUFBLENBQUMsRUFBQyxJQUFFLENBQUM7SUFBQSxDQUFDO0lBQUNJLENBQUMsR0FBQ0EsQ0FBQ04sQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0ksQ0FBQyxLQUFHO01BQUMsSUFBSUMsQ0FBQyxFQUFDQyxDQUFDO0FBQUMsTUFBQSxPQUFPQyxDQUFDLElBQUU7QUFBQ1IsUUFBQUEsQ0FBQyxDQUFDUyxLQUFLLElBQUUsQ0FBQyxLQUFHRCxDQUFDLElBQUVILENBQUMsQ0FBQyxLQUFHRSxDQUFDLEdBQUNQLENBQUMsQ0FBQ1MsS0FBSyxJQUFFSCxDQUFDLElBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQ0MsQ0FBQyxJQUFFLE1BQU0sS0FBR0QsQ0FBQyxNQUFJQSxDQUFDLEdBQUNOLENBQUMsQ0FBQ1MsS0FBSyxFQUFDVCxDQUFDLENBQUNV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
|
|
459
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3d2Lm1hcC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3dlYi12aXRhbHMvZGlzdC93ZWItdml0YWxzLmlpZmUuanMiLCIuLi8uLi9wbHVnaW5zL2N3di5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgd2ViVml0YWxzPWZ1bmN0aW9uKHQpe1widXNlIHN0cmljdFwiO2xldCBuPS0xO2NvbnN0IGU9KCk9Pm4saT10PT57YWRkRXZlbnRMaXN0ZW5lcihcInBhZ2VzaG93XCIsZT0+e2UucGVyc2lzdGVkJiYobj1lLnRpbWVTdGFtcCx0KGUpKX0sITApfSxvPSh0LG4sZSxpKT0+e2xldCBvLHM7cmV0dXJuIGE9PntuLnZhbHVlPj0wJiYoYXx8aSkmJihzPW4udmFsdWUtKG8/PzApLChzfHx2b2lkIDA9PT1vKSYmKG89bi52YWx1ZSxuLmRlbHRhPXMsbi5yYXRpbmc9KCh0LG4pPT50Pm5bMV0/XCJwb29yXCI6dD5uWzBdP1wibmVlZHMtaW1wcm92ZW1lbnRcIjpcImdvb2RcIikobi52YWx1ZSxlKSx0KG4pKSl9fSxzPXQ9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+dCgpKSl9LGE9KCk9Pntjb25zdCB0PXBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoXCJuYXZpZ2F0aW9uXCIpWzBdO2lmKHQmJnQucmVzcG9uc2VTdGFydD4wJiZ0LnJlc3BvbnNlU3RhcnQ8cGVyZm9ybWFuY2Uubm93KCkpcmV0dXJuIHR9LHI9KCk9PmEoKT8uYWN0aXZhdGlvblN0YXJ0Pz8wO2xldCBjPS0xO2NvbnN0IGY9bmV3IFNldCxoPSgpPT5cImhpZGRlblwiIT09ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlfHxkb2N1bWVudC5wcmVyZW5kZXJpbmc/MS8wOjAsZD10PT57aWYoXCJoaWRkZW5cIj09PWRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSl7aWYoXCJ2aXNpYmlsaXR5Y2hhbmdlXCI9PT10LnR5cGUpZm9yKGNvbnN0IHQgb2YgZil0KCk7aXNGaW5pdGUoYyl8fChjPVwidmlzaWJpbGl0eWNoYW5nZVwiPT09dC50eXBlP3QudGltZVN0YW1wOjAscmVtb3ZlRXZlbnRMaXN0ZW5lcihcInByZXJlbmRlcmluZ2NoYW5nZVwiLGQsITApKX19LGw9KHQ9ITEpPT57aWYodCYmKGM9MS8wKSxjPDApe2NvbnN0IHQ9cigpLG49ZG9jdW1lbnQucHJlcmVuZGVyaW5nP3ZvaWQgMDpnbG9iYWxUaGlzLnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoXCJ2aXNpYmlsaXR5LXN0YXRlXCIpLmZpbmQobj0+XCJoaWRkZW5cIj09PW4ubmFtZSYmbi5zdGFydFRpbWU+PXQpPy5zdGFydFRpbWU7Yz1uPz9oKCksYWRkRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIixkLCEwKSxhZGRFdmVudExpc3RlbmVyKFwicHJlcmVuZGVyaW5nY2hhbmdlXCIsZCwhMCksaSgoKT0+e3NldFRpbWVvdXQoKCk9PntjPWgoKX0pfSl9cmV0dXJue2dldCBmaXJzdEhpZGRlblRpbWUoKXtyZXR1cm4gY30sb25IaWRkZW4odCl7Zi5hZGQodCl9fX0sZz0odCxuPS0xLGksbz0wLHMsYyxmKT0+e2NvbnN0IGg9YSgpLGQ9aD8ubmF2aWdhdGlvbklkfHwwO2xldCBsPVwibmF2aWdhdGVcIjtpP2w9aTplKCk+PTA/bD1cImJhY2stZm9yd2FyZC1jYWNoZVwiOmgmJihkb2N1bWVudC5wcmVyZW5kZXJpbmd8fHIoKT4wP2w9XCJwcmVyZW5kZXJcIjpkb2N1bWVudC53YXNEaXNjYXJkZWQ/bD1cInJlc3RvcmVcIjpoLnR5cGUmJihsPWgudHlwZS5yZXBsYWNlKC9fL2csXCItXCIpKSk7cmV0dXJue25hbWU6dCx2YWx1ZTpuLHJhdGluZzpcImdvb2RcIixkZWx0YTowLGVudHJpZXM6W10saWQ6YHY2LSR7RGF0ZS5ub3coKX0tJHtNYXRoLmZsb29yKDg5OTk5OTk5OTk5OTkqTWF0aC5yYW5kb20oKSkrMWUxMn1gLG5hdmlnYXRpb25UeXBlOmwsbmF2aWdhdGlvbklkOm98fGQsbmF2aWdhdGlvbkludGVyYWN0aW9uSWQ6cyxuYXZpZ2F0aW9uVVJMOmN8fGg/Lm5hbWUsbmF2aWdhdGlvblN0YXJ0VGltZTpmfHwwfX0sdT1uZXcgV2Vha01hcDtmdW5jdGlvbiB2KHQsbil7bGV0IGU9dS5nZXQobik7cmV0dXJuIGV8fChlPW5ldyBXZWFrTWFwLHUuc2V0KG4sZSkpLGUuZ2V0KHQpfHxlLnNldCh0LG5ldyBuKSxlLmdldCh0KX1jbGFzcyBte3Q7aT0wO289W107aCh0KXtpZih0LmhhZFJlY2VudElucHV0KXJldHVybjtjb25zdCBuPXRoaXMub1swXSxlPXRoaXMuby5hdCgtMSk7dGhpcy5pJiZuJiZlJiZ0LnN0YXJ0VGltZS1lLnN0YXJ0VGltZTwxZTMmJnQuc3RhcnRUaW1lLW4uc3RhcnRUaW1lPDVlMz8odGhpcy5pKz10LnZhbHVlLHRoaXMuby5wdXNoKHQpKToodGhpcy5pPXQudmFsdWUsdGhpcy5vPVt0XSksdGhpcy50Py4odCl9fWNvbnN0IHA9KHQsbixlPXt9KT0+e3RyeXtjb25zdCBpPXQuZmlsdGVyKHQ9PlBlcmZvcm1hbmNlT2JzZXJ2ZXIuc3VwcG9ydGVkRW50cnlUeXBlcy5pbmNsdWRlcyh0KSk7aWYoaS5sZW5ndGg+MCl7Y29uc3QgdD1uZXcgUGVyZm9ybWFuY2VPYnNlcnZlcih0PT57cXVldWVNaWNyb3Rhc2soKCk9Pntjb25zdCBlPXQuZ2V0RW50cmllcygpO2kubGVuZ3RoPjEmJmUuc29ydCgodCxuKT0+dC5zdGFydFRpbWUrdC5kdXJhdGlvbi0obi5zdGFydFRpbWUrbi5kdXJhdGlvbikpLG4oZSl9KX0pO2Zvcihjb25zdCBuIG9mIGkpdC5vYnNlcnZlKHt0eXBlOm4sYnVmZmVyZWQ6ITAsLi4uZX0pO3JldHVybiB0fX1jYXRjaHt9fSxiPXQ9Pmdsb2JhbFRoaXMuUGVyZm9ybWFuY2VPYnNlcnZlcj8uc3VwcG9ydGVkRW50cnlUeXBlcz8uaW5jbHVkZXMoXCJzb2Z0LW5hdmlnYXRpb25cIikmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGdsb2JhbFRoaXMuUGVyZm9ybWFuY2VTb2Z0TmF2aWdhdGlvbj8ucHJvdG90eXBlPy5nZXRMYXJnZXN0SW50ZXJhY3Rpb25Db250ZW50ZnVsUGFpbnQmJnQmJnQucmVwb3J0U29mdE5hdnMsVD0odCxuKT0+e2lmKHQuc2V0KG4ubmF2aWdhdGlvbklkLG4pLHQuc2l6ZT4yKXtjb25zdCBuPXQua2V5cygpLm5leHQoKS52YWx1ZTt2b2lkIDAhPT1uJiZ0LmRlbGV0ZShuKX19LHk9dD0+e2xldCBuPSExO3JldHVybigpPT57bnx8KHQoKSxuPSEwKX19O2NsYXNzIF97bH1jb25zdCBFPXQ9Pntkb2N1bWVudC5wcmVyZW5kZXJpbmc/YWRkRXZlbnRMaXN0ZW5lcihcInByZXJlbmRlcmluZ2NoYW5nZVwiLHQsITApOnQoKX0sTT1bMTgwMCwzZTNdLEw9KHQsbj17fSk9Pntjb25zdCBhPWIobik7RSgoKT0+e2NvbnN0IGM9dihuLF8pLGY9bCgpO2xldCBoLGQ9ZyhcIkZDUFwiKTtjb25zdCB1PXAoW1wicGFpbnRcIl0sdD0+e2Zvcihjb25zdCBuIG9mIHQpXCJmaXJzdC1jb250ZW50ZnVsLXBhaW50XCI9PT1uLm5hbWUmJih1LmRpc2Nvbm5lY3QoKSxuLnN0YXJ0VGltZTxmLmZpcnN0SGlkZGVuVGltZSYmKGQudmFsdWU9TWF0aC5tYXgobi5zdGFydFRpbWUtcigpLDApLGQuZW50cmllcy5wdXNoKG4pLGQubmF2aWdhdGlvbklkPW4ubmF2aWdhdGlvbklkfHxkLm5hdmlnYXRpb25JZCxoKCEwKSkpfSk7aWYodSYmKGg9byh0LGQsTSxuLnJlcG9ydEFsbENoYW5nZXMpLGkoaT0+e2Q9ZyhcIkZDUFwiLC0xLFwiYmFjay1mb3J3YXJkLWNhY2hlXCIsZC5uYXZpZ2F0aW9uSWQsZC5uYXZpZ2F0aW9uSW50ZXJhY3Rpb25JZCxkLm5hdmlnYXRpb25VUkwsZSgpKSxoPW8odCxkLE0sbi5yZXBvcnRBbGxDaGFuZ2VzKSxzKCgpPT57ZC52YWx1ZT1wZXJmb3JtYW5jZS5ub3coKS1pLnRpbWVTdGFtcCxoKCEwKX0pfSkpLGEpe3AoW1wic29mdC1uYXZpZ2F0aW9uXCJdLGU9PntlLmZvckVhY2goZT0+e2MubCYmZS5uYXZpZ2F0aW9uSWQmJlQoYy5sLGUpO2NvbnN0IGk9TWF0aC5tYXgoKGUucHJlc2VudGF0aW9uVGltZXx8ZS5wYWludFRpbWV8fDApLWUuc3RhcnRUaW1lLDApO2Q9ZyhcIkZDUFwiLGksXCJzb2Z0LW5hdmlnYXRpb25cIixlLm5hdmlnYXRpb25JZCxlLmludGVyYWN0aW9uSWQsZS5uYW1lLGUuc3RhcnRUaW1lKSxoPW8odCxkLE0sbi5yZXBvcnRBbGxDaGFuZ2VzKSxoKCEwKX0pfSxuKX19KX0sdz1bLjEsLjI1XTtsZXQgUD0wLEk9MS8wLGs9MDtjb25zdCBDPXQ9Pntmb3IoY29uc3QgbiBvZiB0KW4uaW50ZXJhY3Rpb25JZCYmKEk9TWF0aC5taW4oSSxuLmludGVyYWN0aW9uSWQpLGs9TWF0aC5tYXgoayxuLmludGVyYWN0aW9uSWQpLFA9az8oay1JKS83KzE6MCl9O2xldCBGO2NvbnN0IE49KCk9PkY/UDpwZXJmb3JtYW5jZS5pbnRlcmFjdGlvbkNvdW50Pz8wLEI9KCk9PntcImludGVyYWN0aW9uQ291bnRcImluIHBlcmZvcm1hbmNlfHxGfHwoRj1wKFtcImV2ZW50XCJdLEMse2R1cmF0aW9uVGhyZXNob2xkOjB9KSl9O2NsYXNzIFN7dT0wO3Y9W107bT1uZXcgTWFwO3A7VDtfKCl7cmV0dXJuIE4oKS10aGlzLnV9TSgpe3RoaXMudT1OKCksdGhpcy52Lmxlbmd0aD0wLHRoaXMubS5jbGVhcigpfUwodCl7Y29uc3Qgbj10aGlzLl8oKSxlPU1hdGgubWluKHRoaXMudi5sZW5ndGgtMSxNYXRoLmZsb29yKG4vNTApKTtyZXR1cm4hbnx8LTEhPT1lfHxcInNvZnQtbmF2aWdhdGlvblwiIT09dCYmXCJiYWNrLWZvcndhcmQtY2FjaGVcIiE9PXQ/dGhpcy52W2VdOntQOjgsaWQ6LTEsZW50cmllczpbXX19aCh0KXtpZih0aGlzLnA/Lih0KSwhdC5pbnRlcmFjdGlvbklkKXJldHVybjtjb25zdCBuPXRoaXMudi5hdCgtMSk7bGV0IGU9dGhpcy5tLmdldCh0LmludGVyYWN0aW9uSWQpO2lmKGV8fHRoaXMudi5sZW5ndGg8MTB8fHQuZHVyYXRpb24+bi5QKXtpZihlP3QuZHVyYXRpb24+ZS5QPyhlLmVudHJpZXM9W3RdLGUuUD10LmR1cmF0aW9uKTp0LmR1cmF0aW9uPT09ZS5QJiZ0LnN0YXJ0VGltZT09PWUuZW50cmllc1swXS5zdGFydFRpbWUmJmUuZW50cmllcy5wdXNoKHQpOihlPXtpZDp0LmludGVyYWN0aW9uSWQsZW50cmllczpbdF0sUDp0LmR1cmF0aW9ufSx0aGlzLm0uc2V0KGUuaWQsZSksdGhpcy52LnB1c2goZSkpLHRoaXMudi5zb3J0KCh0LG4pPT5uLlAtdC5QKSx0aGlzLnYubGVuZ3RoPjEwKXtjb25zdCB0PXRoaXMudi5zcGxpY2UoMTApO2Zvcihjb25zdCBuIG9mIHQpdGhpcy5tLmRlbGV0ZShuLmlkKX10aGlzLlQ/LihlKX19fWNvbnN0IHE9dD0+e2NvbnN0IG49XCJyZXF1ZXN0SWRsZUNhbGxiYWNrXCJpbiBnbG9iYWxUaGlzPzFlMzowLGU9Z2xvYmFsVGhpcy5yZXF1ZXN0SWRsZUNhbGxiYWNrfHxzZXRUaW1lb3V0LGk9Z2xvYmFsVGhpcy5jYW5jZWxJZGxlQ2FsbGJhY2t8fGNsZWFyVGltZW91dDtpZihcImhpZGRlblwiPT09ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlKXQoKTtlbHNle2NvbnN0IG89eSh0KTtsZXQgcz0tMTtjb25zdCBhPSgpPT57aShzKSxvKCl9O2FkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsYSx7b25jZTohMCxjYXB0dXJlOiEwfSkscz1lKCgpPT57cmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIixhLHtjYXB0dXJlOiEwfSksbygpfSx7dGltZW91dDpufSl9fSxBPVsyMDAsNTAwXTtjbGFzcyBIe3A7bDtoKHQpe3RoaXMucD8uKHQpfX1jb25zdCBPPVsyNTAwLDRlM10sVT1bODAwLDE4MDBdLFY9dD0+e2RvY3VtZW50LnByZXJlbmRlcmluZz9FKCgpPT5WKHQpKTpcImNvbXBsZXRlXCIhPT1kb2N1bWVudC5yZWFkeVN0YXRlP2FkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsKCk9PlYodCksITApOnNldFRpbWVvdXQodCl9O3JldHVybiB0LkNMU1RocmVzaG9sZHM9dyx0LkZDUFRocmVzaG9sZHM9TSx0LklOUFRocmVzaG9sZHM9QSx0LkxDUFRocmVzaG9sZHM9Tyx0LlRURkJUaHJlc2hvbGRzPVUsdC5vbkNMUz0odCxuPXt9KT0+e2NvbnN0IGE9bCgpO0woeSgoKT0+e2xldCByLGM9ZyhcIkNMU1wiLDApO2NvbnN0IGY9dihuLG0pLGg9KGUsaSxzLGEsaCk9PntjPWcoXCJDTFNcIiwwLGUsaSxzLGEsaCksZi5pPTAscj1vKHQsYyx3LG4ucmVwb3J0QWxsQ2hhbmdlcyl9LGQ9KHQ9ITEpPT57Zi5pPmMudmFsdWUmJihjLnZhbHVlPWYuaSxjLmVudHJpZXM9Zi5vKSxyKHQpfSxsPXQ9PntkKCEwKSxoKFwic29mdC1uYXZpZ2F0aW9uXCIsdC5uYXZpZ2F0aW9uSWQsdC5pbnRlcmFjdGlvbklkLHQubmFtZSx0LnN0YXJ0VGltZSl9LHU9dD0+e2Zvcihjb25zdCBuIG9mIHQpXCJzb2Z0LW5hdmlnYXRpb25cIiE9PW4uZW50cnlUeXBlP2YuaChuKTpsKG4pO2QoKX0sVD1bXCJsYXlvdXQtc2hpZnRcIl07YihuKSYmVC5wdXNoKFwic29mdC1uYXZpZ2F0aW9uXCIpO2NvbnN0IHk9cChULHUpO3kmJihyPW8odCxjLHcsbi5yZXBvcnRBbGxDaGFuZ2VzKSxhLm9uSGlkZGVuKCgpPT57dSh5LnRha2VSZWNvcmRzKCkpLHIoITApfSksaSgoKT0+e2goXCJiYWNrLWZvcndhcmQtY2FjaGVcIixjLm5hdmlnYXRpb25JZCxjLm5hdmlnYXRpb25JbnRlcmFjdGlvbklkLGMubmF2aWdhdGlvblVSTCxlKCkpLHMocil9KSxzZXRUaW1lb3V0KHIpKX0pKX0sdC5vbkZDUD1MLHQub25JTlA9KHQsbj17fSk9PntpZighZ2xvYmFsVGhpcy5QZXJmb3JtYW5jZUV2ZW50VGltaW5nfHwhKFwiaW50ZXJhY3Rpb25JZFwiaW4gUGVyZm9ybWFuY2VFdmVudFRpbWluZy5wcm90b3R5cGUpKXJldHVybjtjb25zdCBzPWwoKTtFKCgpPT57QigpO2xldCBhLHI9ZyhcIklOUFwiKTtjb25zdCBjPXYobixTKSxmPShlLGkscyxmLGgpPT57Yy5NKCkscj1nKFwiSU5QXCIsLTEsZSxpLHMsZixoKSxhPW8odCxyLEEsbi5yZXBvcnRBbGxDaGFuZ2VzKX0saD0oKT0+e2NvbnN0IHQ9Yy5MKHIubmF2aWdhdGlvblR5cGUpO3QmJnQuUCE9PXIudmFsdWUmJihyLnZhbHVlPXQuUCxyLmVudHJpZXM9dC5lbnRyaWVzLGEoKSl9LGQ9dD0+e2goKSxhKCEwKSxmKFwic29mdC1uYXZpZ2F0aW9uXCIsdC5uYXZpZ2F0aW9uSWQsdC5pbnRlcmFjdGlvbklkLHQubmFtZSx0LnN0YXJ0VGltZSl9LGw9KHQsbj0hMSk9PntxKCgpPT57Zm9yKGNvbnN0IG4gb2YgdClcInNvZnQtbmF2aWdhdGlvblwiIT09bi5lbnRyeVR5cGU/Yy5oKG4pOmQobik7aCgpLG4mJmEoITApfSl9LHU9W1wiZXZlbnRcIixcImZpcnN0LWlucHV0XCJdO2IobikmJnUucHVzaChcInNvZnQtbmF2aWdhdGlvblwiKTtjb25zdCBtPXAodSxsLHsuLi5uLGR1cmF0aW9uVGhyZXNob2xkOm4uZHVyYXRpb25UaHJlc2hvbGQ/PzQwfSk7YT1vKHQscixBLG4ucmVwb3J0QWxsQ2hhbmdlcyksbSYmKHMub25IaWRkZW4oKCk9PntsKG0udGFrZVJlY29yZHMoKSwhMCl9KSxpKCgpPT57ZihcImJhY2stZm9yd2FyZC1jYWNoZVwiLHIubmF2aWdhdGlvbklkLHIubmF2aWdhdGlvbkludGVyYWN0aW9uSWQsci5uYXZpZ2F0aW9uVVJMLGUoKSl9KSl9KX0sdC5vbkxDUD0odCxuPXt9KT0+e2xldCBhPSExO2NvbnN0IGM9YihuKTtFKCgpPT57bGV0IGYsaD1sKCksZD1nKFwiTENQXCIpO2NvbnN0IHU9dihuLEgpLG09KGUsaSxzLHIsYyk9PntkPWcoXCJMQ1BcIiwtMSxlLGkscyxyLGMpLGY9byh0LGQsTyxuLnJlcG9ydEFsbENoYW5nZXMpLGE9ITEsXCJzb2Z0LW5hdmlnYXRpb25cIj09PWUmJihoPWwoITApKX0sYj10PT57dS5sJiZ0Lm5hdmlnYXRpb25JZCYmVCh1LmwsdCksYXx8ZighMCksbShcInNvZnQtbmF2aWdhdGlvblwiLHQubmF2aWdhdGlvbklkLHQuaW50ZXJhY3Rpb25JZCx0Lm5hbWUsdC5zdGFydFRpbWUpO2NvbnN0IG49dC5nZXRMYXJnZXN0SW50ZXJhY3Rpb25Db250ZW50ZnVsUGFpbnQ/LigpO24mJnkoW25dKX0seT10PT57bi5yZXBvcnRBbGxDaGFuZ2VzfHxjfHwodD10LnNsaWNlKC0xKSk7Zm9yKGNvbnN0IG4gb2YgdCl7aWYoIW4pY29udGludWU7aWYoXCJzb2Z0LW5hdmlnYXRpb25cIj09PW4uZW50cnlUeXBlKXtiKG4pO2NvbnRpbnVlfWxldCB0PTAsZT1bXSxpPW4uc3RhcnRUaW1lO2lmKFwibGFyZ2VzdC1jb250ZW50ZnVsLXBhaW50XCI9PT1uLmVudHJ5VHlwZSl0PU1hdGgubWF4KG4uc3RhcnRUaW1lLXIoKSwwKSx1LmgobiksZT1bbl07ZWxzZSBpZihcImludGVyYWN0aW9uLWNvbnRlbnRmdWwtcGFpbnRcIj09PW4uZW50cnlUeXBlKXtjb25zdCBvPW47aWYoIWQubmF2aWdhdGlvbklkKWNvbnRpbnVlO2lmKFwiaW50ZXJhY3Rpb25JZFwiaW4gbyYmby5pbnRlcmFjdGlvbklkIT1kLm5hdmlnYXRpb25JbnRlcmFjdGlvbklkKWNvbnRpbnVlO2k9by5sYXJnZXN0Q29udGVudGZ1bFBhaW50Py5yZW5kZXJUaW1lfHwwLHQ9TWF0aC5tYXgoaS1uLnN0YXJ0VGltZSwwKSxvLmxhcmdlc3RDb250ZW50ZnVsUGFpbnQmJih1Lmgoby5sYXJnZXN0Q29udGVudGZ1bFBhaW50KSxlPVtvLmxhcmdlc3RDb250ZW50ZnVsUGFpbnRdKX1pPGguZmlyc3RIaWRkZW5UaW1lJiYoZC52YWx1ZT10LGQuZW50cmllcz1lLGYoKSl9fSxfPVtcImxhcmdlc3QtY29udGVudGZ1bC1wYWludFwiXTtjJiZfLnB1c2goXCJpbnRlcmFjdGlvbi1jb250ZW50ZnVsLXBhaW50XCIsXCJzb2Z0LW5hdmlnYXRpb25cIik7Y29uc3QgRT1wKF8seSk7aWYoRSl7Zj1vKHQsZCxPLG4ucmVwb3J0QWxsQ2hhbmdlcyk7Y29uc3Qgcj1bXCJrZXlkb3duXCIsXCJjbGlja1wiLFwidmlzaWJpbGl0eWNoYW5nZVwiXSxoPXQ9PntpZih0LmlzVHJ1c3RlZCYmIWEpe2NvbnN0IHQ9ZC5pZDtxKCgpPT57aWYoIWEpe2lmKCFjKXtFLmRpc2Nvbm5lY3QoKTtmb3IoY29uc3QgdCBvZiByKXJlbW92ZUV2ZW50TGlzdGVuZXIodCxoLHtjYXB0dXJlOiEwfSl9dD09PWQuaWQmJihhPSEwLGYoITApKX19KX19O2Zvcihjb25zdCB0IG9mIHIpYWRkRXZlbnRMaXN0ZW5lcih0LGgse2NhcHR1cmU6ITB9KTtpKGk9PnttKFwiYmFjay1mb3J3YXJkLWNhY2hlXCIsZC5uYXZpZ2F0aW9uSWQsZC5uYXZpZ2F0aW9uSW50ZXJhY3Rpb25JZCxkLm5hdmlnYXRpb25VUkwsZSgpKSxmPW8odCxkLE8sbi5yZXBvcnRBbGxDaGFuZ2VzKSxzKCgpPT57ZC52YWx1ZT1wZXJmb3JtYW5jZS5ub3coKS1pLnRpbWVTdGFtcCxhPSEwLGYoITApfSl9KX19KX0sdC5vblRURkI9KHQsbj17fSk9Pntjb25zdCBzPWIobik7bGV0IGM9ZyhcIlRURkJcIiksZj1vKHQsYyxVLG4ucmVwb3J0QWxsQ2hhbmdlcyk7VigoKT0+e2NvbnN0IGg9YSgpO2lmKGgpe2NvbnN0IGE9aC5yZXNwb25zZVN0YXJ0O2lmKGMudmFsdWU9TWF0aC5tYXgoYS1yKCksMCksYy5lbnRyaWVzPVtoXSxmKCEwKSxpKCgpPT57Yz1nKFwiVFRGQlwiLDAsXCJiYWNrLWZvcndhcmQtY2FjaGVcIixjLm5hdmlnYXRpb25JZCxjLm5hdmlnYXRpb25JbnRlcmFjdGlvbklkLGMubmF2aWdhdGlvblVSTCxlKCkpLGY9byh0LGMsVSxuLnJlcG9ydEFsbENoYW5nZXMpLGYoITApfSkscyl7cChbXCJzb2Z0LW5hdmlnYXRpb25cIl0sZT0+e2UuZm9yRWFjaChlPT57ZS5uYXZpZ2F0aW9uSWQmJihjPWcoXCJUVEZCXCIsMCxcInNvZnQtbmF2aWdhdGlvblwiLGUubmF2aWdhdGlvbklkLGUuaW50ZXJhY3Rpb25JZCxlLm5hbWUsZS5zdGFydFRpbWUpLGMuZW50cmllcz1bZV0sZj1vKHQsYyxVLG4ucmVwb3J0QWxsQ2hhbmdlcyksZighMCkpfSl9LG4pfX19KX0sdH0oe30pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9d2ViLXZpdGFscy5paWZlLmpzLm1hcFxuIiwiLypcbiAqIENvcHlyaWdodCAyMDI0IEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHlcbiAqIG9mIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OU1xuICogT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlXG4gKiBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcywgaW1wb3J0L25vLXJlbGF0aXZlLXBhY2thZ2VzLCBuby11bnVzZWQtdmFyc1xuaW1wb3J0ICogYXMgd2ViVml0YWxzIGZyb20gJy4uL25vZGVfbW9kdWxlcy93ZWItdml0YWxzL2Rpc3Qvd2ViLXZpdGFscy5paWZlLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkQ1dWVHJhY2tpbmcoe1xuICBzYW1wbGVSVU0sIHNvdXJjZVNlbGVjdG9yLCB0YXJnZXRTZWxlY3RvciwgZmZsYWdzLFxufSkge1xuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3d2U2NyaXB0ID0gbmV3IFVSTCgnLnJ1bS93ZWItdml0YWxzL2Rpc3Qvd2ViLXZpdGFscy5paWZlLmpzJywgc2FtcGxlUlVNLmJhc2VVUkwpLmhyZWY7XG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7Y3d2U2NyaXB0fVwiXWApKSB7XG4gICAgICAgIC8vIHdlYiB2aXRhbHMgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZCBhbHJlYWR5XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgc2NyaXB0LnNyYyA9IGN3dlNjcmlwdDtcbiAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0b3JlQ1dWID0gKG1lYXN1cmVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHsgY3d2OiB7fSB9O1xuICAgICAgICAgIGRhdGEuY3d2W21lYXN1cmVtZW50Lm5hbWVdID0gbWVhc3VyZW1lbnQudmFsdWU7XG4gICAgICAgICAgaWYgKG1lYXN1cmVtZW50Lm5hbWUgPT09ICdMQ1AnICYmIG1lYXN1cmVtZW50LmVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgeyBlbGVtZW50IH0gPSBtZWFzdXJlbWVudC5lbnRyaWVzLnBvcCgpO1xuICAgICAgICAgICAgZGF0YS50YXJnZXQgPSB0YXJnZXRTZWxlY3RvcihlbGVtZW50KTtcbiAgICAgICAgICAgIGRhdGEuc291cmNlID0gc291cmNlU2VsZWN0b3IoZWxlbWVudCkgfHwgKGVsZW1lbnQgJiYgZWxlbWVudC5vdXRlckhUTUwuc2xpY2UoMCwgMzApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1lYXN1cmVtZW50Lm5hbWUgPT09ICdDTFMnICYmIG1lYXN1cmVtZW50LmVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gQXR0cmlidXRlIENMUyB0byB0aGUgZWxlbWVudCBvZiB0aGUgc2luZ2xlIGxhcmdlc3QgbGF5b3V0IHNoaWZ0XG4gICAgICAgICAgICAvLyAobWlycm9ycyB3ZWItdml0YWxzJyBgbGFyZ2VzdFNoaWZ0VGFyZ2V0YCwgZGVyaXZlZCBmcm9tIHRoZSBzdGFuZGFyZCBlbnRyaWVzKS5cbiAgICAgICAgICAgIGNvbnN0IGxhcmdlc3QgPSBtZWFzdXJlbWVudC5lbnRyaWVzXG4gICAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IChiLnZhbHVlID4gKGEgPyBhLnZhbHVlIDogMCkgPyBiIDogYSksIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gbGFyZ2VzdCAmJiBsYXJnZXN0LnNvdXJjZXNcbiAgICAgICAgICAgICAgJiYgbGFyZ2VzdC5zb3VyY2VzLm1hcCgocykgPT4gcy5ub2RlKS5maW5kKChuKSA9PiBuICYmIG4ubm9kZVR5cGUgPT09IDEpO1xuICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgZGF0YS5zb3VyY2UgPSBzb3VyY2VTZWxlY3Rvcihub2RlKSB8fCBub2RlLm91dGVySFRNTC5zbGljZSgwLCAzMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHNhbXBsZVJVTSgnY3d2JywgZGF0YSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaXNFYWdlciA9IChtZXRyaWMpID0+IFsnQ0xTJywgJ0xDUCddLmluY2x1ZGVzKG1ldHJpYyk7XG5cbiAgICAgICAgLy8gV2hlbiBsb2FkaW5nIGB3ZWItdml0YWxzYCB1c2luZyBhIGNsYXNzaWMgc2NyaXB0LCBhbGwgdGhlIHB1YmxpY1xuICAgICAgICAvLyBtZXRob2RzIGNhbiBiZSBmb3VuZCBvbiB0aGUgYHdlYlZpdGFsc2AgZ2xvYmFsIG5hbWVzcGFjZS5cbiAgICAgICAgWydJTlAnLCAnVFRGQicsICdDTFMnLCAnTENQJ10uZm9yRWFjaCgobWV0cmljKSA9PiB7XG4gICAgICAgICAgY29uc3QgbWV0cmljRm4gPSB3aW5kb3cud2ViVml0YWxzW2BvbiR7bWV0cmljfWBdO1xuICAgICAgICAgIGlmICh0eXBlb2YgbWV0cmljRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGxldCBvcHRzID0ge307XG4gICAgICAgICAgICBmZmxhZ3MuZW5hYmxlZCgnZWFnZXJjd3YnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIG9wdHMgPSB7IHJlcG9ydEFsbENoYW5nZXM6IGlzRWFnZXIobWV0cmljKSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtZXRyaWNGbihzdG9yZUNXViwgb3B0cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nXG4gICAgfVxuICB9LCAyMDAwKTsgLy8gd2FpdCBmb3IgZGVsYXllZFxufVxuIl0sIm5hbWVzIjpbIm4iLCJlIiwiaSIsInQiLCJhZGRFdmVudExpc3RlbmVyIiwicGVyc2lzdGVkIiwidGltZVN0YW1wIiwiYWRkQ1dWVHJhY2tpbmciLCJzYW1wbGVSVU0iLCJzb3VyY2VTZWxlY3RvciIsInRhcmdldFNlbGVjdG9yIiwiZmZsYWdzIiwic2V0VGltZW91dCIsImN3dlNjcmlwdCIsIlVSTCIsImJhc2VVUkwiLCJocmVmIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2NyaXB0IiwiY3JlYXRlRWxlbWVudCIsInNyYyIsIm9ubG9hZCIsInN0b3JlQ1dWIiwibWVhc3VyZW1lbnQiLCJkYXRhIiwiY3d2IiwibmFtZSIsInZhbHVlIiwiZW50cmllcyIsImxlbmd0aCIsImVsZW1lbnQiLCJwb3AiLCJ0YXJnZXQiLCJzb3VyY2UiLCJvdXRlckhUTUwiLCJzbGljZSIsImxhcmdlc3QiLCJyZWR1Y2UiLCJhIiwiYiIsInVuZGVmaW5lZCIsIm5vZGUiLCJzb3VyY2VzIiwibWFwIiwicyIsImZpbmQiLCJub2RlVHlwZSIsImlzRWFnZXIiLCJtZXRyaWMiLCJpbmNsdWRlcyIsImZvckVhY2giLCJtZXRyaWNGbiIsIndpbmRvdyIsIndlYlZpdGFscyIsIm9wdHMiLCJlbmFibGVkIiwicmVwb3J0QWxsQ2hhbmdlcyIsImhlYWQiLCJhcHBlbmRDaGlsZCIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBb0JBLEVBQUEsSUFBSUEsQ0FBQSxHQUFBLEVBQXFCO0FBRWxCLEVBQUEsTUFBTUMsQ0FBQSxHQUF3QkEsTUFBTUQsQ0FBQTtBQUU5QkUsSUFBQUEsQ0FBQSxHQUFvQkMsQ0FBQSxJQUFBO01BQy9CQyxnQkFBQSxDQUNFLFlBQ0NILENBQUEsSUFBQTtRQUNLQSxDQUFBLENBQU1JLFNBQUEsS0FDUkwsQ0FBQSxHQUFxQkMsQ0FBQSxDQUFNSyxTQUFBLEVBQzNCSCxDQUFBLENBQUdGLENBQUEsQ0FBQSxDQUFB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
|