@getopenpay/openpay-js-react 0.2.15-alpha.adaa258 → 0.2.16-alpha.1b02bc3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.js +65 -68
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { createContext as
|
|
1
|
+
import { createContext as Br, useContext as Wr, useState as ce, useCallback as Jr, useEffect as dt, useRef as Xr, useMemo as it } from "react";
|
|
2
2
|
import { jsx as H, Fragment as st } from "react/jsx-runtime";
|
|
3
3
|
import { z as e } from "zod";
|
|
4
4
|
import { v4 as bt } from "uuid";
|
|
5
5
|
import { connectToChild as Xt } from "penpal";
|
|
6
6
|
import le from "chalk";
|
|
7
|
-
const Qt =
|
|
7
|
+
const Qt = Br({
|
|
8
8
|
formId: "",
|
|
9
9
|
formHeight: "",
|
|
10
10
|
referrer: void 0,
|
|
@@ -303,20 +303,20 @@ const Mn = e.object({
|
|
|
303
303
|
}), $n = {
|
|
304
304
|
usd: "usd",
|
|
305
305
|
brl: "brl"
|
|
306
|
-
},
|
|
306
|
+
}, Ze = async (t) => {
|
|
307
307
|
for (let n = 0; n < 10; n++)
|
|
308
308
|
At() || await Ct(500);
|
|
309
309
|
if (!At())
|
|
310
310
|
throw console.log("Stripe JS not found."), new Error("Stripe JS not found.");
|
|
311
311
|
return new Stripe(t);
|
|
312
312
|
}, qn = async (t, n) => {
|
|
313
|
-
const r = await
|
|
313
|
+
const r = await Ze(t);
|
|
314
314
|
return {
|
|
315
315
|
elements: r.elements(n),
|
|
316
316
|
stripe: r
|
|
317
317
|
};
|
|
318
318
|
}, Gn = async (t, n, r, o, a) => {
|
|
319
|
-
const i = await
|
|
319
|
+
const i = await Ze(t), s = $n[r.toLowerCase().trim()];
|
|
320
320
|
return i.paymentRequest({
|
|
321
321
|
// TODO: replace this with stripe account country as soon as we support it
|
|
322
322
|
country: "US",
|
|
@@ -348,7 +348,7 @@ const Mn = e.object({
|
|
|
348
348
|
}), Yn = async (t, n) => {
|
|
349
349
|
if (!t.stripe_pk || !t.client_secret)
|
|
350
350
|
throw new Error(`Invalid next action metadata format: ${JSON.stringify(t)}`);
|
|
351
|
-
const r = await (await
|
|
351
|
+
const r = await (await Ze(t.stripe_pk)).confirmCardSetup(t.client_secret, {
|
|
352
352
|
payment_method: n.paymentMethod.id
|
|
353
353
|
});
|
|
354
354
|
if (r.error)
|
|
@@ -356,7 +356,7 @@ const Mn = e.object({
|
|
|
356
356
|
return n.complete("success"), r;
|
|
357
357
|
}, Kn = async (t) => {
|
|
358
358
|
var n, r, o, a;
|
|
359
|
-
const i = await (await
|
|
359
|
+
const i = await (await Ze(t.stripe_pk)).confirmCardSetup(t.client_secret, {
|
|
360
360
|
payment_method: t.stripe_pm_id
|
|
361
361
|
}), s = (n = i.setupIntent) == null ? void 0 : n.status;
|
|
362
362
|
if (s === "succeeded")
|
|
@@ -367,13 +367,13 @@ const Mn = e.object({
|
|
|
367
367
|
}, Hn = (t) => JSON.stringify(t), te = (t, n) => Array.from(t.querySelectorAll("[data-opid]") ?? []).reduce((r, o) => {
|
|
368
368
|
const a = o.getAttribute("data-opid");
|
|
369
369
|
return a ? { ...r, [a]: o.value } : r;
|
|
370
|
-
}, {}),
|
|
370
|
+
}, {}), Zn = (t) => {
|
|
371
371
|
try {
|
|
372
372
|
return Rn.parse(t);
|
|
373
373
|
} catch (n) {
|
|
374
374
|
throw console.error("Error parsing event payload:", t, n), n;
|
|
375
375
|
}
|
|
376
|
-
},
|
|
376
|
+
}, Bn = async (t) => {
|
|
377
377
|
if (typeof t != "object" || !t) return !1;
|
|
378
378
|
try {
|
|
379
379
|
const n = { type: "ping" }, r = await t.send(n);
|
|
@@ -655,7 +655,7 @@ const F = async (t, n, r) => {
|
|
|
655
655
|
throw a.success ? new Error("Invalid state") : (console.error("OJS queryApi got a schema error. Expected schema:", r, "Actual:", o), a.error);
|
|
656
656
|
}
|
|
657
657
|
return o;
|
|
658
|
-
}, vo = (t, n) => n.safeParse(t).success, Co = (t) => Jn.safeParse(t).success, Eo = async (t, n) => await F(t, { type: "get_checkout_preview", payload: n }, cr), T = async (t) => await F(t, { type: "get_prefill", payload: {} }, lr), ke = async (t, n) => await F(t, { type: "v2_start_payment_flow", payload: n }, dr), Po = async (t, n) => await F(t, { type: "start_payment_flow_for_cc", payload: n }, mo), ko = async (t, n) => await F(t, { type: "start_payment_flow_for_pr", payload: n }, dr),
|
|
658
|
+
}, vo = (t, n) => n.safeParse(t).success, Co = (t) => Jn.safeParse(t).success, Eo = async (t, n) => await F(t, { type: "get_checkout_preview", payload: n }, cr), T = async (t) => await F(t, { type: "get_prefill", payload: {} }, lr), ke = async (t, n) => await F(t, { type: "v2_start_payment_flow", payload: n }, dr), Po = async (t, n) => await F(t, { type: "start_payment_flow_for_cc", payload: n }, mo), ko = async (t, n) => await F(t, { type: "start_payment_flow_for_pr", payload: n }, dr), Z = async (t, n) => await F(t, { type: "confirm_payment_flow", payload: n }, Ln), So = async (t, n) => await F(t, { type: "finalize_setup_payment_method", payload: n }, ur), Ao = async (t, n) => await F(
|
|
659
659
|
t,
|
|
660
660
|
{ type: "check_if_popup_window_verified", payload: n },
|
|
661
661
|
Dn
|
|
@@ -714,7 +714,7 @@ const F = async (t, n, r) => {
|
|
|
714
714
|
return console.error("[cde-client] Error during getStandardizedErrorCode:", re(r)), "PAYMENT_FAILED_GENERIC";
|
|
715
715
|
}
|
|
716
716
|
};
|
|
717
|
-
function
|
|
717
|
+
function Be(t) {
|
|
718
718
|
throw new Error(`Unhandled case: ${t}`);
|
|
719
719
|
}
|
|
720
720
|
const ie = (t) => async (n) => {
|
|
@@ -922,7 +922,7 @@ const ie = (t) => async (n) => {
|
|
|
922
922
|
const u = Lo.parse(l.required_user_actions)[0].our_existing_pm_id, d = await T(i);
|
|
923
923
|
if (d.mode === "setup") {
|
|
924
924
|
x("Doing payment setup...");
|
|
925
|
-
const _ = await
|
|
925
|
+
const _ = await Z(i, {
|
|
926
926
|
secure_token: d.token,
|
|
927
927
|
existing_cc_pm_id: u
|
|
928
928
|
});
|
|
@@ -1019,7 +1019,7 @@ const br = async (t) => {
|
|
|
1019
1019
|
throw new Error("3DS verification cancelled");
|
|
1020
1020
|
if (n.status === R.FAILURE)
|
|
1021
1021
|
throw new Error("3DS verification failed");
|
|
1022
|
-
return n.status !== R.SUCCESS &&
|
|
1022
|
+
return n.status !== R.SUCCESS && Be(n.status), {
|
|
1023
1023
|
href: n.href
|
|
1024
1024
|
};
|
|
1025
1025
|
}, Yo = (t, n) => {
|
|
@@ -1042,12 +1042,12 @@ const br = async (t) => {
|
|
|
1042
1042
|
}
|
|
1043
1043
|
}, 1e3);
|
|
1044
1044
|
});
|
|
1045
|
-
}, { log__: Ho, err__: wr } = A("pockyt-cc"),
|
|
1045
|
+
}, { log__: Ho, err__: wr } = A("pockyt-cc"), Zo = e.object({
|
|
1046
1046
|
"op-pockyt-3ds-url": e.string(),
|
|
1047
1047
|
"op-pockyt-txn-no": e.string(),
|
|
1048
1048
|
"op-pockyt-ref-no": e.string()
|
|
1049
|
-
}),
|
|
1050
|
-
const n =
|
|
1049
|
+
}), Bo = (t) => {
|
|
1050
|
+
const n = Zo.safeParse(t);
|
|
1051
1051
|
if (!n.success) {
|
|
1052
1052
|
const r = "Unable to process your credit card. Please contact support for assistance.", o = `Pockyt 3DS is required but headers are malformed. Got: ${JSON.stringify(t)}`;
|
|
1053
1053
|
throw wr(o), new Error(r);
|
|
@@ -1065,7 +1065,7 @@ const br = async (t) => {
|
|
|
1065
1065
|
Error: ${re(n)}`), new Error(r);
|
|
1066
1066
|
}
|
|
1067
1067
|
}, Wo = (t, n) => new URL(t).searchParams.get(n), Jo = (t) => (t == null ? void 0 : t["op-pockyt-3ds-url"]) !== void 0, Xo = async (t, n) => {
|
|
1068
|
-
const r =
|
|
1068
|
+
const r = Bo(n), o = await br({ url: r["op-pockyt-3ds-url"], baseUrl: t });
|
|
1069
1069
|
return {
|
|
1070
1070
|
existing_cc: {
|
|
1071
1071
|
vault_id: vr(o.href ?? ""),
|
|
@@ -1132,10 +1132,7 @@ Error: ${re(n)}`), new Error(r);
|
|
|
1132
1132
|
if (!n.success)
|
|
1133
1133
|
throw qe(`Adyen 3DS is required but headers are malformed. Got: ${JSON.stringify(t)}`), new Error(Pr);
|
|
1134
1134
|
return n.data;
|
|
1135
|
-
}, ca = (t) => {
|
|
1136
|
-
const n = Buffer.from(t, "base64").toString("utf-8");
|
|
1137
|
-
return JSON.parse(n);
|
|
1138
|
-
}, Nt = () => "AdyenWeb" in window && "AdyenCheckout" in window.AdyenWeb, la = async () => {
|
|
1135
|
+
}, ca = (t) => JSON.parse(t), Nt = () => "AdyenWeb" in window && "AdyenCheckout" in window.AdyenWeb, la = async () => {
|
|
1139
1136
|
Te("Waiting for Adyen SDK to load...");
|
|
1140
1137
|
for (let t = 0; t < 10; t++)
|
|
1141
1138
|
Nt() || await Ct(500);
|
|
@@ -1198,7 +1195,7 @@ Error: ${re(n)}`), new Error(r);
|
|
|
1198
1195
|
}
|
|
1199
1196
|
};
|
|
1200
1197
|
} else
|
|
1201
|
-
|
|
1198
|
+
Be(l.status);
|
|
1202
1199
|
}, { log__: P, err__: Tt } = A("common-cc"), { log__: jt } = A("stripe-cc");
|
|
1203
1200
|
e.array(
|
|
1204
1201
|
e.object({
|
|
@@ -1269,7 +1266,7 @@ const ma = ie(
|
|
|
1269
1266
|
const y = f.cc_pm_id;
|
|
1270
1267
|
if (c.mode === "setup") {
|
|
1271
1268
|
P(`├ Confirming payment flow [cc_pm_id: ${y}]`);
|
|
1272
|
-
const h = await
|
|
1269
|
+
const h = await Z(s, {
|
|
1273
1270
|
secure_token: c.token,
|
|
1274
1271
|
existing_cc_pm_id: y
|
|
1275
1272
|
});
|
|
@@ -1314,8 +1311,8 @@ const ma = ie(
|
|
|
1314
1311
|
}, ga = async (t) => {
|
|
1315
1312
|
const n = ya(t);
|
|
1316
1313
|
jt(`├ Using stripe 3DS flow [Client Secret: ${n.client_secret.substring(0, 8)}...]`), await Kn(n), jt("╰ Stripe 3DS flow completed successfully");
|
|
1317
|
-
},
|
|
1318
|
-
|
|
1314
|
+
}, B = e.enum(["stripe", "airwallex", "authorize_net"]);
|
|
1315
|
+
B.Enum.stripe;
|
|
1319
1316
|
const { log__: U, err__: ba } = A("stripe-pr"), wa = e.object({
|
|
1320
1317
|
provider: e.union([e.literal("apple_pay"), e.literal("google_pay")]),
|
|
1321
1318
|
processor_name: e.literal("stripe"),
|
|
@@ -1347,7 +1344,7 @@ const { log__: U, err__: ba } = A("stripe-pr"), wa = e.object({
|
|
|
1347
1344
|
formCallbacks: n,
|
|
1348
1345
|
customParams: { provider: d, overridePaymentRequest: _ == null ? void 0 : _.overridePaymentRequest },
|
|
1349
1346
|
initResult: {
|
|
1350
|
-
processor:
|
|
1347
|
+
processor: B.Enum.stripe,
|
|
1351
1348
|
pr: c,
|
|
1352
1349
|
isAvailable: !0,
|
|
1353
1350
|
availableProviders: { applePay: l.applePay, googlePay: l.googlePay },
|
|
@@ -1355,7 +1352,7 @@ const { log__: U, err__: ba } = A("stripe-pr"), wa = e.object({
|
|
|
1355
1352
|
}
|
|
1356
1353
|
});
|
|
1357
1354
|
return {
|
|
1358
|
-
processor:
|
|
1355
|
+
processor: B.Enum.stripe,
|
|
1359
1356
|
isAvailable: !0,
|
|
1360
1357
|
pr: c,
|
|
1361
1358
|
availableProviders: {
|
|
@@ -1394,7 +1391,7 @@ const { log__: U, err__: ba } = A("stripe-pr"), wa = e.object({
|
|
|
1394
1391
|
const m = await T(s);
|
|
1395
1392
|
if (m.mode === "setup") {
|
|
1396
1393
|
U("Confirming payment flow for setup...");
|
|
1397
|
-
const y = await
|
|
1394
|
+
const y = await Z(s, {
|
|
1398
1395
|
secure_token: m.token
|
|
1399
1396
|
});
|
|
1400
1397
|
return { mode: "setup", result: Me(y) };
|
|
@@ -1503,7 +1500,7 @@ const Aa = ie(
|
|
|
1503
1500
|
if (!D)
|
|
1504
1501
|
throw Mt("Checkout attempt ID not found in redirect URL:", I.href), new Error("Checkout attempt ID not found in redirect URL");
|
|
1505
1502
|
Q(`Confirming payment flow using vault ID ${q}`);
|
|
1506
|
-
const se = await
|
|
1503
|
+
const se = await Z(c, {
|
|
1507
1504
|
secure_token: l.token,
|
|
1508
1505
|
their_pm_id: q,
|
|
1509
1506
|
checkout_attempt_id: y ? D : void 0
|
|
@@ -1598,7 +1595,7 @@ const Sr = (t) => t === wt || t === window.location.origin ? "PRODUCTION" : "TES
|
|
|
1598
1595
|
async ({ context: t, formCallbacks: n }) => {
|
|
1599
1596
|
var r, o;
|
|
1600
1597
|
const a = {
|
|
1601
|
-
processor:
|
|
1598
|
+
processor: B.Enum.airwallex,
|
|
1602
1599
|
isAvailable: !1,
|
|
1603
1600
|
isLoading: !1,
|
|
1604
1601
|
startFlow: async () => {
|
|
@@ -1652,7 +1649,7 @@ const Sr = (t) => t === wt || t === window.location.origin ? "PRODUCTION" : "TES
|
|
|
1652
1649
|
}
|
|
1653
1650
|
};
|
|
1654
1651
|
return {
|
|
1655
|
-
processor:
|
|
1652
|
+
processor: B.Enum.airwallex,
|
|
1656
1653
|
isAvailable: !0,
|
|
1657
1654
|
isLoading: !1,
|
|
1658
1655
|
startFlow: _
|
|
@@ -1689,7 +1686,7 @@ const Sr = (t) => t === wt || t === window.location.origin ? "PRODUCTION" : "TES
|
|
|
1689
1686
|
), se = (s = (i = v.paymentMethodData) == null ? void 0 : i.tokenizationData) == null ? void 0 : s.token;
|
|
1690
1687
|
if (!se)
|
|
1691
1688
|
throw new Error("No payment token received from Google Pay");
|
|
1692
|
-
const
|
|
1689
|
+
const Zr = await ke(g, {
|
|
1693
1690
|
payment_provider: n.provider,
|
|
1694
1691
|
checkout_payment_method: n,
|
|
1695
1692
|
new_customer_email: D[p.EMAIL],
|
|
@@ -1699,9 +1696,9 @@ const Sr = (t) => t === wt || t === window.location.origin ? "PRODUCTION" : "TES
|
|
|
1699
1696
|
zip_code: D[p.ZIP_CODE],
|
|
1700
1697
|
country: D[p.COUNTRY]
|
|
1701
1698
|
}
|
|
1702
|
-
}), ot = Ia(
|
|
1699
|
+
}), ot = Ia(Zr);
|
|
1703
1700
|
K("Start flow next actions", ot);
|
|
1704
|
-
let pe = await
|
|
1701
|
+
let pe = await Z(g, {
|
|
1705
1702
|
secure_token: I.token,
|
|
1706
1703
|
processor_specific_metadata: {
|
|
1707
1704
|
payment_provider: n.provider,
|
|
@@ -1732,7 +1729,7 @@ const Sr = (t) => t === wt || t === window.location.origin ? "PRODUCTION" : "TES
|
|
|
1732
1729
|
if (Oe === R.FAILURE)
|
|
1733
1730
|
throw new Error("3DS verification failed");
|
|
1734
1731
|
}
|
|
1735
|
-
if (me && !at && (pe = await
|
|
1732
|
+
if (me && !at && (pe = await Z(g, {
|
|
1736
1733
|
secure_token: I.token,
|
|
1737
1734
|
their_pm_id: me.their_pm_id,
|
|
1738
1735
|
processor_specific_metadata: {
|
|
@@ -1864,7 +1861,7 @@ async function Ma(t, n) {
|
|
|
1864
1861
|
throw new Error("3DS verification cancelled");
|
|
1865
1862
|
if (r === R.FAILURE)
|
|
1866
1863
|
throw new Error("3DS verification failed");
|
|
1867
|
-
const o = await
|
|
1864
|
+
const o = await Z(n.connection, {
|
|
1868
1865
|
secure_token: n.prefill.token,
|
|
1869
1866
|
processor_specific_metadata: {
|
|
1870
1867
|
their_pm_id: t.their_pm_id,
|
|
@@ -1894,7 +1891,7 @@ async function Da(t, n) {
|
|
|
1894
1891
|
})).required_user_actions[0].consent_id;
|
|
1895
1892
|
if (!d)
|
|
1896
1893
|
throw new Error("No consent ID received from payment flow");
|
|
1897
|
-
let _ = await
|
|
1894
|
+
let _ = await Z(n.connection, {
|
|
1898
1895
|
secure_token: n.prefill.token,
|
|
1899
1896
|
processor_specific_metadata: {
|
|
1900
1897
|
payment_provider: n.checkoutPaymentMethod.provider,
|
|
@@ -1936,7 +1933,7 @@ async function Da(t, n) {
|
|
|
1936
1933
|
const { log__: ge, err__: mt } = A("awx-apple-pay"), La = he(
|
|
1937
1934
|
async ({ context: t, formCallbacks: n }) => {
|
|
1938
1935
|
const r = {
|
|
1939
|
-
processor:
|
|
1936
|
+
processor: B.Enum.airwallex,
|
|
1940
1937
|
isAvailable: !1,
|
|
1941
1938
|
isLoading: !1,
|
|
1942
1939
|
startFlow: async () => {
|
|
@@ -1974,7 +1971,7 @@ const { log__: ge, err__: mt } = A("awx-apple-pay"), La = he(
|
|
|
1974
1971
|
}
|
|
1975
1972
|
};
|
|
1976
1973
|
return {
|
|
1977
|
-
processor:
|
|
1974
|
+
processor: B.Enum.airwallex,
|
|
1978
1975
|
isAvailable: !0,
|
|
1979
1976
|
isLoading: !1,
|
|
1980
1977
|
startFlow: l
|
|
@@ -2112,7 +2109,7 @@ const { log__: ge, err__: mt } = A("awx-apple-pay"), La = he(
|
|
|
2112
2109
|
throw Error(
|
|
2113
2110
|
`Payin was not successful: ${a.detail.type} ${a.detail.message} ${JSON.stringify(a.detail.data)}`
|
|
2114
2111
|
);
|
|
2115
|
-
const d = await
|
|
2112
|
+
const d = await Z(s, {
|
|
2116
2113
|
secure_token: c.token,
|
|
2117
2114
|
their_pm_id: a.payin.paymentMethod.paymentMethodId,
|
|
2118
2115
|
checkout_attempt_id: c.mode !== "setup" ? u.checkout_attempt_id : void 0,
|
|
@@ -2172,7 +2169,7 @@ async function Ya(t, n) {
|
|
|
2172
2169
|
const c = {
|
|
2173
2170
|
dataDescriptor: "COMMON.APPLE.INAPP.PAYMENT",
|
|
2174
2171
|
dataValue: window.btoa(JSON.stringify(a.token.paymentData))
|
|
2175
|
-
}, l = await
|
|
2172
|
+
}, l = await Z(n.connection, {
|
|
2176
2173
|
secure_token: n.prefill.token,
|
|
2177
2174
|
processor_specific_metadata: {
|
|
2178
2175
|
payment_provider: n.checkoutPaymentMethod.provider,
|
|
@@ -2217,7 +2214,7 @@ const Nr = e.object({
|
|
|
2217
2214
|
}), { log__: Re, err__: yt } = A("authnet-applepay"), Ka = he(
|
|
2218
2215
|
async ({ context: t, formCallbacks: n }) => {
|
|
2219
2216
|
const r = {
|
|
2220
|
-
processor:
|
|
2217
|
+
processor: B.Enum.authorize_net,
|
|
2221
2218
|
isAvailable: !1,
|
|
2222
2219
|
isLoading: !1,
|
|
2223
2220
|
startFlow: async () => {
|
|
@@ -2255,7 +2252,7 @@ const Nr = e.object({
|
|
|
2255
2252
|
}
|
|
2256
2253
|
};
|
|
2257
2254
|
return {
|
|
2258
|
-
processor:
|
|
2255
|
+
processor: B.Enum.authorize_net,
|
|
2259
2256
|
isAvailable: !0,
|
|
2260
2257
|
isLoading: !1,
|
|
2261
2258
|
startFlow: l
|
|
@@ -2324,12 +2321,12 @@ const Nr = e.object({
|
|
|
2324
2321
|
throw yt("Apple Pay payment error", E), E;
|
|
2325
2322
|
});
|
|
2326
2323
|
}
|
|
2327
|
-
), { log__: _e, err__: xe } = A("authnet-googlepay"),
|
|
2324
|
+
), { log__: _e, err__: xe } = A("authnet-googlepay"), Za = he(
|
|
2328
2325
|
async ({ context: t, formCallbacks: n }) => {
|
|
2329
2326
|
var r, o;
|
|
2330
2327
|
_e("Initializing Authnet GooglePay flow");
|
|
2331
2328
|
const a = {
|
|
2332
|
-
processor:
|
|
2329
|
+
processor: B.Enum.authorize_net,
|
|
2333
2330
|
isAvailable: !1,
|
|
2334
2331
|
isLoading: !1,
|
|
2335
2332
|
startFlow: async () => {
|
|
@@ -2381,13 +2378,13 @@ const Nr = e.object({
|
|
|
2381
2378
|
}
|
|
2382
2379
|
};
|
|
2383
2380
|
return {
|
|
2384
|
-
processor:
|
|
2381
|
+
processor: B.Enum.authorize_net,
|
|
2385
2382
|
isAvailable: !0,
|
|
2386
2383
|
isLoading: !1,
|
|
2387
2384
|
startFlow: _
|
|
2388
2385
|
};
|
|
2389
2386
|
}
|
|
2390
|
-
),
|
|
2387
|
+
), Ba = ie(
|
|
2391
2388
|
async ({
|
|
2392
2389
|
context: t,
|
|
2393
2390
|
nonCdeFormInputs: n,
|
|
@@ -2422,7 +2419,7 @@ const Nr = e.object({
|
|
|
2422
2419
|
}
|
|
2423
2420
|
});
|
|
2424
2421
|
_e("Start payment flow response", I);
|
|
2425
|
-
const q = await
|
|
2422
|
+
const q = await Z(h, {
|
|
2426
2423
|
secure_token: C.token,
|
|
2427
2424
|
processor_specific_metadata: {
|
|
2428
2425
|
payment_provider: r.provider,
|
|
@@ -2496,8 +2493,8 @@ const Nr = e.object({
|
|
|
2496
2493
|
run: Ha
|
|
2497
2494
|
},
|
|
2498
2495
|
authorizeNetGooglePay: {
|
|
2499
|
-
init:
|
|
2500
|
-
run:
|
|
2496
|
+
init: Za,
|
|
2497
|
+
run: Ba
|
|
2501
2498
|
}
|
|
2502
2499
|
// 👉 Add more flows here
|
|
2503
2500
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -3550,7 +3547,7 @@ class ze {
|
|
|
3550
3547
|
}, this.waitForLoad = (n) => {
|
|
3551
3548
|
if (this._current.status === "success") return Promise.resolve(this._current.loadedValue);
|
|
3552
3549
|
if (this._current.status === "error") return Promise.reject(this._current.error);
|
|
3553
|
-
this._current.status !== "initial" &&
|
|
3550
|
+
this._current.status !== "initial" && Be(this._current);
|
|
3554
3551
|
const r = {
|
|
3555
3552
|
first: n.timeoutSec * 1e3,
|
|
3556
3553
|
with: () => Di(() => new Error(n.timeoutErrMsg))
|
|
@@ -3634,8 +3631,8 @@ be.NOOP = () => {
|
|
|
3634
3631
|
const n = new be();
|
|
3635
3632
|
return n.setCallbacks(qt.parse(t)), n;
|
|
3636
3633
|
};
|
|
3637
|
-
let
|
|
3638
|
-
class
|
|
3634
|
+
let Zi = be;
|
|
3635
|
+
class Bi {
|
|
3639
3636
|
constructor(n, r, o, a) {
|
|
3640
3637
|
this.handleMessage = (i) => {
|
|
3641
3638
|
if (!i.source)
|
|
@@ -3644,7 +3641,7 @@ class Zi {
|
|
|
3644
3641
|
return;
|
|
3645
3642
|
let s = null;
|
|
3646
3643
|
try {
|
|
3647
|
-
s =
|
|
3644
|
+
s = Zn(JSON.parse(i.data));
|
|
3648
3645
|
} catch {
|
|
3649
3646
|
return;
|
|
3650
3647
|
}
|
|
@@ -3684,7 +3681,7 @@ async function Wi(t, n) {
|
|
|
3684
3681
|
iframe: t,
|
|
3685
3682
|
debug: !1,
|
|
3686
3683
|
childOrigin: n
|
|
3687
|
-
}).promise, o = await
|
|
3684
|
+
}).promise, o = await Bn(r);
|
|
3688
3685
|
if (!Wn(r, o))
|
|
3689
3686
|
throw new Error("Got invalid CDE connection object");
|
|
3690
3687
|
return r;
|
|
@@ -3915,7 +3912,7 @@ const Xi = (t, n, r) => {
|
|
|
3915
3912
|
});
|
|
3916
3913
|
}
|
|
3917
3914
|
default:
|
|
3918
|
-
|
|
3915
|
+
Be(r);
|
|
3919
3916
|
}
|
|
3920
3917
|
}, this.submit = this.submitCard, this.destroy = () => {
|
|
3921
3918
|
ne("Destroying OpenPay form...");
|
|
@@ -3924,7 +3921,7 @@ const Xi = (t, n, r) => {
|
|
|
3924
3921
|
window.removeEventListener("message", this.eventHandler.handleMessage.bind(this.eventHandler)), this.registeredElements = null, delete window.ojs;
|
|
3925
3922
|
}, this.updateCallbacks = (r) => {
|
|
3926
3923
|
this.formCallbacks.setCallbacks(r);
|
|
3927
|
-
}, ft.assignAsSingleton(this), this.ojsVersion = "0.2.
|
|
3924
|
+
}, ft.assignAsSingleton(this), this.ojsVersion = "0.2.16", this.ojsReleaseVersion = "local_build", this.baseUrl = n.baseUrl ?? "https://cde.getopenpay.com", this.config = { ...n, baseUrl: this.baseUrl }, this.formCallbacks = Zi.fromObject(n), this.registeredElements = null, this.formId = `opjs-form-${bt()}`, this.referrer = window.location.origin, this.formTarget = n.formTarget ?? "body", this.formProperties = { height: "1px" }, this.connectionManager = new Ji(), this.eventHandler = new Bi(this.formId, this.baseUrl, this.formCallbacks, {
|
|
3928
3925
|
setFormHeight: this.setFormHeight,
|
|
3929
3926
|
onCdeLoaded: this.onCdeLoaded,
|
|
3930
3927
|
onCdeLoadError: this.onCdeLoadError
|
|
@@ -4509,16 +4506,16 @@ e.object({
|
|
|
4509
4506
|
google_pay_merchant_id: e.string().nullish()
|
|
4510
4507
|
})
|
|
4511
4508
|
});
|
|
4512
|
-
const
|
|
4509
|
+
const Zt = {
|
|
4513
4510
|
isAvailable: !1,
|
|
4514
4511
|
isLoading: !0,
|
|
4515
4512
|
startFlow: async () => {
|
|
4516
4513
|
}
|
|
4517
|
-
},
|
|
4514
|
+
}, Zs = e.enum(["test", "live", "live-us", "live-in", "live-apse", "live-au"]);
|
|
4518
4515
|
e.object({
|
|
4519
4516
|
"op-account-id": e.string(),
|
|
4520
4517
|
"op-adyen-client-key": e.string(),
|
|
4521
|
-
"op-adyen-environment":
|
|
4518
|
+
"op-adyen-environment": Zs,
|
|
4522
4519
|
"op-adyen-action": e.string()
|
|
4523
4520
|
});
|
|
4524
4521
|
e.array(
|
|
@@ -4526,8 +4523,8 @@ e.array(
|
|
|
4526
4523
|
our_existing_pm_id: e.string()
|
|
4527
4524
|
})
|
|
4528
4525
|
).length(1);
|
|
4529
|
-
const
|
|
4530
|
-
|
|
4526
|
+
const Bs = e.enum(["stripe", "airwallex", "authorize_net"]);
|
|
4527
|
+
Bs.Enum.stripe;
|
|
4531
4528
|
e.object({
|
|
4532
4529
|
provider: e.union([e.literal("apple_pay"), e.literal("google_pay")]),
|
|
4533
4530
|
processor_name: e.literal("stripe"),
|
|
@@ -4581,7 +4578,7 @@ e.object({
|
|
|
4581
4578
|
google_pay_merchant_id: e.string().nullish()
|
|
4582
4579
|
})
|
|
4583
4580
|
});
|
|
4584
|
-
const
|
|
4581
|
+
const Bt = {
|
|
4585
4582
|
isLoading: !0,
|
|
4586
4583
|
isAvailable: !1,
|
|
4587
4584
|
startFlow: async () => {
|
|
@@ -4648,8 +4645,8 @@ const Xs = (t) => {
|
|
|
4648
4645
|
return Ke.getInstance() && ((r = Ke.getInstance()) == null || r.updateCallbacks(n.get)), n.get;
|
|
4649
4646
|
}, Qs = (t) => {
|
|
4650
4647
|
const [n, r] = ce({
|
|
4651
|
-
apple_pay:
|
|
4652
|
-
google_pay:
|
|
4648
|
+
apple_pay: Bt,
|
|
4649
|
+
google_pay: Bt
|
|
4653
4650
|
}), o = Jr(
|
|
4654
4651
|
(a) => {
|
|
4655
4652
|
r(a), t == null || t(a);
|
|
@@ -4659,8 +4656,8 @@ const Xs = (t) => {
|
|
|
4659
4656
|
return { paymentRequests: n, overridenOnPaymentRequestLoad: o };
|
|
4660
4657
|
}, Jt = "op_ojs_form", cc = (t) => {
|
|
4661
4658
|
const [n, r] = ce(), [o, a] = ce(null), { paymentRequests: i, overridenOnPaymentRequestLoad: s } = Qs(t.onPaymentRequestLoad), [c, l] = ce(!1), [u, d] = ce(null), [_, f] = ce(null), [m, y] = ce({
|
|
4662
|
-
googlePay:
|
|
4663
|
-
applePay:
|
|
4659
|
+
googlePay: Zt,
|
|
4660
|
+
applePay: Zt
|
|
4664
4661
|
}), h = Xs({
|
|
4665
4662
|
...t,
|
|
4666
4663
|
onPaymentRequestLoad: s,
|
|
@@ -4763,4 +4760,4 @@ export {
|
|
|
4763
4760
|
Ws as PayInState,
|
|
4764
4761
|
Qr as useOpenPayElements
|
|
4765
4762
|
};
|
|
4766
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXguanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgeiBhcyB6JDEgfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGNvbm5lY3RUb0NoaWxkIH0gZnJvbSAncGVucGFsJztcbmltcG9ydCBBZSBmcm9tICdjaGFsayc7XG5cbmNvbnN0IEVsZW1lbnRzQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoe1xuICBmb3JtSWQ6IFwiXCIsXG4gIGZvcm1IZWlnaHQ6IFwiXCIsXG4gIHJlZmVycmVyOiB2b2lkIDAsXG4gIGNoZWNrb3V0U2VjdXJlVG9rZW46IHZvaWQgMCxcbiAgcmVnaXN0ZXJJZnJhbWU6ICgpID0+IHtcbiAgfSxcbiAgYmFzZVVybDogXCJcIlxufSk7XG5cbmNvbnN0IHVzZU9wZW5QYXlFbGVtZW50cyA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRWxlbWVudHNDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlT3BlblBheUVsZW1lbnRzIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gT3BlblBheUVsZW1lbnRzUHJvdmlkZXJcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuXG5jb25zdCBldCA9IFwiaHR0cHM6Ly9jZGUuZ2V0b3BlbnBheS5jb21cIiwgd24gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pLCBnbiA9IHokMS5hcnJheSh3biksIGJuID0geiQxLm9iamVjdCh7XG4gIGNvZGU6IHokMS5zdHJpbmcoKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBwYXRoOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKVxufSksIHZuID0geiQxLmFycmF5KGJuKSwgRW4gPSB7XG4gIFwiZmFpbGVkIHRvIGZldGNoXCI6IFwiQ29ubmVjdGlvbiBlcnJvcjogcGxlYXNlIGRvdWJsZSBjaGVjayBpZiB5b3UgYXJlIGNvbm5lY3RlZCB0byB0aGUgaW50ZXJuZXQsIHRoZW4gdHJ5IGFnYWluXCJcbn0sIFdlID0gKHQpID0+IHtcbiAgY29uc3QgbiA9IHQudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gIHJldHVybiBFbltuXSA/PyB0O1xufSwgQ24gPSAodCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgSlNPTi5wYXJzZSh0KSA9PSBcIm9iamVjdFwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gITE7XG4gIH1cbn0sIFBuID0gKHQpID0+IHQubGVuZ3RoID09PSAxID8gV2UodFswXS5tc2cpIDogYFBsZWFzZSBmaXggdGhlIGZvbGxvd2luZyBlcnJvcnM6XG4ke3QubWFwKChlKSA9PiBg4oCiICR7V2UoZS5tc2cpfWApLmpvaW4oYFxuYCl9YCwgU24gPSAodCkgPT4gYEVuY291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZXJyb3JzOlxuJHt0Lm1hcCgoZSkgPT4gYC0gJHtlLnBhdGguam9pbihcIi9cIil9OiAke2UubWVzc2FnZX1gKS5qb2luKGBcbmApfWAsIEggPSAodCkgPT4ge1xuICBpZiAodCBpbnN0YW5jZW9mIEVycm9yKVxuICAgIGlmIChDbih0Lm1lc3NhZ2UpKSB7XG4gICAgICBjb25zdCBuID0gSlNPTi5wYXJzZSh0Lm1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIGduLnNhZmVQYXJzZShuKS5zdWNjZXNzID8gUG4obikgOiB2bi5zYWZlUGFyc2Uobikuc3VjY2VzcyA/IFNuKG4pIDogKGNvbnNvbGUud2FybihgRW5jb3VudGVyZWQgdW5rbm93biBzdHJpbmdpZmllZCBKU09OIG9iamVjdDpcbiR7dC5tZXNzYWdlfWApLCB0Lm1lc3NhZ2UpO1xuICAgIH0gZWxzZVxuICAgICAgcmV0dXJuIFdlKHQubWVzc2FnZSk7XG4gIGlmICh0eXBlb2YgdCA9PSBcIm9iamVjdFwiKVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodCk7XG4gICAgfSBjYXRjaCAobikge1xuICAgICAgcmV0dXJuIG4gKyBcIlwiO1xuICAgIH1cbiAgZWxzZVxuICAgIHJldHVybiB0ICsgXCJcIjtcbn0sIEFuID0gKHQsIG4sIGUpID0+ICguLi5yKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG4oLi4ucik7XG4gIH0gY2F0Y2ggKGEpIHtcbiAgICBlKGBbZm9ybV0gRXJyb3IgcnVubmluZyBjYWxsYmFjayAoJHt0fSk6YCwgYSk7XG4gICAgcmV0dXJuO1xuICB9XG59O1xudmFyIHggPSAvKiBAX19QVVJFX18gKi8gKCh0KSA9PiAodC5wb2NreXRQYXlwYWwgPSBcInBvY2t5dC1wYXlwYWxcIiwgdC5haXJ3YWxsZXhHb29nbGVQYXkgPSBcImFpcndhbGxleC1nb29nbGUtcGF5XCIsIHQuYWlyd2FsbGV4QXBwbGVQYXkgPSBcImFpcndhbGxleC1hcHBsZS1wYXlcIiwgdC5hdXRob3JpemVuZXRHb29nbGVQYXkgPSBcImF1dGhvcml6ZW5ldC1nb29nbGUtcGF5XCIsIHQuYXV0aG9yaXplbmV0QXBwbGVQYXkgPSBcImF1dGhvcml6ZW5ldC1hcHBsZS1wYXlcIiwgdC5sb29wQ3J5cHRvID0gXCJsb29wLWNyeXB0b1wiLCB0KSkoeCB8fCB7fSk7XG56JDEubmF0aXZlRW51bSh4KTsgY29uc3QgTyA9IHokMS5zdHJpbmcoKS50cmltKCkubWluKDEsIHsgbWVzc2FnZTogXCJDYW5ub3QgYmUgYmxhbmtcIiB9KSwgUCA9IHokMS5zdHJpbmcoKS50cmltKCkub3B0aW9uYWwoKSwgaiA9ICh0KSA9PiB6JDEubnVsbGFibGUodC5vcHRpb25hbCgpKTtcbnZhciBwID0gLyogQF9fUFVSRV9fICovICgodCkgPT4gKHQuRklSU1RfTkFNRSA9IFwiZmlyc3ROYW1lXCIsIHQuTEFTVF9OQU1FID0gXCJsYXN0TmFtZVwiLCB0LkVNQUlMID0gXCJlbWFpbFwiLCB0LlpJUF9DT0RFID0gXCJ6aXBDb2RlXCIsIHQuQ0lUWSA9IFwiY2l0eVwiLCB0LlNUQVRFID0gXCJzdGF0ZVwiLCB0LkNPVU5UUlkgPSBcImNvdW50cnlcIiwgdC5BRERSRVNTID0gXCJhZGRyZXNzXCIsIHQuUEhPTkUgPSBcInBob25lXCIsIHQuUFJPTU9USU9OX0NPREUgPSBcInByb21vdGlvbkNvZGVcIiwgdCkpKHAgfHwge30pO1xuY29uc3QgSXQgPSB6JDEubmF0aXZlRW51bShwKTtcbnZhciBSdCA9IC8qIEBfX1BVUkVfXyAqLyAoKHQpID0+ICh0LkNBUkRfTlVNQkVSID0gXCJjYXJkTnVtYmVyXCIsIHQuQ0FSRF9FWFBJUlkgPSBcImNhcmRFeHBpcnlcIiwgdC5DQVJEX0NWQyA9IFwiY2FyZEN2Y1wiLCB0KSkoUnQgfHwge30pO1xuY29uc3QgRnQgPSB6JDEubmF0aXZlRW51bShSdCksIE10ID0geiQxLnVuaW9uKFtJdCwgRnRdKTtcbnZhciBkZSA9IC8qIEBfX1BVUkVfXyAqLyAoKHQpID0+ICh0LkNBUkQgPSBcImNhcmRcIiwgdC5DQVJEX05VTUJFUiA9IFwiY2FyZC1udW1iZXJcIiwgdC5DQVJEX0VYUElSWSA9IFwiY2FyZC1leHBpcnlcIiwgdC5DQVJEX0NWQyA9IFwiY2FyZC1jdmNcIiwgdCkpKGRlIHx8IHt9KTtcbmNvbnN0IGtuID0geiQxLm5hdGl2ZUVudW0oZGUpLCBUZSA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnN0cmluZygpLFxuICBwcm9jZXNzb3JfbmFtZTogaih6JDEuc3RyaW5nKCkpLFxuICBtZXRhZGF0YTogaih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pLCBJbiA9IHokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBjYXJkTnVtYmVyOiBQLFxuICBleHBpcnk6IFAsXG4gIGN2YzogUFxufSk7XG56JDEub2JqZWN0KHtcbiAgYmFja2dyb3VuZENvbG9yOiBQLFxuICBjb2xvcjogUCxcbiAgZm9udEZhbWlseTogUCxcbiAgZm9udFNpemU6IFAsXG4gIGZvbnRXZWlnaHQ6IFAsXG4gIG1hcmdpbjogUCxcbiAgcGFkZGluZzogUCxcbiAgbGV0dGVyU3BhY2luZzogUCxcbiAgbGluZUhlaWdodDogUCxcbiAgaGlkZUljb246IFBcbn0pO1xuY29uc3QgcSA9IHokMS5lbnVtKFtcbiAgLy8gRWxlbWVudCAtPiBGb3JtXG4gIFwiTEFZT1VUXCIsXG4gIFwiTE9BREVEXCIsXG4gIFwiQkxVUlwiLFxuICBcIkZPQ1VTXCIsXG4gIFwiQ0hBTkdFXCIsXG4gIFwiVE9LRU5JWkVfU1RBUlRFRFwiLFxuICBcIkNIRUNLT1VUX1NUQVJURURcIixcbiAgXCJQQVlNRU5UX0ZMT1dfU1RBUlRFRFwiLFxuICBcIlRPS0VOSVpFX1NVQ0NFU1NcIixcbiAgXCJDSEVDS09VVF9TVUNDRVNTXCIsXG4gIFwiTE9BRF9FUlJPUlwiLFxuICBcIlZBTElEQVRJT05fRVJST1JcIixcbiAgXCJUT0tFTklaRV9FUlJPUlwiLFxuICBcIkNIRUNLT1VUX0VSUk9SXCIsXG4gIFwiU0VUVVBfUEFZTUVOVF9NRVRIT0RfU1VDQ0VTU1wiLFxuICAvLyBGb3JtIC0+IEVsZW1lbnRcbiAgXCJUT0tFTklaRVwiLFxuICBcIkNIRUNLT1VUXCIsXG4gIFwiU1RBUlRfUEFZTUVOVF9GTE9XXCJcbl0pLCBSbiA9IHEuZXh0cmFjdChbXCJUT0tFTklaRV9TVEFSVEVEXCIsIFwiQ0hFQ0tPVVRfU1RBUlRFRFwiXSksIEZuID0geiQxLm9iamVjdCh7IHR5cGU6IFJuIH0pLCBNbiA9IHEuZXh0cmFjdChbXCJCTFVSXCIsIFwiRk9DVVNcIiwgXCJDSEFOR0VcIl0pLCBEbiA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBNbixcbiAgZWxlbWVudFR5cGU6IEZ0LFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLm9wdGlvbmFsKClcbn0pLCBPbiA9IHEuZXh0cmFjdChbXCJMT0FEX0VSUk9SXCIsIFwiVE9LRU5JWkVfRVJST1JcIiwgXCJDSEVDS09VVF9FUlJPUlwiXSksIE5uID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IE9uLFxuICBtZXNzYWdlOiBPLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KSwgVG4gPSBxLmV4dHJhY3QoW1wiVkFMSURBVElPTl9FUlJPUlwiXSksIExuID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IFRuLFxuICBlbGVtZW50VHlwZTogTXQsXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pLCBVbiA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChxLmVudW0uTEFZT1VUKSxcbiAgaGVpZ2h0OiBPXG59KSwgam4gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwocS5lbnVtLkxPQURFRCksXG4gIHNlc3Npb25JZDogTyxcbiAgdG90YWxBbW91bnRBdG9tczogeiQxLm51bWJlcigpLFxuICBjdXJyZW5jeTogUCxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kczogeiQxLmFycmF5KFRlKVxufSksIHhuID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKHEuZW51bS5QQVlNRU5UX0ZMT1dfU1RBUlRFRCksXG4gIG5leHRBY3Rpb25NZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBzdGFydFBGTWV0YWRhdGE6IHokMS5vcHRpb25hbCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pLCAkbiA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChxLmVudW0uU0VUVVBfUEFZTUVOVF9NRVRIT0RfU1VDQ0VTUyksXG4gIHBheW1lbnRNZXRob2RJZDogeiQxLnN0cmluZygpXG59KSwgRWUgPSB6JDEub2JqZWN0KHtcbiAgZmlyc3ROYW1lOiBPLFxuICBsYXN0TmFtZTogTyxcbiAgZW1haWw6IE8sXG4gIHppcENvZGU6IE8sXG4gIGNvdW50cnk6IE8sXG4gIHByb21vdGlvbkNvZGU6IFBcbn0pLCB6biA9IHokMS5vYmplY3Qoe1xuICBmaXJzdE5hbWU6IFAsXG4gIGxhc3ROYW1lOiBQLFxuICBlbWFpbDogTyxcbiAgemlwQ29kZTogTyxcbiAgY291bnRyeTogTyxcbiAgcHJvbW90aW9uQ29kZTogUCxcbiAgYWRkcmVzczogUCxcbiAgY2l0eTogUCxcbiAgc3RhdGU6IFBcbn0pLCBHbiA9IHEuZXh0cmFjdChbXCJUT0tFTklaRVwiLCBcIkNIRUNLT1VUXCIsIFwiU1RBUlRfUEFZTUVOVF9GTE9XXCJdKSwgVm4gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogR24sXG4gIHNlc3Npb25JZDogTyxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBUZSxcbiAgcGF5bWVudEZsb3dNZXRhZGF0YTogeiQxLmFueSgpLm9wdGlvbmFsKCksXG4gIGRvTm90VXNlTGVnYWN5Q0NGbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGV4aXN0aW5nQ0NQTUlkOiBQXG59KS5leHRlbmQoRWUuc2hhcGUpLCBxbiA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChxLmVudW0uVE9LRU5JWkVfU1VDQ0VTUyksXG4gIGlzUmVhZHlGb3JDaGVja291dDogeiQxLmJvb2xlYW4oKVxufSksIFluID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKHEuZW51bS5DSEVDS09VVF9TVUNDRVNTKSxcbiAgaW52b2ljZVVybHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBzdWJzY3JpcHRpb25JZHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBjdXN0b21lcklkOiB6JDEuc3RyaW5nKClcbn0pLCBLbiA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgRm4sXG4gIERuLFxuICBObixcbiAgTG4sXG4gIFVuLFxuICBqbixcbiAgVm4sXG4gIHFuLFxuICBZbixcbiAgeG4sXG4gICRuXG5dKSwgV24gPSB6JDEub2JqZWN0KHtcbiAgcGF5bG9hZDogS24sXG4gIG5vbmNlOiBPLFxuICBmb3JtSWQ6IE8sXG4gIGVsZW1lbnRJZDogT1xufSk7XG56JDEub2JqZWN0KHtcbiAgYW1vdW50QXRvbTogeiQxLm51bWJlcigpLFxuICAvKipcbiAgICogVGhlIHRocmVlLWxldHRlciBJU08gNDIxNyBjdXJyZW5jeSBjb2RlIGZvciB0aGUgcGF5bWVudC5cbiAgICovXG4gIGN1cnJlbmN5OiBPXG59KTtcbnokMS5lbnVtKFtcImFwcGxlX3BheVwiLCBcImdvb2dsZV9wYXlcIl0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBleGlzdGluZ19jY19wbV9pZDogaih6JDEuc3RyaW5nKCkpLFxuICB0aGVpcl9wbV9pZDogaih6JDEuc3RyaW5nKCkpLFxuICBjaGVja291dF9hdHRlbXB0X2lkOiBqKHokMS5zdHJpbmcoKSksXG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogaih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgdHQgPSB6JDEub2JqZWN0KHtcbiAgaW52b2ljZV91cmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uX2lkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2lkOiB6JDEuc3RyaW5nKClcbn0pLCBKbiA9IHokMS5vYmplY3Qoe1xuICBlbGVtZW50VHlwZTogeiQxLnN0cmluZygpLFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgSG4gPSB6JDEub2JqZWN0KHtcbiAgc3VjY2VzczogeiQxLmxpdGVyYWwoITEpLFxuICBlcnJvcl90eXBlOiB6JDEubGl0ZXJhbChcInZhbGlkYXRpb25fZXJyb3JcIiksXG4gIGVycm9yczogeiQxLmFycmF5KEpuKVxufSksIFpuID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInN1Y2Nlc3NcIiwgW1xuICB6JDEub2JqZWN0KHsgc3VjY2VzczogeiQxLmxpdGVyYWwoITApIH0pLFxuICBIblxuXSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogVGUsXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IEVlLFxuICBkb19ub3RfdXNlX2xlZ2FjeV9jY19mbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGV4aXN0aW5nX2NjX3BtX2lkOiBqKHokMS5zdHJpbmcoKSksXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogVGUsXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IEVlLFxuICBleHRyYV9tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkub3B0aW9uYWwoKVxufSk7XG52YXIgSSA9IC8qIEBfX1BVUkVfXyAqLyAoKHQpID0+ICh0LlNVQ0NFU1MgPSBcInN1Y2Nlc3NcIiwgdC5GQUlMVVJFID0gXCJmYWlsdXJlXCIsIHQuQ0FOQ0VMTEVEID0gXCJjYW5jZWxsZWRcIiwgdCkpKEkgfHwge30pO1xuY29uc3QgQm4gPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXG4gICAgXCJzdWNjZXNzXCIsXG4gICAgXCJmYWlsdXJlXCIsXG4gICAgXCJjYW5jZWxsZWRcIlxuICAgIC8qIENBTkNFTExFRCAqL1xuICBdKSxcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG5jb25zdCBRbiA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogeiQxLnN0cmluZygpLFxuICBpbml0aWFsX2ludGVudF9pZDogeiQxLnN0cmluZygpLFxuICBjb25zZW50X2lkOiB6JDEuc3RyaW5nKCksXG4gIHRoZWlyX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSksIER0ID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgcmVkaXJlY3RfdXJsOiBqKHokMS5zdHJpbmcoKSksXG4gIGluaXRpYWxfaW50ZW50X2lkOiBqKHokMS5zdHJpbmcoKSksXG4gIGNvbnNlbnRfaWQ6IGooeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IGooeiQxLnN0cmluZygpKSxcbiAgcGF5bWVudF9zZXNzaW9uOiBqKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSksIFhuID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwoITApLCBocmVmOiB6JDEuc3RyaW5nKCkgfSksXG4gIHokMS5vYmplY3QoeyBwcmVzZW50OiB6JDEubGl0ZXJhbCghMSkgfSlcbl0pLCBlciA9IHokMS5vYmplY3Qoe1xuICBwYXltZW50X21ldGhvZHM6IHokMS5hcnJheShJbiksXG4gIHBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlOiBqKHR0KSxcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiBqKHokMS5hcnJheShEdCkpXG59KSwgdHIgPSAodCkgPT4ge1xuICBjb25zdCBuID0ge307XG4gIHJldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbZSwgcl0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYSA9IEl0LnBhcnNlKGUpO1xuICAgICAgQXJyYXkuaXNBcnJheShyKSA/IG5bYV0gPSByIDogQXJyYXkuaXNBcnJheShyLl9lcnJvcnMpICYmIChuW2FdID0gci5fZXJyb3JzKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0pLCBuO1xufSwgbnIgPSB6JDEub2JqZWN0KHtcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pLCByciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbn0pLCBvciA9IHtcbiAgdXNkOiBcInVzZFwiLFxuICBicmw6IFwiYnJsXCJcbn0sIExlID0gYXN5bmMgKHQpID0+IHtcbiAgZm9yIChsZXQgZSA9IDA7IGUgPCAxMDsgZSsrKVxuICAgIHN0KCkgfHwgYXdhaXQgbnQoNTAwKTtcbiAgaWYgKCFzdCgpKVxuICAgIHRocm93IGNvbnNvbGUubG9nKFwiU3RyaXBlIEpTIG5vdCBmb3VuZC5cIiksIG5ldyBFcnJvcihcIlN0cmlwZSBKUyBub3QgZm91bmQuXCIpO1xuICByZXR1cm4gbmV3IFN0cmlwZSh0KTtcbn0sIGFyID0gYXN5bmMgKHQsIG4pID0+IHtcbiAgY29uc3QgZSA9IGF3YWl0IExlKHQpO1xuICByZXR1cm4ge1xuICAgIGVsZW1lbnRzOiBlLmVsZW1lbnRzKG4pLFxuICAgIHN0cmlwZTogZVxuICB9O1xufSwgaXIgPSBhc3luYyAodCwgbiwgZSwgciwgYSkgPT4ge1xuICBjb25zdCBpID0gYXdhaXQgTGUodCksIHMgPSBvcltlLnRvTG93ZXJDYXNlKCkudHJpbSgpXTtcbiAgcmV0dXJuIGkucGF5bWVudFJlcXVlc3Qoe1xuICAgIC8vIFRPRE86IHJlcGxhY2UgdGhpcyB3aXRoIHN0cmlwZSBhY2NvdW50IGNvdW50cnkgYXMgc29vbiBhcyB3ZSBzdXBwb3J0IGl0XG4gICAgY291bnRyeTogXCJVU1wiLFxuICAgIGN1cnJlbmN5OiBzLFxuICAgIHRvdGFsOiB7XG4gICAgICBsYWJlbDogXCJUb3RhbFwiLFxuICAgICAgYW1vdW50OiBuLFxuICAgICAgcGVuZGluZzogclxuICAgIH0sXG4gICAgLy8gcmVxdWVzdFNoaXBwaW5nOiB0cnVlLFxuICAgIHJlcXVlc3RQYXllck5hbWU6ICEwLFxuICAgIHJlcXVlc3RQYXllckVtYWlsOiAhMCxcbiAgICBkaXNhYmxlV2FsbGV0czogW11cbiAgfSk7XG59LCBudCA9ICh0KSA9PiBuZXcgUHJvbWlzZSgobikgPT4ge1xuICBzZXRUaW1lb3V0KG4sIHQpO1xufSksIHN0ID0gKCkgPT4gXCJTdHJpcGVcIiBpbiB3aW5kb3csIHNyID0gYXN5bmMgKHQpID0+IG5ldyBQcm9taXNlKChuLCBlKSA9PiB7XG4gIHRyeSB7XG4gICAgdC5vbihcInBheW1lbnRtZXRob2RcIiwgYXN5bmMgKHIpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwicGF5bWVudG1ldGhvZCBFVlQ6OiBcIiwgciksIG4ocik7XG4gICAgfSksIHQub24oXCJ0b2tlblwiLCBhc3luYyAocikgPT4ge1xuICAgICAgY29uc29sZS5sb2coXCJ0b2tlbiBFVlQ6OiBcIiwgcik7XG4gICAgfSksIHQub24oXCJjYW5jZWxcIiwgKCkgPT4ge1xuICAgICAgZShuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCwgcGxlYXNlIGNsaWNrIFN1Ym1pdCBhZ2FpbiB0byBwYXlcIikpO1xuICAgIH0pO1xuICB9IGNhdGNoIChyKSB7XG4gICAgZShyKTtcbiAgfVxufSksIGNyID0gYXN5bmMgKHQsIG4pID0+IHtcbiAgaWYgKCF0LnN0cmlwZV9wayB8fCAhdC5jbGllbnRfc2VjcmV0KVxuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBuZXh0IGFjdGlvbiBtZXRhZGF0YSBmb3JtYXQ6ICR7SlNPTi5zdHJpbmdpZnkodCl9YCk7XG4gIGNvbnN0IHIgPSBhd2FpdCAoYXdhaXQgTGUodC5zdHJpcGVfcGspKS5jb25maXJtQ2FyZFNldHVwKHQuY2xpZW50X3NlY3JldCwge1xuICAgIHBheW1lbnRfbWV0aG9kOiBuLnBheW1lbnRNZXRob2QuaWRcbiAgfSk7XG4gIGlmIChyLmVycm9yKVxuICAgIHRocm93IG4uY29tcGxldGUoXCJmYWlsXCIpLCBuZXcgRXJyb3IoYFBheW1lbnQgZmFpbGVkOiAke3IuZXJyb3IubWVzc2FnZSA/PyBcInVua25vd25cIn1gKTtcbiAgcmV0dXJuIG4uY29tcGxldGUoXCJzdWNjZXNzXCIpLCByO1xufSwgbHIgPSBhc3luYyAodCkgPT4ge1xuICB2YXIgYSwgaSwgcywgYztcbiAgY29uc3QgZSA9IGF3YWl0IChhd2FpdCBMZSh0LnN0cmlwZV9waykpLmNvbmZpcm1DYXJkU2V0dXAodC5jbGllbnRfc2VjcmV0LCB7XG4gICAgcGF5bWVudF9tZXRob2Q6IHQuc3RyaXBlX3BtX2lkXG4gIH0pLCByID0gKGEgPSBlLnNldHVwSW50ZW50KSA9PSBudWxsID8gdm9pZCAwIDogYS5zdGF0dXM7XG4gIGlmIChyID09PSBcInN1Y2NlZWRlZFwiKVxuICAgIGNvbnNvbGUubG9nKFwiWzNEU10gQ09ORklSTUlORyBQTTpcIiwgdC5zdHJpcGVfcG1faWQpLCBjb25zb2xlLmxvZyhcIlszRFNdIFNldHVwIGludGVudCBjcmVhdGVkOlwiLCBlLnNldHVwSW50ZW50KTtcbiAgZWxzZSB0aHJvdyByID09PSBcImNhbmNlbGVkXCIgPyBuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCwgcGxlYXNlIGNsaWNrIFN1Ym1pdCBhZ2FpbiB0byBwYXlcIikgOiBuZXcgRXJyb3IoXG4gICAgYCR7KChpID0gZS5lcnJvcikgPT0gbnVsbCA/IHZvaWQgMCA6IGkubWVzc2FnZSkgPz8gKChjID0gKHMgPSBlLnNldHVwSW50ZW50KSA9PSBudWxsID8gdm9pZCAwIDogcy5sYXN0X3NldHVwX2Vycm9yKSA9PSBudWxsID8gdm9pZCAwIDogYy5tZXNzYWdlKSA/PyBcIlBheW1lbnQgZmFpbGVkLCBwbGVhc2UgY2xpY2sgc3VibWl0IGFnYWluIHRvIHBheS5cIn1gXG4gICk7XG59LCB1ciA9ICh0KSA9PiBKU09OLnN0cmluZ2lmeSh0KSwgSiA9ICh0LCBuKSA9PiBBcnJheS5mcm9tKHQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLW9waWRdXCIpID8/IFtdKS5yZWR1Y2UoKGEsIGkpID0+IHtcbiAgY29uc3QgcyA9IGkuZ2V0QXR0cmlidXRlKFwiZGF0YS1vcGlkXCIpO1xuICByZXR1cm4gcyA/IHsgLi4uYSwgW3NdOiBpLnZhbHVlIH0gOiBhO1xufSwge30pLCBkciA9ICh0KSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIFduLnBhcnNlKHQpO1xuICB9IGNhdGNoIChuKSB7XG4gICAgdGhyb3cgY29uc29sZS5lcnJvcihcIkVycm9yIHBhcnNpbmcgZXZlbnQgcGF5bG9hZDpcIiwgdCwgbiksIG47XG4gIH1cbn0sIHByID0gYXN5bmMgKHQpID0+IHtcbiAgaWYgKHR5cGVvZiB0ICE9IFwib2JqZWN0XCIgfHwgIXQpIHJldHVybiAhMTtcbiAgdHJ5IHtcbiAgICBjb25zdCBuID0geyB0eXBlOiBcInBpbmdcIiB9LCBlID0gYXdhaXQgdC5zZW5kKG4pO1xuICAgIGlmIChlICE9PSAhMClcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJ3RydWUnIGFmdGVyIHBpbmcsIGdvdCAke0pTT04uc3RyaW5naWZ5KGUpfWApO1xuICAgIHJldHVybiAhMDtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBDREUgY29ubmVjdGlvbiBjaGVjazpcIiwgbiksICExO1xuICB9XG59LCBtciA9ICh0LCBuKSA9PiAhIXQgJiYgbiwgdyA9ICh0KSA9PiB6JDEubnVsbGFibGUodC5vcHRpb25hbCgpKTtcbnokMS5zdHJpbmcoKS50cmltKCkubWluKDEsIHsgbWVzc2FnZTogXCJDYW5ub3QgYmUgYmxhbmtcIiB9KTtcbmNvbnN0IHlyID0geiQxLm9iamVjdCh7XG4gIGNkZV9yZXNwb25zZV90eXBlOiB6JDEubGl0ZXJhbChcImVycm9yXCIpLFxuICBtZXNzYWdlOiB6JDEuc3RyaW5nKCksXG4gIGhlYWRlcnM6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuc3RyaW5nKCkpLm9wdGlvbmFsKClcbn0pO1xueiQxLmVudW0oW1widXNkXCIsIFwiYnJsXCJdKTtcbmNvbnN0IE90ID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgYW1vdW50X2F0b21fb2ZmOiB3KHokMS5udW1iZXIoKSksXG4gIHBlcmNlbnRfb2ZmOiB3KHokMS5udW1iZXIoKSksXG4gIGN1cnJlbmN5OiB3KHokMS5zdHJpbmcoKSksXG4gIGR1cmF0aW9uOiB6JDEuc3RyaW5nKCksXG4gIGR1cmF0aW9uX2luX21vbnRoczogdyh6JDEubnVtYmVyKCkpXG59KSwgTnQgPSB6JDEub2JqZWN0KHtcbiAgYW1vdW50X3N1YnRvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYW1vdW50X3RvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgY3VycmVuY3k6IHokMS5zdHJpbmcoKSxcbiAgZGVzY3JpcHRpb246IHcoeiQxLnN0cmluZygpKSxcbiAgcHJpY2VfaWQ6IHokMS5zdHJpbmcoKSxcbiAgYmlsbGluZ19pbnRlcnZhbDogdyh6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsX2NvdW50OiB3KHokMS5udW1iZXIoKS5pbnQoKSksXG4gIHF1YW50aXR5OiB6JDEubnVtYmVyKCkuaW50KClcbn0pLCBmciA9IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLCBociA9IHokMS5vYmplY3Qoe1xuICBuYW1lOiB6JDEuc3RyaW5nKCksXG4gIHNldHRpbmdzOiB3KGZyKVxufSksIHllID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIHByb2Nlc3Nvcl9uYW1lOiB3KHokMS5zdHJpbmcoKSksXG4gIG1ldGFkYXRhOiB3KHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSksIF9yID0geiQxLm9iamVjdCh7XG4gIHF1YW50aXR5OiB6JDEubnVtYmVyKClcbn0pLCB3ciA9IHokMS5vYmplY3Qoe1xuICBpZDogdyh6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsOiB3KHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfaW50ZXJ2YWxfY291bnQ6IHcoeiQxLm51bWJlcigpLmludCgpKSxcbiAgc3Vic2NyaXB0aW9uX2l0ZW1zOiB6JDEuYXJyYXkoX3IpLFxuICB0cmlhbF9zdGFydDogdyh6JDEuc3RyaW5nKCkpLFxuICB0cmlhbF9lbmQ6IHcoeiQxLnN0cmluZygpKVxufSksIFR0ID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9hdG9tOiB6JDEubnVtYmVyKClcbn0pLCBnciA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICBhbW91bnRfYXRvbV9jb25zaWRlcmluZ19kaXNjb3VudF9hcHBsaWVkOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRpc2NvdW50X2Ftb3VudF9hdG9tczogeiQxLmFycmF5KFR0KSxcbiAgc3Vic2NyaXB0aW9uX2l0ZW1faWQ6IHokMS5zdHJpbmcoKVxufSksIGJyID0geiQxLm9iamVjdCh7XG4gIGNvdXBvbjogT3Rcbn0pLCB2ciA9IHokMS5vYmplY3Qoe1xuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkaXNjb3VudHM6IHokMS5hcnJheShiciksXG4gIGhvc3RlZF9pbnZvaWNlX3VybDogdyh6JDEuc3RyaW5nKCkpLFxuICBsaW5lczogeiQxLmFycmF5KGdyKSxcbiAgcmVtYWluaW5nX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRheF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9kaXNjb3VudF9hbW91bnRfYXRvbXM6IHokMS5hcnJheShUdClcbn0pLCBjdCA9IHokMS5vYmplY3Qoe1xuICBjcmVhdGVkOiB6JDEuYXJyYXkod3IpLFxuICBpbnZvaWNlczogeiQxLmFycmF5KHZyKVxufSksIEx0ID0geiQxLm9iamVjdCh7XG4gIHByZXZpZXc6IGN0LFxuICBwcmV2aWV3X3Bvc3RfdHJpYWw6IHcoY3QpLFxuICBjb3Vwb25zOiB6JDEuYXJyYXkoT3QpXG59KSwgbHQgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEubGl0ZXJhbChcIm9wZW5cIiksXG4gIGxvY2FsZTogeiQxLnN0cmluZygpLFxuICB0b2tlbjogeiQxLnN0cmluZygpLFxuICBlbWFpbDogdyh6JDEuc3RyaW5nKCkpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoTnQpLFxuICBhbW91bnRfc3VidG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBhbW91bnRfdG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBicmFuZDogaHIsXG4gIHN1YnNfcHJldmlldzogdyhMdCksXG4gIC8vIE51bGwgaW4gc2V0dXAgbW9kZVxuICBtZXRob2RzX2F2YWlsYWJsZTogeiQxLmFycmF5KHllKVxufSksIFV0ID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcIm1vZGVcIiwgW1xuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEubGl0ZXJhbChcInNldHVwXCIpLFxuICAgIGN1cnJlbmN5OiB6JDEubnVsbGFibGUoeiQxLnVuZGVmaW5lZCgpKVxuICB9KS5leHRlbmQobHQuc2hhcGUpLFxuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEuZW51bShbXCJwYXltZW50XCIsIFwic3Vic2NyaXB0aW9uXCJdKSxcbiAgICBjdXJyZW5jeTogeiQxLnN0cmluZygpXG4gIH0pLmV4dGVuZChsdC5zaGFwZSlcbl0pLCBFciA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiY29tcGxldGVcIilcbn0pLCBDciA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiZXhwaXJlZFwiKVxufSk7XG56JDEudW5pb24oW1V0LCBFciwgQ3JdKTtcbnokMS5vYmplY3Qoe1xuICBsb2dvOiB6JDEuc3RyaW5nKCksXG4gIGljb246IHokMS5zdHJpbmcoKSxcbiAgcHJpbWFyeV9jb2xvcjogeiQxLnN0cmluZygpLFxuICBzZWNvbmRhcnlfY29sb3I6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIHBtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwYXltZW50X2lucHV0OiB6JDEuYW55KCksXG4gIC8vIFNob3VsZCBmb2xsb3cgQW55UGF5bWVudElucHV0IGZyb20gQ0RFXG4gIGN1c3RvbWVyX2ZpcnN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9sYXN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9lbWFpbDogeiQxLnN0cmluZygpLFxuICBjdXN0b21lcl96aXBfY29kZTogeiQxLnN0cmluZygpLFxuICBjdXN0b21lcl9jb3VudHJ5OiB6JDEuc3RyaW5nKCksXG4gIGxpbmVfaXRlbXM6IHokMS5hcnJheShOdCksXG4gIHRvdGFsX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGNhbmNlbF9hdF9lbmQ6IHokMS5ib29sZWFuKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB5ZSxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkb19ub3RfdXNlX2xlZ2FjeV9jY19mbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHVzZV9jb25maXJtZWRfcG1faWQ6IHcoeiQxLnN0cmluZygpKVxufSk7XG5jb25zdCBqdCA9IHokMS5vYmplY3Qoe1xuICBwYXltZW50X21ldGhvZF9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpLFxuICByZXR1cm5fdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgUHIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLmFycmF5KFByKTtcbmNvbnN0IFNyID0geiQxLm9iamVjdCh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9hZGRyZXNzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KSwgQXIgPSB6JDEub2JqZWN0KHtcbiAgcHJpY2VfaWQ6IHokMS5zdHJpbmcoKSxcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKS5pbnQoKVxufSksIGtyID0geiQxLm9iamVjdCh7XG4gIGxpbmVfaXRlbXM6IHokMS5hcnJheShBciksXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KClcbn0pLCBJciA9IHokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHcoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBwYXltZW50X3Byb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB5ZSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0aGVpcl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZV9wYXlfZmlyc3RfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IGtyLm9wdGlvbmFsKClcbn0pLmV4dGVuZChTci5zaGFwZSkuZXh0ZW5kKElyLnNoYXBlKTtcbmNvbnN0IHh0ID0geiQxLm9iamVjdCh7XG4gIHJlcXVpcmVkX3VzZXJfYWN0aW9uczogeiQxLmFycmF5KHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKSxcbiAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogdyh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBmaWVsZHM6IHpuLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IHllXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IEVlLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogeWUsXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKVxuICAvLyBUaGlzIGlzIG9wdGlvbmFsIGluIENERSwgYnV0IG5vdCBpbiBPSlMgbW92aW5nIGZvcndhcmRcbn0pO1xuY29uc3QgUnIgPSB6JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjY19wbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5yZWNvcmQoeiQxLmFueSgpKTtcbnokMS5vYmplY3Qoe1xuICBmaXJzdF9uYW1lOiB3KHokMS5zdHJpbmcoKSksXG4gIGxhc3RfbmFtZTogdyh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMTogdyh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMjogdyh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMzogdyh6JDEuc3RyaW5nKCkpLFxuICBjaXR5OiB3KHokMS5zdHJpbmcoKSksXG4gIHN0YXRlOiB3KHokMS5zdHJpbmcoKSksXG4gIGNvdW50cnk6IHcoeiQxLnN0cmluZygpKSxcbiAgemlwX2NvZGU6IHcoeiQxLnN0cmluZygpKSxcbiAgZW1haWw6IHcoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19lbWFpbDogdyh6JDEuc3RyaW5nKCkpLFxuICBwaG9uZV9udW1iZXI6IHcoeiQxLnN0cmluZygpKSxcbiAgdXBkYXRlX3Byb2Nlc3Nvcl9jdXN0b21lcjogdyh6JDEuYm9vbGVhbigpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IHcoeiQxLnN0cmluZygpKSxcbiAgZmlyc3RfbmFtZTogdyh6JDEuc3RyaW5nKCkpLFxuICBsYXN0X25hbWU6IHcoeiQxLnN0cmluZygpKSxcbiAgcGhvbmVfbnVtYmVyOiB3KHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfZW1haWw6IHcoeiQxLnN0cmluZygpKSxcbiAgYWRkcmVzczogdyh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBGciA9IHokMS5vYmplY3Qoe1xuICBlcnJvcl9jb2RlOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB5ZSxcbiAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5hbnkoKSkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBNciA9IHokMS5vYmplY3Qoe1xuICBuZXh0X2FjdGlvbl9tZXRhZGF0YTogdyh6JDEucmVjb3JkKHokMS5hbnkoKSkpXG59KSwgRHIgPSAodCkgPT4gdC5yZWR1Y2UoKG4sIGUpID0+IG4gKyBlLCAwKTtcbmZ1bmN0aW9uIE9yKHQsIG4pIHtcbiAgdmFyIGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2Y7XG4gIGUgPyBlKHQsIG4pIDogdC5fX3Byb3RvX18gPSBuO1xufVxuZnVuY3Rpb24gTnIodCwgbikge1xuICBuID09PSB2b2lkIDAgJiYgKG4gPSB0LmNvbnN0cnVjdG9yKTtcbiAgdmFyIGUgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcbiAgZSAmJiBlKHQsIG4pO1xufVxudmFyIFRyID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgdCA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgICByZXR1cm4gdCA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7XG4gICAgICBfX3Byb3RvX186IFtdXG4gICAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgIGEuX19wcm90b19fID0gaTtcbiAgICB9IHx8IGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgIGZvciAodmFyIHMgaW4gaSlcbiAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGksIHMpICYmIChhW3NdID0gaVtzXSk7XG4gICAgfSwgdChlLCByKTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKG4sIGUpIHtcbiAgICBpZiAodHlwZW9mIGUgIT0gXCJmdW5jdGlvblwiICYmIGUgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGUpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICB0KG4sIGUpO1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gbjtcbiAgICB9XG4gICAgbi5wcm90b3R5cGUgPSBlID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShlKSA6IChyLnByb3RvdHlwZSA9IGUucHJvdG90eXBlLCBuZXcgcigpKTtcbiAgfTtcbn0oKSwgTHIgPSBmdW5jdGlvbih0KSB7XG4gIFRyKG4sIHQpO1xuICBmdW5jdGlvbiBuKGUsIHIpIHtcbiAgICB2YXIgYSA9IHRoaXMuY29uc3RydWN0b3IsIGkgPSB0LmNhbGwodGhpcywgZSwgcikgfHwgdGhpcztcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYS5uYW1lLFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9yKGksIGEucHJvdG90eXBlKSwgTnIoaSksIGk7XG4gIH1cbiAgcmV0dXJuIG47XG59KEVycm9yKTtcbmNsYXNzICR0IGV4dGVuZHMgTHIge1xuICBjb25zdHJ1Y3RvcihuKSB7XG4gICAgY29uc3QgZSA9IGAke24ubWVzc2FnZX1gO1xuICAgIHN1cGVyKGUpLCB0aGlzLnJlc3BvbnNlID0gbjtcbiAgfVxuICBnZXQgb3JpZ2luYWxFcnJvck1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2UubWVzc2FnZTtcbiAgfVxufVxuY29uc3QgVSA9IGFzeW5jICh0LCBuLCBlKSA9PiB7XG4gIGNvbnN0IHIgPSBhd2FpdCB0LnNlbmQobik7XG4gIGlmIChqcihyKSlcbiAgICB0aHJvdyBuZXcgJHQocik7XG4gIGlmICghVXIociwgZSkpIHtcbiAgICBjb25zdCBhID0gZS5zYWZlUGFyc2Uocik7XG4gICAgdGhyb3cgYS5zdWNjZXNzID8gbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZVwiKSA6IChjb25zb2xlLmVycm9yKFwiT0pTIHF1ZXJ5QXBpIGdvdCBhIHNjaGVtYSBlcnJvci4gRXhwZWN0ZWQgc2NoZW1hOlwiLCBlLCBcIkFjdHVhbDpcIiwgciksIGEuZXJyb3IpO1xuICB9XG4gIHJldHVybiByO1xufSwgVXIgPSAodCwgbikgPT4gbi5zYWZlUGFyc2UodCkuc3VjY2VzcywganIgPSAodCkgPT4geXIuc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsIHhyID0gYXN5bmMgKHQsIG4pID0+IGF3YWl0IFUodCwgeyB0eXBlOiBcImdldF9jaGVja291dF9wcmV2aWV3XCIsIHBheWxvYWQ6IG4gfSwgTHQpLCBNID0gYXN5bmMgKHQpID0+IGF3YWl0IFUodCwgeyB0eXBlOiBcImdldF9wcmVmaWxsXCIsIHBheWxvYWQ6IHt9IH0sIFV0KSwgZmUgPSBhc3luYyAodCwgbikgPT4gYXdhaXQgVSh0LCB7IHR5cGU6IFwidjJfc3RhcnRfcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IG4gfSwgeHQpLCAkciA9IGFzeW5jICh0LCBuKSA9PiBhd2FpdCBVKHQsIHsgdHlwZTogXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX2NjXCIsIHBheWxvYWQ6IG4gfSwgUnIpLCB6ciA9IGFzeW5jICh0LCBuKSA9PiBhd2FpdCBVKHQsIHsgdHlwZTogXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX3ByXCIsIHBheWxvYWQ6IG4gfSwgeHQpLCBHID0gYXN5bmMgKHQsIG4pID0+IGF3YWl0IFUodCwgeyB0eXBlOiBcImNvbmZpcm1fcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IG4gfSwgZXIpLCBHciA9IGFzeW5jICh0LCBuKSA9PiBhd2FpdCBVKHQsIHsgdHlwZTogXCJmaW5hbGl6ZV9zZXR1cF9wYXltZW50X21ldGhvZFwiLCBwYXlsb2FkOiBuIH0sIGp0KSwgVnIgPSBhc3luYyAodCwgbikgPT4gYXdhaXQgVShcbiAgdCxcbiAgeyB0eXBlOiBcImNoZWNrX2lmX3BvcHVwX3dpbmRvd192ZXJpZmllZFwiLCBwYXlsb2FkOiBuIH0sXG4gIFhuXG4pLCBxciA9IGFzeW5jICh0LCBuLCBlKSA9PiB7XG4gIGNvbnN0IHIgPSBhd2FpdCB4cih0LCB7XG4gICAgc2VjdXJlX3Rva2VuOiBuLFxuICAgIHByb21vdGlvbl9jb2RlOiBlXG4gIH0pLCBhID0gbmV3IFNldChyLnByZXZpZXcuaW52b2ljZXMubWFwKChjKSA9PiBjLmN1cnJlbmN5KSk7XG4gIGlmIChhLnNpemUgIT09IDEpXG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBleGFjdGx5IG9uZSBjdXJyZW5jeSwgZ290ICR7YS5zaXplfWApO1xuICBjb25zdCBpID0gYS52YWx1ZXMoKS5uZXh0KCkudmFsdWUgPz8gXCJ1c2RcIiwgcyA9IERyKHIucHJldmlldy5pbnZvaWNlcy5tYXAoKGMpID0+IGMucmVtYWluaW5nX2Ftb3VudF9hdG9tKSk7XG4gIHJldHVybiB7XG4gICAgY3VycmVuY3k6IGksXG4gICAgYW1vdW50QXRvbTogc1xuICB9O1xufSwgaGUgPSBhc3luYyAodCwgbiwgZSwgcikgPT4ge1xuICBpZiAoZSlcbiAgICByZXR1cm4geyBhbW91bnRBdG9tOiAwLCBjdXJyZW5jeTogXCJ1c2RcIiB9O1xuICB7XG4gICAgciA9IHIgfHwgdm9pZCAwO1xuICAgIGNvbnN0IGEgPSBhd2FpdCBxcih0LCBuLCByKTtcbiAgICByZXR1cm4geyBhbW91bnRBdG9tOiBhLmFtb3VudEF0b20sIGN1cnJlbmN5OiBhLmN1cnJlbmN5IH07XG4gIH1cbn0sIFlyID0gYXN5bmMgKHQsIG4pID0+IHtcbiAgaWYgKHQuc2l6ZSA9PT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBDREUgY29ubmVjdGlvbnMgZm91bmRcIik7XG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBBcnJheS5mcm9tKHQudmFsdWVzKCkpLm1hcChcbiAgICAgIChyKSA9PiBVKHIsIHsgdHlwZTogXCJ0b2tlbml6ZV9jYXJkXCIsIHBheWxvYWQ6IG4gfSwgWm4pXG4gICAgKVxuICApO1xufSwgdXQgPSBhc3luYyAodCwgbikgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBVKHQsIHsgdHlwZTogXCJjaGVja291dF9jYXJkX2VsZW1lbnRzXCIsIHBheWxvYWQ6IG4gfSwgdHQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgY29uc29sZS5lcnJvcihcIltjZGUtY2xpZW50XSBFcnJvciBkdXJpbmcgY2hlY2tvdXRDYXJkRWxlbWVudHM6XCIsIGUsIEpTT04uc3RyaW5naWZ5KGUpKSwgZTtcbiAgfVxufSwgS3IgPSBhc3luYyAodCwgbikgPT4gYXdhaXQgVSh0LCB7IHR5cGU6IFwic2V0dXBfcGF5bWVudF9tZXRob2RcIiwgcGF5bG9hZDogbiB9LCBqdCksIHJ0ID0gYXN5bmMgKHQsIG4pID0+IGF3YWl0IFUodCwgeyB0eXBlOiBcImNoZWNrb3V0XCIsIHBheWxvYWQ6IG4gfSwgdHQpLCB6dCA9IDFlMywgV3IgPSBhc3luYyAodCwgbikgPT4ge1xuICBjb25zb2xlLmxvZyhuKTtcbiAgY29uc3QgciA9IGF3YWl0IGNvbm5lY3RUb0NoaWxkKHtcbiAgICBpZnJhbWU6IHQsXG4gICAgZGVidWc6ICEwLFxuICAgIHRpbWVvdXQ6IHp0LFxuICAgIGNoaWxkT3JpZ2luOiBcIipcIlxuICAgIC8vIFRPRE86IHVzZSB3aXRoIHByb3BlciBjaGlsZE9yaWdpblxuICB9KS5wcm9taXNlLCBhID0gYXdhaXQgVShyLCB7IHR5cGU6IFwicGluZy0zZHMtc3RhdHVzXCIgfSwgQm4pO1xuICByZXR1cm4gY29uc29sZS5sb2coXCLwn5+iIENERSBjb25uZWN0aW9uIHN1Y2Nlc3NmdWwhIFN0b3BwaW5nIHBvbGxpbmcuLi4gUmVzdWx0OlwiLCBhKSwgYTtcbn0sIEd0ID0gYXN5bmMgKHQsIG4pID0+IGF3YWl0IFUodCwgeyB0eXBlOiBcInByZXBhcmVfcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IG4gfSwgTXIpLCBWdCA9IGFzeW5jICh0LCBuKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBVKFxuICAgICAgdCxcbiAgICAgIHsgdHlwZTogXCJnZXRfc3RhbmRhcmRpemVkX2Vycm9yX2NvZGVcIiwgcGF5bG9hZDogeyBtZXNzYWdlOiBuIH0gfSxcbiAgICAgIEZyXG4gICAgKSkuZXJyb3JfY29kZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBjb25zb2xlLmVycm9yKFwiW2NkZS1jbGllbnRdIEVycm9yIGR1cmluZyBnZXRTdGFuZGFyZGl6ZWRFcnJvckNvZGU6XCIsIEgoZSkpLCBcIlBBWU1FTlRfRkFJTEVEX0dFTkVSSUNcIjtcbiAgfVxufTtcbmZ1bmN0aW9uIFVlKHQpIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQgY2FzZTogJHt0fWApO1xufVxuY29uc3QgZWUgPSAodCkgPT4gYXN5bmMgKG4pID0+IHtcbiAgdmFyIGUsIHI7XG4gIHRyeSB7XG4gICAgKHIgPSAoZSA9IG4uZm9ybUNhbGxiYWNrcy5nZXQpLm9uQ2hlY2tvdXRTdGFydGVkKSA9PSBudWxsIHx8IHIuY2FsbChlKTtcbiAgICBjb25zdCBhID0gYXdhaXQgdChuKTtcbiAgICBpZiAoYS5tb2RlID09PSBcInNldHVwXCIpXG4gICAgICBuLmZvcm1DYWxsYmFja3MuZ2V0Lm9uU2V0dXBQYXltZW50TWV0aG9kU3VjY2VzcyhhLnJlc3VsdC5wYXltZW50X21ldGhvZF9pZCk7XG4gICAgZWxzZSBpZiAoYS5tb2RlID09PSBcImNoZWNrb3V0XCIpXG4gICAgICBuLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQ2hlY2tvdXRTdWNjZXNzKFxuICAgICAgICBhLnJlc3VsdC5pbnZvaWNlX3VybHMsXG4gICAgICAgIGEucmVzdWx0LnN1YnNjcmlwdGlvbl9pZHMsXG4gICAgICAgIGEucmVzdWx0LmN1c3RvbWVyX2lkXG4gICAgICApO1xuICAgIGVsc2VcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIG1vZGU6ICR7YX1gKTtcbiAgfSBjYXRjaCAoYSkge1xuICAgIGNvbnN0IGkgPSBIKGEpLCBzID0gYXdhaXQgVnQobi5jb250ZXh0LmFueUNkZUNvbm5lY3Rpb24sIGkpO1xuICAgIG4uZm9ybUNhbGxiYWNrcy5nZXQub25DaGVja291dEVycm9yKGksIHMpO1xuICB9XG59LCBzZSA9ICh0KSA9PiBhc3luYyAobikgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB0KG4pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc3QgeyBlcnJfXzogciB9ID0gUyhcImluaXQtZXJyb3ItY2F0Y2hlclwiKSwgYSA9IEgoZSksIGkgPSBhd2FpdCBWdChuLmNvbnRleHQuYW55Q2RlQ29ubmVjdGlvbiwgYSk7XG4gICAgcmV0dXJuIHIoaSwgYSwgZSksIHsgaXNBdmFpbGFibGU6ICExLCByZWFzb246IGEsIGVycm9yQ29kZTogaSB9O1xuICB9XG59LCBTID0gKHQpID0+IHtcbiAgY29uc3QgbiA9ICguLi5yKSA9PiB7XG4gICAgd2luZG93LmNvbnNvbGUubG9nKGAke0FlLmdyZWVuLmJvbGQoXCJvanMvXCIpfSR7QWUuYm9sZC5ncmF5KGAke3R9YCl9XHRgLCAuLi5yKTtcbiAgfSwgZSA9ICguLi5yKSA9PiB7XG4gICAgd2luZG93LmNvbnNvbGUud2FybihgJHtBZS5yZWQuYm9sZChcIm9qcy9cIil9JHtBZS5ib2xkLmdyYXkoYCR7dH1gKX1cdGAsIC4uLnIpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGxvZzogbixcbiAgICBlcnI6IGUsXG4gICAgbG9nX186IG4sXG4gICAgZXJyX186IGVcbiAgfTtcbn0sIHsgbG9nX186IGdpLCBlcnJfXzogSnIgfSA9IFMoXCJjb21tb25cIiksIENlID0gKHQpID0+IHtcbiAgaWYgKHQucGF5bWVudF9tZXRob2RzLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGV4YWN0bHkgb25lIHBheW1lbnQgbWV0aG9kLCBnb3QgJHt0LnBheW1lbnRfbWV0aG9kcy5sZW5ndGh9YCk7XG4gIHJldHVybiB7IHBheW1lbnRfbWV0aG9kX2lkOiB0LnBheW1lbnRfbWV0aG9kc1swXS5pZCB9O1xufSwgWSA9ICh0LCBuKSA9PiB7XG4gIGNvbnN0IGUgPSB0LmZpbmQoKHIpID0+IG4uc2FmZVBhcnNlKHIpLnN1Y2Nlc3MpO1xuICBpZiAoIWUpXG4gICAgdGhyb3cgSnIoXCJObyBDUE1zIGZvdW5kIGZvciBtb2RlbC4gQWxsIG1vZGVsczpcIiwgdCksIG5ldyBFcnJvcihcIk5vIENQTXMgZm91bmQgZm9yIG1vZGVsXCIpO1xuICByZXR1cm4gbi5wYXJzZShlKTtcbn0sIEhyID0gKHQpID0+ICh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogdC5lbWFpbCxcbiAgbmV3X2N1c3RvbWVyX2FkZHJlc3M6IHtcbiAgICB6aXBfY29kZTogdC56aXBDb2RlLFxuICAgIGNvdW50cnk6IHQuY291bnRyeVxuICB9LFxuICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogdC5maXJzdE5hbWUsXG4gIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHQubGFzdE5hbWVcbn0pLCBqZSA9IGFzeW5jICh0KSA9PiB7XG4gIGNvbnN0IHsgbG9nX186IG4gfSA9IFModC5sb2dQcmVmaXgpLCBlID0gYXdhaXQgTSh0LmFueUNkZUNvbm5lY3Rpb24pLCByID0gQ2UodC5jb25maXJtUmVzdWx0KTtcbiAgaWYgKGUubW9kZSA9PT0gXCJzZXR1cFwiKVxuICAgIHJldHVybiBuKFwiU2V0dGluZyB1cCBwYXltZW50IG1ldGhvZC4uLlwiKSwgeyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogYXdhaXQgR3IodC5hbnlDZGVDb25uZWN0aW9uLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGUudG9rZW4sXG4gICAgICBwbV9pZDogci5wYXltZW50X21ldGhvZF9pZFxuICAgIH0pIH07XG4gIHtcbiAgICBuKFwiRG9pbmcgY2hlY2tvdXQuLi5cIik7XG4gICAgY29uc3QgYSA9IHtcbiAgICAgIHNlY3VyZV90b2tlbjogZS50b2tlbixcbiAgICAgIHBheW1lbnRfaW5wdXQ6IHtcbiAgICAgICAgcHJvdmlkZXJfdHlwZTogdC5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXJcbiAgICAgIH0sXG4gICAgICBjdXN0b21lcl9lbWFpbDogdC5yZXF1aXJlZEZvcm1GaWVsZHNbcC5FTUFJTF0sXG4gICAgICBjdXN0b21lcl96aXBfY29kZTogdC5yZXF1aXJlZEZvcm1GaWVsZHNbcC5aSVBfQ09ERV0sXG4gICAgICBjdXN0b21lcl9jb3VudHJ5OiB0LnJlcXVpcmVkRm9ybUZpZWxkc1twLkNPVU5UUlldLFxuICAgICAgcHJvbW90aW9uX2NvZGU6IHQucmVxdWlyZWRGb3JtRmllbGRzW3AuUFJPTU9USU9OX0NPREVdLFxuICAgICAgbGluZV9pdGVtczogZS5saW5lX2l0ZW1zLFxuICAgICAgdG90YWxfYW1vdW50X2F0b206IGUuYW1vdW50X3RvdGFsX2F0b20sXG4gICAgICBjYW5jZWxfYXRfZW5kOiAhMSxcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIHVzZV9jb25maXJtZWRfcG1faWQ6IHIucGF5bWVudF9tZXRob2RfaWRcbiAgICB9O1xuICAgIHJldHVybiB7IG1vZGU6IFwiY2hlY2tvdXRcIiwgcmVzdWx0OiBhd2FpdCBydCh0LmFueUNkZUNvbm5lY3Rpb24sIGEpIH07XG4gIH1cbn0sIHsgbG9nX186IHF0LCBlcnJfXzogWXQgfSA9IFMoXCJjb21tb24tY2NcIiksIHRlID0gKHQsIG4sIGUpID0+IHtcbiAgaWYgKGUpIHtcbiAgICBxdChgUmVjZWl2ZWQgZGVmYXVsdCBmaWVsZCB2YWx1ZXM6ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCk7XG4gICAgZm9yIChjb25zdCBbYSwgaV0gb2YgT2JqZWN0LmVudHJpZXMoZSkpXG4gICAgICB0W2FdIHx8ICh0W2FdID0gaSk7XG4gIH1cbiAgY29uc3QgciA9IEVlLnNhZmVQYXJzZSh0KTtcbiAgaWYgKCFyLnN1Y2Nlc3MpIHtcbiAgICBjb25zdCBhID0gci5lcnJvci5mb3JtYXQoKSwgaSA9IHRyKGEpO1xuICAgIGZvciAoY29uc3QgW3MsIGNdIG9mIE9iamVjdC5lbnRyaWVzKGkpKVxuICAgICAgbihzLCBjLCBzKTtcbiAgICB0aHJvdyBZdChcIkdvdCB2YWxpZGF0aW9uIGVycm9ycyBpbiBub24tQ0RFIGZvcm0gZmllbGRzXCIsIGkpLCBuZXcgRXJyb3IoXCJHb3QgdmFsaWRhdGlvbiBlcnJvcnMgaW4gbm9uLUNERSBmb3JtIGZpZWxkc1wiKTtcbiAgfVxuICByZXR1cm4gci5kYXRhO1xufSwgWnIgPSAodCwgbikgPT4ge1xuICBmb3IgKGNvbnN0IGUgb2YgdClcbiAgICBpZiAoZS5zdWNjZXNzID09PSAhMSlcbiAgICAgIHRocm93IGUuZXJyb3JzLmZvckVhY2goKHIpID0+IHtcbiAgICAgICAgY29uc3QgYSA9IE10LnNhZmVQYXJzZShyLmVsZW1lbnRUeXBlKTtcbiAgICAgICAgaWYgKCFhLnN1Y2Nlc3MpXG4gICAgICAgICAgWXQoYFVua25vd24gZmllbGQgbmFtZSBpbiBvblZhbGlkYXRpb25FcnJvcjogJHtyLmVsZW1lbnRUeXBlfS4gRXJyb3Igb2JqZWN0OmAsIHIpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCBpID0gYS5kYXRhO1xuICAgICAgICAgIG4oaSwgci5lcnJvcnMpO1xuICAgICAgICB9XG4gICAgICB9KSwgcXQoYEVycm9yIHRva2VuaXppbmcgY2FyZDogZ290IHZhbGlkYXRpb24gZXJyb3JzOiAke0pTT04uc3RyaW5naWZ5KGUuZXJyb3JzKX1gKSwgbmV3IEVycm9yKFwiR290IHZhbGlkYXRpb24gZXJyb3JzIHdoaWxlIHRva2VuaXppbmcgY2FyZFwiKTtcbn0sIGR0ID0gXCJvanMtc3RyaXBlLWxpbmstYnRuXCIsIHsgbG9nX186IFIsIGVycl9fOiBCciB9ID0gUyhcInN0cmlwZS1saW5rXCIpLCBRciA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJzdHJpcGVfbGlua1wiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBYciA9IHokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpLCBlbyA9IHNlKFxuICBhc3luYyAoeyBjb250ZXh0OiB0LCBmb3JtQ2FsbGJhY2tzOiBuIH0pID0+IHtcbiAgICBjb25zdCBlID0gdC5jdXN0b21Jbml0UGFyYW1zLnN0cmlwZUxpbms7XG4gICAgUihcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgU3RyaXBlIExpbmsuLi5cIik7XG4gICAgY29uc3QgciA9IFkodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBRcik7XG4gICAgUihcIlN0YXJ0aW5nIHN0cmlwZSBsaW5rIGZsb3cuLi5cIik7XG4gICAgY29uc3QgYSA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgaSA9IGF3YWl0IE0oYSksIHMgPSBpLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICBSKFwiQ3JlYXRpbmcgc3RyaXBlIGVsZW1lbnRzLi4uXCIpO1xuICAgIGNvbnN0IGMgPSBhd2FpdCBoZShhLCBpLnRva2VuLCBzLCB2b2lkIDApLCB7IGVsZW1lbnRzOiBsLCBzdHJpcGU6IHUgfSA9IGF3YWl0IGFyKHIubWV0YWRhdGEuc3RyaXBlX3BrLCB7XG4gICAgICBtb2RlOiBcInNldHVwXCIsXG4gICAgICBjdXJyZW5jeTogYy5jdXJyZW5jeSxcbiAgICAgIHNldHVwX2Z1dHVyZV91c2FnZTogXCJvZmZfc2Vzc2lvblwiLFxuICAgICAgcGF5bWVudE1ldGhvZENyZWF0aW9uOiBcIm1hbnVhbFwiXG4gICAgfSk7XG4gICAgUihcIkNyZWF0aW5nIGV4cHJlc3MgY2hlY2tvdXQuLi5cIik7XG4gICAgY29uc3QgZCA9IGwuY3JlYXRlKFwiZXhwcmVzc0NoZWNrb3V0XCIsIHtcbiAgICAgIGJ1dHRvbkhlaWdodDogZSA9PSBudWxsID8gdm9pZCAwIDogZS5idXR0b25IZWlnaHQsXG4gICAgICBwYXltZW50TWV0aG9kczoge1xuICAgICAgICBhbWF6b25QYXk6IFwibmV2ZXJcIixcbiAgICAgICAgYXBwbGVQYXk6IFwibmV2ZXJcIixcbiAgICAgICAgZ29vZ2xlUGF5OiBcIm5ldmVyXCIsXG4gICAgICAgIHBheXBhbDogXCJuZXZlclwiXG4gICAgICB9XG4gICAgfSksIGYgPSAoKSA9PiB7XG4gICAgICBkLm1vdW50KGAjJHtkdH1gKTtcbiAgICB9LCBoID0gKCkgPT4ge1xuICAgICAgZC51bm1vdW50KCk7XG4gICAgfTtcbiAgICByZXR1cm4gZSAhPSBudWxsICYmIGUuZG9Ob3RNb3VudE9uSW5pdCA/IFIoXCJOT1QgbW91bnRpbmcgc3RyaXBlIGxpbmsgYnV0dG9uIChkb05vdE1vdW50T25Jbml0IGlzIHRydWUpXCIpIDogKFIoXCJNb3VudGluZyBzdHJpcGUgbGluayBidXR0b24uLi5cIiksIGYoKSksIGQub24oXCJjbGlja1wiLCBhc3luYyAoeSkgPT4ge1xuICAgICAgaWYgKFIoXCJTdHJpcGUgTGluayBidXR0b24gY2xpY2tlZFwiKSwgZSAhPSBudWxsICYmIGUub3ZlcnJpZGVMaW5rU3VibWl0ICYmICFhd2FpdCBlLm92ZXJyaWRlTGlua1N1Ym1pdCgpKSB7XG4gICAgICAgIFIoXCJTdHJpcGUgTGluayBzdWJtaXQgYWJvcnRlZCBieSBvdmVycmlkZUxpbmtTdWJtaXRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHkucmVzb2x2ZSgpO1xuICAgIH0pLCBkLm9uKFwiY29uZmlybVwiLCBhc3luYyAoeSkgPT4ge1xuICAgICAgUihcIlN0cmlwZSBMaW5rIHdpbmRvdyBjb25maXJtZWRcIiwgeSk7XG4gICAgICBjb25zdCBtID0gYXdhaXQgdS5jcmVhdGVQYXltZW50TWV0aG9kKHtcbiAgICAgICAgZWxlbWVudHM6IGwsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGJpbGxpbmdfZGV0YWlsczogeS5iaWxsaW5nRGV0YWlsc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG0uZXJyb3IgPyAoQnIoXCJlcnJvclwiLCBtLmVycm9yKSwgbi5nZXQub25DaGVja291dEVycm9yKG0uZXJyb3IubWVzc2FnZSA/PyBcIlN0cmlwZSBMaW5rIHVua25vd24gZXJyb3JcIikpIDogKFIoXCJwYXltZW50TWV0aG9kXCIsIG0ucGF5bWVudE1ldGhvZCksIGsuc3RyaXBlTGluay5ydW4oe1xuICAgICAgICBjb250ZXh0OiB0LFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IEoodC5mb3JtRGl2KSxcbiAgICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgICAgY3VzdG9tUGFyYW1zOiB7IHN0cmlwZVBNOiBtLnBheW1lbnRNZXRob2QgfSxcbiAgICAgICAgaW5pdFJlc3VsdDogeyBpc0F2YWlsYWJsZTogITAgfVxuICAgICAgfSkpO1xuICAgIH0pLCB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBjb250cm9sbGVyOiB7XG4gICAgICAgIG1vdW50QnV0dG9uOiBmLFxuICAgICAgICBkaXNtb3VudEJ1dHRvbjogaCxcbiAgICAgICAgd2FpdEZvckJ1dHRvblRvTW91bnQ6IGFzeW5jICgpID0+IGF3YWl0IHJvKGR0KVxuICAgICAgfVxuICAgIH07XG4gIH1cbiksIHRvID0gZWUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogdCxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogZSxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogYVxuICB9KSA9PiB7XG4gICAgUihcIlJ1bm5pbmcgU3RyaXBlIExpbmsgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gdC5hbnlDZGVDb25uZWN0aW9uO1xuICAgIFIoXCJNZXJnaW5nIFBNIGZpZWxkcyB3aXRoIGZvcm0gZmllbGRzLi4uXCIpO1xuICAgIGNvbnN0IHMgPSBubyhlLCBhLnN0cmlwZVBNKSwgYyA9IHRlKHMsIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKTtcbiAgICBSKFwiU3RhcnRpbmcgcGF5bWVudCBmbG93Li4uXCIpO1xuICAgIGNvbnN0IGwgPSBhd2FpdCBmZShpLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG4sXG4gICAgICB0aGVpcl9leGlzdGluZ19wbV9pZDogYS5zdHJpcGVQTS5pZCxcbiAgICAgIG5ld19jdXN0b21lcl9lbWFpbDogY1twLkVNQUlMXSxcbiAgICAgIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiBjW3AuRklSU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiBjW3AuTEFTVF9OQU1FXSxcbiAgICAgIG5ld19jdXN0b21lcl9hZGRyZXNzOiB7XG4gICAgICAgIHppcF9jb2RlOiBjW3AuWklQX0NPREVdLFxuICAgICAgICBjb3VudHJ5OiBjW3AuQ09VTlRSWV1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBSKFwiU3RhcnQgcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIGwpO1xuICAgIGNvbnN0IGQgPSBYci5wYXJzZShsLnJlcXVpcmVkX3VzZXJfYWN0aW9ucylbMF0ub3VyX2V4aXN0aW5nX3BtX2lkLCBmID0gYXdhaXQgTShpKTtcbiAgICBpZiAoZi5tb2RlID09PSBcInNldHVwXCIpIHtcbiAgICAgIFIoXCJEb2luZyBwYXltZW50IHNldHVwLi4uXCIpO1xuICAgICAgY29uc3QgaCA9IGF3YWl0IEcoaSwge1xuICAgICAgICBzZWN1cmVfdG9rZW46IGYudG9rZW4sXG4gICAgICAgIGV4aXN0aW5nX2NjX3BtX2lkOiBkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBDZShoKSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBSKFwiRG9pbmcgY2hlY2tvdXQuLi5cIik7XG4gICAgICBjb25zdCBoID0ge1xuICAgICAgICBzZWN1cmVfdG9rZW46IGYudG9rZW4sXG4gICAgICAgIHBheW1lbnRfaW5wdXQ6IHtcbiAgICAgICAgICBwcm92aWRlcl90eXBlOiBuLnByb3ZpZGVyXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbWVyX2VtYWlsOiBjW3AuRU1BSUxdLFxuICAgICAgICBjdXN0b21lcl96aXBfY29kZTogY1twLlpJUF9DT0RFXSxcbiAgICAgICAgY3VzdG9tZXJfY291bnRyeTogY1twLkNPVU5UUlldLFxuICAgICAgICBwcm9tb3Rpb25fY29kZTogY1twLlBST01PVElPTl9DT0RFXSxcbiAgICAgICAgbGluZV9pdGVtczogZi5saW5lX2l0ZW1zLFxuICAgICAgICB0b3RhbF9hbW91bnRfYXRvbTogZi5hbW91bnRfdG90YWxfYXRvbSxcbiAgICAgICAgY2FuY2VsX2F0X2VuZDogITEsXG4gICAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IGF3YWl0IHJ0KGksIGgpIH07XG4gICAgfVxuICB9XG4pLCBubyA9ICh0LCBuKSA9PiB7XG4gIHZhciBzLCBjLCBsLCB1LCBkO1xuICBjb25zdCBlID0geyAuLi50IH0sIFtyLCAuLi5hXSA9ICgoYyA9IChzID0gbi5iaWxsaW5nX2RldGFpbHMubmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHMudHJpbSgpKSA9PSBudWxsID8gdm9pZCAwIDogYy5zcGxpdCgvXFxzKy8pKSA/PyBbXSwgaSA9IGEuam9pbihcIiBcIikgfHwgdm9pZCAwO1xuICByZXR1cm4gZVtwLkZJUlNUX05BTUVdID0gZVtwLkZJUlNUX05BTUVdIHx8IHIgfHwgXCJfT1BfVU5LTk9XTlwiLCBlW3AuTEFTVF9OQU1FXSA9IGVbcC5MQVNUX05BTUVdIHx8IGkgfHwgXCJfT1BfVU5LTk9XTlwiLCBlW3AuRU1BSUxdID0gZVtwLkVNQUlMXSB8fCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAoKGwgPSBuLmxpbmspID09IG51bGwgPyB2b2lkIDAgOiBsLmVtYWlsKSB8fCBuLmJpbGxpbmdfZGV0YWlscy5lbWFpbCB8fCBcIm9wX3VuZmlsbGVkQGdldG9wZW5wYXkuY29tXCIsIGVbcC5aSVBfQ09ERV0gPSBlW3AuWklQX0NPREVdIHx8ICgodSA9IG4uYmlsbGluZ19kZXRhaWxzLmFkZHJlc3MpID09IG51bGwgPyB2b2lkIDAgOiB1LnBvc3RhbF9jb2RlKSB8fCBcIjAwMDAwXCIsIGVbcC5DT1VOVFJZXSA9IGVbcC5DT1VOVFJZXSB8fCAoKGQgPSBuLmJpbGxpbmdfZGV0YWlscy5hZGRyZXNzKSA9PSBudWxsID8gdm9pZCAwIDogZC5jb3VudHJ5KSB8fCBcIlVTXCIsIFIoXCJGaW5hbCBmb3JtIGlucHV0czpcIiwgZSksIGU7XG59LCBybyA9ICh0KSA9PiBuZXcgUHJvbWlzZSgobikgPT4ge1xuICBjb25zdCBlID0gKCkgPT4ge1xuICAgIGNvbnN0IHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTtcbiAgICByID8gbihyKSA6IHJlcXVlc3RBbmltYXRpb25GcmFtZShlKTtcbiAgfTtcbiAgZSgpO1xufSksIG9vID0gXCJAa2V5ZnJhbWVzIGZhZGVJbnswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlKC45KX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlKDEpfX0ub3ZlcmxheXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt6LWluZGV4OjIxNDc0ODM2NDghaW1wb3J0YW50O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA4MH0uY29udGFpbmVye21heC13aWR0aDo1MDBweDttYXgtaGVpZ2h0OjYwMHB4O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZC1jb2xvcjojZmZmO3Bvc2l0aW9uOnJlbGF0aXZlO2FuaW1hdGlvbjpmYWRlSW4gLjNzIGVhc2Utb3V0fS5mcmFtZSwjYWR5ZW4tY29udGFpbmVyLCNhZHllbi1jb250YWluZXI+KnttYXgtd2lkdGg6NTAwcHg7bWF4LWhlaWdodDo2MDBweDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjpub25lfS5jYW5jZWwtYnV0dG9ue3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Zm9udC1zaXplOjFyZW07Y29sb3I6I2ZmZjtjdXJzb3I6cG9pbnRlcjt0b3A6LTEuNXJlbTtwYWRkaW5nOjA7cmlnaHQ6MH1cIiwgS3QgPSAodCkgPT4ge1xuICBjb25zdCBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRlbXBsYXRlXCIpO1xuICBuLmlubmVySFRNTCA9IGBcbiAgICA8c3R5bGU+XG4gICAgICAke29vfVxuICAgIDwvc3R5bGU+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idXR0b25cIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGlmcmFtZSBzcmM9XCIke3R9XCIgY2xhc3M9XCJmcmFtZVwiIGlkPVwidGhyZWUtZHMtaWZyYW1lXCIgdGl0bGU9XCIzRCBTZWN1cmUgdmVyaWZpY2F0aW9uXCIgYWxsb3c9XCJwYXltZW50XCI+PC9pZnJhbWU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYDtcbiAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksIHIgPSBlLmF0dGFjaFNoYWRvdyh7IG1vZGU6IFwib3BlblwiIH0pO1xuICByLmFwcGVuZENoaWxkKG4uY29udGVudC5jbG9uZU5vZGUoITApKTtcbiAgY29uc3QgYSA9IHIucXVlcnlTZWxlY3RvcihcIiN0aHJlZS1kcy1pZnJhbWVcIiksIGkgPSByLnF1ZXJ5U2VsZWN0b3IoXCIuY2FuY2VsLWJ1dHRvblwiKTtcbiAgcmV0dXJuIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSksIHsgaG9zdDogZSwgaWZyYW1lOiBhLCBjYW5jZWxCdXR0b246IGkgfTtcbn07XG5mdW5jdGlvbiBhbyh0LCBuLCBlKSB7XG4gIGNvbnN0IHIgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGkgPSBhd2FpdCBXcih0LCBlKTtcbiAgICAgIGkgJiYgKGNsZWFySW50ZXJ2YWwoYSksIG4oaSkpO1xuICAgIH0gY2F0Y2gge1xuICAgIH1cbiAgfTtcbiAgcigpO1xuICBjb25zdCBhID0gc2V0SW50ZXJ2YWwociwgenQpO1xuICByZXR1cm4gYTtcbn1cbmZ1bmN0aW9uIGlvKHtcbiAgZWxlbWVudHM6IHQsXG4gIHBvbGxpbmdJbnRlcnZhbDogbixcbiAgcmVzb2x2ZTogZVxufSkge1xuICBjb25zdCByID0gKCkgPT4ge1xuICAgIGNsZWFySW50ZXJ2YWwobiksIHQuaG9zdC5yZW1vdmUoKSwgZSh7IHN0YXR1czogSS5DQU5DRUxMRUQgfSk7XG4gIH07XG4gIHJldHVybiB0LmNhbmNlbEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgciksICgpID0+IHtcbiAgICB0LmNhbmNlbEJ1dHRvbi5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgcik7XG4gIH07XG59XG5hc3luYyBmdW5jdGlvbiB4ZSh0KSB7XG4gIGNvbnN0IHsgdXJsOiBuLCBiYXNlVXJsOiBlIH0gPSB0LCByID0gS3Qobik7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoYSkgPT4ge1xuICAgIGNvbnN0IGkgPSAobCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHIuaG9zdC5yZW1vdmUoKTtcbiAgICAgIH0sIDFlMyksIGEobCksIGMgPT0gbnVsbCB8fCBjKCk7XG4gICAgfSwgcyA9IGFvKHIuaWZyYW1lLCBpLCBuZXcgVVJMKGUpLm9yaWdpbiksIGMgPSBpbyh7XG4gICAgICBlbGVtZW50czogcixcbiAgICAgIHBvbGxpbmdJbnRlcnZhbDogcyxcbiAgICAgIHJlc29sdmU6IGFcbiAgICB9KTtcbiAgfSk7XG59XG5jb25zdCBXdCA9IGFzeW5jICh0KSA9PiB7XG4gIGNvbnN0IG4gPSBhd2FpdCB4ZSh0KTtcbiAgaWYgKG4uc3RhdHVzID09PSBJLkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKG4uc3RhdHVzID09PSBJLkZBSUxVUkUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gIHJldHVybiBuLnN0YXR1cyAhPT0gSS5TVUNDRVNTICYmIFVlKG4uc3RhdHVzKSwge1xuICAgIGhyZWY6IG4uaHJlZlxuICB9O1xufSwgc28gPSAodCwgbikgPT4ge1xuICBjb25zdCBlID0gd2luZG93Lm9wZW4obiwgXCJfYmxhbmtcIik7XG4gIGlmICghZSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dH0gcG9wdXAgd2luZG93IGJsb2NrZWQuIFBsZWFzZSBhbGxvdyBwb3B1cHMgZm9yIHRoaXMgc2l0ZS5gKTtcbiAgcmV0dXJuIGU7XG59LCBjbyA9IGFzeW5jICh0LCBuLCBlLCByKSA9PiB7XG4gIGNvbnN0IHsgZXJyX186IGEgfSA9IFMoXCJwb3B1cC12ZXJpZnlcIik7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoaSwgcykgPT4ge1xuICAgIGNvbnN0IGMgPSBzbyh0LCByKSwgbCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHUgPSBhd2FpdCBWcihuLCBlKTtcbiAgICAgICAgaWYgKHUucHJlc2VudClcbiAgICAgICAgICBjbGVhckludGVydmFsKGwpLCBjLmNsb3NlKCksIGkoeyBocmVmOiB1LmhyZWYgfSk7XG4gICAgICAgIGVsc2UgaWYgKGMuY2xvc2VkKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0fSBwYXltZW50IGNhbmNlbGxlZGApO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICBhKEgodSkpLCBjbGVhckludGVydmFsKGwpLCBzKEgodSkpO1xuICAgICAgfVxuICAgIH0sIDFlMyk7XG4gIH0pO1xufSwgeyBsb2dfXzogbG8sIGVycl9fOiBKdCB9ID0gUyhcInBvY2t5dC1jY1wiKSwgdW8gPSB6JDEub2JqZWN0KHtcbiAgXCJvcC1wb2NreXQtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXR4bi1ub1wiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXJlZi1ub1wiOiB6JDEuc3RyaW5nKClcbn0pLCBwbyA9ICh0KSA9PiB7XG4gIGNvbnN0IG4gPSB1by5zYWZlUGFyc2UodCk7XG4gIGlmICghbi5zdWNjZXNzKSB7XG4gICAgY29uc3QgZSA9IFwiVW5hYmxlIHRvIHByb2Nlc3MgeW91ciBjcmVkaXQgY2FyZC4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgciA9IGBQb2NreXQgM0RTIGlzIHJlcXVpcmVkIGJ1dCBoZWFkZXJzIGFyZSBtYWxmb3JtZWQuIEdvdDogJHtKU09OLnN0cmluZ2lmeSh0KX1gO1xuICAgIHRocm93IEp0KHIpLCBuZXcgRXJyb3IoZSk7XG4gIH1cbiAgcmV0dXJuIG4uZGF0YTtcbn0sIEh0ID0gKHQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBuID0gbmV3IFVSTCh0ID8/IFwiXCIpLnNlYXJjaFBhcmFtcy5nZXQoXCJ2YXVsdElkXCIpO1xuICAgIGlmICghbilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHZhdWx0IElEIGZvdW5kIGluIDNEUyB2ZXJpZmljYXRpb24gcmVzdWx0XCIpO1xuICAgIHJldHVybiBsbyhgM0RTIHZlcmlmaWNhdGlvbiBzdWNjZXNzLiBbVmF1bHQgSUQ6ICR7bn1dYCksIG47XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICBjb25zdCBlID0gXCJFcnJvciB2ZXJpZnlpbmcgM0RTIHZlcmlmaWNhdGlvbiByZXN1bHQuXCI7XG4gICAgdGhyb3cgSnQoZSwgYFJlc3VsdGluZyBVUkw6ICR7dH0uXG5FcnJvcjogJHtIKG4pfWApLCBuZXcgRXJyb3IoZSk7XG4gIH1cbn0sIG1vID0gKHQsIG4pID0+IG5ldyBVUkwodCkuc2VhcmNoUGFyYW1zLmdldChuKSwgeW8gPSAodCkgPT4gKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHRbXCJvcC1wb2NreXQtM2RzLXVybFwiXSkgIT09IHZvaWQgMCwgZm8gPSBhc3luYyAodCwgbikgPT4ge1xuICBjb25zdCBlID0gcG8obiksIHIgPSBhd2FpdCBXdCh7IHVybDogZVtcIm9wLXBvY2t5dC0zZHMtdXJsXCJdLCBiYXNlVXJsOiB0IH0pO1xuICByZXR1cm4ge1xuICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICB2YXVsdF9pZDogSHQoci5ocmVmID8/IFwiXCIpLFxuICAgICAgdHJhbnNhY3Rpb25fbm86IGVbXCJvcC1wb2NreXQtdHhuLW5vXCJdLFxuICAgICAgcmVmZXJlbmNlX25vOiBlW1wib3AtcG9ja3l0LXJlZi1ub1wiXVxuICAgIH1cbiAgfTtcbn0sIHsgbG9nX186IGhvLCBlcnJfXzogb3QgfSA9IFMoXCJhaXJ3YWxsZXgtY2NcIiksIF9vID0geiQxLm9iamVjdCh7XG4gIFwib3AtYWlyd2FsbGV4LTNkcy11cmxcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFpcndhbGxleC1pbml0aWFsLWludGVudC1pZFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWlyd2FsbGV4LWNvbnNlbnQtaWRcIjogeiQxLnN0cmluZygpXG59KSwgd28gPSAodCkgPT4ge1xuICBjb25zdCBuID0gX28uc2FmZVBhcnNlKHQpO1xuICBpZiAoIW4uc3VjY2Vzcykge1xuICAgIGNvbnN0IGUgPSBcIlVuYWJsZSB0byBwcm9jZXNzIHlvdXIgY3JlZGl0IGNhcmQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuXCIsIHIgPSBgQWlyd2FsbGV4IDNEUyBpcyByZXF1aXJlZCBidXQgaGVhZGVycyBhcmUgbWFsZm9ybWVkLiBHb3Q6ICR7SlNPTi5zdHJpbmdpZnkodCl9YDtcbiAgICB0aHJvdyBvdChyKSwgbmV3IEVycm9yKGUpO1xuICB9XG4gIHJldHVybiBuLmRhdGE7XG59LCBnbyA9ICh0KSA9PiAodCA9PSBudWxsID8gdm9pZCAwIDogdFtcIm9wLWFpcndhbGxleC0zZHMtdXJsXCJdKSAhPT0gdm9pZCAwLCBibyA9ICh0KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgbiA9IG5ldyBVUkwodCA/PyBcIlwiKS5zZWFyY2hQYXJhbXMuZ2V0KFwicGF5bWVudF9pbnRlbnRfaWRcIik7XG4gICAgaWYgKCFuKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gaW50ZW50IElEIGZvdW5kIGluIEFpcndhbGxleCAzRFMgdmVyaWZpY2F0aW9uIHJlc3VsdFwiKTtcbiAgICByZXR1cm4gaG8oYEFpcndhbGxleCAzRFMgdmVyaWZpY2F0aW9uIHN1Y2Nlc3MuIFtJbnRlbnQgSUQ6ICR7bn1dYCksIG47XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICBjb25zdCBlID0gXCJFcnJvciB2ZXJpZnlpbmcgQWlyd2FsbGV4IDNEUyB2ZXJpZmljYXRpb24gcmVzdWx0LlwiO1xuICAgIHRocm93IG90KGUsIGBSZXN1bHRpbmcgVVJMOiAke3R9LlxuRXJyb3I6ICR7SChuKX1gKSwgbmV3IEVycm9yKGUpO1xuICB9XG59LCB2byA9IGFzeW5jICh0LCBuKSA9PiB7XG4gIGNvbnN0IGUgPSB3byhuKSwgciA9IGF3YWl0IFd0KHsgdXJsOiBlW1wib3AtYWlyd2FsbGV4LTNkcy11cmxcIl0sIGJhc2VVcmw6IHQgfSksIGEgPSBibyhyLmhyZWYgPz8gXCJcIiksIGkgPSBlW1wib3AtYWlyd2FsbGV4LWluaXRpYWwtaW50ZW50LWlkXCJdO1xuICBpZiAoaSAhPT0gYSkge1xuICAgIGNvbnN0IGMgPSBcIlVuYWJsZSB0byBwcm9jZXNzIHlvdXIgY3JlZGl0IGNhcmQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuXCIsIGwgPSBgSW50ZW50IElEIGZyb20gY2FsbGJhY2sgKCR7YX0pIGRvZXMgbm90IG1hdGNoIHRoZSBpbml0aWFsIGludGVudCBJRCAoJHtpfSkuYDtcbiAgICB0aHJvdyBvdChsKSwgbmV3IEVycm9yKGMpO1xuICB9XG4gIHJldHVybiB7XG4gICAgZXhpc3RpbmdfY2M6IHtcbiAgICAgIGluaXRpYWxfaW50ZW50X2lkOiBhLFxuICAgICAgY29uc2VudF9pZDogZVtcIm9wLWFpcndhbGxleC1jb25zZW50LWlkXCJdXG4gICAgfVxuICB9O1xufSwgWnQgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSksIEJ0ID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImdvb2dsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImFpcndhbGxleFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pLCBFbyA9IHokMS5lbnVtKFtcInRlc3RcIiwgXCJsaXZlXCIsIFwibGl2ZS11c1wiLCBcImxpdmUtaW5cIiwgXCJsaXZlLWFwc2VcIiwgXCJsaXZlLWF1XCJdKSwgeyBsb2dfXzogdmUsIGVycl9fOiBNZSB9ID0gUyhcImFkeWVuLWNjXCIpLCBDbyA9IHokMS5vYmplY3Qoe1xuICBcIm9wLWFjY291bnQtaWRcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFkeWVuLWNsaWVudC1rZXlcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFkeWVuLWVudmlyb25tZW50XCI6IEVvLFxuICBcIm9wLWFkeWVuLWFjdGlvblwiOiB6JDEuc3RyaW5nKClcbn0pLCBRdCA9IFwiVW5hYmxlIHRvIHByb2Nlc3MgeW91ciBjcmVkaXQgY2FyZC4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgUG8gPSAodCkgPT4ge1xuICBjb25zdCBuID0gQ28uc2FmZVBhcnNlKHQpO1xuICBpZiAoIW4uc3VjY2VzcylcbiAgICB0aHJvdyBNZShgQWR5ZW4gM0RTIGlzIHJlcXVpcmVkIGJ1dCBoZWFkZXJzIGFyZSBtYWxmb3JtZWQuIEdvdDogJHtKU09OLnN0cmluZ2lmeSh0KX1gKSwgbmV3IEVycm9yKFF0KTtcbiAgcmV0dXJuIG4uZGF0YTtcbn0sIFNvID0gKHQpID0+IHtcbiAgY29uc3QgbiA9IEJ1ZmZlci5mcm9tKHQsIFwiYmFzZTY0XCIpLnRvU3RyaW5nKFwidXRmLThcIik7XG4gIHJldHVybiBKU09OLnBhcnNlKG4pO1xufSwgcHQgPSAoKSA9PiBcIkFkeWVuV2ViXCIgaW4gd2luZG93ICYmIFwiQWR5ZW5DaGVja291dFwiIGluIHdpbmRvdy5BZHllbldlYiwgQW8gPSBhc3luYyAoKSA9PiB7XG4gIHZlKFwiV2FpdGluZyBmb3IgQWR5ZW4gU0RLIHRvIGxvYWQuLi5cIik7XG4gIGZvciAobGV0IHQgPSAwOyB0IDwgMTA7IHQrKylcbiAgICBwdCgpIHx8IGF3YWl0IG50KDUwMCk7XG4gIGlmICghcHQoKSlcbiAgICB0aHJvdyBNZShcIkFkeWVuIFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCBuZXcgRXJyb3IoUXQpO1xuICByZXR1cm4gdmUoXCJBZHllbiBTREsgbG9hZGVkIHN1Y2Nlc3NmdWxseVwiKSwgd2luZG93LkFkeWVuV2ViLkFkeWVuQ2hlY2tvdXQ7XG59LCBrbyA9ICh0KSA9PiB7XG4gIGNvbnN0IHsgaGVhZGVyczogbiwgbG9jYWxlOiBlLCBjb3VudHJ5Q29kZTogciwgY29tcG9uZW50OiBhLCBob3N0OiBpLCBjYW5jZWxCdXR0b246IHMgfSA9IHQsIGMgPSBTbyhuW1wib3AtYWR5ZW4tYWN0aW9uXCJdKTtcbiAgcmV0dXJuIHZlKGBSdW5uaW5nIEFkeWVuIDNEUyBmbG93IGZvciBhY3Rpb24gdHlwZTogJHtjLnR5cGV9YCksIG5ldyBQcm9taXNlKChsKSA9PiB7XG4gICAgY29uc3QgdSA9ICgpID0+IHtcbiAgICAgIHZlKFwiQ2xlYW5pbmcgdXAgQWR5ZW4gM0RTIGZsb3dcIiksIHMucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGgpLCBpLnJlbW92ZSgpO1xuICAgIH0sIGQgPSAobSkgPT4ge1xuICAgICAgTWUoXCJBdXRoZW50aWNhdGlvbiBmYWlsZWQuIFJlc3VsdDpcIiwgbSksIGwoeyBzdGF0dXM6IEkuRkFJTFVSRSwgY2xlYW51cDogdSB9KTtcbiAgICB9LCBmID0gKG0pID0+IHtcbiAgICAgIE1lKFwiQWR5ZW4gZXJyb3I6XCIsIG0pLCBsKHsgc3RhdHVzOiBJLkZBSUxVUkUsIGNsZWFudXA6IHUgfSk7XG4gICAgfSwgaCA9ICgpID0+IHtcbiAgICAgIGwoeyBzdGF0dXM6IEkuQ0FOQ0VMTEVELCBjbGVhbnVwOiB1IH0pO1xuICAgIH07XG4gICAgcy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaCk7XG4gICAgY29uc3QgeSA9IChtLCBfLCB2KSA9PiB7XG4gICAgICBpLnJlbW92ZSgpLCBsKHsgc3RhdHVzOiBJLlNVQ0NFU1MsIGFkZGl0aW9uYWxEZXRhaWxzOiBtLCBjbGVhbnVwOiB1IH0pO1xuICAgIH07XG4gICAgQW8oKS50aGVuKFxuICAgICAgKG0pID0+IG0oe1xuICAgICAgICBjbGllbnRLZXk6IG5bXCJvcC1hZHllbi1jbGllbnQta2V5XCJdLFxuICAgICAgICBlbnZpcm9ubWVudDogbltcIm9wLWFkeWVuLWVudmlyb25tZW50XCJdLFxuICAgICAgICBsb2NhbGU6IGUsXG4gICAgICAgIGNvdW50cnlDb2RlOiByLFxuICAgICAgICBvbkFkZGl0aW9uYWxEZXRhaWxzOiB5LFxuICAgICAgICBvblBheW1lbnRGYWlsZWQ6IGQsXG4gICAgICAgIG9uRXJyb3I6IGZcbiAgICAgIH0pXG4gICAgKS50aGVuKChtKSA9PiB7XG4gICAgICBtLmNyZWF0ZUZyb21BY3Rpb24oYywgeyBjaGFsbGVuZ2VXaW5kb3dTaXplOiBcIjAzXCIgfSkubW91bnQoYSk7XG4gICAgfSk7XG4gIH0pO1xufSwgSW8gPSAodCkgPT4gKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHRbXCJvcC1hZHllbi1hY3Rpb25cIl0pICE9PSB2b2lkIDAsIFJvID0gYXN5bmMgKHQsIG4sIGUpID0+IHtcbiAgY29uc3QgciA9IFBvKGUpLCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYS5pZCA9IFwiYWR5ZW4tY29udGFpbmVyXCI7XG4gIGNvbnN0IHsgaG9zdDogaSwgaWZyYW1lOiBzLCBjYW5jZWxCdXR0b246IGMgfSA9IEt0KFwiaHR0cDovL2V4YW1wbGUuY29tXCIpO1xuICBzLnJlcGxhY2VXaXRoKGEpO1xuICBjb25zdCBsID0gYXdhaXQga28oe1xuICAgIGhlYWRlcnM6IHIsXG4gICAgbG9jYWxlOiB0LFxuICAgIGNvdW50cnlDb2RlOiBuLFxuICAgIGNvbXBvbmVudDogYSxcbiAgICBob3N0OiBpLFxuICAgIGNhbmNlbEJ1dHRvbjogY1xuICB9KTtcbiAgaWYgKGwuY2xlYW51cCgpLCBsLnN0YXR1cyA9PT0gSS5GQUlMVVJFKVxuICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICBpZiAobC5zdGF0dXMgPT09IEkuQ0FOQ0VMTEVEKVxuICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gY2FuY2VsbGVkXCIpO1xuICBpZiAobC5zdGF0dXMgPT09IEkuU1VDQ0VTUykge1xuICAgIGlmICghbC5hZGRpdGlvbmFsRGV0YWlscylcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gc3VjY2VlZGVkIGJ1dCBubyBhZGRpdGlvbmFsIGRldGFpbHMgd2VyZSByZXR1cm5lZFwiKTtcbiAgICByZXR1cm4gdmUoXCIzRFMgdmVyaWZpY2F0aW9uIHN1Y2NlZWRlZFwiKSwge1xuICAgICAgZXhpc3RpbmdfY2M6IHtcbiAgICAgICAgYWRkaXRpb25hbF9kZXRhaWxzOiBsLmFkZGl0aW9uYWxEZXRhaWxzLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICB9IGVsc2VcbiAgICBVZShsLnN0YXR1cyk7XG59LCB7IGxvZ19fOiBDLCBlcnJfXzogbXQgfSA9IFMoXCJjb21tb24tY2NcIiksIHsgbG9nX186IHl0IH0gPSBTKFwic3RyaXBlLWNjXCIpO1xueiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBvdXJfZXhpc3RpbmdfcG1faWQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5jb25zdCBGbyA9IGVlKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IHQsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IGUsXG4gICAgZm9ybUNhbGxiYWNrczogcixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIHZhciB1O1xuICAgIEMoXCLilJwgUnVubmluZyBjb21tb24gQ0MgZmxvdy4uLlwiLCB7IGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbiB9KTtcbiAgICBjb25zdCBpID0gdC5hbnlDZGVDb25uZWN0aW9uLCBzID0gYXdhaXQgTShpKTtcbiAgICBDKGDilJwgVmFsaWRhdGluZyBub24tQ0RFIGZvcm0gZmllbGRzIFtNb2RlOiAke3MubW9kZX1dYCk7XG4gICAgY29uc3QgYyA9IHRlKGUsIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKSwgbCA9IHtcbiAgICAgIHNlc3Npb25faWQ6IHQuZWxlbWVudHNTZXNzaW9uSWQsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbixcbiAgICAgIG5vbl9jZGVfZm9ybV9maWVsZHM6IGMsXG4gICAgICBleHRyYV9tZXRhZGF0YToge1xuICAgICAgICBvcmlnaW46IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cbiAgICAgIH1cbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICBDKGDilJwgVG9rZW5pemluZyBjYXJkIGluZm8gaW4gQ0RFIFtTZXNzaW9uOiAke3QuZWxlbWVudHNTZXNzaW9uSWR9XWApO1xuICAgICAgY29uc3QgZCA9IGF3YWl0IFlyKGEuY3VycmVudENkZUNvbm5lY3Rpb25zLCB7XG4gICAgICAgIHNlc3Npb25faWQ6IHQuZWxlbWVudHNTZXNzaW9uSWRcbiAgICAgIH0pO1xuICAgICAgaWYgKFpyKGQsIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKSwgcy5tb2RlID09PSBcInNldHVwXCIpIHtcbiAgICAgICAgQyhg4pScIFNldHRpbmcgdXAgcGF5bWVudCBtZXRob2QgaW4gQ0RFIFtUb2tlbjogJHtzLnRva2VufV1gKTtcbiAgICAgICAgY29uc3QgZiA9IGF3YWl0IEtyKGksIGwpO1xuICAgICAgICByZXR1cm4gQyhg4pWwIFNldHVwIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgW1BNIElEOiAke2YucGF5bWVudF9tZXRob2RfaWR9XWApLCB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBmIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBDKGDilJwgSW5pdGlhbCBjaGVja291dCBmbG93LiBDaGVja2luZyBvdXQgY2FyZCBpbmZvIGluIENERSBbU2Vzc2lvbjogJHt0LmVsZW1lbnRzU2Vzc2lvbklkfV1gKTtcbiAgICAgICAgY29uc3QgZiA9IGF3YWl0IHV0KGksIGwpO1xuICAgICAgICByZXR1cm4gQyhcIuKVsCBDaGVja291dCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LlwiKSwgeyBtb2RlOiBcImNoZWNrb3V0XCIsIHJlc3VsdDogZiB9O1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGQpIHtcbiAgICAgIGlmIChkIGluc3RhbmNlb2YgJHQgJiYgZC5vcmlnaW5hbEVycm9yTWVzc2FnZS5pbmNsdWRlcyhcIjNEU19SRVFVSVJFRFwiKSkge1xuICAgICAgICBDKFwi4pScIENhcmQgcmVxdWlyZXMgM0RTLCBzdGFydGluZyBub24tbGVnYWN5IHBheW1lbnQgZmxvd1wiKSwgQyhcIlJlY2VpdmVkIDNEUyBlcnJvciByZXNwb25zZSBoZWFkZXJzOlwiLCBkLnJlc3BvbnNlLmhlYWRlcnMpO1xuICAgICAgICBjb25zdCBmID0geW8oZC5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgaWYgKGYpIHtcbiAgICAgICAgICBDKFwi4pScIFBvY2t5dCAzRFMgY2FzZSBkZXRlY3RlZC4gR29pbmcgdGhyb3VnaCBQb2NreXQgM0RTIGZsb3cuXCIpO1xuICAgICAgICAgIGNvbnN0IGcgPSBhd2FpdCBmbyh0LmJhc2VVcmwsIGQucmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICAgICAgbC5leHRyYV9tZXRhZGF0YS5wb2NreXQgPSBnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChnbyhkLnJlc3BvbnNlLmhlYWRlcnMpKSB7XG4gICAgICAgICAgQyhcIuKUnCBBaXJ3YWxsZXggM0RTIGNhc2UgZGV0ZWN0ZWQuIEdvaW5nIHRocm91Z2ggQWlyd2FsbGV4IDNEUyBmbG93LlwiKTtcbiAgICAgICAgICBjb25zdCBnID0gYXdhaXQgdm8odC5iYXNlVXJsLCBkLnJlc3BvbnNlLmhlYWRlcnMpO1xuICAgICAgICAgIGwuZXh0cmFfbWV0YWRhdGEuYWlyd2FsbGV4ID0gZztcbiAgICAgICAgfVxuICAgICAgICBpZiAoSW8oZC5yZXNwb25zZS5oZWFkZXJzKSkge1xuICAgICAgICAgIEMoXCLilJwgQWR5ZW4gM0RTIGNhc2UgZGV0ZWN0ZWQuIEdvaW5nIHRocm91Z2ggQWR5ZW4gM0RTIGZsb3cuXCIpO1xuICAgICAgICAgIGNvbnN0IGcgPSBhd2FpdCBSbyhcbiAgICAgICAgICAgIHMubG9jYWxlLFxuICAgICAgICAgICAgZVtwLkNPVU5UUlldLFxuICAgICAgICAgICAgZC5yZXNwb25zZS5oZWFkZXJzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsLmV4dHJhX21ldGFkYXRhLmFkeWVuID0gZztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtID0gYXdhaXQgJHIoaSwgbCk7XG4gICAgICAgIEMoXCLilJwgUGF5bWVudCBmbG93IHJlc3VsdDpcIiwgbSk7XG4gICAgICAgIGNvbnN0IF8gPSAoKHUgPSBkLnJlc3BvbnNlLmhlYWRlcnMpID09IG51bGwgPyB2b2lkIDAgOiB1W1wib3Atc2hvdWxkLXVzZS1uZXctZmxvd1wiXSkgIT09IFwidHJ1ZVwiO1xuICAgICAgICBmID8gQyhcIuKUnCBQcmUtc3RhcnQgM0RTIGlzIHN1Y2Nlc3NmdWwsIG90aGVyIDNEUyBmbG93cyB3aWxsIGJlIHNraXBwZWQuXCIpIDogXyA/IChDKFwi4pScIFVzaW5nIHN0cmlwZSAzRFMgZmxvd1wiKSwgYXdhaXQgVG8obSkpIDogKEMoXCLilJwgVXNpbmcgY29tbW9uIDNEUyBmbG93XCIpLCBhd2FpdCBObyhtLCB0LmJhc2VVcmwpKTtcbiAgICAgICAgY29uc3QgdiA9IG0uY2NfcG1faWQ7XG4gICAgICAgIGlmIChzLm1vZGUgPT09IFwic2V0dXBcIikge1xuICAgICAgICAgIEMoYOKUnCBDb25maXJtaW5nIHBheW1lbnQgZmxvdyBbY2NfcG1faWQ6ICR7dn1dYCk7XG4gICAgICAgICAgY29uc3QgZyA9IGF3YWl0IEcoaSwge1xuICAgICAgICAgICAgc2VjdXJlX3Rva2VuOiBzLnRva2VuLFxuICAgICAgICAgICAgZXhpc3RpbmdfY2NfcG1faWQ6IHZcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBDKFwi4pScIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3VsdCByZWNlaXZlZCBSZXN1bHQ6XCIsIGcpO1xuICAgICAgICAgIGNvbnN0IGIgPSBDZShnKTtcbiAgICAgICAgICByZXR1cm4gQyhg4pWwIFNldHVwIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgW1BNIElEOiAke2IucGF5bWVudF9tZXRob2RfaWR9XWApLCB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBiIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQyhg4pScIENoZWNraW5nIG91dCBhZnRlciAzRFMgZmxvdyBbRmxvdzogJHtfID8gXCJsZWdhY3lcIiA6IFwibmV3XCJ9XWApO1xuICAgICAgICAgIGNvbnN0IGcgPSBhd2FpdCB1dChpLCB7XG4gICAgICAgICAgICAuLi5sLFxuICAgICAgICAgICAgZXhpc3RpbmdfY2NfcG1faWQ6IHYsXG4gICAgICAgICAgICBkb19ub3RfdXNlX2xlZ2FjeV9jY19mbG93OiBfXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIEMoXCLilbAgQ2hlY2tvdXQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5cIiksIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IGcgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhyb3cgbXQoXCLilbAgRXJyb3IgY2hlY2tpbmcgb3V0IGNhcmQgaW5mbyBpbiBDREVcIiksIG10KGQpLCBkO1xuICAgIH1cbiAgfVxuKSwgTW8gPSAodCkgPT4ge1xuICBjb25zdCBuID0gdC5yZXF1aXJlZF91c2VyX2FjdGlvbnMuZmluZCgoZSkgPT4gZS50eXBlID09PSBcInN0cmlwZV8zZHNcIik7XG4gIGlmICghbilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBzdHJpcGUgM0RTIGFjdGlvbiBmb3VuZFwiKTtcbiAgcmV0dXJuIG5yLnBhcnNlKG4pO1xufSwgRG8gPSBbXCJhaXJ3YWxsZXhfcGF5bWVudF9jb25zZW50XCIsIFwiYWR5ZW5cIl0sIE9vID0gKHQpID0+IHtcbiAgY29uc3QgbiA9IHQucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmZpbmQoKGUpID0+IERvLmluY2x1ZGVzKGUudHlwZSkpO1xuICBpZiAoIW4pXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gY29tbW9uIDNEUyBhY3Rpb24gZm91bmRcIik7XG4gIHJldHVybiBRbi5wYXJzZShuKTtcbn0sIE5vID0gYXN5bmMgKHQsIG4pID0+IHtcbiAgY29uc3QgZSA9IE9vKHQpO1xuICBpZiAoZS5yZWRpcmVjdF91cmwgPT09IFwiM0RTX0NPTVBMRVRFXCIpIHtcbiAgICBDKFwi4pScIDNEUyBmbG93IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgcmV0dXJuO1xuICB9XG4gIEMoYOKUnCBVc2luZyBjb21tb24gM0RTIGZsb3cgW1VSTDogJHtlLnJlZGlyZWN0X3VybH1dYCk7XG4gIGNvbnN0IHsgc3RhdHVzOiByIH0gPSBhd2FpdCB4ZSh7IHVybDogZS5yZWRpcmVjdF91cmwsIGJhc2VVcmw6IG4gfSk7XG4gIGlmIChDKGDilbAgM0RTIHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQgW1N0YXR1czogJHtyfV1gKSwgciA9PT0gSS5DQU5DRUxMRUQpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gIGlmIChyID09PSBJLkZBSUxVUkUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG59LCBUbyA9IGFzeW5jICh0KSA9PiB7XG4gIGNvbnN0IG4gPSBNbyh0KTtcbiAgeXQoYOKUnCBVc2luZyBzdHJpcGUgM0RTIGZsb3cgW0NsaWVudCBTZWNyZXQ6ICR7bi5jbGllbnRfc2VjcmV0LnN1YnN0cmluZygwLCA4KX0uLi5dYCksIGF3YWl0IGxyKG4pLCB5dChcIuKVsCBTdHJpcGUgM0RTIGZsb3cgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiKTtcbn0sIFYgPSB6JDEuZW51bShbXCJzdHJpcGVcIiwgXCJhaXJ3YWxsZXhcIiwgXCJhdXRob3JpemVfbmV0XCJdKTtcblYuRW51bS5zdHJpcGU7XG5jb25zdCB7IGxvZ19fOiBMLCBlcnJfXzogTG8gfSA9IFMoXCJzdHJpcGUtcHJcIiksIFVvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEudW5pb24oW3okMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLCB6JDEubGl0ZXJhbChcImdvb2dsZV9wYXlcIildKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBqbyA9IHNlKFxuICBhc3luYyAoeyBjb250ZXh0OiB0LCBmb3JtQ2FsbGJhY2tzOiBuIH0pID0+IHtcbiAgICBMKFwiQ2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBDUE1zIGZvciBTdHJpcGUgUFIuLi5cIik7XG4gICAgY29uc3QgZSA9IFkodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBVbyk7XG4gICAgTChcIkluaXRpYWxpemluZyBTdHJpcGUgUFIgZmxvdy4uLlwiKTtcbiAgICBjb25zdCByID0gdC5hbnlDZGVDb25uZWN0aW9uLCBhID0gYXdhaXQgTShyKSwgaSA9IGEubW9kZSA9PT0gXCJzZXR1cFwiO1xuICAgIEwoXCJHZXR0aW5nIGluaXRpYWwgcHJldmlldyBhbW91bnRcIik7XG4gICAgY29uc3QgcyA9IGF3YWl0IGhlKHIsIGEudG9rZW4sIGksIHZvaWQgMCksIGMgPSBhd2FpdCBpcihcbiAgICAgIGUubWV0YWRhdGEuc3RyaXBlX3BrLFxuICAgICAgcy5hbW91bnRBdG9tLFxuICAgICAgcy5jdXJyZW5jeSxcbiAgICAgIGlcbiAgICApO1xuICAgIEwoXCJDaGVja2luZyBpZiBjYW4gbWFrZSBwYXltZW50XCIpO1xuICAgIGNvbnN0IGwgPSBhd2FpdCBjLmNhbk1ha2VQYXltZW50KCk7XG4gICAgaWYgKGwgPT09IG51bGwpXG4gICAgICByZXR1cm4gTG8oXCJjYW5NYWtlUGF5bWVudCByZXR1cm5lZCBudWxsXCIpLCB7IGlzQXZhaWxhYmxlOiAhMSwgcmVhc29uOiBcImNhbk1ha2VQYXltZW50IHJldHVybmVkIG51bGxcIiB9O1xuICAgIEwoXCJTdHJpcGUgUFIgZmxvdyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuIENhbiBtYWtlIHBheW1lbnRcIiwgbCk7XG4gICAgY29uc3QgdSA9IChkLCBmKSA9PiBrLnN0cmlwZVBSLnJ1bih7XG4gICAgICBjb250ZXh0OiB0LFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBiZSh0LmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIGQpLFxuICAgICAgbm9uQ2RlRm9ybUlucHV0czogSih0LmZvcm1EaXYpLFxuICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgIGN1c3RvbVBhcmFtczogeyBwcm92aWRlcjogZCwgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogZiA9PSBudWxsID8gdm9pZCAwIDogZi5vdmVycmlkZVBheW1lbnRSZXF1ZXN0IH0sXG4gICAgICBpbml0UmVzdWx0OiB7XG4gICAgICAgIHByb2Nlc3NvcjogVi5FbnVtLnN0cmlwZSxcbiAgICAgICAgcHI6IGMsXG4gICAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgICAgYXZhaWxhYmxlUHJvdmlkZXJzOiB7IGFwcGxlUGF5OiBsLmFwcGxlUGF5LCBnb29nbGVQYXk6IGwuZ29vZ2xlUGF5IH0sXG4gICAgICAgIHN0YXJ0RmxvdzogdVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IFYuRW51bS5zdHJpcGUsXG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBwcjogYyxcbiAgICAgIGF2YWlsYWJsZVByb3ZpZGVyczoge1xuICAgICAgICBhcHBsZVBheTogbC5hcHBsZVBheSxcbiAgICAgICAgZ29vZ2xlUGF5OiBsLmdvb2dsZVBheVxuICAgICAgfSxcbiAgICAgIHN0YXJ0RmxvdzogdVxuICAgIH07XG4gIH1cbiksIHhvID0gZWUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogdCxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogZSxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogYSxcbiAgICBpbml0UmVzdWx0OiBpXG4gIH0pID0+IHtcbiAgICBpZiAoTChcIlJ1bm5pbmcgU3RyaXBlIFBSIGZsb3cuLi5cIiksIGEucHJvdmlkZXIgIT09IG4ucHJvdmlkZXIpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGVyIG1pc21hdGNoLiBFeHBlY3RlZCAke2EucHJvdmlkZXJ9LCBnb3QgJHtuLnByb3ZpZGVyfWApO1xuICAgIGNvbnN0IHMgPSB0LmFueUNkZUNvbm5lY3Rpb24sIGMgPSBpLnByO1xuICAgIGlmIChhICE9IG51bGwgJiYgYS5vdmVycmlkZVBheW1lbnRSZXF1ZXN0KSB7XG4gICAgICBjb25zdCBtID0gYS5vdmVycmlkZVBheW1lbnRSZXF1ZXN0O1xuICAgICAgTChcIk92ZXJyaWRpbmcgUFIgYW1vdW50IHdpdGhcIiwgbSksIHpvKGMsIG0uYW1vdW50LCBtLnBlbmRpbmcsIG0uYXBwbGVQYXlQYXltZW50UmVxdWVzdCk7XG4gICAgfVxuICAgIEwoXCJTaG93aW5nIFBSIGRpYWxvZy4uLlwiKSwgYy5zaG93KCk7XG4gICAgY29uc3QgbCA9IGF3YWl0IHNyKGMpO1xuICAgIEwoXCJTdHJpcGUgUE0gYWRkZWQgZXZlbnQ6XCIsIGwpLCBMKFwiTWVyZ2luZyBQTSBmaWVsZHMgd2l0aCBmb3JtIGZpZWxkcy4uLlwiKTtcbiAgICBjb25zdCB1ID0gJG8oZSwgbCksIGQgPSB0ZSh1LCByLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgTChcIlBSIGRpYWxvZyBmaW5pc2hlZC4gU3RhcnRpbmcgcGF5bWVudCBmbG93Li4uXCIsIGQpO1xuICAgIGNvbnN0IGYgPSBhd2FpdCB6cihzLCB7XG4gICAgICBmaWVsZHM6IGQsXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG5cbiAgICB9KSwgaCA9IEdvKGYpO1xuICAgIEwoXCJDb25maXJtaW5nIFBSIHdpdGggU3RyaXBlLi4uXCIpLCBhd2FpdCBjcihoLCBsKTtcbiAgICBjb25zdCB5ID0gYXdhaXQgTShzKTtcbiAgICBpZiAoeS5tb2RlID09PSBcInNldHVwXCIpIHtcbiAgICAgIEwoXCJDb25maXJtaW5nIHBheW1lbnQgZmxvdyBmb3Igc2V0dXAuLi5cIik7XG4gICAgICBjb25zdCBtID0gYXdhaXQgRyhzLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogeS50b2tlblxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogQ2UobSkgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgTChcIlBlcmZvcm1pbmcgY2hlY2tvdXQuLi5cIik7XG4gICAgICBjb25zdCBtID0ge1xuICAgICAgICBzZWN1cmVfdG9rZW46IHkudG9rZW4sXG4gICAgICAgIHBheW1lbnRfaW5wdXQ6IHtcbiAgICAgICAgICBwcm92aWRlcl90eXBlOiBuLnByb3ZpZGVyXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbWVyX2ZpcnN0X25hbWU6IGRbcC5GSVJTVF9OQU1FXSxcbiAgICAgICAgY3VzdG9tZXJfbGFzdF9uYW1lOiBkW3AuTEFTVF9OQU1FXSxcbiAgICAgICAgY3VzdG9tZXJfZW1haWw6IGRbcC5FTUFJTF0sXG4gICAgICAgIGN1c3RvbWVyX3ppcF9jb2RlOiBkW3AuWklQX0NPREVdLFxuICAgICAgICBjdXN0b21lcl9jb3VudHJ5OiBkW3AuQ09VTlRSWV0sXG4gICAgICAgIHByb21vdGlvbl9jb2RlOiBkW3AuUFJPTU9USU9OX0NPREVdLFxuICAgICAgICBsaW5lX2l0ZW1zOiB5LmxpbmVfaXRlbXMsXG4gICAgICAgIHRvdGFsX2Ftb3VudF9hdG9tOiB5LmFtb3VudF90b3RhbF9hdG9tLFxuICAgICAgICBjYW5jZWxfYXRfZW5kOiAhMSxcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG5cbiAgICAgIH07XG4gICAgICByZXR1cm4geyBtb2RlOiBcImNoZWNrb3V0XCIsIHJlc3VsdDogYXdhaXQgcnQocywgbSkgfTtcbiAgICB9XG4gIH1cbiksICRvID0gKHQsIG4pID0+IHtcbiAgdmFyIGwsIHUsIGQsIGY7XG4gIGNvbnN0IGUgPSB7IC4uLnQgfSwgW3IsIC4uLmFdID0gKCh1ID0gKGwgPSBuLnBheWVyTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IGwudHJpbSgpKSA9PSBudWxsID8gdm9pZCAwIDogdS5zcGxpdCgvXFxzKy8pKSA/PyBbXSwgaSA9IGEuam9pbihcIiBcIikgfHwgdm9pZCAwLCBzID0gKGYgPSAoZCA9IG4ucGF5bWVudE1ldGhvZCkgPT0gbnVsbCA/IHZvaWQgMCA6IGQuYmlsbGluZ19kZXRhaWxzKSA9PSBudWxsID8gdm9pZCAwIDogZi5hZGRyZXNzLCBjID0gbi5zaGlwcGluZ0FkZHJlc3M7XG4gIHJldHVybiBlW3AuRklSU1RfTkFNRV0gPSBlW3AuRklSU1RfTkFNRV0gfHwgciB8fCBcIl9PUF9VTktOT1dOXCIsIGVbcC5MQVNUX05BTUVdID0gZVtwLkxBU1RfTkFNRV0gfHwgaSB8fCBcIl9PUF9VTktOT1dOXCIsIGVbcC5FTUFJTF0gPSBlW3AuRU1BSUxdIHx8IG4ucGF5ZXJFbWFpbCB8fCBcIm9wX3VuZmlsbGVkQGdldG9wZW5wYXkuY29tXCIsIGVbcC5aSVBfQ09ERV0gPSBlW3AuWklQX0NPREVdIHx8IChzID09IG51bGwgPyB2b2lkIDAgOiBzLnBvc3RhbF9jb2RlKSB8fCAoYyA9PSBudWxsID8gdm9pZCAwIDogYy5wb3N0YWxDb2RlKSB8fCBcIjAwMDAwXCIsIGVbcC5DT1VOVFJZXSA9IGVbcC5DT1VOVFJZXSB8fCAocyA9PSBudWxsID8gdm9pZCAwIDogcy5jb3VudHJ5KSB8fCAoYyA9PSBudWxsID8gdm9pZCAwIDogYy5jb3VudHJ5KSB8fCBcIlVTXCIsIEwoXCJGaW5hbCBmb3JtIGlucHV0czpcIiwgZSksIGU7XG59LCB6byA9ICh0LCBuLCBlLCByKSA9PiB7XG4gIHQudXBkYXRlKHtcbiAgICB0b3RhbDoge1xuICAgICAgYW1vdW50OiBuLmFtb3VudEF0b20sXG4gICAgICBsYWJlbDogXCJUb3RhbFwiLFxuICAgICAgcGVuZGluZzogZVxuICAgIH0sXG4gICAgY3VycmVuY3k6IG4uY3VycmVuY3ksXG4gICAgLy8gU3RyaXBlJ3MgYXBwbGVQYXkgb3B0aW9uIG9ubHkgc3VwcG9ydHMgJ3JlY3VycmluZ1BheW1lbnRSZXF1ZXN0JyB8ICdkZWZlcnJlZFBheW1lbnRSZXF1ZXN0JyB8ICdhdXRvbWF0aWNSZWxvYWRQYXltZW50UmVxdWVzdCcgb2YgbmF0aXZlIEFwcGxlUGF5IHBheW1lbnQgcmVxdWVzdFxuICAgIC8vIFdlJ3JlIGFjY2VwdGluZyBuYXRpdmUgUGF5bWVudCBSZXF1ZXN0IGhlcmUgZm9yIG1vcmUgY29tbW9uIHR5cGluZy5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gc3RyaXBlIGRvIG5vdCBleHBlY3QgYWRkaXRpb25hbCBmaWVsZHNcbiAgICBhcHBsZVBheTogclxuICB9KTtcbn0sIEdvID0gKHQpID0+IHtcbiAgaWYgKHQucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIG9jY3VycmVkLlxuRGV0YWlsczogZ290ICR7dC5yZXF1aXJlZF91c2VyX2FjdGlvbnMubGVuZ3RofSByZXF1aXJlZCB1c2VyIGFjdGlvbnNgKTtcbiAgcmV0dXJuIHJyLnBhcnNlKHQucmVxdWlyZWRfdXNlcl9hY3Rpb25zWzBdKTtcbn0sIHsgbG9nX186IEssIGVycl9fOiBmdCB9ID0gUyhcInBvY2t5dC1wYXlwYWxcIiksIFZvID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInBvY2t5dFwiKSxcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwicGF5cGFsXCIpXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgcGF5cGFsX2lmcmFtZV91cmw6IHokMS5zdHJpbmcoKSxcbiAgICB2ZXJpZnlfdG9rZW46IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5jb25zdCBxbyA9IGVlKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IHQsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IGUsXG4gICAgZm9ybUNhbGxiYWNrczogcixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIHZhciBBLCBjZTtcbiAgICBLKFwiUnVubmluZyBQb2NreXQgUGF5cGFsIGZsb3cuLi5cIik7XG4gICAgY29uc3QgaSA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgcyA9IGF3YWl0IE0oaSk7XG4gICAgSyhcIlZlcmlmeWluZyBDUE0uLi5cIik7XG4gICAgY29uc3QgYyA9IFZvLnBhcnNlKG4pO1xuICAgIEsoXCLilJwgVmFsaWRhdGluZyBub24tQ0RFIGZvcm0gZmllbGRzXCIpO1xuICAgIGNvbnN0IGwgPSBhID09IG51bGwgPyB2b2lkIDAgOiBhLnNldHRpbmdzLCB1ID0gdGUoXG4gICAgICBlLFxuICAgICAgci5nZXQub25WYWxpZGF0aW9uRXJyb3IsXG4gICAgICBsID09IG51bGwgPyB2b2lkIDAgOiBsLmRlZmF1bHRGaWVsZFZhbHVlc1xuICAgICksIGQgPSBIcih1KTtcbiAgICBLKGBTdGFydGluZyBwYXltZW50IGZsb3cuLi4gTW9kZTogJHtzLm1vZGV9YCk7XG4gICAgY29uc3QgZiA9IHY0KCksIGggPSBzLm1vZGUgIT09IFwic2V0dXBcIiwgeSA9IHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IGMucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogYyxcbiAgICAgIHVzZV9wYXlfZmlyc3RfZmxvdzogaCxcbiAgICAgIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogaCA/IHtcbiAgICAgICAgLy8gVE9ETyBhZGQgY291cG9uIGFuZCBjYXJ0IGFkanVzdGVkIGxpbmUgaXRlbXMgbGF0ZXJcbiAgICAgICAgbGluZV9pdGVtczogcy5saW5lX2l0ZW1zLFxuICAgICAgICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IHMuYW1vdW50X3RvdGFsX2F0b21cbiAgICAgIH0gOiB2b2lkIDAsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgdXNlX3BheXBhbF9yZWRpcmVjdF9mbG93OiAhISgoQSA9IGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEuc2V0dGluZ3MpICE9IG51bGwgJiYgQS51c2VSZWRpcmVjdEZsb3cpLFxuICAgICAgICBmcm9udGVuZF90b2tlbl9mb3JfcmVkaXJlY3RfZmxvdzogZlxuICAgICAgfSxcbiAgICAgIC4uLmRcbiAgICB9LCBtID0gbmV3IFVSTChcIi9hcHAvcHJlLWFjdGlvbi9zdGFydC9cIiwgdC5iYXNlVXJsKS50b1N0cmluZygpLCBfID0gYnRvYShKU09OLnN0cmluZ2lmeSh5KSksIHYgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgIHN0OiBzLnRva2VuLFxuICAgICAgcjogX1xuICAgIH0pLCBnID0gYCR7bX0/JHt2LnRvU3RyaW5nKCl9YDtcbiAgICBpZiAoKGNlID0gYSA9PSBudWxsID8gdm9pZCAwIDogYS5zZXR0aW5ncykgIT0gbnVsbCAmJiBjZS51c2VSZWRpcmVjdEZsb3cpXG4gICAgICB0aHJvdyBLKFwiU3RhcnRpbmcgcmVkaXJlY3QgbW9kZSBmb3IgUGF5UGFsLi4uXCIpLCB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGcsIGF3YWl0IG50KDIwICogMWUzKSwgbmV3IEVycm9yKFwiUGF5cGFsIGZsb3cgdGltZWQgb3V0LCBwbGVhc2UgdHJ5IGFnYWluIHdpdGggYW5vdGhlciBwYXltZW50IG1ldGhvZC5cIik7XG4gICAgSyhcIlN0YXJ0aW5nIHBvcHVwIG1vZGUgZm9yIFBheVBhbC4uLlwiKSwgSyhcIk9wZW5pbmcgcGF5cGFsIGlmcmFtZS4uLlwiKTtcbiAgICBjb25zdCBiID0gYXdhaXQgY28oXG4gICAgICBcIlBheVBhbFwiLFxuICAgICAgaSxcbiAgICAgIGYsXG4gICAgICBnXG4gICAgKTtcbiAgICBLKFwiUGF5cGFsIGZsb3cgcmVzdWx0XCIsIGIpO1xuICAgIGNvbnN0IEUgPSBIdChiLmhyZWYpLCBEID0gbW8oYi5ocmVmLCBcImNhdHRcIik7XG4gICAgaWYgKCFEKVxuICAgICAgdGhyb3cgZnQoXCJDaGVja291dCBhdHRlbXB0IElEIG5vdCBmb3VuZCBpbiByZWRpcmVjdCBVUkw6XCIsIGIuaHJlZiksIG5ldyBFcnJvcihcIkNoZWNrb3V0IGF0dGVtcHQgSUQgbm90IGZvdW5kIGluIHJlZGlyZWN0IFVSTFwiKTtcbiAgICBLKGBDb25maXJtaW5nIHBheW1lbnQgZmxvdyB1c2luZyB2YXVsdCBJRCAke0V9YCk7XG4gICAgY29uc3QgTiA9IGF3YWl0IEcoaSwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBzLnRva2VuLFxuICAgICAgdGhlaXJfcG1faWQ6IEUsXG4gICAgICBjaGVja291dF9hdHRlbXB0X2lkOiBoID8gRCA6IHZvaWQgMFxuICAgIH0pO1xuICAgIGlmIChLKFwiQ29uZmlybSBwYXltZW50IGZsb3cgcmVzdWx0XCIsIE4pLCBzLm1vZGUgPT09IFwic2V0dXBcIilcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6IFwic2V0dXBcIixcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgcGF5bWVudF9tZXRob2RfaWQ6IE4ucGF5bWVudF9tZXRob2RzWzBdLmlkXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgaWYgKCFOLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlKVxuICAgICAgdGhyb3cgZnQoXCJDaGVja291dCBmYWlsZWQsIG5vIHBheS1maXJzdCBzdWNjZXNzIHJlc3BvbnNlOlwiLCBOKSwgbmV3IEVycm9yKFwiQ2hlY2tvdXQgZmFpbGVkLCBwbGVhc2UgdHJ5IGFnYWluIHdpdGggYW5vdGhlciBwYXltZW50IG1ldGhvZC5cIik7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGU6IFwiY2hlY2tvdXRcIixcbiAgICAgIHJlc3VsdDogTi5wYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZVxuICAgIH07XG4gIH1cbiksICRlID0gKHtcbiAgZ2F0ZXdheTogdCxcbiAgZ2F0ZXdheU1lcmNoYW50SWQ6IG4sXG4gIG1lcmNoYW50TmFtZTogZSxcbiAgbWVyY2hhbnRJZDogcixcbiAgaW5pdGlhbFByZXZpZXc6IGEsXG4gIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGksXG4gIHByZWZpbGw6IHNcbn0pID0+IHtcbiAgdmFyIGYsIGg7XG4gIGNvbnN0IGMgPSAoKGYgPSBpID09IG51bGwgPyB2b2lkIDAgOiBpLmFtb3VudCkgPT0gbnVsbCA/IHZvaWQgMCA6IGYuYW1vdW50QXRvbSkgPz8gKGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEuYW1vdW50QXRvbSkgPz8gMCwgbCA9IE1hdGgubWF4KGMgLyAxMDAsIDApLCB1ID0gKCgoaCA9IGkgPT0gbnVsbCA/IHZvaWQgMCA6IGkuYW1vdW50KSA9PSBudWxsID8gdm9pZCAwIDogaC5jdXJyZW5jeSkgPz8gKHMgPT0gbnVsbCA/IHZvaWQgMCA6IHMuY3VycmVuY3kpID8/IGEuY3VycmVuY3kpLnRvVXBwZXJDYXNlKCksIGQgPSB7XG4gICAgYXBpVmVyc2lvbjogMixcbiAgICBhcGlWZXJzaW9uTWlub3I6IDAsXG4gICAgYWxsb3dlZFBheW1lbnRNZXRob2RzOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiQ0FSRFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgYWxsb3dlZEF1dGhNZXRob2RzOiBbXCJQQU5fT05MWVwiLCBcIkNSWVBUT0dSQU1fM0RTXCJdLFxuICAgICAgICAgIGFsbG93ZWRDYXJkTmV0d29ya3M6IFtcIkFNRVhcIiwgXCJESVNDT1ZFUlwiLCBcIklOVEVSQUNcIiwgXCJKQ0JcIiwgXCJNQVNURVJDQVJEXCIsIFwiVklTQVwiXSxcbiAgICAgICAgICBiaWxsaW5nQWRkcmVzc1JlcXVpcmVkOiAhMCxcbiAgICAgICAgICBiaWxsaW5nQWRkcmVzc1BhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogXCJGVUxMXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFsbG93Q3JlZGl0Q2FyZHM6ICEwLFxuICAgICAgICAgIGFsbG93UHJlcGFpZENhcmRzOiAhMFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbml6YXRpb25TcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgICAgdHlwZTogXCJQQVlNRU5UX0dBVEVXQVlcIixcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBnYXRld2F5OiB0LFxuICAgICAgICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IG5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGVtYWlsUmVxdWlyZWQ6ICEwLFxuICAgIG1lcmNoYW50SW5mbzoge1xuICAgICAgLy8gUFJPRCBlbnYgd2lsbCBuZWVkIHRoaXNcbiAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3BheS9hcGkvd2ViL3JlZmVyZW5jZS9yZXF1ZXN0LW9iamVjdHMjTWVyY2hhbnRJbmZvXG4gICAgICBtZXJjaGFudElkOiByID8/IFwiXCIsXG4gICAgICBtZXJjaGFudE5hbWU6IGVcbiAgICB9LFxuICAgIHRyYW5zYWN0aW9uSW5mbzoge1xuICAgICAgY291bnRyeUNvZGU6IFwiVVNcIixcbiAgICAgIGN1cnJlbmN5Q29kZTogdSxcbiAgICAgIHRvdGFsUHJpY2VTdGF0dXM6IGkgIT0gbnVsbCAmJiBpLnBlbmRpbmcgPyBcIkVTVElNQVRFRFwiIDogXCJGSU5BTFwiLFxuICAgICAgdG90YWxQcmljZTogbC50b0ZpeGVkKDIpXG4gICAgfVxuICB9O1xuICByZXR1cm4gaSAhPSBudWxsICYmIGkuZ29vZ2xlUGF5UGF5bWVudFJlcXVlc3QgPyB7IC4uLmQsIC4uLmkuZ29vZ2xlUGF5UGF5bWVudFJlcXVlc3QgfSA6IGQ7XG59LCBYdCA9ICgpID0+IG5ldyBQcm9taXNlKCh0LCBuKSA9PiB7XG4gIGNvbnN0IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICBlLnNyYyA9IFwiaHR0cHM6Ly9wYXkuZ29vZ2xlLmNvbS9ncC9wL2pzL3BheS5qc1wiLCBlLmFzeW5jID0gITAsIGUub25sb2FkID0gKCkgPT4gdCgpLCBlLm9uZXJyb3IgPSAoKSA9PiBuKG5ldyBFcnJvcihcIkZhaWxlZCB0byBsb2FkIEdvb2dsZSBQYXkgU0RLXCIpKSwgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKTtcbn0pO1xubGV0IHFlID0gbnVsbDtcbmNvbnN0IGVuID0gKHQpID0+IHQgPT09IGV0IHx8IHQgPT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gPyBcIlBST0RVQ1RJT05cIiA6IFwiVEVTVFwiLCB6ZSA9ICh0LCBuKSA9PiB7XG4gIGNvbnN0IGUgPSBlbih0KTtcbiAgcmV0dXJuIHFlID09PSBudWxsICYmIChxZSA9IG5ldyB3aW5kb3cuZ29vZ2xlLnBheW1lbnRzLmFwaS5QYXltZW50c0NsaWVudCh7XG4gICAgZW52aXJvbm1lbnQ6IGUsXG4gICAgbWVyY2hhbnRJbmZvOiBuLm1lcmNoYW50SW5mb1xuICB9KSksIHFlO1xufSwgWW8gPSAodCkgPT4ge1xuICBjb25zdCBuID0gdC5yZXF1aXJlZF91c2VyX2FjdGlvbnMuZmluZCgoZSkgPT4gZS50eXBlID09PSBcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIik7XG4gIHJldHVybiBuID8gRHQucGFyc2UobikgOiBudWxsO1xufSwgdG4gPSAodCwgbikgPT4ge1xuICB2YXIgYSwgaSwgcywgYztcbiAgY29uc3QgZSA9IHsgLi4udCB9LCByID0gKGkgPSAoYSA9IG4ucGF5bWVudE1ldGhvZERhdGEpID09IG51bGwgPyB2b2lkIDAgOiBhLmluZm8pID09IG51bGwgPyB2b2lkIDAgOiBpLmJpbGxpbmdBZGRyZXNzO1xuICBpZiAocikge1xuICAgIGNvbnN0IFtsLCAuLi51XSA9ICgoYyA9IChzID0gci5uYW1lKSA9PSBudWxsID8gdm9pZCAwIDogcy50cmltKCkpID09IG51bGwgPyB2b2lkIDAgOiBjLnNwbGl0KC9cXHMrLykpID8/IFtdLCBkID0gdS5qb2luKFwiIFwiKSB8fCB2b2lkIDA7XG4gICAgZVtwLkVNQUlMXSA9IGVbcC5FTUFJTF0gfHwgbi5lbWFpbCB8fCBcIm9wX3VuZmlsbGVkQGdldG9wZW5wYXkuY29tXCIsIGVbcC5DT1VOVFJZXSA9IGVbcC5DT1VOVFJZXSB8fCByLmNvdW50cnlDb2RlIHx8IFwiVVNcIiwgZVtwLkFERFJFU1NdID0gZVtwLkFERFJFU1NdIHx8IHIuYWRkcmVzczEgfHwgXCJcIiwgZVtwLkNJVFldID0gZVtwLkNJVFldIHx8IHIubG9jYWxpdHkgfHwgXCJcIiwgZVtwLlpJUF9DT0RFXSA9IGVbcC5aSVBfQ09ERV0gfHwgci5wb3N0YWxDb2RlIHx8IFwiMDAwMDBcIiwgZVtwLlNUQVRFXSA9IGVbcC5TVEFURV0gfHwgci5hZG1pbmlzdHJhdGl2ZUFyZWEgfHwgXCJcIiwgZVtwLkZJUlNUX05BTUVdID0gZVtwLkZJUlNUX05BTUVdIHx8IGwgfHwgXCJfT1BfVU5LTk9XTlwiLCBlW3AuTEFTVF9OQU1FXSA9IGVbcC5MQVNUX05BTUVdIHx8IGQgfHwgXCJfT1BfVU5LTk9XTlwiO1xuICB9XG4gIHJldHVybiBlO1xufSwgeyBsb2dfXzogeiwgZXJyX186IGxlIH0gPSBTKFwiYXd4LWdvb2dsZS1wYXlcIiksIEtvID0gc2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IHQsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIHZhciBmLCBoO1xuICAgIGNvbnN0IGUgPSB7XG4gICAgICBwcm9jZXNzb3I6IFYuRW51bS5haXJ3YWxsZXgsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IFkodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBCdCk7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIGU7XG4gICAgeihcIkdvb2dsZSBQYXkgQ1BNXCIsIHIpO1xuICAgIGNvbnN0IGEgPSByLm1ldGFkYXRhO1xuICAgIGlmICghYS5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHJldHVybiBsZShcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIiksIGU7XG4gICAgaWYgKHooXCJMb2FkaW5nIEdvb2dsZSBQYXkgU0RLLi4uXCIpLCBhd2FpdCBYdCgpLCAhKChoID0gKGYgPSB3aW5kb3cuZ29vZ2xlKSA9PSBudWxsID8gdm9pZCAwIDogZi5wYXltZW50cykgIT0gbnVsbCAmJiBoLmFwaSkpXG4gICAgICByZXR1cm4gbGUoXCJHb29nbGUgUGF5IFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCBlO1xuICAgIGlmIChlbih0LmJhc2VVcmwpID09PSBcIlBST0RVQ1RJT05cIiAmJiAhYS5nb29nbGVfcGF5X21lcmNoYW50X2lkKVxuICAgICAgcmV0dXJuIGxlKFwiR29vZ2xlIFBheSBtZXJjaGFudCBJRCBpcyByZXF1aXJlZCBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudFwiKSwgZTtcbiAgICB6KFwiR29vZ2xlIFBheSBTREsgbG9hZGVkXCIsIHdpbmRvdy5nb29nbGUucGF5bWVudHMpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB5ID0gJGUoe1xuICAgICAgICBnYXRld2F5OiBcImFpcndhbGxleFwiLFxuICAgICAgICBnYXRld2F5TWVyY2hhbnRJZDogYS5wcm9jZXNzb3JfYWNjb3VudF9pZCxcbiAgICAgICAgbWVyY2hhbnROYW1lOiBhLnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICAgIG1lcmNoYW50SWQ6IGEuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgICAvLyBUaGlzIGlzIGZvciBpbml0aWFsIHBheW1lbnQgcmVxdWVzdCB0byBjaGVjayBhdmFpbGFiaWxpdHkuIEFjdHVhbCBgaW5pdGlhbFByZXZpZXdgIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSBVSSBpcyBzaG93blxuICAgICAgICBpbml0aWFsUHJldmlldzoge1xuICAgICAgICAgIGFtb3VudEF0b206IDAsXG4gICAgICAgICAgY3VycmVuY3k6IFwiVVNEXCJcbiAgICAgICAgfVxuICAgICAgfSksIHsgcmVzdWx0OiBtIH0gPSBhd2FpdCB6ZSh0LmJhc2VVcmwsIHkpLmlzUmVhZHlUb1BheShcbiAgICAgICAgeVxuICAgICAgKTtcbiAgICAgIGlmICghbSlcbiAgICAgICAgcmV0dXJuIHooXCJHb29nbGUgUGF5IGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgdXNlclwiKSwgZTtcbiAgICB9IGNhdGNoICh5KSB7XG4gICAgICByZXR1cm4gbGUoXCJFcnJvciBjaGVja2luZyBHb29nbGUgUGF5IGF2YWlsYWJpbGl0eVwiLCB5KSwgZTtcbiAgICB9XG4gICAgY29uc3QgcyA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgYyA9IGF3YWl0IE0ocyksIGwgPSBjLm1vZGUgPT09IFwic2V0dXBcIiwgdSA9IGF3YWl0IGhlKHMsIGMudG9rZW4sIGwsIHZvaWQgMCksIGQgPSBhc3luYyAoeSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgay5haXJ3YWxsZXhHb29nbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiB0LFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBKKHQuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi55LFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAobSkge1xuICAgICAgICBsZShcIkdvb2dsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBtKSwgbi5nZXQub25DaGVja291dEVycm9yKChtID09IG51bGwgPyB2b2lkIDAgOiBtLm1lc3NhZ2UpID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IFYuRW51bS5haXJ3YWxsZXgsXG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBkXG4gICAgfTtcbiAgfVxuKSwgV28gPSBlZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiB0LFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiBlLFxuICAgIGZvcm1DYWxsYmFja3M6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICB2YXIgZiwgaCwgeSwgbSwgXywgdiwgZztcbiAgICB6KFwiU3RhcnRpbmcgR29vZ2xlIFBheSBmbG93Li4uXCIpO1xuICAgIGNvbnN0IGkgPSBZKHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgQnQpLCB7IGluaXRpYWxQcmV2aWV3OiBzLCBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBjIH0gPSBhLCBsID0gaS5tZXRhZGF0YTtcbiAgICBpZiAoIWwucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpO1xuICAgIGNvbnN0IHUgPSAkZSh7XG4gICAgICBnYXRld2F5OiBcImFpcndhbGxleFwiLFxuICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IGwucHJvY2Vzc29yX2FjY291bnRfaWQsXG4gICAgICBtZXJjaGFudE5hbWU6IGwucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgIG1lcmNoYW50SWQ6IGwuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IHMsXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBjXG4gICAgfSksIGQgPSB6ZSh0LmJhc2VVcmwsIHUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiID0gYXdhaXQgZC5sb2FkUGF5bWVudERhdGEodSk7XG4gICAgICB6KFwiR29vZ2xlIFBheSBQYXltZW50IGRhdGFcIiwgYik7XG4gICAgICBjb25zdCBFID0gdC5hbnlDZGVDb25uZWN0aW9uLCBEID0gYXdhaXQgTShFKSwgTiA9IHRuKGUsIGIpLCBBID0gdGUoXG4gICAgICAgIE4sXG4gICAgICAgIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgICBhID09IG51bGwgPyB2b2lkIDAgOiBhLmRlZmF1bHRGaWVsZFZhbHVlc1xuICAgICAgKSwgY2UgPSAoaCA9IChmID0gYi5wYXltZW50TWV0aG9kRGF0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IGYudG9rZW5pemF0aW9uRGF0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IGgudG9rZW47XG4gICAgICBpZiAoIWNlKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBwYXltZW50IHRva2VuIHJlY2VpdmVkIGZyb20gR29vZ2xlIFBheVwiKTtcbiAgICAgIGNvbnN0IF9uID0gYXdhaXQgZmUoRSwge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLnByb3ZpZGVyLFxuICAgICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbixcbiAgICAgICAgbmV3X2N1c3RvbWVyX2VtYWlsOiBBW3AuRU1BSUxdLFxuICAgICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogQVtwLkZJUlNUX05BTUVdLFxuICAgICAgICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiBBW3AuTEFTVF9OQU1FXSxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2FkZHJlc3M6IHtcbiAgICAgICAgICB6aXBfY29kZTogQVtwLlpJUF9DT0RFXSxcbiAgICAgICAgICBjb3VudHJ5OiBBW3AuQ09VTlRSWV1cbiAgICAgICAgfVxuICAgICAgfSksIFNlID0gWW8oX24pO1xuICAgICAgeihcIlN0YXJ0IGZsb3cgbmV4dCBhY3Rpb25zXCIsIFNlKTtcbiAgICAgIGxldCByZSA9IGF3YWl0IEcoRSwge1xuICAgICAgICBzZWN1cmVfdG9rZW46IEQudG9rZW4sXG4gICAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IG4ucHJvdmlkZXIsXG4gICAgICAgICAgLy8gR29vZ2xlUGF5J3MgZW5jcnlwdGVkX3BheW1lbnRfdG9rZW4gcHJvdmlkZWQgdG8gdmVyaWZ5IHRoZSBjb25zZW50IGZpcnN0XG4gICAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IFNlID09IG51bGwgPyB2b2lkIDAgOiBTZS5jb25zZW50X2lkLFxuICAgICAgICAgIGFpcndhbGxleF9wYXltZW50X21ldGhvZF9kYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBcImdvb2dsZXBheVwiLFxuICAgICAgICAgICAgZ29vZ2xlcGF5OiB7XG4gICAgICAgICAgICAgIHBheW1lbnRfZGF0YV90eXBlOiBcImVuY3J5cHRlZF9wYXltZW50X3Rva2VuXCIsXG4gICAgICAgICAgICAgIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuOiBjZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB6KFwiWzFzdF0gQ29uZmlybSBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgcmUpO1xuICAgICAgbGV0IFZlID0gKG0gPSAoeSA9IHJlLnBheW1lbnRfbWV0aG9kcykgPT0gbnVsbCA/IHZvaWQgMCA6IHlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBtLmlkO1xuICAgICAgY29uc3Qgb2UgPSAoXyA9IHJlLnJlcXVpcmVkX3VzZXJfYWN0aW9ucykgPT0gbnVsbCA/IHZvaWQgMCA6IF8uZmluZChcbiAgICAgICAgKF9lKSA9PiBfZS50eXBlID09PSBcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIlxuICAgICAgKTtcbiAgICAgIGlmIChvZSAmJiBvZS5yZWRpcmVjdF91cmwpIHtcbiAgICAgICAgeihcIjNEUyBSZXF1aXJlZCwgc3RhcnRpbmcgdmVyaWZpY2F0aW9uLi4uXCIsIG9lKTtcbiAgICAgICAgY29uc3QgeyBzdGF0dXM6IF9lIH0gPSBhd2FpdCB4ZSh7XG4gICAgICAgICAgdXJsOiBvZS5yZWRpcmVjdF91cmwsXG4gICAgICAgICAgYmFzZVVybDogdC5iYXNlVXJsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoeihg4pWwIDNEUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7X2V9XWApLCBfZSA9PT0gSS5DQU5DRUxMRUQpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gICAgICAgIGlmIChfZSA9PT0gSS5GQUlMVVJFKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICAgICAgfVxuICAgICAgaWYgKG9lICYmICFWZSAmJiAocmUgPSBhd2FpdCBHKEUsIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBELnRva2VuLFxuICAgICAgICB0aGVpcl9wbV9pZDogb2UudGhlaXJfcG1faWQsXG4gICAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IG4ucHJvdmlkZXIsXG4gICAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IG9lLmNvbnNlbnRfaWRcbiAgICAgICAgfVxuICAgICAgfSksIHooXCJbMm5kXSBDb25maXJtIHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCByZSksIFZlID0gKGcgPSAodiA9IHJlLnBheW1lbnRfbWV0aG9kcykgPT0gbnVsbCA/IHZvaWQgMCA6IHZbMF0pID09IG51bGwgPyB2b2lkIDAgOiBnLmlkKSwgIVZlKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBQTSBJRCBmb3VuZFwiKTtcbiAgICAgIHJldHVybiBqZSh7XG4gICAgICAgIGxvZ1ByZWZpeDogXCJhd3gtZ29vZ2xlcGF5XCIsXG4gICAgICAgIGFueUNkZUNvbm5lY3Rpb246IEUsXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiBBLFxuICAgICAgICBjb25maXJtUmVzdWx0OiByZSxcbiAgICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoYikge1xuICAgICAgdGhyb3cgbGUoXCJHb29nbGUgUGF5IHBheW1lbnQgZXJyb3JcIiwgYiksIG5ldyBFcnJvcigoYiA9PSBudWxsID8gdm9pZCAwIDogYi5tZXNzYWdlKSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgfVxuICB9XG4pLCBubiA9ICgpID0+IG5ldyBQcm9taXNlKCh0LCBuKSA9PiB7XG4gIGNvbnN0IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICBlLnNyYyA9IFwiaHR0cHM6Ly9hcHBsZXBheS5jZG4tYXBwbGUuY29tL2pzYXBpLzEubGF0ZXN0L2FwcGxlLXBheS1zZGsuanNcIiwgZS5jcm9zc09yaWdpbiA9IFwiYW5vbnltb3VzXCIsIGUuYXN5bmMgPSAhMCwgZS5vbmxvYWQgPSAoKSA9PiB0KCksIGUub25lcnJvciA9ICgpID0+IG4obmV3IEVycm9yKFwiRmFpbGVkIHRvIGxvYWQgQXBwbGUgUGF5IFNES1wiKSksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7XG59KSwgcm4gPSAodCwgbikgPT4ge1xuICBjb25zdCBlID0gbi50b2tlbi5wYXltZW50TWV0aG9kLmJpbGxpbmdDb250YWN0LCByID0gbi5iaWxsaW5nQ29udGFjdCwgYSA9IG4uc2hpcHBpbmdDb250YWN0LCBpID0geyAuLi50IH07XG4gIHJldHVybiAoZSB8fCByIHx8IGEpICYmIChpW3AuRU1BSUxdID0gaVtwLkVNQUlMXSB8fCAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5lbWFpbEFkZHJlc3MpIHx8IChyID09IG51bGwgPyB2b2lkIDAgOiByLmVtYWlsQWRkcmVzcykgfHwgKGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEuZW1haWxBZGRyZXNzKSB8fCBcIm9wX3VuZmlsbGVkQGVtYWlsLmNvbVwiLCBpW3AuQ09VTlRSWV0gPSBpW3AuQ09VTlRSWV0gfHwgKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUuY291bnRyeUNvZGUpIHx8IChyID09IG51bGwgPyB2b2lkIDAgOiByLmNvdW50cnlDb2RlKSB8fCAoYSA9PSBudWxsID8gdm9pZCAwIDogYS5jb3VudHJ5Q29kZSkgfHwgXCJVU1wiLCBpW3AuWklQX0NPREVdID0gaVtwLlpJUF9DT0RFXSB8fCAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5wb3N0YWxDb2RlKSB8fCAociA9PSBudWxsID8gdm9pZCAwIDogci5wb3N0YWxDb2RlKSB8fCAoYSA9PSBudWxsID8gdm9pZCAwIDogYS5wb3N0YWxDb2RlKSB8fCBcIjAwMDAwXCIsIGlbcC5GSVJTVF9OQU1FXSA9IGlbcC5GSVJTVF9OQU1FXSB8fCAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5naXZlbk5hbWUpIHx8IChyID09IG51bGwgPyB2b2lkIDAgOiByLmdpdmVuTmFtZSkgfHwgKGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEuZ2l2ZW5OYW1lKSB8fCBcIl9PUF9VTktOT1dOXCIsIGlbcC5MQVNUX05BTUVdID0gaVtwLkxBU1RfTkFNRV0gfHwgKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUuZmFtaWx5TmFtZSkgfHwgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZmFtaWx5TmFtZSkgfHwgKGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEuZmFtaWx5TmFtZSkgfHwgXCJfT1BfVU5LTk9XTlwiKSwgaTtcbn0sIEpvID0geiQxLm9iamVjdCh7XG4gIGRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lc3NhZ2VIZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSxcbiAgICBlcnJvcnM6IHokMS5hcnJheSh6JDEuYW55KCkpLFxuICAgIG1lc3NhZ2VUeXBlOiB6JDEuc3RyaW5nKCksXG4gICAgbWVzc2FnZUJvZHk6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpXG4gIH0pLFxuICBvcmlnaW46IHokMS5saXRlcmFsKFwiaHR0cHM6Ly9hcHBsZXBheS5jZG4tYXBwbGUuY29tXCIpXG59KSwgSG8gPSAodCkgPT4gSm8uc2FmZVBhcnNlKHQpLmRhdGEsIFpvID0gKHQpID0+IHtcbiAgY29uc3QgbiA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgcmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFxuICAgIFwibWVzc2FnZVwiLFxuICAgIChlKSA9PiB7XG4gICAgICB2YXIgYTtcbiAgICAgIGNvbnN0IHIgPSBIbyhlKTtcbiAgICAgICgoYSA9IHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZGF0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IGEubWVzc2FnZVR5cGUpID09PSBcIndpbmRvd2Nsb3NpbmdcIiAmJiAodCgpLCBuLmFib3J0KCkpO1xuICAgIH0sXG4gICAge1xuICAgICAgc2lnbmFsOiBuLnNpZ25hbFxuICAgIH1cbiAgKSwge1xuICAgIGNsZWFudXBDYW5jZWxMaXN0ZW5lcjogKCkgPT4gbi5hYm9ydCgpXG4gIH07XG59LCBvbiA9ICh7XG4gIHRvdGFsOiB0LFxuICBwcmVmaWxsOiBuXG59KSA9PiB7XG4gIHZhciByO1xuICBpZiAobi5tb2RlID09PSBcInNldHVwXCIpXG4gICAgcmV0dXJuIHtcbiAgICAgIHBheW1lbnREZXNjcmlwdGlvbjogXCJTZXR1cCByZWN1cnJpbmcgcGF5bWVudFwiLFxuICAgICAgcmVndWxhckJpbGxpbmc6IHtcbiAgICAgICAgYW1vdW50OiB0LmFtb3VudCxcbiAgICAgICAgbGFiZWw6IFwiU2V0dXAgcmVjdXJyaW5nIHBheW1lbnRcIixcbiAgICAgICAgcGF5bWVudFRpbWluZzogXCJyZWN1cnJpbmdcIixcbiAgICAgICAgdHlwZTogXCJmaW5hbFwiXG4gICAgICB9LFxuICAgICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgYmlsbGluZyBwb3J0YWwgdXJsXG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9wYXNza2l0L3BrcmVjdXJyaW5ncGF5bWVudHJlcXVlc3QvbWFuYWdlbWVudHVybCNEaXNjdXNzaW9uXG4gICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IHVzZWQgd2hlbiB1c2VyIHJlbW92ZSBhIGNhcmQgZnJvbSB0aGVpciBBcHBsZVBheSB3YWxsZXQuXG4gICAgICAvLyBDdXJyZW50eSBzZXQgdG8gY2hlY2tvdXQgc2Vzc2lvbiB1cmwgdG8gc2F0aXNmeSBBcHBsZVBheSB0eXBlc1xuICAgICAgbWFuYWdlbWVudFVSTDogbmV3IFVSTChgL3BheS8ke24udG9rZW59YCwgZXQpLnRvU3RyaW5nKClcbiAgICB9O1xuICBjb25zdCBlID0gKHIgPSBuLmxpbmVfaXRlbXMpID09IG51bGwgPyB2b2lkIDAgOiByWzBdO1xuICBpZiAoZSlcbiAgICByZXR1cm4ge1xuICAgICAgcGF5bWVudERlc2NyaXB0aW9uOiAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5kZXNjcmlwdGlvbikgPz8gXCJcIixcbiAgICAgIHJlZ3VsYXJCaWxsaW5nOiB7XG4gICAgICAgIGFtb3VudDogdC5hbW91bnQsXG4gICAgICAgIGxhYmVsOiAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5kZXNjcmlwdGlvbikgPz8gXCJcIixcbiAgICAgICAgcmVjdXJyaW5nUGF5bWVudEludGVydmFsVW5pdDogZSA9PSBudWxsID8gdm9pZCAwIDogZS5iaWxsaW5nX2ludGVydmFsLFxuICAgICAgICByZWN1cnJpbmdQYXltZW50SW50ZXJ2YWxDb3VudDogKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUuYmlsbGluZ19pbnRlcnZhbF9jb3VudCkgPz8gdm9pZCAwLFxuICAgICAgICBwYXltZW50VGltaW5nOiBcInJlY3VycmluZ1wiLFxuICAgICAgICB0eXBlOiBcImZpbmFsXCJcbiAgICAgIH0sXG4gICAgICBtYW5hZ2VtZW50VVJMOiBgaHR0cHM6Ly9jZGUuZ2V0b3BlbnBheS5jb20vcGF5LyR7bi50b2tlbn1gXG4gICAgfTtcbn0sIGFuID0gKHtcbiAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogdCxcbiAgaW5pdGlhbFByZXZpZXc6IG4sXG4gIHByZWZpbGw6IGUsXG4gIGRlZmF1bHRMYWJlbDogciA9IFwiVG90YWxcIlxufSkgPT4ge1xuICB2YXIgYywgbDtcbiAgY29uc3QgYSA9ICgoKGMgPSB0ID09IG51bGwgPyB2b2lkIDAgOiB0LmFtb3VudCkgPT0gbnVsbCA/IHZvaWQgMCA6IGMuY3VycmVuY3kpID8/IChlID09IG51bGwgPyB2b2lkIDAgOiBlLmN1cnJlbmN5KSA/PyBuLmN1cnJlbmN5KS50b1VwcGVyQ2FzZSgpLCBzID0gKCgoKGwgPSB0ID09IG51bGwgPyB2b2lkIDAgOiB0LmFtb3VudCkgPT0gbnVsbCA/IHZvaWQgMCA6IGwuYW1vdW50QXRvbSkgPz8gKG4gPT0gbnVsbCA/IHZvaWQgMCA6IG4uYW1vdW50QXRvbSkgPz8gMCkgLyAxMDApLnRvRml4ZWQoMik7XG4gIHJldHVybiB7XG4gICAgY3VycmVuY3lDb2RlOiBhLFxuICAgIHRvdGFsOiB7XG4gICAgICBsYWJlbDogKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQubGFiZWwpID8/IHIgPz8gXCJUb3RhbFwiLFxuICAgICAgdHlwZTogdCAhPSBudWxsICYmIHQucGVuZGluZyA/IFwicGVuZGluZ1wiIDogXCJmaW5hbFwiLFxuICAgICAgYW1vdW50OiBzXG4gICAgfVxuICB9O1xufSwgeyBsb2dfXzogSWUgfSA9IFMoXCJhd3gtYXBwbGUtcGF5XCIpO1xuYXN5bmMgZnVuY3Rpb24gQm8odCwgbikge1xuICB0cnkge1xuICAgIGNvbnN0IHIgPSAoYXdhaXQgR3Qobi5jb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgYWlyd2FsbGV4X3BheW1lbnRfc2Vzc2lvbjoge1xuICAgICAgICAgIHZhbGlkYXRpb25fdXJsOiB0LnZhbGlkYXRpb25VUkwsXG4gICAgICAgICAgaW5pdGlhdGl2ZV9jb250ZXh0OiB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsXG4gICAgICAgICAgdGhlaXJfYWNjb3VudF9pZDogbi5wcm9jZXNzb3JBY2NvdW50LnByb2Nlc3Nvcl9hY2NvdW50X2lkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSkubmV4dF9hY3Rpb25fbWV0YWRhdGEsIGEgPSByID09IG51bGwgPyB2b2lkIDAgOiByLmFwcGxlX3BheV9zZXNzaW9uO1xuICAgIGlmICghYSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHNlc3Npb24gZGF0YSByZWNlaXZlZCBmcm9tIHBheW1lbnQgZmxvd1wiKTtcbiAgICBuLnNlc3Npb24uY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oYSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuLnNlc3Npb24uYWJvcnQoKSwgZTtcbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gUW8odCwgbikge1xuICBpZiAoIXQucmVkaXJlY3RfdXJsKVxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZFwiKTtcbiAgSWUoXCIzRFMgUmVxdWlyZWQsIHN0YXJ0aW5nIHZlcmlmaWNhdGlvbi4uLlwiLCB0KTtcbiAgY29uc3QgeyBzdGF0dXM6IGUgfSA9IGF3YWl0IHhlKHtcbiAgICB1cmw6IHQucmVkaXJlY3RfdXJsLFxuICAgIGJhc2VVcmw6IG4uYmFzZVVybFxuICB9KTtcbiAgaWYgKEllKGDilbAgM0RTIHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQgW1N0YXR1czogJHtlfV1gKSwgZSA9PT0gSS5DQU5DRUxMRUQpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gIGlmIChlID09PSBJLkZBSUxVUkUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gIGNvbnN0IHIgPSBhd2FpdCBHKG4uY29ubmVjdGlvbiwge1xuICAgIHNlY3VyZV90b2tlbjogbi5wcmVmaWxsLnRva2VuLFxuICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgdGhlaXJfcG1faWQ6IHQudGhlaXJfcG1faWQsXG4gICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogdC5jb25zZW50X2lkLFxuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXJcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gSWUoXCJbMm5kXSBDb25maXJtIHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCByKSwgcjtcbn1cbmFzeW5jIGZ1bmN0aW9uIFhvKHQsIG4pIHtcbiAgdmFyIGUsIHIsIGEsIGksIHM7XG4gIHRyeSB7XG4gICAgY29uc3QgYyA9IHQucGF5bWVudCwgbCA9IHJuKG4ubm9uQ2RlRm9ybUlucHV0cywgYyksIHUgPSB0ZShcbiAgICAgIGwsXG4gICAgICBuLmZvcm1DYWxsYmFja3MuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgbi5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICApLCBoID0gKGF3YWl0IGZlKG4uY29ubmVjdGlvbiwge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBuZXdfY3VzdG9tZXJfZW1haWw6IHVbcC5FTUFJTF0sXG4gICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogdVtwLkZJUlNUX05BTUVdLFxuICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogdVtwLkxBU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfYWRkcmVzczoge1xuICAgICAgICB6aXBfY29kZTogdVtwLlpJUF9DT0RFXSxcbiAgICAgICAgY291bnRyeTogdVtwLkNPVU5UUlldXG4gICAgICB9XG4gICAgfSkpLnJlcXVpcmVkX3VzZXJfYWN0aW9uc1swXS5jb25zZW50X2lkO1xuICAgIGlmICghaClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbnNlbnQgSUQgcmVjZWl2ZWQgZnJvbSBwYXltZW50IGZsb3dcIik7XG4gICAgbGV0IHkgPSBhd2FpdCBHKG4uY29ubmVjdGlvbiwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBuLnByZWZpbGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBoLFxuICAgICAgICBhaXJ3YWxsZXhfcGF5bWVudF9tZXRob2RfZGF0YToge1xuICAgICAgICAgIHR5cGU6IFwiYXBwbGVwYXlcIixcbiAgICAgICAgICBhcHBsZXBheToge1xuICAgICAgICAgICAgcGF5bWVudF9kYXRhX3R5cGU6IFwiZW5jcnlwdGVkX3BheW1lbnRfdG9rZW5cIixcbiAgICAgICAgICAgIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuOiBKU09OLnN0cmluZ2lmeShjLnRva2VuKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIEllKFwiWzFzdF0gQ29uZmlybSBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgeSk7XG4gICAgbGV0IG0gPSAociA9IChlID0geS5wYXltZW50X21ldGhvZHMpID09IG51bGwgPyB2b2lkIDAgOiBlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogci5pZDtcbiAgICBjb25zdCBfID0gKGEgPSB5LnJlcXVpcmVkX3VzZXJfYWN0aW9ucykgPT0gbnVsbCA/IHZvaWQgMCA6IGEuZmluZChcbiAgICAgIChnKSA9PiBnLnR5cGUgPT09IFwiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiXG4gICAgKTtcbiAgICBpZiAoXyAhPSBudWxsICYmIF8ucmVkaXJlY3RfdXJsICYmIF8uY29uc2VudF9pZCAmJiBfLnRoZWlyX3BtX2lkICYmICh5ID0gYXdhaXQgUW8oXywgbiksIG0gPSAocyA9IChpID0geS5wYXltZW50X21ldGhvZHMpID09IG51bGwgPyB2b2lkIDAgOiBpWzBdKSA9PSBudWxsID8gdm9pZCAwIDogcy5pZCksICFtKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gUE0gSUQgZm91bmRcIik7XG4gICAgY29uc3QgdiA9IHtcbiAgICAgIHN0YXR1czogQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19TVUNDRVNTXG4gICAgfTtcbiAgICByZXR1cm4gbi5zZXNzaW9uLmNvbXBsZXRlUGF5bWVudCh2KSwgamUoe1xuICAgICAgbG9nUHJlZml4OiBcImF3eC1hcHBsZXBheVwiLFxuICAgICAgYW55Q2RlQ29ubmVjdGlvbjogbi5jb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogdSxcbiAgICAgIGNvbmZpcm1SZXN1bHQ6IHksXG4gICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGMpIHtcbiAgICBjb25zdCBsID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX0ZBSUxVUkVcbiAgICB9O1xuICAgIHRocm93IG4uc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQobCksIGM7XG4gIH1cbn1cbmNvbnN0IHsgbG9nX186IHVlLCBlcnJfXzogSmUgfSA9IFMoXCJhd3gtYXBwbGUtcGF5XCIpLCBlYSA9IHNlKFxuICBhc3luYyAoeyBjb250ZXh0OiB0LCBmb3JtQ2FsbGJhY2tzOiBuIH0pID0+IHtcbiAgICBjb25zdCBlID0ge1xuICAgICAgcHJvY2Vzc29yOiBWLkVudW0uYWlyd2FsbGV4LFxuICAgICAgaXNBdmFpbGFibGU6ICExLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgfVxuICAgIH0sIHIgPSBZKHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgWnQpO1xuICAgIGlmICghcilcbiAgICAgIHJldHVybiBlO1xuICAgIHVlKFwiTG9hZGluZyBBcHBsZSBQYXkgU0RLLi4uXCIpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBubigpLCB1ZShcIkFwcGxlIFBheSBTREsgbG9hZGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICB9IGNhdGNoIChmKSB7XG4gICAgICByZXR1cm4gSmUoXCJGYWlsZWQgdG8gbG9hZCBBcHBsZSBQYXkgU0RLXCIsIGYpLCBlO1xuICAgIH1cbiAgICBpZiAoIXdpbmRvdy5BcHBsZVBheVNlc3Npb24gfHwgIUFwcGxlUGF5U2Vzc2lvbi5jYW5NYWtlUGF5bWVudHMoKSlcbiAgICAgIHJldHVybiB1ZShcIkFwcGxlIFBheSBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgZGV2aWNlL2Jyb3dzZXJcIiksIGU7XG4gICAgaWYgKHVlKFwiQXBwbGUgUGF5IExvYWRlZFwiKSwgIWF3YWl0IEFwcGxlUGF5U2Vzc2lvbi5jYW5NYWtlUGF5bWVudHMoKSlcbiAgICAgIHJldHVybiB1ZShcIk5vIGFjdGl2ZSBjYXJkcyBhdmFpbGFibGUgZm9yIEFwcGxlIFBheVwiKSwgZTtcbiAgICBpZiAoIXIubWV0YWRhdGEucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpO1xuICAgIGNvbnN0IHMgPSB0LmFueUNkZUNvbm5lY3Rpb24sIGMgPSBhd2FpdCBNKHMpLCBsID0gYy5tb2RlID09PSBcInNldHVwXCIsIHUgPSBhd2FpdCBoZShzLCBjLnRva2VuLCBsLCB2b2lkIDApLCBkID0gYXN5bmMgKGYpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGsuYWlyd2FsbGV4QXBwbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiB0LFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBKKHQuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLmYsXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICBKZShcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIGgpLCBuLmdldC5vbkNoZWNrb3V0RXJyb3IoKGggPT0gbnVsbCA/IHZvaWQgMCA6IGgubWVzc2FnZSkgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogVi5FbnVtLmFpcndhbGxleCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGRcbiAgICB9O1xuICB9XG4pLCB0YSA9IGVlKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IHQsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IGUsXG4gICAgY3VzdG9tUGFyYW1zOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IGFcbiAgfSkgPT4ge1xuICAgIHZhciB2O1xuICAgIGNvbnN0IGkgPSBZKHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgWnQpLCB7IG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IHMsIGluaXRpYWxQcmV2aWV3OiBjIH0gPSByLCBsID0gdC5hbnlDZGVDb25uZWN0aW9uLCB1ID0gYXdhaXQgTShsKSwgZCA9IHUubW9kZSA9PT0gXCJzZXR1cFwiLCB7IGN1cnJlbmN5Q29kZTogZiwgdG90YWw6IGggfSA9IGFuKHtcbiAgICAgIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IHMsXG4gICAgICBpbml0aWFsUHJldmlldzogYyxcbiAgICAgIGRlZmF1bHRMYWJlbDogKHYgPSBpID09IG51bGwgPyB2b2lkIDAgOiBpLm1ldGFkYXRhKSA9PSBudWxsID8gdm9pZCAwIDogdi5wcm9jZXNzb3JfYWNjb3VudF9uYW1lXG4gICAgfSksIHkgPSB7XG4gICAgICBjb3VudHJ5Q29kZTogXCJVU1wiLFxuICAgICAgY3VycmVuY3lDb2RlOiBmLFxuICAgICAgcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkczogW1wiZW1haWxcIiwgXCJwb3N0YWxBZGRyZXNzXCIsIFwibmFtZVwiXSxcbiAgICAgIHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOiBbXCJlbWFpbFwiXSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiBbXCJ2aXNhXCIsIFwibWFzdGVyQ2FyZFwiLCBcImFtZXhcIiwgXCJkaXNjb3ZlclwiXSxcbiAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBbXG4gICAgICAgIFwic3VwcG9ydHMzRFNcIixcbiAgICAgICAgXCJzdXBwb3J0c0NyZWRpdFwiLFxuICAgICAgICBcInN1cHBvcnRzRGViaXRcIixcbiAgICAgICAgXCJzdXBwb3J0c0VNVlwiXG4gICAgICBdLFxuICAgICAgdG90YWw6IGgsXG4gICAgICByZWN1cnJpbmdQYXltZW50UmVxdWVzdDogb24oe1xuICAgICAgICB0b3RhbDogaCxcbiAgICAgICAgcHJlZmlsbDogdVxuICAgICAgfSksXG4gICAgICAuLi4ocyA9PSBudWxsID8gdm9pZCAwIDogcy5hcHBsZVBheVBheW1lbnRSZXF1ZXN0KSA/PyB7fVxuICAgIH0sIG0gPSBuZXcgQXBwbGVQYXlTZXNzaW9uKDMsIHkpLCBfID0ge1xuICAgICAgc2Vzc2lvbjogbSxcbiAgICAgIGNvbm5lY3Rpb246IHQuYW55Q2RlQ29ubmVjdGlvbixcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGUsXG4gICAgICBwcm9jZXNzb3JBY2NvdW50OiBpLm1ldGFkYXRhLFxuICAgICAgcHJlZmlsbDogdSxcbiAgICAgIGlzU2V0dXBNb2RlOiBkLFxuICAgICAgYmFzZVVybDogdC5iYXNlVXJsLFxuICAgICAgZm9ybUNhbGxiYWNrczogYSxcbiAgICAgIGRlZmF1bHRGaWVsZFZhbHVlczogciA9PSBudWxsID8gdm9pZCAwIDogci5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICB9O1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgoZywgYikgPT4ge1xuICAgICAgY29uc3QgRSA9ICgpID0+IHtcbiAgICAgICAgdWUoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpLCBiKG5ldyBFcnJvcihcIlBheW1lbnQgY2FuY2VsbGVkIGJ5IHVzZXJcIikpO1xuICAgICAgfSwgeyBjbGVhbnVwQ2FuY2VsTGlzdGVuZXI6IEQgfSA9IFpvKEUpO1xuICAgICAgbS5vbmNhbmNlbCA9IEUsIG0ub252YWxpZGF0ZW1lcmNoYW50ID0gYXN5bmMgKE4pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBCbyhOLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoQSkge1xuICAgICAgICAgIGIoQSk7XG4gICAgICAgIH1cbiAgICAgIH0sIG0ub25wYXltZW50bWV0aG9kc2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IE4gPSB7XG4gICAgICAgICAgbmV3VG90YWw6IHsgLi4uaCB9XG4gICAgICAgIH07XG4gICAgICAgIG0uY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKE4pO1xuICAgICAgfSwgbS5vbnBheW1lbnRhdXRob3JpemVkID0gYXN5bmMgKE4pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBBID0gYXdhaXQgWG8oTiwgXyk7XG4gICAgICAgICAgRCgpLCBnKEEpO1xuICAgICAgICB9IGNhdGNoIChBKSB7XG4gICAgICAgICAgYihBKTtcbiAgICAgICAgfVxuICAgICAgfSwgbS5iZWdpbigpO1xuICAgIH0pLmNhdGNoKChnKSA9PiB7XG4gICAgICB0aHJvdyBKZShcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIGcpLCBnO1xuICAgIH0pO1xuICB9XG4pLCBuYSA9IDEsIHJhID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImxvb3BcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImNyeXB0b1wiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgZW50aXR5X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgYXBpX3Rva2VuOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCB7IGxvZ19fOiBULCBlcnJfXzogb2EgfSA9IFMoXCJsb29wLWNyeXB0b1wiKSwgYWEgPSBzZShcbiAgYXN5bmMgKHsgY29udGV4dDogdCB9KSA9PiB7XG4gICAgVChcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgTG9vcCBDcnlwdG8uLi5cIik7XG4gICAgY29uc3QgbiA9IFkodC5jaGVja291dFBheW1lbnRNZXRob2RzLCByYSk7XG4gICAgVChgY2hlY2tvdXRQYXltZW50TWV0aG9kOiAke0pTT04uc3RyaW5naWZ5KG4pfWApLCBUKFwiU3RhcnRpbmcgTG9vcCBDcnlwdG8gZmxvdy4uLlwiKTtcbiAgICBjb25zdCBlID0gYXdhaXQgTSh0LmFueUNkZUNvbm5lY3Rpb24pO1xuICAgIGxldCByO1xuICAgIGlmIChlLm1vZGUgPT09IFwic2V0dXBcIiA/IHIgPSBuYSA6IHIgPSBlLmFtb3VudF90b3RhbF9hdG9tLCBlLmN1cnJlbmN5ICE9PSBcInVzZFwiICYmIGUubW9kZSAhPT0gXCJzZXR1cFwiKVxuICAgICAgdGhyb3cgRXJyb3IoXCJDYW5ub3Qgc3VwcG9ydCBub24gVVNEIGN1cnJlbmN5IGZvciBMb29wXCIpO1xuICAgIGNvbnN0IGEgPSByLCBpID0gTWF0aC5tYXgoYSAqIDEyLCAxZTUpLCBzID0gdjQoKSwgYyA9IHtcbiAgICAgIHBheW1lbnRVc2RBbW91bnQ6IGEsXG4gICAgICBzdWdnZXN0ZWRBdXRob3JpemF0aW9uVXNkQW1vdW50OiBpLFxuICAgICAgY3VzdG9tZXJSZWZJZDogc1xuICAgIH0sIGwgPSB7XG4gICAgICBhcGlLZXk6IG4ubWV0YWRhdGEuYXBpX3Rva2VuLFxuICAgICAgZW50aXR5SWQ6IG4ubWV0YWRhdGEuZW50aXR5X2lkLFxuICAgICAgbWVyY2hhbnRJZDogbi5tZXRhZGF0YS5tZXJjaGFudF9pZFxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIHdpZGdldFByb3BzOiBjLFxuICAgICAgaW5pdExvb3BDb25uZWN0UHJvcHM6IGxcbiAgICB9O1xuICB9XG4pLCBpYSA9IGVlKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IHQsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IGUsXG4gICAgZm9ybUNhbGxiYWNrczogcixcbiAgICBjdXN0b21QYXJhbXM6IGEsXG4gICAgaW5pdFJlc3VsdDogaVxuICB9KSA9PiB7XG4gICAgVChcIlJ1bm5pbmcgTG9vcCBmbG93Li4uXCIpLCBUKFwiY29udGV4dFwiLCB0KSwgVChcImNoZWNrb3V0UGF5bWVudE1ldGhvZFwiLCBuKSwgVChcIm5vbkNkZUZvcm1JbnB1dHNcIiwgZSksIFQoXCJmbG93Q2FsbGJhY2tzXCIsIHIpLCBUKFwiY3VzdG9tUGFyYW1zXCIsIGEpLCBUKFwiaW5pdFJlc3VsdFwiLCBpKTtcbiAgICBjb25zdCBzID0gdC5hbnlDZGVDb25uZWN0aW9uO1xuICAgIGlmICghaS5pc0F2YWlsYWJsZSlcbiAgICAgIHRocm93IEVycm9yKFwiRmFpbGVkIHRvIGluaXRpYWxpemUgTG9vcCBmbG93LiBDYW5ub3Qgc3VibWl0IHdpdGhvdXQgaW5pdGlhbGl6YXRpb24uIEV4aXRpbmcgcnVubmluZyBMb29wIGZsb3cuXCIpO1xuICAgIGNvbnN0IGMgPSBhd2FpdCBNKHQuYW55Q2RlQ29ubmVjdGlvbiksIGwgPSBjLm1vZGUgIT09IFwic2V0dXBcIiwgdSA9IGF3YWl0IGZlKHQuYW55Q2RlQ29ubmVjdGlvbiwge1xuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG4sXG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLnByb3ZpZGVyLFxuICAgICAgbmV3X2N1c3RvbWVyX2VtYWlsOiBhLmVtYWlsLFxuICAgICAgbmV3X2N1c3RvbWVyX2ZpcnN0X25hbWU6IGEuZmlyc3ROYW1lLFxuICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogYS5sYXN0TmFtZSxcbiAgICAgIHVzZV9wYXlfZmlyc3RfZmxvdzogbCxcbiAgICAgIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogbCA/IHtcbiAgICAgICAgLy8gVE9ETyBhZGQgY291cG9uIGFuZCBjYXJ0IGFkanVzdGVkIGxpbmUgaXRlbXMgbGF0ZXJcbiAgICAgICAgbGluZV9pdGVtczogYy5saW5lX2l0ZW1zLFxuICAgICAgICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IGkud2lkZ2V0UHJvcHMucGF5bWVudFVzZEFtb3VudFxuICAgICAgfSA6IHZvaWQgMFxuICAgIH0pO1xuICAgIGlmICghYS5zdWNjZXNzKVxuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBQYXlpbiB3YXMgbm90IHN1Y2Nlc3NmdWw6ICR7YS5kZXRhaWwudHlwZX0gJHthLmRldGFpbC5tZXNzYWdlfSAke0pTT04uc3RyaW5naWZ5KGEuZGV0YWlsLmRhdGEpfWBcbiAgICAgICk7XG4gICAgY29uc3QgZCA9IGF3YWl0IEcocywge1xuICAgICAgc2VjdXJlX3Rva2VuOiBjLnRva2VuLFxuICAgICAgdGhlaXJfcG1faWQ6IGEucGF5aW4ucGF5bWVudE1ldGhvZC5wYXltZW50TWV0aG9kSWQsXG4gICAgICBjaGVja291dF9hdHRlbXB0X2lkOiBjLm1vZGUgIT09IFwic2V0dXBcIiA/IHUuY2hlY2tvdXRfYXR0ZW1wdF9pZCA6IHZvaWQgMCxcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBsb29wX2N1c3RvbWVyOiBhLmN1c3RvbWVyLFxuICAgICAgICBsb29wX3BheWluOiBhLnBheWluXG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKFQoYENvbmZpcm0gcmVzdWx0OiAke2R9YCksIGMubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICBUKFwiRG9pbmcgcGF5bWVudCBzZXR1cC4uLlwiKSwgVChcIuKUnCBDb25maXJtIHBheW1lbnQgZmxvdyByZXN1bHQgcmVjZWl2ZWQgUmVzdWx0OlwiLCBkKTtcbiAgICAgIGNvbnN0IGYgPSBDZShkKTtcbiAgICAgIHJldHVybiBUKGDilbAgU2V0dXAgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBbUE0gSUQ6ICR7Zi5wYXltZW50X21ldGhvZF9pZH1dYCksIHsgbW9kZTogXCJzZXR1cFwiLCByZXN1bHQ6IGYgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKFQoXCJEb2luZyBjaGVja291dC4uLlwiKSwgIWQucGF5X2ZpcnN0X3N1Y2Nlc3NfcmVzcG9uc2UpXG4gICAgICAgIHRocm93IG9hKFwiQ2hlY2tvdXQgZmFpbGVkLCBubyBwYXktZmlyc3Qgc3VjY2VzcyByZXNwb25zZTpcIiwgZCksIG5ldyBFcnJvcihcIkNoZWNrb3V0IGZhaWxlZCwgcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGFub3RoZXIgcGF5bWVudCBtZXRob2QuXCIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZTogXCJjaGVja291dFwiLFxuICAgICAgICByZXN1bHQ6IGQucGF5X2ZpcnN0X3N1Y2Nlc3NfcmVzcG9uc2VcbiAgICAgIH07XG4gICAgfVxuICB9XG4pO1xuYXN5bmMgZnVuY3Rpb24gc2EodCwgbikge1xuICB0cnkge1xuICAgIGNvbnN0IHIgPSAoYXdhaXQgR3Qobi5jb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgYXBwbGVfcGF5bWVudF9zZXNzaW9uOiB7XG4gICAgICAgICAgdmFsaWRhdGlvbl91cmw6IHQudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICBpbml0aWF0aXZlX2NvbnRleHQ6IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgICAgICB0aGVpcl9hY2NvdW50X2lkOiBuLnByb2Nlc3NvckFjY291bnQucHJvY2Vzc29yX2FjY291bnRfaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKS5uZXh0X2FjdGlvbl9tZXRhZGF0YSwgYSA9IHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuYXBwbGVfcGF5X3Nlc3Npb247XG4gICAgaWYgKCFhKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc2Vzc2lvbiBkYXRhIHJlY2VpdmVkIGZyb20gcGF5bWVudCBmbG93XCIpO1xuICAgIG4uc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihhKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG4uc2Vzc2lvbi5hYm9ydCgpLCBlO1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBjYSh0LCBuKSB7XG4gIHZhciBlLCByO1xuICB0cnkge1xuICAgIGNvbnN0IGEgPSB0LnBheW1lbnQsIGkgPSBybihuLm5vbkNkZUZvcm1JbnB1dHMsIGEpLCBzID0gdGUoaSwgbi5mb3JtQ2FsbGJhY2tzLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgYXdhaXQgZmUobi5jb25uZWN0aW9uLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlcixcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIG5ld19jdXN0b21lcl9lbWFpbDogc1twLkVNQUlMXSxcbiAgICAgIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiBzW3AuRklSU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiBzW3AuTEFTVF9OQU1FXSxcbiAgICAgIG5ld19jdXN0b21lcl9hZGRyZXNzOiB7XG4gICAgICAgIHppcF9jb2RlOiBzW3AuWklQX0NPREVdLFxuICAgICAgICBjb3VudHJ5OiBzW3AuQ09VTlRSWV1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjID0ge1xuICAgICAgZGF0YURlc2NyaXB0b3I6IFwiQ09NTU9OLkFQUExFLklOQVBQLlBBWU1FTlRcIixcbiAgICAgIGRhdGFWYWx1ZTogd2luZG93LmJ0b2EoSlNPTi5zdHJpbmdpZnkoYS50b2tlbi5wYXltZW50RGF0YSkpXG4gICAgfSwgbCA9IGF3YWl0IEcobi5jb25uZWN0aW9uLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IG4ucHJlZmlsbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlcixcbiAgICAgICAgbW9iaWxlX3dhbGxldF9wYXltZW50X2RhdGE6IGNcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoISgociA9IChlID0gbC5wYXltZW50X21ldGhvZHMpID09IG51bGwgPyB2b2lkIDAgOiBlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogci5pZCkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBQTSBJRCBmb3VuZFwiKTtcbiAgICBjb25zdCBkID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX1NVQ0NFU1NcbiAgICB9O1xuICAgIHJldHVybiBuLnNlc3Npb24uY29tcGxldGVQYXltZW50KGQpLCBqZSh7XG4gICAgICBsb2dQcmVmaXg6IFwiYXV0aG5ldC1hcHBsZXBheVwiLFxuICAgICAgYW55Q2RlQ29ubmVjdGlvbjogbi5jb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogcyxcbiAgICAgIGNvbmZpcm1SZXN1bHQ6IGwsXG4gICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGEpIHtcbiAgICBjb25zdCBpID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX0ZBSUxVUkVcbiAgICB9O1xuICAgIHRocm93IG4uc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQoaSksIGE7XG4gIH1cbn1cbmNvbnN0IHNuID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgY24gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pLCB7IGxvZ19fOiB3ZSwgZXJyX186IEhlIH0gPSBTKFwiYXV0aG5ldC1hcHBsZXBheVwiKSwgbGEgPSBzZShcbiAgYXN5bmMgKHsgY29udGV4dDogdCwgZm9ybUNhbGxiYWNrczogbiB9KSA9PiB7XG4gICAgY29uc3QgZSA9IHtcbiAgICAgIHByb2Nlc3NvcjogVi5FbnVtLmF1dGhvcml6ZV9uZXQsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IFkodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBzbik7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIGU7XG4gICAgd2UoXCJMb2FkaW5nIEFwcGxlIFBheSBTREsuLi5cIik7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5uKCksIHdlKFwiQXBwbGUgUGF5IFNESyBsb2FkZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuICAgIH0gY2F0Y2ggKGYpIHtcbiAgICAgIHJldHVybiBIZShcIkZhaWxlZCB0byBsb2FkIEFwcGxlIFBheSBTREtcIiwgZiksIGU7XG4gICAgfVxuICAgIGlmICghd2luZG93LkFwcGxlUGF5U2Vzc2lvbiB8fCAhQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50cygpKVxuICAgICAgcmV0dXJuIHdlKFwiQXBwbGUgUGF5IGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBkZXZpY2UvYnJvd3NlclwiKSwgZTtcbiAgICBpZiAoIWF3YWl0IEFwcGxlUGF5U2Vzc2lvbi5jYW5NYWtlUGF5bWVudHMoKSlcbiAgICAgIHJldHVybiB3ZShcIk5vIGFjdGl2ZSBjYXJkcyBhdmFpbGFibGUgZm9yIEFwcGxlIFBheVwiKSwgZTtcbiAgICBpZiAoIXIubWV0YWRhdGEucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpO1xuICAgIGNvbnN0IHMgPSB0LmFueUNkZUNvbm5lY3Rpb24sIGMgPSBhd2FpdCBNKHMpLCBsID0gYy5tb2RlID09PSBcInNldHVwXCIsIHUgPSBhd2FpdCBoZShzLCBjLnRva2VuLCBsLCB2b2lkIDApLCBkID0gYXN5bmMgKGYpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGsuYXV0aG9yaXplTmV0QXBwbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiB0LFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBKKHQuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLmYsXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICBIZShcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIGgpLCBuLmdldC5vbkNoZWNrb3V0RXJyb3IoKGggPT0gbnVsbCA/IHZvaWQgMCA6IGgubWVzc2FnZSkgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogVi5FbnVtLmF1dGhvcml6ZV9uZXQsXG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBkXG4gICAgfTtcbiAgfVxuKSwgdWEgPSBlZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiB0LFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiBlLFxuICAgIGN1c3RvbVBhcmFtczogcixcbiAgICBmb3JtQ2FsbGJhY2tzOiBhXG4gIH0pID0+IHtcbiAgICB2YXIgdjtcbiAgICBjb25zdCB7IGluaXRpYWxQcmV2aWV3OiBpLCBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzIH0gPSByLCBjID0gWSh0LmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHNuKSwgeyBjdXJyZW5jeUNvZGU6IGwsIHRvdGFsOiB1IH0gPSBhbih7XG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IGksXG4gICAgICBkZWZhdWx0TGFiZWw6ICh2ID0gYyA9PSBudWxsID8gdm9pZCAwIDogYy5tZXRhZGF0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IHYucHJvY2Vzc29yX2FjY291bnRfbmFtZVxuICAgIH0pLCBkID0gdC5hbnlDZGVDb25uZWN0aW9uLCBmID0gYXdhaXQgTShkKSwgaCA9IGYubW9kZSA9PT0gXCJzZXR1cFwiLCB5ID0ge1xuICAgICAgY291bnRyeUNvZGU6IFwiVVNcIixcbiAgICAgIGN1cnJlbmN5Q29kZTogbCxcbiAgICAgIHRvdGFsOiB1LFxuICAgICAgcmVxdWlyZWRCaWxsaW5nQ29udGFjdEZpZWxkczogW1wiZW1haWxcIiwgXCJwb3N0YWxBZGRyZXNzXCIsIFwibmFtZVwiXSxcbiAgICAgIHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOiBbXCJlbWFpbFwiXSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiBbXCJ2aXNhXCIsIFwibWFzdGVyQ2FyZFwiLCBcImFtZXhcIiwgXCJkaXNjb3ZlclwiXSxcbiAgICAgIG1lcmNoYW50Q2FwYWJpbGl0aWVzOiBbXCJzdXBwb3J0czNEU1wiLCBcInN1cHBvcnRzQ3JlZGl0XCIsIFwic3VwcG9ydHNEZWJpdFwiXSxcbiAgICAgIHJlY3VycmluZ1BheW1lbnRSZXF1ZXN0OiBvbih7XG4gICAgICAgIHRvdGFsOiB1LFxuICAgICAgICBwcmVmaWxsOiBmXG4gICAgICB9KSxcbiAgICAgIC4uLihzID09IG51bGwgPyB2b2lkIDAgOiBzLmFwcGxlUGF5UGF5bWVudFJlcXVlc3QpID8/IHt9XG4gICAgfSwgbSA9IG5ldyBBcHBsZVBheVNlc3Npb24oMywgeSksIF8gPSB7XG4gICAgICBzZXNzaW9uOiBtLFxuICAgICAgY29ubmVjdGlvbjogdC5hbnlDZGVDb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgbm9uQ2RlRm9ybUlucHV0czogZSxcbiAgICAgIHByb2Nlc3NvckFjY291bnQ6IG4ubWV0YWRhdGEsXG4gICAgICBwcmVmaWxsOiBmLFxuICAgICAgaXNTZXR1cE1vZGU6IGgsXG4gICAgICBiYXNlVXJsOiB0LmJhc2VVcmwsXG4gICAgICBmb3JtQ2FsbGJhY2tzOiBhXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKGcsIGIpID0+IHtcbiAgICAgIG0ub25jYW5jZWwgPSAoKSA9PiB7XG4gICAgICAgIHdlKFwiUGF5bWVudCBjYW5jZWxsZWQgYnkgdXNlclwiKSwgYihuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpKTtcbiAgICAgIH0sIG0ub252YWxpZGF0ZW1lcmNoYW50ID0gYXN5bmMgKEUpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBzYShFLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoRCkge1xuICAgICAgICAgIGIoRCk7XG4gICAgICAgIH1cbiAgICAgIH0sIG0ub25wYXltZW50bWV0aG9kc2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IEUgPSB7XG4gICAgICAgICAgbmV3VG90YWw6IHkudG90YWxcbiAgICAgICAgfTtcbiAgICAgICAgbS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oRSk7XG4gICAgICB9LCBtLm9ucGF5bWVudGF1dGhvcml6ZWQgPSBhc3luYyAoRSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IEQgPSBhd2FpdCBjYShFLCBfKTtcbiAgICAgICAgICBnKEQpO1xuICAgICAgICB9IGNhdGNoIChEKSB7XG4gICAgICAgICAgYihEKTtcbiAgICAgICAgfVxuICAgICAgfSwgbS5iZWdpbigpO1xuICAgIH0pLmNhdGNoKChnKSA9PiB7XG4gICAgICB0aHJvdyBIZShcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIGcpLCBnO1xuICAgIH0pO1xuICB9XG4pLCB7IGxvZ19fOiBpZSwgZXJyX186IGdlIH0gPSBTKFwiYXV0aG5ldC1nb29nbGVwYXlcIiksIGRhID0gc2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IHQsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIHZhciBkLCBmO1xuICAgIGllKFwiSW5pdGlhbGl6aW5nIEF1dGhuZXQgR29vZ2xlUGF5IGZsb3dcIik7XG4gICAgY29uc3QgZSA9IHtcbiAgICAgIHByb2Nlc3NvcjogVi5FbnVtLmF1dGhvcml6ZV9uZXQsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IFkodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBjbik7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIGU7XG4gICAgaWUoXCJHb29nbGUgUGF5IENQTVwiLCByKTtcbiAgICBjb25zdCBhID0gci5tZXRhZGF0YTtcbiAgICBpZiAoIWEucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICByZXR1cm4gZ2UoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpLCBlO1xuICAgIGlmIChpZShcIkxvYWRpbmcgR29vZ2xlIFBheSBTREsuLi5cIiksIGF3YWl0IFh0KCksICEoKGYgPSAoZCA9IHdpbmRvdy5nb29nbGUpID09IG51bGwgPyB2b2lkIDAgOiBkLnBheW1lbnRzKSAhPSBudWxsICYmIGYuYXBpKSlcbiAgICAgIHJldHVybiBnZShcIkdvb2dsZSBQYXkgU0RLIG5vdCBsb2FkZWQgcHJvcGVybHlcIiksIGU7XG4gICAgaWUoXCJHb29nbGUgUGF5IFNESyBsb2FkZWRcIiwgd2luZG93Lmdvb2dsZS5wYXltZW50cyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGggPSAkZSh7XG4gICAgICAgIGdhdGV3YXk6IFwiYXV0aG9yaXplbmV0XCIsXG4gICAgICAgIGdhdGV3YXlNZXJjaGFudElkOiBhLnByb2Nlc3Nvcl9hY2NvdW50X2lkLFxuICAgICAgICBtZXJjaGFudE5hbWU6IGEucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgICAgbWVyY2hhbnRJZDogYS5nb29nbGVfcGF5X21lcmNoYW50X2lkID8/IFwiXCIsXG4gICAgICAgIC8vIFRoaXMgaXMgZm9yIGluaXRpYWwgcGF5bWVudCByZXF1ZXN0IHRvIGNoZWNrIGF2YWlsYWJpbGl0eS4gQWN0dWFsIGBpbml0aWFsUHJldmlld2Agd2lsbCBiZSB1c2VkIHdoZW4gdGhlIFVJIGlzIHNob3duXG4gICAgICAgIGluaXRpYWxQcmV2aWV3OiB7XG4gICAgICAgICAgYW1vdW50QXRvbTogMCxcbiAgICAgICAgICBjdXJyZW5jeTogXCJVU0RcIlxuICAgICAgICB9XG4gICAgICB9KSwgeyByZXN1bHQ6IHkgfSA9IGF3YWl0IHplKHQuYmFzZVVybCwgaCkuaXNSZWFkeVRvUGF5KFxuICAgICAgICBoXG4gICAgICApO1xuICAgICAgaWYgKCF5KVxuICAgICAgICByZXR1cm4gaWUoXCJHb29nbGUgUGF5IGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgdXNlclwiKSwgZTtcbiAgICB9IGNhdGNoIChoKSB7XG4gICAgICByZXR1cm4gZ2UoXCJFcnJvciBjaGVja2luZyBHb29nbGUgUGF5IGF2YWlsYWJpbGl0eVwiLCBoKSwgZTtcbiAgICB9XG4gICAgY29uc3QgaSA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgcyA9IGF3YWl0IE0oaSksIGMgPSBzLm1vZGUgPT09IFwic2V0dXBcIiwgbCA9IGF3YWl0IGhlKGksIHMudG9rZW4sIGMsIHZvaWQgMCksIHUgPSBhc3luYyAoaCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgay5hdXRob3JpemVOZXRHb29nbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiB0LFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBKKHQuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5oLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IGxcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoeSkge1xuICAgICAgICBnZShcIkdvb2dsZSBQYXkgcGF5bWVudCBlcnJvclwiLCB5KSwgbi5nZXQub25DaGVja291dEVycm9yKCh5ID09IG51bGwgPyB2b2lkIDAgOiB5Lm1lc3NhZ2UpID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IFYuRW51bS5hdXRob3JpemVfbmV0LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogdVxuICAgIH07XG4gIH1cbiksIHBhID0gZWUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiBuLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogZSxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogYVxuICB9KSA9PiB7XG4gICAgdmFyIGYsIGgsIHksIG07XG4gICAgY29uc3QgeyBpbml0aWFsUHJldmlldzogaSwgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogcyB9ID0gYSwgbCA9IFkodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBjbikubWV0YWRhdGEsIHUgPSAkZSh7XG4gICAgICBnYXRld2F5OiBcImF1dGhvcml6ZW5ldFwiLFxuICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IGwucHJvY2Vzc29yX2FjY291bnRfaWQsXG4gICAgICBtZXJjaGFudE5hbWU6IGwucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgIG1lcmNoYW50SWQ6IGwuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IGksXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzXG4gICAgfSksIGQgPSB6ZSh0LmJhc2VVcmwsIHUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBfID0gYXdhaXQgZC5sb2FkUGF5bWVudERhdGEodSk7XG4gICAgICBpZShcIkdvb2dsZSBQYXkgUGF5bWVudCBkYXRhXCIsIF8pO1xuICAgICAgY29uc3QgdiA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgZyA9IGF3YWl0IE0odiksIGIgPSB0bihuLCBfKSwgRSA9IHRlKGIsIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKSwgRCA9IChoID0gKGYgPSBfLnBheW1lbnRNZXRob2REYXRhKSA9PSBudWxsID8gdm9pZCAwIDogZi50b2tlbml6YXRpb25EYXRhKSA9PSBudWxsID8gdm9pZCAwIDogaC50b2tlbjtcbiAgICAgIGlmICghRClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gcGF5bWVudCB0b2tlbiByZWNlaXZlZCBmcm9tIEdvb2dsZSBQYXlcIik7XG4gICAgICBjb25zdCBOID0gYXdhaXQgZmUodiwge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiBlLnByb3ZpZGVyLFxuICAgICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogZSxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2VtYWlsOiBFW3AuRU1BSUxdLFxuICAgICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogRVtwLkZJUlNUX05BTUVdLFxuICAgICAgICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiBFW3AuTEFTVF9OQU1FXSxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2FkZHJlc3M6IHtcbiAgICAgICAgICB6aXBfY29kZTogRVtwLlpJUF9DT0RFXSxcbiAgICAgICAgICBjb3VudHJ5OiBFW3AuQ09VTlRSWV1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZShcIlN0YXJ0IHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCBOKTtcbiAgICAgIGNvbnN0IEEgPSBhd2FpdCBHKHYsIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBnLnRva2VuLFxuICAgICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiBlLnByb3ZpZGVyLFxuICAgICAgICAgIG1vYmlsZV93YWxsZXRfcGF5bWVudF9kYXRhOiB7XG4gICAgICAgICAgICBkYXRhRGVzY3JpcHRvcjogXCJDT01NT04uR09PR0xFLklOQVBQLlBBWU1FTlRcIixcbiAgICAgICAgICAgIGRhdGFWYWx1ZTogd2luZG93LmJ0b2EoRClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKCEoKG0gPSAoeSA9IEEucGF5bWVudF9tZXRob2RzKSA9PSBudWxsID8gdm9pZCAwIDogeVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IG0uaWQpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBQTSBJRCBmb3VuZFwiKTtcbiAgICAgIHJldHVybiBqZSh7XG4gICAgICAgIGxvZ1ByZWZpeDogXCJhdXRobmV0LWdvb2dsZXBheVwiLFxuICAgICAgICBhbnlDZGVDb25uZWN0aW9uOiB2LFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IGUsXG4gICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogRSxcbiAgICAgICAgY29uZmlybVJlc3VsdDogQSxcbiAgICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgdGhyb3cgZ2UoXCJHb29nbGUgUGF5IHBheW1lbnQgZXJyb3JcIiwgXyksIG5ldyBFcnJvcigoXyA9PSBudWxsID8gdm9pZCAwIDogXy5tZXNzYWdlKSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgfVxuICB9XG4pLCBiZSA9ICh0LCBuLCBlKSA9PiB7XG4gIGNvbnN0IHIgPSB0LmZpbHRlcigoYSkgPT4ge1xuICAgIGNvbnN0IGkgPSBlID09PSB2b2lkIDAgPyAhMCA6IGEucHJvY2Vzc29yX25hbWUgPT09IGUsIHMgPSBhLnByb3ZpZGVyID09PSBuO1xuICAgIHJldHVybiBpICYmIHM7XG4gIH0pO1xuICBpZiAoci5sZW5ndGggPT09IDApXG4gICAgdGhyb3cgY29uc29sZS5lcnJvcihcIkNQTXMgbGlzdFwiLCB0KSwgbmV3IEVycm9yKGBObyBDUE1zIGZvdW5kIHdpdGggcHJvdmlkZXIgJyR7bn0nIGFuZCBwcm9jZXNzb3IgJyR7ZX0nYCk7XG4gIGlmIChyLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBjb25zb2xlLmVycm9yKFwiQ1BNcyBsaXN0XCIsIHQpLCBuZXcgRXJyb3IoYE1vcmUgdGhhbiBvbmUgQ1BNIGZvdW5kIHdpdGggcHJvdmlkZXIgJyR7bn0nIGFuZCBwcm9jZXNzb3IgJyR7ZX0nYCk7XG4gIHJldHVybiByWzBdO1xufSwgayA9IHtcbiAgLy8g4pyLIE5vdGU6IEZvciBmbG93cyB0aGF0IHJlcXVpcmUgaW5pdGlhbGl6YXRpb24sIHBsZWFzZSBhZGQgdGhlbSB0byBgaW5pdC1mbG93cy50c2BcbiAgLy8gQ29tbW9uXG4gIGNvbW1vbkNDOiB7XG4gICAgaW5pdDogYXN5bmMgKCkgPT4ge1xuICAgIH0sXG4gICAgcnVuOiBGb1xuICB9LFxuICAvLyBTdHJpcGVcbiAgc3RyaXBlUFI6IHtcbiAgICBpbml0OiBqbyxcbiAgICBydW46IHhvXG4gIH0sXG4gIHN0cmlwZUxpbms6IHtcbiAgICBpbml0OiBlbyxcbiAgICBydW46IHRvXG4gIH0sXG4gIC8vIFBvY2t5dFxuICBwb2NreXRQYXlwYWw6IHtcbiAgICBydW46IHFvXG4gIH0sXG4gIC8vIEFpcndhbGxleFxuICBhaXJ3YWxsZXhHb29nbGVQYXk6IHtcbiAgICBpbml0OiBLbyxcbiAgICBydW46IFdvXG4gIH0sXG4gIGFpcndhbGxleEFwcGxlUGF5OiB7XG4gICAgaW5pdDogZWEsXG4gICAgcnVuOiB0YVxuICB9LFxuICAvLyBMb29wXG4gIGxvb3BDcnlwdG86IHtcbiAgICBpbml0OiBhYSxcbiAgICBydW46IGlhXG4gIH0sXG4gIGF1dGhvcml6ZU5ldEFwcGxlUGF5OiB7XG4gICAgaW5pdDogbGEsXG4gICAgcnVuOiB1YVxuICB9LFxuICBhdXRob3JpemVOZXRHb29nbGVQYXk6IHtcbiAgICBpbml0OiBkYSxcbiAgICBydW46IHBhXG4gIH1cbiAgLy8g8J+RiSBBZGQgbW9yZSBmbG93cyBoZXJlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG59O1xudmFyIFplID0gZnVuY3Rpb24odCwgbikge1xuICByZXR1cm4gWmUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihlLCByKSB7XG4gICAgZS5fX3Byb3RvX18gPSByO1xuICB9IHx8IGZ1bmN0aW9uKGUsIHIpIHtcbiAgICBmb3IgKHZhciBhIGluIHIpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLCBhKSAmJiAoZVthXSA9IHJbYV0pO1xuICB9LCBaZSh0LCBuKTtcbn07XG5mdW5jdGlvbiBuZSh0LCBuKSB7XG4gIGlmICh0eXBlb2YgbiAhPSBcImZ1bmN0aW9uXCIgJiYgbiAhPT0gbnVsbClcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhuKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIFplKHQsIG4pO1xuICBmdW5jdGlvbiBlKCkge1xuICAgIHRoaXMuY29uc3RydWN0b3IgPSB0O1xuICB9XG4gIHQucHJvdG90eXBlID0gbiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUobikgOiAoZS5wcm90b3R5cGUgPSBuLnByb3RvdHlwZSwgbmV3IGUoKSk7XG59XG5mdW5jdGlvbiBtYSh0LCBuLCBlLCByKSB7XG4gIGZ1bmN0aW9uIGEoaSkge1xuICAgIHJldHVybiBpIGluc3RhbmNlb2YgZSA/IGkgOiBuZXcgZShmdW5jdGlvbihzKSB7XG4gICAgICBzKGkpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKGUgfHwgKGUgPSBQcm9taXNlKSkoZnVuY3Rpb24oaSwgcykge1xuICAgIGZ1bmN0aW9uIGMoZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShyLm5leHQoZCkpO1xuICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICBzKGYpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBsKGQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUoci50aHJvdyhkKSk7XG4gICAgICB9IGNhdGNoIChmKSB7XG4gICAgICAgIHMoZik7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUoZCkge1xuICAgICAgZC5kb25lID8gaShkLnZhbHVlKSA6IGEoZC52YWx1ZSkudGhlbihjLCBsKTtcbiAgICB9XG4gICAgdSgociA9IHIuYXBwbHkodCwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGxuKHQsIG4pIHtcbiAgdmFyIGUgPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHtcbiAgICBpZiAoaVswXSAmIDEpIHRocm93IGlbMV07XG4gICAgcmV0dXJuIGlbMV07XG4gIH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIHIsIGEsIGksIHMgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT0gXCJmdW5jdGlvblwiID8gSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSk7XG4gIHJldHVybiBzLm5leHQgPSBjKDApLCBzLnRocm93ID0gYygxKSwgcy5yZXR1cm4gPSBjKDIpLCB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiAoc1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBzO1xuICBmdW5jdGlvbiBjKHUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZCkge1xuICAgICAgcmV0dXJuIGwoW3UsIGRdKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGwodSkge1xuICAgIGlmIChyKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICBmb3IgKDsgcyAmJiAocyA9IDAsIHVbMF0gJiYgKGUgPSAwKSksIGU7ICkgdHJ5IHtcbiAgICAgIGlmIChyID0gMSwgYSAmJiAoaSA9IHVbMF0gJiAyID8gYS5yZXR1cm4gOiB1WzBdID8gYS50aHJvdyB8fCAoKGkgPSBhLnJldHVybikgJiYgaS5jYWxsKGEpLCAwKSA6IGEubmV4dCkgJiYgIShpID0gaS5jYWxsKGEsIHVbMV0pKS5kb25lKSByZXR1cm4gaTtcbiAgICAgIHN3aXRjaCAoYSA9IDAsIGkgJiYgKHUgPSBbdVswXSAmIDIsIGkudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBlLmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICBlLmxhYmVsKyssIGEgPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IGUub3BzLnBvcCgpLCBlLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGkgPSBlLnRyeXMsICEoaSA9IGkubGVuZ3RoID4gMCAmJiBpW2kubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICBlID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIWkgfHwgdVsxXSA+IGlbMF0gJiYgdVsxXSA8IGlbM10pKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiBlLmxhYmVsIDwgaVsxXSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IGlbMV0sIGkgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpICYmIGUubGFiZWwgPCBpWzJdKSB7XG4gICAgICAgICAgICBlLmxhYmVsID0gaVsyXSwgZS5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpWzJdICYmIGUub3BzLnBvcCgpLCBlLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gbi5jYWxsKHQsIGUpO1xuICAgIH0gY2F0Y2ggKGQpIHtcbiAgICAgIHUgPSBbNiwgZF0sIGEgPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICByID0gaSA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6ICEwIH07XG4gIH1cbn1cbmZ1bmN0aW9uIG1lKHQpIHtcbiAgdmFyIG4gPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIGUgPSBuICYmIHRbbl0sIHIgPSAwO1xuICBpZiAoZSkgcmV0dXJuIGUuY2FsbCh0KTtcbiAgaWYgKHQgJiYgdHlwZW9mIHQubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdCAmJiByID49IHQubGVuZ3RoICYmICh0ID0gdm9pZCAwKSwgeyB2YWx1ZTogdCAmJiB0W3IrK10sIGRvbmU6ICF0IH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKG4gPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5mdW5jdGlvbiBEZSh0LCBuKSB7XG4gIHZhciBlID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgdFtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIWUpIHJldHVybiB0O1xuICB2YXIgciA9IGUuY2FsbCh0KSwgYSwgaSA9IFtdLCBzO1xuICB0cnkge1xuICAgIGZvciAoOyAobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEoYSA9IHIubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAoYykge1xuICAgIHMgPSB7IGVycm9yOiBjIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAoZSA9IHIucmV0dXJuKSAmJiBlLmNhbGwocik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChzKSB0aHJvdyBzLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn1cbmZ1bmN0aW9uIE9lKHQsIG4sIGUpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIHIgPSAwLCBhID0gbi5sZW5ndGgsIGk7IHIgPCBhOyByKyspXG4gICAgKGkgfHwgIShyIGluIG4pKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4sIDAsIHIpKSwgaVtyXSA9IG5bcl0pO1xuICByZXR1cm4gdC5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSk7XG59XG5mdW5jdGlvbiBwZSh0KSB7XG4gIHJldHVybiB0aGlzIGluc3RhbmNlb2YgcGUgPyAodGhpcy52ID0gdCwgdGhpcykgOiBuZXcgcGUodCk7XG59XG5mdW5jdGlvbiB5YSh0LCBuLCBlKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciByID0gZS5hcHBseSh0LCBuIHx8IFtdKSwgYSwgaSA9IFtdO1xuICByZXR1cm4gYSA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBBc3luY0l0ZXJhdG9yID09IFwiZnVuY3Rpb25cIiA/IEFzeW5jSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSksIGMoXCJuZXh0XCIpLCBjKFwidGhyb3dcIiksIGMoXCJyZXR1cm5cIiwgcyksIGFbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIGE7XG4gIGZ1bmN0aW9uIHMoeSkge1xuICAgIHJldHVybiBmdW5jdGlvbihtKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG0pLnRoZW4oeSwgZik7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBjKHksIG0pIHtcbiAgICByW3ldICYmIChhW3ldID0gZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHYsIGcpIHtcbiAgICAgICAgaS5wdXNoKFt5LCBfLCB2LCBnXSkgPiAxIHx8IGwoeSwgXyk7XG4gICAgICB9KTtcbiAgICB9LCBtICYmIChhW3ldID0gbShhW3ldKSkpO1xuICB9XG4gIGZ1bmN0aW9uIGwoeSwgbSkge1xuICAgIHRyeSB7XG4gICAgICB1KHJbeV0obSkpO1xuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgIGgoaVswXVszXSwgXyk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHUoeSkge1xuICAgIHkudmFsdWUgaW5zdGFuY2VvZiBwZSA/IFByb21pc2UucmVzb2x2ZSh5LnZhbHVlLnYpLnRoZW4oZCwgZikgOiBoKGlbMF1bMl0sIHkpO1xuICB9XG4gIGZ1bmN0aW9uIGQoeSkge1xuICAgIGwoXCJuZXh0XCIsIHkpO1xuICB9XG4gIGZ1bmN0aW9uIGYoeSkge1xuICAgIGwoXCJ0aHJvd1wiLCB5KTtcbiAgfVxuICBmdW5jdGlvbiBoKHksIG0pIHtcbiAgICB5KG0pLCBpLnNoaWZ0KCksIGkubGVuZ3RoICYmIGwoaVswXVswXSwgaVswXVsxXSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGZhKHQpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIG4gPSB0W1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgZTtcbiAgcmV0dXJuIG4gPyBuLmNhbGwodCkgOiAodCA9IHR5cGVvZiBtZSA9PSBcImZ1bmN0aW9uXCIgPyBtZSh0KSA6IHRbU3ltYm9sLml0ZXJhdG9yXSgpLCBlID0ge30sIHIoXCJuZXh0XCIpLCByKFwidGhyb3dcIiksIHIoXCJyZXR1cm5cIiksIGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIGUpO1xuICBmdW5jdGlvbiByKGkpIHtcbiAgICBlW2ldID0gdFtpXSAmJiBmdW5jdGlvbihzKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oYywgbCkge1xuICAgICAgICBzID0gdFtpXShzKSwgYShjLCBsLCBzLmRvbmUsIHMudmFsdWUpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBhKGksIHMsIGMsIGwpIHtcbiAgICBQcm9taXNlLnJlc29sdmUobCkudGhlbihmdW5jdGlvbih1KSB7XG4gICAgICBpKHsgdmFsdWU6IHUsIGRvbmU6IGMgfSk7XG4gICAgfSwgcyk7XG4gIH1cbn1cbmZ1bmN0aW9uIEYodCkge1xuICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gR2UodCkge1xuICB2YXIgbiA9IGZ1bmN0aW9uKHIpIHtcbiAgICBFcnJvci5jYWxsKHIpLCByLnN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7XG4gIH0sIGUgPSB0KG4pO1xuICByZXR1cm4gZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSksIGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gZSwgZTtcbn1cbnZhciBZZSA9IEdlKGZ1bmN0aW9uKHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICB0KHRoaXMpLCB0aGlzLm1lc3NhZ2UgPSBlID8gZS5sZW5ndGggKyBgIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XG5gICsgZS5tYXAoZnVuY3Rpb24ociwgYSkge1xuICAgICAgcmV0dXJuIGEgKyAxICsgXCIpIFwiICsgci50b1N0cmluZygpO1xuICAgIH0pLmpvaW4oYFxuICBgKSA6IFwiXCIsIHRoaXMubmFtZSA9IFwiVW5zdWJzY3JpcHRpb25FcnJvclwiLCB0aGlzLmVycm9ycyA9IGU7XG4gIH07XG59KTtcbmZ1bmN0aW9uIE5lKHQsIG4pIHtcbiAgaWYgKHQpIHtcbiAgICB2YXIgZSA9IHQuaW5kZXhPZihuKTtcbiAgICAwIDw9IGUgJiYgdC5zcGxpY2UoZSwgMSk7XG4gIH1cbn1cbnZhciBQZSA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiB0KG4pIHtcbiAgICB0aGlzLmluaXRpYWxUZWFyZG93biA9IG4sIHRoaXMuY2xvc2VkID0gITEsIHRoaXMuX3BhcmVudGFnZSA9IG51bGwsIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICB9XG4gIHJldHVybiB0LnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBuLCBlLCByLCBhLCBpO1xuICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgIHRoaXMuY2xvc2VkID0gITA7XG4gICAgICB2YXIgcyA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgIGlmIChzKVxuICAgICAgICBpZiAodGhpcy5fcGFyZW50YWdlID0gbnVsbCwgQXJyYXkuaXNBcnJheShzKSlcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgYyA9IG1lKHMpLCBsID0gYy5uZXh0KCk7ICFsLmRvbmU7IGwgPSBjLm5leHQoKSkge1xuICAgICAgICAgICAgICB2YXIgdSA9IGwudmFsdWU7XG4gICAgICAgICAgICAgIHUucmVtb3ZlKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgIG4gPSB7IGVycm9yOiBfIH07XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGwgJiYgIWwuZG9uZSAmJiAoZSA9IGMucmV0dXJuKSAmJiBlLmNhbGwoYyk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBpZiAobikgdGhyb3cgbi5lcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzLnJlbW92ZSh0aGlzKTtcbiAgICAgIHZhciBkID0gdGhpcy5pbml0aWFsVGVhcmRvd247XG4gICAgICBpZiAoRihkKSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBkKCk7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICBpID0gXyBpbnN0YW5jZW9mIFllID8gXy5lcnJvcnMgOiBbX107XG4gICAgICAgIH1cbiAgICAgIHZhciBmID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgIGlmIChmKSB7XG4gICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAodmFyIGggPSBtZShmKSwgeSA9IGgubmV4dCgpOyAheS5kb25lOyB5ID0gaC5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciBtID0geS52YWx1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGh0KG0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgICAgICBpID0gaSA/PyBbXSwgXyBpbnN0YW5jZW9mIFllID8gaSA9IE9lKE9lKFtdLCBEZShpKSksIERlKF8uZXJyb3JzKSkgOiBpLnB1c2goXyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgciA9IHsgZXJyb3I6IF8gfTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgeSAmJiAheS5kb25lICYmIChhID0gaC5yZXR1cm4pICYmIGEuY2FsbChoKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaSlcbiAgICAgICAgdGhyb3cgbmV3IFllKGkpO1xuICAgIH1cbiAgfSwgdC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24obikge1xuICAgIHZhciBlO1xuICAgIGlmIChuICYmIG4gIT09IHRoaXMpXG4gICAgICBpZiAodGhpcy5jbG9zZWQpXG4gICAgICAgIGh0KG4pO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChuIGluc3RhbmNlb2YgdCkge1xuICAgICAgICAgIGlmIChuLmNsb3NlZCB8fCBuLl9oYXNQYXJlbnQodGhpcykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgbi5fYWRkUGFyZW50KHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgICh0aGlzLl9maW5hbGl6ZXJzID0gKGUgPSB0aGlzLl9maW5hbGl6ZXJzKSAhPT0gbnVsbCAmJiBlICE9PSB2b2lkIDAgPyBlIDogW10pLnB1c2gobik7XG4gICAgICB9XG4gIH0sIHQucHJvdG90eXBlLl9oYXNQYXJlbnQgPSBmdW5jdGlvbihuKSB7XG4gICAgdmFyIGUgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgcmV0dXJuIGUgPT09IG4gfHwgQXJyYXkuaXNBcnJheShlKSAmJiBlLmluY2x1ZGVzKG4pO1xuICB9LCB0LnByb3RvdHlwZS5fYWRkUGFyZW50ID0gZnVuY3Rpb24obikge1xuICAgIHZhciBlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgIHRoaXMuX3BhcmVudGFnZSA9IEFycmF5LmlzQXJyYXkoZSkgPyAoZS5wdXNoKG4pLCBlKSA6IGUgPyBbZSwgbl0gOiBuO1xuICB9LCB0LnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50ID0gZnVuY3Rpb24obikge1xuICAgIHZhciBlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgIGUgPT09IG4gPyB0aGlzLl9wYXJlbnRhZ2UgPSBudWxsIDogQXJyYXkuaXNBcnJheShlKSAmJiBOZShlLCBuKTtcbiAgfSwgdC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24obikge1xuICAgIHZhciBlID0gdGhpcy5fZmluYWxpemVycztcbiAgICBlICYmIE5lKGUsIG4pLCBuIGluc3RhbmNlb2YgdCAmJiBuLl9yZW1vdmVQYXJlbnQodGhpcyk7XG4gIH0sIHQuRU1QVFkgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbiA9IG5ldyB0KCk7XG4gICAgcmV0dXJuIG4uY2xvc2VkID0gITAsIG47XG4gIH0oKSwgdDtcbn0oKSwgdW4gPSBQZS5FTVBUWTtcbmZ1bmN0aW9uIGRuKHQpIHtcbiAgcmV0dXJuIHQgaW5zdGFuY2VvZiBQZSB8fCB0ICYmIFwiY2xvc2VkXCIgaW4gdCAmJiBGKHQucmVtb3ZlKSAmJiBGKHQuYWRkKSAmJiBGKHQudW5zdWJzY3JpYmUpO1xufVxuZnVuY3Rpb24gaHQodCkge1xuICBGKHQpID8gdCgpIDogdC51bnN1YnNjcmliZSgpO1xufVxudmFyIHBuID0ge1xuICBvblVuaGFuZGxlZEVycm9yOiBudWxsLFxuICBvblN0b3BwZWROb3RpZmljYXRpb246IG51bGwsXG4gIFByb21pc2U6IHZvaWQgMCxcbiAgdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZzogITEsXG4gIHVzZURlcHJlY2F0ZWROZXh0Q29udGV4dDogITFcbn0sIG1uID0ge1xuICBzZXRUaW1lb3V0OiBmdW5jdGlvbih0LCBuKSB7XG4gICAgZm9yICh2YXIgZSA9IFtdLCByID0gMjsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKylcbiAgICAgIGVbciAtIDJdID0gYXJndW1lbnRzW3JdO1xuICAgIHJldHVybiBzZXRUaW1lb3V0LmFwcGx5KHZvaWQgMCwgT2UoW3QsIG5dLCBEZShlKSkpO1xuICB9LFxuICBjbGVhclRpbWVvdXQ6IGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gKGNsZWFyVGltZW91dCkodCk7XG4gIH0sXG4gIGRlbGVnYXRlOiB2b2lkIDBcbn07XG5mdW5jdGlvbiB5bih0KSB7XG4gIG1uLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgdGhyb3cgdDtcbiAgfSk7XG59XG5mdW5jdGlvbiBfdCgpIHtcbn1cbmZ1bmN0aW9uIFJlKHQpIHtcbiAgdCgpO1xufVxudmFyIGF0ID0gZnVuY3Rpb24odCkge1xuICBuZShuLCB0KTtcbiAgZnVuY3Rpb24gbihlKSB7XG4gICAgdmFyIHIgPSB0LmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gci5pc1N0b3BwZWQgPSAhMSwgZSA/IChyLmRlc3RpbmF0aW9uID0gZSwgZG4oZSkgJiYgZS5hZGQocikpIDogci5kZXN0aW5hdGlvbiA9IGdhLCByO1xuICB9XG4gIHJldHVybiBuLmNyZWF0ZSA9IGZ1bmN0aW9uKGUsIHIsIGEpIHtcbiAgICByZXR1cm4gbmV3IEJlKGUsIHIsIGEpO1xuICB9LCBuLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oZSkge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8IHRoaXMuX25leHQoZSk7XG4gIH0sIG4ucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24oZSkge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8ICh0aGlzLmlzU3RvcHBlZCA9ICEwLCB0aGlzLl9lcnJvcihlKSk7XG4gIH0sIG4ucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pc1N0b3BwZWQgfHwgKHRoaXMuaXNTdG9wcGVkID0gITAsIHRoaXMuX2NvbXBsZXRlKCkpO1xuICB9LCBuLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY2xvc2VkIHx8ICh0aGlzLmlzU3RvcHBlZCA9ICEwLCB0LnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpLCB0aGlzLmRlc3RpbmF0aW9uID0gbnVsbCk7XG4gIH0sIG4ucHJvdG90eXBlLl9uZXh0ID0gZnVuY3Rpb24oZSkge1xuICAgIHRoaXMuZGVzdGluYXRpb24ubmV4dChlKTtcbiAgfSwgbi5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24oZSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKGUpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9LCBuLnByb3RvdHlwZS5fY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9LCBuO1xufShQZSksIGhhID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ7XG5mdW5jdGlvbiBLZSh0LCBuKSB7XG4gIHJldHVybiBoYS5jYWxsKHQsIG4pO1xufVxudmFyIF9hID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHQobikge1xuICAgIHRoaXMucGFydGlhbE9ic2VydmVyID0gbjtcbiAgfVxuICByZXR1cm4gdC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgZSA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgIGlmIChlLm5leHQpXG4gICAgICB0cnkge1xuICAgICAgICBlLm5leHQobik7XG4gICAgICB9IGNhdGNoIChyKSB7XG4gICAgICAgIGtlKHIpO1xuICAgICAgfVxuICB9LCB0LnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgZSA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgIGlmIChlLmVycm9yKVxuICAgICAgdHJ5IHtcbiAgICAgICAgZS5lcnJvcihuKTtcbiAgICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgICAga2Uocik7XG4gICAgICB9XG4gICAgZWxzZVxuICAgICAga2Uobik7XG4gIH0sIHQucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIG4gPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICBpZiAobi5jb21wbGV0ZSlcbiAgICAgIHRyeSB7XG4gICAgICAgIG4uY29tcGxldGUoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAga2UoZSk7XG4gICAgICB9XG4gIH0sIHQ7XG59KCksIEJlID0gZnVuY3Rpb24odCkge1xuICBuZShuLCB0KTtcbiAgZnVuY3Rpb24gbihlLCByLCBhKSB7XG4gICAgdmFyIGkgPSB0LmNhbGwodGhpcykgfHwgdGhpcywgcztcbiAgICBpZiAoRihlKSB8fCAhZSlcbiAgICAgIHMgPSB7XG4gICAgICAgIG5leHQ6IGUgPz8gdm9pZCAwLFxuICAgICAgICBlcnJvcjogciA/PyB2b2lkIDAsXG4gICAgICAgIGNvbXBsZXRlOiBhID8/IHZvaWQgMFxuICAgICAgfTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBjO1xuICAgICAgaSAmJiBwbi51c2VEZXByZWNhdGVkTmV4dENvbnRleHQgPyAoYyA9IE9iamVjdC5jcmVhdGUoZSksIGMudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGkudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0sIHMgPSB7XG4gICAgICAgIG5leHQ6IGUubmV4dCAmJiBLZShlLm5leHQsIGMpLFxuICAgICAgICBlcnJvcjogZS5lcnJvciAmJiBLZShlLmVycm9yLCBjKSxcbiAgICAgICAgY29tcGxldGU6IGUuY29tcGxldGUgJiYgS2UoZS5jb21wbGV0ZSwgYylcbiAgICAgIH0pIDogcyA9IGU7XG4gICAgfVxuICAgIHJldHVybiBpLmRlc3RpbmF0aW9uID0gbmV3IF9hKHMpLCBpO1xuICB9XG4gIHJldHVybiBuO1xufShhdCk7XG5mdW5jdGlvbiBrZSh0KSB7XG4gIHluKHQpO1xufVxuZnVuY3Rpb24gd2EodCkge1xuICB0aHJvdyB0O1xufVxudmFyIGdhID0ge1xuICBjbG9zZWQ6ICEwLFxuICBuZXh0OiBfdCxcbiAgZXJyb3I6IHdhLFxuICBjb21wbGV0ZTogX3Rcbn0sIGl0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wub2JzZXJ2YWJsZSB8fCBcIkBAb2JzZXJ2YWJsZVwiO1xufSgpO1xuZnVuY3Rpb24gYmEodCkge1xuICByZXR1cm4gdDtcbn1cbmZ1bmN0aW9uIHZhKHQpIHtcbiAgcmV0dXJuIHQubGVuZ3RoID09PSAwID8gYmEgOiB0Lmxlbmd0aCA9PT0gMSA/IHRbMF0gOiBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uKHIsIGEpIHtcbiAgICAgIHJldHVybiBhKHIpO1xuICAgIH0sIGUpO1xuICB9O1xufVxudmFyIFggPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gdChuKSB7XG4gICAgbiAmJiAodGhpcy5fc3Vic2NyaWJlID0gbik7XG4gIH1cbiAgcmV0dXJuIHQucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbihuKSB7XG4gICAgdmFyIGUgPSBuZXcgdCgpO1xuICAgIHJldHVybiBlLnNvdXJjZSA9IHRoaXMsIGUub3BlcmF0b3IgPSBuLCBlO1xuICB9LCB0LnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbihuLCBlLCByKSB7XG4gICAgdmFyIGEgPSB0aGlzLCBpID0gQ2EobikgPyBuIDogbmV3IEJlKG4sIGUsIHIpO1xuICAgIHJldHVybiBSZShmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzID0gYSwgYyA9IHMub3BlcmF0b3IsIGwgPSBzLnNvdXJjZTtcbiAgICAgIGkuYWRkKGMgPyBjLmNhbGwoaSwgbCkgOiBsID8gYS5fc3Vic2NyaWJlKGkpIDogYS5fdHJ5U3Vic2NyaWJlKGkpKTtcbiAgICB9KSwgaTtcbiAgfSwgdC5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uKG4pIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N1YnNjcmliZShuKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBuLmVycm9yKGUpO1xuICAgIH1cbiAgfSwgdC5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKG4sIGUpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgcmV0dXJuIGUgPSB3dChlKSwgbmV3IGUoZnVuY3Rpb24oYSwgaSkge1xuICAgICAgdmFyIHMgPSBuZXcgQmUoe1xuICAgICAgICBuZXh0OiBmdW5jdGlvbihjKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG4oYyk7XG4gICAgICAgICAgfSBjYXRjaCAobCkge1xuICAgICAgICAgICAgaShsKSwgcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGksXG4gICAgICAgIGNvbXBsZXRlOiBhXG4gICAgICB9KTtcbiAgICAgIHIuc3Vic2NyaWJlKHMpO1xuICAgIH0pO1xuICB9LCB0LnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24obikge1xuICAgIHZhciBlO1xuICAgIHJldHVybiAoZSA9IHRoaXMuc291cmNlKSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnN1YnNjcmliZShuKTtcbiAgfSwgdC5wcm90b3R5cGVbaXRdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIHQucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciBuID0gW10sIGUgPSAwOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKVxuICAgICAgbltlXSA9IGFyZ3VtZW50c1tlXTtcbiAgICByZXR1cm4gdmEobikodGhpcyk7XG4gIH0sIHQucHJvdG90eXBlLnRvUHJvbWlzZSA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgZSA9IHRoaXM7XG4gICAgcmV0dXJuIG4gPSB3dChuKSwgbmV3IG4oZnVuY3Rpb24ociwgYSkge1xuICAgICAgdmFyIGk7XG4gICAgICBlLnN1YnNjcmliZShmdW5jdGlvbihzKSB7XG4gICAgICAgIHJldHVybiBpID0gcztcbiAgICAgIH0sIGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgcmV0dXJuIGEocyk7XG4gICAgICB9LCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHIoaSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSwgdC5jcmVhdGUgPSBmdW5jdGlvbihuKSB7XG4gICAgcmV0dXJuIG5ldyB0KG4pO1xuICB9LCB0O1xufSgpO1xuZnVuY3Rpb24gd3QodCkge1xuICB2YXIgbjtcbiAgcmV0dXJuIChuID0gdCA/PyBwbi5Qcm9taXNlKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDogUHJvbWlzZTtcbn1cbmZ1bmN0aW9uIEVhKHQpIHtcbiAgcmV0dXJuIHQgJiYgRih0Lm5leHQpICYmIEYodC5lcnJvcikgJiYgRih0LmNvbXBsZXRlKTtcbn1cbmZ1bmN0aW9uIENhKHQpIHtcbiAgcmV0dXJuIHQgJiYgdCBpbnN0YW5jZW9mIGF0IHx8IEVhKHQpICYmIGRuKHQpO1xufVxuZnVuY3Rpb24gUGEodCkge1xuICByZXR1cm4gRih0ID09IG51bGwgPyB2b2lkIDAgOiB0LmxpZnQpO1xufVxuZnVuY3Rpb24gU2EodCkge1xuICByZXR1cm4gZnVuY3Rpb24obikge1xuICAgIGlmIChQYShuKSlcbiAgICAgIHJldHVybiBuLmxpZnQoZnVuY3Rpb24oZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiB0KGUsIHRoaXMpO1xuICAgICAgICB9IGNhdGNoIChyKSB7XG4gICAgICAgICAgdGhpcy5lcnJvcihyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVuYWJsZSB0byBsaWZ0IHVua25vd24gT2JzZXJ2YWJsZSB0eXBlXCIpO1xuICB9O1xufVxuZnVuY3Rpb24gQWEodCwgbiwgZSwgciwgYSkge1xuICByZXR1cm4gbmV3IGthKHQsIG4sIGUsIHIsIGEpO1xufVxudmFyIGthID0gZnVuY3Rpb24odCkge1xuICBuZShuLCB0KTtcbiAgZnVuY3Rpb24gbihlLCByLCBhLCBpLCBzLCBjKSB7XG4gICAgdmFyIGwgPSB0LmNhbGwodGhpcywgZSkgfHwgdGhpcztcbiAgICByZXR1cm4gbC5vbkZpbmFsaXplID0gcywgbC5zaG91bGRVbnN1YnNjcmliZSA9IGMsIGwuX25leHQgPSByID8gZnVuY3Rpb24odSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcih1KTtcbiAgICAgIH0gY2F0Y2ggKGQpIHtcbiAgICAgICAgZS5lcnJvcihkKTtcbiAgICAgIH1cbiAgICB9IDogdC5wcm90b3R5cGUuX25leHQsIGwuX2Vycm9yID0gaSA/IGZ1bmN0aW9uKHUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGkodSk7XG4gICAgICB9IGNhdGNoIChkKSB7XG4gICAgICAgIGUuZXJyb3IoZCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSA6IHQucHJvdG90eXBlLl9lcnJvciwgbC5fY29tcGxldGUgPSBhID8gZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhKCk7XG4gICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgIGUuZXJyb3IodSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSA6IHQucHJvdG90eXBlLl9jb21wbGV0ZSwgbDtcbiAgfVxuICByZXR1cm4gbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgZTtcbiAgICBpZiAoIXRoaXMuc2hvdWxkVW5zdWJzY3JpYmUgfHwgdGhpcy5zaG91bGRVbnN1YnNjcmliZSgpKSB7XG4gICAgICB2YXIgciA9IHRoaXMuY2xvc2VkO1xuICAgICAgdC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSwgIXIgJiYgKChlID0gdGhpcy5vbkZpbmFsaXplKSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgfHwgZS5jYWxsKHRoaXMpKTtcbiAgICB9XG4gIH0sIG47XG59KGF0KSwgSWEgPSBHZShmdW5jdGlvbih0KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0KHRoaXMpLCB0aGlzLm5hbWUgPSBcIk9iamVjdFVuc3Vic2NyaWJlZEVycm9yXCIsIHRoaXMubWVzc2FnZSA9IFwib2JqZWN0IHVuc3Vic2NyaWJlZFwiO1xuICB9O1xufSksIGZuID0gZnVuY3Rpb24odCkge1xuICBuZShuLCB0KTtcbiAgZnVuY3Rpb24gbigpIHtcbiAgICB2YXIgZSA9IHQuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgIHJldHVybiBlLmNsb3NlZCA9ICExLCBlLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsLCBlLm9ic2VydmVycyA9IFtdLCBlLmlzU3RvcHBlZCA9ICExLCBlLmhhc0Vycm9yID0gITEsIGUudGhyb3duRXJyb3IgPSBudWxsLCBlO1xuICB9XG4gIHJldHVybiBuLnByb3RvdHlwZS5saWZ0ID0gZnVuY3Rpb24oZSkge1xuICAgIHZhciByID0gbmV3IGd0KHRoaXMsIHRoaXMpO1xuICAgIHJldHVybiByLm9wZXJhdG9yID0gZSwgcjtcbiAgfSwgbi5wcm90b3R5cGUuX3Rocm93SWZDbG9zZWQgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpXG4gICAgICB0aHJvdyBuZXcgSWEoKTtcbiAgfSwgbi5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgUmUoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYSwgaTtcbiAgICAgIGlmIChyLl90aHJvd0lmQ2xvc2VkKCksICFyLmlzU3RvcHBlZCkge1xuICAgICAgICByLmN1cnJlbnRPYnNlcnZlcnMgfHwgKHIuY3VycmVudE9ic2VydmVycyA9IEFycmF5LmZyb20oci5vYnNlcnZlcnMpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKHZhciBzID0gbWUoci5jdXJyZW50T2JzZXJ2ZXJzKSwgYyA9IHMubmV4dCgpOyAhYy5kb25lOyBjID0gcy5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciBsID0gYy52YWx1ZTtcbiAgICAgICAgICAgIGwubmV4dChlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKHUpIHtcbiAgICAgICAgICBhID0geyBlcnJvcjogdSB9O1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjICYmICFjLmRvbmUgJiYgKGkgPSBzLnJldHVybikgJiYgaS5jYWxsKHMpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgbi5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIFJlKGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHIuX3Rocm93SWZDbG9zZWQoKSwgIXIuaXNTdG9wcGVkKSB7XG4gICAgICAgIHIuaGFzRXJyb3IgPSByLmlzU3RvcHBlZCA9ICEwLCByLnRocm93bkVycm9yID0gZTtcbiAgICAgICAgZm9yICh2YXIgYSA9IHIub2JzZXJ2ZXJzOyBhLmxlbmd0aDsgKVxuICAgICAgICAgIGEuc2hpZnQoKS5lcnJvcihlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgbi5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgZSA9IHRoaXM7XG4gICAgUmUoZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoZS5fdGhyb3dJZkNsb3NlZCgpLCAhZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgZS5pc1N0b3BwZWQgPSAhMDtcbiAgICAgICAgZm9yICh2YXIgciA9IGUub2JzZXJ2ZXJzOyByLmxlbmd0aDsgKVxuICAgICAgICAgIHIuc2hpZnQoKS5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBuLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaXNTdG9wcGVkID0gdGhpcy5jbG9zZWQgPSAhMCwgdGhpcy5vYnNlcnZlcnMgPSB0aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICB9LCBPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsIFwib2JzZXJ2ZWRcIiwge1xuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZTtcbiAgICAgIHJldHVybiAoKGUgPSB0aGlzLm9ic2VydmVycykgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5sZW5ndGgpID4gMDtcbiAgICB9LFxuICAgIGVudW1lcmFibGU6ICExLFxuICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgfSksIG4ucHJvdG90eXBlLl90cnlTdWJzY3JpYmUgPSBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Rocm93SWZDbG9zZWQoKSwgdC5wcm90b3R5cGUuX3RyeVN1YnNjcmliZS5jYWxsKHRoaXMsIGUpO1xuICB9LCBuLnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksIHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMoZSksIHRoaXMuX2lubmVyU3Vic2NyaWJlKGUpO1xuICB9LCBuLnByb3RvdHlwZS5faW5uZXJTdWJzY3JpYmUgPSBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHIgPSB0aGlzLCBhID0gdGhpcywgaSA9IGEuaGFzRXJyb3IsIHMgPSBhLmlzU3RvcHBlZCwgYyA9IGEub2JzZXJ2ZXJzO1xuICAgIHJldHVybiBpIHx8IHMgPyB1biA6ICh0aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsLCBjLnB1c2goZSksIG5ldyBQZShmdW5jdGlvbigpIHtcbiAgICAgIHIuY3VycmVudE9ic2VydmVycyA9IG51bGwsIE5lKGMsIGUpO1xuICAgIH0pKTtcbiAgfSwgbi5wcm90b3R5cGUuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMgPSBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHIgPSB0aGlzLCBhID0gci5oYXNFcnJvciwgaSA9IHIudGhyb3duRXJyb3IsIHMgPSByLmlzU3RvcHBlZDtcbiAgICBhID8gZS5lcnJvcihpKSA6IHMgJiYgZS5jb21wbGV0ZSgpO1xuICB9LCBuLnByb3RvdHlwZS5hc09ic2VydmFibGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgZSA9IG5ldyBYKCk7XG4gICAgcmV0dXJuIGUuc291cmNlID0gdGhpcywgZTtcbiAgfSwgbi5jcmVhdGUgPSBmdW5jdGlvbihlLCByKSB7XG4gICAgcmV0dXJuIG5ldyBndChlLCByKTtcbiAgfSwgbjtcbn0oWCksIGd0ID0gZnVuY3Rpb24odCkge1xuICBuZShuLCB0KTtcbiAgZnVuY3Rpb24gbihlLCByKSB7XG4gICAgdmFyIGEgPSB0LmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gYS5kZXN0aW5hdGlvbiA9IGUsIGEuc291cmNlID0gciwgYTtcbiAgfVxuICByZXR1cm4gbi5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgciwgYTtcbiAgICAoYSA9IChyID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogci5uZXh0KSA9PT0gbnVsbCB8fCBhID09PSB2b2lkIDAgfHwgYS5jYWxsKHIsIGUpO1xuICB9LCBuLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgciwgYTtcbiAgICAoYSA9IChyID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogci5lcnJvcikgPT09IG51bGwgfHwgYSA9PT0gdm9pZCAwIHx8IGEuY2FsbChyLCBlKTtcbiAgfSwgbi5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgZSwgcjtcbiAgICAociA9IChlID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5jb21wbGV0ZSkgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwIHx8IHIuY2FsbChlKTtcbiAgfSwgbi5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgciwgYTtcbiAgICByZXR1cm4gKGEgPSAociA9IHRoaXMuc291cmNlKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLnN1YnNjcmliZShlKSkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IHVuO1xuICB9LCBuO1xufShmbiksIFJhID0ge1xuICBub3c6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBEYXRlLm5vdygpO1xuICB9LFxuICBkZWxlZ2F0ZTogdm9pZCAwXG59LCBGYSA9IGZ1bmN0aW9uKHQpIHtcbiAgbmUobiwgdCk7XG4gIGZ1bmN0aW9uIG4oZSwgcikge1xuICAgIHJldHVybiB0LmNhbGwodGhpcykgfHwgdGhpcztcbiAgfVxuICByZXR1cm4gbi5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbihlLCByKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIG47XG59KFBlKSwgYnQgPSB7XG4gIHNldEludGVydmFsOiBmdW5jdGlvbih0LCBuKSB7XG4gICAgZm9yICh2YXIgZSA9IFtdLCByID0gMjsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKylcbiAgICAgIGVbciAtIDJdID0gYXJndW1lbnRzW3JdO1xuICAgIHJldHVybiBzZXRJbnRlcnZhbC5hcHBseSh2b2lkIDAsIE9lKFt0LCBuXSwgRGUoZSkpKTtcbiAgfSxcbiAgY2xlYXJJbnRlcnZhbDogZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBjbGVhckludGVydmFsKHQpO1xuICB9LFxuICBkZWxlZ2F0ZTogdm9pZCAwXG59LCBNYSA9IGZ1bmN0aW9uKHQpIHtcbiAgbmUobiwgdCk7XG4gIGZ1bmN0aW9uIG4oZSwgcikge1xuICAgIHZhciBhID0gdC5jYWxsKHRoaXMsIGUsIHIpIHx8IHRoaXM7XG4gICAgcmV0dXJuIGEuc2NoZWR1bGVyID0gZSwgYS53b3JrID0gciwgYS5wZW5kaW5nID0gITEsIGE7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24oZSwgcikge1xuICAgIHZhciBhO1xuICAgIGlmIChyID09PSB2b2lkIDAgJiYgKHIgPSAwKSwgdGhpcy5jbG9zZWQpXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB0aGlzLnN0YXRlID0gZTtcbiAgICB2YXIgaSA9IHRoaXMuaWQsIHMgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICByZXR1cm4gaSAhPSBudWxsICYmICh0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZChzLCBpLCByKSksIHRoaXMucGVuZGluZyA9ICEwLCB0aGlzLmRlbGF5ID0gciwgdGhpcy5pZCA9IChhID0gdGhpcy5pZCkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IHRoaXMucmVxdWVzdEFzeW5jSWQocywgdGhpcy5pZCwgciksIHRoaXM7XG4gIH0sIG4ucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkID0gZnVuY3Rpb24oZSwgciwgYSkge1xuICAgIHJldHVybiBhID09PSB2b2lkIDAgJiYgKGEgPSAwKSwgYnQuc2V0SW50ZXJ2YWwoZS5mbHVzaC5iaW5kKGUsIHRoaXMpLCBhKTtcbiAgfSwgbi5wcm90b3R5cGUucmVjeWNsZUFzeW5jSWQgPSBmdW5jdGlvbihlLCByLCBhKSB7XG4gICAgaWYgKGEgPT09IHZvaWQgMCAmJiAoYSA9IDApLCBhICE9IG51bGwgJiYgdGhpcy5kZWxheSA9PT0gYSAmJiB0aGlzLnBlbmRpbmcgPT09ICExKVxuICAgICAgcmV0dXJuIHI7XG4gICAgciAhPSBudWxsICYmIGJ0LmNsZWFySW50ZXJ2YWwocik7XG4gIH0sIG4ucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbihlLCByKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKVxuICAgICAgcmV0dXJuIG5ldyBFcnJvcihcImV4ZWN1dGluZyBhIGNhbmNlbGxlZCBhY3Rpb25cIik7XG4gICAgdGhpcy5wZW5kaW5nID0gITE7XG4gICAgdmFyIGEgPSB0aGlzLl9leGVjdXRlKGUsIHIpO1xuICAgIGlmIChhKVxuICAgICAgcmV0dXJuIGE7XG4gICAgdGhpcy5wZW5kaW5nID09PSAhMSAmJiB0aGlzLmlkICE9IG51bGwgJiYgKHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHRoaXMuc2NoZWR1bGVyLCB0aGlzLmlkLCBudWxsKSk7XG4gIH0sIG4ucHJvdG90eXBlLl9leGVjdXRlID0gZnVuY3Rpb24oZSwgcikge1xuICAgIHZhciBhID0gITEsIGk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMud29yayhlKTtcbiAgICB9IGNhdGNoIChzKSB7XG4gICAgICBhID0gITAsIGkgPSBzIHx8IG5ldyBFcnJvcihcIlNjaGVkdWxlZCBhY3Rpb24gdGhyZXcgZmFsc3kgZXJyb3JcIik7XG4gICAgfVxuICAgIGlmIChhKVxuICAgICAgcmV0dXJuIHRoaXMudW5zdWJzY3JpYmUoKSwgaTtcbiAgfSwgbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICB2YXIgZSA9IHRoaXMsIHIgPSBlLmlkLCBhID0gZS5zY2hlZHVsZXIsIGkgPSBhLmFjdGlvbnM7XG4gICAgICB0aGlzLndvcmsgPSB0aGlzLnN0YXRlID0gdGhpcy5zY2hlZHVsZXIgPSBudWxsLCB0aGlzLnBlbmRpbmcgPSAhMSwgTmUoaSwgdGhpcyksIHIgIT0gbnVsbCAmJiAodGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQoYSwgciwgbnVsbCkpLCB0aGlzLmRlbGF5ID0gbnVsbCwgdC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICB9XG4gIH0sIG47XG59KEZhKSwgdnQgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gdChuLCBlKSB7XG4gICAgZSA9PT0gdm9pZCAwICYmIChlID0gdC5ub3cpLCB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSBuLCB0aGlzLm5vdyA9IGU7XG4gIH1cbiAgcmV0dXJuIHQucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24obiwgZSwgcikge1xuICAgIHJldHVybiBlID09PSB2b2lkIDAgJiYgKGUgPSAwKSwgbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLCBuKS5zY2hlZHVsZShyLCBlKTtcbiAgfSwgdC5ub3cgPSBSYS5ub3csIHQ7XG59KCksIERhID0gZnVuY3Rpb24odCkge1xuICBuZShuLCB0KTtcbiAgZnVuY3Rpb24gbihlLCByKSB7XG4gICAgciA9PT0gdm9pZCAwICYmIChyID0gdnQubm93KTtcbiAgICB2YXIgYSA9IHQuY2FsbCh0aGlzLCBlLCByKSB8fCB0aGlzO1xuICAgIHJldHVybiBhLmFjdGlvbnMgPSBbXSwgYS5fYWN0aXZlID0gITEsIGE7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24oZSkge1xuICAgIHZhciByID0gdGhpcy5hY3Rpb25zO1xuICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgIHIucHVzaChlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGE7XG4gICAgdGhpcy5fYWN0aXZlID0gITA7XG4gICAgZG9cbiAgICAgIGlmIChhID0gZS5leGVjdXRlKGUuc3RhdGUsIGUuZGVsYXkpKVxuICAgICAgICBicmVhaztcbiAgICB3aGlsZSAoZSA9IHIuc2hpZnQoKSk7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZSA9ICExLCBhKSB7XG4gICAgICBmb3IgKDsgZSA9IHIuc2hpZnQoKTsgKVxuICAgICAgICBlLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aHJvdyBhO1xuICAgIH1cbiAgfSwgbjtcbn0odnQpLCBPYSA9IG5ldyBEYShNYSksIE5hID0gZnVuY3Rpb24odCkge1xuICByZXR1cm4gdCAmJiB0eXBlb2YgdC5sZW5ndGggPT0gXCJudW1iZXJcIiAmJiB0eXBlb2YgdCAhPSBcImZ1bmN0aW9uXCI7XG59O1xuZnVuY3Rpb24gVGEodCkge1xuICByZXR1cm4gRih0ID09IG51bGwgPyB2b2lkIDAgOiB0LnRoZW4pO1xufVxuZnVuY3Rpb24gTGEodCkge1xuICByZXR1cm4gRih0W2l0XSk7XG59XG5mdW5jdGlvbiBVYSh0KSB7XG4gIHJldHVybiBTeW1ib2wuYXN5bmNJdGVyYXRvciAmJiBGKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKTtcbn1cbmZ1bmN0aW9uIGphKHQpIHtcbiAgcmV0dXJuIG5ldyBUeXBlRXJyb3IoXCJZb3UgcHJvdmlkZWQgXCIgKyAodCAhPT0gbnVsbCAmJiB0eXBlb2YgdCA9PSBcIm9iamVjdFwiID8gXCJhbiBpbnZhbGlkIG9iamVjdFwiIDogXCInXCIgKyB0ICsgXCInXCIpICsgXCIgd2hlcmUgYSBzdHJlYW0gd2FzIGV4cGVjdGVkLiBZb3UgY2FuIHByb3ZpZGUgYW4gT2JzZXJ2YWJsZSwgUHJvbWlzZSwgUmVhZGFibGVTdHJlYW0sIEFycmF5LCBBc3luY0l0ZXJhYmxlLCBvciBJdGVyYWJsZS5cIik7XG59XG5mdW5jdGlvbiB4YSgpIHtcbiAgcmV0dXJuIHR5cGVvZiBTeW1ib2wgIT0gXCJmdW5jdGlvblwiIHx8ICFTeW1ib2wuaXRlcmF0b3IgPyBcIkBAaXRlcmF0b3JcIiA6IFN5bWJvbC5pdGVyYXRvcjtcbn1cbnZhciAkYSA9IHhhKCk7XG5mdW5jdGlvbiB6YSh0KSB7XG4gIHJldHVybiBGKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHRbJGFdKTtcbn1cbmZ1bmN0aW9uIEdhKHQpIHtcbiAgcmV0dXJuIHlhKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGUsIHIsIGEsIGk7XG4gICAgcmV0dXJuIGxuKHRoaXMsIGZ1bmN0aW9uKHMpIHtcbiAgICAgIHN3aXRjaCAocy5sYWJlbCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgZSA9IHQuZ2V0UmVhZGVyKCksIHMubGFiZWwgPSAxO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcy50cnlzLnB1c2goWzEsICwgOSwgMTBdKSwgcy5sYWJlbCA9IDI7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICByZXR1cm4gWzQsIHBlKGUucmVhZCgpKV07XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gciA9IHMuc2VudCgpLCBhID0gci52YWx1ZSwgaSA9IHIuZG9uZSwgaSA/IFs0LCBwZSh2b2lkIDApXSA6IFszLCA1XTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBbMiwgcy5zZW50KCldO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgcmV0dXJuIFs0LCBwZShhKV07XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICByZXR1cm4gWzQsIHMuc2VudCgpXTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHJldHVybiBzLnNlbnQoKSwgWzMsIDJdO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMF07XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICByZXR1cm4gZS5yZWxlYXNlTG9jaygpLCBbN107XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBWYSh0KSB7XG4gIHJldHVybiBGKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuZ2V0UmVhZGVyKTtcbn1cbmZ1bmN0aW9uIHFhKHQpIHtcbiAgaWYgKHQgaW5zdGFuY2VvZiBYKVxuICAgIHJldHVybiB0O1xuICBpZiAodCAhPSBudWxsKSB7XG4gICAgaWYgKExhKHQpKVxuICAgICAgcmV0dXJuIFlhKHQpO1xuICAgIGlmIChOYSh0KSlcbiAgICAgIHJldHVybiBLYSh0KTtcbiAgICBpZiAoVGEodCkpXG4gICAgICByZXR1cm4gV2EodCk7XG4gICAgaWYgKFVhKHQpKVxuICAgICAgcmV0dXJuIGhuKHQpO1xuICAgIGlmICh6YSh0KSlcbiAgICAgIHJldHVybiBKYSh0KTtcbiAgICBpZiAoVmEodCkpXG4gICAgICByZXR1cm4gSGEodCk7XG4gIH1cbiAgdGhyb3cgamEodCk7XG59XG5mdW5jdGlvbiBZYSh0KSB7XG4gIHJldHVybiBuZXcgWChmdW5jdGlvbihuKSB7XG4gICAgdmFyIGUgPSB0W2l0XSgpO1xuICAgIGlmIChGKGUuc3Vic2NyaWJlKSlcbiAgICAgIHJldHVybiBlLnN1YnNjcmliZShuKTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJvdmlkZWQgb2JqZWN0IGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgU3ltYm9sLm9ic2VydmFibGVcIik7XG4gIH0pO1xufVxuZnVuY3Rpb24gS2EodCkge1xuICByZXR1cm4gbmV3IFgoZnVuY3Rpb24obikge1xuICAgIGZvciAodmFyIGUgPSAwOyBlIDwgdC5sZW5ndGggJiYgIW4uY2xvc2VkOyBlKyspXG4gICAgICBuLm5leHQodFtlXSk7XG4gICAgbi5jb21wbGV0ZSgpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFdhKHQpIHtcbiAgcmV0dXJuIG5ldyBYKGZ1bmN0aW9uKG4pIHtcbiAgICB0LnRoZW4oZnVuY3Rpb24oZSkge1xuICAgICAgbi5jbG9zZWQgfHwgKG4ubmV4dChlKSwgbi5jb21wbGV0ZSgpKTtcbiAgICB9LCBmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4gbi5lcnJvcihlKTtcbiAgICB9KS50aGVuKG51bGwsIHluKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBKYSh0KSB7XG4gIHJldHVybiBuZXcgWChmdW5jdGlvbihuKSB7XG4gICAgdmFyIGUsIHI7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIGEgPSBtZSh0KSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgICAgdmFyIHMgPSBpLnZhbHVlO1xuICAgICAgICBpZiAobi5uZXh0KHMpLCBuLmNsb3NlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBjYXRjaCAoYykge1xuICAgICAgZSA9IHsgZXJyb3I6IGMgfTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaSAmJiAhaS5kb25lICYmIChyID0gYS5yZXR1cm4pICYmIHIuY2FsbChhKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChlKSB0aHJvdyBlLmVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgICBuLmNvbXBsZXRlKCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gaG4odCkge1xuICByZXR1cm4gbmV3IFgoZnVuY3Rpb24obikge1xuICAgIFphKHQsIG4pLmNhdGNoKGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiBuLmVycm9yKGUpO1xuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIEhhKHQpIHtcbiAgcmV0dXJuIGhuKEdhKHQpKTtcbn1cbmZ1bmN0aW9uIFphKHQsIG4pIHtcbiAgdmFyIGUsIHIsIGEsIGk7XG4gIHJldHVybiBtYSh0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHMsIGM7XG4gICAgcmV0dXJuIGxuKHRoaXMsIGZ1bmN0aW9uKGwpIHtcbiAgICAgIHN3aXRjaCAobC5sYWJlbCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgbC50cnlzLnB1c2goWzAsIDUsIDYsIDExXSksIGUgPSBmYSh0KSwgbC5sYWJlbCA9IDE7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICByZXR1cm4gWzQsIGUubmV4dCgpXTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmIChyID0gbC5zZW50KCksICEhci5kb25lKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgIGlmIChzID0gci52YWx1ZSwgbi5uZXh0KHMpLCBuLmNsb3NlZClcbiAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgbC5sYWJlbCA9IDM7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gWzMsIDFdO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMV07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByZXR1cm4gYyA9IGwuc2VudCgpLCBhID0geyBlcnJvcjogYyB9LCBbMywgMTFdO1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgcmV0dXJuIGwudHJ5cy5wdXNoKFs2LCAsIDksIDEwXSksIHIgJiYgIXIuZG9uZSAmJiAoaSA9IGUucmV0dXJuKSA/IFs0LCBpLmNhbGwoZSldIDogWzMsIDhdO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgbC5zZW50KCksIGwubGFiZWwgPSA4O1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMF07XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIHJldHVybiBbN107XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgcmV0dXJuIG4uY29tcGxldGUoKSwgWzJdO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIEJhKHQsIG4sIGUsIHIsIGEpIHtcbiAgciA9PT0gdm9pZCAwICYmIChyID0gMCksIGEgPT09IHZvaWQgMCAmJiAoYSA9ICExKTtcbiAgdmFyIGkgPSBuLnNjaGVkdWxlKGZ1bmN0aW9uKCkge1xuICAgIGUoKSwgYSA/IHQuYWRkKHRoaXMuc2NoZWR1bGUobnVsbCwgcikpIDogdGhpcy51bnN1YnNjcmliZSgpO1xuICB9LCByKTtcbiAgaWYgKHQuYWRkKGkpLCAhYSlcbiAgICByZXR1cm4gaTtcbn1cbmZ1bmN0aW9uIFFhKHQsIG4pIHtcbiAgdmFyIGUgPSBGKHQpID8gdCA6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0O1xuICB9LCByID0gZnVuY3Rpb24oYSkge1xuICAgIHJldHVybiBhLmVycm9yKGUoKSk7XG4gIH07XG4gIHJldHVybiBuZXcgWChyKTtcbn1cbnZhciBYYSA9IEdlKGZ1bmN0aW9uKHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHQodGhpcyksIHRoaXMubmFtZSA9IFwiRW1wdHlFcnJvclwiLCB0aGlzLm1lc3NhZ2UgPSBcIm5vIGVsZW1lbnRzIGluIHNlcXVlbmNlXCI7XG4gIH07XG59KTtcbmZ1bmN0aW9uIGVpKHQsIG4pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsIHIpIHtcbiAgICB2YXIgYSA9ICExLCBpO1xuICAgIHQuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgaSA9IHMsIGEgPSAhMDtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogcixcbiAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgYSA/IGUoaSkgOiByKG5ldyBYYSgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiB0aSh0KSB7XG4gIHJldHVybiB0IGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4odCk7XG59XG52YXIgbmkgPSBHZShmdW5jdGlvbih0KSB7XG4gIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgZSA9PT0gdm9pZCAwICYmIChlID0gbnVsbCksIHQodGhpcyksIHRoaXMubWVzc2FnZSA9IFwiVGltZW91dCBoYXMgb2NjdXJyZWRcIiwgdGhpcy5uYW1lID0gXCJUaW1lb3V0RXJyb3JcIiwgdGhpcy5pbmZvID0gZTtcbiAgfTtcbn0pO1xuZnVuY3Rpb24gcmkodCwgbikge1xuICB2YXIgZSA9IHRpKHQpID8geyBmaXJzdDogdCB9IDogdHlwZW9mIHQgPT0gXCJudW1iZXJcIiA/IHsgZWFjaDogdCB9IDogdCwgciA9IGUuZmlyc3QsIGEgPSBlLmVhY2gsIGkgPSBlLndpdGgsIHMgPSBpID09PSB2b2lkIDAgPyBvaSA6IGksIGMgPSBlLnNjaGVkdWxlciwgbCA9IGMgPT09IHZvaWQgMCA/IE9hIDogYywgdSA9IGUubWV0YSwgZCA9IHUgPT09IHZvaWQgMCA/IG51bGwgOiB1O1xuICBpZiAociA9PSBudWxsICYmIGEgPT0gbnVsbClcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTm8gdGltZW91dCBwcm92aWRlZC5cIik7XG4gIHJldHVybiBTYShmdW5jdGlvbihmLCBoKSB7XG4gICAgdmFyIHksIG0sIF8gPSBudWxsLCB2ID0gMCwgZyA9IGZ1bmN0aW9uKGIpIHtcbiAgICAgIG0gPSBCYShoLCBsLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB5LnVuc3Vic2NyaWJlKCksIHFhKHMoe1xuICAgICAgICAgICAgbWV0YTogZCxcbiAgICAgICAgICAgIGxhc3RWYWx1ZTogXyxcbiAgICAgICAgICAgIHNlZW46IHZcbiAgICAgICAgICB9KSkuc3Vic2NyaWJlKGgpO1xuICAgICAgICB9IGNhdGNoIChFKSB7XG4gICAgICAgICAgaC5lcnJvcihFKTtcbiAgICAgICAgfVxuICAgICAgfSwgYik7XG4gICAgfTtcbiAgICB5ID0gZi5zdWJzY3JpYmUoQWEoaCwgZnVuY3Rpb24oYikge1xuICAgICAgbSA9PSBudWxsIHx8IG0udW5zdWJzY3JpYmUoKSwgdisrLCBoLm5leHQoXyA9IGIpLCBhID4gMCAmJiBnKGEpO1xuICAgIH0sIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbigpIHtcbiAgICAgIG0gIT0gbnVsbCAmJiBtLmNsb3NlZCB8fCBtID09IG51bGwgfHwgbS51bnN1YnNjcmliZSgpLCBfID0gbnVsbDtcbiAgICB9KSksICF2ICYmIGcociAhPSBudWxsID8gdHlwZW9mIHIgPT0gXCJudW1iZXJcIiA/IHIgOiArciAtIGwubm93KCkgOiBhKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBvaSh0KSB7XG4gIHRocm93IG5ldyBuaSh0KTtcbn1cbmNsYXNzIEZlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zZXQgPSAobikgPT4ge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTG9hZGVkT25jZSBpcyBhbHJlYWR5IGluIHN1Y2Nlc3Mgc3RhdGVcIik7XG4gICAgICB0aGlzLl9jdXJyZW50ID0geyBzdGF0dXM6IFwic3VjY2Vzc1wiLCBpc1N1Y2Nlc3M6ICEwLCBsb2FkZWRWYWx1ZTogbiB9LCB0aGlzLl9zdWJqZWN0Lm5leHQobiksIHRoaXMuX3N1YmplY3QuY29tcGxldGUoKTtcbiAgICB9LCB0aGlzLnRocm93ID0gKG4sIGUpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcImVycm9yXCIsIGlzU3VjY2VzczogITEsIGVycm9yOiBuLCBlcnJNc2c6IGUgfSwgdGhpcy5fc3ViamVjdC5lcnJvcihuKTtcbiAgICB9LCB0aGlzLmdldFZhbHVlSWZMb2FkZWRFbHNlID0gKG4pID0+IHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIiA/IHRoaXMuX2N1cnJlbnQubG9hZGVkVmFsdWUgOiBuLCB0aGlzLnN1YnNjcmliZSA9IChuKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgIG4odGhpcy5fY3VycmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcImVycm9yXCIgJiYgbih0aGlzLl9jdXJyZW50KTtcbiAgICAgIGNvbnN0IGUgPSB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwic3VjY2Vzc1wiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZSAobmV4dCk6IHBsZWFzZSBtYWtlIHN1cmUgdG8gdXBkYXRlIF9jdXJyZW50IGJlZm9yZSB0aGUgc3ViamVjdFwiKTtcbiAgICAgICAgICBuKHRoaXMuX2N1cnJlbnQpLCBlLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcImVycm9yXCIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0YXRlIChlcnJvcik6IHBsZWFzZSBtYWtlIHN1cmUgdG8gdXBkYXRlIF9jdXJyZW50IGJlZm9yZSB0aGUgc3ViamVjdFwiKTtcbiAgICAgICAgICBuKHRoaXMuX2N1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCB0aGlzLndhaXRGb3JMb2FkID0gKG4pID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fY3VycmVudC5sb2FkZWRWYWx1ZSk7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwiZXJyb3JcIikgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoaXMuX2N1cnJlbnQuZXJyb3IpO1xuICAgICAgdGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwiaW5pdGlhbFwiICYmIFVlKHRoaXMuX2N1cnJlbnQpO1xuICAgICAgY29uc3QgZSA9IHtcbiAgICAgICAgZmlyc3Q6IG4udGltZW91dFNlYyAqIDFlMyxcbiAgICAgICAgd2l0aDogKCkgPT4gUWEoKCkgPT4gbmV3IEVycm9yKG4udGltZW91dEVyck1zZykpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGVpKHRoaXMuX3N1YmplY3QucGlwZShyaShlKSkpO1xuICAgIH0sIHRoaXMuX2N1cnJlbnQgPSB7IHN0YXR1czogXCJpbml0aWFsXCIsIGlzU3VjY2VzczogITEgfSwgdGhpcy5fc3ViamVjdCA9IG5ldyBmbigpO1xuICB9XG4gIGdldCBjdXJyZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50O1xuICB9XG59XG5jb25zdCB7IGxvZ19fOiBhaSwgZXJyX186IGlpIH0gPSBTKFwiaW5pdC1mbG93c1wiKSwgYWUgPSAodCwgbikgPT4ge1xuICBjb25zdCBlID0gbmV3IEZlKCk7XG4gIHJldHVybiB7XG4gICAgcHVibGlzaGVyOiBlLFxuICAgIGluaXRpYWxpemU6IGFzeW5jIChyKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZS5jdXJyZW50LmlzU3VjY2VzcylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGZsb3cgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC5cIik7XG4gICAgICAgIGNvbnN0IGEgPSBhd2FpdCBuKHIpO1xuICAgICAgICBhaShg4pyUICR7dH0gZmxvdyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuIFJlc3VsdDpgLCBhKSwgZS5zZXQoYSk7XG4gICAgICB9IGNhdGNoIChhKSB7XG4gICAgICAgIGlpKGDwnZmtICR7dH0gZmxvdyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIEVycm9yOmAsIEgoYSksIFwiRGV0YWlsczpcIiwgYSksIGUudGhyb3coYSwgSChhKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufSwgc2kgPSBhc3luYyAodCwgbiwgZSkgPT4ge1xuICBhd2FpdCBQcm9taXNlLmFsbChPYmplY3QudmFsdWVzKHQpLm1hcCgocikgPT4gci5pbml0aWFsaXplKHsgY29udGV4dDogbiwgZm9ybUNhbGxiYWNrczogZSB9KSkpO1xufSwgY2kgPSAoKSA9PiAoe1xuICAvLyDwn5KhIEFkZCBuZXcgaW5pdCBmbG93cyBoZXJlXG4gIC8vIFN0cmlwZSBQUlxuICBzdHJpcGVQUjogYWUoXCJTdHJpcGUgUFJcIiwgay5zdHJpcGVQUi5pbml0KSxcbiAgLy8gU3RyaXBlIExpbmtcbiAgc3RyaXBlTGluazogYWUoXCJTdHJpcGUgTGlua1wiLCBrLnN0cmlwZUxpbmsuaW5pdCksXG4gIC8vIEFpcndhbGxleCBHb29nbGVQYXlcbiAgYWlyd2FsbGV4R29vZ2xlUGF5OiBhZShcIkFpcndhbGxleCBHb29nbGVQYXlcIiwgay5haXJ3YWxsZXhHb29nbGVQYXkuaW5pdCksXG4gIC8vIEFpcndhbGxleCBBcHBsZVBheVxuICBhaXJ3YWxsZXhBcHBsZVBheTogYWUoXCJBaXJ3YWxsZXggQXBwbGVQYXlcIiwgay5haXJ3YWxsZXhBcHBsZVBheS5pbml0KSxcbiAgLy8gTG9vcFxuICBsb29wOiBhZShcIkxvb3BcIiwgay5sb29wQ3J5cHRvLmluaXQpLFxuICAvLyBBdXRobmV0IEdvb2dsZVBheVxuICBhdXRob3JpemVOZXRHb29nbGVQYXk6IGFlKFwiQXV0aG5ldCBHb29nbGVQYXlcIiwgay5hdXRob3JpemVOZXRHb29nbGVQYXkuaW5pdCksXG4gIC8vIEF1dGhuZXQgQXBwbGVQYXlcbiAgYXV0aG9yaXplTmV0QXBwbGVQYXk6IGFlKFwiQXV0aG5ldCBBcHBsZVBheVwiLCBrLmF1dGhvcml6ZU5ldEFwcGxlUGF5LmluaXQpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG59KSwgeyBlcnJfXzogbGkgfSA9IFMoXCJmb3JtLWNhbGxiYWNrc1wiKSwgJCA9IHokMS5mdW5jdGlvbigpLm9wdGlvbmFsKCksIEV0ID0geiQxLm9iamVjdCh7XG4gIG9uRm9jdXM6ICQsXG4gIG9uQmx1cjogJCxcbiAgb25DaGFuZ2U6ICQsXG4gIG9uTG9hZDogJCxcbiAgb25Mb2FkRXJyb3I6ICQsXG4gIG9uVmFsaWRhdGlvbkVycm9yOiAkLFxuICBvbkNoZWNrb3V0U3RhcnRlZDogJCxcbiAgb25DaGVja291dFN1Y2Nlc3M6ICQsXG4gIG9uU2V0dXBQYXltZW50TWV0aG9kU3VjY2VzczogJCxcbiAgb25DaGVja291dEVycm9yOiAkLFxuICBvblBheW1lbnRSZXF1ZXN0TG9hZDogJFxufSksIFcgPSBjbGFzcyBXIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zZXRDYWxsYmFja3MgPSAobikgPT4ge1xuICAgICAgdGhpcy5fY2FsbGJhY2tzID0gVy5jcmVhdGVFbXB0eUNhbGxiYWNrcygpLCBPYmplY3QuZW50cmllcyhuKS5mb3JFYWNoKChbZSwgcl0pID0+IHtcbiAgICAgICAgY29uc3QgYSA9IEFuKGUsIHIgPz8gVy5OT09QLCBsaSk7XG4gICAgICAgIHRoaXMuX2NhbGxiYWNrc1tlXSA9IGE7XG4gICAgICB9KTtcbiAgICB9LCB0aGlzLl9jYWxsYmFja3MgPSBXLmNyZWF0ZUVtcHR5Q2FsbGJhY2tzKCk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgYSByZWFkLW9ubHkgdmVyc2lvbiBvZiB0aGUgY2FsbGJhY2tzIG9iamVjdC5cbiAgICovXG4gIGdldCBnZXQoKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fY2FsbGJhY2tzIH07XG4gIH1cbn07XG5XLk5PT1AgPSAoKSA9PiB7XG59LCBXLmNyZWF0ZUVtcHR5Q2FsbGJhY2tzID0gKCkgPT4ge1xuICBjb25zdCBuID0ge307XG4gIHJldHVybiBPYmplY3Qua2V5cyhFdC5rZXlvZigpLmVudW0pLmZvckVhY2goKGUpID0+IHtcbiAgICBuW2VdID0gVy5OT09QO1xuICB9KSwgbjtcbn0sIFcuZnJvbU9iamVjdCA9IChuKSA9PiB7XG4gIGNvbnN0IGUgPSBuZXcgVygpO1xuICByZXR1cm4gZS5zZXRDYWxsYmFja3MoRXQucGFyc2UobikpLCBlO1xufTtcbmxldCBRZSA9IFc7XG5jbGFzcyB1aSB7XG4gIGNvbnN0cnVjdG9yKG4sIGUsIHIsIGEpIHtcbiAgICB0aGlzLmhhbmRsZU1lc3NhZ2UgPSAoaSkgPT4ge1xuICAgICAgaWYgKCFpLnNvdXJjZSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc291cmNlIGZvdW5kXCIpO1xuICAgICAgaWYgKEN0KGkub3JpZ2luKSAhPT0gQ3QodGhpcy5iYXNlVXJsKSB8fCB0eXBlb2YgaS5kYXRhID09IFwib2JqZWN0XCIgJiYgaS5kYXRhLnBlbnBhbCB8fCB0eXBlb2YgaS5kYXRhID09IFwib2JqZWN0XCIgJiYgaS5kYXRhLnNvdXJjZSAmJiBpLmRhdGEuc291cmNlID09PSBcInJlYWN0LWRldnRvb2xzLWJyaWRnZVwiKVxuICAgICAgICByZXR1cm47XG4gICAgICBsZXQgcyA9IG51bGw7XG4gICAgICB0cnkge1xuICAgICAgICBzID0gZHIoSlNPTi5wYXJzZShpLmRhdGEpKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGVFdmVudChzKSkgcmV0dXJuO1xuICAgICAgY29uc3QgeyBlbGVtZW50SWQ6IGwsIHBheWxvYWQ6IHUgfSA9IHMsIGQgPSB1LnR5cGU7XG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgICAgY2FzZSBcIkxBWU9VVFwiOlxuICAgICAgICAgIHRoaXMuaW50ZXJuYWxDYWxsYmFja3Muc2V0Rm9ybUhlaWdodCh1LmhlaWdodCA/IGAke3UuaGVpZ2h0fXB4YCA6IFwiMTAwJVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkZPQ1VTXCI6XG4gICAgICAgICAgdGhpcy5mb3JtQ2FsbGJhY2tzLmdldC5vbkZvY3VzKGwsIHUuZWxlbWVudFR5cGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQkxVUlwiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25CbHVyKGwsIHUuZWxlbWVudFR5cGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiQ0hBTkdFXCI6XG4gICAgICAgICAgdGhpcy5mb3JtQ2FsbGJhY2tzLmdldC5vbkNoYW5nZShsLCB1LmVsZW1lbnRUeXBlLCB1LmVycm9ycyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJMT0FERURcIjpcbiAgICAgICAgICB0aGlzLmV2ZW50VGFyZ2V0c1tsXSA9IGkuc291cmNlLCB0aGlzLmludGVybmFsQ2FsbGJhY2tzLm9uQ2RlTG9hZGVkKHUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTE9BRF9FUlJPUlwiOlxuICAgICAgICAgIHRoaXMuaW50ZXJuYWxDYWxsYmFja3Mub25DZGVMb2FkRXJyb3IodS5tZXNzYWdlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlZBTElEQVRJT05fRVJST1JcIjpcbiAgICAgICAgICB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKHUuZWxlbWVudFR5cGUsIHUuZXJyb3JzLCBsKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJbZm9ybV0gVW5oYW5kbGVkIGV2ZW50IHR5cGU6XCIsIGQpO1xuICAgICAgfVxuICAgIH0sIHRoaXMudmFsaWRhdGVFdmVudCA9IChpKSA9PiBpLmZvcm1JZCAhPT0gdGhpcy5mb3JtSWQgfHwgIWkuZWxlbWVudElkID8gKGNvbnNvbGUubG9nKFwiW09KU10gZm9ybUlkXCIsIHRoaXMuZm9ybUlkLCBpLmZvcm1JZCksIGNvbnNvbGUud2FybihcIltmb3JtXSBJZ25vcmluZyB1bmtub3duIGV2ZW50OlwiLCBpKSwgITEpIDogdGhpcy5ub25jZXMuaGFzKGkubm9uY2UpID8gKGNvbnNvbGUud2FybihcIltmb3JtXSBJZ25vcmluZyBkdXBsaWNhdGUgZXZlbnQ6XCIsIGkpLCAhMSkgOiAodGhpcy5ub25jZXMuYWRkKGkubm9uY2UpLCAhMCksIHRoaXMuZXZlbnRUYXJnZXRzID0ge30sIHRoaXMubm9uY2VzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSwgdGhpcy5mb3JtSWQgPSBuLCB0aGlzLmJhc2VVcmwgPSBlLCB0aGlzLmZvcm1DYWxsYmFja3MgPSByLCB0aGlzLmludGVybmFsQ2FsbGJhY2tzID0gYTtcbiAgfVxufVxuY29uc3QgQ3QgPSAodCkgPT4gbmV3IFVSTCh0KS5vcmlnaW47XG5hc3luYyBmdW5jdGlvbiBkaSh0LCBuKSB7XG4gIGNvbnN0IHIgPSBhd2FpdCBjb25uZWN0VG9DaGlsZCh7XG4gICAgaWZyYW1lOiB0LFxuICAgIGRlYnVnOiAhMSxcbiAgICBjaGlsZE9yaWdpbjogblxuICB9KS5wcm9taXNlLCBhID0gYXdhaXQgcHIocik7XG4gIGlmICghbXIociwgYSkpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiR290IGludmFsaWQgQ0RFIGNvbm5lY3Rpb24gb2JqZWN0XCIpO1xuICByZXR1cm4gcjtcbn1cbmNsYXNzIHBpIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIH1cbiAgYWRkQ29ubmVjdGlvbihuLCBlKSB7XG4gICAgdGhpcy5jb25uZWN0aW9ucy5zZXQobiwgZSk7XG4gIH1cbiAgZ2V0Q29ubmVjdGlvbigpIHtcbiAgICBjb25zdCBuID0gdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gICAgaWYgKCFuKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29ubmVjdGlvbiBub3QgZm91bmRcIik7XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgZ2V0QWxsQ29ubmVjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbnM7XG4gIH1cbn1cbmNvbnN0IG1pID0gKHQsIG4sIGUpID0+IHtcbiAgY29uc3QgeyBzdHJpcGVQUjogciB9ID0gdDtcbiAgci5wdWJsaXNoZXIuc3Vic2NyaWJlKChhKSA9PiB7XG4gICAgaWYgKGEuaXNTdWNjZXNzKSB7XG4gICAgICBjb25zdCBpID0gYS5sb2FkZWRWYWx1ZSwgcyA9IGkuaXNBdmFpbGFibGUgJiYgaS5hdmFpbGFibGVQcm92aWRlcnMuYXBwbGVQYXksIGMgPSBpLmlzQXZhaWxhYmxlICYmIGkuYXZhaWxhYmxlUHJvdmlkZXJzLmdvb2dsZVBheSwgbCA9IHtcbiAgICAgICAgYXBwbGVfcGF5OiB7XG4gICAgICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgICAgICBpc0F2YWlsYWJsZTogcyxcbiAgICAgICAgICBzdGFydEZsb3c6IGFzeW5jICh1KSA9PiB7XG4gICAgICAgICAgICBzICYmIFB0KFwiYXBwbGVfcGF5XCIsIGksIG4sIGUsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ29vZ2xlX3BheToge1xuICAgICAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICAgICAgaXNBdmFpbGFibGU6IGMsXG4gICAgICAgICAgc3RhcnRGbG93OiBhc3luYyAodSkgPT4ge1xuICAgICAgICAgICAgYyAmJiBQdChcImdvb2dsZV9wYXlcIiwgaSwgbiwgZSwgdSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgZS5nZXQub25QYXltZW50UmVxdWVzdExvYWQobCk7XG4gICAgfVxuICB9KTtcbn0sIFB0ID0gKHQsIG4sIGUsIHIsIGEpID0+IGsuc3RyaXBlUFIucnVuKHtcbiAgY29udGV4dDogZSxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBiZShlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHQpLFxuICBub25DZGVGb3JtSW5wdXRzOiBKKGUuZm9ybURpdiksXG4gIGZvcm1DYWxsYmFja3M6IHIsXG4gIGN1c3RvbVBhcmFtczogeyBwcm92aWRlcjogdCwgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogYSA9PSBudWxsID8gdm9pZCAwIDogYS5vdmVycmlkZVBheW1lbnRSZXF1ZXN0IH0sXG4gIGluaXRSZXN1bHQ6IG5cbn0pLCBTdCA9IFwiVGhlIHNlY3VyZSBmb3JtIGZhaWxlZCB0byBsb2FkIHByb3Blcmx5LiBQbGVhc2UgY2hlY2sgeW91ciBpbnRlcm5ldCBjb25uZWN0aW9uLCBvciB0cnkgYWdhaW4gbGF0ZXIuXCIsIHsgbG9nX186IFosIGVycl9fOiBCIH0gPSBTKFwib3AtZm9ybVwiKSwgUSA9IGNsYXNzIFEge1xuICBjb25zdHJ1Y3RvcihuKSB7XG4gICAgdGhpcy5jZGVMb2FkRXZlbnQgPSBuZXcgRmUoKSwgdGhpcy5hbnlDZGVDb25uID0gbmV3IEZlKCksIHRoaXMuY29udGV4dCA9IG5ldyBGZSgpLCB0aGlzLmluaXRGbG93cyA9IGNpKCksIHRoaXMuc3RhcnRGb3JtSW5pdCA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFooXCJJbml0aWFsaXppbmcgT3BlblBheSBmb3JtOlwiKSwgWihcIuKUnCBXYWl0aW5nIGZvciBDREUgbG9hZCBldmVudC4uLlwiKTtcbiAgICAgICAgY29uc3QgZSA9IGF3YWl0IHRoaXMuY2RlTG9hZEV2ZW50LndhaXRGb3JMb2FkKHtcbiAgICAgICAgICB0aW1lb3V0U2VjOiAxMjAsXG4gICAgICAgICAgdGltZW91dEVyck1zZzogU3RcbiAgICAgICAgfSk7XG4gICAgICAgIFooXCLilJwgQ0RFIGxvYWQgZXZlbnQgcmVjZWl2ZWRcIiksIFooXCLilJwgV2FpdGluZyBmb3IgQ0RFIGNvbm5lY3Rpb24uLi5cIik7XG4gICAgICAgIGNvbnN0IHIgPSBhd2FpdCB0aGlzLmFueUNkZUNvbm4ud2FpdEZvckxvYWQoe1xuICAgICAgICAgIHRpbWVvdXRTZWM6IDEyMCxcbiAgICAgICAgICB0aW1lb3V0RXJyTXNnOiBTdFxuICAgICAgICB9KTtcbiAgICAgICAgWihcIuKUnCBDREUgY29ubmVjdGlvbiByZWNlaXZlZFwiKSwgWihcIuKUnCBDcmVhdGluZyBPSlMgY29udGV4dCwgc2V0dGluZyB1cCBoYW5kbGVycy4uLlwiKTtcbiAgICAgICAgY29uc3QgYSA9IFEuYnVpbGRPanNGbG93Q29udGV4dChcbiAgICAgICAgICB0aGlzLmNvbmZpZyxcbiAgICAgICAgICBlLFxuICAgICAgICAgIHIsXG4gICAgICAgICAgdGhpcy5nZXRGb3JtRGl2KClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnNldChhKSwgbWkodGhpcy5pbml0Rmxvd3MsIGEsIHRoaXMuZm9ybUNhbGxiYWNrcyksIFooXCLilJwgU3RhcnRpbmcgT0pTIGluaXQgZmxvd3MuLi5cIiksIGF3YWl0IHNpKHRoaXMuaW5pdEZsb3dzLCBhLCB0aGlzLmZvcm1DYWxsYmFja3MpLCB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uTG9hZChlLnRvdGFsQW1vdW50QXRvbXMsIGUuY3VycmVuY3kpLCBaKFwi4pWwIERvbmUgaW5pdGlhbGl6aW5nIE9KUyBmbG93cy5cIik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnN0IHIgPSBIKGUpO1xuICAgICAgICBCKFwi4pWwIEVycm9yIGluaXRpYWxpemluZyBPUCBmb3JtOlwiLCByKSwgdGhpcy5mb3JtQ2FsbGJhY2tzLmdldC5vbkxvYWRFcnJvcihyKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLnNldEZvcm1IZWlnaHQgPSAoZSkgPT4ge1xuICAgICAgdGhpcy5mb3JtUHJvcGVydGllcy5oZWlnaHQgPSBlLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyAmJiBPYmplY3QudmFsdWVzKHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzKS5mb3JFYWNoKChyKSA9PiB7XG4gICAgICAgIHIgJiYgKHIubm9kZS5zdHlsZS5oZWlnaHQgPSBlKTtcbiAgICAgIH0pO1xuICAgIH0sIHRoaXMub25DZGVMb2FkZWQgPSAoZSkgPT4ge1xuICAgICAgdGhpcy5jZGVMb2FkRXZlbnQuY3VycmVudC5pc1N1Y2Nlc3MgfHwgdGhpcy5jZGVMb2FkRXZlbnQuc2V0KGUpO1xuICAgIH0sIHRoaXMub25DZGVMb2FkRXJyb3IgPSAoZSkgPT4ge1xuICAgICAgdGhpcy5jZGVMb2FkRXZlbnQuY3VycmVudC5pc1N1Y2Nlc3MgfHwgdGhpcy5jZGVMb2FkRXZlbnQudGhyb3cobmV3IEVycm9yKGUpLCBlKTtcbiAgICB9LCB0aGlzLmNyZWF0ZUVsZW1lbnQgPSAoZSwgciA9IHt9KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY29uZmlnKSB0aHJvdyBuZXcgRXJyb3IoXCJPcGVuUGF5IGZvcm0gbm90IGluaXRpYWxpemVkXCIpO1xuICAgICAgY29uc3QgYSA9IGtuLnBhcnNlKGUpLCBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKSwgcyA9IHRoaXMuYnVpbGRRdWVyeVN0cmluZyhyKTtcbiAgICAgIGkubmFtZSA9IGAke2F9LWVsZW1lbnRgO1xuICAgICAgY29uc3QgYyA9IG5ldyBVUkwoYC9hcHAvdjEvJHtpLm5hbWV9L2AsIHRoaXMuY29uZmlnLmJhc2VVcmwpO1xuICAgICAgcmV0dXJuIGMuc2VhcmNoID0gcy50b1N0cmluZygpLCBpLnNyYyA9IGMuaHJlZiwgaS5zdHlsZS5ib3JkZXIgPSBcIm5vbmVcIiwgaS5zdHlsZS53aWR0aCA9IFwiMTAwJVwiLCB0aGlzLnJlZ2lzdGVySWZyYW1lKGEsIGkpO1xuICAgIH0sIHRoaXMucmVnaXN0ZXJJZnJhbWUgPSAoZSwgcikgPT4ge1xuICAgICAgY29uc3QgYSA9IHtcbiAgICAgICAgdHlwZTogZSxcbiAgICAgICAgbm9kZTogcixcbiAgICAgICAgbW91bnQ6IChpKSA9PiB7XG4gICAgICAgICAgdmFyIHM7XG4gICAgICAgICAgcmV0dXJuIChzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihpKSkgPT0gbnVsbCA/IHZvaWQgMCA6IHMuYXBwZW5kQ2hpbGQocik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0VG9FbGVtZW50KHsgdHlwZTogYS50eXBlLCBub2RlOiBhLm5vZGUgfSksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzIHx8ICh0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyA9IHtcbiAgICAgICAgW2RlLkNBUkRdOiB2b2lkIDAsXG4gICAgICAgIFtkZS5DQVJEX05VTUJFUl06IHZvaWQgMCxcbiAgICAgICAgW2RlLkNBUkRfRVhQSVJZXTogdm9pZCAwLFxuICAgICAgICBbZGUuQ0FSRF9DVkNdOiB2b2lkIDBcbiAgICAgIH0pLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50c1tlXSA9IGEsIGE7XG4gICAgfSwgdGhpcy5idWlsZFF1ZXJ5U3RyaW5nID0gKGUpID0+IHtcbiAgICAgIGNvbnN0IHIgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICByZXR1cm4gci5hcHBlbmQoXCJyZWZlcmVyXCIsIHRoaXMucmVmZXJyZXIpLCByLmFwcGVuZChcImZvcm1JZFwiLCB0aGlzLmZvcm1JZCksIGUuc3R5bGVzICYmIHIuYXBwZW5kKFwic3R5bGVzXCIsIHVyKGUuc3R5bGVzKSksIHIuYXBwZW5kKFwic2VjdXJlVG9rZW5cIiwgdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbiksIHI7XG4gICAgfSwgdGhpcy5jb25uZWN0VG9FbGVtZW50ID0gKGUpID0+IHtcbiAgICAgIGRpKGUubm9kZSkudGhlbigocikgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25NYW5hZ2VyLmFkZENvbm5lY3Rpb24oZS50eXBlLCByKSwgdGhpcy5hbnlDZGVDb25uLmN1cnJlbnQuaXNTdWNjZXNzIHx8IHRoaXMuYW55Q2RlQ29ubi5zZXQocik7XG4gICAgICB9KS5jYXRjaCgocikgPT4gQihcIltGT1JNXSBFcnJvciBjb25uZWN0aW5nIHRvIENERSBpZnJhbWVcIiwgcikpO1xuICAgIH0sIHRoaXMuZ2V0Rm9ybURpdiA9ICgpID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5mb3JtVGFyZ2V0KSA/PyBkb2N1bWVudC5ib2R5LCB0aGlzLnN1Ym1pdENhcmQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBlID0gdGhpcy5jb250ZXh0LmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgaWYgKCFlKSB7XG4gICAgICAgIEIoXCJQbGVhc2Ugd2FpdCBmb3IgdGhlIGZvcm0gdG8gZmluaXNoIGxvYWRpbmcgYmVmb3JlIHN1Ym1pdHRpbmcuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBrLmNvbW1vbkNDLnJ1bih7XG4gICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogYmUoZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBcImNyZWRpdF9jYXJkXCIpLFxuICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBKKGUuZm9ybURpdiksXG4gICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgY3VycmVudENkZUNvbm5lY3Rpb25zOiB0aGlzLmNvbm5lY3Rpb25NYW5hZ2VyLmdldEFsbENvbm5lY3Rpb25zKClcbiAgICAgICAgfSxcbiAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgIC8vIFRoaXMgZmxvdyByZXF1aXJlcyBubyBpbml0aWFsaXphdGlvblxuICAgICAgfSk7XG4gICAgfSwgdGhpcy5nZXRBdmFpbGFibGVQYXltZW50TWV0aG9kcyA9ICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5jb250ZXh0LmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpKSB7XG4gICAgICAgIEIoXCJQbGVhc2Ugd2FpdCBmb3IgdGhlIGZvcm0gdG8gZmluaXNoIGxvYWRpbmcgYmVmb3JlIGdldHRpbmcgYXZhaWxhYmxlIHBheW1lbnQgbWV0aG9kcy5cIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHIgPSB7XG4gICAgICAgIGFpcndhbGxleEdvb2dsZVBheTogeC5haXJ3YWxsZXhHb29nbGVQYXksXG4gICAgICAgIGFpcndhbGxleEFwcGxlUGF5OiB4LmFpcndhbGxleEFwcGxlUGF5LFxuICAgICAgICBhdXRob3JpemVOZXRHb29nbGVQYXk6IHguYXV0aG9yaXplbmV0R29vZ2xlUGF5LFxuICAgICAgICBhdXRob3JpemVOZXRBcHBsZVBheTogeC5hdXRob3JpemVuZXRBcHBsZVBheVxuICAgICAgfTtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLmluaXRGbG93cykubWFwKChbYSwgaV0pID0+ICh7XG4gICAgICAgIG5hbWU6IHJbYV0gPz8gYSxcbiAgICAgICAgLi4uaS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbClcbiAgICAgIH0pKTtcbiAgICB9LCB0aGlzLmdlbmVyYWxTdWJtaXQgPSAoZSwgcikgPT4ge1xuICAgICAgY29uc3QgYSA9IHRoaXMuY29udGV4dC5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICAgIGlmICghYSkge1xuICAgICAgICBCKFwiUGxlYXNlIHdhaXQgZm9yIHRoZSBmb3JtIHRvIGZpbmlzaCBsb2FkaW5nIGJlZm9yZSBzdWJtaXR0aW5nLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChlKSB7XG4gICAgICAgIGNhc2UgeC5wb2NreXRQYXlwYWw6XG4gICAgICAgICAgcmV0dXJuIGsucG9ja3l0UGF5cGFsLnJ1bih7XG4gICAgICAgICAgICBjb250ZXh0OiBhLFxuICAgICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBiZShhLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIFwicGF5cGFsXCIsIFwicG9ja3l0XCIpLFxuICAgICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogSihhLmZvcm1EaXYpLFxuICAgICAgICAgICAgZm9ybUNhbGxiYWNrczogdGhpcy5mb3JtQ2FsbGJhY2tzLFxuICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiB7IHNldHRpbmdzOiByIH0sXG4gICAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSB4LmFpcndhbGxleEdvb2dsZVBheToge1xuICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLmluaXRGbG93cy5haXJ3YWxsZXhHb29nbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgIGlmICghaSkge1xuICAgICAgICAgICAgQihcbiAgICAgICAgICAgICAgXCJhaXJ3YWxsZXgtZ29vZ2xlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGkuc3RhcnRGbG93KHIpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgeC5haXJ3YWxsZXhBcHBsZVBheToge1xuICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLmluaXRGbG93cy5haXJ3YWxsZXhBcHBsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgaWYgKCFpKSB7XG4gICAgICAgICAgICBCKFxuICAgICAgICAgICAgICBcImFpcndhbGxleC1hcHBsZS1wYXkgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgdXNpbmcgJ2dldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzKCknXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpLnN0YXJ0RmxvdyhyKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIHguYXV0aG9yaXplbmV0R29vZ2xlUGF5OiB7XG4gICAgICAgICAgY29uc3QgaSA9IHRoaXMuaW5pdEZsb3dzLmF1dGhvcml6ZU5ldEdvb2dsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgaWYgKCFpKSB7XG4gICAgICAgICAgICBCKFxuICAgICAgICAgICAgICBcImF1dGhvcml6ZS1uZXQtZ29vZ2xlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGkuc3RhcnRGbG93KHIpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgeC5hdXRob3JpemVuZXRBcHBsZVBheToge1xuICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLmluaXRGbG93cy5hdXRob3JpemVOZXRBcHBsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgaWYgKCFpKSB7XG4gICAgICAgICAgICBCKFxuICAgICAgICAgICAgICBcImF1dGhvcml6ZS1uZXQtYXBwbGUtcGF5IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IHVzaW5nICdnZXRBdmFpbGFibGVQYXltZW50TWV0aG9kcygpJ1wiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaS5zdGFydEZsb3cocik7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSB4Lmxvb3BDcnlwdG86IHtcbiAgICAgICAgICBjb25zdCBpID0gdGhpcy5pbml0Rmxvd3MubG9vcC5wdWJsaXNoZXIuY3VycmVudDtcbiAgICAgICAgICBpZiAoIWkuaXNTdWNjZXNzKVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJMb29wIGhhcyBub3Qgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLiBDYW5ub3Qgc3VibWl0LlwiKTtcbiAgICAgICAgICByZXR1cm4gay5sb29wQ3J5cHRvLnJ1bih7XG4gICAgICAgICAgICBjb250ZXh0OiBhLFxuICAgICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBiZShhLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIFwiY3J5cHRvXCIsIFwibG9vcFwiKSxcbiAgICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IEooYS5mb3JtRGl2KSxcbiAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgICAgIC8vIEFJIGdlbmVyYXRlZCBzdHVmZiBiZWxvdyB0byBnZXQgdGhlIHR5cGluZyByaWdodC5cbiAgICAgICAgICAgIC8vIFRPRE86IE1vdmUgdGhlIGVtYWlsLCBmaXJzdE5hbWUgYW5kIGxhc3ROYW1lIGZpZWxkcyB0byBgbm9uQ2RlRm9ybUlucHV0c2BcbiAgICAgICAgICAgIGN1c3RvbVBhcmFtczogciAmJiBcInN1Y2Nlc3NcIiBpbiByICYmIHIuc3VjY2VzcyA/IHtcbiAgICAgICAgICAgICAgY3VzdG9tZXI6IHIuY3VzdG9tZXIsXG4gICAgICAgICAgICAgIHBheWluOiByLnBheWluLFxuICAgICAgICAgICAgICBlbWFpbDogci5lbWFpbCxcbiAgICAgICAgICAgICAgZmlyc3ROYW1lOiByLmZpcnN0TmFtZSxcbiAgICAgICAgICAgICAgbGFzdE5hbWU6IHIubGFzdE5hbWUsXG4gICAgICAgICAgICAgIHN1Y2Nlc3M6ICEwXG4gICAgICAgICAgICB9IDoge1xuICAgICAgICAgICAgICBkZXRhaWw6IHIuZGV0YWlsLFxuICAgICAgICAgICAgICBlbWFpbDogci5lbWFpbCxcbiAgICAgICAgICAgICAgZmlyc3ROYW1lOiByLmZpcnN0TmFtZSxcbiAgICAgICAgICAgICAgbGFzdE5hbWU6IHIubGFzdE5hbWUsXG4gICAgICAgICAgICAgIHN1Y2Nlc3M6ICExXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5pdFJlc3VsdDogaS5sb2FkZWRWYWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgVWUoZSk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5zdWJtaXQgPSB0aGlzLnN1Ym1pdENhcmQsIHRoaXMuZGVzdHJveSA9ICgpID0+IHtcbiAgICAgIFooXCJEZXN0cm95aW5nIE9wZW5QYXkgZm9ybS4uLlwiKTtcbiAgICAgIGZvciAoY29uc3QgZSBvZiBPYmplY3QudmFsdWVzKHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzID8/IHt9KSlcbiAgICAgICAgZSAmJiBlLm5vZGUucmVtb3ZlKCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5ldmVudEhhbmRsZXIuaGFuZGxlTWVzc2FnZS5iaW5kKHRoaXMuZXZlbnRIYW5kbGVyKSksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzID0gbnVsbCwgZGVsZXRlIHdpbmRvdy5vanM7XG4gICAgfSwgdGhpcy51cGRhdGVDYWxsYmFja3MgPSAoZSkgPT4ge1xuICAgICAgdGhpcy5mb3JtQ2FsbGJhY2tzLnNldENhbGxiYWNrcyhlKTtcbiAgICB9LCBRLmFzc2lnbkFzU2luZ2xldG9uKHRoaXMpLCB0aGlzLm9qc1ZlcnNpb24gPSBcIjAuMi4xNVwiLCB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uID0gXCJsb2NhbF9idWlsZFwiLCB0aGlzLmJhc2VVcmwgPSBuLmJhc2VVcmwgPz8gXCJodHRwczovL2NkZS5nZXRvcGVucGF5LmNvbVwiLCB0aGlzLmNvbmZpZyA9IHsgLi4ubiwgYmFzZVVybDogdGhpcy5iYXNlVXJsIH0sIHRoaXMuZm9ybUNhbGxiYWNrcyA9IFFlLmZyb21PYmplY3QobiksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzID0gbnVsbCwgdGhpcy5mb3JtSWQgPSBgb3Bqcy1mb3JtLSR7djQoKX1gLCB0aGlzLnJlZmVycmVyID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiwgdGhpcy5mb3JtVGFyZ2V0ID0gbi5mb3JtVGFyZ2V0ID8/IFwiYm9keVwiLCB0aGlzLmZvcm1Qcm9wZXJ0aWVzID0geyBoZWlnaHQ6IFwiMXB4XCIgfSwgdGhpcy5jb25uZWN0aW9uTWFuYWdlciA9IG5ldyBwaSgpLCB0aGlzLmV2ZW50SGFuZGxlciA9IG5ldyB1aSh0aGlzLmZvcm1JZCwgdGhpcy5iYXNlVXJsLCB0aGlzLmZvcm1DYWxsYmFja3MsIHtcbiAgICAgIHNldEZvcm1IZWlnaHQ6IHRoaXMuc2V0Rm9ybUhlaWdodCxcbiAgICAgIG9uQ2RlTG9hZGVkOiB0aGlzLm9uQ2RlTG9hZGVkLFxuICAgICAgb25DZGVMb2FkRXJyb3I6IHRoaXMub25DZGVMb2FkRXJyb3JcbiAgICB9KSwgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMuZXZlbnRIYW5kbGVyLmhhbmRsZU1lc3NhZ2UuYmluZCh0aGlzLmV2ZW50SGFuZGxlcikpLCB0aGlzLnN0YXJ0Rm9ybUluaXQoKTtcbiAgfVxuICBnZXQgY2hlY2tvdXRTZWN1cmVUb2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbjtcbiAgfVxufTtcblEub2pzRmxvd3MgPSBrLCBRLmFzc2lnbkFzU2luZ2xldG9uID0gKG4pID0+IHtcbiAgaWYgKFEuZ2V0SW5zdGFuY2UoKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJPcGVuUGF5IGluc3RhbmNlIGFscmVhZHkgZXhpc3RzLiBPbmx5IG9uZSBpbnN0YW5jZSBpcyBhbGxvd2VkLlwiKTtcbiAgd2luZG93Lm9qcyA9IG47XG59LCBRLmdldEluc3RhbmNlID0gKCkgPT4gd2luZG93Lm9qcyA/PyBudWxsLCBRLmJ1aWxkT2pzRmxvd0NvbnRleHQgPSAobiwgZSwgciwgYSkgPT4gKHtcbiAgY2hlY2tvdXRTZWN1cmVUb2tlbjogbi5jaGVja291dFNlY3VyZVRva2VuLFxuICBiYXNlVXJsOiBuZXcgVVJMKG4uYmFzZVVybCA/PyBldCkub3JpZ2luLFxuICBmb3JtRGl2OiBhLFxuICBlbGVtZW50c1Nlc3Npb25JZDogZS5zZXNzaW9uSWQsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZHM6IGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcyxcbiAgYW55Q2RlQ29ubmVjdGlvbjogcixcbiAgY3VzdG9tSW5pdFBhcmFtczogbi5jdXN0b21Jbml0UGFyYW1zID8/IHt9XG59KTtcbmxldCBBdCA9IFE7XG5cbmNvbnN0IFB5ZGFudGljVmFsaWRhdGlvbkVycm9yJDEgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLmFycmF5KFB5ZGFudGljVmFsaWRhdGlvbkVycm9yJDEpO1xuY29uc3QgWm9kRmllbGRFcnJvciA9IHokMS5vYmplY3Qoe1xuICBjb2RlOiB6JDEuc3RyaW5nKCksXG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKSxcbiAgcGF0aDogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLmFycmF5KFpvZEZpZWxkRXJyb3IpO1xuY29uc3QgbWFrZUNhbGxiYWNrU2FmZSA9IChjYWxsYmFja05hbWUsIGZuLCBlcnJvckxvZ2dlcikgPT4ge1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZuKC4uLmFyZ3MpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBlcnJvckxvZ2dlcihgW2Zvcm1dIEVycm9yIHJ1bm5pbmcgY2FsbGJhY2sgKCR7Y2FsbGJhY2tOYW1lfSk6YCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgU3VibWl0TWV0aG9kcyA9IC8qIEBfX1BVUkVfXyAqLyAoKFN1Ym1pdE1ldGhvZHMyKSA9PiB7XG4gIFN1Ym1pdE1ldGhvZHMyW1wicG9ja3l0UGF5cGFsXCJdID0gXCJwb2NreXQtcGF5cGFsXCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWlyd2FsbGV4R29vZ2xlUGF5XCJdID0gXCJhaXJ3YWxsZXgtZ29vZ2xlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImFpcndhbGxleEFwcGxlUGF5XCJdID0gXCJhaXJ3YWxsZXgtYXBwbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYXV0aG9yaXplbmV0R29vZ2xlUGF5XCJdID0gXCJhdXRob3JpemVuZXQtZ29vZ2xlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImF1dGhvcml6ZW5ldEFwcGxlUGF5XCJdID0gXCJhdXRob3JpemVuZXQtYXBwbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wibG9vcENyeXB0b1wiXSA9IFwibG9vcC1jcnlwdG9cIjtcbiAgcmV0dXJuIFN1Ym1pdE1ldGhvZHMyO1xufSkoU3VibWl0TWV0aG9kcyB8fCB7fSk7XG56JDEubmF0aXZlRW51bShTdWJtaXRNZXRob2RzKTtcblxuY29uc3QgUmVxdWlyZWRTdHJpbmcgPSB6JDEuc3RyaW5nKCkudHJpbSgpLm1pbigxLCB7IG1lc3NhZ2U6IGBDYW5ub3QgYmUgYmxhbmtgIH0pO1xuY29uc3QgT3B0aW9uYWxTdHJpbmcgPSB6JDEuc3RyaW5nKCkudHJpbSgpLm9wdGlvbmFsKCk7XG5jb25zdCBudWxsT3JVbmRlZk9yJDEgPSAoelR5cGUpID0+IHokMS5udWxsYWJsZSh6VHlwZS5vcHRpb25hbCgpKTtcbnZhciBGaWVsZE5hbWUgPSAvKiBAX19QVVJFX18gKi8gKChGaWVsZE5hbWUyKSA9PiB7XG4gIEZpZWxkTmFtZTJbXCJGSVJTVF9OQU1FXCJdID0gXCJmaXJzdE5hbWVcIjtcbiAgRmllbGROYW1lMltcIkxBU1RfTkFNRVwiXSA9IFwibGFzdE5hbWVcIjtcbiAgRmllbGROYW1lMltcIkVNQUlMXCJdID0gXCJlbWFpbFwiO1xuICBGaWVsZE5hbWUyW1wiWklQX0NPREVcIl0gPSBcInppcENvZGVcIjtcbiAgRmllbGROYW1lMltcIkNJVFlcIl0gPSBcImNpdHlcIjtcbiAgRmllbGROYW1lMltcIlNUQVRFXCJdID0gXCJzdGF0ZVwiO1xuICBGaWVsZE5hbWUyW1wiQ09VTlRSWVwiXSA9IFwiY291bnRyeVwiO1xuICBGaWVsZE5hbWUyW1wiQUREUkVTU1wiXSA9IFwiYWRkcmVzc1wiO1xuICBGaWVsZE5hbWUyW1wiUEhPTkVcIl0gPSBcInBob25lXCI7XG4gIEZpZWxkTmFtZTJbXCJQUk9NT1RJT05fQ09ERVwiXSA9IFwicHJvbW90aW9uQ29kZVwiO1xuICByZXR1cm4gRmllbGROYW1lMjtcbn0pKEZpZWxkTmFtZSB8fCB7fSk7XG5jb25zdCBGaWVsZE5hbWVFbnVtID0geiQxLm5hdGl2ZUVudW0oRmllbGROYW1lKTtcbnZhciBQcml2YXRlRmllbGROYW1lID0gLyogQF9fUFVSRV9fICovICgoUHJpdmF0ZUZpZWxkTmFtZTIpID0+IHtcbiAgUHJpdmF0ZUZpZWxkTmFtZTJbXCJDQVJEX05VTUJFUlwiXSA9IFwiY2FyZE51bWJlclwiO1xuICBQcml2YXRlRmllbGROYW1lMltcIkNBUkRfRVhQSVJZXCJdID0gXCJjYXJkRXhwaXJ5XCI7XG4gIFByaXZhdGVGaWVsZE5hbWUyW1wiQ0FSRF9DVkNcIl0gPSBcImNhcmRDdmNcIjtcbiAgcmV0dXJuIFByaXZhdGVGaWVsZE5hbWUyO1xufSkoUHJpdmF0ZUZpZWxkTmFtZSB8fCB7fSk7XG5jb25zdCBQcml2YXRlRmllbGROYW1lRW51bSA9IHokMS5uYXRpdmVFbnVtKFByaXZhdGVGaWVsZE5hbWUpO1xuY29uc3QgQWxsRmllbGROYW1lcyA9IHokMS51bmlvbihbRmllbGROYW1lRW51bSwgUHJpdmF0ZUZpZWxkTmFtZUVudW1dKTtcbnZhciBFbGVtZW50VHlwZUVudW0gPSAvKiBAX19QVVJFX18gKi8gKChFbGVtZW50VHlwZUVudW0yKSA9PiB7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEXCJdID0gXCJjYXJkXCI7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEX05VTUJFUlwiXSA9IFwiY2FyZC1udW1iZXJcIjtcbiAgRWxlbWVudFR5cGVFbnVtMltcIkNBUkRfRVhQSVJZXCJdID0gXCJjYXJkLWV4cGlyeVwiO1xuICBFbGVtZW50VHlwZUVudW0yW1wiQ0FSRF9DVkNcIl0gPSBcImNhcmQtY3ZjXCI7XG4gIHJldHVybiBFbGVtZW50VHlwZUVudW0yO1xufSkoRWxlbWVudFR5cGVFbnVtIHx8IHt9KTtcbnokMS5uYXRpdmVFbnVtKEVsZW1lbnRUeXBlRW51bSk7XG5jb25zdCBDaGVja291dFBheW1lbnRNZXRob2QkMSA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnN0cmluZygpLFxuICBwcm9jZXNzb3JfbmFtZTogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIG1ldGFkYXRhOiBudWxsT3JVbmRlZk9yJDEoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbmNvbnN0IFBheW1lbnRNZXRob2RNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGlkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGNhcmROdW1iZXI6IE9wdGlvbmFsU3RyaW5nLFxuICBleHBpcnk6IE9wdGlvbmFsU3RyaW5nLFxuICBjdmM6IE9wdGlvbmFsU3RyaW5nXG59KTtcbnokMS5vYmplY3Qoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IE9wdGlvbmFsU3RyaW5nLFxuICBjb2xvcjogT3B0aW9uYWxTdHJpbmcsXG4gIGZvbnRGYW1pbHk6IE9wdGlvbmFsU3RyaW5nLFxuICBmb250U2l6ZTogT3B0aW9uYWxTdHJpbmcsXG4gIGZvbnRXZWlnaHQ6IE9wdGlvbmFsU3RyaW5nLFxuICBtYXJnaW46IE9wdGlvbmFsU3RyaW5nLFxuICBwYWRkaW5nOiBPcHRpb25hbFN0cmluZyxcbiAgbGV0dGVyU3BhY2luZzogT3B0aW9uYWxTdHJpbmcsXG4gIGxpbmVIZWlnaHQ6IE9wdGlvbmFsU3RyaW5nLFxuICBoaWRlSWNvbjogT3B0aW9uYWxTdHJpbmdcbn0pO1xuY29uc3QgRXZlbnRUeXBlID0geiQxLmVudW0oW1xuICAvLyBFbGVtZW50IC0+IEZvcm1cbiAgXCJMQVlPVVRcIixcbiAgXCJMT0FERURcIixcbiAgXCJCTFVSXCIsXG4gIFwiRk9DVVNcIixcbiAgXCJDSEFOR0VcIixcbiAgXCJUT0tFTklaRV9TVEFSVEVEXCIsXG4gIFwiQ0hFQ0tPVVRfU1RBUlRFRFwiLFxuICBcIlBBWU1FTlRfRkxPV19TVEFSVEVEXCIsXG4gIFwiVE9LRU5JWkVfU1VDQ0VTU1wiLFxuICBcIkNIRUNLT1VUX1NVQ0NFU1NcIixcbiAgXCJMT0FEX0VSUk9SXCIsXG4gIFwiVkFMSURBVElPTl9FUlJPUlwiLFxuICBcIlRPS0VOSVpFX0VSUk9SXCIsXG4gIFwiQ0hFQ0tPVVRfRVJST1JcIixcbiAgXCJTRVRVUF9QQVlNRU5UX01FVEhPRF9TVUNDRVNTXCIsXG4gIC8vIEZvcm0gLT4gRWxlbWVudFxuICBcIlRPS0VOSVpFXCIsXG4gIFwiQ0hFQ0tPVVRcIixcbiAgXCJTVEFSVF9QQVlNRU5UX0ZMT1dcIlxuXSk7XG5jb25zdCBHZW5lcmljRXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiVE9LRU5JWkVfU1RBUlRFRFwiLCBcIkNIRUNLT1VUX1NUQVJURURcIl0pO1xuY29uc3QgR2VuZXJpY0V2ZW50UGF5bG9hZCA9IHokMS5vYmplY3QoeyB0eXBlOiBHZW5lcmljRXZlbnRUeXBlIH0pO1xuY29uc3QgSW5wdXRFdmVudFR5cGUgPSBFdmVudFR5cGUuZXh0cmFjdChbXCJCTFVSXCIsIFwiRk9DVVNcIiwgXCJDSEFOR0VcIl0pO1xuY29uc3QgSW5wdXRFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogSW5wdXRFdmVudFR5cGUsXG4gIGVsZW1lbnRUeXBlOiBQcml2YXRlRmllbGROYW1lRW51bSxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IEVycm9yRXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiTE9BRF9FUlJPUlwiLCBcIlRPS0VOSVpFX0VSUk9SXCIsIFwiQ0hFQ0tPVVRfRVJST1JcIl0pO1xuY29uc3QgRXJyb3JFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogRXJyb3JFdmVudFR5cGUsXG4gIG1lc3NhZ2U6IFJlcXVpcmVkU3RyaW5nLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IFZhbGlkYXRpb25FcnJvckV2ZW50VHlwZSA9IEV2ZW50VHlwZS5leHRyYWN0KFtcIlZBTElEQVRJT05fRVJST1JcIl0pO1xuY29uc3QgVmFsaWRhdGlvbkVycm9yRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IFZhbGlkYXRpb25FcnJvckV2ZW50VHlwZSxcbiAgZWxlbWVudFR5cGU6IEFsbEZpZWxkTmFtZXMsXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgTGF5b3V0RXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLkxBWU9VVCksXG4gIGhlaWdodDogUmVxdWlyZWRTdHJpbmdcbn0pO1xuY29uc3QgTG9hZGVkRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLkxPQURFRCksXG4gIHNlc3Npb25JZDogUmVxdWlyZWRTdHJpbmcsXG4gIHRvdGFsQW1vdW50QXRvbXM6IHokMS5udW1iZXIoKSxcbiAgY3VycmVuY3k6IE9wdGlvbmFsU3RyaW5nLFxuICBjaGVja291dFBheW1lbnRNZXRob2RzOiB6JDEuYXJyYXkoQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEpXG59KTtcbmNvbnN0IFBheW1lbnRGbG93U3RhcnRlZEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5QQVlNRU5UX0ZMT1dfU1RBUlRFRCksXG4gIG5leHRBY3Rpb25NZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBzdGFydFBGTWV0YWRhdGE6IHokMS5vcHRpb25hbCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgU2V0dXBDaGVja291dFN1Y2Nlc3NFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uU0VUVVBfUEFZTUVOVF9NRVRIT0RfU1VDQ0VTUyksXG4gIHBheW1lbnRNZXRob2RJZDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IFJlcXVpcmVkRm9ybUZpZWxkcyA9IHokMS5vYmplY3Qoe1xuICBbXCJmaXJzdE5hbWVcIiAvKiBGSVJTVF9OQU1FICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImxhc3ROYW1lXCIgLyogTEFTVF9OQU1FICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImVtYWlsXCIgLyogRU1BSUwgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wiemlwQ29kZVwiIC8qIFpJUF9DT0RFICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImNvdW50cnlcIiAvKiBDT1VOVFJZICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcInByb21vdGlvbkNvZGVcIiAvKiBQUk9NT1RJT05fQ09ERSAqL106IE9wdGlvbmFsU3RyaW5nXG59KTtcbmNvbnN0IFBSRm9ybUZpZWxkcyA9IHokMS5vYmplY3Qoe1xuICBbXCJmaXJzdE5hbWVcIiAvKiBGSVJTVF9OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImxhc3ROYW1lXCIgLyogTEFTVF9OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImVtYWlsXCIgLyogRU1BSUwgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wiemlwQ29kZVwiIC8qIFpJUF9DT0RFICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImNvdW50cnlcIiAvKiBDT1VOVFJZICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcInByb21vdGlvbkNvZGVcIiAvKiBQUk9NT1RJT05fQ09ERSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJhZGRyZXNzXCIgLyogQUREUkVTUyAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJjaXR5XCIgLyogQ0lUWSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzdGF0ZVwiIC8qIFNUQVRFICovXTogT3B0aW9uYWxTdHJpbmdcbn0pO1xuY29uc3QgU3VibWl0RXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiVE9LRU5JWkVcIiwgXCJDSEVDS09VVFwiLCBcIlNUQVJUX1BBWU1FTlRfRkxPV1wiXSk7XG5jb25zdCBTdWJtaXRFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogU3VibWl0RXZlbnRUeXBlLFxuICBzZXNzaW9uSWQ6IFJlcXVpcmVkU3RyaW5nLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxLFxuICBwYXltZW50Rmxvd01ldGFkYXRhOiB6JDEuYW55KCkub3B0aW9uYWwoKSxcbiAgZG9Ob3RVc2VMZWdhY3lDQ0Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdDQ1BNSWQ6IE9wdGlvbmFsU3RyaW5nXG59KS5leHRlbmQoUmVxdWlyZWRGb3JtRmllbGRzLnNoYXBlKTtcbmNvbnN0IFRva2VuaXplU3VjY2Vzc0V2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5UT0tFTklaRV9TVUNDRVNTKSxcbiAgaXNSZWFkeUZvckNoZWNrb3V0OiB6JDEuYm9vbGVhbigpXG59KTtcbmNvbnN0IENoZWNrb3V0U3VjY2Vzc0V2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5DSEVDS09VVF9TVUNDRVNTKSxcbiAgaW52b2ljZVVybHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBzdWJzY3JpcHRpb25JZHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBjdXN0b21lcklkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgRXZlbnRQYXlsb2FkID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICBHZW5lcmljRXZlbnRQYXlsb2FkLFxuICBJbnB1dEV2ZW50UGF5bG9hZCxcbiAgRXJyb3JFdmVudFBheWxvYWQsXG4gIFZhbGlkYXRpb25FcnJvckV2ZW50UGF5bG9hZCxcbiAgTGF5b3V0RXZlbnRQYXlsb2FkLFxuICBMb2FkZWRFdmVudFBheWxvYWQsXG4gIFN1Ym1pdEV2ZW50UGF5bG9hZCxcbiAgVG9rZW5pemVTdWNjZXNzRXZlbnRQYXlsb2FkLFxuICBDaGVja291dFN1Y2Nlc3NFdmVudFBheWxvYWQsXG4gIFBheW1lbnRGbG93U3RhcnRlZEV2ZW50UGF5bG9hZCxcbiAgU2V0dXBDaGVja291dFN1Y2Nlc3NFdmVudFBheWxvYWRcbl0pO1xueiQxLm9iamVjdCh7XG4gIHBheWxvYWQ6IEV2ZW50UGF5bG9hZCxcbiAgbm9uY2U6IFJlcXVpcmVkU3RyaW5nLFxuICBmb3JtSWQ6IFJlcXVpcmVkU3RyaW5nLFxuICBlbGVtZW50SWQ6IFJlcXVpcmVkU3RyaW5nXG59KTtcbnokMS5vYmplY3Qoe1xuICBhbW91bnRBdG9tOiB6JDEubnVtYmVyKCksXG4gIC8qKlxuICAgKiBUaGUgdGhyZWUtbGV0dGVyIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUgZm9yIHRoZSBwYXltZW50LlxuICAgKi9cbiAgY3VycmVuY3k6IFJlcXVpcmVkU3RyaW5nXG59KTtcbnokMS5lbnVtKFtcImFwcGxlX3BheVwiLCBcImdvb2dsZV9wYXlcIl0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBleGlzdGluZ19jY19wbV9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIHRoZWlyX3BtX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogbnVsbE9yVW5kZWZPciQxKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBDaGVja291dFN1Y2Nlc3NSZXNwb25zZSA9IHokMS5vYmplY3Qoe1xuICBpbnZvaWNlX3VybHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBzdWJzY3JpcHRpb25faWRzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJfaWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBGaWVsZFZhbGlkYXRpb25FcnJvciA9IHokMS5vYmplY3Qoe1xuICBlbGVtZW50VHlwZTogeiQxLnN0cmluZygpLFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgVG9rZW5pemVDYXJkRXJyb3JSZXNwb25zZSA9IHokMS5vYmplY3Qoe1xuICBzdWNjZXNzOiB6JDEubGl0ZXJhbChmYWxzZSksXG4gIGVycm9yX3R5cGU6IHokMS5saXRlcmFsKFwidmFsaWRhdGlvbl9lcnJvclwiKSxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoRmllbGRWYWxpZGF0aW9uRXJyb3IpXG59KTtcbnokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJzdWNjZXNzXCIsIFtcbiAgeiQxLm9iamVjdCh7IHN1Y2Nlc3M6IHokMS5saXRlcmFsKHRydWUpIH0pLFxuICBUb2tlbml6ZUNhcmRFcnJvclJlc3BvbnNlXG5dKTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBDaGVja291dFBheW1lbnRNZXRob2QkMSxcbiAgbm9uX2NkZV9mb3JtX2ZpZWxkczogUmVxdWlyZWRGb3JtRmllbGRzLFxuICBkb19ub3RfdXNlX2xlZ2FjeV9jY19mbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGV4aXN0aW5nX2NjX3BtX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBDaGVja291dFBheW1lbnRNZXRob2QkMSxcbiAgbm9uX2NkZV9mb3JtX2ZpZWxkczogUmVxdWlyZWRGb3JtRmllbGRzLFxuICBleHRyYV9tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkub3B0aW9uYWwoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXCJzdWNjZXNzXCIgLyogU1VDQ0VTUyAqLywgXCJmYWlsdXJlXCIgLyogRkFJTFVSRSAqLywgXCJjYW5jZWxsZWRcIiAvKiBDQU5DRUxMRUQgKi9dKSxcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICByZWRpcmVjdF91cmw6IHokMS5zdHJpbmcoKSxcbiAgaW5pdGlhbF9pbnRlbnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgY29uc2VudF9pZDogeiQxLnN0cmluZygpLFxuICB0aGVpcl9wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuY29uc3QgQ29tbW9uTmV4dEFjdGlvbk1ldGFkYXRhID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgcmVkaXJlY3RfdXJsOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgaW5pdGlhbF9pbnRlbnRfaWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBjb25zZW50X2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3Nlc3Npb246IG51bGxPclVuZGVmT3IkMSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwodHJ1ZSksIGhyZWY6IHokMS5zdHJpbmcoKSB9KSxcbiAgeiQxLm9iamVjdCh7IHByZXNlbnQ6IHokMS5saXRlcmFsKGZhbHNlKSB9KVxuXSk7XG56JDEub2JqZWN0KHtcbiAgcGF5bWVudF9tZXRob2RzOiB6JDEuYXJyYXkoUGF5bWVudE1ldGhvZE1pbmltYWwpLFxuICBwYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZTogbnVsbE9yVW5kZWZPciQxKENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlKSxcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiBudWxsT3JVbmRlZk9yJDEoeiQxLmFycmF5KENvbW1vbk5leHRBY3Rpb25NZXRhZGF0YSkpXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHN0cmlwZV9wazogeiQxLnN0cmluZygpLFxuICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKCksXG4gIHN0cmlwZV9wbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbn0pO1xuXG5jb25zdCBjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyA9IChzdHlsZXMpID0+IHtcbiAgY29uc3Qgc2VyaWFsaXplZFN0eWxlcyA9IEpTT04uc3RyaW5naWZ5KHN0eWxlcyk7XG4gIHJldHVybiBzZXJpYWxpemVkU3R5bGVzO1xufTtcblxuY29uc3QgbnVsbE9yVW5kZWZPciA9ICh6VHlwZSkgPT4geiQxLm51bGxhYmxlKHpUeXBlLm9wdGlvbmFsKCkpO1xueiQxLnN0cmluZygpLnRyaW0oKS5taW4oMSwgeyBtZXNzYWdlOiBgQ2Fubm90IGJlIGJsYW5rYCB9KTtcbnokMS5vYmplY3Qoe1xuICBjZGVfcmVzcG9uc2VfdHlwZTogeiQxLmxpdGVyYWwoXCJlcnJvclwiKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbnokMS5lbnVtKFtcInVzZFwiLCBcImJybFwiXSk7XG5jb25zdCBDb3Vwb25NaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgYW1vdW50X2F0b21fb2ZmOiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKSksXG4gIHBlcmNlbnRfb2ZmOiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKSksXG4gIGN1cnJlbmN5OiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGR1cmF0aW9uOiB6JDEuc3RyaW5nKCksXG4gIGR1cmF0aW9uX2luX21vbnRoczogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkpXG59KTtcbmNvbnN0IExpbmVJdGVtID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9zdWJ0b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGFtb3VudF90b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHByaWNlX2lkOiB6JDEuc3RyaW5nKCksXG4gIGJpbGxpbmdfaW50ZXJ2YWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbF9jb3VudDogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkuaW50KCkpLFxuICBxdWFudGl0eTogeiQxLm51bWJlcigpLmludCgpXG59KTtcbmNvbnN0IEJyYW5kU2V0dGluZ3MgPSB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKTtcbmNvbnN0IEJyYW5kID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgc2V0dGluZ3M6IG51bGxPclVuZGVmT3IoQnJhbmRTZXR0aW5ncylcbn0pO1xuY29uc3QgQ2hlY2tvdXRQYXltZW50TWV0aG9kID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIHByb2Nlc3Nvcl9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIG1ldGFkYXRhOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBTdWJzY3JpcHRpb25JdGVtTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBxdWFudGl0eTogeiQxLm51bWJlcigpXG59KTtcbmNvbnN0IFN1YnNjcmlwdGlvbk1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgaWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsX2NvdW50OiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKS5pbnQoKSksXG4gIHN1YnNjcmlwdGlvbl9pdGVtczogeiQxLmFycmF5KFN1YnNjcmlwdGlvbkl0ZW1NaW5pbWFsKSxcbiAgdHJpYWxfc3RhcnQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdHJpYWxfZW5kOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgSW52b2ljZUl0ZW1EaXNjb3VudEFtb3VudHNNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9hdG9tOiB6JDEubnVtYmVyKClcbn0pO1xuY29uc3QgSW52b2ljZUxpbmVJdGVtTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICBhbW91bnRfYXRvbV9jb25zaWRlcmluZ19kaXNjb3VudF9hcHBsaWVkOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRpc2NvdW50X2Ftb3VudF9hdG9tczogeiQxLmFycmF5KEludm9pY2VJdGVtRGlzY291bnRBbW91bnRzTWluaW1hbCksXG4gIHN1YnNjcmlwdGlvbl9pdGVtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgRGlzY291bnRNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGNvdXBvbjogQ291cG9uTWluaW1hbFxufSk7XG5jb25zdCBJbnZvaWNlTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkaXNjb3VudHM6IHokMS5hcnJheShEaXNjb3VudE1pbmltYWwpLFxuICBob3N0ZWRfaW52b2ljZV91cmw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGluZXM6IHokMS5hcnJheShJbnZvaWNlTGluZUl0ZW1NaW5pbWFsKSxcbiAgcmVtYWluaW5nX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRheF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9kaXNjb3VudF9hbW91bnRfYXRvbXM6IHokMS5hcnJheShJbnZvaWNlSXRlbURpc2NvdW50QW1vdW50c01pbmltYWwpXG59KTtcbmNvbnN0IENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjcmVhdGVkOiB6JDEuYXJyYXkoU3Vic2NyaXB0aW9uTWluaW1hbCksXG4gIGludm9pY2VzOiB6JDEuYXJyYXkoSW52b2ljZU1pbmltYWwpXG59KTtcbmNvbnN0IFByZXZpZXdDaGVja291dFJlc3BvbnNlID0geiQxLm9iamVjdCh7XG4gIHByZXZpZXc6IENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCxcbiAgcHJldmlld19wb3N0X3RyaWFsOiBudWxsT3JVbmRlZk9yKENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCksXG4gIGNvdXBvbnM6IHokMS5hcnJheShDb3Vwb25NaW5pbWFsKVxufSk7XG5jb25zdCBfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmxpdGVyYWwoXCJvcGVuXCIpLFxuICBsb2NhbGU6IHokMS5zdHJpbmcoKSxcbiAgdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KExpbmVJdGVtKSxcbiAgYW1vdW50X3N1YnRvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYW1vdW50X3RvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYnJhbmQ6IEJyYW5kLFxuICBzdWJzX3ByZXZpZXc6IG51bGxPclVuZGVmT3IoUHJldmlld0NoZWNrb3V0UmVzcG9uc2UpLFxuICAvLyBOdWxsIGluIHNldHVwIG1vZGVcbiAgbWV0aG9kc19hdmFpbGFibGU6IHokMS5hcnJheShDaGVja291dFBheW1lbnRNZXRob2QpXG59KTtcbmNvbnN0IFBheW1lbnRGb3JtUHJlZmlsbCA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJtb2RlXCIsIFtcbiAgeiQxLm9iamVjdCh7XG4gICAgbW9kZTogeiQxLmxpdGVyYWwoXCJzZXR1cFwiKSxcbiAgICBjdXJyZW5jeTogeiQxLm51bGxhYmxlKHokMS51bmRlZmluZWQoKSlcbiAgfSkuZXh0ZW5kKF9QYXltZW50Rm9ybVByZWZpbGxDb21tb24uc2hhcGUpLFxuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEuZW51bShbXCJwYXltZW50XCIsIFwic3Vic2NyaXB0aW9uXCJdKSxcbiAgICBjdXJyZW5jeTogeiQxLnN0cmluZygpXG4gIH0pLmV4dGVuZChfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uLnNoYXBlKVxuXSk7XG5jb25zdCBDb21wbGV0ZWRGb3JtUHJlZmlsbCA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiY29tcGxldGVcIilcbn0pO1xuY29uc3QgRXhwaXJlZEZvcm1QcmVmaWxsID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmxpdGVyYWwoXCJleHBpcmVkXCIpXG59KTtcbnokMS51bmlvbihbUGF5bWVudEZvcm1QcmVmaWxsLCBDb21wbGV0ZWRGb3JtUHJlZmlsbCwgRXhwaXJlZEZvcm1QcmVmaWxsXSk7XG56JDEub2JqZWN0KHtcbiAgbG9nbzogeiQxLnN0cmluZygpLFxuICBpY29uOiB6JDEuc3RyaW5nKCksXG4gIHByaW1hcnlfY29sb3I6IHokMS5zdHJpbmcoKSxcbiAgc2Vjb25kYXJ5X2NvbG9yOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcGF5bWVudF9pbnB1dDogeiQxLmFueSgpLFxuICAvLyBTaG91bGQgZm9sbG93IEFueVBheW1lbnRJbnB1dCBmcm9tIENERVxuICBjdXN0b21lcl9maXJzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfbGFzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfZW1haWw6IHokMS5zdHJpbmcoKSxcbiAgY3VzdG9tZXJfemlwX2NvZGU6IHokMS5zdHJpbmcoKSxcbiAgY3VzdG9tZXJfY291bnRyeTogeiQxLnN0cmluZygpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoTGluZUl0ZW0pLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBjYW5jZWxfYXRfZW5kOiB6JDEuYm9vbGVhbigpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdXNlX2NvbmZpcm1lZF9wbV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBwYXltZW50X21ldGhvZF9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpLFxuICByZXR1cm5fdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLmFycmF5KFB5ZGFudGljVmFsaWRhdGlvbkVycm9yKTtcbmNvbnN0IE5ld0N1c3RvbWVyRmllbGRzID0geiQxLm9iamVjdCh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9hZGRyZXNzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IFByaWNlUXR5ID0geiQxLm9iamVjdCh7XG4gIHByaWNlX2lkOiB6JDEuc3RyaW5nKCksXG4gIHF1YW50aXR5OiB6JDEubnVtYmVyKCkuaW50KClcbn0pO1xuY29uc3QgQ2FydEluZm8gPSB6JDEub2JqZWN0KHtcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KFByaWNlUXR5KSxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKS5pbnQoKVxufSk7XG5jb25zdCBQcm9jZXNzb3JTcGVjaWZpY01ldGFkYXRhID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogbnVsbE9yVW5kZWZPcih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHBheW1lbnRfcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0aGVpcl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZV9wYXlfZmlyc3RfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IENhcnRJbmZvLm9wdGlvbmFsKClcbn0pLmV4dGVuZChOZXdDdXN0b21lckZpZWxkcy5zaGFwZSkuZXh0ZW5kKFByb2Nlc3NvclNwZWNpZmljTWV0YWRhdGEuc2hhcGUpO1xueiQxLm9iamVjdCh7XG4gIHJlcXVpcmVkX3VzZXJfYWN0aW9uczogeiQxLmFycmF5KHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKSxcbiAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBmaWVsZHM6IFBSRm9ybUZpZWxkcyxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBDaGVja291dFBheW1lbnRNZXRob2Rcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgbm9uX2NkZV9mb3JtX2ZpZWxkczogUmVxdWlyZWRGb3JtRmllbGRzLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBleHRyYV9tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSlcbiAgLy8gVGhpcyBpcyBvcHRpb25hbCBpbiBDREUsIGJ1dCBub3QgaW4gT0pTIG1vdmluZyBmb3J3YXJkXG59KTtcbnokMS5vYmplY3Qoe1xuICByZXF1aXJlZF91c2VyX2FjdGlvbnM6IHokMS5hcnJheSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSksXG4gIGNjX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLnJlY29yZCh6JDEuYW55KCkpO1xueiQxLm9iamVjdCh7XG4gIGZpcnN0X25hbWU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGFzdF9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmUxOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmUyOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmUzOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGNpdHk6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgc3RhdGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgY291bnRyeTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICB6aXBfY29kZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBlbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2VtYWlsOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHBob25lX251bWJlcjogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICB1cGRhdGVfcHJvY2Vzc29yX2N1c3RvbWVyOiBudWxsT3JVbmRlZk9yKHokMS5ib29sZWFuKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpLFxuICBlbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBmaXJzdF9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxhc3RfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwaG9uZV9udW1iZXI6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19lbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBhZGRyZXNzOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBlcnJvcl9jb2RlOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBDaGVja291dFBheW1lbnRNZXRob2QsXG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIG5leHRfYWN0aW9uX21ldGFkYXRhOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLmFueSgpKSlcbn0pO1xuXG5mdW5jdGlvbiBmaXhQcm90byh0YXJnZXQsIHByb3RvdHlwZSkge1xuICB2YXIgc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2Y7XG4gIHNldFByb3RvdHlwZU9mID8gc2V0UHJvdG90eXBlT2YodGFyZ2V0LCBwcm90b3R5cGUpIDogdGFyZ2V0Ll9fcHJvdG9fXyA9IHByb3RvdHlwZTtcbn1cbmZ1bmN0aW9uIGZpeFN0YWNrKHRhcmdldCwgZm4pIHtcbiAgaWYgKGZuID09PSB2b2lkIDApIHtcbiAgICBmbiA9IHRhcmdldC5jb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIHZhciBjYXB0dXJlU3RhY2tUcmFjZSA9IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlO1xuICBjYXB0dXJlU3RhY2tUcmFjZSAmJiBjYXB0dXJlU3RhY2tUcmFjZSh0YXJnZXQsIGZuKTtcbn1cblxudmFyIF9fZXh0ZW5kcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbihmdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyhDdXN0b21FcnJvciwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBDdXN0b21FcnJvcihtZXNzYWdlLCBvcHRpb25zKSB7XG4gICAgdmFyIF9uZXdUYXJnZXQgPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbWVzc2FnZSwgb3B0aW9ucykgfHwgdGhpcztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfdGhpcywgJ25hbWUnLCB7XG4gICAgICB2YWx1ZTogX25ld1RhcmdldC5uYW1lLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBmaXhQcm90byhfdGhpcywgX25ld1RhcmdldC5wcm90b3R5cGUpO1xuICAgIGZpeFN0YWNrKF90aGlzKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gQ3VzdG9tRXJyb3I7XG59KShFcnJvcik7XG5cbmNvbnN0IGNyZWF0ZU9qc0Zsb3dMb2dnZXJzID0gKHByZWZpeCkgPT4ge1xuICBjb25zdCBsb2cgPSAoLi4uYXJncykgPT4ge1xuICAgIHdpbmRvd1tcImNvbnNvbGVcIl0ubG9nKGAke0FlLmdyZWVuLmJvbGQoXCJvanMvXCIpfSR7QWUuYm9sZC5ncmF5KGAke3ByZWZpeH1gKX1cdGAsIC4uLmFyZ3MpO1xuICB9O1xuICBjb25zdCBlcnIgPSAoLi4uYXJncykgPT4ge1xuICAgIHdpbmRvd1tcImNvbnNvbGVcIl0ud2FybihgJHtBZS5yZWQuYm9sZChcIm9qcy9cIil9JHtBZS5ib2xkLmdyYXkoYCR7cHJlZml4fWApfVx0YCwgLi4uYXJncyk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgbG9nLFxuICAgIGVycixcbiAgICBsb2dfXzogbG9nLFxuICAgIGVycl9fOiBlcnJcbiAgfTtcbn07XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJzdHJpcGVfbGlua1wiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xueiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBvdXJfZXhpc3RpbmdfcG1faWQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBcIm9wLXBvY2t5dC0zZHMtdXJsXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1wb2NreXQtdHhuLW5vXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1wb2NreXQtcmVmLW5vXCI6IHokMS5zdHJpbmcoKVxufSk7XG5cbnokMS5vYmplY3Qoe1xuICBcIm9wLWFpcndhbGxleC0zZHMtdXJsXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1haXJ3YWxsZXgtaW5pdGlhbC1pbnRlbnQtaWRcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFpcndhbGxleC1jb25zZW50LWlkXCI6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSk7XG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWlyd2FsbGV4XCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgcHJvY2Vzc29yX2FjY291bnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9uYW1lOiB6JDEuc3RyaW5nKCksXG4gICAgZ29vZ2xlX3BheV9tZXJjaGFudF9pZDogeiQxLnN0cmluZygpLm51bGxpc2goKVxuICB9KVxufSk7XG5jb25zdCBBV1hfTE9BRElORyA9IHtcbiAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICBpc0xvYWRpbmc6IHRydWUsXG4gIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICB9XG59O1xuXG5jb25zdCBBZHllbkVudmlyb25tZW50ID0geiQxLmVudW0oW1widGVzdFwiLCBcImxpdmVcIiwgXCJsaXZlLXVzXCIsIFwibGl2ZS1pblwiLCBcImxpdmUtYXBzZVwiLCBcImxpdmUtYXVcIl0pO1xueiQxLm9iamVjdCh7XG4gIFwib3AtYWNjb3VudC1pZFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWR5ZW4tY2xpZW50LWtleVwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWR5ZW4tZW52aXJvbm1lbnRcIjogQWR5ZW5FbnZpcm9ubWVudCxcbiAgXCJvcC1hZHllbi1hY3Rpb25cIjogeiQxLnN0cmluZygpXG59KTtcblxueiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBvdXJfZXhpc3RpbmdfcG1faWQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbmNvbnN0IFBheW1lbnRQcm9jZXNzb3IgPSB6JDEuZW51bShbXCJzdHJpcGVcIiwgXCJhaXJ3YWxsZXhcIiwgXCJhdXRob3JpemVfbmV0XCJdKTtcbih7XG4gIHByb2Nlc3NvcjogUGF5bWVudFByb2Nlc3Nvci5FbnVtLnN0cmlwZSxcbiAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICBpc0xvYWRpbmc6IHRydWUsXG4gIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICB9XG59KTtcblxueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEudW5pb24oW3okMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLCB6JDEubGl0ZXJhbChcImdvb2dsZV9wYXlcIildKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xuXG56JDEub2JqZWN0KHtcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwicG9ja3l0XCIpLFxuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJwYXlwYWxcIilcbn0pO1xueiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBwYXlwYWxfaWZyYW1lX3VybDogeiQxLnN0cmluZygpLFxuICAgIHZlcmlmeV90b2tlbjogeiQxLnN0cmluZygpXG4gIH0pXG4pLmxlbmd0aCgxKTtcblxueiQxLm9iamVjdCh7XG4gIGRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lc3NhZ2VIZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSxcbiAgICBlcnJvcnM6IHokMS5hcnJheSh6JDEuYW55KCkpLFxuICAgIG1lc3NhZ2VUeXBlOiB6JDEuc3RyaW5nKCksXG4gICAgbWVzc2FnZUJvZHk6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpXG4gIH0pLFxuICBvcmlnaW46IHokMS5saXRlcmFsKFwiaHR0cHM6Ly9hcHBsZXBheS5jZG4tYXBwbGUuY29tXCIpXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImxvb3BcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImNyeXB0b1wiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgZW50aXR5X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgYXBpX3Rva2VuOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xudmFyIFBheUluU3RhdGUgPSAvKiBAX19QVVJFX18gKi8gKChQYXlJblN0YXRlMikgPT4ge1xuICBQYXlJblN0YXRlMltcIklETEVcIl0gPSBcImlkbGVcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDT05GSVJNSU5HX0JBTEFOQ0VcIl0gPSBcImNvbmZpcm1pbmdCYWxhbmNlXCI7XG4gIFBheUluU3RhdGUyW1wiQ09ORklSTUlOR19BVVRIT1JJWkFUSU9OXCJdID0gXCJjb25maXJtaW5nQXV0aG9yaXphdGlvblwiO1xuICBQYXlJblN0YXRlMltcIlVQREFUSU5HX0FVVEhPUklaQVRJT05cIl0gPSBcInVwZGF0aW5nQXV0aG9yaXphdGlvblwiO1xuICBQYXlJblN0YXRlMltcIlNJR05JTkdfTUVTU0FHRVwiXSA9IFwic2lnbmluZ01lc3NhZ2VcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDUkVBVElOR19DVVNUT01FUlwiXSA9IFwiY3JlYXRpbmdDdXN0b21lclwiO1xuICBQYXlJblN0YXRlMltcIlBST0NFU1NJTkdfUEFZTUVOVFwiXSA9IFwicHJvY2Vzc2luZ1BheW1lbnRcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDUkVBVElOR19QQVlNRU5UXCJdID0gXCJjcmVhdGluZ1BheW1lbnRcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDT05GSVJNSU5HX1BBWU1FTlRcIl0gPSBcImNvbmZpcm1pbmdQYXltZW50XCI7XG4gIFBheUluU3RhdGUyW1wiQ09NUExFVEVcIl0gPSBcImNvbXBsZXRlXCI7XG4gIHJldHVybiBQYXlJblN0YXRlMjtcbn0pKFBheUluU3RhdGUgfHwge30pO1xuXG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhdXRob3JpemVfbmV0XCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgcHJvY2Vzc29yX2FjY291bnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9uYW1lOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImdvb2dsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImF1dGhvcml6ZV9uZXRcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICBnb29nbGVfcGF5X21lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpXG4gIH0pXG59KTtcblxuY29uc3QgUFJfTE9BRElORyA9IHtcbiAgaXNMb2FkaW5nOiB0cnVlLFxuICBpc0F2YWlsYWJsZTogZmFsc2UsXG4gIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGBzdGFydEZsb3cgdHJpZ2dlcmVkIHdoaWxlIHBheW1lbnQgcmVxdWVzdCBpcyBzdGlsbCBub3QgcmVhZHkuIFxuICAgICAgWW91IGNhbiBjaGVjayB0aGUgXCIuaXNMb2FkaW5nXCIgcGFyYW0gdG8ga25vdyB3aGVuIGEgcGF5bWVudCByZXF1ZXN0IGlzIHN0aWxsIGxvYWRpbmcsIFxuICAgICAgYW5kIFwiLmlzQXZhaWxhYmxlXCIgdG8ga25vdyBpZiBhIHBheW1lbnQgcmVxdWVzdCBpcyBhdmFpbGFibGUuYFxuICAgICk7XG4gIH1cbn07XG5cbmNvbnN0IHsgZXJyX18gfSA9IGNyZWF0ZU9qc0Zsb3dMb2dnZXJzKFwiZm9ybS1jYWxsYmFja3NcIik7XG5jb25zdCBPcHRpb25hbEZuID0geiQxLmZ1bmN0aW9uKCkub3B0aW9uYWwoKTtcbmNvbnN0IFpvZEZvcm1DYWxsYmFja3MgPSB6JDEub2JqZWN0KHtcbiAgb25Gb2N1czogT3B0aW9uYWxGbixcbiAgb25CbHVyOiBPcHRpb25hbEZuLFxuICBvbkNoYW5nZTogT3B0aW9uYWxGbixcbiAgb25Mb2FkOiBPcHRpb25hbEZuLFxuICBvbkxvYWRFcnJvcjogT3B0aW9uYWxGbixcbiAgb25WYWxpZGF0aW9uRXJyb3I6IE9wdGlvbmFsRm4sXG4gIG9uQ2hlY2tvdXRTdGFydGVkOiBPcHRpb25hbEZuLFxuICBvbkNoZWNrb3V0U3VjY2VzczogT3B0aW9uYWxGbixcbiAgb25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzOiBPcHRpb25hbEZuLFxuICBvbkNoZWNrb3V0RXJyb3I6IE9wdGlvbmFsRm4sXG4gIG9uUGF5bWVudFJlcXVlc3RMb2FkOiBPcHRpb25hbEZuXG59KTtcbmNsYXNzIEZvcm1DYWxsYmFja3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvKipcbiAgICAgKiBTZXRzIEFMTCBmb3JtIGNhbGxiYWNrcy4gTm90ZSB0aGF0IGFsbCBvbGQgY2FsbGJhY2tzIGFyZSByZW1vdmVkLlxuICAgICAqL1xuICAgIHRoaXMuc2V0Q2FsbGJhY2tzID0gKHJhd0NhbGxiYWNrcykgPT4ge1xuICAgICAgdGhpcy5fY2FsbGJhY2tzID0gRm9ybUNhbGxiYWNrcy5jcmVhdGVFbXB0eUNhbGxiYWNrcygpO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmF3Q2FsbGJhY2tzKS5mb3JFYWNoKChba2V5LCByYXdDYWxsYmFja10pID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZUNhbGxiYWNrID0gbWFrZUNhbGxiYWNrU2FmZShrZXksIHJhd0NhbGxiYWNrID8/IEZvcm1DYWxsYmFja3MuTk9PUCwgZXJyX18pO1xuICAgICAgICB0aGlzLl9jYWxsYmFja3Nba2V5XSA9IHNhZmVDYWxsYmFjaztcbiAgICAgIH0pO1xuICAgIH07XG4gICAgdGhpcy5fY2FsbGJhY2tzID0gRm9ybUNhbGxiYWNrcy5jcmVhdGVFbXB0eUNhbGxiYWNrcygpO1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5OT09QID0gKCkgPT4ge1xuICAgIH07XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLmNyZWF0ZUVtcHR5Q2FsbGJhY2tzID0gKCkgPT4ge1xuICAgICAgY29uc3QgeCA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoWm9kRm9ybUNhbGxiYWNrcy5rZXlvZigpLmVudW0pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB4W2tleV0gPSBGb3JtQ2FsbGJhY2tzLk5PT1A7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB4O1xuICAgIH07XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLmZyb21PYmplY3QgPSAob2JqKSA9PiB7XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBGb3JtQ2FsbGJhY2tzKCk7XG4gICAgICBpbnN0YW5jZS5zZXRDYWxsYmFja3MoWm9kRm9ybUNhbGxiYWNrcy5wYXJzZShvYmopKTtcbiAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVhZC1vbmx5IHZlcnNpb24gb2YgdGhlIGNhbGxiYWNrcyBvYmplY3QuXG4gICAqL1xuICBnZXQgZ2V0KCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX2NhbGxiYWNrcyB9O1xuICB9XG59XG5cbmNvbnN0IHVzZVJlYWN0aXZlRm9ybUNhbGxiYWNrcyA9IChwcm9wcykgPT4ge1xuICBjb25zdCBmb3JtQ2FsbGJhY2tzID0gRm9ybUNhbGxiYWNrcy5mcm9tT2JqZWN0KHtcbiAgICBvbkZvY3VzOiBwcm9wcy5vbkZvY3VzLFxuICAgIG9uQmx1cjogcHJvcHMub25CbHVyLFxuICAgIG9uQ2hhbmdlOiBwcm9wcy5vbkNoYW5nZSxcbiAgICBvbkxvYWQ6IHByb3BzLm9uTG9hZCxcbiAgICBvbkxvYWRFcnJvcjogcHJvcHMub25Mb2FkRXJyb3IsXG4gICAgb25WYWxpZGF0aW9uRXJyb3I6IHByb3BzLm9uVmFsaWRhdGlvbkVycm9yLFxuICAgIG9uQ2hlY2tvdXRTdGFydGVkOiBwcm9wcy5vbkNoZWNrb3V0U3RhcnRlZCxcbiAgICBvbkNoZWNrb3V0U3VjY2VzczogcHJvcHMub25DaGVja291dFN1Y2Nlc3MsXG4gICAgb25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzOiBwcm9wcy5vblNldHVwUGF5bWVudE1ldGhvZFN1Y2Nlc3MsXG4gICAgb25DaGVja291dEVycm9yOiBwcm9wcy5vbkNoZWNrb3V0RXJyb3IsXG4gICAgb25QYXltZW50UmVxdWVzdExvYWQ6IHByb3BzLm9uUGF5bWVudFJlcXVlc3RMb2FkXG4gIH0pO1xuICBpZiAoQXQuZ2V0SW5zdGFuY2UoKSkge1xuICAgIEF0LmdldEluc3RhbmNlKCk/LnVwZGF0ZUNhbGxiYWNrcyhmb3JtQ2FsbGJhY2tzLmdldCk7XG4gIH1cbiAgcmV0dXJuIGZvcm1DYWxsYmFja3MuZ2V0O1xufTtcblxuY29uc3QgdXNlUGF5bWVudFJlcXVlc3RzID0gKG9yaWdpbmFsT25QYXltZW50UmVxdWVzdExvYWQpID0+IHtcbiAgY29uc3QgW3BheW1lbnRSZXF1ZXN0cywgc2V0UGF5bWVudFJlcXVlc3RzXSA9IHVzZVN0YXRlKHtcbiAgICBhcHBsZV9wYXk6IFBSX0xPQURJTkcsXG4gICAgZ29vZ2xlX3BheTogUFJfTE9BRElOR1xuICB9KTtcbiAgY29uc3Qgb3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQgPSB1c2VDYWxsYmFjayhcbiAgICAocGF5bWVudFJlcXVlc3RzMikgPT4ge1xuICAgICAgc2V0UGF5bWVudFJlcXVlc3RzKHBheW1lbnRSZXF1ZXN0czIpO1xuICAgICAgb3JpZ2luYWxPblBheW1lbnRSZXF1ZXN0TG9hZD8uKHBheW1lbnRSZXF1ZXN0czIpO1xuICAgIH0sXG4gICAgW29yaWdpbmFsT25QYXltZW50UmVxdWVzdExvYWRdXG4gICk7XG4gIHJldHVybiB7IHBheW1lbnRSZXF1ZXN0cywgb3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQgfTtcbn07XG5cbmNvbnN0IEZPUk1fVEFSR0VUID0gXCJvcF9vanNfZm9ybVwiO1xuY29uc3QgRWxlbWVudHNGb3JtID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcEZvcm0sIHNldE9wRm9ybV0gPSB1c2VTdGF0ZSgpO1xuICBjb25zdCBbZWxlbWVudHNDb250ZXh0VmFsdWUsIHNldEVsZW1lbnRzQ29udGV4dFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCB7IHBheW1lbnRSZXF1ZXN0cywgb3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQgfSA9IHVzZVBheW1lbnRSZXF1ZXN0cyhwcm9wcy5vblBheW1lbnRSZXF1ZXN0TG9hZCk7XG4gIGNvbnN0IFtsb2FkZWQsIHNldExvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzdHJpcGVMaW5rQ3RybCwgc2V0U3RyaXBlTGlua0N0cmxdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtsb29wQ29uZmlnLCBzZXRMb29wQ29uZmlnXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYWlyd2FsbGV4LCBzZXRBaXJ3YWxsZXhdID0gdXNlU3RhdGUoe1xuICAgIGdvb2dsZVBheTogQVdYX0xPQURJTkcsXG4gICAgYXBwbGVQYXk6IEFXWF9MT0FESU5HXG4gIH0pO1xuICBjb25zdCBmb3JtQ2FsbGJhY2tzID0gdXNlUmVhY3RpdmVGb3JtQ2FsbGJhY2tzKHtcbiAgICAuLi5wcm9wcyxcbiAgICBvblBheW1lbnRSZXF1ZXN0TG9hZDogb3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQsXG4gICAgb25Mb2FkOiAodG90YWxBbW91bnRBdG9tcywgY3VycmVuY3kpID0+IHtcbiAgICAgIHNldExvYWRlZCh0cnVlKTtcbiAgICAgIHByb3BzLm9uTG9hZD8uKHRvdGFsQW1vdW50QXRvbXMsIGN1cnJlbmN5KTtcbiAgICB9XG4gIH0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvcEZvcm0pIHJldHVybjtcbiAgICBjb25zdCBmb3JtID0gQXQuZ2V0SW5zdGFuY2UoKSA/PyBuZXcgQXQoe1xuICAgICAgY2hlY2tvdXRTZWN1cmVUb2tlbjogcHJvcHMuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgIGZvcm1UYXJnZXQ6IGAjJHtGT1JNX1RBUkdFVH1gLFxuICAgICAgYmFzZVVybDogcHJvcHMuYmFzZVVybCxcbiAgICAgIGN1c3RvbUluaXRQYXJhbXM6IHByb3BzLmN1c3RvbUluaXRQYXJhbXMsXG4gICAgICAuLi5mb3JtQ2FsbGJhY2tzXG4gICAgfSk7XG4gICAgc2V0T3BGb3JtKGZvcm0pO1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUoZm9ybSk7XG4gICAgc2V0RWxlbWVudHNDb250ZXh0VmFsdWUodmFsdWUpO1xuICAgIGZvcm0uaW5pdEZsb3dzLnN0cmlwZUxpbmsucHVibGlzaGVyLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcyAmJiByZXN1bHQubG9hZGVkVmFsdWUuaXNBdmFpbGFibGUpIHtcbiAgICAgICAgc2V0U3RyaXBlTGlua0N0cmwocmVzdWx0LmxvYWRlZFZhbHVlLmNvbnRyb2xsZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZvcm0uaW5pdEZsb3dzLmxvb3AucHVibGlzaGVyLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcyAmJiByZXN1bHQubG9hZGVkVmFsdWUuaXNBdmFpbGFibGUpIHtcbiAgICAgICAgc2V0TG9vcENvbmZpZyh7XG4gICAgICAgICAgd2lkZ2V0OiByZXN1bHQubG9hZGVkVmFsdWUud2lkZ2V0UHJvcHMsXG4gICAgICAgICAgY29uZmlnOiByZXN1bHQubG9hZGVkVmFsdWUuaW5pdExvb3BDb25uZWN0UHJvcHNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZm9ybS5pbml0Rmxvd3MuYWlyd2FsbGV4R29vZ2xlUGF5LnB1Ymxpc2hlci5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MgJiYgcmVzdWx0LmxvYWRlZFZhbHVlLmlzQXZhaWxhYmxlKSB7XG4gICAgICAgIHNldEFpcndhbGxleCgocHJldikgPT4gKHtcbiAgICAgICAgICBhcHBsZVBheTogcHJldi5hcHBsZVBheSxcbiAgICAgICAgICBnb29nbGVQYXk6IHJlc3VsdC5sb2FkZWRWYWx1ZVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZm9ybS5pbml0Rmxvd3MuYWlyd2FsbGV4QXBwbGVQYXkucHVibGlzaGVyLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcyAmJiByZXN1bHQubG9hZGVkVmFsdWUuaXNBdmFpbGFibGUpIHtcbiAgICAgICAgc2V0QWlyd2FsbGV4KChwcmV2KSA9PiAoe1xuICAgICAgICAgIGdvb2dsZVBheTogcHJldi5nb29nbGVQYXksXG4gICAgICAgICAgYXBwbGVQYXk6IHtcbiAgICAgICAgICAgIC4uLnJlc3VsdC5sb2FkZWRWYWx1ZSxcbiAgICAgICAgICAgIGlzTG9hZGluZzogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZm9ybS5kZXN0cm95KCk7XG4gICAgfTtcbiAgfSwgW10pO1xuICBpZiAoIW9wRm9ybSkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7fSk7XG4gIH1cbiAgY29uc3QgY2hpbGRyZW5Qcm9wcyA9IHtcbiAgICBzdWJtaXQ6IG9wRm9ybS5zdWJtaXRDYXJkLFxuICAgIHN1Ym1pdFdpdGg6IG9wRm9ybS5nZW5lcmFsU3VibWl0LFxuICAgIGFwcGxlUGF5OiBwYXltZW50UmVxdWVzdHMuYXBwbGVfcGF5LFxuICAgIGdvb2dsZVBheTogcGF5bWVudFJlcXVlc3RzLmdvb2dsZV9wYXksXG4gICAgbG9hZGVkLFxuICAgIC8vIERpc2FibGUgZHluYW1pYyBwcmV2aWV3cyBmZWF0dXJlIGZvciBub3dcbiAgICBwcmV2aWV3OiB7XG4gICAgICBhbW91bnQ6IG51bGwsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZXJyb3I6IG51bGxcbiAgICB9LFxuICAgIHN0cmlwZUxpbms6IHN0cmlwZUxpbmtDdHJsLFxuICAgIGFpcndhbGxleCxcbiAgICBsb29wOiBsb29wQ29uZmlnXG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7IGNoaWxkcmVuOiBlbGVtZW50c0NvbnRleHRWYWx1ZSA/IC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudHNDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBlbGVtZW50c0NvbnRleHRWYWx1ZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBpZDogRk9STV9UQVJHRVQsIGNsYXNzTmFtZTogcHJvcHMuY2xhc3NOYW1lLCBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW4oY2hpbGRyZW5Qcm9wcykgfSkgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7fSkgfSk7XG59O1xuY29uc3QgZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUgPSAob3BGb3JtKSA9PiB7XG4gIHJldHVybiB7XG4gICAgZm9ybUlkOiBvcEZvcm0uZm9ybUlkLFxuICAgIGZvcm1IZWlnaHQ6IG9wRm9ybS5mb3JtUHJvcGVydGllcy5oZWlnaHQsXG4gICAgcmVmZXJyZXI6IG9wRm9ybS5yZWZlcnJlcixcbiAgICBjaGVja291dFNlY3VyZVRva2VuOiBvcEZvcm0uY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICByZWdpc3RlcklmcmFtZTogb3BGb3JtLnJlZ2lzdGVySWZyYW1lLFxuICAgIGJhc2VVcmw6IG9wRm9ybS5iYXNlVXJsXG4gIH07XG59O1xuXG5jb25zdCBFbGVtZW50RnJhbWUgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBlbGVtZW50VHlwZSwgc3R5bGVzIH0gPSBwcm9wcztcbiAgY29uc3QgeyBmb3JtSWQsIHJlZmVycmVyLCBmb3JtSGVpZ2h0LCBjaGVja291dFNlY3VyZVRva2VuLCByZWdpc3RlcklmcmFtZSwgYmFzZVVybCB9ID0gdXNlT3BlblBheUVsZW1lbnRzKCk7XG4gIGNvbnN0IHN1YlBhdGggPSBlbGVtZW50VHlwZS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBbaGFzTG9hZGVkLCBzZXRIYXNMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpZnJhbWVSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGVsZW1lbnRTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc3R5bGVzKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gY29udmVydFN0eWxlc1RvUXVlcnlTdHJpbmcoc3R5bGVzKTtcbiAgfSwgW3N0eWxlc10pO1xuICBjb25zdCBmcmFtZVN0eWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBoZWlnaHQ6IGZvcm1IZWlnaHRcbiAgICB9O1xuICB9LCBbZm9ybUhlaWdodF0pO1xuICBjb25zdCBxdWVyeVN0cmluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghY2hlY2tvdXRTZWN1cmVUb2tlbiB8fCAhcmVmZXJyZXIpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuYXBwZW5kKFwicmVmZXJlclwiLCByZWZlcnJlcik7XG4gICAgcGFyYW1zLmFwcGVuZChcInN0eWxlc1wiLCBlbGVtZW50U3R5bGUpO1xuICAgIHBhcmFtcy5hcHBlbmQoXCJmb3JtSWRcIiwgZm9ybUlkKTtcbiAgICBwYXJhbXMuYXBwZW5kKFwic2VjdXJlVG9rZW5cIiwgY2hlY2tvdXRTZWN1cmVUb2tlbik7XG4gICAgcmV0dXJuIHBhcmFtcy50b1N0cmluZygpO1xuICB9LCBbZWxlbWVudFN0eWxlLCBmb3JtSWQsIHJlZmVycmVyLCBjaGVja291dFNlY3VyZVRva2VuXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRIYXNMb2FkZWQodHJ1ZSksIFtdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlmcmFtZVJlZi5jdXJyZW50IHx8ICFoYXNMb2FkZWQpIHJldHVybjtcbiAgICByZWdpc3RlcklmcmFtZShlbGVtZW50VHlwZSwgaWZyYW1lUmVmLmN1cnJlbnQpO1xuICB9LCBbaGFzTG9hZGVkXSk7XG4gIGlmICghY2hlY2tvdXRTZWN1cmVUb2tlbikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJbZm9ybV0gQ2Fubm90IHJlbmRlciBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgZnJhbWVcIik7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwge30pO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiaWZyYW1lXCIsXG4gICAge1xuICAgICAgaWQ6IGBvanMtJHtzdWJQYXRofS1lbGVtZW50YCxcbiAgICAgIG5hbWU6IGAke3N1YlBhdGh9LWVsZW1lbnRgLFxuICAgICAgY2xhc3NOYW1lOiBcIm9qcy1pZnJhbWVcIixcbiAgICAgIHNyYzogYCR7YmFzZVVybH0vYXBwL3YxLyR7c3ViUGF0aH0tZWxlbWVudC8/JHtxdWVyeVN0cmluZ31gLFxuICAgICAgc3R5bGU6IGZyYW1lU3R5bGUsXG4gICAgICByZWY6IGlmcmFtZVJlZlxuICAgIH1cbiAgKTtcbn07XG5cbmNvbnN0IENhcmRDdmNFbGVtZW50ID0gKHsgc3R5bGVzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudEZyYW1lLCB7IHN0eWxlcywgZWxlbWVudFR5cGU6IEVsZW1lbnRUeXBlRW51bS5DQVJEX0NWQyB9KTtcbn07XG5cbmNvbnN0IENhcmRFbGVtZW50ID0gKHsgc3R5bGVzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudEZyYW1lLCB7IHN0eWxlcywgZWxlbWVudFR5cGU6IEVsZW1lbnRUeXBlRW51bS5DQVJEIH0pO1xufTtcblxuY29uc3QgQ2FyZEV4cGlyeUVsZW1lbnQgPSAoeyBzdHlsZXMgfSkgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChFbGVtZW50RnJhbWUsIHsgc3R5bGVzLCBlbGVtZW50VHlwZTogRWxlbWVudFR5cGVFbnVtLkNBUkRfRVhQSVJZIH0pO1xufTtcblxuY29uc3QgQ2FyZE51bWJlckVsZW1lbnQgPSAoeyBzdHlsZXMgfSkgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChFbGVtZW50RnJhbWUsIHsgc3R5bGVzLCBlbGVtZW50VHlwZTogRWxlbWVudFR5cGVFbnVtLkNBUkRfTlVNQkVSIH0pO1xufTtcblxuZXhwb3J0IHsgQ2FyZEN2Y0VsZW1lbnQsIENhcmRFbGVtZW50LCBDYXJkRXhwaXJ5RWxlbWVudCwgQ2FyZE51bWJlckVsZW1lbnQsIEVsZW1lbnRzRm9ybSwgRmllbGROYW1lLCBQYXlJblN0YXRlLCB1c2VPcGVuUGF5RWxlbWVudHMgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLGlCQUFBQSxJQUFlLGNBQUFDLElBQVksWUFBQUMsSUFBVSxlQUFBQyxJQUFhLGFBQUFDLElBQVcsVUFBQUMsSUFBUSxXQUFBQyxVQUFlO0FBQzdGLFNBQVMsT0FBQUMsR0FBSyxZQUFBQyxVQUFnQjtBQUM5QixTQUFTLEtBQUtDLFNBQVc7QUFDekIsU0FBUyxNQUFBQyxVQUFVO0FBQ25CLFNBQVMsa0JBQUFDLFVBQXNCO0FBQy9CLE9BQU9DLFFBQVE7QUFFZixNQUFNQyxLQUFrQmIsR0FBYztBQUFBLEVBQ3BDLFFBQVE7QUFBQSxFQUNSLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFBQSxFQUNWLHFCQUFxQjtBQUFBLEVBQ3JCLGdCQUFnQixNQUFNO0FBQUEsRUFDdEI7QUFBQSxFQUNBLFNBQVM7QUFDWCxDQUFDLEdB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QWE3QixHQUFnQixZQUFZLENBQUM7IiwKICAibmFtZXMiOiBbImNyZWF0ZUNvbnRleHQiLCAidXNlQ29udGV4dCIsICJ1c2VTdGF0ZSIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlUmVmIiwgInVzZU1lbW8iLCAianN4IiwgIkZyYWdtZW50IiwgInokMSIsICJ2NCIsICJjb25uZWN0VG9DaGlsZCIsICJBZSIsICJFbGVtZW50c0NvbnRleHQiLCAidXNlT3BlblBheUVsZW1lbnRzIiwgImNvbnRleHQiLCAiZXQiLCAid24iLCAiZ24iLCAiYm4iLCAidm4iLCAiRW4iLCAiV2UiLCAiQ24iLCAiUG4iLCAiZSIsICJTbiIsICJIIiwgIkFuIiwgInIiLCAieCIsICJPIiwgIlAiLCAiaiIsICJJdCIsICJSdCIsICJGdCIsICJNdCIsICJkZSIsICJrbiIsICJUZSIsICJJbiIsICJxIiwgIlJuIiwgIkZuIiwgIk1uIiwgIkRuIiwgIk9uIiwgIk5uIiwgIlRuIiwgIkxuIiwgIlVuIiwgImpuIiwgInhuIiwgIiRuIiwgIkVlIiwgInpuIiwgIkduIiwgIlZuIiwgInFuIiwgIlluIiwgIktuIiwgIlduIiwgInR0IiwgIkpuIiwgIkhuIiwgIlpuIiwgIkkiLCAiQm4iLCAiUW4iLCAiRHQiLCAiWG4iLCAiZXIiLCAidHIiLCAibnIiLCAicnIiLCAib3IiLCAiTGUiLCAic3QiLCAibnQiLCAiYXIiLCAiaXIiLCAic3IiLCAiY3IiLCAibHIiLCAiYSIsICJpIiwgInMiLCAiYyIsICJ1ciIsICJKIiwgImRyIiwgInByIiwgIm1yIiwgInciLCAieXIiLCAiT3QiLCAiTnQiLCAiZnIiLCAiaHIiLCAieWUiLCAiX3IiLCAid3IiLCAiVHQiLCAiZ3IiLCAiYnIiLCAidnIiLCAiY3QiLCAiTHQiLCAibHQiLCAiVXQiLCAiRXIiLCAiQ3IiLCAianQiLCAiUHIiLCAiU3IiLCAiQXIiLCAia3IiLCAiSXIiLCAieHQiLCAiUnIiLCAiRnIiLCAiTXIiLCAiRHIiLCAiT3IiLCAiTnIiLCAiVHIiLCAiTHIiLCAiJHQiLCAiVSIsICJqciIsICJVciIsICJ4ciIsICJNIiwgImZlIiwgIiRyIiwgInpyIiwgIkciLCAiR3IiLCAiVnIiLCAicXIiLCAiaGUiLCAiWXIiLCAidXQiLCAiS3IiLCAicnQiLCAienQiLCAiV3IiLCAiR3QiLCAiVnQiLCAiVWUiLCAiZWUiLCAic2UiLCAiUyIsICJnaSIsICJKciIsICJDZSIsICJZIiwgIkhyIiwgImplIiwgInF0IiwgIll0IiwgInRlIiwgIlpyIiwgImR0IiwgIlIiLCAiQnIiLCAiUXIiLCAiWHIiLCAiZW8iLCAiZiIsICJoIiwgInkiLCAibSIsICJrIiwgInJvIiwgInRvIiwgIm5vIiwgImQiLCAibCIsICJ1IiwgIm9vIiwgIkt0IiwgImFvIiwgImlvIiwgInhlIiwgIld0IiwgInNvIiwgImNvIiwgImxvIiwgIkp0IiwgInVvIiwgInBvIiwgIkh0IiwgIm1vIiwgInlvIiwgImZvIiwgImhvIiwgIm90IiwgIl9vIiwgIndvIiwgImdvIiwgImJvIiwgInZvIiwgIlp0IiwgIkJ0IiwgIkVvIiwgInZlIiwgIk1lIiwgIkNvIiwgIlF0IiwgIlBvIiwgIlNvIiwgInB0IiwgIkFvIiwgImtvIiwgIl8iLCAidiIsICJJbyIsICJSbyIsICJDIiwgIm10IiwgInl0IiwgIkZvIiwgImciLCAiVG8iLCAiTm8iLCAiYiIsICJNbyIsICJEbyIsICJPbyIsICJWIiwgIkwiLCAiTG8iLCAiVW8iLCAiam8iLCAiYmUiLCAieG8iLCAiem8iLCAiJG8iLCAiR28iLCAiSyIsICJmdCIsICJWbyIsICJxbyIsICJBIiwgImNlIiwgIkUiLCAiTiIsICIkZSIsICJYdCIsICJxZSIsICJlbiIsICJ6ZSIsICJZbyIsICJ0biIsICJ6IiwgImxlIiwgIktvIiwgIldvIiwgIkQiLCAiX24iLCAiU2UiLCAicmUiLCAiVmUiLCAib2UiLCAiX2UiLCAibm4iLCAicm4iLCAiSm8iLCAiSG8iLCAiWm8iLCAib24iLCAiYW4iLCAiSWUiLCAiQm8iLCAiUW8iLCAiWG8iLCAidWUiLCAiSmUiLCAiZWEiLCAidGEiLCAibmEiLCAicmEiLCAiVCIsICJvYSIsICJhYSIsICJpYSIsICJzYSIsICJjYSIsICJzbiIsICJjbiIsICJ3ZSIsICJIZSIsICJsYSIsICJ1YSIsICJpZSIsICJnZSIsICJkYSIsICJwYSIsICJaZSIsICJuZSIsICJtYSIsICJsbiIsICJtZSIsICJEZSIsICJPZSIsICJwZSIsICJ5YSIsICJmYSIsICJGIiwgIkdlIiwgIlllIiwgIk5lIiwgIlBlIiwgImh0IiwgInVuIiwgImRuIiwgInBuIiwgIm1uIiwgInluIiwgIl90IiwgIlJlIiwgImF0IiwgImdhIiwgIkJlIiwgImhhIiwgIktlIiwgIl9hIiwgImtlIiwgIndhIiwgIml0IiwgImJhIiwgInZhIiwgIlgiLCAiQ2EiLCAid3QiLCAiRWEiLCAiUGEiLCAiU2EiLCAiQWEiLCAia2EiLCAiSWEiLCAiZm4iLCAiZ3QiLCAiUmEiLCAiRmEiLCAiYnQiLCAiTWEiLCAidnQiLCAiRGEiLCAiT2EiLCAiTmEiLCAiVGEiLCAiTGEiLCAiVWEiLCAiamEiLCAieGEiLCAiJGEiLCAiemEiLCAiR2EiLCAiVmEiLCAicWEiLCAiWWEiLCAiS2EiLCAiV2EiLCAiaG4iLCAiSmEiLCAiSGEiLCAiWmEiLCAiQmEiLCAiUWEiLCAiWGEiLCAiZWkiLCAidGkiLCAibmkiLCAicmkiLCAib2kiLCAiRmUiLCAiYWkiLCAiaWkiLCAiYWUiLCAic2kiLCAiY2kiLCAibGkiLCAiJCIsICJFdCIsICJXIiwgIm4iLCAiUWUiLCAidWkiLCAiQ3QiLCAiZGkiLCAicGkiLCAibWkiLCAiUHQiLCAiU3QiLCAiWiIsICJCIiwgIlEiLCAiQXQiLCAiUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IkMSIsICJab2RGaWVsZEVycm9yIiwgIm1ha2VDYWxsYmFja1NhZmUiLCAiY2FsbGJhY2tOYW1lIiwgImVycm9yTG9nZ2VyIiwgImFyZ3MiLCAiZXJyb3IiLCAiU3VibWl0TWV0aG9kcyIsICJTdWJtaXRNZXRob2RzMiIsICJSZXF1aXJlZFN0cmluZyIsICJPcHRpb25hbFN0cmluZyIsICJudWxsT3JVbmRlZk9yJDEiLCAielR5cGUiLCAiRmllbGROYW1lIiwgIkZpZWxkTmFtZTIiLCAiRmllbGROYW1lRW51bSIsICJQcml2YXRlRmllbGROYW1lIiwgIlByaXZhdGVGaWVsZE5hbWUyIiwgIlByaXZhdGVGaWVsZE5hbWVFbnVtIiwgIkFsbEZpZWxkTmFtZXMiLCAiRWxlbWVudFR5cGVFbnVtIiwgIkVsZW1lbnRUeXBlRW51bTIiLCAiQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEiLCAiUGF5bWVudE1ldGhvZE1pbmltYWwiLCAiRXZlbnRUeXBlIiwgIkdlbmVyaWNFdmVudFR5cGUiLCAiR2VuZXJpY0V2ZW50UGF5bG9hZCIsICJJbnB1dEV2ZW50VHlwZSIsICJJbnB1dEV2ZW50UGF5bG9hZCIsICJFcnJvckV2ZW50VHlwZSIsICJFcnJvckV2ZW50UGF5bG9hZCIsICJWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUiLCAiVmFsaWRhdGlvbkVycm9yRXZlbnRQYXlsb2FkIiwgIkxheW91dEV2ZW50UGF5bG9hZCIsICJMb2FkZWRFdmVudFBheWxvYWQiLCAiUGF5bWVudEZsb3dTdGFydGVkRXZlbnRQYXlsb2FkIiwgIlNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkIiwgIlJlcXVpcmVkRm9ybUZpZWxkcyIsICJQUkZvcm1GaWVsZHMiLCAiU3VibWl0RXZlbnRUeXBlIiwgIlN1Ym1pdEV2ZW50UGF5bG9hZCIsICJUb2tlbml6ZVN1Y2Nlc3NFdmVudFBheWxvYWQiLCAiQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkIiwgIkV2ZW50UGF5bG9hZCIsICJDaGVja291dFN1Y2Nlc3NSZXNwb25zZSIsICJGaWVsZFZhbGlkYXRpb25FcnJvciIsICJUb2tlbml6ZUNhcmRFcnJvclJlc3BvbnNlIiwgIkNvbW1vbk5leHRBY3Rpb25NZXRhZGF0YSIsICJjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyIsICJzdHlsZXMiLCAibnVsbE9yVW5kZWZPciIsICJDb3Vwb25NaW5pbWFsIiwgIkxpbmVJdGVtIiwgIkJyYW5kU2V0dGluZ3MiLCAiQnJhbmQiLCAiQ2hlY2tvdXRQYXltZW50TWV0aG9kIiwgIlN1YnNjcmlwdGlvbkl0ZW1NaW5pbWFsIiwgIlN1YnNjcmlwdGlvbk1pbmltYWwiLCAiSW52b2ljZUl0ZW1EaXNjb3VudEFtb3VudHNNaW5pbWFsIiwgIkludm9pY2VMaW5lSXRlbU1pbmltYWwiLCAiRGlzY291bnRNaW5pbWFsIiwgIkludm9pY2VNaW5pbWFsIiwgIkNyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCIsICJQcmV2aWV3Q2hlY2tvdXRSZXNwb25zZSIsICJfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uIiwgIlBheW1lbnRGb3JtUHJlZmlsbCIsICJDb21wbGV0ZWRGb3JtUHJlZmlsbCIsICJFeHBpcmVkRm9ybVByZWZpbGwiLCAiUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IiLCAiTmV3Q3VzdG9tZXJGaWVsZHMiLCAiUHJpY2VRdHkiLCAiQ2FydEluZm8iLCAiUHJvY2Vzc29yU3BlY2lmaWNNZXRhZGF0YSIsICJmaXhQcm90byIsICJ0YXJnZXQiLCAicHJvdG90eXBlIiwgInNldFByb3RvdHlwZU9mIiwgImZpeFN0YWNrIiwgImNhcHR1cmVTdGFja1RyYWNlIiwgIl9fZXh0ZW5kcyIsICJfZXh0ZW5kU3RhdGljcyIsICJwIiwgIl9fIiwgIl9zdXBlciIsICJDdXN0b21FcnJvciIsICJtZXNzYWdlIiwgIm9wdGlvbnMiLCAiX25ld1RhcmdldCIsICJfdGhpcyIsICJjcmVhdGVPanNGbG93TG9nZ2VycyIsICJwcmVmaXgiLCAibG9nIiwgImVyciIsICJBV1hfTE9BRElORyIsICJBZHllbkVudmlyb25tZW50IiwgIlBheW1lbnRQcm9jZXNzb3IiLCAiUGF5SW5TdGF0ZSIsICJQYXlJblN0YXRlMiIsICJQUl9MT0FESU5HIiwgImVycl9fIiwgIk9wdGlvbmFsRm4iLCAiWm9kRm9ybUNhbGxiYWNrcyIsICJfRm9ybUNhbGxiYWNrcyIsICJyYXdDYWxsYmFja3MiLCAia2V5IiwgInJhd0NhbGxiYWNrIiwgInNhZmVDYWxsYmFjayIsICJvYmoiLCAiaW5zdGFuY2UiLCAiRm9ybUNhbGxiYWNrcyIsICJ1c2VSZWFjdGl2ZUZvcm1DYWxsYmFja3MiLCAicHJvcHMiLCAiZm9ybUNhbGxiYWNrcyIsICJ1c2VQYXltZW50UmVxdWVzdHMiLCAib3JpZ2luYWxPblBheW1lbnRSZXF1ZXN0TG9hZCIsICJwYXltZW50UmVxdWVzdHMiLCAic2V0UGF5bWVudFJlcXVlc3RzIiwgIm92ZXJyaWRlbk9uUGF5bWVudFJlcXVlc3RMb2FkIiwgInBheW1lbnRSZXF1ZXN0czIiLCAiRk9STV9UQVJHRVQiLCAiRWxlbWVudHNGb3JtIiwgIm9wRm9ybSIsICJzZXRPcEZvcm0iLCAiZWxlbWVudHNDb250ZXh0VmFsdWUiLCAic2V0RWxlbWVudHNDb250ZXh0VmFsdWUiLCAibG9hZGVkIiwgInNldExvYWRlZCIsICJzdHJpcGVMaW5rQ3RybCIsICJzZXRTdHJpcGVMaW5rQ3RybCIsICJsb29wQ29uZmlnIiwgInNldExvb3BDb25maWciLCAiYWlyd2FsbGV4IiwgInNldEFpcndhbGxleCIsICJ0b3RhbEFtb3VudEF0b21zIiwgImN1cnJlbmN5IiwgImZvcm0iLCAidmFsdWUiLCAiZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUiLCAicmVzdWx0IiwgInByZXYiLCAiY2hpbGRyZW5Qcm9wcyIsICJFbGVtZW50RnJhbWUiLCAiZWxlbWVudFR5cGUiLCAiZm9ybUlkIiwgInJlZmVycmVyIiwgImZvcm1IZWlnaHQiLCAiY2hlY2tvdXRTZWN1cmVUb2tlbiIsICJyZWdpc3RlcklmcmFtZSIsICJiYXNlVXJsIiwgInN1YlBhdGgiLCAiaGFzTG9hZGVkIiwgInNldEhhc0xvYWRlZCIsICJpZnJhbWVSZWYiLCAiZWxlbWVudFN0eWxlIiwgImZyYW1lU3R5bGUiLCAicXVlcnlTdHJpbmciLCAicGFyYW1zIiwgIkNhcmRDdmNFbGVtZW50IiwgIkNhcmRFbGVtZW50IiwgIkNhcmRFeHBpcnlFbGVtZW50IiwgIkNhcmROdW1iZXJFbGVtZW50Il0KfQo=
|
|
4763
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXguanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgeiBhcyB6JDEgfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGNvbm5lY3RUb0NoaWxkIH0gZnJvbSAncGVucGFsJztcbmltcG9ydCBBZSBmcm9tICdjaGFsayc7XG5cbmNvbnN0IEVsZW1lbnRzQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoe1xuICBmb3JtSWQ6IFwiXCIsXG4gIGZvcm1IZWlnaHQ6IFwiXCIsXG4gIHJlZmVycmVyOiB2b2lkIDAsXG4gIGNoZWNrb3V0U2VjdXJlVG9rZW46IHZvaWQgMCxcbiAgcmVnaXN0ZXJJZnJhbWU6ICgpID0+IHtcbiAgfSxcbiAgYmFzZVVybDogXCJcIlxufSk7XG5cbmNvbnN0IHVzZU9wZW5QYXlFbGVtZW50cyA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRWxlbWVudHNDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlT3BlblBheUVsZW1lbnRzIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gT3BlblBheUVsZW1lbnRzUHJvdmlkZXJcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuXG5jb25zdCBldCA9IFwiaHR0cHM6Ly9jZGUuZ2V0b3BlbnBheS5jb21cIiwgd24gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pLCBnbiA9IHokMS5hcnJheSh3biksIGJuID0geiQxLm9iamVjdCh7XG4gIGNvZGU6IHokMS5zdHJpbmcoKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBwYXRoOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKVxufSksIHZuID0geiQxLmFycmF5KGJuKSwgRW4gPSB7XG4gIFwiZmFpbGVkIHRvIGZldGNoXCI6IFwiQ29ubmVjdGlvbiBlcnJvcjogcGxlYXNlIGRvdWJsZSBjaGVjayBpZiB5b3UgYXJlIGNvbm5lY3RlZCB0byB0aGUgaW50ZXJuZXQsIHRoZW4gdHJ5IGFnYWluXCJcbn0sIFdlID0gKHQpID0+IHtcbiAgY29uc3QgbiA9IHQudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gIHJldHVybiBFbltuXSA/PyB0O1xufSwgQ24gPSAodCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgSlNPTi5wYXJzZSh0KSA9PSBcIm9iamVjdFwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gITE7XG4gIH1cbn0sIFBuID0gKHQpID0+IHQubGVuZ3RoID09PSAxID8gV2UodFswXS5tc2cpIDogYFBsZWFzZSBmaXggdGhlIGZvbGxvd2luZyBlcnJvcnM6XG4ke3QubWFwKChlKSA9PiBg4oCiICR7V2UoZS5tc2cpfWApLmpvaW4oYFxuYCl9YCwgU24gPSAodCkgPT4gYEVuY291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZXJyb3JzOlxuJHt0Lm1hcCgoZSkgPT4gYC0gJHtlLnBhdGguam9pbihcIi9cIil9OiAke2UubWVzc2FnZX1gKS5qb2luKGBcbmApfWAsIEggPSAodCkgPT4ge1xuICBpZiAodCBpbnN0YW5jZW9mIEVycm9yKVxuICAgIGlmIChDbih0Lm1lc3NhZ2UpKSB7XG4gICAgICBjb25zdCBuID0gSlNPTi5wYXJzZSh0Lm1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIGduLnNhZmVQYXJzZShuKS5zdWNjZXNzID8gUG4obikgOiB2bi5zYWZlUGFyc2Uobikuc3VjY2VzcyA/IFNuKG4pIDogKGNvbnNvbGUud2FybihgRW5jb3VudGVyZWQgdW5rbm93biBzdHJpbmdpZmllZCBKU09OIG9iamVjdDpcbiR7dC5tZXNzYWdlfWApLCB0Lm1lc3NhZ2UpO1xuICAgIH0gZWxzZVxuICAgICAgcmV0dXJuIFdlKHQubWVzc2FnZSk7XG4gIGlmICh0eXBlb2YgdCA9PSBcIm9iamVjdFwiKVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodCk7XG4gICAgfSBjYXRjaCAobikge1xuICAgICAgcmV0dXJuIG4gKyBcIlwiO1xuICAgIH1cbiAgZWxzZVxuICAgIHJldHVybiB0ICsgXCJcIjtcbn0sIEFuID0gKHQsIG4sIGUpID0+ICguLi5yKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG4oLi4ucik7XG4gIH0gY2F0Y2ggKGEpIHtcbiAgICBlKGBbZm9ybV0gRXJyb3IgcnVubmluZyBjYWxsYmFjayAoJHt0fSk6YCwgYSk7XG4gICAgcmV0dXJuO1xuICB9XG59O1xudmFyIHggPSAvKiBAX19QVVJFX18gKi8gKCh0KSA9PiAodC5wb2NreXRQYXlwYWwgPSBcInBvY2t5dC1wYXlwYWxcIiwgdC5haXJ3YWxsZXhHb29nbGVQYXkgPSBcImFpcndhbGxleC1nb29nbGUtcGF5XCIsIHQuYWlyd2FsbGV4QXBwbGVQYXkgPSBcImFpcndhbGxleC1hcHBsZS1wYXlcIiwgdC5hdXRob3JpemVuZXRHb29nbGVQYXkgPSBcImF1dGhvcml6ZW5ldC1nb29nbGUtcGF5XCIsIHQuYXV0aG9yaXplbmV0QXBwbGVQYXkgPSBcImF1dGhvcml6ZW5ldC1hcHBsZS1wYXlcIiwgdC5sb29wQ3J5cHRvID0gXCJsb29wLWNyeXB0b1wiLCB0KSkoeCB8fCB7fSk7XG56JDEubmF0aXZlRW51bSh4KTsgY29uc3QgTyA9IHokMS5zdHJpbmcoKS50cmltKCkubWluKDEsIHsgbWVzc2FnZTogXCJDYW5ub3QgYmUgYmxhbmtcIiB9KSwgUCA9IHokMS5zdHJpbmcoKS50cmltKCkub3B0aW9uYWwoKSwgaiA9ICh0KSA9PiB6JDEubnVsbGFibGUodC5vcHRpb25hbCgpKTtcbnZhciBwID0gLyogQF9fUFVSRV9fICovICgodCkgPT4gKHQuRklSU1RfTkFNRSA9IFwiZmlyc3ROYW1lXCIsIHQuTEFTVF9OQU1FID0gXCJsYXN0TmFtZVwiLCB0LkVNQUlMID0gXCJlbWFpbFwiLCB0LlpJUF9DT0RFID0gXCJ6aXBDb2RlXCIsIHQuQ0lUWSA9IFwiY2l0eVwiLCB0LlNUQVRFID0gXCJzdGF0ZVwiLCB0LkNPVU5UUlkgPSBcImNvdW50cnlcIiwgdC5BRERSRVNTID0gXCJhZGRyZXNzXCIsIHQuUEhPTkUgPSBcInBob25lXCIsIHQuUFJPTU9USU9OX0NPREUgPSBcInByb21vdGlvbkNvZGVcIiwgdCkpKHAgfHwge30pO1xuY29uc3QgSXQgPSB6JDEubmF0aXZlRW51bShwKTtcbnZhciBSdCA9IC8qIEBfX1BVUkVfXyAqLyAoKHQpID0+ICh0LkNBUkRfTlVNQkVSID0gXCJjYXJkTnVtYmVyXCIsIHQuQ0FSRF9FWFBJUlkgPSBcImNhcmRFeHBpcnlcIiwgdC5DQVJEX0NWQyA9IFwiY2FyZEN2Y1wiLCB0KSkoUnQgfHwge30pO1xuY29uc3QgRnQgPSB6JDEubmF0aXZlRW51bShSdCksIE10ID0geiQxLnVuaW9uKFtJdCwgRnRdKTtcbnZhciBkZSA9IC8qIEBfX1BVUkVfXyAqLyAoKHQpID0+ICh0LkNBUkQgPSBcImNhcmRcIiwgdC5DQVJEX05VTUJFUiA9IFwiY2FyZC1udW1iZXJcIiwgdC5DQVJEX0VYUElSWSA9IFwiY2FyZC1leHBpcnlcIiwgdC5DQVJEX0NWQyA9IFwiY2FyZC1jdmNcIiwgdCkpKGRlIHx8IHt9KTtcbmNvbnN0IGtuID0geiQxLm5hdGl2ZUVudW0oZGUpLCBUZSA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnN0cmluZygpLFxuICBwcm9jZXNzb3JfbmFtZTogaih6JDEuc3RyaW5nKCkpLFxuICBtZXRhZGF0YTogaih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pLCBJbiA9IHokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBjYXJkTnVtYmVyOiBQLFxuICBleHBpcnk6IFAsXG4gIGN2YzogUFxufSk7XG56JDEub2JqZWN0KHtcbiAgYmFja2dyb3VuZENvbG9yOiBQLFxuICBjb2xvcjogUCxcbiAgZm9udEZhbWlseTogUCxcbiAgZm9udFNpemU6IFAsXG4gIGZvbnRXZWlnaHQ6IFAsXG4gIG1hcmdpbjogUCxcbiAgcGFkZGluZzogUCxcbiAgbGV0dGVyU3BhY2luZzogUCxcbiAgbGluZUhlaWdodDogUCxcbiAgaGlkZUljb246IFBcbn0pO1xuY29uc3QgcSA9IHokMS5lbnVtKFtcbiAgLy8gRWxlbWVudCAtPiBGb3JtXG4gIFwiTEFZT1VUXCIsXG4gIFwiTE9BREVEXCIsXG4gIFwiQkxVUlwiLFxuICBcIkZPQ1VTXCIsXG4gIFwiQ0hBTkdFXCIsXG4gIFwiVE9LRU5JWkVfU1RBUlRFRFwiLFxuICBcIkNIRUNLT1VUX1NUQVJURURcIixcbiAgXCJQQVlNRU5UX0ZMT1dfU1RBUlRFRFwiLFxuICBcIlRPS0VOSVpFX1NVQ0NFU1NcIixcbiAgXCJDSEVDS09VVF9TVUNDRVNTXCIsXG4gIFwiTE9BRF9FUlJPUlwiLFxuICBcIlZBTElEQVRJT05fRVJST1JcIixcbiAgXCJUT0tFTklaRV9FUlJPUlwiLFxuICBcIkNIRUNLT1VUX0VSUk9SXCIsXG4gIFwiU0VUVVBfUEFZTUVOVF9NRVRIT0RfU1VDQ0VTU1wiLFxuICAvLyBGb3JtIC0+IEVsZW1lbnRcbiAgXCJUT0tFTklaRVwiLFxuICBcIkNIRUNLT1VUXCIsXG4gIFwiU1RBUlRfUEFZTUVOVF9GTE9XXCJcbl0pLCBSbiA9IHEuZXh0cmFjdChbXCJUT0tFTklaRV9TVEFSVEVEXCIsIFwiQ0hFQ0tPVVRfU1RBUlRFRFwiXSksIEZuID0geiQxLm9iamVjdCh7IHR5cGU6IFJuIH0pLCBNbiA9IHEuZXh0cmFjdChbXCJCTFVSXCIsIFwiRk9DVVNcIiwgXCJDSEFOR0VcIl0pLCBEbiA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBNbixcbiAgZWxlbWVudFR5cGU6IEZ0LFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLm9wdGlvbmFsKClcbn0pLCBPbiA9IHEuZXh0cmFjdChbXCJMT0FEX0VSUk9SXCIsIFwiVE9LRU5JWkVfRVJST1JcIiwgXCJDSEVDS09VVF9FUlJPUlwiXSksIE5uID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IE9uLFxuICBtZXNzYWdlOiBPLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KSwgVG4gPSBxLmV4dHJhY3QoW1wiVkFMSURBVElPTl9FUlJPUlwiXSksIExuID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IFRuLFxuICBlbGVtZW50VHlwZTogTXQsXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pLCBVbiA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChxLmVudW0uTEFZT1VUKSxcbiAgaGVpZ2h0OiBPXG59KSwgam4gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwocS5lbnVtLkxPQURFRCksXG4gIHNlc3Npb25JZDogTyxcbiAgdG90YWxBbW91bnRBdG9tczogeiQxLm51bWJlcigpLFxuICBjdXJyZW5jeTogUCxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kczogeiQxLmFycmF5KFRlKVxufSksIHhuID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKHEuZW51bS5QQVlNRU5UX0ZMT1dfU1RBUlRFRCksXG4gIG5leHRBY3Rpb25NZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBzdGFydFBGTWV0YWRhdGE6IHokMS5vcHRpb25hbCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pLCAkbiA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChxLmVudW0uU0VUVVBfUEFZTUVOVF9NRVRIT0RfU1VDQ0VTUyksXG4gIHBheW1lbnRNZXRob2RJZDogeiQxLnN0cmluZygpXG59KSwgRWUgPSB6JDEub2JqZWN0KHtcbiAgZmlyc3ROYW1lOiBPLFxuICBsYXN0TmFtZTogTyxcbiAgZW1haWw6IE8sXG4gIHppcENvZGU6IE8sXG4gIGNvdW50cnk6IE8sXG4gIHByb21vdGlvbkNvZGU6IFBcbn0pLCB6biA9IHokMS5vYmplY3Qoe1xuICBmaXJzdE5hbWU6IFAsXG4gIGxhc3ROYW1lOiBQLFxuICBlbWFpbDogTyxcbiAgemlwQ29kZTogTyxcbiAgY291bnRyeTogTyxcbiAgcHJvbW90aW9uQ29kZTogUCxcbiAgYWRkcmVzczogUCxcbiAgY2l0eTogUCxcbiAgc3RhdGU6IFBcbn0pLCBHbiA9IHEuZXh0cmFjdChbXCJUT0tFTklaRVwiLCBcIkNIRUNLT1VUXCIsIFwiU1RBUlRfUEFZTUVOVF9GTE9XXCJdKSwgVm4gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogR24sXG4gIHNlc3Npb25JZDogTyxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBUZSxcbiAgcGF5bWVudEZsb3dNZXRhZGF0YTogeiQxLmFueSgpLm9wdGlvbmFsKCksXG4gIGRvTm90VXNlTGVnYWN5Q0NGbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGV4aXN0aW5nQ0NQTUlkOiBQXG59KS5leHRlbmQoRWUuc2hhcGUpLCBxbiA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChxLmVudW0uVE9LRU5JWkVfU1VDQ0VTUyksXG4gIGlzUmVhZHlGb3JDaGVja291dDogeiQxLmJvb2xlYW4oKVxufSksIFluID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKHEuZW51bS5DSEVDS09VVF9TVUNDRVNTKSxcbiAgaW52b2ljZVVybHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBzdWJzY3JpcHRpb25JZHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBjdXN0b21lcklkOiB6JDEuc3RyaW5nKClcbn0pLCBLbiA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgRm4sXG4gIERuLFxuICBObixcbiAgTG4sXG4gIFVuLFxuICBqbixcbiAgVm4sXG4gIHFuLFxuICBZbixcbiAgeG4sXG4gICRuXG5dKSwgV24gPSB6JDEub2JqZWN0KHtcbiAgcGF5bG9hZDogS24sXG4gIG5vbmNlOiBPLFxuICBmb3JtSWQ6IE8sXG4gIGVsZW1lbnRJZDogT1xufSk7XG56JDEub2JqZWN0KHtcbiAgYW1vdW50QXRvbTogeiQxLm51bWJlcigpLFxuICAvKipcbiAgICogVGhlIHRocmVlLWxldHRlciBJU08gNDIxNyBjdXJyZW5jeSBjb2RlIGZvciB0aGUgcGF5bWVudC5cbiAgICovXG4gIGN1cnJlbmN5OiBPXG59KTtcbnokMS5lbnVtKFtcImFwcGxlX3BheVwiLCBcImdvb2dsZV9wYXlcIl0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBleGlzdGluZ19jY19wbV9pZDogaih6JDEuc3RyaW5nKCkpLFxuICB0aGVpcl9wbV9pZDogaih6JDEuc3RyaW5nKCkpLFxuICBjaGVja291dF9hdHRlbXB0X2lkOiBqKHokMS5zdHJpbmcoKSksXG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogaih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgdHQgPSB6JDEub2JqZWN0KHtcbiAgaW52b2ljZV91cmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uX2lkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2lkOiB6JDEuc3RyaW5nKClcbn0pLCBKbiA9IHokMS5vYmplY3Qoe1xuICBlbGVtZW50VHlwZTogeiQxLnN0cmluZygpLFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgSG4gPSB6JDEub2JqZWN0KHtcbiAgc3VjY2VzczogeiQxLmxpdGVyYWwoITEpLFxuICBlcnJvcl90eXBlOiB6JDEubGl0ZXJhbChcInZhbGlkYXRpb25fZXJyb3JcIiksXG4gIGVycm9yczogeiQxLmFycmF5KEpuKVxufSksIFpuID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInN1Y2Nlc3NcIiwgW1xuICB6JDEub2JqZWN0KHsgc3VjY2VzczogeiQxLmxpdGVyYWwoITApIH0pLFxuICBIblxuXSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogVGUsXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IEVlLFxuICBkb19ub3RfdXNlX2xlZ2FjeV9jY19mbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGV4aXN0aW5nX2NjX3BtX2lkOiBqKHokMS5zdHJpbmcoKSksXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogVGUsXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IEVlLFxuICBleHRyYV9tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkub3B0aW9uYWwoKVxufSk7XG52YXIgSSA9IC8qIEBfX1BVUkVfXyAqLyAoKHQpID0+ICh0LlNVQ0NFU1MgPSBcInN1Y2Nlc3NcIiwgdC5GQUlMVVJFID0gXCJmYWlsdXJlXCIsIHQuQ0FOQ0VMTEVEID0gXCJjYW5jZWxsZWRcIiwgdCkpKEkgfHwge30pO1xuY29uc3QgQm4gPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXG4gICAgXCJzdWNjZXNzXCIsXG4gICAgXCJmYWlsdXJlXCIsXG4gICAgXCJjYW5jZWxsZWRcIlxuICAgIC8qIENBTkNFTExFRCAqL1xuICBdKSxcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG5jb25zdCBRbiA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogeiQxLnN0cmluZygpLFxuICBpbml0aWFsX2ludGVudF9pZDogeiQxLnN0cmluZygpLFxuICBjb25zZW50X2lkOiB6JDEuc3RyaW5nKCksXG4gIHRoZWlyX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSksIER0ID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgcmVkaXJlY3RfdXJsOiBqKHokMS5zdHJpbmcoKSksXG4gIGluaXRpYWxfaW50ZW50X2lkOiBqKHokMS5zdHJpbmcoKSksXG4gIGNvbnNlbnRfaWQ6IGooeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IGooeiQxLnN0cmluZygpKSxcbiAgcGF5bWVudF9zZXNzaW9uOiBqKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSksIFhuID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwoITApLCBocmVmOiB6JDEuc3RyaW5nKCkgfSksXG4gIHokMS5vYmplY3QoeyBwcmVzZW50OiB6JDEubGl0ZXJhbCghMSkgfSlcbl0pLCBlciA9IHokMS5vYmplY3Qoe1xuICBwYXltZW50X21ldGhvZHM6IHokMS5hcnJheShJbiksXG4gIHBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlOiBqKHR0KSxcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiBqKHokMS5hcnJheShEdCkpXG59KSwgdHIgPSAodCkgPT4ge1xuICBjb25zdCBuID0ge307XG4gIHJldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbZSwgcl0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYSA9IEl0LnBhcnNlKGUpO1xuICAgICAgQXJyYXkuaXNBcnJheShyKSA/IG5bYV0gPSByIDogQXJyYXkuaXNBcnJheShyLl9lcnJvcnMpICYmIChuW2FdID0gci5fZXJyb3JzKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0pLCBuO1xufSwgbnIgPSB6JDEub2JqZWN0KHtcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pLCByciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbn0pLCBvciA9IHtcbiAgdXNkOiBcInVzZFwiLFxuICBicmw6IFwiYnJsXCJcbn0sIExlID0gYXN5bmMgKHQpID0+IHtcbiAgZm9yIChsZXQgZSA9IDA7IGUgPCAxMDsgZSsrKVxuICAgIHN0KCkgfHwgYXdhaXQgbnQoNTAwKTtcbiAgaWYgKCFzdCgpKVxuICAgIHRocm93IGNvbnNvbGUubG9nKFwiU3RyaXBlIEpTIG5vdCBmb3VuZC5cIiksIG5ldyBFcnJvcihcIlN0cmlwZSBKUyBub3QgZm91bmQuXCIpO1xuICByZXR1cm4gbmV3IFN0cmlwZSh0KTtcbn0sIGFyID0gYXN5bmMgKHQsIG4pID0+IHtcbiAgY29uc3QgZSA9IGF3YWl0IExlKHQpO1xuICByZXR1cm4ge1xuICAgIGVsZW1lbnRzOiBlLmVsZW1lbnRzKG4pLFxuICAgIHN0cmlwZTogZVxuICB9O1xufSwgaXIgPSBhc3luYyAodCwgbiwgZSwgciwgYSkgPT4ge1xuICBjb25zdCBpID0gYXdhaXQgTGUodCksIHMgPSBvcltlLnRvTG93ZXJDYXNlKCkudHJpbSgpXTtcbiAgcmV0dXJuIGkucGF5bWVudFJlcXVlc3Qoe1xuICAgIC8vIFRPRE86IHJlcGxhY2UgdGhpcyB3aXRoIHN0cmlwZSBhY2NvdW50IGNvdW50cnkgYXMgc29vbiBhcyB3ZSBzdXBwb3J0IGl0XG4gICAgY291bnRyeTogXCJVU1wiLFxuICAgIGN1cnJlbmN5OiBzLFxuICAgIHRvdGFsOiB7XG4gICAgICBsYWJlbDogXCJUb3RhbFwiLFxuICAgICAgYW1vdW50OiBuLFxuICAgICAgcGVuZGluZzogclxuICAgIH0sXG4gICAgLy8gcmVxdWVzdFNoaXBwaW5nOiB0cnVlLFxuICAgIHJlcXVlc3RQYXllck5hbWU6ICEwLFxuICAgIHJlcXVlc3RQYXllckVtYWlsOiAhMCxcbiAgICBkaXNhYmxlV2FsbGV0czogW11cbiAgfSk7XG59LCBudCA9ICh0KSA9PiBuZXcgUHJvbWlzZSgobikgPT4ge1xuICBzZXRUaW1lb3V0KG4sIHQpO1xufSksIHN0ID0gKCkgPT4gXCJTdHJpcGVcIiBpbiB3aW5kb3csIHNyID0gYXN5bmMgKHQpID0+IG5ldyBQcm9taXNlKChuLCBlKSA9PiB7XG4gIHRyeSB7XG4gICAgdC5vbihcInBheW1lbnRtZXRob2RcIiwgYXN5bmMgKHIpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwicGF5bWVudG1ldGhvZCBFVlQ6OiBcIiwgciksIG4ocik7XG4gICAgfSksIHQub24oXCJ0b2tlblwiLCBhc3luYyAocikgPT4ge1xuICAgICAgY29uc29sZS5sb2coXCJ0b2tlbiBFVlQ6OiBcIiwgcik7XG4gICAgfSksIHQub24oXCJjYW5jZWxcIiwgKCkgPT4ge1xuICAgICAgZShuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCwgcGxlYXNlIGNsaWNrIFN1Ym1pdCBhZ2FpbiB0byBwYXlcIikpO1xuICAgIH0pO1xuICB9IGNhdGNoIChyKSB7XG4gICAgZShyKTtcbiAgfVxufSksIGNyID0gYXN5bmMgKHQsIG4pID0+IHtcbiAgaWYgKCF0LnN0cmlwZV9wayB8fCAhdC5jbGllbnRfc2VjcmV0KVxuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBuZXh0IGFjdGlvbiBtZXRhZGF0YSBmb3JtYXQ6ICR7SlNPTi5zdHJpbmdpZnkodCl9YCk7XG4gIGNvbnN0IHIgPSBhd2FpdCAoYXdhaXQgTGUodC5zdHJpcGVfcGspKS5jb25maXJtQ2FyZFNldHVwKHQuY2xpZW50X3NlY3JldCwge1xuICAgIHBheW1lbnRfbWV0aG9kOiBuLnBheW1lbnRNZXRob2QuaWRcbiAgfSk7XG4gIGlmIChyLmVycm9yKVxuICAgIHRocm93IG4uY29tcGxldGUoXCJmYWlsXCIpLCBuZXcgRXJyb3IoYFBheW1lbnQgZmFpbGVkOiAke3IuZXJyb3IubWVzc2FnZSA/PyBcInVua25vd25cIn1gKTtcbiAgcmV0dXJuIG4uY29tcGxldGUoXCJzdWNjZXNzXCIpLCByO1xufSwgbHIgPSBhc3luYyAodCkgPT4ge1xuICB2YXIgYSwgaSwgcywgYztcbiAgY29uc3QgZSA9IGF3YWl0IChhd2FpdCBMZSh0LnN0cmlwZV9waykpLmNvbmZpcm1DYXJkU2V0dXAodC5jbGllbnRfc2VjcmV0LCB7XG4gICAgcGF5bWVudF9tZXRob2Q6IHQuc3RyaXBlX3BtX2lkXG4gIH0pLCByID0gKGEgPSBlLnNldHVwSW50ZW50KSA9PSBudWxsID8gdm9pZCAwIDogYS5zdGF0dXM7XG4gIGlmIChyID09PSBcInN1Y2NlZWRlZFwiKVxuICAgIGNvbnNvbGUubG9nKFwiWzNEU10gQ09ORklSTUlORyBQTTpcIiwgdC5zdHJpcGVfcG1faWQpLCBjb25zb2xlLmxvZyhcIlszRFNdIFNldHVwIGludGVudCBjcmVhdGVkOlwiLCBlLnNldHVwSW50ZW50KTtcbiAgZWxzZSB0aHJvdyByID09PSBcImNhbmNlbGVkXCIgPyBuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCwgcGxlYXNlIGNsaWNrIFN1Ym1pdCBhZ2FpbiB0byBwYXlcIikgOiBuZXcgRXJyb3IoXG4gICAgYCR7KChpID0gZS5lcnJvcikgPT0gbnVsbCA/IHZvaWQgMCA6IGkubWVzc2FnZSkgPz8gKChjID0gKHMgPSBlLnNldHVwSW50ZW50KSA9PSBudWxsID8gdm9pZCAwIDogcy5sYXN0X3NldHVwX2Vycm9yKSA9PSBudWxsID8gdm9pZCAwIDogYy5tZXNzYWdlKSA/PyBcIlBheW1lbnQgZmFpbGVkLCBwbGVhc2UgY2xpY2sgc3VibWl0IGFnYWluIHRvIHBheS5cIn1gXG4gICk7XG59LCB1ciA9ICh0KSA9PiBKU09OLnN0cmluZ2lmeSh0KSwgSiA9ICh0LCBuKSA9PiBBcnJheS5mcm9tKHQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLW9waWRdXCIpID8/IFtdKS5yZWR1Y2UoKGEsIGkpID0+IHtcbiAgY29uc3QgcyA9IGkuZ2V0QXR0cmlidXRlKFwiZGF0YS1vcGlkXCIpO1xuICByZXR1cm4gcyA/IHsgLi4uYSwgW3NdOiBpLnZhbHVlIH0gOiBhO1xufSwge30pLCBkciA9ICh0KSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIFduLnBhcnNlKHQpO1xuICB9IGNhdGNoIChuKSB7XG4gICAgdGhyb3cgY29uc29sZS5lcnJvcihcIkVycm9yIHBhcnNpbmcgZXZlbnQgcGF5bG9hZDpcIiwgdCwgbiksIG47XG4gIH1cbn0sIHByID0gYXN5bmMgKHQpID0+IHtcbiAgaWYgKHR5cGVvZiB0ICE9IFwib2JqZWN0XCIgfHwgIXQpIHJldHVybiAhMTtcbiAgdHJ5IHtcbiAgICBjb25zdCBuID0geyB0eXBlOiBcInBpbmdcIiB9LCBlID0gYXdhaXQgdC5zZW5kKG4pO1xuICAgIGlmIChlICE9PSAhMClcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJ3RydWUnIGFmdGVyIHBpbmcsIGdvdCAke0pTT04uc3RyaW5naWZ5KGUpfWApO1xuICAgIHJldHVybiAhMDtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBDREUgY29ubmVjdGlvbiBjaGVjazpcIiwgbiksICExO1xuICB9XG59LCBtciA9ICh0LCBuKSA9PiAhIXQgJiYgbiwgdyA9ICh0KSA9PiB6JDEubnVsbGFibGUodC5vcHRpb25hbCgpKTtcbnokMS5zdHJpbmcoKS50cmltKCkubWluKDEsIHsgbWVzc2FnZTogXCJDYW5ub3QgYmUgYmxhbmtcIiB9KTtcbmNvbnN0IHlyID0geiQxLm9iamVjdCh7XG4gIGNkZV9yZXNwb25zZV90eXBlOiB6JDEubGl0ZXJhbChcImVycm9yXCIpLFxuICBtZXNzYWdlOiB6JDEuc3RyaW5nKCksXG4gIGhlYWRlcnM6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuc3RyaW5nKCkpLm9wdGlvbmFsKClcbn0pO1xueiQxLmVudW0oW1widXNkXCIsIFwiYnJsXCJdKTtcbmNvbnN0IE90ID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgYW1vdW50X2F0b21fb2ZmOiB3KHokMS5udW1iZXIoKSksXG4gIHBlcmNlbnRfb2ZmOiB3KHokMS5udW1iZXIoKSksXG4gIGN1cnJlbmN5OiB3KHokMS5zdHJpbmcoKSksXG4gIGR1cmF0aW9uOiB6JDEuc3RyaW5nKCksXG4gIGR1cmF0aW9uX2luX21vbnRoczogdyh6JDEubnVtYmVyKCkpXG59KSwgTnQgPSB6JDEub2JqZWN0KHtcbiAgYW1vdW50X3N1YnRvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYW1vdW50X3RvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgY3VycmVuY3k6IHokMS5zdHJpbmcoKSxcbiAgZGVzY3JpcHRpb246IHcoeiQxLnN0cmluZygpKSxcbiAgcHJpY2VfaWQ6IHokMS5zdHJpbmcoKSxcbiAgYmlsbGluZ19pbnRlcnZhbDogdyh6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsX2NvdW50OiB3KHokMS5udW1iZXIoKS5pbnQoKSksXG4gIHF1YW50aXR5OiB6JDEubnVtYmVyKCkuaW50KClcbn0pLCBmciA9IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLCBociA9IHokMS5vYmplY3Qoe1xuICBuYW1lOiB6JDEuc3RyaW5nKCksXG4gIHNldHRpbmdzOiB3KGZyKVxufSksIHllID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIHByb2Nlc3Nvcl9uYW1lOiB3KHokMS5zdHJpbmcoKSksXG4gIG1ldGFkYXRhOiB3KHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSksIF9yID0geiQxLm9iamVjdCh7XG4gIHF1YW50aXR5OiB6JDEubnVtYmVyKClcbn0pLCB3ciA9IHokMS5vYmplY3Qoe1xuICBpZDogdyh6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsOiB3KHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfaW50ZXJ2YWxfY291bnQ6IHcoeiQxLm51bWJlcigpLmludCgpKSxcbiAgc3Vic2NyaXB0aW9uX2l0ZW1zOiB6JDEuYXJyYXkoX3IpLFxuICB0cmlhbF9zdGFydDogdyh6JDEuc3RyaW5nKCkpLFxuICB0cmlhbF9lbmQ6IHcoeiQxLnN0cmluZygpKVxufSksIFR0ID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9hdG9tOiB6JDEubnVtYmVyKClcbn0pLCBnciA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICBhbW91bnRfYXRvbV9jb25zaWRlcmluZ19kaXNjb3VudF9hcHBsaWVkOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRpc2NvdW50X2Ftb3VudF9hdG9tczogeiQxLmFycmF5KFR0KSxcbiAgc3Vic2NyaXB0aW9uX2l0ZW1faWQ6IHokMS5zdHJpbmcoKVxufSksIGJyID0geiQxLm9iamVjdCh7XG4gIGNvdXBvbjogT3Rcbn0pLCB2ciA9IHokMS5vYmplY3Qoe1xuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkaXNjb3VudHM6IHokMS5hcnJheShiciksXG4gIGhvc3RlZF9pbnZvaWNlX3VybDogdyh6JDEuc3RyaW5nKCkpLFxuICBsaW5lczogeiQxLmFycmF5KGdyKSxcbiAgcmVtYWluaW5nX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRheF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9kaXNjb3VudF9hbW91bnRfYXRvbXM6IHokMS5hcnJheShUdClcbn0pLCBjdCA9IHokMS5vYmplY3Qoe1xuICBjcmVhdGVkOiB6JDEuYXJyYXkod3IpLFxuICBpbnZvaWNlczogeiQxLmFycmF5KHZyKVxufSksIEx0ID0geiQxLm9iamVjdCh7XG4gIHByZXZpZXc6IGN0LFxuICBwcmV2aWV3X3Bvc3RfdHJpYWw6IHcoY3QpLFxuICBjb3Vwb25zOiB6JDEuYXJyYXkoT3QpXG59KSwgbHQgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEubGl0ZXJhbChcIm9wZW5cIiksXG4gIGxvY2FsZTogeiQxLnN0cmluZygpLFxuICB0b2tlbjogeiQxLnN0cmluZygpLFxuICBlbWFpbDogdyh6JDEuc3RyaW5nKCkpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoTnQpLFxuICBhbW91bnRfc3VidG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBhbW91bnRfdG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBicmFuZDogaHIsXG4gIHN1YnNfcHJldmlldzogdyhMdCksXG4gIC8vIE51bGwgaW4gc2V0dXAgbW9kZVxuICBtZXRob2RzX2F2YWlsYWJsZTogeiQxLmFycmF5KHllKVxufSksIFV0ID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcIm1vZGVcIiwgW1xuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEubGl0ZXJhbChcInNldHVwXCIpLFxuICAgIGN1cnJlbmN5OiB6JDEubnVsbGFibGUoeiQxLnVuZGVmaW5lZCgpKVxuICB9KS5leHRlbmQobHQuc2hhcGUpLFxuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEuZW51bShbXCJwYXltZW50XCIsIFwic3Vic2NyaXB0aW9uXCJdKSxcbiAgICBjdXJyZW5jeTogeiQxLnN0cmluZygpXG4gIH0pLmV4dGVuZChsdC5zaGFwZSlcbl0pLCBFciA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiY29tcGxldGVcIilcbn0pLCBDciA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiZXhwaXJlZFwiKVxufSk7XG56JDEudW5pb24oW1V0LCBFciwgQ3JdKTtcbnokMS5vYmplY3Qoe1xuICBsb2dvOiB6JDEuc3RyaW5nKCksXG4gIGljb246IHokMS5zdHJpbmcoKSxcbiAgcHJpbWFyeV9jb2xvcjogeiQxLnN0cmluZygpLFxuICBzZWNvbmRhcnlfY29sb3I6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIHBtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwYXltZW50X2lucHV0OiB6JDEuYW55KCksXG4gIC8vIFNob3VsZCBmb2xsb3cgQW55UGF5bWVudElucHV0IGZyb20gQ0RFXG4gIGN1c3RvbWVyX2ZpcnN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9sYXN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9lbWFpbDogeiQxLnN0cmluZygpLFxuICBjdXN0b21lcl96aXBfY29kZTogeiQxLnN0cmluZygpLFxuICBjdXN0b21lcl9jb3VudHJ5OiB6JDEuc3RyaW5nKCksXG4gIGxpbmVfaXRlbXM6IHokMS5hcnJheShOdCksXG4gIHRvdGFsX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGNhbmNlbF9hdF9lbmQ6IHokMS5ib29sZWFuKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB5ZSxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkb19ub3RfdXNlX2xlZ2FjeV9jY19mbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHVzZV9jb25maXJtZWRfcG1faWQ6IHcoeiQxLnN0cmluZygpKVxufSk7XG5jb25zdCBqdCA9IHokMS5vYmplY3Qoe1xuICBwYXltZW50X21ldGhvZF9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpLFxuICByZXR1cm5fdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgUHIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLmFycmF5KFByKTtcbmNvbnN0IFNyID0geiQxLm9iamVjdCh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9hZGRyZXNzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KSwgQXIgPSB6JDEub2JqZWN0KHtcbiAgcHJpY2VfaWQ6IHokMS5zdHJpbmcoKSxcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKS5pbnQoKVxufSksIGtyID0geiQxLm9iamVjdCh7XG4gIGxpbmVfaXRlbXM6IHokMS5hcnJheShBciksXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KClcbn0pLCBJciA9IHokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHcoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBwYXltZW50X3Byb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB5ZSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0aGVpcl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZV9wYXlfZmlyc3RfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IGtyLm9wdGlvbmFsKClcbn0pLmV4dGVuZChTci5zaGFwZSkuZXh0ZW5kKElyLnNoYXBlKTtcbmNvbnN0IHh0ID0geiQxLm9iamVjdCh7XG4gIHJlcXVpcmVkX3VzZXJfYWN0aW9uczogeiQxLmFycmF5KHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKSxcbiAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogdyh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBmaWVsZHM6IHpuLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IHllXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IEVlLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogeWUsXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKVxuICAvLyBUaGlzIGlzIG9wdGlvbmFsIGluIENERSwgYnV0IG5vdCBpbiBPSlMgbW92aW5nIGZvcndhcmRcbn0pO1xuY29uc3QgUnIgPSB6JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjY19wbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5yZWNvcmQoeiQxLmFueSgpKTtcbnokMS5vYmplY3Qoe1xuICBmaXJzdF9uYW1lOiB3KHokMS5zdHJpbmcoKSksXG4gIGxhc3RfbmFtZTogdyh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMTogdyh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMjogdyh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMzogdyh6JDEuc3RyaW5nKCkpLFxuICBjaXR5OiB3KHokMS5zdHJpbmcoKSksXG4gIHN0YXRlOiB3KHokMS5zdHJpbmcoKSksXG4gIGNvdW50cnk6IHcoeiQxLnN0cmluZygpKSxcbiAgemlwX2NvZGU6IHcoeiQxLnN0cmluZygpKSxcbiAgZW1haWw6IHcoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19lbWFpbDogdyh6JDEuc3RyaW5nKCkpLFxuICBwaG9uZV9udW1iZXI6IHcoeiQxLnN0cmluZygpKSxcbiAgdXBkYXRlX3Byb2Nlc3Nvcl9jdXN0b21lcjogdyh6JDEuYm9vbGVhbigpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IHcoeiQxLnN0cmluZygpKSxcbiAgZmlyc3RfbmFtZTogdyh6JDEuc3RyaW5nKCkpLFxuICBsYXN0X25hbWU6IHcoeiQxLnN0cmluZygpKSxcbiAgcGhvbmVfbnVtYmVyOiB3KHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfZW1haWw6IHcoeiQxLnN0cmluZygpKSxcbiAgYWRkcmVzczogdyh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBGciA9IHokMS5vYmplY3Qoe1xuICBlcnJvcl9jb2RlOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB5ZSxcbiAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5hbnkoKSkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBNciA9IHokMS5vYmplY3Qoe1xuICBuZXh0X2FjdGlvbl9tZXRhZGF0YTogdyh6JDEucmVjb3JkKHokMS5hbnkoKSkpXG59KSwgRHIgPSAodCkgPT4gdC5yZWR1Y2UoKG4sIGUpID0+IG4gKyBlLCAwKTtcbmZ1bmN0aW9uIE9yKHQsIG4pIHtcbiAgdmFyIGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2Y7XG4gIGUgPyBlKHQsIG4pIDogdC5fX3Byb3RvX18gPSBuO1xufVxuZnVuY3Rpb24gTnIodCwgbikge1xuICBuID09PSB2b2lkIDAgJiYgKG4gPSB0LmNvbnN0cnVjdG9yKTtcbiAgdmFyIGUgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcbiAgZSAmJiBlKHQsIG4pO1xufVxudmFyIFRyID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgdCA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgICByZXR1cm4gdCA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7XG4gICAgICBfX3Byb3RvX186IFtdXG4gICAgfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgIGEuX19wcm90b19fID0gaTtcbiAgICB9IHx8IGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgIGZvciAodmFyIHMgaW4gaSlcbiAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGksIHMpICYmIChhW3NdID0gaVtzXSk7XG4gICAgfSwgdChlLCByKTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKG4sIGUpIHtcbiAgICBpZiAodHlwZW9mIGUgIT0gXCJmdW5jdGlvblwiICYmIGUgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGUpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICB0KG4sIGUpO1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gbjtcbiAgICB9XG4gICAgbi5wcm90b3R5cGUgPSBlID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShlKSA6IChyLnByb3RvdHlwZSA9IGUucHJvdG90eXBlLCBuZXcgcigpKTtcbiAgfTtcbn0oKSwgTHIgPSBmdW5jdGlvbih0KSB7XG4gIFRyKG4sIHQpO1xuICBmdW5jdGlvbiBuKGUsIHIpIHtcbiAgICB2YXIgYSA9IHRoaXMuY29uc3RydWN0b3IsIGkgPSB0LmNhbGwodGhpcywgZSwgcikgfHwgdGhpcztcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYS5uYW1lLFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9yKGksIGEucHJvdG90eXBlKSwgTnIoaSksIGk7XG4gIH1cbiAgcmV0dXJuIG47XG59KEVycm9yKTtcbmNsYXNzICR0IGV4dGVuZHMgTHIge1xuICBjb25zdHJ1Y3RvcihuKSB7XG4gICAgY29uc3QgZSA9IGAke24ubWVzc2FnZX1gO1xuICAgIHN1cGVyKGUpLCB0aGlzLnJlc3BvbnNlID0gbjtcbiAgfVxuICBnZXQgb3JpZ2luYWxFcnJvck1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2UubWVzc2FnZTtcbiAgfVxufVxuY29uc3QgVSA9IGFzeW5jICh0LCBuLCBlKSA9PiB7XG4gIGNvbnN0IHIgPSBhd2FpdCB0LnNlbmQobik7XG4gIGlmIChqcihyKSlcbiAgICB0aHJvdyBuZXcgJHQocik7XG4gIGlmICghVXIociwgZSkpIHtcbiAgICBjb25zdCBhID0gZS5zYWZlUGFyc2Uocik7XG4gICAgdGhyb3cgYS5zdWNjZXNzID8gbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZVwiKSA6IChjb25zb2xlLmVycm9yKFwiT0pTIHF1ZXJ5QXBpIGdvdCBhIHNjaGVtYSBlcnJvci4gRXhwZWN0ZWQgc2NoZW1hOlwiLCBlLCBcIkFjdHVhbDpcIiwgciksIGEuZXJyb3IpO1xuICB9XG4gIHJldHVybiByO1xufSwgVXIgPSAodCwgbikgPT4gbi5zYWZlUGFyc2UodCkuc3VjY2VzcywganIgPSAodCkgPT4geXIuc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsIHhyID0gYXN5bmMgKHQsIG4pID0+IGF3YWl0IFUodCwgeyB0eXBlOiBcImdldF9jaGVja291dF9wcmV2aWV3XCIsIHBheWxvYWQ6IG4gfSwgTHQpLCBNID0gYXN5bmMgKHQpID0+IGF3YWl0IFUodCwgeyB0eXBlOiBcImdldF9wcmVmaWxsXCIsIHBheWxvYWQ6IHt9IH0sIFV0KSwgZmUgPSBhc3luYyAodCwgbikgPT4gYXdhaXQgVSh0LCB7IHR5cGU6IFwidjJfc3RhcnRfcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IG4gfSwgeHQpLCAkciA9IGFzeW5jICh0LCBuKSA9PiBhd2FpdCBVKHQsIHsgdHlwZTogXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX2NjXCIsIHBheWxvYWQ6IG4gfSwgUnIpLCB6ciA9IGFzeW5jICh0LCBuKSA9PiBhd2FpdCBVKHQsIHsgdHlwZTogXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX3ByXCIsIHBheWxvYWQ6IG4gfSwgeHQpLCBHID0gYXN5bmMgKHQsIG4pID0+IGF3YWl0IFUodCwgeyB0eXBlOiBcImNvbmZpcm1fcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IG4gfSwgZXIpLCBHciA9IGFzeW5jICh0LCBuKSA9PiBhd2FpdCBVKHQsIHsgdHlwZTogXCJmaW5hbGl6ZV9zZXR1cF9wYXltZW50X21ldGhvZFwiLCBwYXlsb2FkOiBuIH0sIGp0KSwgVnIgPSBhc3luYyAodCwgbikgPT4gYXdhaXQgVShcbiAgdCxcbiAgeyB0eXBlOiBcImNoZWNrX2lmX3BvcHVwX3dpbmRvd192ZXJpZmllZFwiLCBwYXlsb2FkOiBuIH0sXG4gIFhuXG4pLCBxciA9IGFzeW5jICh0LCBuLCBlKSA9PiB7XG4gIGNvbnN0IHIgPSBhd2FpdCB4cih0LCB7XG4gICAgc2VjdXJlX3Rva2VuOiBuLFxuICAgIHByb21vdGlvbl9jb2RlOiBlXG4gIH0pLCBhID0gbmV3IFNldChyLnByZXZpZXcuaW52b2ljZXMubWFwKChjKSA9PiBjLmN1cnJlbmN5KSk7XG4gIGlmIChhLnNpemUgIT09IDEpXG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBleGFjdGx5IG9uZSBjdXJyZW5jeSwgZ290ICR7YS5zaXplfWApO1xuICBjb25zdCBpID0gYS52YWx1ZXMoKS5uZXh0KCkudmFsdWUgPz8gXCJ1c2RcIiwgcyA9IERyKHIucHJldmlldy5pbnZvaWNlcy5tYXAoKGMpID0+IGMucmVtYWluaW5nX2Ftb3VudF9hdG9tKSk7XG4gIHJldHVybiB7XG4gICAgY3VycmVuY3k6IGksXG4gICAgYW1vdW50QXRvbTogc1xuICB9O1xufSwgaGUgPSBhc3luYyAodCwgbiwgZSwgcikgPT4ge1xuICBpZiAoZSlcbiAgICByZXR1cm4geyBhbW91bnRBdG9tOiAwLCBjdXJyZW5jeTogXCJ1c2RcIiB9O1xuICB7XG4gICAgciA9IHIgfHwgdm9pZCAwO1xuICAgIGNvbnN0IGEgPSBhd2FpdCBxcih0LCBuLCByKTtcbiAgICByZXR1cm4geyBhbW91bnRBdG9tOiBhLmFtb3VudEF0b20sIGN1cnJlbmN5OiBhLmN1cnJlbmN5IH07XG4gIH1cbn0sIFlyID0gYXN5bmMgKHQsIG4pID0+IHtcbiAgaWYgKHQuc2l6ZSA9PT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBDREUgY29ubmVjdGlvbnMgZm91bmRcIik7XG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBBcnJheS5mcm9tKHQudmFsdWVzKCkpLm1hcChcbiAgICAgIChyKSA9PiBVKHIsIHsgdHlwZTogXCJ0b2tlbml6ZV9jYXJkXCIsIHBheWxvYWQ6IG4gfSwgWm4pXG4gICAgKVxuICApO1xufSwgdXQgPSBhc3luYyAodCwgbikgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBVKHQsIHsgdHlwZTogXCJjaGVja291dF9jYXJkX2VsZW1lbnRzXCIsIHBheWxvYWQ6IG4gfSwgdHQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgY29uc29sZS5lcnJvcihcIltjZGUtY2xpZW50XSBFcnJvciBkdXJpbmcgY2hlY2tvdXRDYXJkRWxlbWVudHM6XCIsIGUsIEpTT04uc3RyaW5naWZ5KGUpKSwgZTtcbiAgfVxufSwgS3IgPSBhc3luYyAodCwgbikgPT4gYXdhaXQgVSh0LCB7IHR5cGU6IFwic2V0dXBfcGF5bWVudF9tZXRob2RcIiwgcGF5bG9hZDogbiB9LCBqdCksIHJ0ID0gYXN5bmMgKHQsIG4pID0+IGF3YWl0IFUodCwgeyB0eXBlOiBcImNoZWNrb3V0XCIsIHBheWxvYWQ6IG4gfSwgdHQpLCB6dCA9IDFlMywgV3IgPSBhc3luYyAodCwgbikgPT4ge1xuICBjb25zb2xlLmxvZyhuKTtcbiAgY29uc3QgciA9IGF3YWl0IGNvbm5lY3RUb0NoaWxkKHtcbiAgICBpZnJhbWU6IHQsXG4gICAgZGVidWc6ICEwLFxuICAgIHRpbWVvdXQ6IHp0LFxuICAgIGNoaWxkT3JpZ2luOiBcIipcIlxuICAgIC8vIFRPRE86IHVzZSB3aXRoIHByb3BlciBjaGlsZE9yaWdpblxuICB9KS5wcm9taXNlLCBhID0gYXdhaXQgVShyLCB7IHR5cGU6IFwicGluZy0zZHMtc3RhdHVzXCIgfSwgQm4pO1xuICByZXR1cm4gY29uc29sZS5sb2coXCLwn5+iIENERSBjb25uZWN0aW9uIHN1Y2Nlc3NmdWwhIFN0b3BwaW5nIHBvbGxpbmcuLi4gUmVzdWx0OlwiLCBhKSwgYTtcbn0sIEd0ID0gYXN5bmMgKHQsIG4pID0+IGF3YWl0IFUodCwgeyB0eXBlOiBcInByZXBhcmVfcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IG4gfSwgTXIpLCBWdCA9IGFzeW5jICh0LCBuKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBVKFxuICAgICAgdCxcbiAgICAgIHsgdHlwZTogXCJnZXRfc3RhbmRhcmRpemVkX2Vycm9yX2NvZGVcIiwgcGF5bG9hZDogeyBtZXNzYWdlOiBuIH0gfSxcbiAgICAgIEZyXG4gICAgKSkuZXJyb3JfY29kZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBjb25zb2xlLmVycm9yKFwiW2NkZS1jbGllbnRdIEVycm9yIGR1cmluZyBnZXRTdGFuZGFyZGl6ZWRFcnJvckNvZGU6XCIsIEgoZSkpLCBcIlBBWU1FTlRfRkFJTEVEX0dFTkVSSUNcIjtcbiAgfVxufTtcbmZ1bmN0aW9uIFVlKHQpIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQgY2FzZTogJHt0fWApO1xufVxuY29uc3QgZWUgPSAodCkgPT4gYXN5bmMgKG4pID0+IHtcbiAgdmFyIGUsIHI7XG4gIHRyeSB7XG4gICAgKHIgPSAoZSA9IG4uZm9ybUNhbGxiYWNrcy5nZXQpLm9uQ2hlY2tvdXRTdGFydGVkKSA9PSBudWxsIHx8IHIuY2FsbChlKTtcbiAgICBjb25zdCBhID0gYXdhaXQgdChuKTtcbiAgICBpZiAoYS5tb2RlID09PSBcInNldHVwXCIpXG4gICAgICBuLmZvcm1DYWxsYmFja3MuZ2V0Lm9uU2V0dXBQYXltZW50TWV0aG9kU3VjY2VzcyhhLnJlc3VsdC5wYXltZW50X21ldGhvZF9pZCk7XG4gICAgZWxzZSBpZiAoYS5tb2RlID09PSBcImNoZWNrb3V0XCIpXG4gICAgICBuLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQ2hlY2tvdXRTdWNjZXNzKFxuICAgICAgICBhLnJlc3VsdC5pbnZvaWNlX3VybHMsXG4gICAgICAgIGEucmVzdWx0LnN1YnNjcmlwdGlvbl9pZHMsXG4gICAgICAgIGEucmVzdWx0LmN1c3RvbWVyX2lkXG4gICAgICApO1xuICAgIGVsc2VcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIG1vZGU6ICR7YX1gKTtcbiAgfSBjYXRjaCAoYSkge1xuICAgIGNvbnN0IGkgPSBIKGEpLCBzID0gYXdhaXQgVnQobi5jb250ZXh0LmFueUNkZUNvbm5lY3Rpb24sIGkpO1xuICAgIG4uZm9ybUNhbGxiYWNrcy5nZXQub25DaGVja291dEVycm9yKGksIHMpO1xuICB9XG59LCBzZSA9ICh0KSA9PiBhc3luYyAobikgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB0KG4pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc3QgeyBlcnJfXzogciB9ID0gUyhcImluaXQtZXJyb3ItY2F0Y2hlclwiKSwgYSA9IEgoZSksIGkgPSBhd2FpdCBWdChuLmNvbnRleHQuYW55Q2RlQ29ubmVjdGlvbiwgYSk7XG4gICAgcmV0dXJuIHIoaSwgYSwgZSksIHsgaXNBdmFpbGFibGU6ICExLCByZWFzb246IGEsIGVycm9yQ29kZTogaSB9O1xuICB9XG59LCBTID0gKHQpID0+IHtcbiAgY29uc3QgbiA9ICguLi5yKSA9PiB7XG4gICAgd2luZG93LmNvbnNvbGUubG9nKGAke0FlLmdyZWVuLmJvbGQoXCJvanMvXCIpfSR7QWUuYm9sZC5ncmF5KGAke3R9YCl9XHRgLCAuLi5yKTtcbiAgfSwgZSA9ICguLi5yKSA9PiB7XG4gICAgd2luZG93LmNvbnNvbGUud2FybihgJHtBZS5yZWQuYm9sZChcIm9qcy9cIil9JHtBZS5ib2xkLmdyYXkoYCR7dH1gKX1cdGAsIC4uLnIpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGxvZzogbixcbiAgICBlcnI6IGUsXG4gICAgbG9nX186IG4sXG4gICAgZXJyX186IGVcbiAgfTtcbn0sIHsgbG9nX186IGdpLCBlcnJfXzogSnIgfSA9IFMoXCJjb21tb25cIiksIENlID0gKHQpID0+IHtcbiAgaWYgKHQucGF5bWVudF9tZXRob2RzLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGV4YWN0bHkgb25lIHBheW1lbnQgbWV0aG9kLCBnb3QgJHt0LnBheW1lbnRfbWV0aG9kcy5sZW5ndGh9YCk7XG4gIHJldHVybiB7IHBheW1lbnRfbWV0aG9kX2lkOiB0LnBheW1lbnRfbWV0aG9kc1swXS5pZCB9O1xufSwgWSA9ICh0LCBuKSA9PiB7XG4gIGNvbnN0IGUgPSB0LmZpbmQoKHIpID0+IG4uc2FmZVBhcnNlKHIpLnN1Y2Nlc3MpO1xuICBpZiAoIWUpXG4gICAgdGhyb3cgSnIoXCJObyBDUE1zIGZvdW5kIGZvciBtb2RlbC4gQWxsIG1vZGVsczpcIiwgdCksIG5ldyBFcnJvcihcIk5vIENQTXMgZm91bmQgZm9yIG1vZGVsXCIpO1xuICByZXR1cm4gbi5wYXJzZShlKTtcbn0sIEhyID0gKHQpID0+ICh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogdC5lbWFpbCxcbiAgbmV3X2N1c3RvbWVyX2FkZHJlc3M6IHtcbiAgICB6aXBfY29kZTogdC56aXBDb2RlLFxuICAgIGNvdW50cnk6IHQuY291bnRyeVxuICB9LFxuICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogdC5maXJzdE5hbWUsXG4gIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHQubGFzdE5hbWVcbn0pLCBqZSA9IGFzeW5jICh0KSA9PiB7XG4gIGNvbnN0IHsgbG9nX186IG4gfSA9IFModC5sb2dQcmVmaXgpLCBlID0gYXdhaXQgTSh0LmFueUNkZUNvbm5lY3Rpb24pLCByID0gQ2UodC5jb25maXJtUmVzdWx0KTtcbiAgaWYgKGUubW9kZSA9PT0gXCJzZXR1cFwiKVxuICAgIHJldHVybiBuKFwiU2V0dGluZyB1cCBwYXltZW50IG1ldGhvZC4uLlwiKSwgeyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogYXdhaXQgR3IodC5hbnlDZGVDb25uZWN0aW9uLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGUudG9rZW4sXG4gICAgICBwbV9pZDogci5wYXltZW50X21ldGhvZF9pZFxuICAgIH0pIH07XG4gIHtcbiAgICBuKFwiRG9pbmcgY2hlY2tvdXQuLi5cIik7XG4gICAgY29uc3QgYSA9IHtcbiAgICAgIHNlY3VyZV90b2tlbjogZS50b2tlbixcbiAgICAgIHBheW1lbnRfaW5wdXQ6IHtcbiAgICAgICAgcHJvdmlkZXJfdHlwZTogdC5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXJcbiAgICAgIH0sXG4gICAgICBjdXN0b21lcl9lbWFpbDogdC5yZXF1aXJlZEZvcm1GaWVsZHNbcC5FTUFJTF0sXG4gICAgICBjdXN0b21lcl96aXBfY29kZTogdC5yZXF1aXJlZEZvcm1GaWVsZHNbcC5aSVBfQ09ERV0sXG4gICAgICBjdXN0b21lcl9jb3VudHJ5OiB0LnJlcXVpcmVkRm9ybUZpZWxkc1twLkNPVU5UUlldLFxuICAgICAgcHJvbW90aW9uX2NvZGU6IHQucmVxdWlyZWRGb3JtRmllbGRzW3AuUFJPTU9USU9OX0NPREVdLFxuICAgICAgbGluZV9pdGVtczogZS5saW5lX2l0ZW1zLFxuICAgICAgdG90YWxfYW1vdW50X2F0b206IGUuYW1vdW50X3RvdGFsX2F0b20sXG4gICAgICBjYW5jZWxfYXRfZW5kOiAhMSxcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIHVzZV9jb25maXJtZWRfcG1faWQ6IHIucGF5bWVudF9tZXRob2RfaWRcbiAgICB9O1xuICAgIHJldHVybiB7IG1vZGU6IFwiY2hlY2tvdXRcIiwgcmVzdWx0OiBhd2FpdCBydCh0LmFueUNkZUNvbm5lY3Rpb24sIGEpIH07XG4gIH1cbn0sIHsgbG9nX186IHF0LCBlcnJfXzogWXQgfSA9IFMoXCJjb21tb24tY2NcIiksIHRlID0gKHQsIG4sIGUpID0+IHtcbiAgaWYgKGUpIHtcbiAgICBxdChgUmVjZWl2ZWQgZGVmYXVsdCBmaWVsZCB2YWx1ZXM6ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCk7XG4gICAgZm9yIChjb25zdCBbYSwgaV0gb2YgT2JqZWN0LmVudHJpZXMoZSkpXG4gICAgICB0W2FdIHx8ICh0W2FdID0gaSk7XG4gIH1cbiAgY29uc3QgciA9IEVlLnNhZmVQYXJzZSh0KTtcbiAgaWYgKCFyLnN1Y2Nlc3MpIHtcbiAgICBjb25zdCBhID0gci5lcnJvci5mb3JtYXQoKSwgaSA9IHRyKGEpO1xuICAgIGZvciAoY29uc3QgW3MsIGNdIG9mIE9iamVjdC5lbnRyaWVzKGkpKVxuICAgICAgbihzLCBjLCBzKTtcbiAgICB0aHJvdyBZdChcIkdvdCB2YWxpZGF0aW9uIGVycm9ycyBpbiBub24tQ0RFIGZvcm0gZmllbGRzXCIsIGkpLCBuZXcgRXJyb3IoXCJHb3QgdmFsaWRhdGlvbiBlcnJvcnMgaW4gbm9uLUNERSBmb3JtIGZpZWxkc1wiKTtcbiAgfVxuICByZXR1cm4gci5kYXRhO1xufSwgWnIgPSAodCwgbikgPT4ge1xuICBmb3IgKGNvbnN0IGUgb2YgdClcbiAgICBpZiAoZS5zdWNjZXNzID09PSAhMSlcbiAgICAgIHRocm93IGUuZXJyb3JzLmZvckVhY2goKHIpID0+IHtcbiAgICAgICAgY29uc3QgYSA9IE10LnNhZmVQYXJzZShyLmVsZW1lbnRUeXBlKTtcbiAgICAgICAgaWYgKCFhLnN1Y2Nlc3MpXG4gICAgICAgICAgWXQoYFVua25vd24gZmllbGQgbmFtZSBpbiBvblZhbGlkYXRpb25FcnJvcjogJHtyLmVsZW1lbnRUeXBlfS4gRXJyb3Igb2JqZWN0OmAsIHIpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCBpID0gYS5kYXRhO1xuICAgICAgICAgIG4oaSwgci5lcnJvcnMpO1xuICAgICAgICB9XG4gICAgICB9KSwgcXQoYEVycm9yIHRva2VuaXppbmcgY2FyZDogZ290IHZhbGlkYXRpb24gZXJyb3JzOiAke0pTT04uc3RyaW5naWZ5KGUuZXJyb3JzKX1gKSwgbmV3IEVycm9yKFwiR290IHZhbGlkYXRpb24gZXJyb3JzIHdoaWxlIHRva2VuaXppbmcgY2FyZFwiKTtcbn0sIGR0ID0gXCJvanMtc3RyaXBlLWxpbmstYnRuXCIsIHsgbG9nX186IFIsIGVycl9fOiBCciB9ID0gUyhcInN0cmlwZS1saW5rXCIpLCBRciA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJzdHJpcGVfbGlua1wiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBYciA9IHokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpLCBlbyA9IHNlKFxuICBhc3luYyAoeyBjb250ZXh0OiB0LCBmb3JtQ2FsbGJhY2tzOiBuIH0pID0+IHtcbiAgICBjb25zdCBlID0gdC5jdXN0b21Jbml0UGFyYW1zLnN0cmlwZUxpbms7XG4gICAgUihcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgU3RyaXBlIExpbmsuLi5cIik7XG4gICAgY29uc3QgciA9IFkodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBRcik7XG4gICAgUihcIlN0YXJ0aW5nIHN0cmlwZSBsaW5rIGZsb3cuLi5cIik7XG4gICAgY29uc3QgYSA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgaSA9IGF3YWl0IE0oYSksIHMgPSBpLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICBSKFwiQ3JlYXRpbmcgc3RyaXBlIGVsZW1lbnRzLi4uXCIpO1xuICAgIGNvbnN0IGMgPSBhd2FpdCBoZShhLCBpLnRva2VuLCBzLCB2b2lkIDApLCB7IGVsZW1lbnRzOiBsLCBzdHJpcGU6IHUgfSA9IGF3YWl0IGFyKHIubWV0YWRhdGEuc3RyaXBlX3BrLCB7XG4gICAgICBtb2RlOiBcInNldHVwXCIsXG4gICAgICBjdXJyZW5jeTogYy5jdXJyZW5jeSxcbiAgICAgIHNldHVwX2Z1dHVyZV91c2FnZTogXCJvZmZfc2Vzc2lvblwiLFxuICAgICAgcGF5bWVudE1ldGhvZENyZWF0aW9uOiBcIm1hbnVhbFwiXG4gICAgfSk7XG4gICAgUihcIkNyZWF0aW5nIGV4cHJlc3MgY2hlY2tvdXQuLi5cIik7XG4gICAgY29uc3QgZCA9IGwuY3JlYXRlKFwiZXhwcmVzc0NoZWNrb3V0XCIsIHtcbiAgICAgIGJ1dHRvbkhlaWdodDogZSA9PSBudWxsID8gdm9pZCAwIDogZS5idXR0b25IZWlnaHQsXG4gICAgICBwYXltZW50TWV0aG9kczoge1xuICAgICAgICBhbWF6b25QYXk6IFwibmV2ZXJcIixcbiAgICAgICAgYXBwbGVQYXk6IFwibmV2ZXJcIixcbiAgICAgICAgZ29vZ2xlUGF5OiBcIm5ldmVyXCIsXG4gICAgICAgIHBheXBhbDogXCJuZXZlclwiXG4gICAgICB9XG4gICAgfSksIGYgPSAoKSA9PiB7XG4gICAgICBkLm1vdW50KGAjJHtkdH1gKTtcbiAgICB9LCBoID0gKCkgPT4ge1xuICAgICAgZC51bm1vdW50KCk7XG4gICAgfTtcbiAgICByZXR1cm4gZSAhPSBudWxsICYmIGUuZG9Ob3RNb3VudE9uSW5pdCA/IFIoXCJOT1QgbW91bnRpbmcgc3RyaXBlIGxpbmsgYnV0dG9uIChkb05vdE1vdW50T25Jbml0IGlzIHRydWUpXCIpIDogKFIoXCJNb3VudGluZyBzdHJpcGUgbGluayBidXR0b24uLi5cIiksIGYoKSksIGQub24oXCJjbGlja1wiLCBhc3luYyAoeSkgPT4ge1xuICAgICAgaWYgKFIoXCJTdHJpcGUgTGluayBidXR0b24gY2xpY2tlZFwiKSwgZSAhPSBudWxsICYmIGUub3ZlcnJpZGVMaW5rU3VibWl0ICYmICFhd2FpdCBlLm92ZXJyaWRlTGlua1N1Ym1pdCgpKSB7XG4gICAgICAgIFIoXCJTdHJpcGUgTGluayBzdWJtaXQgYWJvcnRlZCBieSBvdmVycmlkZUxpbmtTdWJtaXRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHkucmVzb2x2ZSgpO1xuICAgIH0pLCBkLm9uKFwiY29uZmlybVwiLCBhc3luYyAoeSkgPT4ge1xuICAgICAgUihcIlN0cmlwZSBMaW5rIHdpbmRvdyBjb25maXJtZWRcIiwgeSk7XG4gICAgICBjb25zdCBtID0gYXdhaXQgdS5jcmVhdGVQYXltZW50TWV0aG9kKHtcbiAgICAgICAgZWxlbWVudHM6IGwsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGJpbGxpbmdfZGV0YWlsczogeS5iaWxsaW5nRGV0YWlsc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG0uZXJyb3IgPyAoQnIoXCJlcnJvclwiLCBtLmVycm9yKSwgbi5nZXQub25DaGVja291dEVycm9yKG0uZXJyb3IubWVzc2FnZSA/PyBcIlN0cmlwZSBMaW5rIHVua25vd24gZXJyb3JcIikpIDogKFIoXCJwYXltZW50TWV0aG9kXCIsIG0ucGF5bWVudE1ldGhvZCksIGsuc3RyaXBlTGluay5ydW4oe1xuICAgICAgICBjb250ZXh0OiB0LFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IEoodC5mb3JtRGl2KSxcbiAgICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgICAgY3VzdG9tUGFyYW1zOiB7IHN0cmlwZVBNOiBtLnBheW1lbnRNZXRob2QgfSxcbiAgICAgICAgaW5pdFJlc3VsdDogeyBpc0F2YWlsYWJsZTogITAgfVxuICAgICAgfSkpO1xuICAgIH0pLCB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBjb250cm9sbGVyOiB7XG4gICAgICAgIG1vdW50QnV0dG9uOiBmLFxuICAgICAgICBkaXNtb3VudEJ1dHRvbjogaCxcbiAgICAgICAgd2FpdEZvckJ1dHRvblRvTW91bnQ6IGFzeW5jICgpID0+IGF3YWl0IHJvKGR0KVxuICAgICAgfVxuICAgIH07XG4gIH1cbiksIHRvID0gZWUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogdCxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogZSxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogYVxuICB9KSA9PiB7XG4gICAgUihcIlJ1bm5pbmcgU3RyaXBlIExpbmsgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gdC5hbnlDZGVDb25uZWN0aW9uO1xuICAgIFIoXCJNZXJnaW5nIFBNIGZpZWxkcyB3aXRoIGZvcm0gZmllbGRzLi4uXCIpO1xuICAgIGNvbnN0IHMgPSBubyhlLCBhLnN0cmlwZVBNKSwgYyA9IHRlKHMsIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKTtcbiAgICBSKFwiU3RhcnRpbmcgcGF5bWVudCBmbG93Li4uXCIpO1xuICAgIGNvbnN0IGwgPSBhd2FpdCBmZShpLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG4sXG4gICAgICB0aGVpcl9leGlzdGluZ19wbV9pZDogYS5zdHJpcGVQTS5pZCxcbiAgICAgIG5ld19jdXN0b21lcl9lbWFpbDogY1twLkVNQUlMXSxcbiAgICAgIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiBjW3AuRklSU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiBjW3AuTEFTVF9OQU1FXSxcbiAgICAgIG5ld19jdXN0b21lcl9hZGRyZXNzOiB7XG4gICAgICAgIHppcF9jb2RlOiBjW3AuWklQX0NPREVdLFxuICAgICAgICBjb3VudHJ5OiBjW3AuQ09VTlRSWV1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBSKFwiU3RhcnQgcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIGwpO1xuICAgIGNvbnN0IGQgPSBYci5wYXJzZShsLnJlcXVpcmVkX3VzZXJfYWN0aW9ucylbMF0ub3VyX2V4aXN0aW5nX3BtX2lkLCBmID0gYXdhaXQgTShpKTtcbiAgICBpZiAoZi5tb2RlID09PSBcInNldHVwXCIpIHtcbiAgICAgIFIoXCJEb2luZyBwYXltZW50IHNldHVwLi4uXCIpO1xuICAgICAgY29uc3QgaCA9IGF3YWl0IEcoaSwge1xuICAgICAgICBzZWN1cmVfdG9rZW46IGYudG9rZW4sXG4gICAgICAgIGV4aXN0aW5nX2NjX3BtX2lkOiBkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBDZShoKSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBSKFwiRG9pbmcgY2hlY2tvdXQuLi5cIik7XG4gICAgICBjb25zdCBoID0ge1xuICAgICAgICBzZWN1cmVfdG9rZW46IGYudG9rZW4sXG4gICAgICAgIHBheW1lbnRfaW5wdXQ6IHtcbiAgICAgICAgICBwcm92aWRlcl90eXBlOiBuLnByb3ZpZGVyXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbWVyX2VtYWlsOiBjW3AuRU1BSUxdLFxuICAgICAgICBjdXN0b21lcl96aXBfY29kZTogY1twLlpJUF9DT0RFXSxcbiAgICAgICAgY3VzdG9tZXJfY291bnRyeTogY1twLkNPVU5UUlldLFxuICAgICAgICBwcm9tb3Rpb25fY29kZTogY1twLlBST01PVElPTl9DT0RFXSxcbiAgICAgICAgbGluZV9pdGVtczogZi5saW5lX2l0ZW1zLFxuICAgICAgICB0b3RhbF9hbW91bnRfYXRvbTogZi5hbW91bnRfdG90YWxfYXRvbSxcbiAgICAgICAgY2FuY2VsX2F0X2VuZDogITEsXG4gICAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IGF3YWl0IHJ0KGksIGgpIH07XG4gICAgfVxuICB9XG4pLCBubyA9ICh0LCBuKSA9PiB7XG4gIHZhciBzLCBjLCBsLCB1LCBkO1xuICBjb25zdCBlID0geyAuLi50IH0sIFtyLCAuLi5hXSA9ICgoYyA9IChzID0gbi5iaWxsaW5nX2RldGFpbHMubmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHMudHJpbSgpKSA9PSBudWxsID8gdm9pZCAwIDogYy5zcGxpdCgvXFxzKy8pKSA/PyBbXSwgaSA9IGEuam9pbihcIiBcIikgfHwgdm9pZCAwO1xuICByZXR1cm4gZVtwLkZJUlNUX05BTUVdID0gZVtwLkZJUlNUX05BTUVdIHx8IHIgfHwgXCJfT1BfVU5LTk9XTlwiLCBlW3AuTEFTVF9OQU1FXSA9IGVbcC5MQVNUX05BTUVdIHx8IGkgfHwgXCJfT1BfVU5LTk9XTlwiLCBlW3AuRU1BSUxdID0gZVtwLkVNQUlMXSB8fCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAoKGwgPSBuLmxpbmspID09IG51bGwgPyB2b2lkIDAgOiBsLmVtYWlsKSB8fCBuLmJpbGxpbmdfZGV0YWlscy5lbWFpbCB8fCBcIm9wX3VuZmlsbGVkQGdldG9wZW5wYXkuY29tXCIsIGVbcC5aSVBfQ09ERV0gPSBlW3AuWklQX0NPREVdIHx8ICgodSA9IG4uYmlsbGluZ19kZXRhaWxzLmFkZHJlc3MpID09IG51bGwgPyB2b2lkIDAgOiB1LnBvc3RhbF9jb2RlKSB8fCBcIjAwMDAwXCIsIGVbcC5DT1VOVFJZXSA9IGVbcC5DT1VOVFJZXSB8fCAoKGQgPSBuLmJpbGxpbmdfZGV0YWlscy5hZGRyZXNzKSA9PSBudWxsID8gdm9pZCAwIDogZC5jb3VudHJ5KSB8fCBcIlVTXCIsIFIoXCJGaW5hbCBmb3JtIGlucHV0czpcIiwgZSksIGU7XG59LCBybyA9ICh0KSA9PiBuZXcgUHJvbWlzZSgobikgPT4ge1xuICBjb25zdCBlID0gKCkgPT4ge1xuICAgIGNvbnN0IHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTtcbiAgICByID8gbihyKSA6IHJlcXVlc3RBbmltYXRpb25GcmFtZShlKTtcbiAgfTtcbiAgZSgpO1xufSksIG9vID0gXCJAa2V5ZnJhbWVzIGZhZGVJbnswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlKC45KX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlKDEpfX0ub3ZlcmxheXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt6LWluZGV4OjIxNDc0ODM2NDghaW1wb3J0YW50O2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwMDA4MH0uY29udGFpbmVye21heC13aWR0aDo1MDBweDttYXgtaGVpZ2h0OjYwMHB4O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZC1jb2xvcjojZmZmO3Bvc2l0aW9uOnJlbGF0aXZlO2FuaW1hdGlvbjpmYWRlSW4gLjNzIGVhc2Utb3V0fS5mcmFtZSwjYWR5ZW4tY29udGFpbmVyLCNhZHllbi1jb250YWluZXI+KnttYXgtd2lkdGg6NTAwcHg7bWF4LWhlaWdodDo2MDBweDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjpub25lfS5jYW5jZWwtYnV0dG9ue3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Zm9udC1zaXplOjFyZW07Y29sb3I6I2ZmZjtjdXJzb3I6cG9pbnRlcjt0b3A6LTEuNXJlbTtwYWRkaW5nOjA7cmlnaHQ6MH1cIiwgS3QgPSAodCkgPT4ge1xuICBjb25zdCBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRlbXBsYXRlXCIpO1xuICBuLmlubmVySFRNTCA9IGBcbiAgICA8c3R5bGU+XG4gICAgICAke29vfVxuICAgIDwvc3R5bGU+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idXR0b25cIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGlmcmFtZSBzcmM9XCIke3R9XCIgY2xhc3M9XCJmcmFtZVwiIGlkPVwidGhyZWUtZHMtaWZyYW1lXCIgdGl0bGU9XCIzRCBTZWN1cmUgdmVyaWZpY2F0aW9uXCIgYWxsb3c9XCJwYXltZW50XCI+PC9pZnJhbWU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYDtcbiAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksIHIgPSBlLmF0dGFjaFNoYWRvdyh7IG1vZGU6IFwib3BlblwiIH0pO1xuICByLmFwcGVuZENoaWxkKG4uY29udGVudC5jbG9uZU5vZGUoITApKTtcbiAgY29uc3QgYSA9IHIucXVlcnlTZWxlY3RvcihcIiN0aHJlZS1kcy1pZnJhbWVcIiksIGkgPSByLnF1ZXJ5U2VsZWN0b3IoXCIuY2FuY2VsLWJ1dHRvblwiKTtcbiAgcmV0dXJuIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSksIHsgaG9zdDogZSwgaWZyYW1lOiBhLCBjYW5jZWxCdXR0b246IGkgfTtcbn07XG5mdW5jdGlvbiBhbyh0LCBuLCBlKSB7XG4gIGNvbnN0IHIgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGkgPSBhd2FpdCBXcih0LCBlKTtcbiAgICAgIGkgJiYgKGNsZWFySW50ZXJ2YWwoYSksIG4oaSkpO1xuICAgIH0gY2F0Y2gge1xuICAgIH1cbiAgfTtcbiAgcigpO1xuICBjb25zdCBhID0gc2V0SW50ZXJ2YWwociwgenQpO1xuICByZXR1cm4gYTtcbn1cbmZ1bmN0aW9uIGlvKHtcbiAgZWxlbWVudHM6IHQsXG4gIHBvbGxpbmdJbnRlcnZhbDogbixcbiAgcmVzb2x2ZTogZVxufSkge1xuICBjb25zdCByID0gKCkgPT4ge1xuICAgIGNsZWFySW50ZXJ2YWwobiksIHQuaG9zdC5yZW1vdmUoKSwgZSh7IHN0YXR1czogSS5DQU5DRUxMRUQgfSk7XG4gIH07XG4gIHJldHVybiB0LmNhbmNlbEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgciksICgpID0+IHtcbiAgICB0LmNhbmNlbEJ1dHRvbi5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgcik7XG4gIH07XG59XG5hc3luYyBmdW5jdGlvbiB4ZSh0KSB7XG4gIGNvbnN0IHsgdXJsOiBuLCBiYXNlVXJsOiBlIH0gPSB0LCByID0gS3Qobik7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoYSkgPT4ge1xuICAgIGNvbnN0IGkgPSAobCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHIuaG9zdC5yZW1vdmUoKTtcbiAgICAgIH0sIDFlMyksIGEobCksIGMgPT0gbnVsbCB8fCBjKCk7XG4gICAgfSwgcyA9IGFvKHIuaWZyYW1lLCBpLCBuZXcgVVJMKGUpLm9yaWdpbiksIGMgPSBpbyh7XG4gICAgICBlbGVtZW50czogcixcbiAgICAgIHBvbGxpbmdJbnRlcnZhbDogcyxcbiAgICAgIHJlc29sdmU6IGFcbiAgICB9KTtcbiAgfSk7XG59XG5jb25zdCBXdCA9IGFzeW5jICh0KSA9PiB7XG4gIGNvbnN0IG4gPSBhd2FpdCB4ZSh0KTtcbiAgaWYgKG4uc3RhdHVzID09PSBJLkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKG4uc3RhdHVzID09PSBJLkZBSUxVUkUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gIHJldHVybiBuLnN0YXR1cyAhPT0gSS5TVUNDRVNTICYmIFVlKG4uc3RhdHVzKSwge1xuICAgIGhyZWY6IG4uaHJlZlxuICB9O1xufSwgc28gPSAodCwgbikgPT4ge1xuICBjb25zdCBlID0gd2luZG93Lm9wZW4obiwgXCJfYmxhbmtcIik7XG4gIGlmICghZSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dH0gcG9wdXAgd2luZG93IGJsb2NrZWQuIFBsZWFzZSBhbGxvdyBwb3B1cHMgZm9yIHRoaXMgc2l0ZS5gKTtcbiAgcmV0dXJuIGU7XG59LCBjbyA9IGFzeW5jICh0LCBuLCBlLCByKSA9PiB7XG4gIGNvbnN0IHsgZXJyX186IGEgfSA9IFMoXCJwb3B1cC12ZXJpZnlcIik7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoaSwgcykgPT4ge1xuICAgIGNvbnN0IGMgPSBzbyh0LCByKSwgbCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHUgPSBhd2FpdCBWcihuLCBlKTtcbiAgICAgICAgaWYgKHUucHJlc2VudClcbiAgICAgICAgICBjbGVhckludGVydmFsKGwpLCBjLmNsb3NlKCksIGkoeyBocmVmOiB1LmhyZWYgfSk7XG4gICAgICAgIGVsc2UgaWYgKGMuY2xvc2VkKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0fSBwYXltZW50IGNhbmNlbGxlZGApO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICBhKEgodSkpLCBjbGVhckludGVydmFsKGwpLCBzKEgodSkpO1xuICAgICAgfVxuICAgIH0sIDFlMyk7XG4gIH0pO1xufSwgeyBsb2dfXzogbG8sIGVycl9fOiBKdCB9ID0gUyhcInBvY2t5dC1jY1wiKSwgdW8gPSB6JDEub2JqZWN0KHtcbiAgXCJvcC1wb2NreXQtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXR4bi1ub1wiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXJlZi1ub1wiOiB6JDEuc3RyaW5nKClcbn0pLCBwbyA9ICh0KSA9PiB7XG4gIGNvbnN0IG4gPSB1by5zYWZlUGFyc2UodCk7XG4gIGlmICghbi5zdWNjZXNzKSB7XG4gICAgY29uc3QgZSA9IFwiVW5hYmxlIHRvIHByb2Nlc3MgeW91ciBjcmVkaXQgY2FyZC4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgciA9IGBQb2NreXQgM0RTIGlzIHJlcXVpcmVkIGJ1dCBoZWFkZXJzIGFyZSBtYWxmb3JtZWQuIEdvdDogJHtKU09OLnN0cmluZ2lmeSh0KX1gO1xuICAgIHRocm93IEp0KHIpLCBuZXcgRXJyb3IoZSk7XG4gIH1cbiAgcmV0dXJuIG4uZGF0YTtcbn0sIEh0ID0gKHQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBuID0gbmV3IFVSTCh0ID8/IFwiXCIpLnNlYXJjaFBhcmFtcy5nZXQoXCJ2YXVsdElkXCIpO1xuICAgIGlmICghbilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHZhdWx0IElEIGZvdW5kIGluIDNEUyB2ZXJpZmljYXRpb24gcmVzdWx0XCIpO1xuICAgIHJldHVybiBsbyhgM0RTIHZlcmlmaWNhdGlvbiBzdWNjZXNzLiBbVmF1bHQgSUQ6ICR7bn1dYCksIG47XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICBjb25zdCBlID0gXCJFcnJvciB2ZXJpZnlpbmcgM0RTIHZlcmlmaWNhdGlvbiByZXN1bHQuXCI7XG4gICAgdGhyb3cgSnQoZSwgYFJlc3VsdGluZyBVUkw6ICR7dH0uXG5FcnJvcjogJHtIKG4pfWApLCBuZXcgRXJyb3IoZSk7XG4gIH1cbn0sIG1vID0gKHQsIG4pID0+IG5ldyBVUkwodCkuc2VhcmNoUGFyYW1zLmdldChuKSwgeW8gPSAodCkgPT4gKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHRbXCJvcC1wb2NreXQtM2RzLXVybFwiXSkgIT09IHZvaWQgMCwgZm8gPSBhc3luYyAodCwgbikgPT4ge1xuICBjb25zdCBlID0gcG8obiksIHIgPSBhd2FpdCBXdCh7IHVybDogZVtcIm9wLXBvY2t5dC0zZHMtdXJsXCJdLCBiYXNlVXJsOiB0IH0pO1xuICByZXR1cm4ge1xuICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICB2YXVsdF9pZDogSHQoci5ocmVmID8/IFwiXCIpLFxuICAgICAgdHJhbnNhY3Rpb25fbm86IGVbXCJvcC1wb2NreXQtdHhuLW5vXCJdLFxuICAgICAgcmVmZXJlbmNlX25vOiBlW1wib3AtcG9ja3l0LXJlZi1ub1wiXVxuICAgIH1cbiAgfTtcbn0sIHsgbG9nX186IGhvLCBlcnJfXzogb3QgfSA9IFMoXCJhaXJ3YWxsZXgtY2NcIiksIF9vID0geiQxLm9iamVjdCh7XG4gIFwib3AtYWlyd2FsbGV4LTNkcy11cmxcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFpcndhbGxleC1pbml0aWFsLWludGVudC1pZFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWlyd2FsbGV4LWNvbnNlbnQtaWRcIjogeiQxLnN0cmluZygpXG59KSwgd28gPSAodCkgPT4ge1xuICBjb25zdCBuID0gX28uc2FmZVBhcnNlKHQpO1xuICBpZiAoIW4uc3VjY2Vzcykge1xuICAgIGNvbnN0IGUgPSBcIlVuYWJsZSB0byBwcm9jZXNzIHlvdXIgY3JlZGl0IGNhcmQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuXCIsIHIgPSBgQWlyd2FsbGV4IDNEUyBpcyByZXF1aXJlZCBidXQgaGVhZGVycyBhcmUgbWFsZm9ybWVkLiBHb3Q6ICR7SlNPTi5zdHJpbmdpZnkodCl9YDtcbiAgICB0aHJvdyBvdChyKSwgbmV3IEVycm9yKGUpO1xuICB9XG4gIHJldHVybiBuLmRhdGE7XG59LCBnbyA9ICh0KSA9PiAodCA9PSBudWxsID8gdm9pZCAwIDogdFtcIm9wLWFpcndhbGxleC0zZHMtdXJsXCJdKSAhPT0gdm9pZCAwLCBibyA9ICh0KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgbiA9IG5ldyBVUkwodCA/PyBcIlwiKS5zZWFyY2hQYXJhbXMuZ2V0KFwicGF5bWVudF9pbnRlbnRfaWRcIik7XG4gICAgaWYgKCFuKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gaW50ZW50IElEIGZvdW5kIGluIEFpcndhbGxleCAzRFMgdmVyaWZpY2F0aW9uIHJlc3VsdFwiKTtcbiAgICByZXR1cm4gaG8oYEFpcndhbGxleCAzRFMgdmVyaWZpY2F0aW9uIHN1Y2Nlc3MuIFtJbnRlbnQgSUQ6ICR7bn1dYCksIG47XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICBjb25zdCBlID0gXCJFcnJvciB2ZXJpZnlpbmcgQWlyd2FsbGV4IDNEUyB2ZXJpZmljYXRpb24gcmVzdWx0LlwiO1xuICAgIHRocm93IG90KGUsIGBSZXN1bHRpbmcgVVJMOiAke3R9LlxuRXJyb3I6ICR7SChuKX1gKSwgbmV3IEVycm9yKGUpO1xuICB9XG59LCB2byA9IGFzeW5jICh0LCBuKSA9PiB7XG4gIGNvbnN0IGUgPSB3byhuKSwgciA9IGF3YWl0IFd0KHsgdXJsOiBlW1wib3AtYWlyd2FsbGV4LTNkcy11cmxcIl0sIGJhc2VVcmw6IHQgfSksIGEgPSBibyhyLmhyZWYgPz8gXCJcIiksIGkgPSBlW1wib3AtYWlyd2FsbGV4LWluaXRpYWwtaW50ZW50LWlkXCJdO1xuICBpZiAoaSAhPT0gYSkge1xuICAgIGNvbnN0IGMgPSBcIlVuYWJsZSB0byBwcm9jZXNzIHlvdXIgY3JlZGl0IGNhcmQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuXCIsIGwgPSBgSW50ZW50IElEIGZyb20gY2FsbGJhY2sgKCR7YX0pIGRvZXMgbm90IG1hdGNoIHRoZSBpbml0aWFsIGludGVudCBJRCAoJHtpfSkuYDtcbiAgICB0aHJvdyBvdChsKSwgbmV3IEVycm9yKGMpO1xuICB9XG4gIHJldHVybiB7XG4gICAgZXhpc3RpbmdfY2M6IHtcbiAgICAgIGluaXRpYWxfaW50ZW50X2lkOiBhLFxuICAgICAgY29uc2VudF9pZDogZVtcIm9wLWFpcndhbGxleC1jb25zZW50LWlkXCJdXG4gICAgfVxuICB9O1xufSwgWnQgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSksIEJ0ID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImdvb2dsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImFpcndhbGxleFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pLCBFbyA9IHokMS5lbnVtKFtcInRlc3RcIiwgXCJsaXZlXCIsIFwibGl2ZS11c1wiLCBcImxpdmUtaW5cIiwgXCJsaXZlLWFwc2VcIiwgXCJsaXZlLWF1XCJdKSwgeyBsb2dfXzogdmUsIGVycl9fOiBNZSB9ID0gUyhcImFkeWVuLWNjXCIpLCBDbyA9IHokMS5vYmplY3Qoe1xuICBcIm9wLWFjY291bnQtaWRcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFkeWVuLWNsaWVudC1rZXlcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFkeWVuLWVudmlyb25tZW50XCI6IEVvLFxuICBcIm9wLWFkeWVuLWFjdGlvblwiOiB6JDEuc3RyaW5nKClcbn0pLCBRdCA9IFwiVW5hYmxlIHRvIHByb2Nlc3MgeW91ciBjcmVkaXQgY2FyZC4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgUG8gPSAodCkgPT4ge1xuICBjb25zdCBuID0gQ28uc2FmZVBhcnNlKHQpO1xuICBpZiAoIW4uc3VjY2VzcylcbiAgICB0aHJvdyBNZShgQWR5ZW4gM0RTIGlzIHJlcXVpcmVkIGJ1dCBoZWFkZXJzIGFyZSBtYWxmb3JtZWQuIEdvdDogJHtKU09OLnN0cmluZ2lmeSh0KX1gKSwgbmV3IEVycm9yKFF0KTtcbiAgcmV0dXJuIG4uZGF0YTtcbn0sIFNvID0gKHQpID0+IEpTT04ucGFyc2UodCksIHB0ID0gKCkgPT4gXCJBZHllbldlYlwiIGluIHdpbmRvdyAmJiBcIkFkeWVuQ2hlY2tvdXRcIiBpbiB3aW5kb3cuQWR5ZW5XZWIsIEFvID0gYXN5bmMgKCkgPT4ge1xuICB2ZShcIldhaXRpbmcgZm9yIEFkeWVuIFNESyB0byBsb2FkLi4uXCIpO1xuICBmb3IgKGxldCB0ID0gMDsgdCA8IDEwOyB0KyspXG4gICAgcHQoKSB8fCBhd2FpdCBudCg1MDApO1xuICBpZiAoIXB0KCkpXG4gICAgdGhyb3cgTWUoXCJBZHllbiBTREsgbm90IGxvYWRlZCBwcm9wZXJseVwiKSwgbmV3IEVycm9yKFF0KTtcbiAgcmV0dXJuIHZlKFwiQWR5ZW4gU0RLIGxvYWRlZCBzdWNjZXNzZnVsbHlcIiksIHdpbmRvdy5BZHllbldlYi5BZHllbkNoZWNrb3V0O1xufSwga28gPSAodCkgPT4ge1xuICBjb25zdCB7IGhlYWRlcnM6IG4sIGxvY2FsZTogZSwgY291bnRyeUNvZGU6IHIsIGNvbXBvbmVudDogYSwgaG9zdDogaSwgY2FuY2VsQnV0dG9uOiBzIH0gPSB0LCBjID0gU28obltcIm9wLWFkeWVuLWFjdGlvblwiXSk7XG4gIHJldHVybiB2ZShgUnVubmluZyBBZHllbiAzRFMgZmxvdyBmb3IgYWN0aW9uIHR5cGU6ICR7Yy50eXBlfWApLCBuZXcgUHJvbWlzZSgobCkgPT4ge1xuICAgIGNvbnN0IHUgPSAoKSA9PiB7XG4gICAgICB2ZShcIkNsZWFuaW5nIHVwIEFkeWVuIDNEUyBmbG93XCIpLCBzLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoKSwgaS5yZW1vdmUoKTtcbiAgICB9LCBkID0gKG0pID0+IHtcbiAgICAgIE1lKFwiQXV0aGVudGljYXRpb24gZmFpbGVkLiBSZXN1bHQ6XCIsIG0pLCBsKHsgc3RhdHVzOiBJLkZBSUxVUkUsIGNsZWFudXA6IHUgfSk7XG4gICAgfSwgZiA9IChtKSA9PiB7XG4gICAgICBNZShcIkFkeWVuIGVycm9yOlwiLCBtKSwgbCh7IHN0YXR1czogSS5GQUlMVVJFLCBjbGVhbnVwOiB1IH0pO1xuICAgIH0sIGggPSAoKSA9PiB7XG4gICAgICBsKHsgc3RhdHVzOiBJLkNBTkNFTExFRCwgY2xlYW51cDogdSB9KTtcbiAgICB9O1xuICAgIHMuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGgpO1xuICAgIGNvbnN0IHkgPSAobSwgXywgdikgPT4ge1xuICAgICAgaS5yZW1vdmUoKSwgbCh7IHN0YXR1czogSS5TVUNDRVNTLCBhZGRpdGlvbmFsRGV0YWlsczogbSwgY2xlYW51cDogdSB9KTtcbiAgICB9O1xuICAgIEFvKCkudGhlbihcbiAgICAgIChtKSA9PiBtKHtcbiAgICAgICAgY2xpZW50S2V5OiBuW1wib3AtYWR5ZW4tY2xpZW50LWtleVwiXSxcbiAgICAgICAgZW52aXJvbm1lbnQ6IG5bXCJvcC1hZHllbi1lbnZpcm9ubWVudFwiXSxcbiAgICAgICAgbG9jYWxlOiBlLFxuICAgICAgICBjb3VudHJ5Q29kZTogcixcbiAgICAgICAgb25BZGRpdGlvbmFsRGV0YWlsczogeSxcbiAgICAgICAgb25QYXltZW50RmFpbGVkOiBkLFxuICAgICAgICBvbkVycm9yOiBmXG4gICAgICB9KVxuICAgICkudGhlbigobSkgPT4ge1xuICAgICAgbS5jcmVhdGVGcm9tQWN0aW9uKGMsIHsgY2hhbGxlbmdlV2luZG93U2l6ZTogXCIwM1wiIH0pLm1vdW50KGEpO1xuICAgIH0pO1xuICB9KTtcbn0sIElvID0gKHQpID0+ICh0ID09IG51bGwgPyB2b2lkIDAgOiB0W1wib3AtYWR5ZW4tYWN0aW9uXCJdKSAhPT0gdm9pZCAwLCBSbyA9IGFzeW5jICh0LCBuLCBlKSA9PiB7XG4gIGNvbnN0IHIgPSBQbyhlKSwgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGEuaWQgPSBcImFkeWVuLWNvbnRhaW5lclwiO1xuICBjb25zdCB7IGhvc3Q6IGksIGlmcmFtZTogcywgY2FuY2VsQnV0dG9uOiBjIH0gPSBLdChcImh0dHA6Ly9leGFtcGxlLmNvbVwiKTtcbiAgcy5yZXBsYWNlV2l0aChhKTtcbiAgY29uc3QgbCA9IGF3YWl0IGtvKHtcbiAgICBoZWFkZXJzOiByLFxuICAgIGxvY2FsZTogdCxcbiAgICBjb3VudHJ5Q29kZTogbixcbiAgICBjb21wb25lbnQ6IGEsXG4gICAgaG9zdDogaSxcbiAgICBjYW5jZWxCdXR0b246IGNcbiAgfSk7XG4gIGlmIChsLmNsZWFudXAoKSwgbC5zdGF0dXMgPT09IEkuRkFJTFVSRSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgaWYgKGwuc3RhdHVzID09PSBJLkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKGwuc3RhdHVzID09PSBJLlNVQ0NFU1MpIHtcbiAgICBpZiAoIWwuYWRkaXRpb25hbERldGFpbHMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIHN1Y2NlZWRlZCBidXQgbm8gYWRkaXRpb25hbCBkZXRhaWxzIHdlcmUgcmV0dXJuZWRcIik7XG4gICAgcmV0dXJuIHZlKFwiM0RTIHZlcmlmaWNhdGlvbiBzdWNjZWVkZWRcIiksIHtcbiAgICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICAgIGFkZGl0aW9uYWxfZGV0YWlsczogbC5hZGRpdGlvbmFsRGV0YWlscy5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlXG4gICAgVWUobC5zdGF0dXMpO1xufSwgeyBsb2dfXzogQywgZXJyX186IG10IH0gPSBTKFwiY29tbW9uLWNjXCIpLCB7IGxvZ19fOiB5dCB9ID0gUyhcInN0cmlwZS1jY1wiKTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuY29uc3QgRm8gPSBlZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiB0LFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiBlLFxuICAgIGZvcm1DYWxsYmFja3M6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICB2YXIgdTtcbiAgICBDKFwi4pScIFJ1bm5pbmcgY29tbW9uIENDIGZsb3cuLi5cIiwgeyBjaGVja291dFBheW1lbnRNZXRob2Q6IG4gfSk7XG4gICAgY29uc3QgaSA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgcyA9IGF3YWl0IE0oaSk7XG4gICAgQyhg4pScIFZhbGlkYXRpbmcgbm9uLUNERSBmb3JtIGZpZWxkcyBbTW9kZTogJHtzLm1vZGV9XWApO1xuICAgIGNvbnN0IGMgPSB0ZShlLCByLmdldC5vblZhbGlkYXRpb25FcnJvciksIGwgPSB7XG4gICAgICBzZXNzaW9uX2lkOiB0LmVsZW1lbnRzU2Vzc2lvbklkLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG4sXG4gICAgICBub25fY2RlX2Zvcm1fZmllbGRzOiBjLFxuICAgICAgZXh0cmFfbWV0YWRhdGE6IHtcbiAgICAgICAgb3JpZ2luOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICAgICB9XG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgQyhg4pScIFRva2VuaXppbmcgY2FyZCBpbmZvIGluIENERSBbU2Vzc2lvbjogJHt0LmVsZW1lbnRzU2Vzc2lvbklkfV1gKTtcbiAgICAgIGNvbnN0IGQgPSBhd2FpdCBZcihhLmN1cnJlbnRDZGVDb25uZWN0aW9ucywge1xuICAgICAgICBzZXNzaW9uX2lkOiB0LmVsZW1lbnRzU2Vzc2lvbklkXG4gICAgICB9KTtcbiAgICAgIGlmIChacihkLCByLmdldC5vblZhbGlkYXRpb25FcnJvciksIHMubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICAgIEMoYOKUnCBTZXR0aW5nIHVwIHBheW1lbnQgbWV0aG9kIGluIENERSBbVG9rZW46ICR7cy50b2tlbn1dYCk7XG4gICAgICAgIGNvbnN0IGYgPSBhd2FpdCBLcihpLCBsKTtcbiAgICAgICAgcmV0dXJuIEMoYOKVsCBTZXR1cCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IFtQTSBJRDogJHtmLnBheW1lbnRfbWV0aG9kX2lkfV1gKSwgeyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogZiB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgQyhg4pScIEluaXRpYWwgY2hlY2tvdXQgZmxvdy4gQ2hlY2tpbmcgb3V0IGNhcmQgaW5mbyBpbiBDREUgW1Nlc3Npb246ICR7dC5lbGVtZW50c1Nlc3Npb25JZH1dYCk7XG4gICAgICAgIGNvbnN0IGYgPSBhd2FpdCB1dChpLCBsKTtcbiAgICAgICAgcmV0dXJuIEMoXCLilbAgQ2hlY2tvdXQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5cIiksIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IGYgfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChkKSB7XG4gICAgICBpZiAoZCBpbnN0YW5jZW9mICR0ICYmIGQub3JpZ2luYWxFcnJvck1lc3NhZ2UuaW5jbHVkZXMoXCIzRFNfUkVRVUlSRURcIikpIHtcbiAgICAgICAgQyhcIuKUnCBDYXJkIHJlcXVpcmVzIDNEUywgc3RhcnRpbmcgbm9uLWxlZ2FjeSBwYXltZW50IGZsb3dcIiksIEMoXCJSZWNlaXZlZCAzRFMgZXJyb3IgcmVzcG9uc2UgaGVhZGVyczpcIiwgZC5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgY29uc3QgZiA9IHlvKGQucmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICAgIGlmIChmKSB7XG4gICAgICAgICAgQyhcIuKUnCBQb2NreXQgM0RTIGNhc2UgZGV0ZWN0ZWQuIEdvaW5nIHRocm91Z2ggUG9ja3l0IDNEUyBmbG93LlwiKTtcbiAgICAgICAgICBjb25zdCBnID0gYXdhaXQgZm8odC5iYXNlVXJsLCBkLnJlc3BvbnNlLmhlYWRlcnMpO1xuICAgICAgICAgIGwuZXh0cmFfbWV0YWRhdGEucG9ja3l0ID0gZztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ28oZC5yZXNwb25zZS5oZWFkZXJzKSkge1xuICAgICAgICAgIEMoXCLilJwgQWlyd2FsbGV4IDNEUyBjYXNlIGRldGVjdGVkLiBHb2luZyB0aHJvdWdoIEFpcndhbGxleCAzRFMgZmxvdy5cIik7XG4gICAgICAgICAgY29uc3QgZyA9IGF3YWl0IHZvKHQuYmFzZVVybCwgZC5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgICBsLmV4dHJhX21ldGFkYXRhLmFpcndhbGxleCA9IGc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKElvKGQucmVzcG9uc2UuaGVhZGVycykpIHtcbiAgICAgICAgICBDKFwi4pScIEFkeWVuIDNEUyBjYXNlIGRldGVjdGVkLiBHb2luZyB0aHJvdWdoIEFkeWVuIDNEUyBmbG93LlwiKTtcbiAgICAgICAgICBjb25zdCBnID0gYXdhaXQgUm8oXG4gICAgICAgICAgICBzLmxvY2FsZSxcbiAgICAgICAgICAgIGVbcC5DT1VOVFJZXSxcbiAgICAgICAgICAgIGQucmVzcG9uc2UuaGVhZGVyc1xuICAgICAgICAgICk7XG4gICAgICAgICAgbC5leHRyYV9tZXRhZGF0YS5hZHllbiA9IGc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbSA9IGF3YWl0ICRyKGksIGwpO1xuICAgICAgICBDKFwi4pScIFBheW1lbnQgZmxvdyByZXN1bHQ6XCIsIG0pO1xuICAgICAgICBjb25zdCBfID0gKCh1ID0gZC5yZXNwb25zZS5oZWFkZXJzKSA9PSBudWxsID8gdm9pZCAwIDogdVtcIm9wLXNob3VsZC11c2UtbmV3LWZsb3dcIl0pICE9PSBcInRydWVcIjtcbiAgICAgICAgZiA/IEMoXCLilJwgUHJlLXN0YXJ0IDNEUyBpcyBzdWNjZXNzZnVsLCBvdGhlciAzRFMgZmxvd3Mgd2lsbCBiZSBza2lwcGVkLlwiKSA6IF8gPyAoQyhcIuKUnCBVc2luZyBzdHJpcGUgM0RTIGZsb3dcIiksIGF3YWl0IFRvKG0pKSA6IChDKFwi4pScIFVzaW5nIGNvbW1vbiAzRFMgZmxvd1wiKSwgYXdhaXQgTm8obSwgdC5iYXNlVXJsKSk7XG4gICAgICAgIGNvbnN0IHYgPSBtLmNjX3BtX2lkO1xuICAgICAgICBpZiAocy5tb2RlID09PSBcInNldHVwXCIpIHtcbiAgICAgICAgICBDKGDilJwgQ29uZmlybWluZyBwYXltZW50IGZsb3cgW2NjX3BtX2lkOiAke3Z9XWApO1xuICAgICAgICAgIGNvbnN0IGcgPSBhd2FpdCBHKGksIHtcbiAgICAgICAgICAgIHNlY3VyZV90b2tlbjogcy50b2tlbixcbiAgICAgICAgICAgIGV4aXN0aW5nX2NjX3BtX2lkOiB2XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgQyhcIuKUnCBDb25maXJtIHBheW1lbnQgZmxvdyByZXN1bHQgcmVjZWl2ZWQgUmVzdWx0OlwiLCBnKTtcbiAgICAgICAgICBjb25zdCBiID0gQ2UoZyk7XG4gICAgICAgICAgcmV0dXJuIEMoYOKVsCBTZXR1cCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IFtQTSBJRDogJHtiLnBheW1lbnRfbWV0aG9kX2lkfV1gKSwgeyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogYiB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIEMoYOKUnCBDaGVja2luZyBvdXQgYWZ0ZXIgM0RTIGZsb3cgW0Zsb3c6ICR7XyA/IFwibGVnYWN5XCIgOiBcIm5ld1wifV1gKTtcbiAgICAgICAgICBjb25zdCBnID0gYXdhaXQgdXQoaSwge1xuICAgICAgICAgICAgLi4ubCxcbiAgICAgICAgICAgIGV4aXN0aW5nX2NjX3BtX2lkOiB2LFxuICAgICAgICAgICAgZG9fbm90X3VzZV9sZWdhY3lfY2NfZmxvdzogX1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBDKFwi4pWwIENoZWNrb3V0IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuXCIpLCB7IG1vZGU6IFwiY2hlY2tvdXRcIiwgcmVzdWx0OiBnIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IG10KFwi4pWwIEVycm9yIGNoZWNraW5nIG91dCBjYXJkIGluZm8gaW4gQ0RFXCIpLCBtdChkKSwgZDtcbiAgICB9XG4gIH1cbiksIE1vID0gKHQpID0+IHtcbiAgY29uc3QgbiA9IHQucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmZpbmQoKGUpID0+IGUudHlwZSA9PT0gXCJzdHJpcGVfM2RzXCIpO1xuICBpZiAoIW4pXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3RyaXBlIDNEUyBhY3Rpb24gZm91bmRcIik7XG4gIHJldHVybiBuci5wYXJzZShuKTtcbn0sIERvID0gW1wiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiLCBcImFkeWVuXCJdLCBPbyA9ICh0KSA9PiB7XG4gIGNvbnN0IG4gPSB0LnJlcXVpcmVkX3VzZXJfYWN0aW9ucy5maW5kKChlKSA9PiBEby5pbmNsdWRlcyhlLnR5cGUpKTtcbiAgaWYgKCFuKVxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbW1vbiAzRFMgYWN0aW9uIGZvdW5kXCIpO1xuICByZXR1cm4gUW4ucGFyc2Uobik7XG59LCBObyA9IGFzeW5jICh0LCBuKSA9PiB7XG4gIGNvbnN0IGUgPSBPbyh0KTtcbiAgaWYgKGUucmVkaXJlY3RfdXJsID09PSBcIjNEU19DT01QTEVURVwiKSB7XG4gICAgQyhcIuKUnCAzRFMgZmxvdyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuICAgIHJldHVybjtcbiAgfVxuICBDKGDilJwgVXNpbmcgY29tbW9uIDNEUyBmbG93IFtVUkw6ICR7ZS5yZWRpcmVjdF91cmx9XWApO1xuICBjb25zdCB7IHN0YXR1czogciB9ID0gYXdhaXQgeGUoeyB1cmw6IGUucmVkaXJlY3RfdXJsLCBiYXNlVXJsOiBuIH0pO1xuICBpZiAoQyhg4pWwIDNEUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7cn1dYCksIHIgPT09IEkuQ0FOQ0VMTEVEKVxuICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gY2FuY2VsbGVkXCIpO1xuICBpZiAociA9PT0gSS5GQUlMVVJFKVxuICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xufSwgVG8gPSBhc3luYyAodCkgPT4ge1xuICBjb25zdCBuID0gTW8odCk7XG4gIHl0KGDilJwgVXNpbmcgc3RyaXBlIDNEUyBmbG93IFtDbGllbnQgU2VjcmV0OiAke24uY2xpZW50X3NlY3JldC5zdWJzdHJpbmcoMCwgOCl9Li4uXWApLCBhd2FpdCBscihuKSwgeXQoXCLilbAgU3RyaXBlIDNEUyBmbG93IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIik7XG59LCBWID0geiQxLmVudW0oW1wic3RyaXBlXCIsIFwiYWlyd2FsbGV4XCIsIFwiYXV0aG9yaXplX25ldFwiXSk7XG5WLkVudW0uc3RyaXBlO1xuY29uc3QgeyBsb2dfXzogTCwgZXJyX186IExvIH0gPSBTKFwic3RyaXBlLXByXCIpLCBVbyA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnVuaW9uKFt6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSwgeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpXSksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgam8gPSBzZShcbiAgYXN5bmMgKHsgY29udGV4dDogdCwgZm9ybUNhbGxiYWNrczogbiB9KSA9PiB7XG4gICAgTChcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgU3RyaXBlIFBSLi4uXCIpO1xuICAgIGNvbnN0IGUgPSBZKHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgVW8pO1xuICAgIEwoXCJJbml0aWFsaXppbmcgU3RyaXBlIFBSIGZsb3cuLi5cIik7XG4gICAgY29uc3QgciA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgYSA9IGF3YWl0IE0ociksIGkgPSBhLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICBMKFwiR2V0dGluZyBpbml0aWFsIHByZXZpZXcgYW1vdW50XCIpO1xuICAgIGNvbnN0IHMgPSBhd2FpdCBoZShyLCBhLnRva2VuLCBpLCB2b2lkIDApLCBjID0gYXdhaXQgaXIoXG4gICAgICBlLm1ldGFkYXRhLnN0cmlwZV9wayxcbiAgICAgIHMuYW1vdW50QXRvbSxcbiAgICAgIHMuY3VycmVuY3ksXG4gICAgICBpXG4gICAgKTtcbiAgICBMKFwiQ2hlY2tpbmcgaWYgY2FuIG1ha2UgcGF5bWVudFwiKTtcbiAgICBjb25zdCBsID0gYXdhaXQgYy5jYW5NYWtlUGF5bWVudCgpO1xuICAgIGlmIChsID09PSBudWxsKVxuICAgICAgcmV0dXJuIExvKFwiY2FuTWFrZVBheW1lbnQgcmV0dXJuZWQgbnVsbFwiKSwgeyBpc0F2YWlsYWJsZTogITEsIHJlYXNvbjogXCJjYW5NYWtlUGF5bWVudCByZXR1cm5lZCBudWxsXCIgfTtcbiAgICBMKFwiU3RyaXBlIFBSIGZsb3cgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LiBDYW4gbWFrZSBwYXltZW50XCIsIGwpO1xuICAgIGNvbnN0IHUgPSAoZCwgZikgPT4gay5zdHJpcGVQUi5ydW4oe1xuICAgICAgY29udGV4dDogdCxcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogYmUodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBkKSxcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IEoodC5mb3JtRGl2KSxcbiAgICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgICBjdXN0b21QYXJhbXM6IHsgcHJvdmlkZXI6IGQsIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGYgPT0gbnVsbCA/IHZvaWQgMCA6IGYub3ZlcnJpZGVQYXltZW50UmVxdWVzdCB9LFxuICAgICAgaW5pdFJlc3VsdDoge1xuICAgICAgICBwcm9jZXNzb3I6IFYuRW51bS5zdHJpcGUsXG4gICAgICAgIHByOiBjLFxuICAgICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICAgIGF2YWlsYWJsZVByb3ZpZGVyczogeyBhcHBsZVBheTogbC5hcHBsZVBheSwgZ29vZ2xlUGF5OiBsLmdvb2dsZVBheSB9LFxuICAgICAgICBzdGFydEZsb3c6IHVcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvY2Vzc29yOiBWLkVudW0uc3RyaXBlLFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgcHI6IGMsXG4gICAgICBhdmFpbGFibGVQcm92aWRlcnM6IHtcbiAgICAgICAgYXBwbGVQYXk6IGwuYXBwbGVQYXksXG4gICAgICAgIGdvb2dsZVBheTogbC5nb29nbGVQYXlcbiAgICAgIH0sXG4gICAgICBzdGFydEZsb3c6IHVcbiAgICB9O1xuICB9XG4pLCB4byA9IGVlKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IHQsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IGUsXG4gICAgZm9ybUNhbGxiYWNrczogcixcbiAgICBjdXN0b21QYXJhbXM6IGEsXG4gICAgaW5pdFJlc3VsdDogaVxuICB9KSA9PiB7XG4gICAgaWYgKEwoXCJSdW5uaW5nIFN0cmlwZSBQUiBmbG93Li4uXCIpLCBhLnByb3ZpZGVyICE9PSBuLnByb3ZpZGVyKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlciBtaXNtYXRjaC4gRXhwZWN0ZWQgJHthLnByb3ZpZGVyfSwgZ290ICR7bi5wcm92aWRlcn1gKTtcbiAgICBjb25zdCBzID0gdC5hbnlDZGVDb25uZWN0aW9uLCBjID0gaS5wcjtcbiAgICBpZiAoYSAhPSBudWxsICYmIGEub3ZlcnJpZGVQYXltZW50UmVxdWVzdCkge1xuICAgICAgY29uc3QgbSA9IGEub3ZlcnJpZGVQYXltZW50UmVxdWVzdDtcbiAgICAgIEwoXCJPdmVycmlkaW5nIFBSIGFtb3VudCB3aXRoXCIsIG0pLCB6byhjLCBtLmFtb3VudCwgbS5wZW5kaW5nLCBtLmFwcGxlUGF5UGF5bWVudFJlcXVlc3QpO1xuICAgIH1cbiAgICBMKFwiU2hvd2luZyBQUiBkaWFsb2cuLi5cIiksIGMuc2hvdygpO1xuICAgIGNvbnN0IGwgPSBhd2FpdCBzcihjKTtcbiAgICBMKFwiU3RyaXBlIFBNIGFkZGVkIGV2ZW50OlwiLCBsKSwgTChcIk1lcmdpbmcgUE0gZmllbGRzIHdpdGggZm9ybSBmaWVsZHMuLi5cIik7XG4gICAgY29uc3QgdSA9ICRvKGUsIGwpLCBkID0gdGUodSwgci5nZXQub25WYWxpZGF0aW9uRXJyb3IpO1xuICAgIEwoXCJQUiBkaWFsb2cgZmluaXNoZWQuIFN0YXJ0aW5nIHBheW1lbnQgZmxvdy4uLlwiLCBkKTtcbiAgICBjb25zdCBmID0gYXdhaXQgenIocywge1xuICAgICAgZmllbGRzOiBkLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuXG4gICAgfSksIGggPSBHbyhmKTtcbiAgICBMKFwiQ29uZmlybWluZyBQUiB3aXRoIFN0cmlwZS4uLlwiKSwgYXdhaXQgY3IoaCwgbCk7XG4gICAgY29uc3QgeSA9IGF3YWl0IE0ocyk7XG4gICAgaWYgKHkubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICBMKFwiQ29uZmlybWluZyBwYXltZW50IGZsb3cgZm9yIHNldHVwLi4uXCIpO1xuICAgICAgY29uc3QgbSA9IGF3YWl0IEcocywge1xuICAgICAgICBzZWN1cmVfdG9rZW46IHkudG9rZW5cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHsgbW9kZTogXCJzZXR1cFwiLCByZXN1bHQ6IENlKG0pIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIEwoXCJQZXJmb3JtaW5nIGNoZWNrb3V0Li4uXCIpO1xuICAgICAgY29uc3QgbSA9IHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiB5LnRva2VuLFxuICAgICAgICBwYXltZW50X2lucHV0OiB7XG4gICAgICAgICAgcHJvdmlkZXJfdHlwZTogbi5wcm92aWRlclxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21lcl9maXJzdF9uYW1lOiBkW3AuRklSU1RfTkFNRV0sXG4gICAgICAgIGN1c3RvbWVyX2xhc3RfbmFtZTogZFtwLkxBU1RfTkFNRV0sXG4gICAgICAgIGN1c3RvbWVyX2VtYWlsOiBkW3AuRU1BSUxdLFxuICAgICAgICBjdXN0b21lcl96aXBfY29kZTogZFtwLlpJUF9DT0RFXSxcbiAgICAgICAgY3VzdG9tZXJfY291bnRyeTogZFtwLkNPVU5UUlldLFxuICAgICAgICBwcm9tb3Rpb25fY29kZTogZFtwLlBST01PVElPTl9DT0RFXSxcbiAgICAgICAgbGluZV9pdGVtczogeS5saW5lX2l0ZW1zLFxuICAgICAgICB0b3RhbF9hbW91bnRfYXRvbTogeS5hbW91bnRfdG90YWxfYXRvbSxcbiAgICAgICAgY2FuY2VsX2F0X2VuZDogITEsXG4gICAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IGF3YWl0IHJ0KHMsIG0pIH07XG4gICAgfVxuICB9XG4pLCAkbyA9ICh0LCBuKSA9PiB7XG4gIHZhciBsLCB1LCBkLCBmO1xuICBjb25zdCBlID0geyAuLi50IH0sIFtyLCAuLi5hXSA9ICgodSA9IChsID0gbi5wYXllck5hbWUpID09IG51bGwgPyB2b2lkIDAgOiBsLnRyaW0oKSkgPT0gbnVsbCA/IHZvaWQgMCA6IHUuc3BsaXQoL1xccysvKSkgPz8gW10sIGkgPSBhLmpvaW4oXCIgXCIpIHx8IHZvaWQgMCwgcyA9IChmID0gKGQgPSBuLnBheW1lbnRNZXRob2QpID09IG51bGwgPyB2b2lkIDAgOiBkLmJpbGxpbmdfZGV0YWlscykgPT0gbnVsbCA/IHZvaWQgMCA6IGYuYWRkcmVzcywgYyA9IG4uc2hpcHBpbmdBZGRyZXNzO1xuICByZXR1cm4gZVtwLkZJUlNUX05BTUVdID0gZVtwLkZJUlNUX05BTUVdIHx8IHIgfHwgXCJfT1BfVU5LTk9XTlwiLCBlW3AuTEFTVF9OQU1FXSA9IGVbcC5MQVNUX05BTUVdIHx8IGkgfHwgXCJfT1BfVU5LTk9XTlwiLCBlW3AuRU1BSUxdID0gZVtwLkVNQUlMXSB8fCBuLnBheWVyRW1haWwgfHwgXCJvcF91bmZpbGxlZEBnZXRvcGVucGF5LmNvbVwiLCBlW3AuWklQX0NPREVdID0gZVtwLlpJUF9DT0RFXSB8fCAocyA9PSBudWxsID8gdm9pZCAwIDogcy5wb3N0YWxfY29kZSkgfHwgKGMgPT0gbnVsbCA/IHZvaWQgMCA6IGMucG9zdGFsQ29kZSkgfHwgXCIwMDAwMFwiLCBlW3AuQ09VTlRSWV0gPSBlW3AuQ09VTlRSWV0gfHwgKHMgPT0gbnVsbCA/IHZvaWQgMCA6IHMuY291bnRyeSkgfHwgKGMgPT0gbnVsbCA/IHZvaWQgMCA6IGMuY291bnRyeSkgfHwgXCJVU1wiLCBMKFwiRmluYWwgZm9ybSBpbnB1dHM6XCIsIGUpLCBlO1xufSwgem8gPSAodCwgbiwgZSwgcikgPT4ge1xuICB0LnVwZGF0ZSh7XG4gICAgdG90YWw6IHtcbiAgICAgIGFtb3VudDogbi5hbW91bnRBdG9tLFxuICAgICAgbGFiZWw6IFwiVG90YWxcIixcbiAgICAgIHBlbmRpbmc6IGVcbiAgICB9LFxuICAgIGN1cnJlbmN5OiBuLmN1cnJlbmN5LFxuICAgIC8vIFN0cmlwZSdzIGFwcGxlUGF5IG9wdGlvbiBvbmx5IHN1cHBvcnRzICdyZWN1cnJpbmdQYXltZW50UmVxdWVzdCcgfCAnZGVmZXJyZWRQYXltZW50UmVxdWVzdCcgfCAnYXV0b21hdGljUmVsb2FkUGF5bWVudFJlcXVlc3QnIG9mIG5hdGl2ZSBBcHBsZVBheSBwYXltZW50IHJlcXVlc3RcbiAgICAvLyBXZSdyZSBhY2NlcHRpbmcgbmF0aXZlIFBheW1lbnQgUmVxdWVzdCBoZXJlIGZvciBtb3JlIGNvbW1vbiB0eXBpbmcuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIHN0cmlwZSBkbyBub3QgZXhwZWN0IGFkZGl0aW9uYWwgZmllbGRzXG4gICAgYXBwbGVQYXk6IHJcbiAgfSk7XG59LCBHbyA9ICh0KSA9PiB7XG4gIGlmICh0LnJlcXVpcmVkX3VzZXJfYWN0aW9ucy5sZW5ndGggIT09IDEpXG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBvY2N1cnJlZC5cbkRldGFpbHM6IGdvdCAke3QucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmxlbmd0aH0gcmVxdWlyZWQgdXNlciBhY3Rpb25zYCk7XG4gIHJldHVybiByci5wYXJzZSh0LnJlcXVpcmVkX3VzZXJfYWN0aW9uc1swXSk7XG59LCB7IGxvZ19fOiBLLCBlcnJfXzogZnQgfSA9IFMoXCJwb2NreXQtcGF5cGFsXCIpLCBWbyA9IHokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJwb2NreXRcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcInBheXBhbFwiKVxufSk7XG56JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIHBheXBhbF9pZnJhbWVfdXJsOiB6JDEuc3RyaW5nKCksXG4gICAgdmVyaWZ5X3Rva2VuOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuY29uc3QgcW8gPSBlZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiB0LFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiBlLFxuICAgIGZvcm1DYWxsYmFja3M6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICB2YXIgQSwgY2U7XG4gICAgSyhcIlJ1bm5pbmcgUG9ja3l0IFBheXBhbCBmbG93Li4uXCIpO1xuICAgIGNvbnN0IGkgPSB0LmFueUNkZUNvbm5lY3Rpb24sIHMgPSBhd2FpdCBNKGkpO1xuICAgIEsoXCJWZXJpZnlpbmcgQ1BNLi4uXCIpO1xuICAgIGNvbnN0IGMgPSBWby5wYXJzZShuKTtcbiAgICBLKFwi4pScIFZhbGlkYXRpbmcgbm9uLUNERSBmb3JtIGZpZWxkc1wiKTtcbiAgICBjb25zdCBsID0gYSA9PSBudWxsID8gdm9pZCAwIDogYS5zZXR0aW5ncywgdSA9IHRlKFxuICAgICAgZSxcbiAgICAgIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgbCA9PSBudWxsID8gdm9pZCAwIDogbC5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICApLCBkID0gSHIodSk7XG4gICAgSyhgU3RhcnRpbmcgcGF5bWVudCBmbG93Li4uIE1vZGU6ICR7cy5tb2RlfWApO1xuICAgIGNvbnN0IGYgPSB2NCgpLCBoID0gcy5tb2RlICE9PSBcInNldHVwXCIsIHkgPSB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiBjLnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IGMsXG4gICAgICB1c2VfcGF5X2ZpcnN0X2Zsb3c6IGgsXG4gICAgICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IGggPyB7XG4gICAgICAgIC8vIFRPRE8gYWRkIGNvdXBvbiBhbmQgY2FydCBhZGp1c3RlZCBsaW5lIGl0ZW1zIGxhdGVyXG4gICAgICAgIGxpbmVfaXRlbXM6IHMubGluZV9pdGVtcyxcbiAgICAgICAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiBzLmFtb3VudF90b3RhbF9hdG9tXG4gICAgICB9IDogdm9pZCAwLFxuICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgIHVzZV9wYXlwYWxfcmVkaXJlY3RfZmxvdzogISEoKEEgPSBhID09IG51bGwgPyB2b2lkIDAgOiBhLnNldHRpbmdzKSAhPSBudWxsICYmIEEudXNlUmVkaXJlY3RGbG93KSxcbiAgICAgICAgZnJvbnRlbmRfdG9rZW5fZm9yX3JlZGlyZWN0X2Zsb3c6IGZcbiAgICAgIH0sXG4gICAgICAuLi5kXG4gICAgfSwgbSA9IG5ldyBVUkwoXCIvYXBwL3ByZS1hY3Rpb24vc3RhcnQvXCIsIHQuYmFzZVVybCkudG9TdHJpbmcoKSwgXyA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoeSkpLCB2ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICBzdDogcy50b2tlbixcbiAgICAgIHI6IF9cbiAgICB9KSwgZyA9IGAke219PyR7di50b1N0cmluZygpfWA7XG4gICAgaWYgKChjZSA9IGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEuc2V0dGluZ3MpICE9IG51bGwgJiYgY2UudXNlUmVkaXJlY3RGbG93KVxuICAgICAgdGhyb3cgSyhcIlN0YXJ0aW5nIHJlZGlyZWN0IG1vZGUgZm9yIFBheVBhbC4uLlwiKSwgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBnLCBhd2FpdCBudCgyMCAqIDFlMyksIG5ldyBFcnJvcihcIlBheXBhbCBmbG93IHRpbWVkIG91dCwgcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGFub3RoZXIgcGF5bWVudCBtZXRob2QuXCIpO1xuICAgIEsoXCJTdGFydGluZyBwb3B1cCBtb2RlIGZvciBQYXlQYWwuLi5cIiksIEsoXCJPcGVuaW5nIHBheXBhbCBpZnJhbWUuLi5cIik7XG4gICAgY29uc3QgYiA9IGF3YWl0IGNvKFxuICAgICAgXCJQYXlQYWxcIixcbiAgICAgIGksXG4gICAgICBmLFxuICAgICAgZ1xuICAgICk7XG4gICAgSyhcIlBheXBhbCBmbG93IHJlc3VsdFwiLCBiKTtcbiAgICBjb25zdCBFID0gSHQoYi5ocmVmKSwgRCA9IG1vKGIuaHJlZiwgXCJjYXR0XCIpO1xuICAgIGlmICghRClcbiAgICAgIHRocm93IGZ0KFwiQ2hlY2tvdXQgYXR0ZW1wdCBJRCBub3QgZm91bmQgaW4gcmVkaXJlY3QgVVJMOlwiLCBiLmhyZWYpLCBuZXcgRXJyb3IoXCJDaGVja291dCBhdHRlbXB0IElEIG5vdCBmb3VuZCBpbiByZWRpcmVjdCBVUkxcIik7XG4gICAgSyhgQ29uZmlybWluZyBwYXltZW50IGZsb3cgdXNpbmcgdmF1bHQgSUQgJHtFfWApO1xuICAgIGNvbnN0IE4gPSBhd2FpdCBHKGksIHtcbiAgICAgIHNlY3VyZV90b2tlbjogcy50b2tlbixcbiAgICAgIHRoZWlyX3BtX2lkOiBFLFxuICAgICAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogaCA/IEQgOiB2b2lkIDBcbiAgICB9KTtcbiAgICBpZiAoSyhcIkNvbmZpcm0gcGF5bWVudCBmbG93IHJlc3VsdFwiLCBOKSwgcy5tb2RlID09PSBcInNldHVwXCIpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBcInNldHVwXCIsXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIHBheW1lbnRfbWV0aG9kX2lkOiBOLnBheW1lbnRfbWV0aG9kc1swXS5pZFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIGlmICghTi5wYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZSlcbiAgICAgIHRocm93IGZ0KFwiQ2hlY2tvdXQgZmFpbGVkLCBubyBwYXktZmlyc3Qgc3VjY2VzcyByZXNwb25zZTpcIiwgTiksIG5ldyBFcnJvcihcIkNoZWNrb3V0IGZhaWxlZCwgcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGFub3RoZXIgcGF5bWVudCBtZXRob2QuXCIpO1xuICAgIHJldHVybiB7XG4gICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICByZXN1bHQ6IE4ucGF5X2ZpcnN0X3N1Y2Nlc3NfcmVzcG9uc2VcbiAgICB9O1xuICB9XG4pLCAkZSA9ICh7XG4gIGdhdGV3YXk6IHQsXG4gIGdhdGV3YXlNZXJjaGFudElkOiBuLFxuICBtZXJjaGFudE5hbWU6IGUsXG4gIG1lcmNoYW50SWQ6IHIsXG4gIGluaXRpYWxQcmV2aWV3OiBhLFxuICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBpLFxuICBwcmVmaWxsOiBzXG59KSA9PiB7XG4gIHZhciBmLCBoO1xuICBjb25zdCBjID0gKChmID0gaSA9PSBudWxsID8gdm9pZCAwIDogaS5hbW91bnQpID09IG51bGwgPyB2b2lkIDAgOiBmLmFtb3VudEF0b20pID8/IChhID09IG51bGwgPyB2b2lkIDAgOiBhLmFtb3VudEF0b20pID8/IDAsIGwgPSBNYXRoLm1heChjIC8gMTAwLCAwKSwgdSA9ICgoKGggPSBpID09IG51bGwgPyB2b2lkIDAgOiBpLmFtb3VudCkgPT0gbnVsbCA/IHZvaWQgMCA6IGguY3VycmVuY3kpID8/IChzID09IG51bGwgPyB2b2lkIDAgOiBzLmN1cnJlbmN5KSA/PyBhLmN1cnJlbmN5KS50b1VwcGVyQ2FzZSgpLCBkID0ge1xuICAgIGFwaVZlcnNpb246IDIsXG4gICAgYXBpVmVyc2lvbk1pbm9yOiAwLFxuICAgIGFsbG93ZWRQYXltZW50TWV0aG9kczogW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcIkNBUkRcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIGFsbG93ZWRBdXRoTWV0aG9kczogW1wiUEFOX09OTFlcIiwgXCJDUllQVE9HUkFNXzNEU1wiXSxcbiAgICAgICAgICBhbGxvd2VkQ2FyZE5ldHdvcmtzOiBbXCJBTUVYXCIsIFwiRElTQ09WRVJcIiwgXCJJTlRFUkFDXCIsIFwiSkNCXCIsIFwiTUFTVEVSQ0FSRFwiLCBcIlZJU0FcIl0sXG4gICAgICAgICAgYmlsbGluZ0FkZHJlc3NSZXF1aXJlZDogITAsXG4gICAgICAgICAgYmlsbGluZ0FkZHJlc3NQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBmb3JtYXQ6IFwiRlVMTFwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhbGxvd0NyZWRpdENhcmRzOiAhMCxcbiAgICAgICAgICBhbGxvd1ByZXBhaWRDYXJkczogITBcbiAgICAgICAgfSxcbiAgICAgICAgdG9rZW5pemF0aW9uU3BlY2lmaWNhdGlvbjoge1xuICAgICAgICAgIHR5cGU6IFwiUEFZTUVOVF9HQVRFV0FZXCIsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgZ2F0ZXdheTogdCxcbiAgICAgICAgICAgIGdhdGV3YXlNZXJjaGFudElkOiBuXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXSxcbiAgICBlbWFpbFJlcXVpcmVkOiAhMCxcbiAgICBtZXJjaGFudEluZm86IHtcbiAgICAgIC8vIFBST0QgZW52IHdpbGwgbmVlZCB0aGlzXG4gICAgICAvLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9wYXkvYXBpL3dlYi9yZWZlcmVuY2UvcmVxdWVzdC1vYmplY3RzI01lcmNoYW50SW5mb1xuICAgICAgbWVyY2hhbnRJZDogciA/PyBcIlwiLFxuICAgICAgbWVyY2hhbnROYW1lOiBlXG4gICAgfSxcbiAgICB0cmFuc2FjdGlvbkluZm86IHtcbiAgICAgIGNvdW50cnlDb2RlOiBcIlVTXCIsXG4gICAgICBjdXJyZW5jeUNvZGU6IHUsXG4gICAgICB0b3RhbFByaWNlU3RhdHVzOiBpICE9IG51bGwgJiYgaS5wZW5kaW5nID8gXCJFU1RJTUFURURcIiA6IFwiRklOQUxcIixcbiAgICAgIHRvdGFsUHJpY2U6IGwudG9GaXhlZCgyKVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGkgIT0gbnVsbCAmJiBpLmdvb2dsZVBheVBheW1lbnRSZXF1ZXN0ID8geyAuLi5kLCAuLi5pLmdvb2dsZVBheVBheW1lbnRSZXF1ZXN0IH0gOiBkO1xufSwgWHQgPSAoKSA9PiBuZXcgUHJvbWlzZSgodCwgbikgPT4ge1xuICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgZS5zcmMgPSBcImh0dHBzOi8vcGF5Lmdvb2dsZS5jb20vZ3AvcC9qcy9wYXkuanNcIiwgZS5hc3luYyA9ICEwLCBlLm9ubG9hZCA9ICgpID0+IHQoKSwgZS5vbmVycm9yID0gKCkgPT4gbihuZXcgRXJyb3IoXCJGYWlsZWQgdG8gbG9hZCBHb29nbGUgUGF5IFNES1wiKSksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7XG59KTtcbmxldCBxZSA9IG51bGw7XG5jb25zdCBlbiA9ICh0KSA9PiB0ID09PSBldCB8fCB0ID09PSB3aW5kb3cubG9jYXRpb24ub3JpZ2luID8gXCJQUk9EVUNUSU9OXCIgOiBcIlRFU1RcIiwgemUgPSAodCwgbikgPT4ge1xuICBjb25zdCBlID0gZW4odCk7XG4gIHJldHVybiBxZSA9PT0gbnVsbCAmJiAocWUgPSBuZXcgd2luZG93Lmdvb2dsZS5wYXltZW50cy5hcGkuUGF5bWVudHNDbGllbnQoe1xuICAgIGVudmlyb25tZW50OiBlLFxuICAgIG1lcmNoYW50SW5mbzogbi5tZXJjaGFudEluZm9cbiAgfSkpLCBxZTtcbn0sIFlvID0gKHQpID0+IHtcbiAgY29uc3QgbiA9IHQucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmZpbmQoKGUpID0+IGUudHlwZSA9PT0gXCJhaXJ3YWxsZXhfcGF5bWVudF9jb25zZW50XCIpO1xuICByZXR1cm4gbiA/IER0LnBhcnNlKG4pIDogbnVsbDtcbn0sIHRuID0gKHQsIG4pID0+IHtcbiAgdmFyIGEsIGksIHMsIGM7XG4gIGNvbnN0IGUgPSB7IC4uLnQgfSwgciA9IChpID0gKGEgPSBuLnBheW1lbnRNZXRob2REYXRhKSA9PSBudWxsID8gdm9pZCAwIDogYS5pbmZvKSA9PSBudWxsID8gdm9pZCAwIDogaS5iaWxsaW5nQWRkcmVzcztcbiAgaWYgKHIpIHtcbiAgICBjb25zdCBbbCwgLi4udV0gPSAoKGMgPSAocyA9IHIubmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IHMudHJpbSgpKSA9PSBudWxsID8gdm9pZCAwIDogYy5zcGxpdCgvXFxzKy8pKSA/PyBbXSwgZCA9IHUuam9pbihcIiBcIikgfHwgdm9pZCAwO1xuICAgIGVbcC5FTUFJTF0gPSBlW3AuRU1BSUxdIHx8IG4uZW1haWwgfHwgXCJvcF91bmZpbGxlZEBnZXRvcGVucGF5LmNvbVwiLCBlW3AuQ09VTlRSWV0gPSBlW3AuQ09VTlRSWV0gfHwgci5jb3VudHJ5Q29kZSB8fCBcIlVTXCIsIGVbcC5BRERSRVNTXSA9IGVbcC5BRERSRVNTXSB8fCByLmFkZHJlc3MxIHx8IFwiXCIsIGVbcC5DSVRZXSA9IGVbcC5DSVRZXSB8fCByLmxvY2FsaXR5IHx8IFwiXCIsIGVbcC5aSVBfQ09ERV0gPSBlW3AuWklQX0NPREVdIHx8IHIucG9zdGFsQ29kZSB8fCBcIjAwMDAwXCIsIGVbcC5TVEFURV0gPSBlW3AuU1RBVEVdIHx8IHIuYWRtaW5pc3RyYXRpdmVBcmVhIHx8IFwiXCIsIGVbcC5GSVJTVF9OQU1FXSA9IGVbcC5GSVJTVF9OQU1FXSB8fCBsIHx8IFwiX09QX1VOS05PV05cIiwgZVtwLkxBU1RfTkFNRV0gPSBlW3AuTEFTVF9OQU1FXSB8fCBkIHx8IFwiX09QX1VOS05PV05cIjtcbiAgfVxuICByZXR1cm4gZTtcbn0sIHsgbG9nX186IHosIGVycl9fOiBsZSB9ID0gUyhcImF3eC1nb29nbGUtcGF5XCIpLCBLbyA9IHNlKFxuICBhc3luYyAoeyBjb250ZXh0OiB0LCBmb3JtQ2FsbGJhY2tzOiBuIH0pID0+IHtcbiAgICB2YXIgZiwgaDtcbiAgICBjb25zdCBlID0ge1xuICAgICAgcHJvY2Vzc29yOiBWLkVudW0uYWlyd2FsbGV4LFxuICAgICAgaXNBdmFpbGFibGU6ICExLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgfVxuICAgIH0sIHIgPSBZKHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgQnQpO1xuICAgIGlmICghcilcbiAgICAgIHJldHVybiBlO1xuICAgIHooXCJHb29nbGUgUGF5IENQTVwiLCByKTtcbiAgICBjb25zdCBhID0gci5tZXRhZGF0YTtcbiAgICBpZiAoIWEucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICByZXR1cm4gbGUoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpLCBlO1xuICAgIGlmICh6KFwiTG9hZGluZyBHb29nbGUgUGF5IFNESy4uLlwiKSwgYXdhaXQgWHQoKSwgISgoaCA9IChmID0gd2luZG93Lmdvb2dsZSkgPT0gbnVsbCA/IHZvaWQgMCA6IGYucGF5bWVudHMpICE9IG51bGwgJiYgaC5hcGkpKVxuICAgICAgcmV0dXJuIGxlKFwiR29vZ2xlIFBheSBTREsgbm90IGxvYWRlZCBwcm9wZXJseVwiKSwgZTtcbiAgICBpZiAoZW4odC5iYXNlVXJsKSA9PT0gXCJQUk9EVUNUSU9OXCIgJiYgIWEuZ29vZ2xlX3BheV9tZXJjaGFudF9pZClcbiAgICAgIHJldHVybiBsZShcIkdvb2dsZSBQYXkgbWVyY2hhbnQgSUQgaXMgcmVxdWlyZWQgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcIiksIGU7XG4gICAgeihcIkdvb2dsZSBQYXkgU0RLIGxvYWRlZFwiLCB3aW5kb3cuZ29vZ2xlLnBheW1lbnRzKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeSA9ICRlKHtcbiAgICAgICAgZ2F0ZXdheTogXCJhaXJ3YWxsZXhcIixcbiAgICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IGEucHJvY2Vzc29yX2FjY291bnRfaWQsXG4gICAgICAgIG1lcmNoYW50TmFtZTogYS5wcm9jZXNzb3JfYWNjb3VudF9uYW1lLFxuICAgICAgICBtZXJjaGFudElkOiBhLmdvb2dsZV9wYXlfbWVyY2hhbnRfaWQgPz8gXCJcIixcbiAgICAgICAgLy8gVGhpcyBpcyBmb3IgaW5pdGlhbCBwYXltZW50IHJlcXVlc3QgdG8gY2hlY2sgYXZhaWxhYmlsaXR5LiBBY3R1YWwgYGluaXRpYWxQcmV2aWV3YCB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgVUkgaXMgc2hvd25cbiAgICAgICAgaW5pdGlhbFByZXZpZXc6IHtcbiAgICAgICAgICBhbW91bnRBdG9tOiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiBcIlVTRFwiXG4gICAgICAgIH1cbiAgICAgIH0pLCB7IHJlc3VsdDogbSB9ID0gYXdhaXQgemUodC5iYXNlVXJsLCB5KS5pc1JlYWR5VG9QYXkoXG4gICAgICAgIHlcbiAgICAgICk7XG4gICAgICBpZiAoIW0pXG4gICAgICAgIHJldHVybiB6KFwiR29vZ2xlIFBheSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXJcIiksIGU7XG4gICAgfSBjYXRjaCAoeSkge1xuICAgICAgcmV0dXJuIGxlKFwiRXJyb3IgY2hlY2tpbmcgR29vZ2xlIFBheSBhdmFpbGFiaWxpdHlcIiwgeSksIGU7XG4gICAgfVxuICAgIGNvbnN0IHMgPSB0LmFueUNkZUNvbm5lY3Rpb24sIGMgPSBhd2FpdCBNKHMpLCBsID0gYy5tb2RlID09PSBcInNldHVwXCIsIHUgPSBhd2FpdCBoZShzLCBjLnRva2VuLCBsLCB2b2lkIDApLCBkID0gYXN5bmMgKHkpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGsuYWlyd2FsbGV4R29vZ2xlUGF5LnJ1bih7XG4gICAgICAgICAgY29udGV4dDogdCxcbiAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogSih0LmZvcm1EaXYpLFxuICAgICAgICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwLFxuICAgICAgICAgIGN1c3RvbVBhcmFtczoge1xuICAgICAgICAgICAgLi4ueSxcbiAgICAgICAgICAgIGluaXRpYWxQcmV2aWV3OiB1XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKG0pIHtcbiAgICAgICAgbGUoXCJHb29nbGUgUGF5IHBheW1lbnQgZXJyb3JcIiwgbSksIG4uZ2V0Lm9uQ2hlY2tvdXRFcnJvcigobSA9PSBudWxsID8gdm9pZCAwIDogbS5tZXNzYWdlKSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvY2Vzc29yOiBWLkVudW0uYWlyd2FsbGV4LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogZFxuICAgIH07XG4gIH1cbiksIFdvID0gZWUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogdCxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogZSxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogYVxuICB9KSA9PiB7XG4gICAgdmFyIGYsIGgsIHksIG0sIF8sIHYsIGc7XG4gICAgeihcIlN0YXJ0aW5nIEdvb2dsZSBQYXkgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gWSh0LmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIEJ0KSwgeyBpbml0aWFsUHJldmlldzogcywgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogYyB9ID0gYSwgbCA9IGkubWV0YWRhdGE7XG4gICAgaWYgKCFsLnByb2Nlc3Nvcl9hY2NvdW50X2lkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZ2F0ZXdheSBtZXJjaGFudCBJRCBmb3VuZCBpbiBwcm9jZXNzb3IgYWNjb3VudFwiKTtcbiAgICBjb25zdCB1ID0gJGUoe1xuICAgICAgZ2F0ZXdheTogXCJhaXJ3YWxsZXhcIixcbiAgICAgIGdhdGV3YXlNZXJjaGFudElkOiBsLnByb2Nlc3Nvcl9hY2NvdW50X2lkLFxuICAgICAgbWVyY2hhbnROYW1lOiBsLnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICBtZXJjaGFudElkOiBsLmdvb2dsZV9wYXlfbWVyY2hhbnRfaWQgPz8gXCJcIixcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBzLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogY1xuICAgIH0pLCBkID0gemUodC5iYXNlVXJsLCB1KTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYiA9IGF3YWl0IGQubG9hZFBheW1lbnREYXRhKHUpO1xuICAgICAgeihcIkdvb2dsZSBQYXkgUGF5bWVudCBkYXRhXCIsIGIpO1xuICAgICAgY29uc3QgRSA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgRCA9IGF3YWl0IE0oRSksIE4gPSB0bihlLCBiKSwgQSA9IHRlKFxuICAgICAgICBOLFxuICAgICAgICByLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgICAgYSA9PSBudWxsID8gdm9pZCAwIDogYS5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICAgICksIGNlID0gKGggPSAoZiA9IGIucGF5bWVudE1ldGhvZERhdGEpID09IG51bGwgPyB2b2lkIDAgOiBmLnRva2VuaXphdGlvbkRhdGEpID09IG51bGwgPyB2b2lkIDAgOiBoLnRva2VuO1xuICAgICAgaWYgKCFjZSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gcGF5bWVudCB0b2tlbiByZWNlaXZlZCBmcm9tIEdvb2dsZSBQYXlcIik7XG4gICAgICBjb25zdCBfbiA9IGF3YWl0IGZlKEUsIHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5wcm92aWRlcixcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG4sXG4gICAgICAgIG5ld19jdXN0b21lcl9lbWFpbDogQVtwLkVNQUlMXSxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2ZpcnN0X25hbWU6IEFbcC5GSVJTVF9OQU1FXSxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogQVtwLkxBU1RfTkFNRV0sXG4gICAgICAgIG5ld19jdXN0b21lcl9hZGRyZXNzOiB7XG4gICAgICAgICAgemlwX2NvZGU6IEFbcC5aSVBfQ09ERV0sXG4gICAgICAgICAgY291bnRyeTogQVtwLkNPVU5UUlldXG4gICAgICAgIH1cbiAgICAgIH0pLCBTZSA9IFlvKF9uKTtcbiAgICAgIHooXCJTdGFydCBmbG93IG5leHQgYWN0aW9uc1wiLCBTZSk7XG4gICAgICBsZXQgcmUgPSBhd2FpdCBHKEUsIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBELnRva2VuLFxuICAgICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLnByb3ZpZGVyLFxuICAgICAgICAgIC8vIEdvb2dsZVBheSdzIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuIHByb3ZpZGVkIHRvIHZlcmlmeSB0aGUgY29uc2VudCBmaXJzdFxuICAgICAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBTZSA9PSBudWxsID8gdm9pZCAwIDogU2UuY29uc2VudF9pZCxcbiAgICAgICAgICBhaXJ3YWxsZXhfcGF5bWVudF9tZXRob2RfZGF0YToge1xuICAgICAgICAgICAgdHlwZTogXCJnb29nbGVwYXlcIixcbiAgICAgICAgICAgIGdvb2dsZXBheToge1xuICAgICAgICAgICAgICBwYXltZW50X2RhdGFfdHlwZTogXCJlbmNyeXB0ZWRfcGF5bWVudF90b2tlblwiLFxuICAgICAgICAgICAgICBlbmNyeXB0ZWRfcGF5bWVudF90b2tlbjogY2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgeihcIlsxc3RdIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIHJlKTtcbiAgICAgIGxldCBWZSA9IChtID0gKHkgPSByZS5wYXltZW50X21ldGhvZHMpID09IG51bGwgPyB2b2lkIDAgOiB5WzBdKSA9PSBudWxsID8gdm9pZCAwIDogbS5pZDtcbiAgICAgIGNvbnN0IG9lID0gKF8gPSByZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBfLmZpbmQoXG4gICAgICAgIChfZSkgPT4gX2UudHlwZSA9PT0gXCJhaXJ3YWxsZXhfcGF5bWVudF9jb25zZW50XCJcbiAgICAgICk7XG4gICAgICBpZiAob2UgJiYgb2UucmVkaXJlY3RfdXJsKSB7XG4gICAgICAgIHooXCIzRFMgUmVxdWlyZWQsIHN0YXJ0aW5nIHZlcmlmaWNhdGlvbi4uLlwiLCBvZSk7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzOiBfZSB9ID0gYXdhaXQgeGUoe1xuICAgICAgICAgIHVybDogb2UucmVkaXJlY3RfdXJsLFxuICAgICAgICAgIGJhc2VVcmw6IHQuYmFzZVVybFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHooYOKVsCAzRFMgdmVyaWZpY2F0aW9uIGNvbXBsZXRlZCBbU3RhdHVzOiAke19lfV1gKSwgX2UgPT09IEkuQ0FOQ0VMTEVEKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gY2FuY2VsbGVkXCIpO1xuICAgICAgICBpZiAoX2UgPT09IEkuRkFJTFVSRSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChvZSAmJiAhVmUgJiYgKHJlID0gYXdhaXQgRyhFLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogRC50b2tlbixcbiAgICAgICAgdGhlaXJfcG1faWQ6IG9lLnRoZWlyX3BtX2lkLFxuICAgICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLnByb3ZpZGVyLFxuICAgICAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBvZS5jb25zZW50X2lkXG4gICAgICAgIH1cbiAgICAgIH0pLCB6KFwiWzJuZF0gQ29uZmlybSBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgcmUpLCBWZSA9IChnID0gKHYgPSByZS5wYXltZW50X21ldGhvZHMpID09IG51bGwgPyB2b2lkIDAgOiB2WzBdKSA9PSBudWxsID8gdm9pZCAwIDogZy5pZCksICFWZSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gUE0gSUQgZm91bmRcIik7XG4gICAgICByZXR1cm4gamUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwiYXd4LWdvb2dsZXBheVwiLFxuICAgICAgICBhbnlDZGVDb25uZWN0aW9uOiBFLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogQSxcbiAgICAgICAgY29uZmlybVJlc3VsdDogcmUsXG4gICAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGIpIHtcbiAgICAgIHRocm93IGxlKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIGIpLCBuZXcgRXJyb3IoKGIgPT0gbnVsbCA/IHZvaWQgMCA6IGIubWVzc2FnZSkgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgbm4gPSAoKSA9PiBuZXcgUHJvbWlzZSgodCwgbikgPT4ge1xuICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgZS5zcmMgPSBcImh0dHBzOi8vYXBwbGVwYXkuY2RuLWFwcGxlLmNvbS9qc2FwaS8xLmxhdGVzdC9hcHBsZS1wYXktc2RrLmpzXCIsIGUuY3Jvc3NPcmlnaW4gPSBcImFub255bW91c1wiLCBlLmFzeW5jID0gITAsIGUub25sb2FkID0gKCkgPT4gdCgpLCBlLm9uZXJyb3IgPSAoKSA9PiBuKG5ldyBFcnJvcihcIkZhaWxlZCB0byBsb2FkIEFwcGxlIFBheSBTREtcIikpLCBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpO1xufSksIHJuID0gKHQsIG4pID0+IHtcbiAgY29uc3QgZSA9IG4udG9rZW4ucGF5bWVudE1ldGhvZC5iaWxsaW5nQ29udGFjdCwgciA9IG4uYmlsbGluZ0NvbnRhY3QsIGEgPSBuLnNoaXBwaW5nQ29udGFjdCwgaSA9IHsgLi4udCB9O1xuICByZXR1cm4gKGUgfHwgciB8fCBhKSAmJiAoaVtwLkVNQUlMXSA9IGlbcC5FTUFJTF0gfHwgKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUuZW1haWxBZGRyZXNzKSB8fCAociA9PSBudWxsID8gdm9pZCAwIDogci5lbWFpbEFkZHJlc3MpIHx8IChhID09IG51bGwgPyB2b2lkIDAgOiBhLmVtYWlsQWRkcmVzcykgfHwgXCJvcF91bmZpbGxlZEBlbWFpbC5jb21cIiwgaVtwLkNPVU5UUlldID0gaVtwLkNPVU5UUlldIHx8IChlID09IG51bGwgPyB2b2lkIDAgOiBlLmNvdW50cnlDb2RlKSB8fCAociA9PSBudWxsID8gdm9pZCAwIDogci5jb3VudHJ5Q29kZSkgfHwgKGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEuY291bnRyeUNvZGUpIHx8IFwiVVNcIiwgaVtwLlpJUF9DT0RFXSA9IGlbcC5aSVBfQ09ERV0gfHwgKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUucG9zdGFsQ29kZSkgfHwgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIucG9zdGFsQ29kZSkgfHwgKGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEucG9zdGFsQ29kZSkgfHwgXCIwMDAwMFwiLCBpW3AuRklSU1RfTkFNRV0gPSBpW3AuRklSU1RfTkFNRV0gfHwgKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUuZ2l2ZW5OYW1lKSB8fCAociA9PSBudWxsID8gdm9pZCAwIDogci5naXZlbk5hbWUpIHx8IChhID09IG51bGwgPyB2b2lkIDAgOiBhLmdpdmVuTmFtZSkgfHwgXCJfT1BfVU5LTk9XTlwiLCBpW3AuTEFTVF9OQU1FXSA9IGlbcC5MQVNUX05BTUVdIHx8IChlID09IG51bGwgPyB2b2lkIDAgOiBlLmZhbWlseU5hbWUpIHx8IChyID09IG51bGwgPyB2b2lkIDAgOiByLmZhbWlseU5hbWUpIHx8IChhID09IG51bGwgPyB2b2lkIDAgOiBhLmZhbWlseU5hbWUpIHx8IFwiX09QX1VOS05PV05cIiksIGk7XG59LCBKbyA9IHokMS5vYmplY3Qoe1xuICBkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBtZXNzYWdlSGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gICAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLmFueSgpKSxcbiAgICBtZXNzYWdlVHlwZTogeiQxLnN0cmluZygpLFxuICAgIG1lc3NhZ2VCb2R5OiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKVxuICB9KSxcbiAgb3JpZ2luOiB6JDEubGl0ZXJhbChcImh0dHBzOi8vYXBwbGVwYXkuY2RuLWFwcGxlLmNvbVwiKVxufSksIEhvID0gKHQpID0+IEpvLnNhZmVQYXJzZSh0KS5kYXRhLCBabyA9ICh0KSA9PiB7XG4gIGNvbnN0IG4gPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIHJldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICBcIm1lc3NhZ2VcIixcbiAgICAoZSkgPT4ge1xuICAgICAgdmFyIGE7XG4gICAgICBjb25zdCByID0gSG8oZSk7XG4gICAgICAoKGEgPSByID09IG51bGwgPyB2b2lkIDAgOiByLmRhdGEpID09IG51bGwgPyB2b2lkIDAgOiBhLm1lc3NhZ2VUeXBlKSA9PT0gXCJ3aW5kb3djbG9zaW5nXCIgJiYgKHQoKSwgbi5hYm9ydCgpKTtcbiAgICB9LFxuICAgIHtcbiAgICAgIHNpZ25hbDogbi5zaWduYWxcbiAgICB9XG4gICksIHtcbiAgICBjbGVhbnVwQ2FuY2VsTGlzdGVuZXI6ICgpID0+IG4uYWJvcnQoKVxuICB9O1xufSwgb24gPSAoe1xuICB0b3RhbDogdCxcbiAgcHJlZmlsbDogblxufSkgPT4ge1xuICB2YXIgcjtcbiAgaWYgKG4ubW9kZSA9PT0gXCJzZXR1cFwiKVxuICAgIHJldHVybiB7XG4gICAgICBwYXltZW50RGVzY3JpcHRpb246IFwiU2V0dXAgcmVjdXJyaW5nIHBheW1lbnRcIixcbiAgICAgIHJlZ3VsYXJCaWxsaW5nOiB7XG4gICAgICAgIGFtb3VudDogdC5hbW91bnQsXG4gICAgICAgIGxhYmVsOiBcIlNldHVwIHJlY3VycmluZyBwYXltZW50XCIsXG4gICAgICAgIHBheW1lbnRUaW1pbmc6IFwicmVjdXJyaW5nXCIsXG4gICAgICAgIHR5cGU6IFwiZmluYWxcIlxuICAgICAgfSxcbiAgICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIGJpbGxpbmcgcG9ydGFsIHVybFxuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vcGFzc2tpdC9wa3JlY3VycmluZ3BheW1lbnRyZXF1ZXN0L21hbmFnZW1lbnR1cmwjRGlzY3Vzc2lvblxuICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSB1c2VkIHdoZW4gdXNlciByZW1vdmUgYSBjYXJkIGZyb20gdGhlaXIgQXBwbGVQYXkgd2FsbGV0LlxuICAgICAgLy8gQ3VycmVudHkgc2V0IHRvIGNoZWNrb3V0IHNlc3Npb24gdXJsIHRvIHNhdGlzZnkgQXBwbGVQYXkgdHlwZXNcbiAgICAgIG1hbmFnZW1lbnRVUkw6IG5ldyBVUkwoYC9wYXkvJHtuLnRva2VufWAsIGV0KS50b1N0cmluZygpXG4gICAgfTtcbiAgY29uc3QgZSA9IChyID0gbi5saW5lX2l0ZW1zKSA9PSBudWxsID8gdm9pZCAwIDogclswXTtcbiAgaWYgKGUpXG4gICAgcmV0dXJuIHtcbiAgICAgIHBheW1lbnREZXNjcmlwdGlvbjogKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUuZGVzY3JpcHRpb24pID8/IFwiXCIsXG4gICAgICByZWd1bGFyQmlsbGluZzoge1xuICAgICAgICBhbW91bnQ6IHQuYW1vdW50LFxuICAgICAgICBsYWJlbDogKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUuZGVzY3JpcHRpb24pID8/IFwiXCIsXG4gICAgICAgIHJlY3VycmluZ1BheW1lbnRJbnRlcnZhbFVuaXQ6IGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUuYmlsbGluZ19pbnRlcnZhbCxcbiAgICAgICAgcmVjdXJyaW5nUGF5bWVudEludGVydmFsQ291bnQ6IChlID09IG51bGwgPyB2b2lkIDAgOiBlLmJpbGxpbmdfaW50ZXJ2YWxfY291bnQpID8/IHZvaWQgMCxcbiAgICAgICAgcGF5bWVudFRpbWluZzogXCJyZWN1cnJpbmdcIixcbiAgICAgICAgdHlwZTogXCJmaW5hbFwiXG4gICAgICB9LFxuICAgICAgbWFuYWdlbWVudFVSTDogYGh0dHBzOi8vY2RlLmdldG9wZW5wYXkuY29tL3BheS8ke24udG9rZW59YFxuICAgIH07XG59LCBhbiA9ICh7XG4gIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IHQsXG4gIGluaXRpYWxQcmV2aWV3OiBuLFxuICBwcmVmaWxsOiBlLFxuICBkZWZhdWx0TGFiZWw6IHIgPSBcIlRvdGFsXCJcbn0pID0+IHtcbiAgdmFyIGMsIGw7XG4gIGNvbnN0IGEgPSAoKChjID0gdCA9PSBudWxsID8gdm9pZCAwIDogdC5hbW91bnQpID09IG51bGwgPyB2b2lkIDAgOiBjLmN1cnJlbmN5KSA/PyAoZSA9PSBudWxsID8gdm9pZCAwIDogZS5jdXJyZW5jeSkgPz8gbi5jdXJyZW5jeSkudG9VcHBlckNhc2UoKSwgcyA9ICgoKChsID0gdCA9PSBudWxsID8gdm9pZCAwIDogdC5hbW91bnQpID09IG51bGwgPyB2b2lkIDAgOiBsLmFtb3VudEF0b20pID8/IChuID09IG51bGwgPyB2b2lkIDAgOiBuLmFtb3VudEF0b20pID8/IDApIC8gMTAwKS50b0ZpeGVkKDIpO1xuICByZXR1cm4ge1xuICAgIGN1cnJlbmN5Q29kZTogYSxcbiAgICB0b3RhbDoge1xuICAgICAgbGFiZWw6ICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LmxhYmVsKSA/PyByID8/IFwiVG90YWxcIixcbiAgICAgIHR5cGU6IHQgIT0gbnVsbCAmJiB0LnBlbmRpbmcgPyBcInBlbmRpbmdcIiA6IFwiZmluYWxcIixcbiAgICAgIGFtb3VudDogc1xuICAgIH1cbiAgfTtcbn0sIHsgbG9nX186IEllIH0gPSBTKFwiYXd4LWFwcGxlLXBheVwiKTtcbmFzeW5jIGZ1bmN0aW9uIEJvKHQsIG4pIHtcbiAgdHJ5IHtcbiAgICBjb25zdCByID0gKGF3YWl0IEd0KG4uY29ubmVjdGlvbiwge1xuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG4uY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgIGFpcndhbGxleF9wYXltZW50X3Nlc3Npb246IHtcbiAgICAgICAgICB2YWxpZGF0aW9uX3VybDogdC52YWxpZGF0aW9uVVJMLFxuICAgICAgICAgIGluaXRpYXRpdmVfY29udGV4dDogd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLFxuICAgICAgICAgIHRoZWlyX2FjY291bnRfaWQ6IG4ucHJvY2Vzc29yQWNjb3VudC5wcm9jZXNzb3JfYWNjb3VudF9pZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpLm5leHRfYWN0aW9uX21ldGFkYXRhLCBhID0gciA9PSBudWxsID8gdm9pZCAwIDogci5hcHBsZV9wYXlfc2Vzc2lvbjtcbiAgICBpZiAoIWEpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBzZXNzaW9uIGRhdGEgcmVjZWl2ZWQgZnJvbSBwYXltZW50IGZsb3dcIik7XG4gICAgbi5zZXNzaW9uLmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGEpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbi5zZXNzaW9uLmFib3J0KCksIGU7XG4gIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIFFvKHQsIG4pIHtcbiAgaWYgKCF0LnJlZGlyZWN0X3VybClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyByZWRpcmVjdCBVUkwgZm91bmRcIik7XG4gIEllKFwiM0RTIFJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIiwgdCk7XG4gIGNvbnN0IHsgc3RhdHVzOiBlIH0gPSBhd2FpdCB4ZSh7XG4gICAgdXJsOiB0LnJlZGlyZWN0X3VybCxcbiAgICBiYXNlVXJsOiBuLmJhc2VVcmxcbiAgfSk7XG4gIGlmIChJZShg4pWwIDNEUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7ZX1dYCksIGUgPT09IEkuQ0FOQ0VMTEVEKVxuICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gY2FuY2VsbGVkXCIpO1xuICBpZiAoZSA9PT0gSS5GQUlMVVJFKVxuICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICBjb25zdCByID0gYXdhaXQgRyhuLmNvbm5lY3Rpb24sIHtcbiAgICBzZWN1cmVfdG9rZW46IG4ucHJlZmlsbC50b2tlbixcbiAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgIHRoZWlyX3BtX2lkOiB0LnRoZWlyX3BtX2lkLFxuICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IHQuY29uc2VudF9pZCxcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IG4uY2hlY2tvdXRQYXltZW50TWV0aG9kLnByb3ZpZGVyXG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIEllKFwiWzJuZF0gQ29uZmlybSBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgciksIHI7XG59XG5hc3luYyBmdW5jdGlvbiBYbyh0LCBuKSB7XG4gIHZhciBlLCByLCBhLCBpLCBzO1xuICB0cnkge1xuICAgIGNvbnN0IGMgPSB0LnBheW1lbnQsIGwgPSBybihuLm5vbkNkZUZvcm1JbnB1dHMsIGMpLCB1ID0gdGUoXG4gICAgICBsLFxuICAgICAgbi5mb3JtQ2FsbGJhY2tzLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIG4uZGVmYXVsdEZpZWxkVmFsdWVzXG4gICAgKSwgaCA9IChhd2FpdCBmZShuLmNvbm5lY3Rpb24sIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IG4uY2hlY2tvdXRQYXltZW50TWV0aG9kLnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG4uY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgbmV3X2N1c3RvbWVyX2VtYWlsOiB1W3AuRU1BSUxdLFxuICAgICAgbmV3X2N1c3RvbWVyX2ZpcnN0X25hbWU6IHVbcC5GSVJTVF9OQU1FXSxcbiAgICAgIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHVbcC5MQVNUX05BTUVdLFxuICAgICAgbmV3X2N1c3RvbWVyX2FkZHJlc3M6IHtcbiAgICAgICAgemlwX2NvZGU6IHVbcC5aSVBfQ09ERV0sXG4gICAgICAgIGNvdW50cnk6IHVbcC5DT1VOVFJZXVxuICAgICAgfVxuICAgIH0pKS5yZXF1aXJlZF91c2VyX2FjdGlvbnNbMF0uY29uc2VudF9pZDtcbiAgICBpZiAoIWgpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb25zZW50IElEIHJlY2VpdmVkIGZyb20gcGF5bWVudCBmbG93XCIpO1xuICAgIGxldCB5ID0gYXdhaXQgRyhuLmNvbm5lY3Rpb24sIHtcbiAgICAgIHNlY3VyZV90b2tlbjogbi5wcmVmaWxsLnRva2VuLFxuICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IG4uY2hlY2tvdXRQYXltZW50TWV0aG9kLnByb3ZpZGVyLFxuICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogaCxcbiAgICAgICAgYWlyd2FsbGV4X3BheW1lbnRfbWV0aG9kX2RhdGE6IHtcbiAgICAgICAgICB0eXBlOiBcImFwcGxlcGF5XCIsXG4gICAgICAgICAgYXBwbGVwYXk6IHtcbiAgICAgICAgICAgIHBheW1lbnRfZGF0YV90eXBlOiBcImVuY3J5cHRlZF9wYXltZW50X3Rva2VuXCIsXG4gICAgICAgICAgICBlbmNyeXB0ZWRfcGF5bWVudF90b2tlbjogSlNPTi5zdHJpbmdpZnkoYy50b2tlbilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBJZShcIlsxc3RdIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIHkpO1xuICAgIGxldCBtID0gKHIgPSAoZSA9IHkucGF5bWVudF9tZXRob2RzKSA9PSBudWxsID8gdm9pZCAwIDogZVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IHIuaWQ7XG4gICAgY29uc3QgXyA9IChhID0geS5yZXF1aXJlZF91c2VyX2FjdGlvbnMpID09IG51bGwgPyB2b2lkIDAgOiBhLmZpbmQoXG4gICAgICAoZykgPT4gZy50eXBlID09PSBcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIlxuICAgICk7XG4gICAgaWYgKF8gIT0gbnVsbCAmJiBfLnJlZGlyZWN0X3VybCAmJiBfLmNvbnNlbnRfaWQgJiYgXy50aGVpcl9wbV9pZCAmJiAoeSA9IGF3YWl0IFFvKF8sIG4pLCBtID0gKHMgPSAoaSA9IHkucGF5bWVudF9tZXRob2RzKSA9PSBudWxsID8gdm9pZCAwIDogaVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IHMuaWQpLCAhbSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIFBNIElEIGZvdW5kXCIpO1xuICAgIGNvbnN0IHYgPSB7XG4gICAgICBzdGF0dXM6IEFwcGxlUGF5U2Vzc2lvbi5TVEFUVVNfU1VDQ0VTU1xuICAgIH07XG4gICAgcmV0dXJuIG4uc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQodiksIGplKHtcbiAgICAgIGxvZ1ByZWZpeDogXCJhd3gtYXBwbGVwYXlcIixcbiAgICAgIGFueUNkZUNvbm5lY3Rpb246IG4uY29ubmVjdGlvbixcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IHUsXG4gICAgICBjb25maXJtUmVzdWx0OiB5LFxuICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgIH0pO1xuICB9IGNhdGNoIChjKSB7XG4gICAgY29uc3QgbCA9IHtcbiAgICAgIHN0YXR1czogQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFXG4gICAgfTtcbiAgICB0aHJvdyBuLnNlc3Npb24uY29tcGxldGVQYXltZW50KGwpLCBjO1xuICB9XG59XG5jb25zdCB7IGxvZ19fOiB1ZSwgZXJyX186IEplIH0gPSBTKFwiYXd4LWFwcGxlLXBheVwiKSwgZWEgPSBzZShcbiAgYXN5bmMgKHsgY29udGV4dDogdCwgZm9ybUNhbGxiYWNrczogbiB9KSA9PiB7XG4gICAgY29uc3QgZSA9IHtcbiAgICAgIHByb2Nlc3NvcjogVi5FbnVtLmFpcndhbGxleCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMSxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH1cbiAgICB9LCByID0gWSh0LmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIFp0KTtcbiAgICBpZiAoIXIpXG4gICAgICByZXR1cm4gZTtcbiAgICB1ZShcIkxvYWRpbmcgQXBwbGUgUGF5IFNESy4uLlwiKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbm4oKSwgdWUoXCJBcHBsZSBQYXkgU0RLIGxvYWRlZCBzdWNjZXNzZnVsbHlcIik7XG4gICAgfSBjYXRjaCAoZikge1xuICAgICAgcmV0dXJuIEplKFwiRmFpbGVkIHRvIGxvYWQgQXBwbGUgUGF5IFNES1wiLCBmKSwgZTtcbiAgICB9XG4gICAgaWYgKCF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uIHx8ICFBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gdWUoXCJBcHBsZSBQYXkgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS9icm93c2VyXCIpLCBlO1xuICAgIGlmICh1ZShcIkFwcGxlIFBheSBMb2FkZWRcIiksICFhd2FpdCBBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gdWUoXCJObyBhY3RpdmUgY2FyZHMgYXZhaWxhYmxlIGZvciBBcHBsZSBQYXlcIiksIGU7XG4gICAgaWYgKCFyLm1ldGFkYXRhLnByb2Nlc3Nvcl9hY2NvdW50X2lkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZ2F0ZXdheSBtZXJjaGFudCBJRCBmb3VuZCBpbiBwcm9jZXNzb3IgYWNjb3VudFwiKTtcbiAgICBjb25zdCBzID0gdC5hbnlDZGVDb25uZWN0aW9uLCBjID0gYXdhaXQgTShzKSwgbCA9IGMubW9kZSA9PT0gXCJzZXR1cFwiLCB1ID0gYXdhaXQgaGUocywgYy50b2tlbiwgbCwgdm9pZCAwKSwgZCA9IGFzeW5jIChmKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBrLmFpcndhbGxleEFwcGxlUGF5LnJ1bih7XG4gICAgICAgICAgY29udGV4dDogdCxcbiAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogSih0LmZvcm1EaXYpLFxuICAgICAgICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5mLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgICAgSmUoXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBoKSwgbi5nZXQub25DaGVja291dEVycm9yKChoID09IG51bGwgPyB2b2lkIDAgOiBoLm1lc3NhZ2UpID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IFYuRW51bS5haXJ3YWxsZXgsXG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBkXG4gICAgfTtcbiAgfVxuKSwgdGEgPSBlZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiB0LFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiBlLFxuICAgIGN1c3RvbVBhcmFtczogcixcbiAgICBmb3JtQ2FsbGJhY2tzOiBhXG4gIH0pID0+IHtcbiAgICB2YXIgdjtcbiAgICBjb25zdCBpID0gWSh0LmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIFp0KSwgeyBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzLCBpbml0aWFsUHJldmlldzogYyB9ID0gciwgbCA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgdSA9IGF3YWl0IE0obCksIGQgPSB1Lm1vZGUgPT09IFwic2V0dXBcIiwgeyBjdXJyZW5jeUNvZGU6IGYsIHRvdGFsOiBoIH0gPSBhbih7XG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IGMsXG4gICAgICBkZWZhdWx0TGFiZWw6ICh2ID0gaSA9PSBudWxsID8gdm9pZCAwIDogaS5tZXRhZGF0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IHYucHJvY2Vzc29yX2FjY291bnRfbmFtZVxuICAgIH0pLCB5ID0ge1xuICAgICAgY291bnRyeUNvZGU6IFwiVVNcIixcbiAgICAgIGN1cnJlbmN5Q29kZTogZixcbiAgICAgIHJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHM6IFtcImVtYWlsXCIsIFwicG9zdGFsQWRkcmVzc1wiLCBcIm5hbWVcIl0sXG4gICAgICByZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczogW1wiZW1haWxcIl0sXG4gICAgICBzdXBwb3J0ZWROZXR3b3JrczogW1widmlzYVwiLCBcIm1hc3RlckNhcmRcIiwgXCJhbWV4XCIsIFwiZGlzY292ZXJcIl0sXG4gICAgICBtZXJjaGFudENhcGFiaWxpdGllczogW1xuICAgICAgICBcInN1cHBvcnRzM0RTXCIsXG4gICAgICAgIFwic3VwcG9ydHNDcmVkaXRcIixcbiAgICAgICAgXCJzdXBwb3J0c0RlYml0XCIsXG4gICAgICAgIFwic3VwcG9ydHNFTVZcIlxuICAgICAgXSxcbiAgICAgIHRvdGFsOiBoLFxuICAgICAgcmVjdXJyaW5nUGF5bWVudFJlcXVlc3Q6IG9uKHtcbiAgICAgICAgdG90YWw6IGgsXG4gICAgICAgIHByZWZpbGw6IHVcbiAgICAgIH0pLFxuICAgICAgLi4uKHMgPT0gbnVsbCA/IHZvaWQgMCA6IHMuYXBwbGVQYXlQYXltZW50UmVxdWVzdCkgPz8ge31cbiAgICB9LCBtID0gbmV3IEFwcGxlUGF5U2Vzc2lvbigzLCB5KSwgXyA9IHtcbiAgICAgIHNlc3Npb246IG0sXG4gICAgICBjb25uZWN0aW9uOiB0LmFueUNkZUNvbm5lY3Rpb24sXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgICBub25DZGVGb3JtSW5wdXRzOiBlLFxuICAgICAgcHJvY2Vzc29yQWNjb3VudDogaS5tZXRhZGF0YSxcbiAgICAgIHByZWZpbGw6IHUsXG4gICAgICBpc1NldHVwTW9kZTogZCxcbiAgICAgIGJhc2VVcmw6IHQuYmFzZVVybCxcbiAgICAgIGZvcm1DYWxsYmFja3M6IGEsXG4gICAgICBkZWZhdWx0RmllbGRWYWx1ZXM6IHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZGVmYXVsdEZpZWxkVmFsdWVzXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKGcsIGIpID0+IHtcbiAgICAgIGNvbnN0IEUgPSAoKSA9PiB7XG4gICAgICAgIHVlKFwiUGF5bWVudCBjYW5jZWxsZWQgYnkgdXNlclwiKSwgYihuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpKTtcbiAgICAgIH0sIHsgY2xlYW51cENhbmNlbExpc3RlbmVyOiBEIH0gPSBabyhFKTtcbiAgICAgIG0ub25jYW5jZWwgPSBFLCBtLm9udmFsaWRhdGVtZXJjaGFudCA9IGFzeW5jIChOKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgQm8oTiwgXyk7XG4gICAgICAgIH0gY2F0Y2ggKEEpIHtcbiAgICAgICAgICBiKEEpO1xuICAgICAgICB9XG4gICAgICB9LCBtLm9ucGF5bWVudG1ldGhvZHNlbGVjdGVkID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBOID0ge1xuICAgICAgICAgIG5ld1RvdGFsOiB7IC4uLmggfVxuICAgICAgICB9O1xuICAgICAgICBtLmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihOKTtcbiAgICAgIH0sIG0ub25wYXltZW50YXV0aG9yaXplZCA9IGFzeW5jIChOKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgQSA9IGF3YWl0IFhvKE4sIF8pO1xuICAgICAgICAgIEQoKSwgZyhBKTtcbiAgICAgICAgfSBjYXRjaCAoQSkge1xuICAgICAgICAgIGIoQSk7XG4gICAgICAgIH1cbiAgICAgIH0sIG0uYmVnaW4oKTtcbiAgICB9KS5jYXRjaCgoZykgPT4ge1xuICAgICAgdGhyb3cgSmUoXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBnKSwgZztcbiAgICB9KTtcbiAgfVxuKSwgbmEgPSAxLCByYSA9IHokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJsb29wXCIpLFxuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJjcnlwdG9cIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBtZXJjaGFudF9pZDogeiQxLnN0cmluZygpLFxuICAgIGVudGl0eV9pZDogeiQxLnN0cmluZygpLFxuICAgIGFwaV90b2tlbjogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgeyBsb2dfXzogVCwgZXJyX186IG9hIH0gPSBTKFwibG9vcC1jcnlwdG9cIiksIGFhID0gc2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IHQgfSkgPT4ge1xuICAgIFQoXCJDaGVja2luZyBpZiB0aGVyZSBhcmUgYW55IENQTXMgZm9yIExvb3AgQ3J5cHRvLi4uXCIpO1xuICAgIGNvbnN0IG4gPSBZKHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgcmEpO1xuICAgIFQoYGNoZWNrb3V0UGF5bWVudE1ldGhvZDogJHtKU09OLnN0cmluZ2lmeShuKX1gKSwgVChcIlN0YXJ0aW5nIExvb3AgQ3J5cHRvIGZsb3cuLi5cIik7XG4gICAgY29uc3QgZSA9IGF3YWl0IE0odC5hbnlDZGVDb25uZWN0aW9uKTtcbiAgICBsZXQgcjtcbiAgICBpZiAoZS5tb2RlID09PSBcInNldHVwXCIgPyByID0gbmEgOiByID0gZS5hbW91bnRfdG90YWxfYXRvbSwgZS5jdXJyZW5jeSAhPT0gXCJ1c2RcIiAmJiBlLm1vZGUgIT09IFwic2V0dXBcIilcbiAgICAgIHRocm93IEVycm9yKFwiQ2Fubm90IHN1cHBvcnQgbm9uIFVTRCBjdXJyZW5jeSBmb3IgTG9vcFwiKTtcbiAgICBjb25zdCBhID0gciwgaSA9IE1hdGgubWF4KGEgKiAxMiwgMWU1KSwgcyA9IHY0KCksIGMgPSB7XG4gICAgICBwYXltZW50VXNkQW1vdW50OiBhLFxuICAgICAgc3VnZ2VzdGVkQXV0aG9yaXphdGlvblVzZEFtb3VudDogaSxcbiAgICAgIGN1c3RvbWVyUmVmSWQ6IHNcbiAgICB9LCBsID0ge1xuICAgICAgYXBpS2V5OiBuLm1ldGFkYXRhLmFwaV90b2tlbixcbiAgICAgIGVudGl0eUlkOiBuLm1ldGFkYXRhLmVudGl0eV9pZCxcbiAgICAgIG1lcmNoYW50SWQ6IG4ubWV0YWRhdGEubWVyY2hhbnRfaWRcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICB3aWRnZXRQcm9wczogYyxcbiAgICAgIGluaXRMb29wQ29ubmVjdFByb3BzOiBsXG4gICAgfTtcbiAgfVxuKSwgaWEgPSBlZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiB0LFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiBlLFxuICAgIGZvcm1DYWxsYmFja3M6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBhLFxuICAgIGluaXRSZXN1bHQ6IGlcbiAgfSkgPT4ge1xuICAgIFQoXCJSdW5uaW5nIExvb3AgZmxvdy4uLlwiKSwgVChcImNvbnRleHRcIiwgdCksIFQoXCJjaGVja291dFBheW1lbnRNZXRob2RcIiwgbiksIFQoXCJub25DZGVGb3JtSW5wdXRzXCIsIGUpLCBUKFwiZmxvd0NhbGxiYWNrc1wiLCByKSwgVChcImN1c3RvbVBhcmFtc1wiLCBhKSwgVChcImluaXRSZXN1bHRcIiwgaSk7XG4gICAgY29uc3QgcyA9IHQuYW55Q2RlQ29ubmVjdGlvbjtcbiAgICBpZiAoIWkuaXNBdmFpbGFibGUpXG4gICAgICB0aHJvdyBFcnJvcihcIkZhaWxlZCB0byBpbml0aWFsaXplIExvb3AgZmxvdy4gQ2Fubm90IHN1Ym1pdCB3aXRob3V0IGluaXRpYWxpemF0aW9uLiBFeGl0aW5nIHJ1bm5pbmcgTG9vcCBmbG93LlwiKTtcbiAgICBjb25zdCBjID0gYXdhaXQgTSh0LmFueUNkZUNvbm5lY3Rpb24pLCBsID0gYy5tb2RlICE9PSBcInNldHVwXCIsIHUgPSBhd2FpdCBmZSh0LmFueUNkZUNvbm5lY3Rpb24sIHtcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuLFxuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5wcm92aWRlcixcbiAgICAgIG5ld19jdXN0b21lcl9lbWFpbDogYS5lbWFpbCxcbiAgICAgIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiBhLmZpcnN0TmFtZSxcbiAgICAgIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IGEubGFzdE5hbWUsXG4gICAgICB1c2VfcGF5X2ZpcnN0X2Zsb3c6IGwsXG4gICAgICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IGwgPyB7XG4gICAgICAgIC8vIFRPRE8gYWRkIGNvdXBvbiBhbmQgY2FydCBhZGp1c3RlZCBsaW5lIGl0ZW1zIGxhdGVyXG4gICAgICAgIGxpbmVfaXRlbXM6IGMubGluZV9pdGVtcyxcbiAgICAgICAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiBpLndpZGdldFByb3BzLnBheW1lbnRVc2RBbW91bnRcbiAgICAgIH0gOiB2b2lkIDBcbiAgICB9KTtcbiAgICBpZiAoIWEuc3VjY2VzcylcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgUGF5aW4gd2FzIG5vdCBzdWNjZXNzZnVsOiAke2EuZGV0YWlsLnR5cGV9ICR7YS5kZXRhaWwubWVzc2FnZX0gJHtKU09OLnN0cmluZ2lmeShhLmRldGFpbC5kYXRhKX1gXG4gICAgICApO1xuICAgIGNvbnN0IGQgPSBhd2FpdCBHKHMsIHtcbiAgICAgIHNlY3VyZV90b2tlbjogYy50b2tlbixcbiAgICAgIHRoZWlyX3BtX2lkOiBhLnBheWluLnBheW1lbnRNZXRob2QucGF5bWVudE1ldGhvZElkLFxuICAgICAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogYy5tb2RlICE9PSBcInNldHVwXCIgPyB1LmNoZWNrb3V0X2F0dGVtcHRfaWQgOiB2b2lkIDAsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgbG9vcF9jdXN0b21lcjogYS5jdXN0b21lcixcbiAgICAgICAgbG9vcF9wYXlpbjogYS5wYXlpblxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChUKGBDb25maXJtIHJlc3VsdDogJHtkfWApLCBjLm1vZGUgPT09IFwic2V0dXBcIikge1xuICAgICAgVChcIkRvaW5nIHBheW1lbnQgc2V0dXAuLi5cIiksIFQoXCLilJwgQ29uZmlybSBwYXltZW50IGZsb3cgcmVzdWx0IHJlY2VpdmVkIFJlc3VsdDpcIiwgZCk7XG4gICAgICBjb25zdCBmID0gQ2UoZCk7XG4gICAgICByZXR1cm4gVChg4pWwIFNldHVwIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgW1BNIElEOiAke2YucGF5bWVudF9tZXRob2RfaWR9XWApLCB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBmIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChUKFwiRG9pbmcgY2hlY2tvdXQuLi5cIiksICFkLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlKVxuICAgICAgICB0aHJvdyBvYShcIkNoZWNrb3V0IGZhaWxlZCwgbm8gcGF5LWZpcnN0IHN1Y2Nlc3MgcmVzcG9uc2U6XCIsIGQpLCBuZXcgRXJyb3IoXCJDaGVja291dCBmYWlsZWQsIHBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIHBheW1lbnQgbWV0aG9kLlwiKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6IFwiY2hlY2tvdXRcIixcbiAgICAgICAgcmVzdWx0OiBkLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuKTtcbmFzeW5jIGZ1bmN0aW9uIHNhKHQsIG4pIHtcbiAgdHJ5IHtcbiAgICBjb25zdCByID0gKGF3YWl0IEd0KG4uY29ubmVjdGlvbiwge1xuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG4uY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgIGFwcGxlX3BheW1lbnRfc2Vzc2lvbjoge1xuICAgICAgICAgIHZhbGlkYXRpb25fdXJsOiB0LnZhbGlkYXRpb25VUkwsXG4gICAgICAgICAgaW5pdGlhdGl2ZV9jb250ZXh0OiB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsXG4gICAgICAgICAgdGhlaXJfYWNjb3VudF9pZDogbi5wcm9jZXNzb3JBY2NvdW50LnByb2Nlc3Nvcl9hY2NvdW50X2lkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSkubmV4dF9hY3Rpb25fbWV0YWRhdGEsIGEgPSByID09IG51bGwgPyB2b2lkIDAgOiByLmFwcGxlX3BheV9zZXNzaW9uO1xuICAgIGlmICghYSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHNlc3Npb24gZGF0YSByZWNlaXZlZCBmcm9tIHBheW1lbnQgZmxvd1wiKTtcbiAgICBuLnNlc3Npb24uY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oYSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuLnNlc3Npb24uYWJvcnQoKSwgZTtcbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gY2EodCwgbikge1xuICB2YXIgZSwgcjtcbiAgdHJ5IHtcbiAgICBjb25zdCBhID0gdC5wYXltZW50LCBpID0gcm4obi5ub25DZGVGb3JtSW5wdXRzLCBhKSwgcyA9IHRlKGksIG4uZm9ybUNhbGxiYWNrcy5nZXQub25WYWxpZGF0aW9uRXJyb3IpO1xuICAgIGF3YWl0IGZlKG4uY29ubmVjdGlvbiwge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBuZXdfY3VzdG9tZXJfZW1haWw6IHNbcC5FTUFJTF0sXG4gICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogc1twLkZJUlNUX05BTUVdLFxuICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogc1twLkxBU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfYWRkcmVzczoge1xuICAgICAgICB6aXBfY29kZTogc1twLlpJUF9DT0RFXSxcbiAgICAgICAgY291bnRyeTogc1twLkNPVU5UUlldXG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgYyA9IHtcbiAgICAgIGRhdGFEZXNjcmlwdG9yOiBcIkNPTU1PTi5BUFBMRS5JTkFQUC5QQVlNRU5UXCIsXG4gICAgICBkYXRhVmFsdWU6IHdpbmRvdy5idG9hKEpTT04uc3RyaW5naWZ5KGEudG9rZW4ucGF5bWVudERhdGEpKVxuICAgIH0sIGwgPSBhd2FpdCBHKG4uY29ubmVjdGlvbiwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBuLnByZWZpbGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICAgIG1vYmlsZV93YWxsZXRfcGF5bWVudF9kYXRhOiBjXG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCEoKHIgPSAoZSA9IGwucGF5bWVudF9tZXRob2RzKSA9PSBudWxsID8gdm9pZCAwIDogZVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IHIuaWQpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gUE0gSUQgZm91bmRcIik7XG4gICAgY29uc3QgZCA9IHtcbiAgICAgIHN0YXR1czogQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19TVUNDRVNTXG4gICAgfTtcbiAgICByZXR1cm4gbi5zZXNzaW9uLmNvbXBsZXRlUGF5bWVudChkKSwgamUoe1xuICAgICAgbG9nUHJlZml4OiBcImF1dGhuZXQtYXBwbGVwYXlcIixcbiAgICAgIGFueUNkZUNvbm5lY3Rpb246IG4uY29ubmVjdGlvbixcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IHMsXG4gICAgICBjb25maXJtUmVzdWx0OiBsLFxuICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgIH0pO1xuICB9IGNhdGNoIChhKSB7XG4gICAgY29uc3QgaSA9IHtcbiAgICAgIHN0YXR1czogQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFXG4gICAgfTtcbiAgICB0aHJvdyBuLnNlc3Npb24uY29tcGxldGVQYXltZW50KGkpLCBhO1xuICB9XG59XG5jb25zdCBzbiA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJhcHBsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImF1dGhvcml6ZV9uZXRcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSksIGNuID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImdvb2dsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImF1dGhvcml6ZV9uZXRcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICBnb29nbGVfcGF5X21lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpXG4gIH0pXG59KSwgeyBsb2dfXzogd2UsIGVycl9fOiBIZSB9ID0gUyhcImF1dGhuZXQtYXBwbGVwYXlcIiksIGxhID0gc2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IHQsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIGNvbnN0IGUgPSB7XG4gICAgICBwcm9jZXNzb3I6IFYuRW51bS5hdXRob3JpemVfbmV0LFxuICAgICAgaXNBdmFpbGFibGU6ICExLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgfVxuICAgIH0sIHIgPSBZKHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgc24pO1xuICAgIGlmICghcilcbiAgICAgIHJldHVybiBlO1xuICAgIHdlKFwiTG9hZGluZyBBcHBsZSBQYXkgU0RLLi4uXCIpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBubigpLCB3ZShcIkFwcGxlIFBheSBTREsgbG9hZGVkIHN1Y2Nlc3NmdWxseVwiKTtcbiAgICB9IGNhdGNoIChmKSB7XG4gICAgICByZXR1cm4gSGUoXCJGYWlsZWQgdG8gbG9hZCBBcHBsZSBQYXkgU0RLXCIsIGYpLCBlO1xuICAgIH1cbiAgICBpZiAoIXdpbmRvdy5BcHBsZVBheVNlc3Npb24gfHwgIUFwcGxlUGF5U2Vzc2lvbi5jYW5NYWtlUGF5bWVudHMoKSlcbiAgICAgIHJldHVybiB3ZShcIkFwcGxlIFBheSBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgZGV2aWNlL2Jyb3dzZXJcIiksIGU7XG4gICAgaWYgKCFhd2FpdCBBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gd2UoXCJObyBhY3RpdmUgY2FyZHMgYXZhaWxhYmxlIGZvciBBcHBsZSBQYXlcIiksIGU7XG4gICAgaWYgKCFyLm1ldGFkYXRhLnByb2Nlc3Nvcl9hY2NvdW50X2lkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZ2F0ZXdheSBtZXJjaGFudCBJRCBmb3VuZCBpbiBwcm9jZXNzb3IgYWNjb3VudFwiKTtcbiAgICBjb25zdCBzID0gdC5hbnlDZGVDb25uZWN0aW9uLCBjID0gYXdhaXQgTShzKSwgbCA9IGMubW9kZSA9PT0gXCJzZXR1cFwiLCB1ID0gYXdhaXQgaGUocywgYy50b2tlbiwgbCwgdm9pZCAwKSwgZCA9IGFzeW5jIChmKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBrLmF1dGhvcml6ZU5ldEFwcGxlUGF5LnJ1bih7XG4gICAgICAgICAgY29udGV4dDogdCxcbiAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogSih0LmZvcm1EaXYpLFxuICAgICAgICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5mLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgICAgSGUoXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBoKSwgbi5nZXQub25DaGVja291dEVycm9yKChoID09IG51bGwgPyB2b2lkIDAgOiBoLm1lc3NhZ2UpID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IFYuRW51bS5hdXRob3JpemVfbmV0LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogZFxuICAgIH07XG4gIH1cbiksIHVhID0gZWUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogdCxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogZSxcbiAgICBjdXN0b21QYXJhbXM6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogYVxuICB9KSA9PiB7XG4gICAgdmFyIHY7XG4gICAgY29uc3QgeyBpbml0aWFsUHJldmlldzogaSwgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogcyB9ID0gciwgYyA9IFkodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBzbiksIHsgY3VycmVuY3lDb2RlOiBsLCB0b3RhbDogdSB9ID0gYW4oe1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogcyxcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBpLFxuICAgICAgZGVmYXVsdExhYmVsOiAodiA9IGMgPT0gbnVsbCA/IHZvaWQgMCA6IGMubWV0YWRhdGEpID09IG51bGwgPyB2b2lkIDAgOiB2LnByb2Nlc3Nvcl9hY2NvdW50X25hbWVcbiAgICB9KSwgZCA9IHQuYW55Q2RlQ29ubmVjdGlvbiwgZiA9IGF3YWl0IE0oZCksIGggPSBmLm1vZGUgPT09IFwic2V0dXBcIiwgeSA9IHtcbiAgICAgIGNvdW50cnlDb2RlOiBcIlVTXCIsXG4gICAgICBjdXJyZW5jeUNvZGU6IGwsXG4gICAgICB0b3RhbDogdSxcbiAgICAgIHJlcXVpcmVkQmlsbGluZ0NvbnRhY3RGaWVsZHM6IFtcImVtYWlsXCIsIFwicG9zdGFsQWRkcmVzc1wiLCBcIm5hbWVcIl0sXG4gICAgICByZXF1aXJlZFNoaXBwaW5nQ29udGFjdEZpZWxkczogW1wiZW1haWxcIl0sXG4gICAgICBzdXBwb3J0ZWROZXR3b3JrczogW1widmlzYVwiLCBcIm1hc3RlckNhcmRcIiwgXCJhbWV4XCIsIFwiZGlzY292ZXJcIl0sXG4gICAgICBtZXJjaGFudENhcGFiaWxpdGllczogW1wic3VwcG9ydHMzRFNcIiwgXCJzdXBwb3J0c0NyZWRpdFwiLCBcInN1cHBvcnRzRGViaXRcIl0sXG4gICAgICByZWN1cnJpbmdQYXltZW50UmVxdWVzdDogb24oe1xuICAgICAgICB0b3RhbDogdSxcbiAgICAgICAgcHJlZmlsbDogZlxuICAgICAgfSksXG4gICAgICAuLi4ocyA9PSBudWxsID8gdm9pZCAwIDogcy5hcHBsZVBheVBheW1lbnRSZXF1ZXN0KSA/PyB7fVxuICAgIH0sIG0gPSBuZXcgQXBwbGVQYXlTZXNzaW9uKDMsIHkpLCBfID0ge1xuICAgICAgc2Vzc2lvbjogbSxcbiAgICAgIGNvbm5lY3Rpb246IHQuYW55Q2RlQ29ubmVjdGlvbixcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGUsXG4gICAgICBwcm9jZXNzb3JBY2NvdW50OiBuLm1ldGFkYXRhLFxuICAgICAgcHJlZmlsbDogZixcbiAgICAgIGlzU2V0dXBNb2RlOiBoLFxuICAgICAgYmFzZVVybDogdC5iYXNlVXJsLFxuICAgICAgZm9ybUNhbGxiYWNrczogYVxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChnLCBiKSA9PiB7XG4gICAgICBtLm9uY2FuY2VsID0gKCkgPT4ge1xuICAgICAgICB3ZShcIlBheW1lbnQgY2FuY2VsbGVkIGJ5IHVzZXJcIiksIGIobmV3IEVycm9yKFwiUGF5bWVudCBjYW5jZWxsZWQgYnkgdXNlclwiKSk7XG4gICAgICB9LCBtLm9udmFsaWRhdGVtZXJjaGFudCA9IGFzeW5jIChFKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgc2EoRSwgXyk7XG4gICAgICAgIH0gY2F0Y2ggKEQpIHtcbiAgICAgICAgICBiKEQpO1xuICAgICAgICB9XG4gICAgICB9LCBtLm9ucGF5bWVudG1ldGhvZHNlbGVjdGVkID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBFID0ge1xuICAgICAgICAgIG5ld1RvdGFsOiB5LnRvdGFsXG4gICAgICAgIH07XG4gICAgICAgIG0uY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKEUpO1xuICAgICAgfSwgbS5vbnBheW1lbnRhdXRob3JpemVkID0gYXN5bmMgKEUpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBEID0gYXdhaXQgY2EoRSwgXyk7XG4gICAgICAgICAgZyhEKTtcbiAgICAgICAgfSBjYXRjaCAoRCkge1xuICAgICAgICAgIGIoRCk7XG4gICAgICAgIH1cbiAgICAgIH0sIG0uYmVnaW4oKTtcbiAgICB9KS5jYXRjaCgoZykgPT4ge1xuICAgICAgdGhyb3cgSGUoXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBnKSwgZztcbiAgICB9KTtcbiAgfVxuKSwgeyBsb2dfXzogaWUsIGVycl9fOiBnZSB9ID0gUyhcImF1dGhuZXQtZ29vZ2xlcGF5XCIpLCBkYSA9IHNlKFxuICBhc3luYyAoeyBjb250ZXh0OiB0LCBmb3JtQ2FsbGJhY2tzOiBuIH0pID0+IHtcbiAgICB2YXIgZCwgZjtcbiAgICBpZShcIkluaXRpYWxpemluZyBBdXRobmV0IEdvb2dsZVBheSBmbG93XCIpO1xuICAgIGNvbnN0IGUgPSB7XG4gICAgICBwcm9jZXNzb3I6IFYuRW51bS5hdXRob3JpemVfbmV0LFxuICAgICAgaXNBdmFpbGFibGU6ICExLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgfVxuICAgIH0sIHIgPSBZKHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgY24pO1xuICAgIGlmICghcilcbiAgICAgIHJldHVybiBlO1xuICAgIGllKFwiR29vZ2xlIFBheSBDUE1cIiwgcik7XG4gICAgY29uc3QgYSA9IHIubWV0YWRhdGE7XG4gICAgaWYgKCFhLnByb2Nlc3Nvcl9hY2NvdW50X2lkKVxuICAgICAgcmV0dXJuIGdlKFwiTm8gZ2F0ZXdheSBtZXJjaGFudCBJRCBmb3VuZCBpbiBwcm9jZXNzb3IgYWNjb3VudFwiKSwgZTtcbiAgICBpZiAoaWUoXCJMb2FkaW5nIEdvb2dsZSBQYXkgU0RLLi4uXCIpLCBhd2FpdCBYdCgpLCAhKChmID0gKGQgPSB3aW5kb3cuZ29vZ2xlKSA9PSBudWxsID8gdm9pZCAwIDogZC5wYXltZW50cykgIT0gbnVsbCAmJiBmLmFwaSkpXG4gICAgICByZXR1cm4gZ2UoXCJHb29nbGUgUGF5IFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCBlO1xuICAgIGllKFwiR29vZ2xlIFBheSBTREsgbG9hZGVkXCIsIHdpbmRvdy5nb29nbGUucGF5bWVudHMpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBoID0gJGUoe1xuICAgICAgICBnYXRld2F5OiBcImF1dGhvcml6ZW5ldFwiLFxuICAgICAgICBnYXRld2F5TWVyY2hhbnRJZDogYS5wcm9jZXNzb3JfYWNjb3VudF9pZCxcbiAgICAgICAgbWVyY2hhbnROYW1lOiBhLnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICAgIG1lcmNoYW50SWQ6IGEuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgICAvLyBUaGlzIGlzIGZvciBpbml0aWFsIHBheW1lbnQgcmVxdWVzdCB0byBjaGVjayBhdmFpbGFiaWxpdHkuIEFjdHVhbCBgaW5pdGlhbFByZXZpZXdgIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSBVSSBpcyBzaG93blxuICAgICAgICBpbml0aWFsUHJldmlldzoge1xuICAgICAgICAgIGFtb3VudEF0b206IDAsXG4gICAgICAgICAgY3VycmVuY3k6IFwiVVNEXCJcbiAgICAgICAgfVxuICAgICAgfSksIHsgcmVzdWx0OiB5IH0gPSBhd2FpdCB6ZSh0LmJhc2VVcmwsIGgpLmlzUmVhZHlUb1BheShcbiAgICAgICAgaFxuICAgICAgKTtcbiAgICAgIGlmICgheSlcbiAgICAgICAgcmV0dXJuIGllKFwiR29vZ2xlIFBheSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXJcIiksIGU7XG4gICAgfSBjYXRjaCAoaCkge1xuICAgICAgcmV0dXJuIGdlKFwiRXJyb3IgY2hlY2tpbmcgR29vZ2xlIFBheSBhdmFpbGFiaWxpdHlcIiwgaCksIGU7XG4gICAgfVxuICAgIGNvbnN0IGkgPSB0LmFueUNkZUNvbm5lY3Rpb24sIHMgPSBhd2FpdCBNKGkpLCBjID0gcy5tb2RlID09PSBcInNldHVwXCIsIGwgPSBhd2FpdCBoZShpLCBzLnRva2VuLCBjLCB2b2lkIDApLCB1ID0gYXN5bmMgKGgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGsuYXV0aG9yaXplTmV0R29vZ2xlUGF5LnJ1bih7XG4gICAgICAgICAgY29udGV4dDogdCxcbiAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogSih0LmZvcm1EaXYpLFxuICAgICAgICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwLFxuICAgICAgICAgIGN1c3RvbVBhcmFtczoge1xuICAgICAgICAgICAgLi4uaCxcbiAgICAgICAgICAgIGluaXRpYWxQcmV2aWV3OiBsXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKHkpIHtcbiAgICAgICAgZ2UoXCJHb29nbGUgUGF5IHBheW1lbnQgZXJyb3JcIiwgeSksIG4uZ2V0Lm9uQ2hlY2tvdXRFcnJvcigoeSA9PSBudWxsID8gdm9pZCAwIDogeS5tZXNzYWdlKSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvY2Vzc29yOiBWLkVudW0uYXV0aG9yaXplX25ldCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IHVcbiAgICB9O1xuICB9XG4pLCBwYSA9IGVlKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogbixcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IGUsXG4gICAgZm9ybUNhbGxiYWNrczogcixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIHZhciBmLCBoLCB5LCBtO1xuICAgIGNvbnN0IHsgaW5pdGlhbFByZXZpZXc6IGksIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IHMgfSA9IGEsIGwgPSBZKHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgY24pLm1ldGFkYXRhLCB1ID0gJGUoe1xuICAgICAgZ2F0ZXdheTogXCJhdXRob3JpemVuZXRcIixcbiAgICAgIGdhdGV3YXlNZXJjaGFudElkOiBsLnByb2Nlc3Nvcl9hY2NvdW50X2lkLFxuICAgICAgbWVyY2hhbnROYW1lOiBsLnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICBtZXJjaGFudElkOiBsLmdvb2dsZV9wYXlfbWVyY2hhbnRfaWQgPz8gXCJcIixcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBpLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogc1xuICAgIH0pLCBkID0gemUodC5iYXNlVXJsLCB1KTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgXyA9IGF3YWl0IGQubG9hZFBheW1lbnREYXRhKHUpO1xuICAgICAgaWUoXCJHb29nbGUgUGF5IFBheW1lbnQgZGF0YVwiLCBfKTtcbiAgICAgIGNvbnN0IHYgPSB0LmFueUNkZUNvbm5lY3Rpb24sIGcgPSBhd2FpdCBNKHYpLCBiID0gdG4obiwgXyksIEUgPSB0ZShiLCByLmdldC5vblZhbGlkYXRpb25FcnJvciksIEQgPSAoaCA9IChmID0gXy5wYXltZW50TWV0aG9kRGF0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IGYudG9rZW5pemF0aW9uRGF0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IGgudG9rZW47XG4gICAgICBpZiAoIUQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHBheW1lbnQgdG9rZW4gcmVjZWl2ZWQgZnJvbSBHb29nbGUgUGF5XCIpO1xuICAgICAgY29uc3QgTiA9IGF3YWl0IGZlKHYsIHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogZS5wcm92aWRlcixcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IGUsXG4gICAgICAgIG5ld19jdXN0b21lcl9lbWFpbDogRVtwLkVNQUlMXSxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2ZpcnN0X25hbWU6IEVbcC5GSVJTVF9OQU1FXSxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogRVtwLkxBU1RfTkFNRV0sXG4gICAgICAgIG5ld19jdXN0b21lcl9hZGRyZXNzOiB7XG4gICAgICAgICAgemlwX2NvZGU6IEVbcC5aSVBfQ09ERV0sXG4gICAgICAgICAgY291bnRyeTogRVtwLkNPVU5UUlldXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWUoXCJTdGFydCBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgTik7XG4gICAgICBjb25zdCBBID0gYXdhaXQgRyh2LCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogZy50b2tlbixcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogZS5wcm92aWRlcixcbiAgICAgICAgICBtb2JpbGVfd2FsbGV0X3BheW1lbnRfZGF0YToge1xuICAgICAgICAgICAgZGF0YURlc2NyaXB0b3I6IFwiQ09NTU9OLkdPT0dMRS5JTkFQUC5QQVlNRU5UXCIsXG4gICAgICAgICAgICBkYXRhVmFsdWU6IHdpbmRvdy5idG9hKEQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghKChtID0gKHkgPSBBLnBheW1lbnRfbWV0aG9kcykgPT0gbnVsbCA/IHZvaWQgMCA6IHlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBtLmlkKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gUE0gSUQgZm91bmRcIik7XG4gICAgICByZXR1cm4gamUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwiYXV0aG5ldC1nb29nbGVwYXlcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogdixcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBlLFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IEUsXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IEEsXG4gICAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgIHRocm93IGdlKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIF8pLCBuZXcgRXJyb3IoKF8gPT0gbnVsbCA/IHZvaWQgMCA6IF8ubWVzc2FnZSkgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgYmUgPSAodCwgbiwgZSkgPT4ge1xuICBjb25zdCByID0gdC5maWx0ZXIoKGEpID0+IHtcbiAgICBjb25zdCBpID0gZSA9PT0gdm9pZCAwID8gITAgOiBhLnByb2Nlc3Nvcl9uYW1lID09PSBlLCBzID0gYS5wcm92aWRlciA9PT0gbjtcbiAgICByZXR1cm4gaSAmJiBzO1xuICB9KTtcbiAgaWYgKHIubGVuZ3RoID09PSAwKVxuICAgIHRocm93IGNvbnNvbGUuZXJyb3IoXCJDUE1zIGxpc3RcIiwgdCksIG5ldyBFcnJvcihgTm8gQ1BNcyBmb3VuZCB3aXRoIHByb3ZpZGVyICcke259JyBhbmQgcHJvY2Vzc29yICcke2V9J2ApO1xuICBpZiAoci5sZW5ndGggIT09IDEpXG4gICAgdGhyb3cgY29uc29sZS5lcnJvcihcIkNQTXMgbGlzdFwiLCB0KSwgbmV3IEVycm9yKGBNb3JlIHRoYW4gb25lIENQTSBmb3VuZCB3aXRoIHByb3ZpZGVyICcke259JyBhbmQgcHJvY2Vzc29yICcke2V9J2ApO1xuICByZXR1cm4gclswXTtcbn0sIGsgPSB7XG4gIC8vIOKciyBOb3RlOiBGb3IgZmxvd3MgdGhhdCByZXF1aXJlIGluaXRpYWxpemF0aW9uLCBwbGVhc2UgYWRkIHRoZW0gdG8gYGluaXQtZmxvd3MudHNgXG4gIC8vIENvbW1vblxuICBjb21tb25DQzoge1xuICAgIGluaXQ6IGFzeW5jICgpID0+IHtcbiAgICB9LFxuICAgIHJ1bjogRm9cbiAgfSxcbiAgLy8gU3RyaXBlXG4gIHN0cmlwZVBSOiB7XG4gICAgaW5pdDogam8sXG4gICAgcnVuOiB4b1xuICB9LFxuICBzdHJpcGVMaW5rOiB7XG4gICAgaW5pdDogZW8sXG4gICAgcnVuOiB0b1xuICB9LFxuICAvLyBQb2NreXRcbiAgcG9ja3l0UGF5cGFsOiB7XG4gICAgcnVuOiBxb1xuICB9LFxuICAvLyBBaXJ3YWxsZXhcbiAgYWlyd2FsbGV4R29vZ2xlUGF5OiB7XG4gICAgaW5pdDogS28sXG4gICAgcnVuOiBXb1xuICB9LFxuICBhaXJ3YWxsZXhBcHBsZVBheToge1xuICAgIGluaXQ6IGVhLFxuICAgIHJ1bjogdGFcbiAgfSxcbiAgLy8gTG9vcFxuICBsb29wQ3J5cHRvOiB7XG4gICAgaW5pdDogYWEsXG4gICAgcnVuOiBpYVxuICB9LFxuICBhdXRob3JpemVOZXRBcHBsZVBheToge1xuICAgIGluaXQ6IGxhLFxuICAgIHJ1bjogdWFcbiAgfSxcbiAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiB7XG4gICAgaW5pdDogZGEsXG4gICAgcnVuOiBwYVxuICB9XG4gIC8vIPCfkYkgQWRkIG1vcmUgZmxvd3MgaGVyZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxufTtcbnZhciBaZSA9IGZ1bmN0aW9uKHQsIG4pIHtcbiAgcmV0dXJuIFplID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24oZSwgcikge1xuICAgIGUuX19wcm90b19fID0gcjtcbiAgfSB8fCBmdW5jdGlvbihlLCByKSB7XG4gICAgZm9yICh2YXIgYSBpbiByKSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwociwgYSkgJiYgKGVbYV0gPSByW2FdKTtcbiAgfSwgWmUodCwgbik7XG59O1xuZnVuY3Rpb24gbmUodCwgbikge1xuICBpZiAodHlwZW9mIG4gIT0gXCJmdW5jdGlvblwiICYmIG4gIT09IG51bGwpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcobikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICBaZSh0LCBuKTtcbiAgZnVuY3Rpb24gZSgpIHtcbiAgICB0aGlzLmNvbnN0cnVjdG9yID0gdDtcbiAgfVxuICB0LnByb3RvdHlwZSA9IG4gPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKG4pIDogKGUucHJvdG90eXBlID0gbi5wcm90b3R5cGUsIG5ldyBlKCkpO1xufVxuZnVuY3Rpb24gbWEodCwgbiwgZSwgcikge1xuICBmdW5jdGlvbiBhKGkpIHtcbiAgICByZXR1cm4gaSBpbnN0YW5jZW9mIGUgPyBpIDogbmV3IGUoZnVuY3Rpb24ocykge1xuICAgICAgcyhpKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbmV3IChlIHx8IChlID0gUHJvbWlzZSkpKGZ1bmN0aW9uKGksIHMpIHtcbiAgICBmdW5jdGlvbiBjKGQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUoci5uZXh0KGQpKTtcbiAgICAgIH0gY2F0Y2ggKGYpIHtcbiAgICAgICAgcyhmKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gbChkKSB7XG4gICAgICB0cnkge1xuICAgICAgICB1KHIudGhyb3coZCkpO1xuICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICBzKGYpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB1KGQpIHtcbiAgICAgIGQuZG9uZSA/IGkoZC52YWx1ZSkgOiBhKGQudmFsdWUpLnRoZW4oYywgbCk7XG4gICAgfVxuICAgIHUoKHIgPSByLmFwcGx5KHQsIFtdKSkubmV4dCgpKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBsbih0LCBuKSB7XG4gIHZhciBlID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKGlbMF0gJiAxKSB0aHJvdyBpWzFdO1xuICAgIHJldHVybiBpWzFdO1xuICB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCByLCBhLCBpLCBzID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEl0ZXJhdG9yID09IFwiZnVuY3Rpb25cIiA/IEl0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpO1xuICByZXR1cm4gcy5uZXh0ID0gYygwKSwgcy50aHJvdyA9IGMoMSksIHMucmV0dXJuID0gYygyKSwgdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgKHNbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KSwgcztcbiAgZnVuY3Rpb24gYyh1KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGQpIHtcbiAgICAgIHJldHVybiBsKFt1LCBkXSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBsKHUpIHtcbiAgICBpZiAocikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgZm9yICg7IHMgJiYgKHMgPSAwLCB1WzBdICYmIChlID0gMCkpLCBlOyApIHRyeSB7XG4gICAgICBpZiAociA9IDEsIGEgJiYgKGkgPSB1WzBdICYgMiA/IGEucmV0dXJuIDogdVswXSA/IGEudGhyb3cgfHwgKChpID0gYS5yZXR1cm4pICYmIGkuY2FsbChhKSwgMCkgOiBhLm5leHQpICYmICEoaSA9IGkuY2FsbChhLCB1WzFdKSkuZG9uZSkgcmV0dXJuIGk7XG4gICAgICBzd2l0Y2ggKGEgPSAwLCBpICYmICh1ID0gW3VbMF0gJiAyLCBpLnZhbHVlXSksIHVbMF0pIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaSA9IHU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gZS5sYWJlbCsrLCB7IHZhbHVlOiB1WzFdLCBkb25lOiAhMSB9O1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgZS5sYWJlbCsrLCBhID0gdVsxXSwgdSA9IFswXTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHUgPSBlLm9wcy5wb3AoKSwgZS50cnlzLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmIChpID0gZS50cnlzLCAhKGkgPSBpLmxlbmd0aCA+IDAgJiYgaVtpLmxlbmd0aCAtIDFdKSAmJiAodVswXSA9PT0gNiB8fCB1WzBdID09PSAyKSkge1xuICAgICAgICAgICAgZSA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHVbMF0gPT09IDMgJiYgKCFpIHx8IHVbMV0gPiBpWzBdICYmIHVbMV0gPCBpWzNdKSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IHVbMV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHVbMF0gPT09IDYgJiYgZS5sYWJlbCA8IGlbMV0pIHtcbiAgICAgICAgICAgIGUubGFiZWwgPSBpWzFdLCBpID0gdTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaSAmJiBlLmxhYmVsIDwgaVsyXSkge1xuICAgICAgICAgICAgZS5sYWJlbCA9IGlbMl0sIGUub3BzLnB1c2godSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaVsyXSAmJiBlLm9wcy5wb3AoKSwgZS50cnlzLnBvcCgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdSA9IG4uY2FsbCh0LCBlKTtcbiAgICB9IGNhdGNoIChkKSB7XG4gICAgICB1ID0gWzYsIGRdLCBhID0gMDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgciA9IGkgPSAwO1xuICAgIH1cbiAgICBpZiAodVswXSAmIDUpIHRocm93IHVbMV07XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVbMF0gPyB1WzFdIDogdm9pZCAwLCBkb25lOiAhMCB9O1xuICB9XG59XG5mdW5jdGlvbiBtZSh0KSB7XG4gIHZhciBuID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBlID0gbiAmJiB0W25dLCByID0gMDtcbiAgaWYgKGUpIHJldHVybiBlLmNhbGwodCk7XG4gIGlmICh0ICYmIHR5cGVvZiB0Lmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHQgJiYgciA+PSB0Lmxlbmd0aCAmJiAodCA9IHZvaWQgMCksIHsgdmFsdWU6IHQgJiYgdFtyKytdLCBkb25lOiAhdCB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihuID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufVxuZnVuY3Rpb24gRGUodCwgbikge1xuICB2YXIgZSA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIHRbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFlKSByZXR1cm4gdDtcbiAgdmFyIHIgPSBlLmNhbGwodCksIGEsIGkgPSBbXSwgcztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKGEgPSByLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKGMpIHtcbiAgICBzID0geyBlcnJvcjogYyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKGUgPSByLnJldHVybikgJiYgZS5jYWxsKHIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAocykgdGhyb3cgcy5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5mdW5jdGlvbiBPZSh0LCBuLCBlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciByID0gMCwgYSA9IG4ubGVuZ3RoLCBpOyByIDwgYTsgcisrKVxuICAgIChpIHx8ICEociBpbiBuKSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuLCAwLCByKSksIGlbcl0gPSBuW3JdKTtcbiAgcmV0dXJuIHQuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobikpO1xufVxuZnVuY3Rpb24gcGUodCkge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHBlID8gKHRoaXMudiA9IHQsIHRoaXMpIDogbmV3IHBlKHQpO1xufVxuZnVuY3Rpb24geWEodCwgbiwgZSkge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgciA9IGUuYXBwbHkodCwgbiB8fCBbXSksIGEsIGkgPSBbXTtcbiAgcmV0dXJuIGEgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgQXN5bmNJdGVyYXRvciA9PSBcImZ1bmN0aW9uXCIgPyBBc3luY0l0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpLCBjKFwibmV4dFwiKSwgYyhcInRocm93XCIpLCBjKFwicmV0dXJuXCIsIHMpLCBhW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCBhO1xuICBmdW5jdGlvbiBzKHkpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24obSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtKS50aGVuKHksIGYpO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gYyh5LCBtKSB7XG4gICAgclt5XSAmJiAoYVt5XSA9IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih2LCBnKSB7XG4gICAgICAgIGkucHVzaChbeSwgXywgdiwgZ10pID4gMSB8fCBsKHksIF8pO1xuICAgICAgfSk7XG4gICAgfSwgbSAmJiAoYVt5XSA9IG0oYVt5XSkpKTtcbiAgfVxuICBmdW5jdGlvbiBsKHksIG0pIHtcbiAgICB0cnkge1xuICAgICAgdShyW3ldKG0pKTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICBoKGlbMF1bM10sIF8pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiB1KHkpIHtcbiAgICB5LnZhbHVlIGluc3RhbmNlb2YgcGUgPyBQcm9taXNlLnJlc29sdmUoeS52YWx1ZS52KS50aGVuKGQsIGYpIDogaChpWzBdWzJdLCB5KTtcbiAgfVxuICBmdW5jdGlvbiBkKHkpIHtcbiAgICBsKFwibmV4dFwiLCB5KTtcbiAgfVxuICBmdW5jdGlvbiBmKHkpIHtcbiAgICBsKFwidGhyb3dcIiwgeSk7XG4gIH1cbiAgZnVuY3Rpb24gaCh5LCBtKSB7XG4gICAgeShtKSwgaS5zaGlmdCgpLCBpLmxlbmd0aCAmJiBsKGlbMF1bMF0sIGlbMF1bMV0pO1xuICB9XG59XG5mdW5jdGlvbiBmYSh0KSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBuID0gdFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGU7XG4gIHJldHVybiBuID8gbi5jYWxsKHQpIDogKHQgPSB0eXBlb2YgbWUgPT0gXCJmdW5jdGlvblwiID8gbWUodCkgOiB0W1N5bWJvbC5pdGVyYXRvcl0oKSwgZSA9IHt9LCByKFwibmV4dFwiKSwgcihcInRocm93XCIpLCByKFwicmV0dXJuXCIpLCBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCBlKTtcbiAgZnVuY3Rpb24gcihpKSB7XG4gICAgZVtpXSA9IHRbaV0gJiYgZnVuY3Rpb24ocykge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGMsIGwpIHtcbiAgICAgICAgcyA9IHRbaV0ocyksIGEoYywgbCwgcy5kb25lLCBzLnZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gYShpLCBzLCBjLCBsKSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKGwpLnRoZW4oZnVuY3Rpb24odSkge1xuICAgICAgaSh7IHZhbHVlOiB1LCBkb25lOiBjIH0pO1xuICAgIH0sIHMpO1xuICB9XG59XG5mdW5jdGlvbiBGKHQpIHtcbiAgcmV0dXJuIHR5cGVvZiB0ID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIEdlKHQpIHtcbiAgdmFyIG4gPSBmdW5jdGlvbihyKSB7XG4gICAgRXJyb3IuY2FsbChyKSwgci5zdGFjayA9IG5ldyBFcnJvcigpLnN0YWNrO1xuICB9LCBlID0gdChuKTtcbiAgcmV0dXJuIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLCBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGUsIGU7XG59XG52YXIgWWUgPSBHZShmdW5jdGlvbih0KSB7XG4gIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgdCh0aGlzKSwgdGhpcy5tZXNzYWdlID0gZSA/IGUubGVuZ3RoICsgYCBlcnJvcnMgb2NjdXJyZWQgZHVyaW5nIHVuc3Vic2NyaXB0aW9uOlxuYCArIGUubWFwKGZ1bmN0aW9uKHIsIGEpIHtcbiAgICAgIHJldHVybiBhICsgMSArIFwiKSBcIiArIHIudG9TdHJpbmcoKTtcbiAgICB9KS5qb2luKGBcbiAgYCkgOiBcIlwiLCB0aGlzLm5hbWUgPSBcIlVuc3Vic2NyaXB0aW9uRXJyb3JcIiwgdGhpcy5lcnJvcnMgPSBlO1xuICB9O1xufSk7XG5mdW5jdGlvbiBOZSh0LCBuKSB7XG4gIGlmICh0KSB7XG4gICAgdmFyIGUgPSB0LmluZGV4T2Yobik7XG4gICAgMCA8PSBlICYmIHQuc3BsaWNlKGUsIDEpO1xuICB9XG59XG52YXIgUGUgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gdChuKSB7XG4gICAgdGhpcy5pbml0aWFsVGVhcmRvd24gPSBuLCB0aGlzLmNsb3NlZCA9ICExLCB0aGlzLl9wYXJlbnRhZ2UgPSBudWxsLCB0aGlzLl9maW5hbGl6ZXJzID0gbnVsbDtcbiAgfVxuICByZXR1cm4gdC5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbiwgZSwgciwgYSwgaTtcbiAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICB0aGlzLmNsb3NlZCA9ICEwO1xuICAgICAgdmFyIHMgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICBpZiAocylcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudGFnZSA9IG51bGwsIEFycmF5LmlzQXJyYXkocykpXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGMgPSBtZShzKSwgbCA9IGMubmV4dCgpOyAhbC5kb25lOyBsID0gYy5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgdmFyIHUgPSBsLnZhbHVlO1xuICAgICAgICAgICAgICB1LnJlbW92ZSh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgICBuID0geyBlcnJvcjogXyB9O1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBsICYmICFsLmRvbmUgJiYgKGUgPSBjLnJldHVybikgJiYgZS5jYWxsKGMpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgaWYgKG4pIHRocm93IG4uZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcy5yZW1vdmUodGhpcyk7XG4gICAgICB2YXIgZCA9IHRoaXMuaW5pdGlhbFRlYXJkb3duO1xuICAgICAgaWYgKEYoZCkpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZCgpO1xuICAgICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgICAgaSA9IF8gaW5zdGFuY2VvZiBZZSA/IF8uZXJyb3JzIDogW19dO1xuICAgICAgICB9XG4gICAgICB2YXIgZiA9IHRoaXMuX2ZpbmFsaXplcnM7XG4gICAgICBpZiAoZikge1xuICAgICAgICB0aGlzLl9maW5hbGl6ZXJzID0gbnVsbDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmb3IgKHZhciBoID0gbWUoZiksIHkgPSBoLm5leHQoKTsgIXkuZG9uZTsgeSA9IGgubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgbSA9IHkudmFsdWU7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBodChtKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgICAgaSA9IGkgPz8gW10sIF8gaW5zdGFuY2VvZiBZZSA/IGkgPSBPZShPZShbXSwgRGUoaSkpLCBEZShfLmVycm9ycykpIDogaS5wdXNoKF8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHIgPSB7IGVycm9yOiBfIH07XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHkgJiYgIXkuZG9uZSAmJiAoYSA9IGgucmV0dXJuKSAmJiBhLmNhbGwoaCk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChyKSB0aHJvdyByLmVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGkpXG4gICAgICAgIHRocm93IG5ldyBZZShpKTtcbiAgICB9XG4gIH0sIHQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgZTtcbiAgICBpZiAobiAmJiBuICE9PSB0aGlzKVxuICAgICAgaWYgKHRoaXMuY2xvc2VkKVxuICAgICAgICBodChuKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAobiBpbnN0YW5jZW9mIHQpIHtcbiAgICAgICAgICBpZiAobi5jbG9zZWQgfHwgbi5faGFzUGFyZW50KHRoaXMpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIG4uX2FkZFBhcmVudCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICAodGhpcy5fZmluYWxpemVycyA9IChlID0gdGhpcy5fZmluYWxpemVycykgIT09IG51bGwgJiYgZSAhPT0gdm9pZCAwID8gZSA6IFtdKS5wdXNoKG4pO1xuICAgICAgfVxuICB9LCB0LnByb3RvdHlwZS5faGFzUGFyZW50ID0gZnVuY3Rpb24obikge1xuICAgIHZhciBlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgIHJldHVybiBlID09PSBuIHx8IEFycmF5LmlzQXJyYXkoZSkgJiYgZS5pbmNsdWRlcyhuKTtcbiAgfSwgdC5wcm90b3R5cGUuX2FkZFBhcmVudCA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgZSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICB0aGlzLl9wYXJlbnRhZ2UgPSBBcnJheS5pc0FycmF5KGUpID8gKGUucHVzaChuKSwgZSkgOiBlID8gW2UsIG5dIDogbjtcbiAgfSwgdC5wcm90b3R5cGUuX3JlbW92ZVBhcmVudCA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgZSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICBlID09PSBuID8gdGhpcy5fcGFyZW50YWdlID0gbnVsbCA6IEFycmF5LmlzQXJyYXkoZSkgJiYgTmUoZSwgbik7XG4gIH0sIHQucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgZSA9IHRoaXMuX2ZpbmFsaXplcnM7XG4gICAgZSAmJiBOZShlLCBuKSwgbiBpbnN0YW5jZW9mIHQgJiYgbi5fcmVtb3ZlUGFyZW50KHRoaXMpO1xuICB9LCB0LkVNUFRZID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIG4gPSBuZXcgdCgpO1xuICAgIHJldHVybiBuLmNsb3NlZCA9ICEwLCBuO1xuICB9KCksIHQ7XG59KCksIHVuID0gUGUuRU1QVFk7XG5mdW5jdGlvbiBkbih0KSB7XG4gIHJldHVybiB0IGluc3RhbmNlb2YgUGUgfHwgdCAmJiBcImNsb3NlZFwiIGluIHQgJiYgRih0LnJlbW92ZSkgJiYgRih0LmFkZCkgJiYgRih0LnVuc3Vic2NyaWJlKTtcbn1cbmZ1bmN0aW9uIGh0KHQpIHtcbiAgRih0KSA/IHQoKSA6IHQudW5zdWJzY3JpYmUoKTtcbn1cbnZhciBwbiA9IHtcbiAgb25VbmhhbmRsZWRFcnJvcjogbnVsbCxcbiAgb25TdG9wcGVkTm90aWZpY2F0aW9uOiBudWxsLFxuICBQcm9taXNlOiB2b2lkIDAsXG4gIHVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc6ICExLFxuICB1c2VEZXByZWNhdGVkTmV4dENvbnRleHQ6ICExXG59LCBtbiA9IHtcbiAgc2V0VGltZW91dDogZnVuY3Rpb24odCwgbikge1xuICAgIGZvciAodmFyIGUgPSBbXSwgciA9IDI7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspXG4gICAgICBlW3IgLSAyXSA9IGFyZ3VtZW50c1tyXTtcbiAgICByZXR1cm4gc2V0VGltZW91dC5hcHBseSh2b2lkIDAsIE9lKFt0LCBuXSwgRGUoZSkpKTtcbiAgfSxcbiAgY2xlYXJUaW1lb3V0OiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIChjbGVhclRpbWVvdXQpKHQpO1xuICB9LFxuICBkZWxlZ2F0ZTogdm9pZCAwXG59O1xuZnVuY3Rpb24geW4odCkge1xuICBtbi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgIHRocm93IHQ7XG4gIH0pO1xufVxuZnVuY3Rpb24gX3QoKSB7XG59XG5mdW5jdGlvbiBSZSh0KSB7XG4gIHQoKTtcbn1cbnZhciBhdCA9IGZ1bmN0aW9uKHQpIHtcbiAgbmUobiwgdCk7XG4gIGZ1bmN0aW9uIG4oZSkge1xuICAgIHZhciByID0gdC5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgcmV0dXJuIHIuaXNTdG9wcGVkID0gITEsIGUgPyAoci5kZXN0aW5hdGlvbiA9IGUsIGRuKGUpICYmIGUuYWRkKHIpKSA6IHIuZGVzdGluYXRpb24gPSBnYSwgcjtcbiAgfVxuICByZXR1cm4gbi5jcmVhdGUgPSBmdW5jdGlvbihlLCByLCBhKSB7XG4gICAgcmV0dXJuIG5ldyBCZShlLCByLCBhKTtcbiAgfSwgbi5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKGUpIHtcbiAgICB0aGlzLmlzU3RvcHBlZCB8fCB0aGlzLl9uZXh0KGUpO1xuICB9LCBuLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uKGUpIHtcbiAgICB0aGlzLmlzU3RvcHBlZCB8fCAodGhpcy5pc1N0b3BwZWQgPSAhMCwgdGhpcy5fZXJyb3IoZSkpO1xuICB9LCBuLnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8ICh0aGlzLmlzU3RvcHBlZCA9ICEwLCB0aGlzLl9jb21wbGV0ZSgpKTtcbiAgfSwgbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmNsb3NlZCB8fCAodGhpcy5pc1N0b3BwZWQgPSAhMCwgdC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSwgdGhpcy5kZXN0aW5hdGlvbiA9IG51bGwpO1xuICB9LCBuLnByb3RvdHlwZS5fbmV4dCA9IGZ1bmN0aW9uKGUpIHtcbiAgICB0aGlzLmRlc3RpbmF0aW9uLm5leHQoZSk7XG4gIH0sIG4ucHJvdG90eXBlLl9lcnJvciA9IGZ1bmN0aW9uKGUpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfSwgbi5wcm90b3R5cGUuX2NvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfSwgbjtcbn0oUGUpLCBoYSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kO1xuZnVuY3Rpb24gS2UodCwgbikge1xuICByZXR1cm4gaGEuY2FsbCh0LCBuKTtcbn1cbnZhciBfYSA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiB0KG4pIHtcbiAgICB0aGlzLnBhcnRpYWxPYnNlcnZlciA9IG47XG4gIH1cbiAgcmV0dXJuIHQucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbihuKSB7XG4gICAgdmFyIGUgPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICBpZiAoZS5uZXh0KVxuICAgICAgdHJ5IHtcbiAgICAgICAgZS5uZXh0KG4pO1xuICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICBrZShyKTtcbiAgICAgIH1cbiAgfSwgdC5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbihuKSB7XG4gICAgdmFyIGUgPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICBpZiAoZS5lcnJvcilcbiAgICAgIHRyeSB7XG4gICAgICAgIGUuZXJyb3Iobik7XG4gICAgICB9IGNhdGNoIChyKSB7XG4gICAgICAgIGtlKHIpO1xuICAgICAgfVxuICAgIGVsc2VcbiAgICAgIGtlKG4pO1xuICB9LCB0LnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBuID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgaWYgKG4uY29tcGxldGUpXG4gICAgICB0cnkge1xuICAgICAgICBuLmNvbXBsZXRlKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGtlKGUpO1xuICAgICAgfVxuICB9LCB0O1xufSgpLCBCZSA9IGZ1bmN0aW9uKHQpIHtcbiAgbmUobiwgdCk7XG4gIGZ1bmN0aW9uIG4oZSwgciwgYSkge1xuICAgIHZhciBpID0gdC5jYWxsKHRoaXMpIHx8IHRoaXMsIHM7XG4gICAgaWYgKEYoZSkgfHwgIWUpXG4gICAgICBzID0ge1xuICAgICAgICBuZXh0OiBlID8/IHZvaWQgMCxcbiAgICAgICAgZXJyb3I6IHIgPz8gdm9pZCAwLFxuICAgICAgICBjb21wbGV0ZTogYSA/PyB2b2lkIDBcbiAgICAgIH07XG4gICAgZWxzZSB7XG4gICAgICB2YXIgYztcbiAgICAgIGkgJiYgcG4udXNlRGVwcmVjYXRlZE5leHRDb250ZXh0ID8gKGMgPSBPYmplY3QuY3JlYXRlKGUpLCBjLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9LCBzID0ge1xuICAgICAgICBuZXh0OiBlLm5leHQgJiYgS2UoZS5uZXh0LCBjKSxcbiAgICAgICAgZXJyb3I6IGUuZXJyb3IgJiYgS2UoZS5lcnJvciwgYyksXG4gICAgICAgIGNvbXBsZXRlOiBlLmNvbXBsZXRlICYmIEtlKGUuY29tcGxldGUsIGMpXG4gICAgICB9KSA6IHMgPSBlO1xuICAgIH1cbiAgICByZXR1cm4gaS5kZXN0aW5hdGlvbiA9IG5ldyBfYShzKSwgaTtcbiAgfVxuICByZXR1cm4gbjtcbn0oYXQpO1xuZnVuY3Rpb24ga2UodCkge1xuICB5bih0KTtcbn1cbmZ1bmN0aW9uIHdhKHQpIHtcbiAgdGhyb3cgdDtcbn1cbnZhciBnYSA9IHtcbiAgY2xvc2VkOiAhMCxcbiAgbmV4dDogX3QsXG4gIGVycm9yOiB3YSxcbiAgY29tcGxldGU6IF90XG59LCBpdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLm9ic2VydmFibGUgfHwgXCJAQG9ic2VydmFibGVcIjtcbn0oKTtcbmZ1bmN0aW9uIGJhKHQpIHtcbiAgcmV0dXJuIHQ7XG59XG5mdW5jdGlvbiB2YSh0KSB7XG4gIHJldHVybiB0Lmxlbmd0aCA9PT0gMCA/IGJhIDogdC5sZW5ndGggPT09IDEgPyB0WzBdIDogZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiB0LnJlZHVjZShmdW5jdGlvbihyLCBhKSB7XG4gICAgICByZXR1cm4gYShyKTtcbiAgICB9LCBlKTtcbiAgfTtcbn1cbnZhciBYID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHQobikge1xuICAgIG4gJiYgKHRoaXMuX3N1YnNjcmliZSA9IG4pO1xuICB9XG4gIHJldHVybiB0LnByb3RvdHlwZS5saWZ0ID0gZnVuY3Rpb24obikge1xuICAgIHZhciBlID0gbmV3IHQoKTtcbiAgICByZXR1cm4gZS5zb3VyY2UgPSB0aGlzLCBlLm9wZXJhdG9yID0gbiwgZTtcbiAgfSwgdC5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24obiwgZSwgcikge1xuICAgIHZhciBhID0gdGhpcywgaSA9IENhKG4pID8gbiA6IG5ldyBCZShuLCBlLCByKTtcbiAgICByZXR1cm4gUmUoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcyA9IGEsIGMgPSBzLm9wZXJhdG9yLCBsID0gcy5zb3VyY2U7XG4gICAgICBpLmFkZChjID8gYy5jYWxsKGksIGwpIDogbCA/IGEuX3N1YnNjcmliZShpKSA6IGEuX3RyeVN1YnNjcmliZShpKSk7XG4gICAgfSksIGk7XG4gIH0sIHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmUgPSBmdW5jdGlvbihuKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLl9zdWJzY3JpYmUobik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbi5lcnJvcihlKTtcbiAgICB9XG4gIH0sIHQucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihuLCBlKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHJldHVybiBlID0gd3QoZSksIG5ldyBlKGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgIHZhciBzID0gbmV3IEJlKHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24oYykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuKGMpO1xuICAgICAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgICAgIGkobCksIHMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBpLFxuICAgICAgICBjb21wbGV0ZTogYVxuICAgICAgfSk7XG4gICAgICByLnN1YnNjcmliZShzKTtcbiAgICB9KTtcbiAgfSwgdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgZTtcbiAgICByZXR1cm4gKGUgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5zdWJzY3JpYmUobik7XG4gIH0sIHQucHJvdG90eXBlW2l0XSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCB0LnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgbiA9IFtdLCBlID0gMDsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKylcbiAgICAgIG5bZV0gPSBhcmd1bWVudHNbZV07XG4gICAgcmV0dXJuIHZhKG4pKHRoaXMpO1xuICB9LCB0LnByb3RvdHlwZS50b1Byb21pc2UgPSBmdW5jdGlvbihuKSB7XG4gICAgdmFyIGUgPSB0aGlzO1xuICAgIHJldHVybiBuID0gd3QobiksIG5ldyBuKGZ1bmN0aW9uKHIsIGEpIHtcbiAgICAgIHZhciBpO1xuICAgICAgZS5zdWJzY3JpYmUoZnVuY3Rpb24ocykge1xuICAgICAgICByZXR1cm4gaSA9IHM7XG4gICAgICB9LCBmdW5jdGlvbihzKSB7XG4gICAgICAgIHJldHVybiBhKHMpO1xuICAgICAgfSwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByKGkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIHQuY3JlYXRlID0gZnVuY3Rpb24obikge1xuICAgIHJldHVybiBuZXcgdChuKTtcbiAgfSwgdDtcbn0oKTtcbmZ1bmN0aW9uIHd0KHQpIHtcbiAgdmFyIG47XG4gIHJldHVybiAobiA9IHQgPz8gcG4uUHJvbWlzZSkgIT09IG51bGwgJiYgbiAhPT0gdm9pZCAwID8gbiA6IFByb21pc2U7XG59XG5mdW5jdGlvbiBFYSh0KSB7XG4gIHJldHVybiB0ICYmIEYodC5uZXh0KSAmJiBGKHQuZXJyb3IpICYmIEYodC5jb21wbGV0ZSk7XG59XG5mdW5jdGlvbiBDYSh0KSB7XG4gIHJldHVybiB0ICYmIHQgaW5zdGFuY2VvZiBhdCB8fCBFYSh0KSAmJiBkbih0KTtcbn1cbmZ1bmN0aW9uIFBhKHQpIHtcbiAgcmV0dXJuIEYodCA9PSBudWxsID8gdm9pZCAwIDogdC5saWZ0KTtcbn1cbmZ1bmN0aW9uIFNhKHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG4pIHtcbiAgICBpZiAoUGEobikpXG4gICAgICByZXR1cm4gbi5saWZ0KGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gdChlLCB0aGlzKTtcbiAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgIHRoaXMuZXJyb3Iocik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmFibGUgdG8gbGlmdCB1bmtub3duIE9ic2VydmFibGUgdHlwZVwiKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIEFhKHQsIG4sIGUsIHIsIGEpIHtcbiAgcmV0dXJuIG5ldyBrYSh0LCBuLCBlLCByLCBhKTtcbn1cbnZhciBrYSA9IGZ1bmN0aW9uKHQpIHtcbiAgbmUobiwgdCk7XG4gIGZ1bmN0aW9uIG4oZSwgciwgYSwgaSwgcywgYykge1xuICAgIHZhciBsID0gdC5jYWxsKHRoaXMsIGUpIHx8IHRoaXM7XG4gICAgcmV0dXJuIGwub25GaW5hbGl6ZSA9IHMsIGwuc2hvdWxkVW5zdWJzY3JpYmUgPSBjLCBsLl9uZXh0ID0gciA/IGZ1bmN0aW9uKHUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHIodSk7XG4gICAgICB9IGNhdGNoIChkKSB7XG4gICAgICAgIGUuZXJyb3IoZCk7XG4gICAgICB9XG4gICAgfSA6IHQucHJvdG90eXBlLl9uZXh0LCBsLl9lcnJvciA9IGkgPyBmdW5jdGlvbih1KSB7XG4gICAgICB0cnkge1xuICAgICAgICBpKHUpO1xuICAgICAgfSBjYXRjaCAoZCkge1xuICAgICAgICBlLmVycm9yKGQpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0gOiB0LnByb3RvdHlwZS5fZXJyb3IsIGwuX2NvbXBsZXRlID0gYSA/IGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYSgpO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICBlLmVycm9yKHUpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0gOiB0LnByb3RvdHlwZS5fY29tcGxldGUsIGw7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGU7XG4gICAgaWYgKCF0aGlzLnNob3VsZFVuc3Vic2NyaWJlIHx8IHRoaXMuc2hvdWxkVW5zdWJzY3JpYmUoKSkge1xuICAgICAgdmFyIHIgPSB0aGlzLmNsb3NlZDtcbiAgICAgIHQucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyksICFyICYmICgoZSA9IHRoaXMub25GaW5hbGl6ZSkgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwIHx8IGUuY2FsbCh0aGlzKSk7XG4gICAgfVxuICB9LCBuO1xufShhdCksIElhID0gR2UoZnVuY3Rpb24odCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdCh0aGlzKSwgdGhpcy5uYW1lID0gXCJPYmplY3RVbnN1YnNjcmliZWRFcnJvclwiLCB0aGlzLm1lc3NhZ2UgPSBcIm9iamVjdCB1bnN1YnNjcmliZWRcIjtcbiAgfTtcbn0pLCBmbiA9IGZ1bmN0aW9uKHQpIHtcbiAgbmUobiwgdCk7XG4gIGZ1bmN0aW9uIG4oKSB7XG4gICAgdmFyIGUgPSB0LmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gZS5jbG9zZWQgPSAhMSwgZS5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbCwgZS5vYnNlcnZlcnMgPSBbXSwgZS5pc1N0b3BwZWQgPSAhMSwgZS5oYXNFcnJvciA9ICExLCBlLnRocm93bkVycm9yID0gbnVsbCwgZTtcbiAgfVxuICByZXR1cm4gbi5wcm90b3R5cGUubGlmdCA9IGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgciA9IG5ldyBndCh0aGlzLCB0aGlzKTtcbiAgICByZXR1cm4gci5vcGVyYXRvciA9IGUsIHI7XG4gIH0sIG4ucHJvdG90eXBlLl90aHJvd0lmQ2xvc2VkID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKVxuICAgICAgdGhyb3cgbmV3IElhKCk7XG4gIH0sIG4ucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIFJlKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGEsIGk7XG4gICAgICBpZiAoci5fdGhyb3dJZkNsb3NlZCgpLCAhci5pc1N0b3BwZWQpIHtcbiAgICAgICAgci5jdXJyZW50T2JzZXJ2ZXJzIHx8IChyLmN1cnJlbnRPYnNlcnZlcnMgPSBBcnJheS5mcm9tKHIub2JzZXJ2ZXJzKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZm9yICh2YXIgcyA9IG1lKHIuY3VycmVudE9ic2VydmVycyksIGMgPSBzLm5leHQoKTsgIWMuZG9uZTsgYyA9IHMubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgbCA9IGMudmFsdWU7XG4gICAgICAgICAgICBsLm5leHQoZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgICAgYSA9IHsgZXJyb3I6IHUgfTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYyAmJiAhYy5kb25lICYmIChpID0gcy5yZXR1cm4pICYmIGkuY2FsbChzKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIG4ucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24oZSkge1xuICAgIHZhciByID0gdGhpcztcbiAgICBSZShmdW5jdGlvbigpIHtcbiAgICAgIGlmIChyLl90aHJvd0lmQ2xvc2VkKCksICFyLmlzU3RvcHBlZCkge1xuICAgICAgICByLmhhc0Vycm9yID0gci5pc1N0b3BwZWQgPSAhMCwgci50aHJvd25FcnJvciA9IGU7XG4gICAgICAgIGZvciAodmFyIGEgPSByLm9ic2VydmVyczsgYS5sZW5ndGg7IClcbiAgICAgICAgICBhLnNoaWZ0KCkuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIG4ucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGUgPSB0aGlzO1xuICAgIFJlKGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGUuX3Rocm93SWZDbG9zZWQoKSwgIWUuaXNTdG9wcGVkKSB7XG4gICAgICAgIGUuaXNTdG9wcGVkID0gITA7XG4gICAgICAgIGZvciAodmFyIHIgPSBlLm9ic2VydmVyczsgci5sZW5ndGg7IClcbiAgICAgICAgICByLnNoaWZ0KCkuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmlzU3RvcHBlZCA9IHRoaXMuY2xvc2VkID0gITAsIHRoaXMub2JzZXJ2ZXJzID0gdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgfSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCBcIm9ic2VydmVkXCIsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGU7XG4gICAgICByZXR1cm4gKChlID0gdGhpcy5vYnNlcnZlcnMpID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUubGVuZ3RoKSA+IDA7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICBjb25maWd1cmFibGU6ICEwXG4gIH0pLCBuLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksIHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmUuY2FsbCh0aGlzLCBlKTtcbiAgfSwgbi5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLCB0aGlzLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzKGUpLCB0aGlzLl9pbm5lclN1YnNjcmliZShlKTtcbiAgfSwgbi5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlID0gZnVuY3Rpb24oZSkge1xuICAgIHZhciByID0gdGhpcywgYSA9IHRoaXMsIGkgPSBhLmhhc0Vycm9yLCBzID0gYS5pc1N0b3BwZWQsIGMgPSBhLm9ic2VydmVycztcbiAgICByZXR1cm4gaSB8fCBzID8gdW4gOiAodGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbCwgYy5wdXNoKGUpLCBuZXcgUGUoZnVuY3Rpb24oKSB7XG4gICAgICByLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsLCBOZShjLCBlKTtcbiAgICB9KSk7XG4gIH0sIG4ucHJvdG90eXBlLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzID0gZnVuY3Rpb24oZSkge1xuICAgIHZhciByID0gdGhpcywgYSA9IHIuaGFzRXJyb3IsIGkgPSByLnRocm93bkVycm9yLCBzID0gci5pc1N0b3BwZWQ7XG4gICAgYSA/IGUuZXJyb3IoaSkgOiBzICYmIGUuY29tcGxldGUoKTtcbiAgfSwgbi5wcm90b3R5cGUuYXNPYnNlcnZhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGUgPSBuZXcgWCgpO1xuICAgIHJldHVybiBlLnNvdXJjZSA9IHRoaXMsIGU7XG4gIH0sIG4uY3JlYXRlID0gZnVuY3Rpb24oZSwgcikge1xuICAgIHJldHVybiBuZXcgZ3QoZSwgcik7XG4gIH0sIG47XG59KFgpLCBndCA9IGZ1bmN0aW9uKHQpIHtcbiAgbmUobiwgdCk7XG4gIGZ1bmN0aW9uIG4oZSwgcikge1xuICAgIHZhciBhID0gdC5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgcmV0dXJuIGEuZGVzdGluYXRpb24gPSBlLCBhLnNvdXJjZSA9IHIsIGE7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHIsIGE7XG4gICAgKGEgPSAociA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IHIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHIubmV4dCkgPT09IG51bGwgfHwgYSA9PT0gdm9pZCAwIHx8IGEuY2FsbChyLCBlKTtcbiAgfSwgbi5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHIsIGE7XG4gICAgKGEgPSAociA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IHIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHIuZXJyb3IpID09PSBudWxsIHx8IGEgPT09IHZvaWQgMCB8fCBhLmNhbGwociwgZSk7XG4gIH0sIG4ucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGUsIHI7XG4gICAgKHIgPSAoZSA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuY29tcGxldGUpID09PSBudWxsIHx8IHIgPT09IHZvaWQgMCB8fCByLmNhbGwoZSk7XG4gIH0sIG4ucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbihlKSB7XG4gICAgdmFyIHIsIGE7XG4gICAgcmV0dXJuIChhID0gKHIgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogci5zdWJzY3JpYmUoZSkpICE9PSBudWxsICYmIGEgIT09IHZvaWQgMCA/IGEgOiB1bjtcbiAgfSwgbjtcbn0oZm4pLCBSYSA9IHtcbiAgbm93OiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKTtcbiAgfSxcbiAgZGVsZWdhdGU6IHZvaWQgMFxufSwgRmEgPSBmdW5jdGlvbih0KSB7XG4gIG5lKG4sIHQpO1xuICBmdW5jdGlvbiBuKGUsIHIpIHtcbiAgICByZXR1cm4gdC5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24oZSwgcikge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCBuO1xufShQZSksIGJ0ID0ge1xuICBzZXRJbnRlcnZhbDogZnVuY3Rpb24odCwgbikge1xuICAgIGZvciAodmFyIGUgPSBbXSwgciA9IDI7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspXG4gICAgICBlW3IgLSAyXSA9IGFyZ3VtZW50c1tyXTtcbiAgICByZXR1cm4gc2V0SW50ZXJ2YWwuYXBwbHkodm9pZCAwLCBPZShbdCwgbl0sIERlKGUpKSk7XG4gIH0sXG4gIGNsZWFySW50ZXJ2YWw6IGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gY2xlYXJJbnRlcnZhbCh0KTtcbiAgfSxcbiAgZGVsZWdhdGU6IHZvaWQgMFxufSwgTWEgPSBmdW5jdGlvbih0KSB7XG4gIG5lKG4sIHQpO1xuICBmdW5jdGlvbiBuKGUsIHIpIHtcbiAgICB2YXIgYSA9IHQuY2FsbCh0aGlzLCBlLCByKSB8fCB0aGlzO1xuICAgIHJldHVybiBhLnNjaGVkdWxlciA9IGUsIGEud29yayA9IHIsIGEucGVuZGluZyA9ICExLCBhO1xuICB9XG4gIHJldHVybiBuLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgICB2YXIgYTtcbiAgICBpZiAociA9PT0gdm9pZCAwICYmIChyID0gMCksIHRoaXMuY2xvc2VkKVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgdGhpcy5zdGF0ZSA9IGU7XG4gICAgdmFyIGkgPSB0aGlzLmlkLCBzID0gdGhpcy5zY2hlZHVsZXI7XG4gICAgcmV0dXJuIGkgIT0gbnVsbCAmJiAodGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQocywgaSwgcikpLCB0aGlzLnBlbmRpbmcgPSAhMCwgdGhpcy5kZWxheSA9IHIsIHRoaXMuaWQgPSAoYSA9IHRoaXMuaWQpICE9PSBudWxsICYmIGEgIT09IHZvaWQgMCA/IGEgOiB0aGlzLnJlcXVlc3RBc3luY0lkKHMsIHRoaXMuaWQsIHIpLCB0aGlzO1xuICB9LCBuLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZCA9IGZ1bmN0aW9uKGUsIHIsIGEpIHtcbiAgICByZXR1cm4gYSA9PT0gdm9pZCAwICYmIChhID0gMCksIGJ0LnNldEludGVydmFsKGUuZmx1c2guYmluZChlLCB0aGlzKSwgYSk7XG4gIH0sIG4ucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkID0gZnVuY3Rpb24oZSwgciwgYSkge1xuICAgIGlmIChhID09PSB2b2lkIDAgJiYgKGEgPSAwKSwgYSAhPSBudWxsICYmIHRoaXMuZGVsYXkgPT09IGEgJiYgdGhpcy5wZW5kaW5nID09PSAhMSlcbiAgICAgIHJldHVybiByO1xuICAgIHIgIT0gbnVsbCAmJiBidC5jbGVhckludGVydmFsKHIpO1xuICB9LCBuLnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24oZSwgcikge1xuICAgIGlmICh0aGlzLmNsb3NlZClcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoXCJleGVjdXRpbmcgYSBjYW5jZWxsZWQgYWN0aW9uXCIpO1xuICAgIHRoaXMucGVuZGluZyA9ICExO1xuICAgIHZhciBhID0gdGhpcy5fZXhlY3V0ZShlLCByKTtcbiAgICBpZiAoYSlcbiAgICAgIHJldHVybiBhO1xuICAgIHRoaXMucGVuZGluZyA9PT0gITEgJiYgdGhpcy5pZCAhPSBudWxsICYmICh0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlciwgdGhpcy5pZCwgbnVsbCkpO1xuICB9LCBuLnByb3RvdHlwZS5fZXhlY3V0ZSA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgICB2YXIgYSA9ICExLCBpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLndvcmsoZSk7XG4gICAgfSBjYXRjaCAocykge1xuICAgICAgYSA9ICEwLCBpID0gcyB8fCBuZXcgRXJyb3IoXCJTY2hlZHVsZWQgYWN0aW9uIHRocmV3IGZhbHN5IGVycm9yXCIpO1xuICAgIH1cbiAgICBpZiAoYSlcbiAgICAgIHJldHVybiB0aGlzLnVuc3Vic2NyaWJlKCksIGk7XG4gIH0sIG4ucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgdmFyIGUgPSB0aGlzLCByID0gZS5pZCwgYSA9IGUuc2NoZWR1bGVyLCBpID0gYS5hY3Rpb25zO1xuICAgICAgdGhpcy53b3JrID0gdGhpcy5zdGF0ZSA9IHRoaXMuc2NoZWR1bGVyID0gbnVsbCwgdGhpcy5wZW5kaW5nID0gITEsIE5lKGksIHRoaXMpLCByICE9IG51bGwgJiYgKHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKGEsIHIsIG51bGwpKSwgdGhpcy5kZWxheSA9IG51bGwsIHQucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgfVxuICB9LCBuO1xufShGYSksIHZ0ID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHQobiwgZSkge1xuICAgIGUgPT09IHZvaWQgMCAmJiAoZSA9IHQubm93KSwgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yID0gbiwgdGhpcy5ub3cgPSBlO1xuICB9XG4gIHJldHVybiB0LnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uKG4sIGUsIHIpIHtcbiAgICByZXR1cm4gZSA9PT0gdm9pZCAwICYmIChlID0gMCksIG5ldyB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IodGhpcywgbikuc2NoZWR1bGUociwgZSk7XG4gIH0sIHQubm93ID0gUmEubm93LCB0O1xufSgpLCBEYSA9IGZ1bmN0aW9uKHQpIHtcbiAgbmUobiwgdCk7XG4gIGZ1bmN0aW9uIG4oZSwgcikge1xuICAgIHIgPT09IHZvaWQgMCAmJiAociA9IHZ0Lm5vdyk7XG4gICAgdmFyIGEgPSB0LmNhbGwodGhpcywgZSwgcikgfHwgdGhpcztcbiAgICByZXR1cm4gYS5hY3Rpb25zID0gW10sIGEuX2FjdGl2ZSA9ICExLCBhO1xuICB9XG4gIHJldHVybiBuLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgciA9IHRoaXMuYWN0aW9ucztcbiAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICByLnB1c2goZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBhO1xuICAgIHRoaXMuX2FjdGl2ZSA9ICEwO1xuICAgIGRvXG4gICAgICBpZiAoYSA9IGUuZXhlY3V0ZShlLnN0YXRlLCBlLmRlbGF5KSlcbiAgICAgICAgYnJlYWs7XG4gICAgd2hpbGUgKGUgPSByLnNoaWZ0KCkpO1xuICAgIGlmICh0aGlzLl9hY3RpdmUgPSAhMSwgYSkge1xuICAgICAgZm9yICg7IGUgPSByLnNoaWZ0KCk7IClcbiAgICAgICAgZS51bnN1YnNjcmliZSgpO1xuICAgICAgdGhyb3cgYTtcbiAgICB9XG4gIH0sIG47XG59KHZ0KSwgT2EgPSBuZXcgRGEoTWEpLCBOYSA9IGZ1bmN0aW9uKHQpIHtcbiAgcmV0dXJuIHQgJiYgdHlwZW9mIHQubGVuZ3RoID09IFwibnVtYmVyXCIgJiYgdHlwZW9mIHQgIT0gXCJmdW5jdGlvblwiO1xufTtcbmZ1bmN0aW9uIFRhKHQpIHtcbiAgcmV0dXJuIEYodCA9PSBudWxsID8gdm9pZCAwIDogdC50aGVuKTtcbn1cbmZ1bmN0aW9uIExhKHQpIHtcbiAgcmV0dXJuIEYodFtpdF0pO1xufVxuZnVuY3Rpb24gVWEodCkge1xuICByZXR1cm4gU3ltYm9sLmFzeW5jSXRlcmF0b3IgJiYgRih0ID09IG51bGwgPyB2b2lkIDAgOiB0W1N5bWJvbC5hc3luY0l0ZXJhdG9yXSk7XG59XG5mdW5jdGlvbiBqYSh0KSB7XG4gIHJldHVybiBuZXcgVHlwZUVycm9yKFwiWW91IHByb3ZpZGVkIFwiICsgKHQgIT09IG51bGwgJiYgdHlwZW9mIHQgPT0gXCJvYmplY3RcIiA/IFwiYW4gaW52YWxpZCBvYmplY3RcIiA6IFwiJ1wiICsgdCArIFwiJ1wiKSArIFwiIHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21pc2UsIFJlYWRhYmxlU3RyZWFtLCBBcnJheSwgQXN5bmNJdGVyYWJsZSwgb3IgSXRlcmFibGUuXCIpO1xufVxuZnVuY3Rpb24geGEoKSB7XG4gIHJldHVybiB0eXBlb2YgU3ltYm9sICE9IFwiZnVuY3Rpb25cIiB8fCAhU3ltYm9sLml0ZXJhdG9yID8gXCJAQGl0ZXJhdG9yXCIgOiBTeW1ib2wuaXRlcmF0b3I7XG59XG52YXIgJGEgPSB4YSgpO1xuZnVuY3Rpb24gemEodCkge1xuICByZXR1cm4gRih0ID09IG51bGwgPyB2b2lkIDAgOiB0WyRhXSk7XG59XG5mdW5jdGlvbiBHYSh0KSB7XG4gIHJldHVybiB5YSh0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBlLCByLCBhLCBpO1xuICAgIHJldHVybiBsbih0aGlzLCBmdW5jdGlvbihzKSB7XG4gICAgICBzd2l0Y2ggKHMubGFiZWwpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIGUgPSB0LmdldFJlYWRlcigpLCBzLmxhYmVsID0gMTtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHMudHJ5cy5wdXNoKFsxLCAsIDksIDEwXSksIHMubGFiZWwgPSAyO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgcmV0dXJuIFs0LCBwZShlLnJlYWQoKSldO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgcmV0dXJuIHIgPSBzLnNlbnQoKSwgYSA9IHIudmFsdWUsIGkgPSByLmRvbmUsIGkgPyBbNCwgcGUodm9pZCAwKV0gOiBbMywgNV07XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gWzIsIHMuc2VudCgpXTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIHJldHVybiBbNCwgcGUoYSldO1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgcmV0dXJuIFs0LCBzLnNlbnQoKV07XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICByZXR1cm4gcy5zZW50KCksIFszLCAyXTtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIHJldHVybiBbMywgMTBdO1xuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgcmV0dXJuIGUucmVsZWFzZUxvY2soKSwgWzddO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gVmEodCkge1xuICByZXR1cm4gRih0ID09IG51bGwgPyB2b2lkIDAgOiB0LmdldFJlYWRlcik7XG59XG5mdW5jdGlvbiBxYSh0KSB7XG4gIGlmICh0IGluc3RhbmNlb2YgWClcbiAgICByZXR1cm4gdDtcbiAgaWYgKHQgIT0gbnVsbCkge1xuICAgIGlmIChMYSh0KSlcbiAgICAgIHJldHVybiBZYSh0KTtcbiAgICBpZiAoTmEodCkpXG4gICAgICByZXR1cm4gS2EodCk7XG4gICAgaWYgKFRhKHQpKVxuICAgICAgcmV0dXJuIFdhKHQpO1xuICAgIGlmIChVYSh0KSlcbiAgICAgIHJldHVybiBobih0KTtcbiAgICBpZiAoemEodCkpXG4gICAgICByZXR1cm4gSmEodCk7XG4gICAgaWYgKFZhKHQpKVxuICAgICAgcmV0dXJuIEhhKHQpO1xuICB9XG4gIHRocm93IGphKHQpO1xufVxuZnVuY3Rpb24gWWEodCkge1xuICByZXR1cm4gbmV3IFgoZnVuY3Rpb24obikge1xuICAgIHZhciBlID0gdFtpdF0oKTtcbiAgICBpZiAoRihlLnN1YnNjcmliZSkpXG4gICAgICByZXR1cm4gZS5zdWJzY3JpYmUobik7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlXCIpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIEthKHQpIHtcbiAgcmV0dXJuIG5ldyBYKGZ1bmN0aW9uKG4pIHtcbiAgICBmb3IgKHZhciBlID0gMDsgZSA8IHQubGVuZ3RoICYmICFuLmNsb3NlZDsgZSsrKVxuICAgICAgbi5uZXh0KHRbZV0pO1xuICAgIG4uY29tcGxldGUoKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBXYSh0KSB7XG4gIHJldHVybiBuZXcgWChmdW5jdGlvbihuKSB7XG4gICAgdC50aGVuKGZ1bmN0aW9uKGUpIHtcbiAgICAgIG4uY2xvc2VkIHx8IChuLm5leHQoZSksIG4uY29tcGxldGUoKSk7XG4gICAgfSwgZnVuY3Rpb24oZSkge1xuICAgICAgcmV0dXJuIG4uZXJyb3IoZSk7XG4gICAgfSkudGhlbihudWxsLCB5bik7XG4gIH0pO1xufVxuZnVuY3Rpb24gSmEodCkge1xuICByZXR1cm4gbmV3IFgoZnVuY3Rpb24obikge1xuICAgIHZhciBlLCByO1xuICAgIHRyeSB7XG4gICAgICBmb3IgKHZhciBhID0gbWUodCksIGkgPSBhLm5leHQoKTsgIWkuZG9uZTsgaSA9IGEubmV4dCgpKSB7XG4gICAgICAgIHZhciBzID0gaS52YWx1ZTtcbiAgICAgICAgaWYgKG4ubmV4dChzKSwgbi5jbG9zZWQpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGMpIHtcbiAgICAgIGUgPSB7IGVycm9yOiBjIH07XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGkgJiYgIWkuZG9uZSAmJiAociA9IGEucmV0dXJuKSAmJiByLmNhbGwoYSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoZSkgdGhyb3cgZS5lcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgbi5jb21wbGV0ZSgpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGhuKHQpIHtcbiAgcmV0dXJuIG5ldyBYKGZ1bmN0aW9uKG4pIHtcbiAgICBaYSh0LCBuKS5jYXRjaChmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4gbi5lcnJvcihlKTtcbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBIYSh0KSB7XG4gIHJldHVybiBobihHYSh0KSk7XG59XG5mdW5jdGlvbiBaYSh0LCBuKSB7XG4gIHZhciBlLCByLCBhLCBpO1xuICByZXR1cm4gbWEodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzLCBjO1xuICAgIHJldHVybiBsbih0aGlzLCBmdW5jdGlvbihsKSB7XG4gICAgICBzd2l0Y2ggKGwubGFiZWwpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIGwudHJ5cy5wdXNoKFswLCA1LCA2LCAxMV0pLCBlID0gZmEodCksIGwubGFiZWwgPSAxO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcmV0dXJuIFs0LCBlLm5leHQoKV07XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAociA9IGwuc2VudCgpLCAhIXIuZG9uZSkgcmV0dXJuIFszLCA0XTtcbiAgICAgICAgICBpZiAocyA9IHIudmFsdWUsIG4ubmV4dChzKSwgbi5jbG9zZWQpXG4gICAgICAgICAgICByZXR1cm4gWzJdO1xuICAgICAgICAgIGwubGFiZWwgPSAzO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgcmV0dXJuIFszLCAxXTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBbMywgMTFdO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgcmV0dXJuIGMgPSBsLnNlbnQoKSwgYSA9IHsgZXJyb3I6IGMgfSwgWzMsIDExXTtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIHJldHVybiBsLnRyeXMucHVzaChbNiwgLCA5LCAxMF0pLCByICYmICFyLmRvbmUgJiYgKGkgPSBlLnJldHVybikgPyBbNCwgaS5jYWxsKGUpXSA6IFszLCA4XTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIGwuc2VudCgpLCBsLmxhYmVsID0gODtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIHJldHVybiBbMywgMTBdO1xuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgICAgICAgcmV0dXJuIFs3XTtcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIHJldHVybiBuLmNvbXBsZXRlKCksIFsyXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBCYSh0LCBuLCBlLCByLCBhKSB7XG4gIHIgPT09IHZvaWQgMCAmJiAociA9IDApLCBhID09PSB2b2lkIDAgJiYgKGEgPSAhMSk7XG4gIHZhciBpID0gbi5zY2hlZHVsZShmdW5jdGlvbigpIHtcbiAgICBlKCksIGEgPyB0LmFkZCh0aGlzLnNjaGVkdWxlKG51bGwsIHIpKSA6IHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgfSwgcik7XG4gIGlmICh0LmFkZChpKSwgIWEpXG4gICAgcmV0dXJuIGk7XG59XG5mdW5jdGlvbiBRYSh0LCBuKSB7XG4gIHZhciBlID0gRih0KSA/IHQgOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdDtcbiAgfSwgciA9IGZ1bmN0aW9uKGEpIHtcbiAgICByZXR1cm4gYS5lcnJvcihlKCkpO1xuICB9O1xuICByZXR1cm4gbmV3IFgocik7XG59XG52YXIgWGEgPSBHZShmdW5jdGlvbih0KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0KHRoaXMpLCB0aGlzLm5hbWUgPSBcIkVtcHR5RXJyb3JcIiwgdGhpcy5tZXNzYWdlID0gXCJubyBlbGVtZW50cyBpbiBzZXF1ZW5jZVwiO1xuICB9O1xufSk7XG5mdW5jdGlvbiBlaSh0LCBuKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlLCByKSB7XG4gICAgdmFyIGEgPSAhMSwgaTtcbiAgICB0LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBmdW5jdGlvbihzKSB7XG4gICAgICAgIGkgPSBzLCBhID0gITA7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IHIsXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGEgPyBlKGkpIDogcihuZXcgWGEoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gdGkodCkge1xuICByZXR1cm4gdCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKHQpO1xufVxudmFyIG5pID0gR2UoZnVuY3Rpb24odCkge1xuICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgIGUgPT09IHZvaWQgMCAmJiAoZSA9IG51bGwpLCB0KHRoaXMpLCB0aGlzLm1lc3NhZ2UgPSBcIlRpbWVvdXQgaGFzIG9jY3VycmVkXCIsIHRoaXMubmFtZSA9IFwiVGltZW91dEVycm9yXCIsIHRoaXMuaW5mbyA9IGU7XG4gIH07XG59KTtcbmZ1bmN0aW9uIHJpKHQsIG4pIHtcbiAgdmFyIGUgPSB0aSh0KSA/IHsgZmlyc3Q6IHQgfSA6IHR5cGVvZiB0ID09IFwibnVtYmVyXCIgPyB7IGVhY2g6IHQgfSA6IHQsIHIgPSBlLmZpcnN0LCBhID0gZS5lYWNoLCBpID0gZS53aXRoLCBzID0gaSA9PT0gdm9pZCAwID8gb2kgOiBpLCBjID0gZS5zY2hlZHVsZXIsIGwgPSBjID09PSB2b2lkIDAgPyBPYSA6IGMsIHUgPSBlLm1ldGEsIGQgPSB1ID09PSB2b2lkIDAgPyBudWxsIDogdTtcbiAgaWYgKHIgPT0gbnVsbCAmJiBhID09IG51bGwpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk5vIHRpbWVvdXQgcHJvdmlkZWQuXCIpO1xuICByZXR1cm4gU2EoZnVuY3Rpb24oZiwgaCkge1xuICAgIHZhciB5LCBtLCBfID0gbnVsbCwgdiA9IDAsIGcgPSBmdW5jdGlvbihiKSB7XG4gICAgICBtID0gQmEoaCwgbCwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgeS51bnN1YnNjcmliZSgpLCBxYShzKHtcbiAgICAgICAgICAgIG1ldGE6IGQsXG4gICAgICAgICAgICBsYXN0VmFsdWU6IF8sXG4gICAgICAgICAgICBzZWVuOiB2XG4gICAgICAgICAgfSkpLnN1YnNjcmliZShoKTtcbiAgICAgICAgfSBjYXRjaCAoRSkge1xuICAgICAgICAgIGguZXJyb3IoRSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGIpO1xuICAgIH07XG4gICAgeSA9IGYuc3Vic2NyaWJlKEFhKGgsIGZ1bmN0aW9uKGIpIHtcbiAgICAgIG0gPT0gbnVsbCB8fCBtLnVuc3Vic2NyaWJlKCksIHYrKywgaC5uZXh0KF8gPSBiKSwgYSA+IDAgJiYgZyhhKTtcbiAgICB9LCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24oKSB7XG4gICAgICBtICE9IG51bGwgJiYgbS5jbG9zZWQgfHwgbSA9PSBudWxsIHx8IG0udW5zdWJzY3JpYmUoKSwgXyA9IG51bGw7XG4gICAgfSkpLCAhdiAmJiBnKHIgIT0gbnVsbCA/IHR5cGVvZiByID09IFwibnVtYmVyXCIgPyByIDogK3IgLSBsLm5vdygpIDogYSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gb2kodCkge1xuICB0aHJvdyBuZXcgbmkodCk7XG59XG5jbGFzcyBGZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0ID0gKG4pID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcInN1Y2Nlc3NcIiwgaXNTdWNjZXNzOiAhMCwgbG9hZGVkVmFsdWU6IG4gfSwgdGhpcy5fc3ViamVjdC5uZXh0KG4pLCB0aGlzLl9zdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgfSwgdGhpcy50aHJvdyA9IChuLCBlKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2FkZWRPbmNlIGlzIGFscmVhZHkgaW4gc3VjY2VzcyBzdGF0ZVwiKTtcbiAgICAgIHRoaXMuX2N1cnJlbnQgPSB7IHN0YXR1czogXCJlcnJvclwiLCBpc1N1Y2Nlc3M6ICExLCBlcnJvcjogbiwgZXJyTXNnOiBlIH0sIHRoaXMuX3N1YmplY3QuZXJyb3Iobik7XG4gICAgfSwgdGhpcy5nZXRWYWx1ZUlmTG9hZGVkRWxzZSA9IChuKSA9PiB0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIgPyB0aGlzLl9jdXJyZW50LmxvYWRlZFZhbHVlIDogbiwgdGhpcy5zdWJzY3JpYmUgPSAobikgPT4ge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICBuKHRoaXMuX2N1cnJlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJlcnJvclwiICYmIG4odGhpcy5fY3VycmVudCk7XG4gICAgICBjb25zdCBlID0gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcInN1Y2Nlc3NcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGUgKG5leHQpOiBwbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSBfY3VycmVudCBiZWZvcmUgdGhlIHN1YmplY3RcIik7XG4gICAgICAgICAgbih0aGlzLl9jdXJyZW50KSwgZS51bnN1YnNjcmliZSgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyAhPT0gXCJlcnJvclwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZSAoZXJyb3IpOiBwbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSBfY3VycmVudCBiZWZvcmUgdGhlIHN1YmplY3RcIik7XG4gICAgICAgICAgbih0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgdGhpcy53YWl0Rm9yTG9hZCA9IChuKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2N1cnJlbnQubG9hZGVkVmFsdWUpO1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcImVycm9yXCIpIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGlzLl9jdXJyZW50LmVycm9yKTtcbiAgICAgIHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcImluaXRpYWxcIiAmJiBVZSh0aGlzLl9jdXJyZW50KTtcbiAgICAgIGNvbnN0IGUgPSB7XG4gICAgICAgIGZpcnN0OiBuLnRpbWVvdXRTZWMgKiAxZTMsXG4gICAgICAgIHdpdGg6ICgpID0+IFFhKCgpID0+IG5ldyBFcnJvcihuLnRpbWVvdXRFcnJNc2cpKVxuICAgICAgfTtcbiAgICAgIHJldHVybiBlaSh0aGlzLl9zdWJqZWN0LnBpcGUocmkoZSkpKTtcbiAgICB9LCB0aGlzLl9jdXJyZW50ID0geyBzdGF0dXM6IFwiaW5pdGlhbFwiLCBpc1N1Y2Nlc3M6ICExIH0sIHRoaXMuX3N1YmplY3QgPSBuZXcgZm4oKTtcbiAgfVxuICBnZXQgY3VycmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudDtcbiAgfVxufVxuY29uc3QgeyBsb2dfXzogYWksIGVycl9fOiBpaSB9ID0gUyhcImluaXQtZmxvd3NcIiksIGFlID0gKHQsIG4pID0+IHtcbiAgY29uc3QgZSA9IG5ldyBGZSgpO1xuICByZXR1cm4ge1xuICAgIHB1Ymxpc2hlcjogZSxcbiAgICBpbml0aWFsaXplOiBhc3luYyAocikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGUuY3VycmVudC5pc1N1Y2Nlc3MpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBmbG93IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQuXCIpO1xuICAgICAgICBjb25zdCBhID0gYXdhaXQgbihyKTtcbiAgICAgICAgYWkoYOKclCAke3R9IGZsb3cgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LiBSZXN1bHQ6YCwgYSksIGUuc2V0KGEpO1xuICAgICAgfSBjYXRjaCAoYSkge1xuICAgICAgICBpaShg8J2ZrSAke3R9IGZsb3cgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiBFcnJvcjpgLCBIKGEpLCBcIkRldGFpbHM6XCIsIGEpLCBlLnRocm93KGEsIEgoYSkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn0sIHNpID0gYXN5bmMgKHQsIG4sIGUpID0+IHtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LnZhbHVlcyh0KS5tYXAoKHIpID0+IHIuaW5pdGlhbGl6ZSh7IGNvbnRleHQ6IG4sIGZvcm1DYWxsYmFja3M6IGUgfSkpKTtcbn0sIGNpID0gKCkgPT4gKHtcbiAgLy8g8J+SoSBBZGQgbmV3IGluaXQgZmxvd3MgaGVyZVxuICAvLyBTdHJpcGUgUFJcbiAgc3RyaXBlUFI6IGFlKFwiU3RyaXBlIFBSXCIsIGsuc3RyaXBlUFIuaW5pdCksXG4gIC8vIFN0cmlwZSBMaW5rXG4gIHN0cmlwZUxpbms6IGFlKFwiU3RyaXBlIExpbmtcIiwgay5zdHJpcGVMaW5rLmluaXQpLFxuICAvLyBBaXJ3YWxsZXggR29vZ2xlUGF5XG4gIGFpcndhbGxleEdvb2dsZVBheTogYWUoXCJBaXJ3YWxsZXggR29vZ2xlUGF5XCIsIGsuYWlyd2FsbGV4R29vZ2xlUGF5LmluaXQpLFxuICAvLyBBaXJ3YWxsZXggQXBwbGVQYXlcbiAgYWlyd2FsbGV4QXBwbGVQYXk6IGFlKFwiQWlyd2FsbGV4IEFwcGxlUGF5XCIsIGsuYWlyd2FsbGV4QXBwbGVQYXkuaW5pdCksXG4gIC8vIExvb3BcbiAgbG9vcDogYWUoXCJMb29wXCIsIGsubG9vcENyeXB0by5pbml0KSxcbiAgLy8gQXV0aG5ldCBHb29nbGVQYXlcbiAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiBhZShcIkF1dGhuZXQgR29vZ2xlUGF5XCIsIGsuYXV0aG9yaXplTmV0R29vZ2xlUGF5LmluaXQpLFxuICAvLyBBdXRobmV0IEFwcGxlUGF5XG4gIGF1dGhvcml6ZU5ldEFwcGxlUGF5OiBhZShcIkF1dGhuZXQgQXBwbGVQYXlcIiwgay5hdXRob3JpemVOZXRBcHBsZVBheS5pbml0KVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxufSksIHsgZXJyX186IGxpIH0gPSBTKFwiZm9ybS1jYWxsYmFja3NcIiksICQgPSB6JDEuZnVuY3Rpb24oKS5vcHRpb25hbCgpLCBFdCA9IHokMS5vYmplY3Qoe1xuICBvbkZvY3VzOiAkLFxuICBvbkJsdXI6ICQsXG4gIG9uQ2hhbmdlOiAkLFxuICBvbkxvYWQ6ICQsXG4gIG9uTG9hZEVycm9yOiAkLFxuICBvblZhbGlkYXRpb25FcnJvcjogJCxcbiAgb25DaGVja291dFN0YXJ0ZWQ6ICQsXG4gIG9uQ2hlY2tvdXRTdWNjZXNzOiAkLFxuICBvblNldHVwUGF5bWVudE1ldGhvZFN1Y2Nlc3M6ICQsXG4gIG9uQ2hlY2tvdXRFcnJvcjogJCxcbiAgb25QYXltZW50UmVxdWVzdExvYWQ6ICRcbn0pLCBXID0gY2xhc3MgVyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0Q2FsbGJhY2tzID0gKG4pID0+IHtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IFcuY3JlYXRlRW1wdHlDYWxsYmFja3MoKSwgT2JqZWN0LmVudHJpZXMobikuZm9yRWFjaCgoW2UsIHJdKSA9PiB7XG4gICAgICAgIGNvbnN0IGEgPSBBbihlLCByID8/IFcuTk9PUCwgbGkpO1xuICAgICAgICB0aGlzLl9jYWxsYmFja3NbZV0gPSBhO1xuICAgICAgfSk7XG4gICAgfSwgdGhpcy5fY2FsbGJhY2tzID0gVy5jcmVhdGVFbXB0eUNhbGxiYWNrcygpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVhZC1vbmx5IHZlcnNpb24gb2YgdGhlIGNhbGxiYWNrcyBvYmplY3QuXG4gICAqL1xuICBnZXQgZ2V0KCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX2NhbGxiYWNrcyB9O1xuICB9XG59O1xuVy5OT09QID0gKCkgPT4ge1xufSwgVy5jcmVhdGVFbXB0eUNhbGxiYWNrcyA9ICgpID0+IHtcbiAgY29uc3QgbiA9IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMoRXQua2V5b2YoKS5lbnVtKS5mb3JFYWNoKChlKSA9PiB7XG4gICAgbltlXSA9IFcuTk9PUDtcbiAgfSksIG47XG59LCBXLmZyb21PYmplY3QgPSAobikgPT4ge1xuICBjb25zdCBlID0gbmV3IFcoKTtcbiAgcmV0dXJuIGUuc2V0Q2FsbGJhY2tzKEV0LnBhcnNlKG4pKSwgZTtcbn07XG5sZXQgUWUgPSBXO1xuY2xhc3MgdWkge1xuICBjb25zdHJ1Y3RvcihuLCBlLCByLCBhKSB7XG4gICAgdGhpcy5oYW5kbGVNZXNzYWdlID0gKGkpID0+IHtcbiAgICAgIGlmICghaS5zb3VyY2UpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHNvdXJjZSBmb3VuZFwiKTtcbiAgICAgIGlmIChDdChpLm9yaWdpbikgIT09IEN0KHRoaXMuYmFzZVVybCkgfHwgdHlwZW9mIGkuZGF0YSA9PSBcIm9iamVjdFwiICYmIGkuZGF0YS5wZW5wYWwgfHwgdHlwZW9mIGkuZGF0YSA9PSBcIm9iamVjdFwiICYmIGkuZGF0YS5zb3VyY2UgJiYgaS5kYXRhLnNvdXJjZSA9PT0gXCJyZWFjdC1kZXZ0b29scy1icmlkZ2VcIilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IHMgPSBudWxsO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcyA9IGRyKEpTT04ucGFyc2UoaS5kYXRhKSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlRXZlbnQocykpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgZWxlbWVudElkOiBsLCBwYXlsb2FkOiB1IH0gPSBzLCBkID0gdS50eXBlO1xuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgIGNhc2UgXCJMQVlPVVRcIjpcbiAgICAgICAgICB0aGlzLmludGVybmFsQ2FsbGJhY2tzLnNldEZvcm1IZWlnaHQodS5oZWlnaHQgPyBgJHt1LmhlaWdodH1weGAgOiBcIjEwMCVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJGT0NVU1wiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25Gb2N1cyhsLCB1LmVsZW1lbnRUeXBlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkJMVVJcIjpcbiAgICAgICAgICB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQmx1cihsLCB1LmVsZW1lbnRUeXBlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkNIQU5HRVwiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25DaGFuZ2UobCwgdS5lbGVtZW50VHlwZSwgdS5lcnJvcnMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTE9BREVEXCI6XG4gICAgICAgICAgdGhpcy5ldmVudFRhcmdldHNbbF0gPSBpLnNvdXJjZSwgdGhpcy5pbnRlcm5hbENhbGxiYWNrcy5vbkNkZUxvYWRlZCh1KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkxPQURfRVJST1JcIjpcbiAgICAgICAgICB0aGlzLmludGVybmFsQ2FsbGJhY2tzLm9uQ2RlTG9hZEVycm9yKHUubWVzc2FnZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJWQUxJREFUSU9OX0VSUk9SXCI6XG4gICAgICAgICAgdGhpcy5mb3JtQ2FsbGJhY2tzLmdldC5vblZhbGlkYXRpb25FcnJvcih1LmVsZW1lbnRUeXBlLCB1LmVycm9ycywgbCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW2Zvcm1dIFVuaGFuZGxlZCBldmVudCB0eXBlOlwiLCBkKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLnZhbGlkYXRlRXZlbnQgPSAoaSkgPT4gaS5mb3JtSWQgIT09IHRoaXMuZm9ybUlkIHx8ICFpLmVsZW1lbnRJZCA/IChjb25zb2xlLmxvZyhcIltPSlNdIGZvcm1JZFwiLCB0aGlzLmZvcm1JZCwgaS5mb3JtSWQpLCBjb25zb2xlLndhcm4oXCJbZm9ybV0gSWdub3JpbmcgdW5rbm93biBldmVudDpcIiwgaSksICExKSA6IHRoaXMubm9uY2VzLmhhcyhpLm5vbmNlKSA/IChjb25zb2xlLndhcm4oXCJbZm9ybV0gSWdub3JpbmcgZHVwbGljYXRlIGV2ZW50OlwiLCBpKSwgITEpIDogKHRoaXMubm9uY2VzLmFkZChpLm5vbmNlKSwgITApLCB0aGlzLmV2ZW50VGFyZ2V0cyA9IHt9LCB0aGlzLm5vbmNlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksIHRoaXMuZm9ybUlkID0gbiwgdGhpcy5iYXNlVXJsID0gZSwgdGhpcy5mb3JtQ2FsbGJhY2tzID0gciwgdGhpcy5pbnRlcm5hbENhbGxiYWNrcyA9IGE7XG4gIH1cbn1cbmNvbnN0IEN0ID0gKHQpID0+IG5ldyBVUkwodCkub3JpZ2luO1xuYXN5bmMgZnVuY3Rpb24gZGkodCwgbikge1xuICBjb25zdCByID0gYXdhaXQgY29ubmVjdFRvQ2hpbGQoe1xuICAgIGlmcmFtZTogdCxcbiAgICBkZWJ1ZzogITEsXG4gICAgY2hpbGRPcmlnaW46IG5cbiAgfSkucHJvbWlzZSwgYSA9IGF3YWl0IHByKHIpO1xuICBpZiAoIW1yKHIsIGEpKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkdvdCBpbnZhbGlkIENERSBjb25uZWN0aW9uIG9iamVjdFwiKTtcbiAgcmV0dXJuIHI7XG59XG5jbGFzcyBwaSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICB9XG4gIGFkZENvbm5lY3Rpb24obiwgZSkge1xuICAgIHRoaXMuY29ubmVjdGlvbnMuc2V0KG4sIGUpO1xuICB9XG4gIGdldENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3QgbiA9IHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgIGlmICghbilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbm5lY3Rpb24gbm90IGZvdW5kXCIpO1xuICAgIHJldHVybiBuO1xuICB9XG4gIGdldEFsbENvbm5lY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zO1xuICB9XG59XG5jb25zdCBtaSA9ICh0LCBuLCBlKSA9PiB7XG4gIGNvbnN0IHsgc3RyaXBlUFI6IHIgfSA9IHQ7XG4gIHIucHVibGlzaGVyLnN1YnNjcmliZSgoYSkgPT4ge1xuICAgIGlmIChhLmlzU3VjY2Vzcykge1xuICAgICAgY29uc3QgaSA9IGEubG9hZGVkVmFsdWUsIHMgPSBpLmlzQXZhaWxhYmxlICYmIGkuYXZhaWxhYmxlUHJvdmlkZXJzLmFwcGxlUGF5LCBjID0gaS5pc0F2YWlsYWJsZSAmJiBpLmF2YWlsYWJsZVByb3ZpZGVycy5nb29nbGVQYXksIGwgPSB7XG4gICAgICAgIGFwcGxlX3BheToge1xuICAgICAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICAgICAgaXNBdmFpbGFibGU6IHMsXG4gICAgICAgICAgc3RhcnRGbG93OiBhc3luYyAodSkgPT4ge1xuICAgICAgICAgICAgcyAmJiBQdChcImFwcGxlX3BheVwiLCBpLCBuLCBlLCB1KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdvb2dsZV9wYXk6IHtcbiAgICAgICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgICAgIGlzQXZhaWxhYmxlOiBjLFxuICAgICAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKHUpID0+IHtcbiAgICAgICAgICAgIGMgJiYgUHQoXCJnb29nbGVfcGF5XCIsIGksIG4sIGUsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGUuZ2V0Lm9uUGF5bWVudFJlcXVlc3RMb2FkKGwpO1xuICAgIH1cbiAgfSk7XG59LCBQdCA9ICh0LCBuLCBlLCByLCBhKSA9PiBrLnN0cmlwZVBSLnJ1bih7XG4gIGNvbnRleHQ6IGUsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogYmUoZS5jaGVja291dFBheW1lbnRNZXRob2RzLCB0KSxcbiAgbm9uQ2RlRm9ybUlucHV0czogSihlLmZvcm1EaXYpLFxuICBmb3JtQ2FsbGJhY2tzOiByLFxuICBjdXN0b21QYXJhbXM6IHsgcHJvdmlkZXI6IHQsIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEub3ZlcnJpZGVQYXltZW50UmVxdWVzdCB9LFxuICBpbml0UmVzdWx0OiBuXG59KSwgU3QgPSBcIlRoZSBzZWN1cmUgZm9ybSBmYWlsZWQgdG8gbG9hZCBwcm9wZXJseS4gUGxlYXNlIGNoZWNrIHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbiwgb3IgdHJ5IGFnYWluIGxhdGVyLlwiLCB7IGxvZ19fOiBaLCBlcnJfXzogQiB9ID0gUyhcIm9wLWZvcm1cIiksIFEgPSBjbGFzcyBRIHtcbiAgY29uc3RydWN0b3Iobikge1xuICAgIHRoaXMuY2RlTG9hZEV2ZW50ID0gbmV3IEZlKCksIHRoaXMuYW55Q2RlQ29ubiA9IG5ldyBGZSgpLCB0aGlzLmNvbnRleHQgPSBuZXcgRmUoKSwgdGhpcy5pbml0Rmxvd3MgPSBjaSgpLCB0aGlzLnN0YXJ0Rm9ybUluaXQgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBaKFwiSW5pdGlhbGl6aW5nIE9wZW5QYXkgZm9ybTpcIiksIFooXCLilJwgV2FpdGluZyBmb3IgQ0RFIGxvYWQgZXZlbnQuLi5cIik7XG4gICAgICAgIGNvbnN0IGUgPSBhd2FpdCB0aGlzLmNkZUxvYWRFdmVudC53YWl0Rm9yTG9hZCh7XG4gICAgICAgICAgdGltZW91dFNlYzogMTIwLFxuICAgICAgICAgIHRpbWVvdXRFcnJNc2c6IFN0XG4gICAgICAgIH0pO1xuICAgICAgICBaKFwi4pScIENERSBsb2FkIGV2ZW50IHJlY2VpdmVkXCIpLCBaKFwi4pScIFdhaXRpbmcgZm9yIENERSBjb25uZWN0aW9uLi4uXCIpO1xuICAgICAgICBjb25zdCByID0gYXdhaXQgdGhpcy5hbnlDZGVDb25uLndhaXRGb3JMb2FkKHtcbiAgICAgICAgICB0aW1lb3V0U2VjOiAxMjAsXG4gICAgICAgICAgdGltZW91dEVyck1zZzogU3RcbiAgICAgICAgfSk7XG4gICAgICAgIFooXCLilJwgQ0RFIGNvbm5lY3Rpb24gcmVjZWl2ZWRcIiksIFooXCLilJwgQ3JlYXRpbmcgT0pTIGNvbnRleHQsIHNldHRpbmcgdXAgaGFuZGxlcnMuLi5cIik7XG4gICAgICAgIGNvbnN0IGEgPSBRLmJ1aWxkT2pzRmxvd0NvbnRleHQoXG4gICAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICAgICAgZSxcbiAgICAgICAgICByLFxuICAgICAgICAgIHRoaXMuZ2V0Rm9ybURpdigpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY29udGV4dC5zZXQoYSksIG1pKHRoaXMuaW5pdEZsb3dzLCBhLCB0aGlzLmZvcm1DYWxsYmFja3MpLCBaKFwi4pScIFN0YXJ0aW5nIE9KUyBpbml0IGZsb3dzLi4uXCIpLCBhd2FpdCBzaSh0aGlzLmluaXRGbG93cywgYSwgdGhpcy5mb3JtQ2FsbGJhY2tzKSwgdGhpcy5mb3JtQ2FsbGJhY2tzLmdldC5vbkxvYWQoZS50b3RhbEFtb3VudEF0b21zLCBlLmN1cnJlbmN5KSwgWihcIuKVsCBEb25lIGluaXRpYWxpemluZyBPSlMgZmxvd3MuXCIpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCByID0gSChlKTtcbiAgICAgICAgQihcIuKVsCBFcnJvciBpbml0aWFsaXppbmcgT1AgZm9ybTpcIiwgciksIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25Mb2FkRXJyb3Iocik7XG4gICAgICB9XG4gICAgfSwgdGhpcy5zZXRGb3JtSGVpZ2h0ID0gKGUpID0+IHtcbiAgICAgIHRoaXMuZm9ybVByb3BlcnRpZXMuaGVpZ2h0ID0gZSwgdGhpcy5yZWdpc3RlcmVkRWxlbWVudHMgJiYgT2JqZWN0LnZhbHVlcyh0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cykuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICByICYmIChyLm5vZGUuc3R5bGUuaGVpZ2h0ID0gZSk7XG4gICAgICB9KTtcbiAgICB9LCB0aGlzLm9uQ2RlTG9hZGVkID0gKGUpID0+IHtcbiAgICAgIHRoaXMuY2RlTG9hZEV2ZW50LmN1cnJlbnQuaXNTdWNjZXNzIHx8IHRoaXMuY2RlTG9hZEV2ZW50LnNldChlKTtcbiAgICB9LCB0aGlzLm9uQ2RlTG9hZEVycm9yID0gKGUpID0+IHtcbiAgICAgIHRoaXMuY2RlTG9hZEV2ZW50LmN1cnJlbnQuaXNTdWNjZXNzIHx8IHRoaXMuY2RlTG9hZEV2ZW50LnRocm93KG5ldyBFcnJvcihlKSwgZSk7XG4gICAgfSwgdGhpcy5jcmVhdGVFbGVtZW50ID0gKGUsIHIgPSB7fSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmNvbmZpZykgdGhyb3cgbmV3IEVycm9yKFwiT3BlblBheSBmb3JtIG5vdCBpbml0aWFsaXplZFwiKTtcbiAgICAgIGNvbnN0IGEgPSBrbi5wYXJzZShlKSwgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIiksIHMgPSB0aGlzLmJ1aWxkUXVlcnlTdHJpbmcocik7XG4gICAgICBpLm5hbWUgPSBgJHthfS1lbGVtZW50YDtcbiAgICAgIGNvbnN0IGMgPSBuZXcgVVJMKGAvYXBwL3YxLyR7aS5uYW1lfS9gLCB0aGlzLmNvbmZpZy5iYXNlVXJsKTtcbiAgICAgIHJldHVybiBjLnNlYXJjaCA9IHMudG9TdHJpbmcoKSwgaS5zcmMgPSBjLmhyZWYsIGkuc3R5bGUuYm9yZGVyID0gXCJub25lXCIsIGkuc3R5bGUud2lkdGggPSBcIjEwMCVcIiwgdGhpcy5yZWdpc3RlcklmcmFtZShhLCBpKTtcbiAgICB9LCB0aGlzLnJlZ2lzdGVySWZyYW1lID0gKGUsIHIpID0+IHtcbiAgICAgIGNvbnN0IGEgPSB7XG4gICAgICAgIHR5cGU6IGUsXG4gICAgICAgIG5vZGU6IHIsXG4gICAgICAgIG1vdW50OiAoaSkgPT4ge1xuICAgICAgICAgIHZhciBzO1xuICAgICAgICAgIHJldHVybiAocyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoaSkpID09IG51bGwgPyB2b2lkIDAgOiBzLmFwcGVuZENoaWxkKHIpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdFRvRWxlbWVudCh7IHR5cGU6IGEudHlwZSwgbm9kZTogYS5ub2RlIH0pLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyB8fCAodGhpcy5yZWdpc3RlcmVkRWxlbWVudHMgPSB7XG4gICAgICAgIFtkZS5DQVJEXTogdm9pZCAwLFxuICAgICAgICBbZGUuQ0FSRF9OVU1CRVJdOiB2b2lkIDAsXG4gICAgICAgIFtkZS5DQVJEX0VYUElSWV06IHZvaWQgMCxcbiAgICAgICAgW2RlLkNBUkRfQ1ZDXTogdm9pZCAwXG4gICAgICB9KSwgdGhpcy5yZWdpc3RlcmVkRWxlbWVudHNbZV0gPSBhLCBhO1xuICAgIH0sIHRoaXMuYnVpbGRRdWVyeVN0cmluZyA9IChlKSA9PiB7XG4gICAgICBjb25zdCByID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgcmV0dXJuIHIuYXBwZW5kKFwicmVmZXJlclwiLCB0aGlzLnJlZmVycmVyKSwgci5hcHBlbmQoXCJmb3JtSWRcIiwgdGhpcy5mb3JtSWQpLCBlLnN0eWxlcyAmJiByLmFwcGVuZChcInN0eWxlc1wiLCB1cihlLnN0eWxlcykpLCByLmFwcGVuZChcInNlY3VyZVRva2VuXCIsIHRoaXMuY29uZmlnLmNoZWNrb3V0U2VjdXJlVG9rZW4pLCByO1xuICAgIH0sIHRoaXMuY29ubmVjdFRvRWxlbWVudCA9IChlKSA9PiB7XG4gICAgICBkaShlLm5vZGUpLnRoZW4oKHIpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uTWFuYWdlci5hZGRDb25uZWN0aW9uKGUudHlwZSwgciksIHRoaXMuYW55Q2RlQ29ubi5jdXJyZW50LmlzU3VjY2VzcyB8fCB0aGlzLmFueUNkZUNvbm4uc2V0KHIpO1xuICAgICAgfSkuY2F0Y2goKHIpID0+IEIoXCJbRk9STV0gRXJyb3IgY29ubmVjdGluZyB0byBDREUgaWZyYW1lXCIsIHIpKTtcbiAgICB9LCB0aGlzLmdldEZvcm1EaXYgPSAoKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZm9ybVRhcmdldCkgPz8gZG9jdW1lbnQuYm9keSwgdGhpcy5zdWJtaXRDYXJkID0gKCkgPT4ge1xuICAgICAgY29uc3QgZSA9IHRoaXMuY29udGV4dC5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICAgIGlmICghZSkge1xuICAgICAgICBCKFwiUGxlYXNlIHdhaXQgZm9yIHRoZSBmb3JtIHRvIGZpbmlzaCBsb2FkaW5nIGJlZm9yZSBzdWJtaXR0aW5nLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgay5jb21tb25DQy5ydW4oe1xuICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IGJlKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgXCJjcmVkaXRfY2FyZFwiKSxcbiAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogSihlLmZvcm1EaXYpLFxuICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0aGlzLmZvcm1DYWxsYmFja3MsXG4gICAgICAgIGN1c3RvbVBhcmFtczoge1xuICAgICAgICAgIGN1cnJlbnRDZGVDb25uZWN0aW9uczogdGhpcy5jb25uZWN0aW9uTWFuYWdlci5nZXRBbGxDb25uZWN0aW9ucygpXG4gICAgICAgIH0sXG4gICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICAvLyBUaGlzIGZsb3cgcmVxdWlyZXMgbm8gaW5pdGlhbGl6YXRpb25cbiAgICAgIH0pO1xuICAgIH0sIHRoaXMuZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY29udGV4dC5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKSkge1xuICAgICAgICBCKFwiUGxlYXNlIHdhaXQgZm9yIHRoZSBmb3JtIHRvIGZpbmlzaCBsb2FkaW5nIGJlZm9yZSBnZXR0aW5nIGF2YWlsYWJsZSBwYXltZW50IG1ldGhvZHMuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCByID0ge1xuICAgICAgICBhaXJ3YWxsZXhHb29nbGVQYXk6IHguYWlyd2FsbGV4R29vZ2xlUGF5LFxuICAgICAgICBhaXJ3YWxsZXhBcHBsZVBheTogeC5haXJ3YWxsZXhBcHBsZVBheSxcbiAgICAgICAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiB4LmF1dGhvcml6ZW5ldEdvb2dsZVBheSxcbiAgICAgICAgYXV0aG9yaXplTmV0QXBwbGVQYXk6IHguYXV0aG9yaXplbmV0QXBwbGVQYXlcbiAgICAgIH07XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5pbml0Rmxvd3MpLm1hcCgoW2EsIGldKSA9PiAoe1xuICAgICAgICBuYW1lOiByW2FdID8/IGEsXG4gICAgICAgIC4uLmkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpXG4gICAgICB9KSk7XG4gICAgfSwgdGhpcy5nZW5lcmFsU3VibWl0ID0gKGUsIHIpID0+IHtcbiAgICAgIGNvbnN0IGEgPSB0aGlzLmNvbnRleHQuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICBpZiAoIWEpIHtcbiAgICAgICAgQihcIlBsZWFzZSB3YWl0IGZvciB0aGUgZm9ybSB0byBmaW5pc2ggbG9hZGluZyBiZWZvcmUgc3VibWl0dGluZy5cIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoZSkge1xuICAgICAgICBjYXNlIHgucG9ja3l0UGF5cGFsOlxuICAgICAgICAgIHJldHVybiBrLnBvY2t5dFBheXBhbC5ydW4oe1xuICAgICAgICAgICAgY29udGV4dDogYSxcbiAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogYmUoYS5jaGVja291dFBheW1lbnRNZXRob2RzLCBcInBheXBhbFwiLCBcInBvY2t5dFwiKSxcbiAgICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IEooYS5mb3JtRGl2KSxcbiAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgICAgIGN1c3RvbVBhcmFtczogeyBzZXR0aW5nczogciB9LFxuICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgeC5haXJ3YWxsZXhHb29nbGVQYXk6IHtcbiAgICAgICAgICBjb25zdCBpID0gdGhpcy5pbml0Rmxvd3MuYWlyd2FsbGV4R29vZ2xlUGF5LnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICAgICAgICBpZiAoIWkpIHtcbiAgICAgICAgICAgIEIoXG4gICAgICAgICAgICAgIFwiYWlyd2FsbGV4LWdvb2dsZS1wYXkgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgdXNpbmcgJ2dldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzKCknXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpLnN0YXJ0RmxvdyhyKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIHguYWlyd2FsbGV4QXBwbGVQYXk6IHtcbiAgICAgICAgICBjb25zdCBpID0gdGhpcy5pbml0Rmxvd3MuYWlyd2FsbGV4QXBwbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgIGlmICghaSkge1xuICAgICAgICAgICAgQihcbiAgICAgICAgICAgICAgXCJhaXJ3YWxsZXgtYXBwbGUtcGF5IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IHVzaW5nICdnZXRBdmFpbGFibGVQYXltZW50TWV0aG9kcygpJ1wiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaS5zdGFydEZsb3cocik7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSB4LmF1dGhvcml6ZW5ldEdvb2dsZVBheToge1xuICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLmluaXRGbG93cy5hdXRob3JpemVOZXRHb29nbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgIGlmICghaSkge1xuICAgICAgICAgICAgQihcbiAgICAgICAgICAgICAgXCJhdXRob3JpemUtbmV0LWdvb2dsZS1wYXkgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgdXNpbmcgJ2dldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzKCknXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBpLnN0YXJ0RmxvdyhyKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIHguYXV0aG9yaXplbmV0QXBwbGVQYXk6IHtcbiAgICAgICAgICBjb25zdCBpID0gdGhpcy5pbml0Rmxvd3MuYXV0aG9yaXplTmV0QXBwbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgIGlmICghaSkge1xuICAgICAgICAgICAgQihcbiAgICAgICAgICAgICAgXCJhdXRob3JpemUtbmV0LWFwcGxlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGkuc3RhcnRGbG93KHIpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgeC5sb29wQ3J5cHRvOiB7XG4gICAgICAgICAgY29uc3QgaSA9IHRoaXMuaW5pdEZsb3dzLmxvb3AucHVibGlzaGVyLmN1cnJlbnQ7XG4gICAgICAgICAgaWYgKCFpLmlzU3VjY2VzcylcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwiTG9vcCBoYXMgbm90IHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZC4gQ2Fubm90IHN1Ym1pdC5cIik7XG4gICAgICAgICAgcmV0dXJuIGsubG9vcENyeXB0by5ydW4oe1xuICAgICAgICAgICAgY29udGV4dDogYSxcbiAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogYmUoYS5jaGVja291dFBheW1lbnRNZXRob2RzLCBcImNyeXB0b1wiLCBcImxvb3BcIiksXG4gICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBKKGEuZm9ybURpdiksXG4gICAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0aGlzLmZvcm1DYWxsYmFja3MsXG4gICAgICAgICAgICAvLyBBSSBnZW5lcmF0ZWQgc3R1ZmYgYmVsb3cgdG8gZ2V0IHRoZSB0eXBpbmcgcmlnaHQuXG4gICAgICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoZSBlbWFpbCwgZmlyc3ROYW1lIGFuZCBsYXN0TmFtZSBmaWVsZHMgdG8gYG5vbkNkZUZvcm1JbnB1dHNgXG4gICAgICAgICAgICBjdXN0b21QYXJhbXM6IHIgJiYgXCJzdWNjZXNzXCIgaW4gciAmJiByLnN1Y2Nlc3MgPyB7XG4gICAgICAgICAgICAgIGN1c3RvbWVyOiByLmN1c3RvbWVyLFxuICAgICAgICAgICAgICBwYXlpbjogci5wYXlpbixcbiAgICAgICAgICAgICAgZW1haWw6IHIuZW1haWwsXG4gICAgICAgICAgICAgIGZpcnN0TmFtZTogci5maXJzdE5hbWUsXG4gICAgICAgICAgICAgIGxhc3ROYW1lOiByLmxhc3ROYW1lLFxuICAgICAgICAgICAgICBzdWNjZXNzOiAhMFxuICAgICAgICAgICAgfSA6IHtcbiAgICAgICAgICAgICAgZGV0YWlsOiByLmRldGFpbCxcbiAgICAgICAgICAgICAgZW1haWw6IHIuZW1haWwsXG4gICAgICAgICAgICAgIGZpcnN0TmFtZTogci5maXJzdE5hbWUsXG4gICAgICAgICAgICAgIGxhc3ROYW1lOiByLmxhc3ROYW1lLFxuICAgICAgICAgICAgICBzdWNjZXNzOiAhMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGluaXRSZXN1bHQ6IGkubG9hZGVkVmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIFVlKGUpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuc3VibWl0ID0gdGhpcy5zdWJtaXRDYXJkLCB0aGlzLmRlc3Ryb3kgPSAoKSA9PiB7XG4gICAgICBaKFwiRGVzdHJveWluZyBPcGVuUGF5IGZvcm0uLi5cIik7XG4gICAgICBmb3IgKGNvbnN0IGUgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyA/PyB7fSkpXG4gICAgICAgIGUgJiYgZS5ub2RlLnJlbW92ZSgpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMuZXZlbnRIYW5kbGVyLmhhbmRsZU1lc3NhZ2UuYmluZCh0aGlzLmV2ZW50SGFuZGxlcikpLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyA9IG51bGwsIGRlbGV0ZSB3aW5kb3cub2pzO1xuICAgIH0sIHRoaXMudXBkYXRlQ2FsbGJhY2tzID0gKGUpID0+IHtcbiAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5zZXRDYWxsYmFja3MoZSk7XG4gICAgfSwgUS5hc3NpZ25Bc1NpbmdsZXRvbih0aGlzKSwgdGhpcy5vanNWZXJzaW9uID0gXCIwLjIuMTZcIiwgdGhpcy5vanNSZWxlYXNlVmVyc2lvbiA9IFwibG9jYWxfYnVpbGRcIiwgdGhpcy5iYXNlVXJsID0gbi5iYXNlVXJsID8/IFwiaHR0cHM6Ly9jZGUuZ2V0b3BlbnBheS5jb21cIiwgdGhpcy5jb25maWcgPSB7IC4uLm4sIGJhc2VVcmw6IHRoaXMuYmFzZVVybCB9LCB0aGlzLmZvcm1DYWxsYmFja3MgPSBRZS5mcm9tT2JqZWN0KG4pLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyA9IG51bGwsIHRoaXMuZm9ybUlkID0gYG9wanMtZm9ybS0ke3Y0KCl9YCwgdGhpcy5yZWZlcnJlciA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sIHRoaXMuZm9ybVRhcmdldCA9IG4uZm9ybVRhcmdldCA/PyBcImJvZHlcIiwgdGhpcy5mb3JtUHJvcGVydGllcyA9IHsgaGVpZ2h0OiBcIjFweFwiIH0sIHRoaXMuY29ubmVjdGlvbk1hbmFnZXIgPSBuZXcgcGkoKSwgdGhpcy5ldmVudEhhbmRsZXIgPSBuZXcgdWkodGhpcy5mb3JtSWQsIHRoaXMuYmFzZVVybCwgdGhpcy5mb3JtQ2FsbGJhY2tzLCB7XG4gICAgICBzZXRGb3JtSGVpZ2h0OiB0aGlzLnNldEZvcm1IZWlnaHQsXG4gICAgICBvbkNkZUxvYWRlZDogdGhpcy5vbkNkZUxvYWRlZCxcbiAgICAgIG9uQ2RlTG9hZEVycm9yOiB0aGlzLm9uQ2RlTG9hZEVycm9yXG4gICAgfSksIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmV2ZW50SGFuZGxlci5oYW5kbGVNZXNzYWdlLmJpbmQodGhpcy5ldmVudEhhbmRsZXIpKSwgdGhpcy5zdGFydEZvcm1Jbml0KCk7XG4gIH1cbiAgZ2V0IGNoZWNrb3V0U2VjdXJlVG9rZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNoZWNrb3V0U2VjdXJlVG9rZW47XG4gIH1cbn07XG5RLm9qc0Zsb3dzID0gaywgUS5hc3NpZ25Bc1NpbmdsZXRvbiA9IChuKSA9PiB7XG4gIGlmIChRLmdldEluc3RhbmNlKCkpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiT3BlblBheSBpbnN0YW5jZSBhbHJlYWR5IGV4aXN0cy4gT25seSBvbmUgaW5zdGFuY2UgaXMgYWxsb3dlZC5cIik7XG4gIHdpbmRvdy5vanMgPSBuO1xufSwgUS5nZXRJbnN0YW5jZSA9ICgpID0+IHdpbmRvdy5vanMgPz8gbnVsbCwgUS5idWlsZE9qc0Zsb3dDb250ZXh0ID0gKG4sIGUsIHIsIGEpID0+ICh7XG4gIGNoZWNrb3V0U2VjdXJlVG9rZW46IG4uY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgYmFzZVVybDogbmV3IFVSTChuLmJhc2VVcmwgPz8gZXQpLm9yaWdpbixcbiAgZm9ybURpdjogYSxcbiAgZWxlbWVudHNTZXNzaW9uSWQ6IGUuc2Vzc2lvbklkLFxuICBjaGVja291dFBheW1lbnRNZXRob2RzOiBlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsXG4gIGFueUNkZUNvbm5lY3Rpb246IHIsXG4gIGN1c3RvbUluaXRQYXJhbXM6IG4uY3VzdG9tSW5pdFBhcmFtcyA/PyB7fVxufSk7XG5sZXQgQXQgPSBRO1xuXG5jb25zdCBQeWRhbnRpY1ZhbGlkYXRpb25FcnJvciQxID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgbG9jOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgbXNnOiB6JDEuc3RyaW5nKCksXG4gIHVybDogeiQxLnN0cmluZygpXG59KTtcbnokMS5hcnJheShQeWRhbnRpY1ZhbGlkYXRpb25FcnJvciQxKTtcbmNvbnN0IFpvZEZpZWxkRXJyb3IgPSB6JDEub2JqZWN0KHtcbiAgY29kZTogeiQxLnN0cmluZygpLFxuICBtZXNzYWdlOiB6JDEuc3RyaW5nKCksXG4gIHBhdGg6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5hcnJheShab2RGaWVsZEVycm9yKTtcbmNvbnN0IG1ha2VDYWxsYmFja1NhZmUgPSAoY2FsbGJhY2tOYW1lLCBmbiwgZXJyb3JMb2dnZXIpID0+IHtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmbiguLi5hcmdzKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZXJyb3JMb2dnZXIoYFtmb3JtXSBFcnJvciBydW5uaW5nIGNhbGxiYWNrICgke2NhbGxiYWNrTmFtZX0pOmAsIGVycm9yKTtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICB9O1xufTtcblxudmFyIFN1Ym1pdE1ldGhvZHMgPSAvKiBAX19QVVJFX18gKi8gKChTdWJtaXRNZXRob2RzMikgPT4ge1xuICBTdWJtaXRNZXRob2RzMltcInBvY2t5dFBheXBhbFwiXSA9IFwicG9ja3l0LXBheXBhbFwiO1xuICBTdWJtaXRNZXRob2RzMltcImFpcndhbGxleEdvb2dsZVBheVwiXSA9IFwiYWlyd2FsbGV4LWdvb2dsZS1wYXlcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhaXJ3YWxsZXhBcHBsZVBheVwiXSA9IFwiYWlyd2FsbGV4LWFwcGxlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImF1dGhvcml6ZW5ldEdvb2dsZVBheVwiXSA9IFwiYXV0aG9yaXplbmV0LWdvb2dsZS1wYXlcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhdXRob3JpemVuZXRBcHBsZVBheVwiXSA9IFwiYXV0aG9yaXplbmV0LWFwcGxlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImxvb3BDcnlwdG9cIl0gPSBcImxvb3AtY3J5cHRvXCI7XG4gIHJldHVybiBTdWJtaXRNZXRob2RzMjtcbn0pKFN1Ym1pdE1ldGhvZHMgfHwge30pO1xueiQxLm5hdGl2ZUVudW0oU3VibWl0TWV0aG9kcyk7XG5cbmNvbnN0IFJlcXVpcmVkU3RyaW5nID0geiQxLnN0cmluZygpLnRyaW0oKS5taW4oMSwgeyBtZXNzYWdlOiBgQ2Fubm90IGJlIGJsYW5rYCB9KTtcbmNvbnN0IE9wdGlvbmFsU3RyaW5nID0geiQxLnN0cmluZygpLnRyaW0oKS5vcHRpb25hbCgpO1xuY29uc3QgbnVsbE9yVW5kZWZPciQxID0gKHpUeXBlKSA9PiB6JDEubnVsbGFibGUoelR5cGUub3B0aW9uYWwoKSk7XG52YXIgRmllbGROYW1lID0gLyogQF9fUFVSRV9fICovICgoRmllbGROYW1lMikgPT4ge1xuICBGaWVsZE5hbWUyW1wiRklSU1RfTkFNRVwiXSA9IFwiZmlyc3ROYW1lXCI7XG4gIEZpZWxkTmFtZTJbXCJMQVNUX05BTUVcIl0gPSBcImxhc3ROYW1lXCI7XG4gIEZpZWxkTmFtZTJbXCJFTUFJTFwiXSA9IFwiZW1haWxcIjtcbiAgRmllbGROYW1lMltcIlpJUF9DT0RFXCJdID0gXCJ6aXBDb2RlXCI7XG4gIEZpZWxkTmFtZTJbXCJDSVRZXCJdID0gXCJjaXR5XCI7XG4gIEZpZWxkTmFtZTJbXCJTVEFURVwiXSA9IFwic3RhdGVcIjtcbiAgRmllbGROYW1lMltcIkNPVU5UUllcIl0gPSBcImNvdW50cnlcIjtcbiAgRmllbGROYW1lMltcIkFERFJFU1NcIl0gPSBcImFkZHJlc3NcIjtcbiAgRmllbGROYW1lMltcIlBIT05FXCJdID0gXCJwaG9uZVwiO1xuICBGaWVsZE5hbWUyW1wiUFJPTU9USU9OX0NPREVcIl0gPSBcInByb21vdGlvbkNvZGVcIjtcbiAgcmV0dXJuIEZpZWxkTmFtZTI7XG59KShGaWVsZE5hbWUgfHwge30pO1xuY29uc3QgRmllbGROYW1lRW51bSA9IHokMS5uYXRpdmVFbnVtKEZpZWxkTmFtZSk7XG52YXIgUHJpdmF0ZUZpZWxkTmFtZSA9IC8qIEBfX1BVUkVfXyAqLyAoKFByaXZhdGVGaWVsZE5hbWUyKSA9PiB7XG4gIFByaXZhdGVGaWVsZE5hbWUyW1wiQ0FSRF9OVU1CRVJcIl0gPSBcImNhcmROdW1iZXJcIjtcbiAgUHJpdmF0ZUZpZWxkTmFtZTJbXCJDQVJEX0VYUElSWVwiXSA9IFwiY2FyZEV4cGlyeVwiO1xuICBQcml2YXRlRmllbGROYW1lMltcIkNBUkRfQ1ZDXCJdID0gXCJjYXJkQ3ZjXCI7XG4gIHJldHVybiBQcml2YXRlRmllbGROYW1lMjtcbn0pKFByaXZhdGVGaWVsZE5hbWUgfHwge30pO1xuY29uc3QgUHJpdmF0ZUZpZWxkTmFtZUVudW0gPSB6JDEubmF0aXZlRW51bShQcml2YXRlRmllbGROYW1lKTtcbmNvbnN0IEFsbEZpZWxkTmFtZXMgPSB6JDEudW5pb24oW0ZpZWxkTmFtZUVudW0sIFByaXZhdGVGaWVsZE5hbWVFbnVtXSk7XG52YXIgRWxlbWVudFR5cGVFbnVtID0gLyogQF9fUFVSRV9fICovICgoRWxlbWVudFR5cGVFbnVtMikgPT4ge1xuICBFbGVtZW50VHlwZUVudW0yW1wiQ0FSRFwiXSA9IFwiY2FyZFwiO1xuICBFbGVtZW50VHlwZUVudW0yW1wiQ0FSRF9OVU1CRVJcIl0gPSBcImNhcmQtbnVtYmVyXCI7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEX0VYUElSWVwiXSA9IFwiY2FyZC1leHBpcnlcIjtcbiAgRWxlbWVudFR5cGVFbnVtMltcIkNBUkRfQ1ZDXCJdID0gXCJjYXJkLWN2Y1wiO1xuICByZXR1cm4gRWxlbWVudFR5cGVFbnVtMjtcbn0pKEVsZW1lbnRUeXBlRW51bSB8fCB7fSk7XG56JDEubmF0aXZlRW51bShFbGVtZW50VHlwZUVudW0pO1xuY29uc3QgQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgcHJvY2Vzc29yX25hbWU6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBtZXRhZGF0YTogbnVsbE9yVW5kZWZPciQxKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBQYXltZW50TWV0aG9kTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBjYXJkTnVtYmVyOiBPcHRpb25hbFN0cmluZyxcbiAgZXhwaXJ5OiBPcHRpb25hbFN0cmluZyxcbiAgY3ZjOiBPcHRpb25hbFN0cmluZ1xufSk7XG56JDEub2JqZWN0KHtcbiAgYmFja2dyb3VuZENvbG9yOiBPcHRpb25hbFN0cmluZyxcbiAgY29sb3I6IE9wdGlvbmFsU3RyaW5nLFxuICBmb250RmFtaWx5OiBPcHRpb25hbFN0cmluZyxcbiAgZm9udFNpemU6IE9wdGlvbmFsU3RyaW5nLFxuICBmb250V2VpZ2h0OiBPcHRpb25hbFN0cmluZyxcbiAgbWFyZ2luOiBPcHRpb25hbFN0cmluZyxcbiAgcGFkZGluZzogT3B0aW9uYWxTdHJpbmcsXG4gIGxldHRlclNwYWNpbmc6IE9wdGlvbmFsU3RyaW5nLFxuICBsaW5lSGVpZ2h0OiBPcHRpb25hbFN0cmluZyxcbiAgaGlkZUljb246IE9wdGlvbmFsU3RyaW5nXG59KTtcbmNvbnN0IEV2ZW50VHlwZSA9IHokMS5lbnVtKFtcbiAgLy8gRWxlbWVudCAtPiBGb3JtXG4gIFwiTEFZT1VUXCIsXG4gIFwiTE9BREVEXCIsXG4gIFwiQkxVUlwiLFxuICBcIkZPQ1VTXCIsXG4gIFwiQ0hBTkdFXCIsXG4gIFwiVE9LRU5JWkVfU1RBUlRFRFwiLFxuICBcIkNIRUNLT1VUX1NUQVJURURcIixcbiAgXCJQQVlNRU5UX0ZMT1dfU1RBUlRFRFwiLFxuICBcIlRPS0VOSVpFX1NVQ0NFU1NcIixcbiAgXCJDSEVDS09VVF9TVUNDRVNTXCIsXG4gIFwiTE9BRF9FUlJPUlwiLFxuICBcIlZBTElEQVRJT05fRVJST1JcIixcbiAgXCJUT0tFTklaRV9FUlJPUlwiLFxuICBcIkNIRUNLT1VUX0VSUk9SXCIsXG4gIFwiU0VUVVBfUEFZTUVOVF9NRVRIT0RfU1VDQ0VTU1wiLFxuICAvLyBGb3JtIC0+IEVsZW1lbnRcbiAgXCJUT0tFTklaRVwiLFxuICBcIkNIRUNLT1VUXCIsXG4gIFwiU1RBUlRfUEFZTUVOVF9GTE9XXCJcbl0pO1xuY29uc3QgR2VuZXJpY0V2ZW50VHlwZSA9IEV2ZW50VHlwZS5leHRyYWN0KFtcIlRPS0VOSVpFX1NUQVJURURcIiwgXCJDSEVDS09VVF9TVEFSVEVEXCJdKTtcbmNvbnN0IEdlbmVyaWNFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHsgdHlwZTogR2VuZXJpY0V2ZW50VHlwZSB9KTtcbmNvbnN0IElucHV0RXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiQkxVUlwiLCBcIkZPQ1VTXCIsIFwiQ0hBTkdFXCJdKTtcbmNvbnN0IElucHV0RXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IElucHV0RXZlbnRUeXBlLFxuICBlbGVtZW50VHlwZTogUHJpdmF0ZUZpZWxkTmFtZUVudW0sXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBFcnJvckV2ZW50VHlwZSA9IEV2ZW50VHlwZS5leHRyYWN0KFtcIkxPQURfRVJST1JcIiwgXCJUT0tFTklaRV9FUlJPUlwiLCBcIkNIRUNLT1VUX0VSUk9SXCJdKTtcbmNvbnN0IEVycm9yRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IEVycm9yRXZlbnRUeXBlLFxuICBtZXNzYWdlOiBSZXF1aXJlZFN0cmluZyxcbiAgaGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUgPSBFdmVudFR5cGUuZXh0cmFjdChbXCJWQUxJREFUSU9OX0VSUk9SXCJdKTtcbmNvbnN0IFZhbGlkYXRpb25FcnJvckV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUsXG4gIGVsZW1lbnRUeXBlOiBBbGxGaWVsZE5hbWVzLFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbmNvbnN0IExheW91dEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5MQVlPVVQpLFxuICBoZWlnaHQ6IFJlcXVpcmVkU3RyaW5nXG59KTtcbmNvbnN0IExvYWRlZEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5MT0FERUQpLFxuICBzZXNzaW9uSWQ6IFJlcXVpcmVkU3RyaW5nLFxuICB0b3RhbEFtb3VudEF0b21zOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiBPcHRpb25hbFN0cmluZyxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kczogeiQxLmFycmF5KENoZWNrb3V0UGF5bWVudE1ldGhvZCQxKVxufSk7XG5jb25zdCBQYXltZW50Rmxvd1N0YXJ0ZWRFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uUEFZTUVOVF9GTE9XX1NUQVJURUQpLFxuICBuZXh0QWN0aW9uTWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBwYXltZW50Rmxvd01ldGFkYXRhOiB6JDEuYW55KCkub3B0aW9uYWwoKSxcbiAgc3RhcnRQRk1ldGFkYXRhOiB6JDEub3B0aW9uYWwoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbmNvbnN0IFNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLlNFVFVQX1BBWU1FTlRfTUVUSE9EX1NVQ0NFU1MpLFxuICBwYXltZW50TWV0aG9kSWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBSZXF1aXJlZEZvcm1GaWVsZHMgPSB6JDEub2JqZWN0KHtcbiAgW1wiZmlyc3ROYW1lXCIgLyogRklSU1RfTkFNRSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJsYXN0TmFtZVwiIC8qIExBU1RfTkFNRSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJlbWFpbFwiIC8qIEVNQUlMICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcInppcENvZGVcIiAvKiBaSVBfQ09ERSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJjb3VudHJ5XCIgLyogQ09VTlRSWSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJwcm9tb3Rpb25Db2RlXCIgLyogUFJPTU9USU9OX0NPREUgKi9dOiBPcHRpb25hbFN0cmluZ1xufSk7XG5jb25zdCBQUkZvcm1GaWVsZHMgPSB6JDEub2JqZWN0KHtcbiAgW1wiZmlyc3ROYW1lXCIgLyogRklSU1RfTkFNRSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJsYXN0TmFtZVwiIC8qIExBU1RfTkFNRSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJlbWFpbFwiIC8qIEVNQUlMICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcInppcENvZGVcIiAvKiBaSVBfQ09ERSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJjb3VudHJ5XCIgLyogQ09VTlRSWSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJwcm9tb3Rpb25Db2RlXCIgLyogUFJPTU9USU9OX0NPREUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wiYWRkcmVzc1wiIC8qIEFERFJFU1MgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wiY2l0eVwiIC8qIENJVFkgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wic3RhdGVcIiAvKiBTVEFURSAqL106IE9wdGlvbmFsU3RyaW5nXG59KTtcbmNvbnN0IFN1Ym1pdEV2ZW50VHlwZSA9IEV2ZW50VHlwZS5leHRyYWN0KFtcIlRPS0VOSVpFXCIsIFwiQ0hFQ0tPVVRcIiwgXCJTVEFSVF9QQVlNRU5UX0ZMT1dcIl0pO1xuY29uc3QgU3VibWl0RXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IFN1Ym1pdEV2ZW50VHlwZSxcbiAgc2Vzc2lvbklkOiBSZXF1aXJlZFN0cmluZyxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBDaGVja291dFBheW1lbnRNZXRob2QkMSxcbiAgcGF5bWVudEZsb3dNZXRhZGF0YTogeiQxLmFueSgpLm9wdGlvbmFsKCksXG4gIGRvTm90VXNlTGVnYWN5Q0NGbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGV4aXN0aW5nQ0NQTUlkOiBPcHRpb25hbFN0cmluZ1xufSkuZXh0ZW5kKFJlcXVpcmVkRm9ybUZpZWxkcy5zaGFwZSk7XG5jb25zdCBUb2tlbml6ZVN1Y2Nlc3NFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uVE9LRU5JWkVfU1VDQ0VTUyksXG4gIGlzUmVhZHlGb3JDaGVja291dDogeiQxLmJvb2xlYW4oKVxufSk7XG5jb25zdCBDaGVja291dFN1Y2Nlc3NFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uQ0hFQ0tPVVRfU1VDQ0VTUyksXG4gIGludm9pY2VVcmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uSWRzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJJZDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IEV2ZW50UGF5bG9hZCA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgR2VuZXJpY0V2ZW50UGF5bG9hZCxcbiAgSW5wdXRFdmVudFBheWxvYWQsXG4gIEVycm9yRXZlbnRQYXlsb2FkLFxuICBWYWxpZGF0aW9uRXJyb3JFdmVudFBheWxvYWQsXG4gIExheW91dEV2ZW50UGF5bG9hZCxcbiAgTG9hZGVkRXZlbnRQYXlsb2FkLFxuICBTdWJtaXRFdmVudFBheWxvYWQsXG4gIFRva2VuaXplU3VjY2Vzc0V2ZW50UGF5bG9hZCxcbiAgQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkLFxuICBQYXltZW50Rmxvd1N0YXJ0ZWRFdmVudFBheWxvYWQsXG4gIFNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkXG5dKTtcbnokMS5vYmplY3Qoe1xuICBwYXlsb2FkOiBFdmVudFBheWxvYWQsXG4gIG5vbmNlOiBSZXF1aXJlZFN0cmluZyxcbiAgZm9ybUlkOiBSZXF1aXJlZFN0cmluZyxcbiAgZWxlbWVudElkOiBSZXF1aXJlZFN0cmluZ1xufSk7XG56JDEub2JqZWN0KHtcbiAgYW1vdW50QXRvbTogeiQxLm51bWJlcigpLFxuICAvKipcbiAgICogVGhlIHRocmVlLWxldHRlciBJU08gNDIxNyBjdXJyZW5jeSBjb2RlIGZvciB0aGUgcGF5bWVudC5cbiAgICovXG4gIGN1cnJlbmN5OiBSZXF1aXJlZFN0cmluZ1xufSk7XG56JDEuZW51bShbXCJhcHBsZV9wYXlcIiwgXCJnb29nbGVfcGF5XCJdKTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICB0aGVpcl9wbV9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IG51bGxPclVuZGVmT3IkMSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgQ2hlY2tvdXRTdWNjZXNzUmVzcG9uc2UgPSB6JDEub2JqZWN0KHtcbiAgaW52b2ljZV91cmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uX2lkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgRmllbGRWYWxpZGF0aW9uRXJyb3IgPSB6JDEub2JqZWN0KHtcbiAgZWxlbWVudFR5cGU6IHokMS5zdHJpbmcoKSxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IFRva2VuaXplQ2FyZEVycm9yUmVzcG9uc2UgPSB6JDEub2JqZWN0KHtcbiAgc3VjY2VzczogeiQxLmxpdGVyYWwoZmFsc2UpLFxuICBlcnJvcl90eXBlOiB6JDEubGl0ZXJhbChcInZhbGlkYXRpb25fZXJyb3JcIiksXG4gIGVycm9yczogeiQxLmFycmF5KEZpZWxkVmFsaWRhdGlvbkVycm9yKVxufSk7XG56JDEuZGlzY3JpbWluYXRlZFVuaW9uKFwic3VjY2Vzc1wiLCBbXG4gIHokMS5vYmplY3QoeyBzdWNjZXNzOiB6JDEubGl0ZXJhbCh0cnVlKSB9KSxcbiAgVG9rZW5pemVDYXJkRXJyb3JSZXNwb25zZVxuXSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEsXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFJlcXVpcmVkRm9ybUZpZWxkcyxcbiAgZG9fbm90X3VzZV9sZWdhY3lfY2NfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBleGlzdGluZ19jY19wbV9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEsXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFJlcXVpcmVkRm9ybUZpZWxkcyxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmVudW0oW1wic3VjY2Vzc1wiIC8qIFNVQ0NFU1MgKi8sIFwiZmFpbHVyZVwiIC8qIEZBSUxVUkUgKi8sIFwiY2FuY2VsbGVkXCIgLyogQ0FOQ0VMTEVEICovXSksXG4gIGhyZWY6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGhyZWY6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLm51bGxhYmxlKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgcmVkaXJlY3RfdXJsOiB6JDEuc3RyaW5nKCksXG4gIGluaXRpYWxfaW50ZW50X2lkOiB6JDEuc3RyaW5nKCksXG4gIGNvbnNlbnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgdGhlaXJfcG1faWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IENvbW1vbk5leHRBY3Rpb25NZXRhZGF0YSA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIGluaXRpYWxfaW50ZW50X2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgY29uc2VudF9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIHRoZWlyX3BtX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgcGF5bWVudF9zZXNzaW9uOiBudWxsT3JVbmRlZk9yJDEoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbnokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJwcmVzZW50XCIsIFtcbiAgeiQxLm9iamVjdCh7IHByZXNlbnQ6IHokMS5saXRlcmFsKHRydWUpLCBocmVmOiB6JDEuc3RyaW5nKCkgfSksXG4gIHokMS5vYmplY3QoeyBwcmVzZW50OiB6JDEubGl0ZXJhbChmYWxzZSkgfSlcbl0pO1xueiQxLm9iamVjdCh7XG4gIHBheW1lbnRfbWV0aG9kczogeiQxLmFycmF5KFBheW1lbnRNZXRob2RNaW5pbWFsKSxcbiAgcGF5X2ZpcnN0X3N1Y2Nlc3NfcmVzcG9uc2U6IG51bGxPclVuZGVmT3IkMShDaGVja291dFN1Y2Nlc3NSZXNwb25zZSksXG4gIHJlcXVpcmVkX3VzZXJfYWN0aW9uczogbnVsbE9yVW5kZWZPciQxKHokMS5hcnJheShDb21tb25OZXh0QWN0aW9uTWV0YWRhdGEpKVxufSk7XG5cbnokMS5vYmplY3Qoe1xuICBzdHJpcGVfcGs6IHokMS5zdHJpbmcoKSxcbiAgY2xpZW50X3NlY3JldDogeiQxLnN0cmluZygpLFxuICBzdHJpcGVfcG1faWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKCksXG4gIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG59KTtcblxuY29uc3QgY29udmVydFN0eWxlc1RvUXVlcnlTdHJpbmcgPSAoc3R5bGVzKSA9PiB7XG4gIGNvbnN0IHNlcmlhbGl6ZWRTdHlsZXMgPSBKU09OLnN0cmluZ2lmeShzdHlsZXMpO1xuICByZXR1cm4gc2VyaWFsaXplZFN0eWxlcztcbn07XG5cbmNvbnN0IG51bGxPclVuZGVmT3IgPSAoelR5cGUpID0+IHokMS5udWxsYWJsZSh6VHlwZS5vcHRpb25hbCgpKTtcbnokMS5zdHJpbmcoKS50cmltKCkubWluKDEsIHsgbWVzc2FnZTogYENhbm5vdCBiZSBibGFua2AgfSk7XG56JDEub2JqZWN0KHtcbiAgY2RlX3Jlc3BvbnNlX3R5cGU6IHokMS5saXRlcmFsKFwiZXJyb3JcIiksXG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKSxcbiAgaGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKVxufSk7XG56JDEuZW51bShbXCJ1c2RcIiwgXCJicmxcIl0pO1xuY29uc3QgQ291cG9uTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBuYW1lOiB6JDEuc3RyaW5nKCksXG4gIGFtb3VudF9hdG9tX29mZjogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkpLFxuICBwZXJjZW50X29mZjogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkpLFxuICBjdXJyZW5jeTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBkdXJhdGlvbjogeiQxLnN0cmluZygpLFxuICBkdXJhdGlvbl9pbl9tb250aHM6IG51bGxPclVuZGVmT3IoeiQxLm51bWJlcigpKVxufSk7XG5jb25zdCBMaW5lSXRlbSA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfc3VidG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBhbW91bnRfdG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwcmljZV9pZDogeiQxLnN0cmluZygpLFxuICBiaWxsaW5nX2ludGVydmFsOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfaW50ZXJ2YWxfY291bnQ6IG51bGxPclVuZGVmT3IoeiQxLm51bWJlcigpLmludCgpKSxcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKS5pbnQoKVxufSk7XG5jb25zdCBCcmFuZFNldHRpbmdzID0geiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSk7XG5jb25zdCBCcmFuZCA9IHokMS5vYmplY3Qoe1xuICBuYW1lOiB6JDEuc3RyaW5nKCksXG4gIHNldHRpbmdzOiBudWxsT3JVbmRlZk9yKEJyYW5kU2V0dGluZ3MpXG59KTtcbmNvbnN0IENoZWNrb3V0UGF5bWVudE1ldGhvZCA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnN0cmluZygpLFxuICBwcm9jZXNzb3JfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBtZXRhZGF0YTogbnVsbE9yVW5kZWZPcih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgU3Vic2NyaXB0aW9uSXRlbU1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKVxufSk7XG5jb25zdCBTdWJzY3JpcHRpb25NaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGlkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfaW50ZXJ2YWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbF9jb3VudDogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkuaW50KCkpLFxuICBzdWJzY3JpcHRpb25faXRlbXM6IHokMS5hcnJheShTdWJzY3JpcHRpb25JdGVtTWluaW1hbCksXG4gIHRyaWFsX3N0YXJ0OiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHRyaWFsX2VuZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbmNvbnN0IEludm9pY2VJdGVtRGlzY291bnRBbW91bnRzTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfYXRvbTogeiQxLm51bWJlcigpXG59KTtcbmNvbnN0IEludm9pY2VMaW5lSXRlbU1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgYW1vdW50X2F0b21fY29uc2lkZXJpbmdfZGlzY291bnRfYXBwbGllZDogeiQxLm51bWJlcigpLFxuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkaXNjb3VudF9hbW91bnRfYXRvbXM6IHokMS5hcnJheShJbnZvaWNlSXRlbURpc2NvdW50QW1vdW50c01pbmltYWwpLFxuICBzdWJzY3JpcHRpb25faXRlbV9pZDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IERpc2NvdW50TWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjb3Vwb246IENvdXBvbk1pbmltYWxcbn0pO1xuY29uc3QgSW52b2ljZU1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgY3VycmVuY3k6IHokMS5zdHJpbmcoKSxcbiAgZGlzY291bnRzOiB6JDEuYXJyYXkoRGlzY291bnRNaW5pbWFsKSxcbiAgaG9zdGVkX2ludm9pY2VfdXJsOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmVzOiB6JDEuYXJyYXkoSW52b2ljZUxpbmVJdGVtTWluaW1hbCksXG4gIHJlbWFpbmluZ19hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0YXhfYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgdG90YWxfZGlzY291bnRfYW1vdW50X2F0b21zOiB6JDEuYXJyYXkoSW52b2ljZUl0ZW1EaXNjb3VudEFtb3VudHNNaW5pbWFsKVxufSk7XG5jb25zdCBDcmVhdGVTdWJzY3JpcHRpb25SZXNwb25zZU1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgY3JlYXRlZDogeiQxLmFycmF5KFN1YnNjcmlwdGlvbk1pbmltYWwpLFxuICBpbnZvaWNlczogeiQxLmFycmF5KEludm9pY2VNaW5pbWFsKVxufSk7XG5jb25zdCBQcmV2aWV3Q2hlY2tvdXRSZXNwb25zZSA9IHokMS5vYmplY3Qoe1xuICBwcmV2aWV3OiBDcmVhdGVTdWJzY3JpcHRpb25SZXNwb25zZU1pbmltYWwsXG4gIHByZXZpZXdfcG9zdF90cmlhbDogbnVsbE9yVW5kZWZPcihDcmVhdGVTdWJzY3JpcHRpb25SZXNwb25zZU1pbmltYWwpLFxuICBjb3Vwb25zOiB6JDEuYXJyYXkoQ291cG9uTWluaW1hbClcbn0pO1xuY29uc3QgX1BheW1lbnRGb3JtUHJlZmlsbENvbW1vbiA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwib3BlblwiKSxcbiAgbG9jYWxlOiB6JDEuc3RyaW5nKCksXG4gIHRva2VuOiB6JDEuc3RyaW5nKCksXG4gIGVtYWlsOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmVfaXRlbXM6IHokMS5hcnJheShMaW5lSXRlbSksXG4gIGFtb3VudF9zdWJ0b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGFtb3VudF90b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGJyYW5kOiBCcmFuZCxcbiAgc3Vic19wcmV2aWV3OiBudWxsT3JVbmRlZk9yKFByZXZpZXdDaGVja291dFJlc3BvbnNlKSxcbiAgLy8gTnVsbCBpbiBzZXR1cCBtb2RlXG4gIG1ldGhvZHNfYXZhaWxhYmxlOiB6JDEuYXJyYXkoQ2hlY2tvdXRQYXltZW50TWV0aG9kKVxufSk7XG5jb25zdCBQYXltZW50Rm9ybVByZWZpbGwgPSB6JDEuZGlzY3JpbWluYXRlZFVuaW9uKFwibW9kZVwiLCBbXG4gIHokMS5vYmplY3Qoe1xuICAgIG1vZGU6IHokMS5saXRlcmFsKFwic2V0dXBcIiksXG4gICAgY3VycmVuY3k6IHokMS5udWxsYWJsZSh6JDEudW5kZWZpbmVkKCkpXG4gIH0pLmV4dGVuZChfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uLnNoYXBlKSxcbiAgeiQxLm9iamVjdCh7XG4gICAgbW9kZTogeiQxLmVudW0oW1wicGF5bWVudFwiLCBcInN1YnNjcmlwdGlvblwiXSksXG4gICAgY3VycmVuY3k6IHokMS5zdHJpbmcoKVxuICB9KS5leHRlbmQoX1BheW1lbnRGb3JtUHJlZmlsbENvbW1vbi5zaGFwZSlcbl0pO1xuY29uc3QgQ29tcGxldGVkRm9ybVByZWZpbGwgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEubGl0ZXJhbChcImNvbXBsZXRlXCIpXG59KTtcbmNvbnN0IEV4cGlyZWRGb3JtUHJlZmlsbCA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiZXhwaXJlZFwiKVxufSk7XG56JDEudW5pb24oW1BheW1lbnRGb3JtUHJlZmlsbCwgQ29tcGxldGVkRm9ybVByZWZpbGwsIEV4cGlyZWRGb3JtUHJlZmlsbF0pO1xueiQxLm9iamVjdCh7XG4gIGxvZ286IHokMS5zdHJpbmcoKSxcbiAgaWNvbjogeiQxLnN0cmluZygpLFxuICBwcmltYXJ5X2NvbG9yOiB6JDEuc3RyaW5nKCksXG4gIHNlY29uZGFyeV9jb2xvcjogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcG1faWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIHBheW1lbnRfaW5wdXQ6IHokMS5hbnkoKSxcbiAgLy8gU2hvdWxkIGZvbGxvdyBBbnlQYXltZW50SW5wdXQgZnJvbSBDREVcbiAgY3VzdG9tZXJfZmlyc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGN1c3RvbWVyX2xhc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGN1c3RvbWVyX2VtYWlsOiB6JDEuc3RyaW5nKCksXG4gIGN1c3RvbWVyX3ppcF9jb2RlOiB6JDEuc3RyaW5nKCksXG4gIGN1c3RvbWVyX2NvdW50cnk6IHokMS5zdHJpbmcoKSxcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KExpbmVJdGVtKSxcbiAgdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgY2FuY2VsX2F0X2VuZDogeiQxLmJvb2xlYW4oKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkb19ub3RfdXNlX2xlZ2FjeV9jY19mbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHVzZV9jb25maXJtZWRfcG1faWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgcGF5bWVudF9tZXRob2RfaWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKSxcbiAgcmV0dXJuX3VybDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IFB5ZGFudGljVmFsaWRhdGlvbkVycm9yID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgbG9jOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgbXNnOiB6JDEuc3RyaW5nKCksXG4gIHVybDogeiQxLnN0cmluZygpXG59KTtcbnokMS5hcnJheShQeWRhbnRpY1ZhbGlkYXRpb25FcnJvcik7XG5jb25zdCBOZXdDdXN0b21lckZpZWxkcyA9IHokMS5vYmplY3Qoe1xuICBuZXdfY3VzdG9tZXJfZW1haWw6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfYWRkcmVzczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkub3B0aW9uYWwoKSxcbiAgbmV3X2N1c3RvbWVyX2ZpcnN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBQcmljZVF0eSA9IHokMS5vYmplY3Qoe1xuICBwcmljZV9pZDogeiQxLnN0cmluZygpLFxuICBxdWFudGl0eTogeiQxLm51bWJlcigpLmludCgpXG59KTtcbmNvbnN0IENhcnRJbmZvID0geiQxLm9iamVjdCh7XG4gIGxpbmVfaXRlbXM6IHokMS5hcnJheShQcmljZVF0eSksXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KClcbn0pO1xuY29uc3QgUHJvY2Vzc29yU3BlY2lmaWNNZXRhZGF0YSA9IHokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IG51bGxPclVuZGVmT3IoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBwYXltZW50X3Byb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBDaGVja291dFBheW1lbnRNZXRob2QsXG4gIGV4aXN0aW5nX2NjX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGhlaXJfZXhpc3RpbmdfcG1faWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB1c2VfcGF5X2ZpcnN0X2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgcGF5X2ZpcnN0X2Zsb3dfY2FydF9pbmZvOiBDYXJ0SW5mby5vcHRpb25hbCgpXG59KS5leHRlbmQoTmV3Q3VzdG9tZXJGaWVsZHMuc2hhcGUpLmV4dGVuZChQcm9jZXNzb3JTcGVjaWZpY01ldGFkYXRhLnNoYXBlKTtcbnokMS5vYmplY3Qoe1xuICByZXF1aXJlZF91c2VyX2FjdGlvbnM6IHokMS5hcnJheSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSksXG4gIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgZmllbGRzOiBQUkZvcm1GaWVsZHMsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFJlcXVpcmVkRm9ybUZpZWxkcyxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpXG4gIC8vIFRoaXMgaXMgb3B0aW9uYWwgaW4gQ0RFLCBidXQgbm90IGluIE9KUyBtb3ZpbmcgZm9yd2FyZFxufSk7XG56JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjY19wbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5yZWNvcmQoeiQxLmFueSgpKTtcbnokMS5vYmplY3Qoe1xuICBmaXJzdF9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxhc3RfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsaW5lMTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsaW5lMjogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsaW5lMzogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBjaXR5OiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHN0YXRlOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGNvdW50cnk6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgemlwX2NvZGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19lbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwaG9uZV9udW1iZXI6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdXBkYXRlX3Byb2Nlc3Nvcl9jdXN0b21lcjogbnVsbE9yVW5kZWZPcih6JDEuYm9vbGVhbigpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgZmlyc3RfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsYXN0X25hbWU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgcGhvbmVfbnVtYmVyOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYWRkcmVzczogbnVsbE9yVW5kZWZPcih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgZXJyb3JfY29kZTogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLmFueSgpKS5vcHRpb25hbCgpXG59KTtcbnokMS5vYmplY3Qoe1xuICBuZXh0X2FjdGlvbl9tZXRhZGF0YTogbnVsbE9yVW5kZWZPcih6JDEucmVjb3JkKHokMS5hbnkoKSkpXG59KTtcblxuZnVuY3Rpb24gZml4UHJvdG8odGFyZ2V0LCBwcm90b3R5cGUpIHtcbiAgdmFyIHNldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mO1xuICBzZXRQcm90b3R5cGVPZiA/IHNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG90eXBlKSA6IHRhcmdldC5fX3Byb3RvX18gPSBwcm90b3R5cGU7XG59XG5mdW5jdGlvbiBmaXhTdGFjayh0YXJnZXQsIGZuKSB7XG4gIGlmIChmbiA9PT0gdm9pZCAwKSB7XG4gICAgZm4gPSB0YXJnZXQuY29uc3RydWN0b3I7XG4gIH1cblxuICB2YXIgY2FwdHVyZVN0YWNrVHJhY2UgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcbiAgY2FwdHVyZVN0YWNrVHJhY2UgJiYgY2FwdHVyZVN0YWNrVHJhY2UodGFyZ2V0LCBmbik7XG59XG5cbnZhciBfX2V4dGVuZHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG4oZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMoQ3VzdG9tRXJyb3IsIF9zdXBlcik7XG5cbiAgZnVuY3Rpb24gQ3VzdG9tRXJyb3IobWVzc2FnZSwgb3B0aW9ucykge1xuICAgIHZhciBfbmV3VGFyZ2V0ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG1lc3NhZ2UsIG9wdGlvbnMpIHx8IHRoaXM7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX3RoaXMsICduYW1lJywge1xuICAgICAgdmFsdWU6IF9uZXdUYXJnZXQubmFtZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgZml4UHJvdG8oX3RoaXMsIF9uZXdUYXJnZXQucHJvdG90eXBlKTtcbiAgICBmaXhTdGFjayhfdGhpcyk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIEN1c3RvbUVycm9yO1xufSkoRXJyb3IpO1xuXG5jb25zdCBjcmVhdGVPanNGbG93TG9nZ2VycyA9IChwcmVmaXgpID0+IHtcbiAgY29uc3QgbG9nID0gKC4uLmFyZ3MpID0+IHtcbiAgICB3aW5kb3dbXCJjb25zb2xlXCJdLmxvZyhgJHtBZS5ncmVlbi5ib2xkKFwib2pzL1wiKX0ke0FlLmJvbGQuZ3JheShgJHtwcmVmaXh9YCl9XHRgLCAuLi5hcmdzKTtcbiAgfTtcbiAgY29uc3QgZXJyID0gKC4uLmFyZ3MpID0+IHtcbiAgICB3aW5kb3dbXCJjb25zb2xlXCJdLndhcm4oYCR7QWUucmVkLmJvbGQoXCJvanMvXCIpfSR7QWUuYm9sZC5ncmF5KGAke3ByZWZpeH1gKX1cdGAsIC4uLmFyZ3MpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGxvZyxcbiAgICBlcnIsXG4gICAgbG9nX186IGxvZyxcbiAgICBlcnJfXzogZXJyXG4gIH07XG59O1xuXG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwic3RyaXBlX2xpbmtcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuXG56JDEub2JqZWN0KHtcbiAgXCJvcC1wb2NreXQtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXR4bi1ub1wiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXJlZi1ub1wiOiB6JDEuc3RyaW5nKClcbn0pO1xuXG56JDEub2JqZWN0KHtcbiAgXCJvcC1haXJ3YWxsZXgtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWlyd2FsbGV4LWluaXRpYWwtaW50ZW50LWlkXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1haXJ3YWxsZXgtY29uc2VudC1pZFwiOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWlyd2FsbGV4XCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgcHJvY2Vzc29yX2FjY291bnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9uYW1lOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImdvb2dsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImFpcndhbGxleFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pO1xuY29uc3QgQVdYX0xPQURJTkcgPSB7XG4gIGlzQXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNMb2FkaW5nOiB0cnVlLFxuICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgfVxufTtcblxuY29uc3QgQWR5ZW5FbnZpcm9ubWVudCA9IHokMS5lbnVtKFtcInRlc3RcIiwgXCJsaXZlXCIsIFwibGl2ZS11c1wiLCBcImxpdmUtaW5cIiwgXCJsaXZlLWFwc2VcIiwgXCJsaXZlLWF1XCJdKTtcbnokMS5vYmplY3Qoe1xuICBcIm9wLWFjY291bnQtaWRcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFkeWVuLWNsaWVudC1rZXlcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFkeWVuLWVudmlyb25tZW50XCI6IEFkeWVuRW52aXJvbm1lbnQsXG4gIFwib3AtYWR5ZW4tYWN0aW9uXCI6IHokMS5zdHJpbmcoKVxufSk7XG5cbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuXG5jb25zdCBQYXltZW50UHJvY2Vzc29yID0geiQxLmVudW0oW1wic3RyaXBlXCIsIFwiYWlyd2FsbGV4XCIsIFwiYXV0aG9yaXplX25ldFwiXSk7XG4oe1xuICBwcm9jZXNzb3I6IFBheW1lbnRQcm9jZXNzb3IuRW51bS5zdHJpcGUsXG4gIGlzQXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNMb2FkaW5nOiB0cnVlLFxuICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgfVxufSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnVuaW9uKFt6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSwgeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpXSksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInBvY2t5dFwiKSxcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwicGF5cGFsXCIpXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgcGF5cGFsX2lmcmFtZV91cmw6IHokMS5zdHJpbmcoKSxcbiAgICB2ZXJpZnlfdG9rZW46IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBtZXNzYWdlSGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gICAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLmFueSgpKSxcbiAgICBtZXNzYWdlVHlwZTogeiQxLnN0cmluZygpLFxuICAgIG1lc3NhZ2VCb2R5OiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKVxuICB9KSxcbiAgb3JpZ2luOiB6JDEubGl0ZXJhbChcImh0dHBzOi8vYXBwbGVwYXkuY2RuLWFwcGxlLmNvbVwiKVxufSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJsb29wXCIpLFxuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJjcnlwdG9cIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBtZXJjaGFudF9pZDogeiQxLnN0cmluZygpLFxuICAgIGVudGl0eV9pZDogeiQxLnN0cmluZygpLFxuICAgIGFwaV90b2tlbjogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnZhciBQYXlJblN0YXRlID0gLyogQF9fUFVSRV9fICovICgoUGF5SW5TdGF0ZTIpID0+IHtcbiAgUGF5SW5TdGF0ZTJbXCJJRExFXCJdID0gXCJpZGxlXCI7XG4gIFBheUluU3RhdGUyW1wiQ09ORklSTUlOR19CQUxBTkNFXCJdID0gXCJjb25maXJtaW5nQmFsYW5jZVwiO1xuICBQYXlJblN0YXRlMltcIkNPTkZJUk1JTkdfQVVUSE9SSVpBVElPTlwiXSA9IFwiY29uZmlybWluZ0F1dGhvcml6YXRpb25cIjtcbiAgUGF5SW5TdGF0ZTJbXCJVUERBVElOR19BVVRIT1JJWkFUSU9OXCJdID0gXCJ1cGRhdGluZ0F1dGhvcml6YXRpb25cIjtcbiAgUGF5SW5TdGF0ZTJbXCJTSUdOSU5HX01FU1NBR0VcIl0gPSBcInNpZ25pbmdNZXNzYWdlXCI7XG4gIFBheUluU3RhdGUyW1wiQ1JFQVRJTkdfQ1VTVE9NRVJcIl0gPSBcImNyZWF0aW5nQ3VzdG9tZXJcIjtcbiAgUGF5SW5TdGF0ZTJbXCJQUk9DRVNTSU5HX1BBWU1FTlRcIl0gPSBcInByb2Nlc3NpbmdQYXltZW50XCI7XG4gIFBheUluU3RhdGUyW1wiQ1JFQVRJTkdfUEFZTUVOVFwiXSA9IFwiY3JlYXRpbmdQYXltZW50XCI7XG4gIFBheUluU3RhdGUyW1wiQ09ORklSTUlOR19QQVlNRU5UXCJdID0gXCJjb25maXJtaW5nUGF5bWVudFwiO1xuICBQYXlJblN0YXRlMltcIkNPTVBMRVRFXCJdID0gXCJjb21wbGV0ZVwiO1xuICByZXR1cm4gUGF5SW5TdGF0ZTI7XG59KShQYXlJblN0YXRlIHx8IHt9KTtcblxueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhdXRob3JpemVfbmV0XCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgcHJvY2Vzc29yX2FjY291bnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9uYW1lOiB6JDEuc3RyaW5nKCksXG4gICAgZ29vZ2xlX3BheV9tZXJjaGFudF9pZDogeiQxLnN0cmluZygpLm51bGxpc2goKVxuICB9KVxufSk7XG5cbmNvbnN0IFBSX0xPQURJTkcgPSB7XG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBgc3RhcnRGbG93IHRyaWdnZXJlZCB3aGlsZSBwYXltZW50IHJlcXVlc3QgaXMgc3RpbGwgbm90IHJlYWR5LiBcbiAgICAgIFlvdSBjYW4gY2hlY2sgdGhlIFwiLmlzTG9hZGluZ1wiIHBhcmFtIHRvIGtub3cgd2hlbiBhIHBheW1lbnQgcmVxdWVzdCBpcyBzdGlsbCBsb2FkaW5nLCBcbiAgICAgIGFuZCBcIi5pc0F2YWlsYWJsZVwiIHRvIGtub3cgaWYgYSBwYXltZW50IHJlcXVlc3QgaXMgYXZhaWxhYmxlLmBcbiAgICApO1xuICB9XG59O1xuXG5jb25zdCB7IGVycl9fIH0gPSBjcmVhdGVPanNGbG93TG9nZ2VycyhcImZvcm0tY2FsbGJhY2tzXCIpO1xuY29uc3QgT3B0aW9uYWxGbiA9IHokMS5mdW5jdGlvbigpLm9wdGlvbmFsKCk7XG5jb25zdCBab2RGb3JtQ2FsbGJhY2tzID0geiQxLm9iamVjdCh7XG4gIG9uRm9jdXM6IE9wdGlvbmFsRm4sXG4gIG9uQmx1cjogT3B0aW9uYWxGbixcbiAgb25DaGFuZ2U6IE9wdGlvbmFsRm4sXG4gIG9uTG9hZDogT3B0aW9uYWxGbixcbiAgb25Mb2FkRXJyb3I6IE9wdGlvbmFsRm4sXG4gIG9uVmFsaWRhdGlvbkVycm9yOiBPcHRpb25hbEZuLFxuICBvbkNoZWNrb3V0U3RhcnRlZDogT3B0aW9uYWxGbixcbiAgb25DaGVja291dFN1Y2Nlc3M6IE9wdGlvbmFsRm4sXG4gIG9uU2V0dXBQYXltZW50TWV0aG9kU3VjY2VzczogT3B0aW9uYWxGbixcbiAgb25DaGVja291dEVycm9yOiBPcHRpb25hbEZuLFxuICBvblBheW1lbnRSZXF1ZXN0TG9hZDogT3B0aW9uYWxGblxufSk7XG5jbGFzcyBGb3JtQ2FsbGJhY2tzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLyoqXG4gICAgICogU2V0cyBBTEwgZm9ybSBjYWxsYmFja3MuIE5vdGUgdGhhdCBhbGwgb2xkIGNhbGxiYWNrcyBhcmUgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICB0aGlzLnNldENhbGxiYWNrcyA9IChyYXdDYWxsYmFja3MpID0+IHtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IEZvcm1DYWxsYmFja3MuY3JlYXRlRW1wdHlDYWxsYmFja3MoKTtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJhd0NhbGxiYWNrcykuZm9yRWFjaCgoW2tleSwgcmF3Q2FsbGJhY2tdKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhZmVDYWxsYmFjayA9IG1ha2VDYWxsYmFja1NhZmUoa2V5LCByYXdDYWxsYmFjayA/PyBGb3JtQ2FsbGJhY2tzLk5PT1AsIGVycl9fKTtcbiAgICAgICAgdGhpcy5fY2FsbGJhY2tzW2tleV0gPSBzYWZlQ2FsbGJhY2s7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRoaXMuX2NhbGxiYWNrcyA9IEZvcm1DYWxsYmFja3MuY3JlYXRlRW1wdHlDYWxsYmFja3MoKTtcbiAgfVxuICBzdGF0aWMge1xuICAgIHRoaXMuTk9PUCA9ICgpID0+IHtcbiAgICB9O1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5jcmVhdGVFbXB0eUNhbGxiYWNrcyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHggPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKFpvZEZvcm1DYWxsYmFja3Mua2V5b2YoKS5lbnVtKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgeFtrZXldID0gRm9ybUNhbGxiYWNrcy5OT09QO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4geDtcbiAgICB9O1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5mcm9tT2JqZWN0ID0gKG9iaikgPT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgRm9ybUNhbGxiYWNrcygpO1xuICAgICAgaW5zdGFuY2Uuc2V0Q2FsbGJhY2tzKFpvZEZvcm1DYWxsYmFja3MucGFyc2Uob2JqKSk7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyBhIHJlYWQtb25seSB2ZXJzaW9uIG9mIHRoZSBjYWxsYmFja3Mgb2JqZWN0LlxuICAgKi9cbiAgZ2V0IGdldCgpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLl9jYWxsYmFja3MgfTtcbiAgfVxufVxuXG5jb25zdCB1c2VSZWFjdGl2ZUZvcm1DYWxsYmFja3MgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgZm9ybUNhbGxiYWNrcyA9IEZvcm1DYWxsYmFja3MuZnJvbU9iamVjdCh7XG4gICAgb25Gb2N1czogcHJvcHMub25Gb2N1cyxcbiAgICBvbkJsdXI6IHByb3BzLm9uQmx1cixcbiAgICBvbkNoYW5nZTogcHJvcHMub25DaGFuZ2UsXG4gICAgb25Mb2FkOiBwcm9wcy5vbkxvYWQsXG4gICAgb25Mb2FkRXJyb3I6IHByb3BzLm9uTG9hZEVycm9yLFxuICAgIG9uVmFsaWRhdGlvbkVycm9yOiBwcm9wcy5vblZhbGlkYXRpb25FcnJvcixcbiAgICBvbkNoZWNrb3V0U3RhcnRlZDogcHJvcHMub25DaGVja291dFN0YXJ0ZWQsXG4gICAgb25DaGVja291dFN1Y2Nlc3M6IHByb3BzLm9uQ2hlY2tvdXRTdWNjZXNzLFxuICAgIG9uU2V0dXBQYXltZW50TWV0aG9kU3VjY2VzczogcHJvcHMub25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzLFxuICAgIG9uQ2hlY2tvdXRFcnJvcjogcHJvcHMub25DaGVja291dEVycm9yLFxuICAgIG9uUGF5bWVudFJlcXVlc3RMb2FkOiBwcm9wcy5vblBheW1lbnRSZXF1ZXN0TG9hZFxuICB9KTtcbiAgaWYgKEF0LmdldEluc3RhbmNlKCkpIHtcbiAgICBBdC5nZXRJbnN0YW5jZSgpPy51cGRhdGVDYWxsYmFja3MoZm9ybUNhbGxiYWNrcy5nZXQpO1xuICB9XG4gIHJldHVybiBmb3JtQ2FsbGJhY2tzLmdldDtcbn07XG5cbmNvbnN0IHVzZVBheW1lbnRSZXF1ZXN0cyA9IChvcmlnaW5hbE9uUGF5bWVudFJlcXVlc3RMb2FkKSA9PiB7XG4gIGNvbnN0IFtwYXltZW50UmVxdWVzdHMsIHNldFBheW1lbnRSZXF1ZXN0c10gPSB1c2VTdGF0ZSh7XG4gICAgYXBwbGVfcGF5OiBQUl9MT0FESU5HLFxuICAgIGdvb2dsZV9wYXk6IFBSX0xPQURJTkdcbiAgfSk7XG4gIGNvbnN0IG92ZXJyaWRlbk9uUGF5bWVudFJlcXVlc3RMb2FkID0gdXNlQ2FsbGJhY2soXG4gICAgKHBheW1lbnRSZXF1ZXN0czIpID0+IHtcbiAgICAgIHNldFBheW1lbnRSZXF1ZXN0cyhwYXltZW50UmVxdWVzdHMyKTtcbiAgICAgIG9yaWdpbmFsT25QYXltZW50UmVxdWVzdExvYWQ/LihwYXltZW50UmVxdWVzdHMyKTtcbiAgICB9LFxuICAgIFtvcmlnaW5hbE9uUGF5bWVudFJlcXVlc3RMb2FkXVxuICApO1xuICByZXR1cm4geyBwYXltZW50UmVxdWVzdHMsIG92ZXJyaWRlbk9uUGF5bWVudFJlcXVlc3RMb2FkIH07XG59O1xuXG5jb25zdCBGT1JNX1RBUkdFVCA9IFwib3Bfb2pzX2Zvcm1cIjtcbmNvbnN0IEVsZW1lbnRzRm9ybSA9IChwcm9wcykgPT4ge1xuICBjb25zdCBbb3BGb3JtLCBzZXRPcEZvcm1dID0gdXNlU3RhdGUoKTtcbiAgY29uc3QgW2VsZW1lbnRzQ29udGV4dFZhbHVlLCBzZXRFbGVtZW50c0NvbnRleHRWYWx1ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgeyBwYXltZW50UmVxdWVzdHMsIG92ZXJyaWRlbk9uUGF5bWVudFJlcXVlc3RMb2FkIH0gPSB1c2VQYXltZW50UmVxdWVzdHMocHJvcHMub25QYXltZW50UmVxdWVzdExvYWQpO1xuICBjb25zdCBbbG9hZGVkLCBzZXRMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc3RyaXBlTGlua0N0cmwsIHNldFN0cmlwZUxpbmtDdHJsXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbbG9vcENvbmZpZywgc2V0TG9vcENvbmZpZ10gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2FpcndhbGxleCwgc2V0QWlyd2FsbGV4XSA9IHVzZVN0YXRlKHtcbiAgICBnb29nbGVQYXk6IEFXWF9MT0FESU5HLFxuICAgIGFwcGxlUGF5OiBBV1hfTE9BRElOR1xuICB9KTtcbiAgY29uc3QgZm9ybUNhbGxiYWNrcyA9IHVzZVJlYWN0aXZlRm9ybUNhbGxiYWNrcyh7XG4gICAgLi4ucHJvcHMsXG4gICAgb25QYXltZW50UmVxdWVzdExvYWQ6IG92ZXJyaWRlbk9uUGF5bWVudFJlcXVlc3RMb2FkLFxuICAgIG9uTG9hZDogKHRvdGFsQW1vdW50QXRvbXMsIGN1cnJlbmN5KSA9PiB7XG4gICAgICBzZXRMb2FkZWQodHJ1ZSk7XG4gICAgICBwcm9wcy5vbkxvYWQ/Lih0b3RhbEFtb3VudEF0b21zLCBjdXJyZW5jeSk7XG4gICAgfVxuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BGb3JtKSByZXR1cm47XG4gICAgY29uc3QgZm9ybSA9IEF0LmdldEluc3RhbmNlKCkgPz8gbmV3IEF0KHtcbiAgICAgIGNoZWNrb3V0U2VjdXJlVG9rZW46IHByb3BzLmNoZWNrb3V0U2VjdXJlVG9rZW4sXG4gICAgICBmb3JtVGFyZ2V0OiBgIyR7Rk9STV9UQVJHRVR9YCxcbiAgICAgIGJhc2VVcmw6IHByb3BzLmJhc2VVcmwsXG4gICAgICBjdXN0b21Jbml0UGFyYW1zOiBwcm9wcy5jdXN0b21Jbml0UGFyYW1zLFxuICAgICAgLi4uZm9ybUNhbGxiYWNrc1xuICAgIH0pO1xuICAgIHNldE9wRm9ybShmb3JtKTtcbiAgICBjb25zdCB2YWx1ZSA9IGdldEVsZW1lbnRzQ29udGV4dFZhbHVlKGZvcm0pO1xuICAgIHNldEVsZW1lbnRzQ29udGV4dFZhbHVlKHZhbHVlKTtcbiAgICBmb3JtLmluaXRGbG93cy5zdHJpcGVMaW5rLnB1Ymxpc2hlci5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MgJiYgcmVzdWx0LmxvYWRlZFZhbHVlLmlzQXZhaWxhYmxlKSB7XG4gICAgICAgIHNldFN0cmlwZUxpbmtDdHJsKHJlc3VsdC5sb2FkZWRWYWx1ZS5jb250cm9sbGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmb3JtLmluaXRGbG93cy5sb29wLnB1Ymxpc2hlci5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MgJiYgcmVzdWx0LmxvYWRlZFZhbHVlLmlzQXZhaWxhYmxlKSB7XG4gICAgICAgIHNldExvb3BDb25maWcoe1xuICAgICAgICAgIHdpZGdldDogcmVzdWx0LmxvYWRlZFZhbHVlLndpZGdldFByb3BzLFxuICAgICAgICAgIGNvbmZpZzogcmVzdWx0LmxvYWRlZFZhbHVlLmluaXRMb29wQ29ubmVjdFByb3BzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZvcm0uaW5pdEZsb3dzLmFpcndhbGxleEdvb2dsZVBheS5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZS5pc0F2YWlsYWJsZSkge1xuICAgICAgICBzZXRBaXJ3YWxsZXgoKHByZXYpID0+ICh7XG4gICAgICAgICAgYXBwbGVQYXk6IHByZXYuYXBwbGVQYXksXG4gICAgICAgICAgZ29vZ2xlUGF5OiByZXN1bHQubG9hZGVkVmFsdWVcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZvcm0uaW5pdEZsb3dzLmFpcndhbGxleEFwcGxlUGF5LnB1Ymxpc2hlci5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MgJiYgcmVzdWx0LmxvYWRlZFZhbHVlLmlzQXZhaWxhYmxlKSB7XG4gICAgICAgIHNldEFpcndhbGxleCgocHJldikgPT4gKHtcbiAgICAgICAgICBnb29nbGVQYXk6IHByZXYuZ29vZ2xlUGF5LFxuICAgICAgICAgIGFwcGxlUGF5OiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQubG9hZGVkVmFsdWUsXG4gICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGZvcm0uZGVzdHJveSgpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgaWYgKCFvcEZvcm0pIHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChGcmFnbWVudCwge30pO1xuICB9XG4gIGNvbnN0IGNoaWxkcmVuUHJvcHMgPSB7XG4gICAgc3VibWl0OiBvcEZvcm0uc3VibWl0Q2FyZCxcbiAgICBzdWJtaXRXaXRoOiBvcEZvcm0uZ2VuZXJhbFN1Ym1pdCxcbiAgICBhcHBsZVBheTogcGF5bWVudFJlcXVlc3RzLmFwcGxlX3BheSxcbiAgICBnb29nbGVQYXk6IHBheW1lbnRSZXF1ZXN0cy5nb29nbGVfcGF5LFxuICAgIGxvYWRlZCxcbiAgICAvLyBEaXNhYmxlIGR5bmFtaWMgcHJldmlld3MgZmVhdHVyZSBmb3Igbm93XG4gICAgcHJldmlldzoge1xuICAgICAgYW1vdW50OiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGVycm9yOiBudWxsXG4gICAgfSxcbiAgICBzdHJpcGVMaW5rOiBzdHJpcGVMaW5rQ3RybCxcbiAgICBhaXJ3YWxsZXgsXG4gICAgbG9vcDogbG9vcENvbmZpZ1xuICB9O1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChGcmFnbWVudCwgeyBjaGlsZHJlbjogZWxlbWVudHNDb250ZXh0VmFsdWUgPyAvKiBAX19QVVJFX18gKi8ganN4KEVsZW1lbnRzQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogZWxlbWVudHNDb250ZXh0VmFsdWUsIGNoaWxkcmVuOiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHsgaWQ6IEZPUk1fVEFSR0VULCBjbGFzc05hbWU6IHByb3BzLmNsYXNzTmFtZSwgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuKGNoaWxkcmVuUHJvcHMpIH0pIH0pIDogLyogQF9fUFVSRV9fICovIGpzeChGcmFnbWVudCwge30pIH0pO1xufTtcbmNvbnN0IGdldEVsZW1lbnRzQ29udGV4dFZhbHVlID0gKG9wRm9ybSkgPT4ge1xuICByZXR1cm4ge1xuICAgIGZvcm1JZDogb3BGb3JtLmZvcm1JZCxcbiAgICBmb3JtSGVpZ2h0OiBvcEZvcm0uZm9ybVByb3BlcnRpZXMuaGVpZ2h0LFxuICAgIHJlZmVycmVyOiBvcEZvcm0ucmVmZXJyZXIsXG4gICAgY2hlY2tvdXRTZWN1cmVUb2tlbjogb3BGb3JtLmNoZWNrb3V0U2VjdXJlVG9rZW4sXG4gICAgcmVnaXN0ZXJJZnJhbWU6IG9wRm9ybS5yZWdpc3RlcklmcmFtZSxcbiAgICBiYXNlVXJsOiBvcEZvcm0uYmFzZVVybFxuICB9O1xufTtcblxuY29uc3QgRWxlbWVudEZyYW1lID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgZWxlbWVudFR5cGUsIHN0eWxlcyB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgZm9ybUlkLCByZWZlcnJlciwgZm9ybUhlaWdodCwgY2hlY2tvdXRTZWN1cmVUb2tlbiwgcmVnaXN0ZXJJZnJhbWUsIGJhc2VVcmwgfSA9IHVzZU9wZW5QYXlFbGVtZW50cygpO1xuICBjb25zdCBzdWJQYXRoID0gZWxlbWVudFR5cGUudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgW2hhc0xvYWRlZCwgc2V0SGFzTG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaWZyYW1lUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBlbGVtZW50U3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIXN0eWxlcykgcmV0dXJuIFwiXCI7XG4gICAgcmV0dXJuIGNvbnZlcnRTdHlsZXNUb1F1ZXJ5U3RyaW5nKHN0eWxlcyk7XG4gIH0sIFtzdHlsZXNdKTtcbiAgY29uc3QgZnJhbWVTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgaGVpZ2h0OiBmb3JtSGVpZ2h0XG4gICAgfTtcbiAgfSwgW2Zvcm1IZWlnaHRdKTtcbiAgY29uc3QgcXVlcnlTdHJpbmcgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWNoZWNrb3V0U2VjdXJlVG9rZW4gfHwgIXJlZmVycmVyKSByZXR1cm4gXCJcIjtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgcGFyYW1zLmFwcGVuZChcInJlZmVyZXJcIiwgcmVmZXJyZXIpO1xuICAgIHBhcmFtcy5hcHBlbmQoXCJzdHlsZXNcIiwgZWxlbWVudFN0eWxlKTtcbiAgICBwYXJhbXMuYXBwZW5kKFwiZm9ybUlkXCIsIGZvcm1JZCk7XG4gICAgcGFyYW1zLmFwcGVuZChcInNlY3VyZVRva2VuXCIsIGNoZWNrb3V0U2VjdXJlVG9rZW4pO1xuICAgIHJldHVybiBwYXJhbXMudG9TdHJpbmcoKTtcbiAgfSwgW2VsZW1lbnRTdHlsZSwgZm9ybUlkLCByZWZlcnJlciwgY2hlY2tvdXRTZWN1cmVUb2tlbl0pO1xuICB1c2VFZmZlY3QoKCkgPT4gc2V0SGFzTG9hZGVkKHRydWUpLCBbXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpZnJhbWVSZWYuY3VycmVudCB8fCAhaGFzTG9hZGVkKSByZXR1cm47XG4gICAgcmVnaXN0ZXJJZnJhbWUoZWxlbWVudFR5cGUsIGlmcmFtZVJlZi5jdXJyZW50KTtcbiAgfSwgW2hhc0xvYWRlZF0pO1xuICBpZiAoIWNoZWNrb3V0U2VjdXJlVG9rZW4pIHtcbiAgICBjb25zb2xlLmVycm9yKFwiW2Zvcm1dIENhbm5vdCByZW5kZXIgcGFydGlhbGx5IGluaXRpYWxpemVkIGZyYW1lXCIpO1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFwiZGl2XCIsIHt9KTtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcbiAgICBcImlmcmFtZVwiLFxuICAgIHtcbiAgICAgIGlkOiBgb2pzLSR7c3ViUGF0aH0tZWxlbWVudGAsXG4gICAgICBuYW1lOiBgJHtzdWJQYXRofS1lbGVtZW50YCxcbiAgICAgIGNsYXNzTmFtZTogXCJvanMtaWZyYW1lXCIsXG4gICAgICBzcmM6IGAke2Jhc2VVcmx9L2FwcC92MS8ke3N1YlBhdGh9LWVsZW1lbnQvPyR7cXVlcnlTdHJpbmd9YCxcbiAgICAgIHN0eWxlOiBmcmFtZVN0eWxlLFxuICAgICAgcmVmOiBpZnJhbWVSZWZcbiAgICB9XG4gICk7XG59O1xuXG5jb25zdCBDYXJkQ3ZjRWxlbWVudCA9ICh7IHN0eWxlcyB9KSA9PiB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEVsZW1lbnRGcmFtZSwgeyBzdHlsZXMsIGVsZW1lbnRUeXBlOiBFbGVtZW50VHlwZUVudW0uQ0FSRF9DVkMgfSk7XG59O1xuXG5jb25zdCBDYXJkRWxlbWVudCA9ICh7IHN0eWxlcyB9KSA9PiB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEVsZW1lbnRGcmFtZSwgeyBzdHlsZXMsIGVsZW1lbnRUeXBlOiBFbGVtZW50VHlwZUVudW0uQ0FSRCB9KTtcbn07XG5cbmNvbnN0IENhcmRFeHBpcnlFbGVtZW50ID0gKHsgc3R5bGVzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudEZyYW1lLCB7IHN0eWxlcywgZWxlbWVudFR5cGU6IEVsZW1lbnRUeXBlRW51bS5DQVJEX0VYUElSWSB9KTtcbn07XG5cbmNvbnN0IENhcmROdW1iZXJFbGVtZW50ID0gKHsgc3R5bGVzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudEZyYW1lLCB7IHN0eWxlcywgZWxlbWVudFR5cGU6IEVsZW1lbnRUeXBlRW51bS5DQVJEX05VTUJFUiB9KTtcbn07XG5cbmV4cG9ydCB7IENhcmRDdmNFbGVtZW50LCBDYXJkRWxlbWVudCwgQ2FyZEV4cGlyeUVsZW1lbnQsIENhcmROdW1iZXJFbGVtZW50LCBFbGVtZW50c0Zvcm0sIEZpZWxkTmFtZSwgUGF5SW5TdGF0ZSwgdXNlT3BlblBheUVsZW1lbnRzIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxpQkFBQUEsSUFBZSxjQUFBQyxJQUFZLFlBQUFDLElBQVUsZUFBQUMsSUFBYSxhQUFBQyxJQUFXLFVBQUFDLElBQVEsV0FBQUMsVUFBZTtBQUM3RixTQUFTLE9BQUFDLEdBQUssWUFBQUMsVUFBZ0I7QUFDOUIsU0FBUyxLQUFLQyxTQUFXO0FBQ3pCLFNBQVMsTUFBQUMsVUFBVTtBQUNuQixTQUFTLGtCQUFBQyxVQUFzQjtBQUMvQixPQUFPQyxRQUFRO0FBRWYsTUFBTUMsS0FBa0JiLEdBQWM7QUFBQSxFQUNwQyxRQUFRO0FBQUEsRUFDUixZQUFZO0FBQUEsRUFDWixVQUFVO0FBQUEsRUFDVixxQkFBcUI7QUFBQSxFQUNyQixnQkFBZ0IsTUFBTTtBQUFBLEVBQ3RCO0FBQUEsRUFDQSxTQUFTO0FBQ1gsQ0FBQyxHQUVLYyxLQUFxQixNQUFNO0FBQy9CLFFBQU1DLElBQVVkLEdBQVdZLEVBQWU7QUFDMUMsTUFBSSxDQUFDRTtBQUNILFVBQU0sSUFBSSxN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Q2QsSUFBSSxDQUFDcWlCLEVBQVUsV0FBVyxDQUFDRixLQUMzQkgsRUFBZUwsR0FBYVUsRUFBVSxPQUFPO0FBQUEsRUFDL0MsR0FBRyxDQUFDRixDQUFTLENBQUMsR0FDVEosSUFJa0IsZ0JBQUE1aEI7QUFBQSxJQUNyQjtBQUFBLElBQ0E7QUFBQSxNQUNFLElBQUksT0FBTytoQixDQUFPO0FBQUEsTUFDbEIsTUFBTSxHQUFHQSxDQUFPO0FBQUEsTUFDaEIsV0FBVztBQUFBLE1BQ1gsS0FBSyxHQUFHRCxDQUFPLFdBQVdDLENBQU8sYUFBYU0sQ0FBVztBQUFBLE1BQ3pELE9BQU9EO0FBQUEsTUFDUCxLQUFLRjtBQUFBLElBQ1A7QUFBQSxFQUNGLEtBYkUsUUFBUSxNQUFNLGtEQUFrRCxHQUN6QyxnQkFBQWxpQixFQUFJLE9BQU8sQ0FBQyxDQUFDO0FBYXhDLEdBRU11aUIsS0FBaUIsQ0FBQyxFQUFFLFFBQUE1RyxFQUFPLE1BQ1IsZ0JBQUEzYixFQUFJdWhCLElBQWMsRUFBRSxRQUFBNUYsR0FBUSxhQUFhN0IsR0FBZ0IsU0FBUyxDQUFDLEdBR3RGMEksS0FBYyxDQUFDLEVBQUUsUUFBQTdHLEVBQU8sTUFDTCxnQkFBQTNiLEVBQUl1aEIsSUFBYyxFQUFFLFFBQUE1RixHQUFRLGFBQWE3QixHQUFnQixLQUFLLENBQUMsR0FHbEYySSxLQUFvQixDQUFDLEVBQUUsUUFBQTlHLEVBQU8sTUFDWCxnQkFBQTNiLEVBQUl1aEIsSUFBYyxFQUFFLFFBQUE1RixHQUFRLGFBQWE3QixHQUFnQixZQUFZLENBQUMsR0FHekY0SSxLQUFvQixDQUFDLEVBQUUsUUFBQS9HLEVBQU8sTUFDWCxnQkFBQTNiLEVBQUl1aEIsSUFBYyxFQUFFLFFBQUE1RixHQUFRLGFBQWE3QixHQUFnQixZQUFZLENBQUM7IiwKICAibmFtZXMiOiBbImNyZWF0ZUNvbnRleHQiLCAidXNlQ29udGV4dCIsICJ1c2VTdGF0ZSIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlUmVmIiwgInVzZU1lbW8iLCAianN4IiwgIkZyYWdtZW50IiwgInokMSIsICJ2NCIsICJjb25uZWN0VG9DaGlsZCIsICJBZSIsICJFbGVtZW50c0NvbnRleHQiLCAidXNlT3BlblBheUVsZW1lbnRzIiwgImNvbnRleHQiLCAiZXQiLCAid24iLCAiZ24iLCAiYm4iLCAidm4iLCAiRW4iLCAiV2UiLCAiQ24iLCAiUG4iLCAiZSIsICJTbiIsICJIIiwgIkFuIiwgInIiLCAieCIsICJPIiwgIlAiLCAiaiIsICJJdCIsICJSdCIsICJGdCIsICJNdCIsICJkZSIsICJrbiIsICJUZSIsICJJbiIsICJxIiwgIlJuIiwgIkZuIiwgIk1uIiwgIkRuIiwgIk9uIiwgIk5uIiwgIlRuIiwgIkxuIiwgIlVuIiwgImpuIiwgInhuIiwgIiRuIiwgIkVlIiwgInpuIiwgIkduIiwgIlZuIiwgInFuIiwgIlluIiwgIktuIiwgIlduIiwgInR0IiwgIkpuIiwgIkhuIiwgIlpuIiwgIkkiLCAiQm4iLCAiUW4iLCAiRHQiLCAiWG4iLCAiZXIiLCAidHIiLCAibnIiLCAicnIiLCAib3IiLCAiTGUiLCAic3QiLCAibnQiLCAiYXIiLCAiaXIiLCAic3IiLCAiY3IiLCAibHIiLCAiYSIsICJpIiwgInMiLCAiYyIsICJ1ciIsICJKIiwgImRyIiwgInByIiwgIm1yIiwgInciLCAieXIiLCAiT3QiLCAiTnQiLCAiZnIiLCAiaHIiLCAieWUiLCAiX3IiLCAid3IiLCAiVHQiLCAiZ3IiLCAiYnIiLCAidnIiLCAiY3QiLCAiTHQiLCAibHQiLCAiVXQiLCAiRXIiLCAiQ3IiLCAianQiLCAiUHIiLCAiU3IiLCAiQXIiLCAia3IiLCAiSXIiLCAieHQiLCAiUnIiLCAiRnIiLCAiTXIiLCAiRHIiLCAiT3IiLCAiTnIiLCAiVHIiLCAiTHIiLCAiJHQiLCAiVSIsICJqciIsICJVciIsICJ4ciIsICJNIiwgImZlIiwgIiRyIiwgInpyIiwgIkciLCAiR3IiLCAiVnIiLCAicXIiLCAiaGUiLCAiWXIiLCAidXQiLCAiS3IiLCAicnQiLCAienQiLCAiV3IiLCAiR3QiLCAiVnQiLCAiVWUiLCAiZWUiLCAic2UiLCAiUyIsICJnaSIsICJKciIsICJDZSIsICJZIiwgIkhyIiwgImplIiwgInF0IiwgIll0IiwgInRlIiwgIlpyIiwgImR0IiwgIlIiLCAiQnIiLCAiUXIiLCAiWHIiLCAiZW8iLCAiZiIsICJoIiwgInkiLCAibSIsICJrIiwgInJvIiwgInRvIiwgIm5vIiwgImQiLCAibCIsICJ1IiwgIm9vIiwgIkt0IiwgImFvIiwgImlvIiwgInhlIiwgIld0IiwgInNvIiwgImNvIiwgImxvIiwgIkp0IiwgInVvIiwgInBvIiwgIkh0IiwgIm1vIiwgInlvIiwgImZvIiwgImhvIiwgIm90IiwgIl9vIiwgIndvIiwgImdvIiwgImJvIiwgInZvIiwgIlp0IiwgIkJ0IiwgIkVvIiwgInZlIiwgIk1lIiwgIkNvIiwgIlF0IiwgIlBvIiwgIlNvIiwgInB0IiwgIkFvIiwgImtvIiwgIl8iLCAidiIsICJJbyIsICJSbyIsICJDIiwgIm10IiwgInl0IiwgIkZvIiwgImciLCAiVG8iLCAiTm8iLCAiYiIsICJNbyIsICJEbyIsICJPbyIsICJWIiwgIkwiLCAiTG8iLCAiVW8iLCAiam8iLCAiYmUiLCAieG8iLCAiem8iLCAiJG8iLCAiR28iLCAiSyIsICJmdCIsICJWbyIsICJxbyIsICJBIiwgImNlIiwgIkUiLCAiTiIsICIkZSIsICJYdCIsICJxZSIsICJlbiIsICJ6ZSIsICJZbyIsICJ0biIsICJ6IiwgImxlIiwgIktvIiwgIldvIiwgIkQiLCAiX24iLCAiU2UiLCAicmUiLCAiVmUiLCAib2UiLCAiX2UiLCAibm4iLCAicm4iLCAiSm8iLCAiSG8iLCAiWm8iLCAib24iLCAiYW4iLCAiSWUiLCAiQm8iLCAiUW8iLCAiWG8iLCAidWUiLCAiSmUiLCAiZWEiLCAidGEiLCAibmEiLCAicmEiLCAiVCIsICJvYSIsICJhYSIsICJpYSIsICJzYSIsICJjYSIsICJzbiIsICJjbiIsICJ3ZSIsICJIZSIsICJsYSIsICJ1YSIsICJpZSIsICJnZSIsICJkYSIsICJwYSIsICJaZSIsICJuZSIsICJtYSIsICJsbiIsICJtZSIsICJEZSIsICJPZSIsICJwZSIsICJ5YSIsICJmYSIsICJGIiwgIkdlIiwgIlllIiwgIk5lIiwgIlBlIiwgImh0IiwgInVuIiwgImRuIiwgInBuIiwgIm1uIiwgInluIiwgIl90IiwgIlJlIiwgImF0IiwgImdhIiwgIkJlIiwgImhhIiwgIktlIiwgIl9hIiwgImtlIiwgIndhIiwgIml0IiwgImJhIiwgInZhIiwgIlgiLCAiQ2EiLCAid3QiLCAiRWEiLCAiUGEiLCAiU2EiLCAiQWEiLCAia2EiLCAiSWEiLCAiZm4iLCAiZ3QiLCAiUmEiLCAiRmEiLCAiYnQiLCAiTWEiLCAidnQiLCAiRGEiLCAiT2EiLCAiTmEiLCAiVGEiLCAiTGEiLCAiVWEiLCAiamEiLCAieGEiLCAiJGEiLCAiemEiLCAiR2EiLCAiVmEiLCAicWEiLCAiWWEiLCAiS2EiLCAiV2EiLCAiaG4iLCAiSmEiLCAiSGEiLCAiWmEiLCAiQmEiLCAiUWEiLCAiWGEiLCAiZWkiLCAidGkiLCAibmkiLCAicmkiLCAib2kiLCAiRmUiLCAiYWkiLCAiaWkiLCAiYWUiLCAic2kiLCAiY2kiLCAibGkiLCAiJCIsICJFdCIsICJXIiwgIm4iLCAiUWUiLCAidWkiLCAiQ3QiLCAiZGkiLCAicGkiLCAibWkiLCAiUHQiLCAiU3QiLCAiWiIsICJCIiwgIlEiLCAiQXQiLCAiUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IkMSIsICJab2RGaWVsZEVycm9yIiwgIm1ha2VDYWxsYmFja1NhZmUiLCAiY2FsbGJhY2tOYW1lIiwgImVycm9yTG9nZ2VyIiwgImFyZ3MiLCAiZXJyb3IiLCAiU3VibWl0TWV0aG9kcyIsICJTdWJtaXRNZXRob2RzMiIsICJSZXF1aXJlZFN0cmluZyIsICJPcHRpb25hbFN0cmluZyIsICJudWxsT3JVbmRlZk9yJDEiLCAielR5cGUiLCAiRmllbGROYW1lIiwgIkZpZWxkTmFtZTIiLCAiRmllbGROYW1lRW51bSIsICJQcml2YXRlRmllbGROYW1lIiwgIlByaXZhdGVGaWVsZE5hbWUyIiwgIlByaXZhdGVGaWVsZE5hbWVFbnVtIiwgIkFsbEZpZWxkTmFtZXMiLCAiRWxlbWVudFR5cGVFbnVtIiwgIkVsZW1lbnRUeXBlRW51bTIiLCAiQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEiLCAiUGF5bWVudE1ldGhvZE1pbmltYWwiLCAiRXZlbnRUeXBlIiwgIkdlbmVyaWNFdmVudFR5cGUiLCAiR2VuZXJpY0V2ZW50UGF5bG9hZCIsICJJbnB1dEV2ZW50VHlwZSIsICJJbnB1dEV2ZW50UGF5bG9hZCIsICJFcnJvckV2ZW50VHlwZSIsICJFcnJvckV2ZW50UGF5bG9hZCIsICJWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUiLCAiVmFsaWRhdGlvbkVycm9yRXZlbnRQYXlsb2FkIiwgIkxheW91dEV2ZW50UGF5bG9hZCIsICJMb2FkZWRFdmVudFBheWxvYWQiLCAiUGF5bWVudEZsb3dTdGFydGVkRXZlbnRQYXlsb2FkIiwgIlNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkIiwgIlJlcXVpcmVkRm9ybUZpZWxkcyIsICJQUkZvcm1GaWVsZHMiLCAiU3VibWl0RXZlbnRUeXBlIiwgIlN1Ym1pdEV2ZW50UGF5bG9hZCIsICJUb2tlbml6ZVN1Y2Nlc3NFdmVudFBheWxvYWQiLCAiQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkIiwgIkV2ZW50UGF5bG9hZCIsICJDaGVja291dFN1Y2Nlc3NSZXNwb25zZSIsICJGaWVsZFZhbGlkYXRpb25FcnJvciIsICJUb2tlbml6ZUNhcmRFcnJvclJlc3BvbnNlIiwgIkNvbW1vbk5leHRBY3Rpb25NZXRhZGF0YSIsICJjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyIsICJzdHlsZXMiLCAibnVsbE9yVW5kZWZPciIsICJDb3Vwb25NaW5pbWFsIiwgIkxpbmVJdGVtIiwgIkJyYW5kU2V0dGluZ3MiLCAiQnJhbmQiLCAiQ2hlY2tvdXRQYXltZW50TWV0aG9kIiwgIlN1YnNjcmlwdGlvbkl0ZW1NaW5pbWFsIiwgIlN1YnNjcmlwdGlvbk1pbmltYWwiLCAiSW52b2ljZUl0ZW1EaXNjb3VudEFtb3VudHNNaW5pbWFsIiwgIkludm9pY2VMaW5lSXRlbU1pbmltYWwiLCAiRGlzY291bnRNaW5pbWFsIiwgIkludm9pY2VNaW5pbWFsIiwgIkNyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCIsICJQcmV2aWV3Q2hlY2tvdXRSZXNwb25zZSIsICJfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uIiwgIlBheW1lbnRGb3JtUHJlZmlsbCIsICJDb21wbGV0ZWRGb3JtUHJlZmlsbCIsICJFeHBpcmVkRm9ybVByZWZpbGwiLCAiUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IiLCAiTmV3Q3VzdG9tZXJGaWVsZHMiLCAiUHJpY2VRdHkiLCAiQ2FydEluZm8iLCAiUHJvY2Vzc29yU3BlY2lmaWNNZXRhZGF0YSIsICJmaXhQcm90byIsICJ0YXJnZXQiLCAicHJvdG90eXBlIiwgInNldFByb3RvdHlwZU9mIiwgImZpeFN0YWNrIiwgImNhcHR1cmVTdGFja1RyYWNlIiwgIl9fZXh0ZW5kcyIsICJfZXh0ZW5kU3RhdGljcyIsICJwIiwgIl9fIiwgIl9zdXBlciIsICJDdXN0b21FcnJvciIsICJtZXNzYWdlIiwgIm9wdGlvbnMiLCAiX25ld1RhcmdldCIsICJfdGhpcyIsICJjcmVhdGVPanNGbG93TG9nZ2VycyIsICJwcmVmaXgiLCAibG9nIiwgImVyciIsICJBV1hfTE9BRElORyIsICJBZHllbkVudmlyb25tZW50IiwgIlBheW1lbnRQcm9jZXNzb3IiLCAiUGF5SW5TdGF0ZSIsICJQYXlJblN0YXRlMiIsICJQUl9MT0FESU5HIiwgImVycl9fIiwgIk9wdGlvbmFsRm4iLCAiWm9kRm9ybUNhbGxiYWNrcyIsICJfRm9ybUNhbGxiYWNrcyIsICJyYXdDYWxsYmFja3MiLCAia2V5IiwgInJhd0NhbGxiYWNrIiwgInNhZmVDYWxsYmFjayIsICJvYmoiLCAiaW5zdGFuY2UiLCAiRm9ybUNhbGxiYWNrcyIsICJ1c2VSZWFjdGl2ZUZvcm1DYWxsYmFja3MiLCAicHJvcHMiLCAiZm9ybUNhbGxiYWNrcyIsICJ1c2VQYXltZW50UmVxdWVzdHMiLCAib3JpZ2luYWxPblBheW1lbnRSZXF1ZXN0TG9hZCIsICJwYXltZW50UmVxdWVzdHMiLCAic2V0UGF5bWVudFJlcXVlc3RzIiwgIm92ZXJyaWRlbk9uUGF5bWVudFJlcXVlc3RMb2FkIiwgInBheW1lbnRSZXF1ZXN0czIiLCAiRk9STV9UQVJHRVQiLCAiRWxlbWVudHNGb3JtIiwgIm9wRm9ybSIsICJzZXRPcEZvcm0iLCAiZWxlbWVudHNDb250ZXh0VmFsdWUiLCAic2V0RWxlbWVudHNDb250ZXh0VmFsdWUiLCAibG9hZGVkIiwgInNldExvYWRlZCIsICJzdHJpcGVMaW5rQ3RybCIsICJzZXRTdHJpcGVMaW5rQ3RybCIsICJsb29wQ29uZmlnIiwgInNldExvb3BDb25maWciLCAiYWlyd2FsbGV4IiwgInNldEFpcndhbGxleCIsICJ0b3RhbEFtb3VudEF0b21zIiwgImN1cnJlbmN5IiwgImZvcm0iLCAidmFsdWUiLCAiZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUiLCAicmVzdWx0IiwgInByZXYiLCAiY2hpbGRyZW5Qcm9wcyIsICJFbGVtZW50RnJhbWUiLCAiZWxlbWVudFR5cGUiLCAiZm9ybUlkIiwgInJlZmVycmVyIiwgImZvcm1IZWlnaHQiLCAiY2hlY2tvdXRTZWN1cmVUb2tlbiIsICJyZWdpc3RlcklmcmFtZSIsICJiYXNlVXJsIiwgInN1YlBhdGgiLCAiaGFzTG9hZGVkIiwgInNldEhhc0xvYWRlZCIsICJpZnJhbWVSZWYiLCAiZWxlbWVudFN0eWxlIiwgImZyYW1lU3R5bGUiLCAicXVlcnlTdHJpbmciLCAicGFyYW1zIiwgIkNhcmRDdmNFbGVtZW50IiwgIkNhcmRFbGVtZW50IiwgIkNhcmRFeHBpcnlFbGVtZW50IiwgIkNhcmROdW1iZXJFbGVtZW50Il0KfQo=
|