@getopenpay/openpay-js-react 0.2.35 → 0.2.36
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 +136 -152
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createContext as ro, useContext as no, useState as me, useCallback as oo, useEffect as Nt, useRef as io, useMemo as Tt } from "react";
|
|
2
|
-
import { jsx as
|
|
2
|
+
import { jsx as Z, Fragment as Rt } from "react/jsx-runtime";
|
|
3
3
|
import { z as n } from "zod";
|
|
4
4
|
import { v4 as Ye } from "uuid";
|
|
5
5
|
import { connectToChild as Ur } from "penpal";
|
|
@@ -97,7 +97,7 @@ n.object({
|
|
|
97
97
|
lineHeight: S,
|
|
98
98
|
hideIcon: S
|
|
99
99
|
});
|
|
100
|
-
const
|
|
100
|
+
const X = n.enum([
|
|
101
101
|
// Element -> Form
|
|
102
102
|
"LAYOUT",
|
|
103
103
|
"LOADED",
|
|
@@ -118,34 +118,34 @@ const W = n.enum([
|
|
|
118
118
|
"TOKENIZE",
|
|
119
119
|
"CHECKOUT",
|
|
120
120
|
"START_PAYMENT_FLOW"
|
|
121
|
-
]), vo =
|
|
121
|
+
]), vo = X.extract(["TOKENIZE_STARTED", "CHECKOUT_STARTED"]), bo = n.object({ type: vo }), wo = X.extract(["BLUR", "FOCUS", "CHANGE"]), Eo = n.object({
|
|
122
122
|
type: wo,
|
|
123
123
|
elementType: $r,
|
|
124
124
|
errors: n.array(n.string()).optional()
|
|
125
|
-
}), Po =
|
|
125
|
+
}), Po = X.extract(["LOAD_ERROR", "TOKENIZE_ERROR", "CHECKOUT_ERROR"]), Co = n.object({
|
|
126
126
|
type: Po,
|
|
127
127
|
message: O,
|
|
128
128
|
headers: n.record(n.string(), n.string()).optional()
|
|
129
|
-
}), So =
|
|
129
|
+
}), So = X.extract(["VALIDATION_ERROR"]), ko = n.object({
|
|
130
130
|
type: So,
|
|
131
131
|
elementType: Gr,
|
|
132
132
|
errors: n.array(n.string())
|
|
133
133
|
}), Ao = n.object({
|
|
134
|
-
type: n.literal(
|
|
134
|
+
type: n.literal(X.enum.LAYOUT),
|
|
135
135
|
height: O
|
|
136
136
|
}), Io = n.object({
|
|
137
|
-
type: n.literal(
|
|
137
|
+
type: n.literal(X.enum.LOADED),
|
|
138
138
|
sessionId: O,
|
|
139
139
|
totalAmountAtoms: n.number(),
|
|
140
140
|
currency: S,
|
|
141
141
|
checkoutPaymentMethods: n.array(ht)
|
|
142
142
|
}), To = n.object({
|
|
143
|
-
type: n.literal(
|
|
143
|
+
type: n.literal(X.enum.PAYMENT_FLOW_STARTED),
|
|
144
144
|
nextActionMetadata: n.record(n.string(), n.any()),
|
|
145
145
|
paymentFlowMetadata: n.any().optional(),
|
|
146
146
|
startPFMetadata: n.optional(n.record(n.string(), n.any()))
|
|
147
147
|
}), Ro = n.object({
|
|
148
|
-
type: n.literal(
|
|
148
|
+
type: n.literal(X.enum.SETUP_PAYMENT_METHOD_SUCCESS),
|
|
149
149
|
paymentMethodId: n.string()
|
|
150
150
|
}), He = n.object({
|
|
151
151
|
firstName: O,
|
|
@@ -164,7 +164,7 @@ const W = n.enum([
|
|
|
164
164
|
address: S,
|
|
165
165
|
city: S,
|
|
166
166
|
state: S
|
|
167
|
-
}), xo =
|
|
167
|
+
}), xo = X.extract(["TOKENIZE", "CHECKOUT", "START_PAYMENT_FLOW"]), jo = n.object({
|
|
168
168
|
type: xo,
|
|
169
169
|
sessionId: O,
|
|
170
170
|
checkoutPaymentMethod: ht,
|
|
@@ -173,10 +173,10 @@ const W = n.enum([
|
|
|
173
173
|
existingCCPMId: S,
|
|
174
174
|
paymentRouteId: S
|
|
175
175
|
}).extend(He.shape), Mo = n.object({
|
|
176
|
-
type: n.literal(
|
|
176
|
+
type: n.literal(X.enum.TOKENIZE_SUCCESS),
|
|
177
177
|
isReadyForCheckout: n.boolean()
|
|
178
178
|
}), Lo = n.object({
|
|
179
|
-
type: n.literal(
|
|
179
|
+
type: n.literal(X.enum.CHECKOUT_SUCCESS),
|
|
180
180
|
invoiceUrls: n.array(n.string()),
|
|
181
181
|
subscriptionIds: n.array(n.string()),
|
|
182
182
|
customerId: n.string()
|
|
@@ -1958,7 +1958,7 @@ const z = async (e, t, r, o) => {
|
|
|
1958
1958
|
return g("start_payment_flow_for_pr_result", {
|
|
1959
1959
|
...r
|
|
1960
1960
|
}), r;
|
|
1961
|
-
},
|
|
1961
|
+
}, J = async (e, t) => await z(
|
|
1962
1962
|
e,
|
|
1963
1963
|
{ type: "confirm_payment_flow", payload: t },
|
|
1964
1964
|
Go,
|
|
@@ -2035,8 +2035,8 @@ const z = async (e, t, r, o) => {
|
|
|
2035
2035
|
e,
|
|
2036
2036
|
{ type: "set_user_device_token", payload: { device_token: t } },
|
|
2037
2037
|
wi
|
|
2038
|
-
),
|
|
2039
|
-
|
|
2038
|
+
), W = n.enum(["stripe", "airwallex", "authorize_net"]);
|
|
2039
|
+
W.Enum.stripe;
|
|
2040
2040
|
const yn = ({
|
|
2041
2041
|
scriptId: e,
|
|
2042
2042
|
src: t,
|
|
@@ -2171,7 +2171,7 @@ const qa = ({
|
|
|
2171
2171
|
if (e.payment_methods.length !== 1)
|
|
2172
2172
|
throw new Error(`Expected exactly one payment method, got ${e.payment_methods.length}`);
|
|
2173
2173
|
return { payment_method_id: e.payment_methods[0].id };
|
|
2174
|
-
},
|
|
2174
|
+
}, ee = (e, t) => {
|
|
2175
2175
|
const r = e.find((o) => t.safeParse(o).success);
|
|
2176
2176
|
if (!r)
|
|
2177
2177
|
throw Va("No CPMs found for model. All models:", e), new Error("No CPMs found for model");
|
|
@@ -2404,7 +2404,7 @@ async function ns(e, t) {
|
|
|
2404
2404
|
throw new Error("3DS verification cancelled");
|
|
2405
2405
|
if (r === M.FAILURE)
|
|
2406
2406
|
throw new Error("3DS verification failed");
|
|
2407
|
-
const o = await
|
|
2407
|
+
const o = await J(t.connection, {
|
|
2408
2408
|
secure_token: t.prefill.token,
|
|
2409
2409
|
processor_specific_metadata: {
|
|
2410
2410
|
their_pm_id: e.their_pm_id,
|
|
@@ -2438,7 +2438,7 @@ async function os(e, t) {
|
|
|
2438
2438
|
})).required_user_actions[0].consent_id;
|
|
2439
2439
|
if (!d)
|
|
2440
2440
|
throw new Error("No consent ID received from payment flow");
|
|
2441
|
-
let y = await
|
|
2441
|
+
let y = await J(t.connection, {
|
|
2442
2442
|
secure_token: t.prefill.token,
|
|
2443
2443
|
processor_specific_metadata: {
|
|
2444
2444
|
payment_provider: t.checkoutPaymentMethod.provider,
|
|
@@ -2480,12 +2480,12 @@ async function os(e, t) {
|
|
|
2480
2480
|
const { log__: Fe, err__: kn } = I("awx-apple-pay"), is = Ce(
|
|
2481
2481
|
async ({ context: e, formCallbacks: t }) => {
|
|
2482
2482
|
const r = {
|
|
2483
|
-
processor:
|
|
2483
|
+
processor: W.Enum.airwallex,
|
|
2484
2484
|
isAvailable: !1,
|
|
2485
2485
|
isLoading: !1,
|
|
2486
2486
|
startFlow: async () => {
|
|
2487
2487
|
}
|
|
2488
|
-
}, o =
|
|
2488
|
+
}, o = ee(e.checkoutPaymentMethods, En);
|
|
2489
2489
|
if (!o)
|
|
2490
2490
|
return r;
|
|
2491
2491
|
if (Fe("Loading Apple Pay script"), await _n(), !window.ApplePaySession || !ApplePaySession.canMakePayments())
|
|
@@ -2512,7 +2512,7 @@ const { log__: Fe, err__: kn } = I("awx-apple-pay"), is = Ce(
|
|
|
2512
2512
|
}
|
|
2513
2513
|
};
|
|
2514
2514
|
return {
|
|
2515
|
-
processor:
|
|
2515
|
+
processor: W.Enum.airwallex,
|
|
2516
2516
|
isAvailable: !0,
|
|
2517
2517
|
isLoading: !1,
|
|
2518
2518
|
startFlow: l
|
|
@@ -2527,7 +2527,7 @@ const { log__: Fe, err__: kn } = I("awx-apple-pay"), is = Ce(
|
|
|
2527
2527
|
formCallbacks: i
|
|
2528
2528
|
}) => {
|
|
2529
2529
|
var a;
|
|
2530
|
-
const s =
|
|
2530
|
+
const s = ee(e.checkoutPaymentMethods, En), { overridePaymentRequest: c, initialPreview: l } = o, u = e.anyCdeConnection, d = await q(u), y = d.mode === "setup", f = vn({
|
|
2531
2531
|
overridePaymentRequest: c,
|
|
2532
2532
|
initialPreview: l,
|
|
2533
2533
|
prefill: {
|
|
@@ -2658,27 +2658,27 @@ const In = async (e) => await cn(e) === "prod" ? "PRODUCTION" : "TEST", wt = asy
|
|
|
2658
2658
|
y || f ? (s[h.FIRST_NAME] = y, s[h.LAST_NAME] = f) : (s[h.FIRST_NAME] = "_OP_UNKNOWN", s[h.LAST_NAME] = "");
|
|
2659
2659
|
}
|
|
2660
2660
|
return s;
|
|
2661
|
-
}, { log__:
|
|
2661
|
+
}, { log__: Q, err__: Se } = I("awx-google-pay"), cs = Ce(
|
|
2662
2662
|
async ({ context: e, formCallbacks: t }) => {
|
|
2663
2663
|
var r, o;
|
|
2664
2664
|
const i = {
|
|
2665
|
-
processor:
|
|
2665
|
+
processor: W.Enum.airwallex,
|
|
2666
2666
|
isAvailable: !1,
|
|
2667
2667
|
isLoading: !1,
|
|
2668
2668
|
startFlow: async () => {
|
|
2669
2669
|
}
|
|
2670
|
-
}, a =
|
|
2670
|
+
}, a = ee(e.checkoutPaymentMethods, Pn);
|
|
2671
2671
|
if (!a)
|
|
2672
2672
|
return i;
|
|
2673
|
-
|
|
2673
|
+
Q("Google Pay CPM", a);
|
|
2674
2674
|
const s = a.metadata;
|
|
2675
2675
|
if (!s.processor_account_id)
|
|
2676
2676
|
return Se("No gateway merchant ID found in processor account"), i;
|
|
2677
|
-
if (
|
|
2677
|
+
if (Q("Loading Google Pay script"), await An(), !((o = (r = window.google) == null ? void 0 : r.payments) != null && o.api))
|
|
2678
2678
|
return Se("Google Pay SDK not loaded properly"), i;
|
|
2679
2679
|
if (await In(e.baseUrl) === "PRODUCTION" && !s.google_pay_merchant_id)
|
|
2680
2680
|
return Se("Google Pay merchant ID is required for production environment"), i;
|
|
2681
|
-
|
|
2681
|
+
Q("Google Pay SDK loaded", window.google.payments);
|
|
2682
2682
|
try {
|
|
2683
2683
|
const f = bt({
|
|
2684
2684
|
gateway: "airwallex",
|
|
@@ -2692,7 +2692,7 @@ const In = async (e) => await cn(e) === "prod" ? "PRODUCTION" : "TEST", wt = asy
|
|
|
2692
2692
|
}
|
|
2693
2693
|
}), p = await wt(e.baseUrl, f), { result: m } = await p.isReadyToPay(f);
|
|
2694
2694
|
if (!m)
|
|
2695
|
-
return
|
|
2695
|
+
return Q("Google Pay is not available for this user"), i;
|
|
2696
2696
|
} catch (f) {
|
|
2697
2697
|
return Se("Error checking Google Pay availability", f), i;
|
|
2698
2698
|
}
|
|
@@ -2714,7 +2714,7 @@ const In = async (e) => await cn(e) === "prod" ? "PRODUCTION" : "TEST", wt = asy
|
|
|
2714
2714
|
}
|
|
2715
2715
|
};
|
|
2716
2716
|
return {
|
|
2717
|
-
processor:
|
|
2717
|
+
processor: W.Enum.airwallex,
|
|
2718
2718
|
isAvailable: !0,
|
|
2719
2719
|
isLoading: !1,
|
|
2720
2720
|
startFlow: y
|
|
@@ -2729,8 +2729,8 @@ const In = async (e) => await cn(e) === "prod" ? "PRODUCTION" : "TEST", wt = asy
|
|
|
2729
2729
|
customParams: i
|
|
2730
2730
|
}) => {
|
|
2731
2731
|
var a, s, c, l, u, d, y;
|
|
2732
|
-
|
|
2733
|
-
const f =
|
|
2732
|
+
Q("Starting Google Pay flow...");
|
|
2733
|
+
const f = ee(e.checkoutPaymentMethods, Pn), { initialPreview: p, overridePaymentRequest: m } = i, _ = f.metadata;
|
|
2734
2734
|
if (!_.processor_account_id)
|
|
2735
2735
|
throw new Error("No gateway merchant ID found in processor account");
|
|
2736
2736
|
const E = bt({
|
|
@@ -2749,14 +2749,14 @@ const In = async (e) => await cn(e) === "prod" ? "PRODUCTION" : "TEST", wt = asy
|
|
|
2749
2749
|
const P = await wt(e.baseUrl, E);
|
|
2750
2750
|
try {
|
|
2751
2751
|
const R = await P.loadPaymentData(E);
|
|
2752
|
-
|
|
2753
|
-
const ge = Tn(r, R),
|
|
2752
|
+
Q("Google Pay Payment data", R);
|
|
2753
|
+
const ge = Tn(r, R), re = ye(
|
|
2754
2754
|
ge,
|
|
2755
2755
|
o.get.onValidationError,
|
|
2756
2756
|
i == null ? void 0 : i.defaultFieldValues
|
|
2757
2757
|
);
|
|
2758
2758
|
g("billing_details_received", {
|
|
2759
|
-
...
|
|
2759
|
+
...re
|
|
2760
2760
|
});
|
|
2761
2761
|
const pe = (s = (a = R.paymentMethodData) == null ? void 0 : a.tokenizationData) == null ? void 0 : s.token;
|
|
2762
2762
|
if (!pe)
|
|
@@ -2764,16 +2764,16 @@ const In = async (e) => await cn(e) === "prod" ? "PRODUCTION" : "TEST", wt = asy
|
|
|
2764
2764
|
const to = await Me(w, {
|
|
2765
2765
|
payment_provider: t.provider,
|
|
2766
2766
|
checkout_payment_method: t,
|
|
2767
|
-
new_customer_email:
|
|
2768
|
-
new_customer_first_name:
|
|
2769
|
-
new_customer_last_name:
|
|
2767
|
+
new_customer_email: re[h.EMAIL],
|
|
2768
|
+
new_customer_first_name: re[h.FIRST_NAME],
|
|
2769
|
+
new_customer_last_name: re[h.LAST_NAME],
|
|
2770
2770
|
new_customer_address: {
|
|
2771
|
-
zip_code:
|
|
2772
|
-
country:
|
|
2771
|
+
zip_code: re[h.ZIP_CODE],
|
|
2772
|
+
country: re[h.COUNTRY]
|
|
2773
2773
|
}
|
|
2774
2774
|
}), At = ss(to);
|
|
2775
|
-
|
|
2776
|
-
let ve = await
|
|
2775
|
+
Q("Start flow next actions", At);
|
|
2776
|
+
let ve = await J(w, {
|
|
2777
2777
|
secure_token: C.token,
|
|
2778
2778
|
processor_specific_metadata: {
|
|
2779
2779
|
payment_provider: t.provider,
|
|
@@ -2788,36 +2788,36 @@ const In = async (e) => await cn(e) === "prod" ? "PRODUCTION" : "TEST", wt = asy
|
|
|
2788
2788
|
}
|
|
2789
2789
|
}
|
|
2790
2790
|
});
|
|
2791
|
-
|
|
2791
|
+
Q("[1st] Confirm payment flow response", ve);
|
|
2792
2792
|
let It = (l = (c = ve.payment_methods) == null ? void 0 : c[0]) == null ? void 0 : l.id;
|
|
2793
2793
|
const be = (u = ve.required_user_actions) == null ? void 0 : u.find(
|
|
2794
2794
|
(Ue) => Ue.type === "airwallex_payment_consent"
|
|
2795
2795
|
);
|
|
2796
2796
|
if (be && be.redirect_url) {
|
|
2797
|
-
|
|
2797
|
+
Q("3DS Required, starting verification...", be);
|
|
2798
2798
|
const { status: Ue } = await vt({
|
|
2799
2799
|
url: be.redirect_url,
|
|
2800
2800
|
baseUrl: e.baseUrl
|
|
2801
2801
|
});
|
|
2802
|
-
if (
|
|
2802
|
+
if (Q(`╰ 3DS verification completed [Status: ${Ue}]`), Ue === M.CANCELLED)
|
|
2803
2803
|
throw new Error("3DS verification cancelled");
|
|
2804
2804
|
if (Ue === M.FAILURE)
|
|
2805
2805
|
throw new Error("3DS verification failed");
|
|
2806
2806
|
}
|
|
2807
|
-
if (be && !It && (ve = await
|
|
2807
|
+
if (be && !It && (ve = await J(w, {
|
|
2808
2808
|
secure_token: C.token,
|
|
2809
2809
|
their_pm_id: be.their_pm_id,
|
|
2810
2810
|
processor_specific_metadata: {
|
|
2811
2811
|
payment_provider: t.provider,
|
|
2812
2812
|
airwallex_consent_id: be.consent_id
|
|
2813
2813
|
}
|
|
2814
|
-
}),
|
|
2814
|
+
}), Q("[2nd] Confirm payment flow response", ve), It = (y = (d = ve.payment_methods) == null ? void 0 : d[0]) == null ? void 0 : y.id), !It)
|
|
2815
2815
|
throw new Error("No PM ID found");
|
|
2816
2816
|
return gt({
|
|
2817
2817
|
logPrefix: "awx-googlepay",
|
|
2818
2818
|
anyCdeConnection: w,
|
|
2819
2819
|
checkoutPaymentMethod: t,
|
|
2820
|
-
requiredFormFields:
|
|
2820
|
+
requiredFormFields: re,
|
|
2821
2821
|
confirmResult: ve,
|
|
2822
2822
|
usePayFirstFlow: !1
|
|
2823
2823
|
});
|
|
@@ -2884,7 +2884,7 @@ async function ds(e, t) {
|
|
|
2884
2884
|
const c = {
|
|
2885
2885
|
dataDescriptor: "COMMON.APPLE.INAPP.PAYMENT",
|
|
2886
2886
|
dataValue: window.btoa(JSON.stringify(i.token.paymentData))
|
|
2887
|
-
}, l = await
|
|
2887
|
+
}, l = await J(t.connection, {
|
|
2888
2888
|
secure_token: t.prefill.token,
|
|
2889
2889
|
processor_specific_metadata: {
|
|
2890
2890
|
payment_provider: t.checkoutPaymentMethod.provider,
|
|
@@ -2914,12 +2914,12 @@ async function ds(e, t) {
|
|
|
2914
2914
|
const { log__: nt, err__: xn } = I("authnet-applepay"), ps = Ce(
|
|
2915
2915
|
async ({ context: e, formCallbacks: t }) => {
|
|
2916
2916
|
const r = {
|
|
2917
|
-
processor:
|
|
2917
|
+
processor: W.Enum.authorize_net,
|
|
2918
2918
|
isAvailable: !1,
|
|
2919
2919
|
isLoading: !1,
|
|
2920
2920
|
startFlow: async () => {
|
|
2921
2921
|
}
|
|
2922
|
-
}, o =
|
|
2922
|
+
}, o = ee(e.checkoutPaymentMethods, Rn);
|
|
2923
2923
|
if (!o)
|
|
2924
2924
|
return r;
|
|
2925
2925
|
if (nt("Loading Apple Pay script"), await _n(), !window.ApplePaySession || !ApplePaySession.canMakePayments())
|
|
@@ -2948,7 +2948,7 @@ const { log__: nt, err__: xn } = I("authnet-applepay"), ps = Ce(
|
|
|
2948
2948
|
}
|
|
2949
2949
|
};
|
|
2950
2950
|
return {
|
|
2951
|
-
processor:
|
|
2951
|
+
processor: W.Enum.authorize_net,
|
|
2952
2952
|
isAvailable: !0,
|
|
2953
2953
|
isLoading: !1,
|
|
2954
2954
|
startFlow: l
|
|
@@ -2963,7 +2963,7 @@ const { log__: nt, err__: xn } = I("authnet-applepay"), ps = Ce(
|
|
|
2963
2963
|
formCallbacks: i
|
|
2964
2964
|
}) => {
|
|
2965
2965
|
var a;
|
|
2966
|
-
const { initialPreview: s, overridePaymentRequest: c } = o, l =
|
|
2966
|
+
const { initialPreview: s, overridePaymentRequest: c } = o, l = ee(e.checkoutPaymentMethods, Rn), u = e.anyCdeConnection, d = await q(u), y = d.mode === "setup", f = vn({
|
|
2967
2967
|
overridePaymentRequest: c,
|
|
2968
2968
|
initialPreview: s,
|
|
2969
2969
|
prefill: d,
|
|
@@ -3019,12 +3019,12 @@ const { log__: nt, err__: xn } = I("authnet-applepay"), ps = Ce(
|
|
|
3019
3019
|
var r, o;
|
|
3020
3020
|
Ee("Initializing Authnet GooglePay flow");
|
|
3021
3021
|
const i = {
|
|
3022
|
-
processor:
|
|
3022
|
+
processor: W.Enum.authorize_net,
|
|
3023
3023
|
isAvailable: !1,
|
|
3024
3024
|
isLoading: !1,
|
|
3025
3025
|
startFlow: async () => {
|
|
3026
3026
|
}
|
|
3027
|
-
}, a =
|
|
3027
|
+
}, a = ee(e.checkoutPaymentMethods, On);
|
|
3028
3028
|
if (!a)
|
|
3029
3029
|
return i;
|
|
3030
3030
|
Ee("Google Pay CPM", a);
|
|
@@ -3071,7 +3071,7 @@ const { log__: nt, err__: xn } = I("authnet-applepay"), ps = Ce(
|
|
|
3071
3071
|
}
|
|
3072
3072
|
};
|
|
3073
3073
|
return {
|
|
3074
|
-
processor:
|
|
3074
|
+
processor: W.Enum.authorize_net,
|
|
3075
3075
|
isAvailable: !0,
|
|
3076
3076
|
isLoading: !1,
|
|
3077
3077
|
startFlow: y
|
|
@@ -3086,7 +3086,7 @@ const { log__: nt, err__: xn } = I("authnet-applepay"), ps = Ce(
|
|
|
3086
3086
|
customParams: i
|
|
3087
3087
|
}) => {
|
|
3088
3088
|
var a, s, c, l;
|
|
3089
|
-
const { initialPreview: u, overridePaymentRequest: d } = i, y =
|
|
3089
|
+
const { initialPreview: u, overridePaymentRequest: d } = i, y = ee(e.checkoutPaymentMethods, On).metadata, f = bt({
|
|
3090
3090
|
gateway: "authorizenet",
|
|
3091
3091
|
gatewayMerchantId: y.processor_account_id,
|
|
3092
3092
|
merchantName: y.processor_account_name,
|
|
@@ -3122,7 +3122,7 @@ const { log__: nt, err__: xn } = I("authnet-applepay"), ps = Ce(
|
|
|
3122
3122
|
}
|
|
3123
3123
|
});
|
|
3124
3124
|
Ee("Start payment flow response", R);
|
|
3125
|
-
const ge = await
|
|
3125
|
+
const ge = await J(p, {
|
|
3126
3126
|
secure_token: m.token,
|
|
3127
3127
|
processor_specific_metadata: {
|
|
3128
3128
|
payment_provider: r.provider,
|
|
@@ -3370,7 +3370,7 @@ const xs = de(
|
|
|
3370
3370
|
const m = f.cc_pm_id;
|
|
3371
3371
|
if (c.mode === "setup") {
|
|
3372
3372
|
A(`├ Confirming payment flow [cc_pm_id: ${m}]`);
|
|
3373
|
-
const _ = await
|
|
3373
|
+
const _ = await J(s, {
|
|
3374
3374
|
secure_token: c.token,
|
|
3375
3375
|
existing_cc_pm_id: m
|
|
3376
3376
|
});
|
|
@@ -3451,7 +3451,7 @@ const xs = de(
|
|
|
3451
3451
|
}, Vs = Ce(
|
|
3452
3452
|
async ({ context: e }) => {
|
|
3453
3453
|
$("Checking if there are any CPMs for Loop Crypto...");
|
|
3454
|
-
const t =
|
|
3454
|
+
const t = ee(e.checkoutPaymentMethods, Fs);
|
|
3455
3455
|
$(`checkoutPaymentMethod: ${JSON.stringify(t)}`), $("Starting Loop Crypto flow...");
|
|
3456
3456
|
const r = await q(e.anyCdeConnection), o = await Zt(e.anyCdeConnection, {
|
|
3457
3457
|
checkout_payment_method: t
|
|
@@ -3515,7 +3515,7 @@ const xs = de(
|
|
|
3515
3515
|
});
|
|
3516
3516
|
if (!i)
|
|
3517
3517
|
throw Error("Checkout failed. Failed to properly submit form data.");
|
|
3518
|
-
const d = await
|
|
3518
|
+
const d = await J(s, {
|
|
3519
3519
|
secure_token: c.token,
|
|
3520
3520
|
their_pm_id: i.success ? i.payin.paymentMethod.paymentMethodId : void 0,
|
|
3521
3521
|
checkout_attempt_id: c.mode !== "setup" ? u.checkout_attempt_id : void 0,
|
|
@@ -3540,7 +3540,7 @@ const xs = de(
|
|
|
3540
3540
|
};
|
|
3541
3541
|
}
|
|
3542
3542
|
}
|
|
3543
|
-
), { log__:
|
|
3543
|
+
), { log__: ne, err__: _r } = I("pockyt-paypal"), Gs = n.object({
|
|
3544
3544
|
processor_name: n.literal("pockyt"),
|
|
3545
3545
|
provider: n.literal("paypal")
|
|
3546
3546
|
});
|
|
@@ -3559,17 +3559,17 @@ const Bs = de(
|
|
|
3559
3559
|
customParams: i
|
|
3560
3560
|
}) => {
|
|
3561
3561
|
var a, s;
|
|
3562
|
-
|
|
3562
|
+
ne("Running Pockyt Paypal flow...");
|
|
3563
3563
|
const c = e.anyCdeConnection, l = await q(c);
|
|
3564
|
-
|
|
3564
|
+
ne("Verifying CPM...");
|
|
3565
3565
|
const u = Gs.parse(t);
|
|
3566
|
-
|
|
3566
|
+
ne("├ Validating non-CDE form fields");
|
|
3567
3567
|
const d = i == null ? void 0 : i.settings, y = ye(
|
|
3568
3568
|
r,
|
|
3569
3569
|
o.get.onValidationError,
|
|
3570
3570
|
d == null ? void 0 : d.defaultFieldValues
|
|
3571
3571
|
), f = $a(y);
|
|
3572
|
-
|
|
3572
|
+
ne(`Starting payment flow... Mode: ${l.mode}`);
|
|
3573
3573
|
const p = Ye(), m = l.mode !== "setup", _ = {
|
|
3574
3574
|
payment_provider: u.provider,
|
|
3575
3575
|
checkout_payment_method: u,
|
|
@@ -3589,25 +3589,25 @@ const Bs = de(
|
|
|
3589
3589
|
r: w
|
|
3590
3590
|
}), P = `${E}?${C.toString()}`;
|
|
3591
3591
|
if ((s = i == null ? void 0 : i.settings) != null && s.useRedirectFlow)
|
|
3592
|
-
throw
|
|
3593
|
-
|
|
3592
|
+
throw ne("Starting redirect mode for PayPal..."), window.location.href = P, await Yt(20 * 1e3), new Error("Paypal flow timed out, please try again with another payment method.");
|
|
3593
|
+
ne("Starting popup mode for PayPal..."), ne("Opening paypal iframe...");
|
|
3594
3594
|
const R = await Ka(
|
|
3595
3595
|
"PayPal",
|
|
3596
3596
|
c,
|
|
3597
3597
|
p,
|
|
3598
3598
|
P
|
|
3599
3599
|
);
|
|
3600
|
-
|
|
3601
|
-
const ge = Mn(R.href),
|
|
3602
|
-
if (!
|
|
3600
|
+
ne("Paypal flow result", R);
|
|
3601
|
+
const ge = Mn(R.href), re = vs(R.href, "catt");
|
|
3602
|
+
if (!re)
|
|
3603
3603
|
throw _r("Checkout attempt ID not found in redirect URL:", R.href), new Error("Checkout attempt ID not found in redirect URL");
|
|
3604
|
-
|
|
3605
|
-
const pe = await
|
|
3604
|
+
ne(`Confirming payment flow using vault ID ${ge}`);
|
|
3605
|
+
const pe = await J(c, {
|
|
3606
3606
|
secure_token: l.token,
|
|
3607
3607
|
their_pm_id: ge,
|
|
3608
|
-
checkout_attempt_id: m ?
|
|
3608
|
+
checkout_attempt_id: m ? re : void 0
|
|
3609
3609
|
});
|
|
3610
|
-
if (
|
|
3610
|
+
if (ne("Confirm payment flow result", pe), l.mode === "setup")
|
|
3611
3611
|
return {
|
|
3612
3612
|
mode: "setup",
|
|
3613
3613
|
result: {
|
|
@@ -3635,7 +3635,7 @@ const Bs = de(
|
|
|
3635
3635
|
async ({ context: e, formCallbacks: t }) => {
|
|
3636
3636
|
const r = e.customInitParams.stripeLink;
|
|
3637
3637
|
L("Checking if there are any CPMs for Stripe Link...");
|
|
3638
|
-
const o =
|
|
3638
|
+
const o = ee(e.checkoutPaymentMethods, Hs);
|
|
3639
3639
|
L("Starting stripe link flow...");
|
|
3640
3640
|
const i = e.anyCdeConnection, a = await q(i), s = a.mode === "setup";
|
|
3641
3641
|
L("Creating stripe elements...");
|
|
@@ -3721,7 +3721,7 @@ const Bs = de(
|
|
|
3721
3721
|
const u = Ks.parse(l.required_user_actions)[0].our_existing_pm_id, d = await q(a);
|
|
3722
3722
|
if (d.mode === "setup") {
|
|
3723
3723
|
L("Doing payment setup...");
|
|
3724
|
-
const y = await
|
|
3724
|
+
const y = await J(a, {
|
|
3725
3725
|
secure_token: d.token,
|
|
3726
3726
|
existing_cc_pm_id: u
|
|
3727
3727
|
});
|
|
@@ -3767,7 +3767,7 @@ const Bs = de(
|
|
|
3767
3767
|
}), tc = Ce(
|
|
3768
3768
|
async ({ context: e, formCallbacks: t }) => {
|
|
3769
3769
|
V("Checking if there are any CPMs for Stripe PR...");
|
|
3770
|
-
const r =
|
|
3770
|
+
const r = ee(e.checkoutPaymentMethods, ec);
|
|
3771
3771
|
V("Initializing Stripe PR flow...");
|
|
3772
3772
|
const o = e.anyCdeConnection, i = await q(o), a = i.mode === "setup";
|
|
3773
3773
|
V("Getting initial preview amount");
|
|
@@ -3789,7 +3789,7 @@ const Bs = de(
|
|
|
3789
3789
|
formCallbacks: t,
|
|
3790
3790
|
customParams: { provider: d, overridePaymentRequest: y == null ? void 0 : y.overridePaymentRequest },
|
|
3791
3791
|
initResult: {
|
|
3792
|
-
processor:
|
|
3792
|
+
processor: W.Enum.stripe,
|
|
3793
3793
|
pr: c,
|
|
3794
3794
|
isAvailable: !0,
|
|
3795
3795
|
availableProviders: { applePay: l.applePay, googlePay: l.googlePay },
|
|
@@ -3797,7 +3797,7 @@ const Bs = de(
|
|
|
3797
3797
|
}
|
|
3798
3798
|
});
|
|
3799
3799
|
return {
|
|
3800
|
-
processor:
|
|
3800
|
+
processor: W.Enum.stripe,
|
|
3801
3801
|
isAvailable: !0,
|
|
3802
3802
|
pr: c,
|
|
3803
3803
|
availableProviders: {
|
|
@@ -3840,7 +3840,7 @@ const Bs = de(
|
|
|
3840
3840
|
const p = await q(s);
|
|
3841
3841
|
if (p.mode === "setup") {
|
|
3842
3842
|
V("Confirming payment flow for setup...");
|
|
3843
|
-
const m = await
|
|
3843
|
+
const m = await J(s, {
|
|
3844
3844
|
secure_token: p.token
|
|
3845
3845
|
});
|
|
3846
3846
|
return { mode: "setup", result: Qe(m) };
|
|
@@ -4232,7 +4232,7 @@ const Ic = (e, t, r) => {
|
|
|
4232
4232
|
formCallbacks: o,
|
|
4233
4233
|
customParams: { provider: e, overridePaymentRequest: i == null ? void 0 : i.overridePaymentRequest },
|
|
4234
4234
|
initResult: t
|
|
4235
|
-
}), Pr = "The secure form failed to load properly. Please check your internet connection, or try again later.", { log__:
|
|
4235
|
+
}), Pr = "The secure form failed to load properly. Please check your internet connection, or try again later.", { log__: oe, err__: H } = I("op-form"), Ae = class it {
|
|
4236
4236
|
constructor(t) {
|
|
4237
4237
|
var r;
|
|
4238
4238
|
this.isDestroyed = !1, this.cdeLoadEvent = new Ve(), this.anyCdeConn = new Ve(), this.context = new Ve(), this.initFlows = lc(), this.startFormInit = async () => {
|
|
@@ -4249,27 +4249,27 @@ const Ic = (e, t, r) => {
|
|
|
4249
4249
|
position: "fixed",
|
|
4250
4250
|
pointerEvents: "none",
|
|
4251
4251
|
userSelect: "none"
|
|
4252
|
-
}), a.mount("body"),
|
|
4252
|
+
}), a.mount("body"), oe("CDE bridge element mounted"), oe("Initializing OpenPay form:"), oe("├ Waiting for CDE load event...");
|
|
4253
4253
|
const s = await this.cdeLoadEvent.waitForLoad({
|
|
4254
4254
|
timeoutSec: 120,
|
|
4255
4255
|
timeoutErrMsg: Pr
|
|
4256
4256
|
});
|
|
4257
|
-
|
|
4257
|
+
oe("├ CDE load event received"), oe("├ Waiting for CDE connection...");
|
|
4258
4258
|
const c = await this.anyCdeConn.waitForLoad({
|
|
4259
4259
|
timeoutSec: 120,
|
|
4260
4260
|
timeoutErrMsg: Pr
|
|
4261
4261
|
});
|
|
4262
|
-
|
|
4262
|
+
oe("├ CDE connection received"), await Fa(c, this.deviceToken), oe("├ Creating OJS context, setting up handlers...");
|
|
4263
4263
|
const l = it.buildOjsFlowContext(
|
|
4264
4264
|
this.config,
|
|
4265
4265
|
s,
|
|
4266
4266
|
c,
|
|
4267
4267
|
this.getFormDiv()
|
|
4268
4268
|
);
|
|
4269
|
-
this.context.set(l), Ic(this.initFlows, l, this.formCallbacks),
|
|
4269
|
+
this.context.set(l), Ic(this.initFlows, l, this.formCallbacks), oe("├ Starting OJS init flows..."), await cc(this.initFlows, l, this.formCallbacks), this.formCallbacks.get.onLoad(s.totalAmountAtoms, s.currency), oe("╰ Done initializing OJS flows."), g("form_loaded");
|
|
4270
4270
|
} catch (a) {
|
|
4271
4271
|
const s = B(a);
|
|
4272
|
-
|
|
4272
|
+
H("╰ Error initializing OP form:", s), g("form_init_error", {
|
|
4273
4273
|
error: s
|
|
4274
4274
|
}), this.formCallbacks.get.onLoadError(s);
|
|
4275
4275
|
}
|
|
@@ -4284,9 +4284,7 @@ const Ic = (e, t, r) => {
|
|
|
4284
4284
|
error: a
|
|
4285
4285
|
}));
|
|
4286
4286
|
}, this.createElement = (a, s = {}) => {
|
|
4287
|
-
if (
|
|
4288
|
-
throw new Error("Form instance is invalid or has been destroyed");
|
|
4289
|
-
if (!this.config) throw new Error("OpenPay form not initialized");
|
|
4287
|
+
if (this.checkValidFormInstance("createElement"), !this.config) throw new Error("OpenPay form not initialized");
|
|
4290
4288
|
const c = _o.parse(a), l = document.createElement("iframe"), u = this.buildQueryString(s);
|
|
4291
4289
|
l.name = `${c}-element`;
|
|
4292
4290
|
const d = new URL(`/app/v1/${l.name}/`, this.config.baseUrl);
|
|
@@ -4315,17 +4313,12 @@ const Ic = (e, t, r) => {
|
|
|
4315
4313
|
}, this.connectToElement = (a) => {
|
|
4316
4314
|
kc(a.node).then((s) => {
|
|
4317
4315
|
this.connectionManager.addConnection(a.type, s), !this.anyCdeConn.current.isSuccess && a.type === ie.CDE_BRIDGE && this.anyCdeConn.set(s);
|
|
4318
|
-
}).catch((s) =>
|
|
4316
|
+
}).catch((s) => H("[FORM] Error connecting to CDE iframe", s));
|
|
4319
4317
|
}, this.getFormDiv = () => document.querySelector(this.formTarget) ?? document.body, this.submitCard = (a) => {
|
|
4320
|
-
|
|
4321
|
-
g("outdated_form_instance", {
|
|
4322
|
-
caller: "submitCard"
|
|
4323
|
-
});
|
|
4324
|
-
return;
|
|
4325
|
-
}
|
|
4318
|
+
g("submit_card", { ...a }), this.checkValidFormInstance("submitCard");
|
|
4326
4319
|
const s = this.context.getValueIfLoadedElse(null);
|
|
4327
4320
|
if (!s) {
|
|
4328
|
-
|
|
4321
|
+
H("Please wait for the form to finish loading before submitting.");
|
|
4329
4322
|
return;
|
|
4330
4323
|
}
|
|
4331
4324
|
j.commonCC.run({
|
|
@@ -4341,10 +4334,8 @@ const Ic = (e, t, r) => {
|
|
|
4341
4334
|
// This flow requires no initialization
|
|
4342
4335
|
});
|
|
4343
4336
|
}, this.getAvailablePaymentMethods = () => {
|
|
4344
|
-
if (
|
|
4345
|
-
|
|
4346
|
-
if (!this.context.getValueIfLoadedElse(null)) {
|
|
4347
|
-
oe("Please wait for the form to finish loading before getting available payment methods.");
|
|
4337
|
+
if (this.checkValidFormInstance("getAvailablePaymentMethods"), !this.context.getValueIfLoadedElse(null)) {
|
|
4338
|
+
H("Please wait for the form to finish loading before getting available payment methods.");
|
|
4348
4339
|
return;
|
|
4349
4340
|
}
|
|
4350
4341
|
const a = {
|
|
@@ -4360,18 +4351,13 @@ const Ic = (e, t, r) => {
|
|
|
4360
4351
|
available_payment_methods: s
|
|
4361
4352
|
}), s;
|
|
4362
4353
|
}, this.generalSubmit = (a, s) => {
|
|
4363
|
-
|
|
4354
|
+
g("general_form_submit", {
|
|
4364
4355
|
method: a,
|
|
4365
4356
|
settings: s
|
|
4366
|
-
}),
|
|
4367
|
-
g("outdated_form_instance", {
|
|
4368
|
-
caller: "generalSubmit"
|
|
4369
|
-
});
|
|
4370
|
-
return;
|
|
4371
|
-
}
|
|
4357
|
+
}), this.checkValidFormInstance("generalSubmit");
|
|
4372
4358
|
const c = this.context.getValueIfLoadedElse(null);
|
|
4373
4359
|
if (!c) {
|
|
4374
|
-
|
|
4360
|
+
H("Please wait for the form to finish loading before submitting.");
|
|
4375
4361
|
return;
|
|
4376
4362
|
}
|
|
4377
4363
|
switch (a) {
|
|
@@ -4387,7 +4373,7 @@ const Ic = (e, t, r) => {
|
|
|
4387
4373
|
case G.airwallexGooglePay: {
|
|
4388
4374
|
const l = this.initFlows.airwallexGooglePay.publisher.getValueIfLoadedElse(null);
|
|
4389
4375
|
if (!l) {
|
|
4390
|
-
|
|
4376
|
+
H(
|
|
4391
4377
|
"airwallex-google-pay is not available. Please check the availability using 'getAvailablePaymentMethods()'"
|
|
4392
4378
|
);
|
|
4393
4379
|
return;
|
|
@@ -4397,7 +4383,7 @@ const Ic = (e, t, r) => {
|
|
|
4397
4383
|
case G.airwallexApplePay: {
|
|
4398
4384
|
const l = this.initFlows.airwallexApplePay.publisher.getValueIfLoadedElse(null);
|
|
4399
4385
|
if (!l) {
|
|
4400
|
-
|
|
4386
|
+
H(
|
|
4401
4387
|
"airwallex-apple-pay is not available. Please check the availability using 'getAvailablePaymentMethods()'"
|
|
4402
4388
|
);
|
|
4403
4389
|
return;
|
|
@@ -4407,7 +4393,7 @@ const Ic = (e, t, r) => {
|
|
|
4407
4393
|
case G.authorizenetGooglePay: {
|
|
4408
4394
|
const l = this.initFlows.authorizeNetGooglePay.publisher.getValueIfLoadedElse(null);
|
|
4409
4395
|
if (!l) {
|
|
4410
|
-
|
|
4396
|
+
H(
|
|
4411
4397
|
"authorize-net-google-pay is not available. Please check the availability using 'getAvailablePaymentMethods()'"
|
|
4412
4398
|
);
|
|
4413
4399
|
return;
|
|
@@ -4417,7 +4403,7 @@ const Ic = (e, t, r) => {
|
|
|
4417
4403
|
case G.authorizenetApplePay: {
|
|
4418
4404
|
const l = this.initFlows.authorizeNetApplePay.publisher.getValueIfLoadedElse(null);
|
|
4419
4405
|
if (!l) {
|
|
4420
|
-
|
|
4406
|
+
H(
|
|
4421
4407
|
"authorize-net-apple-pay is not available. Please check the availability using 'getAvailablePaymentMethods()'"
|
|
4422
4408
|
);
|
|
4423
4409
|
return;
|
|
@@ -4438,15 +4424,13 @@ const Ic = (e, t, r) => {
|
|
|
4438
4424
|
}
|
|
4439
4425
|
}, this.submit = this.submitCard, this.destroy = () => {
|
|
4440
4426
|
var a;
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
(a = T()) == null || a.removeEventListener("message", this.eventHandler.handleMessage.bind(this.eventHandler)), Aa(), this.registeredElements = null, delete window.ojs, g("form_destroyed");
|
|
4446
|
-
}
|
|
4427
|
+
oe("Destroying OpenPay form..."), this.checkValidFormInstance("destroy"), this.isDestroyed = !0;
|
|
4428
|
+
for (const s of Object.values(this.registeredElements ?? {}))
|
|
4429
|
+
s && s.node.remove();
|
|
4430
|
+
(a = T()) == null || a.removeEventListener("message", this.eventHandler.handleMessage.bind(this.eventHandler)), Aa(), this.registeredElements = null, delete window.ojs, g("form_destroyed");
|
|
4447
4431
|
}, this.updateCallbacks = (a) => {
|
|
4448
4432
|
this.formCallbacks.setCallbacks(a);
|
|
4449
|
-
}, it.assignAsSingleton(this), this.ojsVersion = "0.2.
|
|
4433
|
+
}, it.assignAsSingleton(this), this.ojsVersion = "0.2.36", this.ojsReleaseVersion = "local_build", this.baseUrl = t.baseUrl ?? "https://cde.getopenpay.com", this.config = { ...t, baseUrl: this.baseUrl }, this.formCallbacks = dc.fromObject(t), this.registeredElements = null, this.formId = `opjs-form-${Ye()}`, this.referrer = window.location.origin, this.formTarget = t.formTarget ?? "body", this.formProperties = { height: "1px" }, this.connectionManager = new Ac(), this.deviceToken = bc(), ka();
|
|
4450
4434
|
const { framework: o, version: i } = Cc();
|
|
4451
4435
|
cn(this.baseUrl).then((a) => {
|
|
4452
4436
|
if (!zt.current.isSuccess) {
|
|
@@ -4472,7 +4456,7 @@ const Ic = (e, t, r) => {
|
|
|
4472
4456
|
get checkoutSecureToken() {
|
|
4473
4457
|
return this.config.checkoutSecureToken;
|
|
4474
4458
|
}
|
|
4475
|
-
|
|
4459
|
+
checkValidFormInstance(t = "unknown") {
|
|
4476
4460
|
const r = it.getInstance(), o = {
|
|
4477
4461
|
caller: t,
|
|
4478
4462
|
thisFormId: this.formId,
|
|
@@ -4491,7 +4475,7 @@ const Ic = (e, t, r) => {
|
|
|
4491
4475
|
- is_destroyed: ${o.isDestroyed}
|
|
4492
4476
|
- checkout_token: ${o.checkoutToken}
|
|
4493
4477
|
`;
|
|
4494
|
-
return this.isDestroyed
|
|
4478
|
+
return this.isDestroyed ? (H(i), g("outdated_form_instance", { error: i }), !1) : !r || r.formId !== this.formId ? (H(i), g("outdated_form_instance", { error: i }), !1) : !0;
|
|
4495
4479
|
}
|
|
4496
4480
|
};
|
|
4497
4481
|
Ae.ojsFlows = j, Ae.assignAsSingleton = (e) => {
|
|
@@ -4562,7 +4546,7 @@ n.object({
|
|
|
4562
4546
|
lineHeight: k,
|
|
4563
4547
|
hideIcon: k
|
|
4564
4548
|
});
|
|
4565
|
-
const
|
|
4549
|
+
const te = n.enum([
|
|
4566
4550
|
// Element -> Form
|
|
4567
4551
|
"LAYOUT",
|
|
4568
4552
|
"LOADED",
|
|
@@ -4583,34 +4567,34 @@ const ee = n.enum([
|
|
|
4583
4567
|
"TOKENIZE",
|
|
4584
4568
|
"CHECKOUT",
|
|
4585
4569
|
"START_PAYMENT_FLOW"
|
|
4586
|
-
]), Lc =
|
|
4570
|
+
]), Lc = te.extract(["TOKENIZE_STARTED", "CHECKOUT_STARTED"]), Dc = n.object({ type: Lc }), Nc = te.extract(["BLUR", "FOCUS", "CHANGE"]), Uc = n.object({
|
|
4587
4571
|
type: Nc,
|
|
4588
4572
|
elementType: Vn,
|
|
4589
4573
|
errors: n.array(n.string()).optional()
|
|
4590
|
-
}), Fc =
|
|
4574
|
+
}), Fc = te.extract(["LOAD_ERROR", "TOKENIZE_ERROR", "CHECKOUT_ERROR"]), qc = n.object({
|
|
4591
4575
|
type: Fc,
|
|
4592
4576
|
message: x,
|
|
4593
4577
|
headers: n.record(n.string(), n.string()).optional()
|
|
4594
|
-
}), zc =
|
|
4578
|
+
}), zc = te.extract(["VALIDATION_ERROR"]), Vc = n.object({
|
|
4595
4579
|
type: zc,
|
|
4596
4580
|
elementType: jc,
|
|
4597
4581
|
errors: n.array(n.string())
|
|
4598
4582
|
}), $c = n.object({
|
|
4599
|
-
type: n.literal(
|
|
4583
|
+
type: n.literal(te.enum.LAYOUT),
|
|
4600
4584
|
height: x
|
|
4601
4585
|
}), Gc = n.object({
|
|
4602
|
-
type: n.literal(
|
|
4586
|
+
type: n.literal(te.enum.LOADED),
|
|
4603
4587
|
sessionId: x,
|
|
4604
4588
|
totalAmountAtoms: n.number(),
|
|
4605
4589
|
currency: k,
|
|
4606
4590
|
checkoutPaymentMethods: n.array(Pt)
|
|
4607
4591
|
}), Bc = n.object({
|
|
4608
|
-
type: n.literal(
|
|
4592
|
+
type: n.literal(te.enum.PAYMENT_FLOW_STARTED),
|
|
4609
4593
|
nextActionMetadata: n.record(n.string(), n.any()),
|
|
4610
4594
|
paymentFlowMetadata: n.any().optional(),
|
|
4611
4595
|
startPFMetadata: n.optional(n.record(n.string(), n.any()))
|
|
4612
4596
|
}), Yc = n.object({
|
|
4613
|
-
type: n.literal(
|
|
4597
|
+
type: n.literal(te.enum.SETUP_PAYMENT_METHOD_SUCCESS),
|
|
4614
4598
|
paymentMethodId: n.string()
|
|
4615
4599
|
}), Ct = n.object({
|
|
4616
4600
|
firstName: x,
|
|
@@ -4629,7 +4613,7 @@ const ee = n.enum([
|
|
|
4629
4613
|
address: k,
|
|
4630
4614
|
city: k,
|
|
4631
4615
|
state: k
|
|
4632
|
-
}), Kc =
|
|
4616
|
+
}), Kc = te.extract(["TOKENIZE", "CHECKOUT", "START_PAYMENT_FLOW"]), Qc = n.object({
|
|
4633
4617
|
type: Kc,
|
|
4634
4618
|
sessionId: x,
|
|
4635
4619
|
checkoutPaymentMethod: Pt,
|
|
@@ -4638,10 +4622,10 @@ const ee = n.enum([
|
|
|
4638
4622
|
existingCCPMId: k,
|
|
4639
4623
|
paymentRouteId: k
|
|
4640
4624
|
}).extend(Ct.shape), Zc = n.object({
|
|
4641
|
-
type: n.literal(
|
|
4625
|
+
type: n.literal(te.enum.TOKENIZE_SUCCESS),
|
|
4642
4626
|
isReadyForCheckout: n.boolean()
|
|
4643
4627
|
}), Jc = n.object({
|
|
4644
|
-
type: n.literal(
|
|
4628
|
+
type: n.literal(te.enum.CHECKOUT_SUCCESS),
|
|
4645
4629
|
invoiceUrls: n.array(n.string()),
|
|
4646
4630
|
subscriptionIds: n.array(n.string()),
|
|
4647
4631
|
customerId: n.string()
|
|
@@ -6409,18 +6393,18 @@ const Mr = {
|
|
|
6409
6393
|
and ".isAvailable" to know if a payment request is available.`
|
|
6410
6394
|
);
|
|
6411
6395
|
}
|
|
6412
|
-
}, { err__: Tu } = Yn("form-callbacks"),
|
|
6413
|
-
onFocus:
|
|
6414
|
-
onBlur:
|
|
6415
|
-
onChange:
|
|
6416
|
-
onLoad:
|
|
6417
|
-
onLoadError:
|
|
6418
|
-
onValidationError:
|
|
6419
|
-
onCheckoutStarted:
|
|
6420
|
-
onCheckoutSuccess:
|
|
6421
|
-
onSetupPaymentMethodSuccess:
|
|
6422
|
-
onCheckoutError:
|
|
6423
|
-
onPaymentRequestLoad:
|
|
6396
|
+
}, { err__: Tu } = Yn("form-callbacks"), K = n.function().optional(), Lr = n.object({
|
|
6397
|
+
onFocus: K,
|
|
6398
|
+
onBlur: K,
|
|
6399
|
+
onChange: K,
|
|
6400
|
+
onLoad: K,
|
|
6401
|
+
onLoadError: K,
|
|
6402
|
+
onValidationError: K,
|
|
6403
|
+
onCheckoutStarted: K,
|
|
6404
|
+
onCheckoutSuccess: K,
|
|
6405
|
+
onSetupPaymentMethodSuccess: K,
|
|
6406
|
+
onCheckoutError: K,
|
|
6407
|
+
onPaymentRequestLoad: K
|
|
6424
6408
|
}), ae = class ae {
|
|
6425
6409
|
constructor() {
|
|
6426
6410
|
this.setCallbacks = (t) => {
|
|
@@ -6526,7 +6510,7 @@ const Ru = (e) => {
|
|
|
6526
6510
|
w.destroy();
|
|
6527
6511
|
};
|
|
6528
6512
|
}, []), !t)
|
|
6529
|
-
return /* @__PURE__ */
|
|
6513
|
+
return /* @__PURE__ */ Z(Rt, {});
|
|
6530
6514
|
const E = {
|
|
6531
6515
|
submit: t.submitCard,
|
|
6532
6516
|
submitWith: t.generalSubmit,
|
|
@@ -6543,7 +6527,7 @@ const Ru = (e) => {
|
|
|
6543
6527
|
airwallex: p,
|
|
6544
6528
|
loop: y
|
|
6545
6529
|
};
|
|
6546
|
-
return /* @__PURE__ */
|
|
6530
|
+
return /* @__PURE__ */ Z(Rt, { children: o ? /* @__PURE__ */ Z(Fr.Provider, { value: o, children: /* @__PURE__ */ Z("div", { id: Dr, className: e.className, children: e.children(E) }) }) : /* @__PURE__ */ Z(Rt, {}) });
|
|
6547
6531
|
}, xu = (e) => ({
|
|
6548
6532
|
formId: e.formId,
|
|
6549
6533
|
formHeight: e.formProperties.height,
|
|
@@ -6564,9 +6548,9 @@ const Ru = (e) => {
|
|
|
6564
6548
|
if (Nt(() => y(!0), []), Nt(() => {
|
|
6565
6549
|
!f.current || !d || c(t, f.current);
|
|
6566
6550
|
}, [d]), !s)
|
|
6567
|
-
return console.error("[form] Cannot render partially initialized frame"), /* @__PURE__ */
|
|
6551
|
+
return console.error("[form] Cannot render partially initialized frame"), /* @__PURE__ */ Z("div", {});
|
|
6568
6552
|
const E = new URL(`/app/v1/${u}-element/`, l);
|
|
6569
|
-
return E.search = _, /* @__PURE__ */
|
|
6553
|
+
return E.search = _, /* @__PURE__ */ Z(
|
|
6570
6554
|
"iframe",
|
|
6571
6555
|
{
|
|
6572
6556
|
id: `ojs-${u}-element`,
|
|
@@ -6577,7 +6561,7 @@ const Ru = (e) => {
|
|
|
6577
6561
|
ref: f
|
|
6578
6562
|
}
|
|
6579
6563
|
);
|
|
6580
|
-
}, zu = ({ styles: e }) => /* @__PURE__ */
|
|
6564
|
+
}, zu = ({ styles: e }) => /* @__PURE__ */ Z(kt, { styles: e, elementType: De.CARD_CVC }), Vu = ({ styles: e }) => /* @__PURE__ */ Z(kt, { styles: e, elementType: De.CARD }), $u = ({ styles: e }) => /* @__PURE__ */ Z(kt, { styles: e, elementType: De.CARD_EXPIRY }), Gu = ({ styles: e }) => /* @__PURE__ */ Z(kt, { styles: e, elementType: De.CARD_NUMBER });
|
|
6581
6565
|
export {
|
|
6582
6566
|
zu as CardCvcElement,
|
|
6583
6567
|
Vu as CardElement,
|
|
@@ -6588,4 +6572,4 @@ export {
|
|
|
6588
6572
|
Au as PayInState,
|
|
6589
6573
|
ao as useOpenPayElements
|
|
6590
6574
|
};
|
|
6591
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXguanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgeiBhcyB6JDEgfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGNvbm5lY3RUb0NoaWxkIH0gZnJvbSAncGVucGFsJztcbmltcG9ydCBNZSBmcm9tICdjaGFsayc7XG5cbmNvbnN0IEVsZW1lbnRzQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoe1xuICBmb3JtSWQ6IFwiXCIsXG4gIGZvcm1IZWlnaHQ6IFwiXCIsXG4gIHJlZmVycmVyOiB2b2lkIDAsXG4gIGNoZWNrb3V0U2VjdXJlVG9rZW46IHZvaWQgMCxcbiAgcmVnaXN0ZXJJZnJhbWU6ICgpID0+IHtcbiAgfSxcbiAgYmFzZVVybDogXCJcIlxufSk7XG5cbmNvbnN0IHVzZU9wZW5QYXlFbGVtZW50cyA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRWxlbWVudHNDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlT3BlblBheUVsZW1lbnRzIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gT3BlblBheUVsZW1lbnRzUHJvdmlkZXJcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuXG5jb25zdCB4dCA9IFwiaHR0cHM6Ly9jZGUuZ2V0b3BlbnBheS5jb21cIiwgVm4gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pLCBHbiA9IHokMS5hcnJheShWbiksIHpuID0geiQxLm9iamVjdCh7XG4gIGNvZGU6IHokMS5zdHJpbmcoKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBwYXRoOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKVxufSksIHFuID0geiQxLmFycmF5KHpuKSwgWW4gPSB7XG4gIFwiZmFpbGVkIHRvIGZldGNoXCI6IFwiQ29ubmVjdGlvbiBlcnJvcjogcGxlYXNlIGRvdWJsZSBjaGVjayBpZiB5b3UgYXJlIGNvbm5lY3RlZCB0byB0aGUgaW50ZXJuZXQsIHRoZW4gdHJ5IGFnYWluXCJcbn0sIHR0ID0gKGUpID0+IHtcbiAgY29uc3QgbiA9IGUudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gIHJldHVybiBZbltuXSA/PyBlO1xufSwgQm4gPSAoZSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgSlNPTi5wYXJzZShlKSA9PSBcIm9iamVjdFwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gITE7XG4gIH1cbn0sIEhuID0gKGUpID0+IGUubGVuZ3RoID09PSAxID8gdHQoZVswXS5tc2cpIDogYFBsZWFzZSBmaXggdGhlIGZvbGxvd2luZyBlcnJvcnM6XG4ke2UubWFwKCh0KSA9PiBg4oCiICR7dHQodC5tc2cpfWApLmpvaW4oYFxuYCl9YCwgSm4gPSAoZSkgPT4gYEVuY291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZXJyb3JzOlxuJHtlLm1hcCgodCkgPT4gYC0gJHt0LnBhdGguam9pbihcIi9cIil9OiAke3QubWVzc2FnZX1gKS5qb2luKGBcbmApfWAsIFYgPSAoZSkgPT4ge1xuICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKVxuICAgIGlmIChCbihlLm1lc3NhZ2UpKSB7XG4gICAgICBjb25zdCBuID0gSlNPTi5wYXJzZShlLm1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIEduLnNhZmVQYXJzZShuKS5zdWNjZXNzID8gSG4obikgOiBxbi5zYWZlUGFyc2Uobikuc3VjY2VzcyA/IEpuKG4pIDogKGNvbnNvbGUud2FybihgRW5jb3VudGVyZWQgdW5rbm93biBzdHJpbmdpZmllZCBKU09OIG9iamVjdDpcbiR7ZS5tZXNzYWdlfWApLCBlLm1lc3NhZ2UpO1xuICAgIH0gZWxzZVxuICAgICAgcmV0dXJuIHR0KGUubWVzc2FnZSk7XG4gIGlmICh0eXBlb2YgZSA9PSBcIm9iamVjdFwiKVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSk7XG4gICAgfSBjYXRjaCAobikge1xuICAgICAgcmV0dXJuIG4gKyBcIlwiO1xuICAgIH1cbiAgZWxzZVxuICAgIHJldHVybiBlICsgXCJcIjtcbn0sIEtuID0gKGUsIG4sIHQpID0+ICguLi5yKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG4oLi4ucik7XG4gIH0gY2F0Y2ggKHMpIHtcbiAgICB0KGBbZm9ybV0gRXJyb3IgcnVubmluZyBjYWxsYmFjayAoJHtlfSk6YCwgcyk7XG4gICAgcmV0dXJuO1xuICB9XG59O1xudmFyICQgPSAvKiBAX19QVVJFX18gKi8gKChlKSA9PiAoZS5wb2NreXRQYXlwYWwgPSBcInBvY2t5dC1wYXlwYWxcIiwgZS5haXJ3YWxsZXhHb29nbGVQYXkgPSBcImFpcndhbGxleC1nb29nbGUtcGF5XCIsIGUuYWlyd2FsbGV4QXBwbGVQYXkgPSBcImFpcndhbGxleC1hcHBsZS1wYXlcIiwgZS5hdXRob3JpemVuZXRHb29nbGVQYXkgPSBcImF1dGhvcml6ZW5ldC1nb29nbGUtcGF5XCIsIGUuYXV0aG9yaXplbmV0QXBwbGVQYXkgPSBcImF1dGhvcml6ZW5ldC1hcHBsZS1wYXlcIiwgZS5sb29wQ3J5cHRvID0gXCJsb29wLWNyeXB0b1wiLCBlKSkoJCB8fCB7fSk7XG56JDEubmF0aXZlRW51bSgkKTsgY29uc3QgSSA9IHokMS5zdHJpbmcoKS50cmltKCkubWluKDEsIHsgbWVzc2FnZTogXCJDYW5ub3QgYmUgYmxhbmtcIiB9KSwgQyA9IHokMS5zdHJpbmcoKS50cmltKCkub3B0aW9uYWwoKSwgTSA9IChlKSA9PiB6JDEubnVsbGFibGUoZS5vcHRpb25hbCgpKTtcbnZhciBwID0gLyogQF9fUFVSRV9fICovICgoZSkgPT4gKGUuRklSU1RfTkFNRSA9IFwiZmlyc3ROYW1lXCIsIGUuTEFTVF9OQU1FID0gXCJsYXN0TmFtZVwiLCBlLkVNQUlMID0gXCJlbWFpbFwiLCBlLlpJUF9DT0RFID0gXCJ6aXBDb2RlXCIsIGUuQ0lUWSA9IFwiY2l0eVwiLCBlLlNUQVRFID0gXCJzdGF0ZVwiLCBlLkNPVU5UUlkgPSBcImNvdW50cnlcIiwgZS5BRERSRVNTID0gXCJhZGRyZXNzXCIsIGUuUEhPTkUgPSBcInBob25lXCIsIGUuUFJPTU9USU9OX0NPREUgPSBcInByb21vdGlvbkNvZGVcIiwgZSkpKHAgfHwge30pO1xuY29uc3QgJHQgPSB6JDEubmF0aXZlRW51bShwKTtcbnZhciBWdCA9IC8qIEBfX1BVUkVfXyAqLyAoKGUpID0+IChlLkNBUkRfTlVNQkVSID0gXCJjYXJkTnVtYmVyXCIsIGUuQ0FSRF9FWFBJUlkgPSBcImNhcmRFeHBpcnlcIiwgZS5DQVJEX0NWQyA9IFwiY2FyZEN2Y1wiLCBlKSkoVnQgfHwge30pO1xuY29uc3QgR3QgPSB6JDEubmF0aXZlRW51bShWdCksIHp0ID0geiQxLnVuaW9uKFskdCwgR3RdKTtcbnZhciBXID0gLyogQF9fUFVSRV9fICovICgoZSkgPT4gKGUuQ0FSRCA9IFwiY2FyZFwiLCBlLkNBUkRfTlVNQkVSID0gXCJjYXJkLW51bWJlclwiLCBlLkNBUkRfRVhQSVJZID0gXCJjYXJkLWV4cGlyeVwiLCBlLkNBUkRfQ1ZDID0gXCJjYXJkLWN2Y1wiLCBlLkNERV9CUklER0UgPSBcImNkZS1icmlkZ2VcIiwgZSkpKFcgfHwge30pO1xuY29uc3QgWm4gPSB6JDEubmF0aXZlRW51bShXKSwgR2UgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgcHJvY2Vzc29yX25hbWU6IE0oeiQxLnN0cmluZygpKSxcbiAgbWV0YWRhdGE6IE0oeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KSwgV24gPSB6JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgY2FyZE51bWJlcjogQyxcbiAgZXhwaXJ5OiBDLFxuICBjdmM6IENcbn0pO1xueiQxLm9iamVjdCh7XG4gIGJhY2tncm91bmRDb2xvcjogQyxcbiAgY29sb3I6IEMsXG4gIGZvbnRGYW1pbHk6IEMsXG4gIGZvbnRTaXplOiBDLFxuICBmb250V2VpZ2h0OiBDLFxuICBtYXJnaW46IEMsXG4gIHBhZGRpbmc6IEMsXG4gIGxldHRlclNwYWNpbmc6IEMsXG4gIGxpbmVIZWlnaHQ6IEMsXG4gIGhpZGVJY29uOiBDXG59KTtcbmNvbnN0IEggPSB6JDEuZW51bShbXG4gIC8vIEVsZW1lbnQgLT4gRm9ybVxuICBcIkxBWU9VVFwiLFxuICBcIkxPQURFRFwiLFxuICBcIkJMVVJcIixcbiAgXCJGT0NVU1wiLFxuICBcIkNIQU5HRVwiLFxuICBcIlRPS0VOSVpFX1NUQVJURURcIixcbiAgXCJDSEVDS09VVF9TVEFSVEVEXCIsXG4gIFwiUEFZTUVOVF9GTE9XX1NUQVJURURcIixcbiAgXCJUT0tFTklaRV9TVUNDRVNTXCIsXG4gIFwiQ0hFQ0tPVVRfU1VDQ0VTU1wiLFxuICBcIkxPQURfRVJST1JcIixcbiAgXCJWQUxJREFUSU9OX0VSUk9SXCIsXG4gIFwiVE9LRU5JWkVfRVJST1JcIixcbiAgXCJDSEVDS09VVF9FUlJPUlwiLFxuICBcIlNFVFVQX1BBWU1FTlRfTUVUSE9EX1NVQ0NFU1NcIixcbiAgLy8gRm9ybSAtPiBFbGVtZW50XG4gIFwiVE9LRU5JWkVcIixcbiAgXCJDSEVDS09VVFwiLFxuICBcIlNUQVJUX1BBWU1FTlRfRkxPV1wiXG5dKSwgUW4gPSBILmV4dHJhY3QoW1wiVE9LRU5JWkVfU1RBUlRFRFwiLCBcIkNIRUNLT1VUX1NUQVJURURcIl0pLCBYbiA9IHokMS5vYmplY3QoeyB0eXBlOiBRbiB9KSwgZXIgPSBILmV4dHJhY3QoW1wiQkxVUlwiLCBcIkZPQ1VTXCIsIFwiQ0hBTkdFXCJdKSwgdHIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogZXIsXG4gIGVsZW1lbnRUeXBlOiBHdCxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KSwgbnIgPSBILmV4dHJhY3QoW1wiTE9BRF9FUlJPUlwiLCBcIlRPS0VOSVpFX0VSUk9SXCIsIFwiQ0hFQ0tPVVRfRVJST1JcIl0pLCByciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBucixcbiAgbWVzc2FnZTogSSxcbiAgaGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKVxufSksIG9yID0gSC5leHRyYWN0KFtcIlZBTElEQVRJT05fRVJST1JcIl0pLCBzciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBvcixcbiAgZWxlbWVudFR5cGU6IHp0LFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KSwgaXIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoSC5lbnVtLkxBWU9VVCksXG4gIGhlaWdodDogSVxufSksIGFyID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEguZW51bS5MT0FERUQpLFxuICBzZXNzaW9uSWQ6IEksXG4gIHRvdGFsQW1vdW50QXRvbXM6IHokMS5udW1iZXIoKSxcbiAgY3VycmVuY3k6IEMsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZHM6IHokMS5hcnJheShHZSlcbn0pLCBjciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChILmVudW0uUEFZTUVOVF9GTE9XX1NUQVJURUQpLFxuICBuZXh0QWN0aW9uTWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBwYXltZW50Rmxvd01ldGFkYXRhOiB6JDEuYW55KCkub3B0aW9uYWwoKSxcbiAgc3RhcnRQRk1ldGFkYXRhOiB6JDEub3B0aW9uYWwoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KSwgbHIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoSC5lbnVtLlNFVFVQX1BBWU1FTlRfTUVUSE9EX1NVQ0NFU1MpLFxuICBwYXltZW50TWV0aG9kSWQ6IHokMS5zdHJpbmcoKVxufSksIEllID0geiQxLm9iamVjdCh7XG4gIGZpcnN0TmFtZTogSSxcbiAgbGFzdE5hbWU6IEksXG4gIGVtYWlsOiBJLFxuICB6aXBDb2RlOiBJLFxuICBjb3VudHJ5OiBJLFxuICBwcm9tb3Rpb25Db2RlOiBDXG59KSwgdXIgPSB6JDEub2JqZWN0KHtcbiAgZmlyc3ROYW1lOiBDLFxuICBsYXN0TmFtZTogQyxcbiAgZW1haWw6IEksXG4gIHppcENvZGU6IEksXG4gIGNvdW50cnk6IEksXG4gIHByb21vdGlvbkNvZGU6IEMsXG4gIGFkZHJlc3M6IEMsXG4gIGNpdHk6IEMsXG4gIHN0YXRlOiBDXG59KSwgZHIgPSBILmV4dHJhY3QoW1wiVE9LRU5JWkVcIiwgXCJDSEVDS09VVFwiLCBcIlNUQVJUX1BBWU1FTlRfRkxPV1wiXSksIHByID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IGRyLFxuICBzZXNzaW9uSWQ6IEksXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogR2UsXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBkb05vdFVzZUxlZ2FjeUNDRmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBleGlzdGluZ0NDUE1JZDogQyxcbiAgcGF5bWVudFJvdXRlSWQ6IENcbn0pLmV4dGVuZChJZS5zaGFwZSksIG1yID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEguZW51bS5UT0tFTklaRV9TVUNDRVNTKSxcbiAgaXNSZWFkeUZvckNoZWNrb3V0OiB6JDEuYm9vbGVhbigpXG59KSwgeXIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoSC5lbnVtLkNIRUNLT1VUX1NVQ0NFU1MpLFxuICBpbnZvaWNlVXJsczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIHN1YnNjcmlwdGlvbklkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVySWQ6IHokMS5zdHJpbmcoKVxufSksIGZyID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICBYbixcbiAgdHIsXG4gIHJyLFxuICBzcixcbiAgaXIsXG4gIGFyLFxuICBwcixcbiAgbXIsXG4gIHlyLFxuICBjcixcbiAgbHJcbl0pLCBfciA9IHokMS5vYmplY3Qoe1xuICBwYXlsb2FkOiBmcixcbiAgbm9uY2U6IEksXG4gIGZvcm1JZDogSSxcbiAgZWxlbWVudElkOiBJXG59KTtcbnokMS5vYmplY3Qoe1xuICBhbW91bnRBdG9tOiB6JDEubnVtYmVyKCksXG4gIC8qKlxuICAgKiBUaGUgdGhyZWUtbGV0dGVyIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUgZm9yIHRoZSBwYXltZW50LlxuICAgKi9cbiAgY3VycmVuY3k6IElcbn0pO1xueiQxLmVudW0oW1wiYXBwbGVfcGF5XCIsIFwiZ29vZ2xlX3BheVwiXSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIGV4aXN0aW5nX2NjX3BtX2lkOiBNKHokMS5zdHJpbmcoKSksXG4gIHRoZWlyX3BtX2lkOiBNKHokMS5zdHJpbmcoKSksXG4gIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IE0oeiQxLnN0cmluZygpKSxcbiAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiBNKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBpdCA9IHokMS5vYmplY3Qoe1xuICBpbnZvaWNlX3VybHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBzdWJzY3JpcHRpb25faWRzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJfaWQ6IHokMS5zdHJpbmcoKSxcbiAgcHJvY2Vzc29yc191c2VkOiBNKHokMS5hcnJheSh6JDEuc3RyaW5nKCkpKVxufSksIGhyID0geiQxLm9iamVjdCh7XG4gIGVsZW1lbnRUeXBlOiB6JDEuc3RyaW5nKCksXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBnciA9IHokMS5vYmplY3Qoe1xuICBzdWNjZXNzOiB6JDEubGl0ZXJhbCghMSksXG4gIGVycm9yX3R5cGU6IHokMS5saXRlcmFsKFwidmFsaWRhdGlvbl9lcnJvclwiKSxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoaHIpXG59KSwgd3IgPSB6JDEuZGlzY3JpbWluYXRlZFVuaW9uKFwic3VjY2Vzc1wiLCBbXG4gIHokMS5vYmplY3QoeyBzdWNjZXNzOiB6JDEubGl0ZXJhbCghMCkgfSksXG4gIGdyXG5dKTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBHZSxcbiAgbm9uX2NkZV9mb3JtX2ZpZWxkczogSWUsXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IE0oeiQxLnN0cmluZygpKSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBwYXltZW50X3JvdXRlX2lkOiBNKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IEdlLFxuICBub25fY2RlX2Zvcm1fZmllbGRzOiBJZSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gIHBheW1lbnRfcm91dGVfaWQ6IE0oeiQxLnN0cmluZygpKVxufSk7XG52YXIgVCA9IC8qIEBfX1BVUkVfXyAqLyAoKGUpID0+IChlLlNVQ0NFU1MgPSBcInN1Y2Nlc3NcIiwgZS5GQUlMVVJFID0gXCJmYWlsdXJlXCIsIGUuQ0FOQ0VMTEVEID0gXCJjYW5jZWxsZWRcIiwgZSkpKFQgfHwge30pO1xuY29uc3QgYnIgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXG4gICAgXCJzdWNjZXNzXCIsXG4gICAgXCJmYWlsdXJlXCIsXG4gICAgXCJjYW5jZWxsZWRcIlxuICAgIC8qIENBTkNFTExFRCAqL1xuICBdKSxcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG5jb25zdCB2ciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogeiQxLnN0cmluZygpLFxuICBpbml0aWFsX2ludGVudF9pZDogeiQxLnN0cmluZygpLFxuICBjb25zZW50X2lkOiB6JDEuc3RyaW5nKCksXG4gIHRoZWlyX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSksIHF0ID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgcmVkaXJlY3RfdXJsOiBNKHokMS5zdHJpbmcoKSksXG4gIGluaXRpYWxfaW50ZW50X2lkOiBNKHokMS5zdHJpbmcoKSksXG4gIGNvbnNlbnRfaWQ6IE0oeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IE0oeiQxLnN0cmluZygpKSxcbiAgcGF5bWVudF9zZXNzaW9uOiBNKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSksIEVyID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwoITApLCBocmVmOiB6JDEuc3RyaW5nKCkgfSksXG4gIHokMS5vYmplY3QoeyBwcmVzZW50OiB6JDEubGl0ZXJhbCghMSkgfSlcbl0pLCBDciA9IHokMS5vYmplY3Qoe1xuICBwYXltZW50X21ldGhvZHM6IHokMS5hcnJheShXbiksXG4gIHBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlOiBNKGl0KSxcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiBNKHokMS5hcnJheShxdCkpXG59KSwgWXQgPSAoZSkgPT4ge1xuICBjb25zdCBuID0ge307XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChbdCwgcl0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcyA9ICR0LnBhcnNlKHQpO1xuICAgICAgQXJyYXkuaXNBcnJheShyKSA/IG5bc10gPSByIDogQXJyYXkuaXNBcnJheShyLl9lcnJvcnMpICYmIChuW3NdID0gci5fZXJyb3JzKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0pLCBuO1xufSwgU3IgPSB6JDEub2JqZWN0KHtcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pLCBQciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbn0pLCBrciA9IHtcbiAgdXNkOiBcInVzZFwiLFxuICBicmw6IFwiYnJsXCJcbn0sIHplID0gYXN5bmMgKGUpID0+IHtcbiAgZm9yIChsZXQgdCA9IDA7IHQgPCAxMDsgdCsrKVxuICAgIG10KCkgfHwgYXdhaXQgYXQoNTAwKTtcbiAgaWYgKCFtdCgpKVxuICAgIHRocm93IGNvbnNvbGUubG9nKFwiU3RyaXBlIEpTIG5vdCBmb3VuZC5cIiksIG5ldyBFcnJvcihcIlN0cmlwZSBKUyBub3QgZm91bmQuXCIpO1xuICByZXR1cm4gbmV3IFN0cmlwZShlKTtcbn0sIEFyID0gYXN5bmMgKGUsIG4pID0+IHtcbiAgY29uc3QgdCA9IGF3YWl0IHplKGUpO1xuICByZXR1cm4ge1xuICAgIGVsZW1lbnRzOiB0LmVsZW1lbnRzKG4pLFxuICAgIHN0cmlwZTogdFxuICB9O1xufSwgSXIgPSBhc3luYyAoZSwgbiwgdCwgciwgcykgPT4ge1xuICBjb25zdCBpID0gYXdhaXQgemUoZSksIGEgPSBrclt0LnRvTG93ZXJDYXNlKCkudHJpbSgpXTtcbiAgcmV0dXJuIGkucGF5bWVudFJlcXVlc3Qoe1xuICAgIC8vIFRPRE86IHJlcGxhY2UgdGhpcyB3aXRoIHN0cmlwZSBhY2NvdW50IGNvdW50cnkgYXMgc29vbiBhcyB3ZSBzdXBwb3J0IGl0XG4gICAgY291bnRyeTogXCJVU1wiLFxuICAgIGN1cnJlbmN5OiBhLFxuICAgIHRvdGFsOiB7XG4gICAgICBsYWJlbDogXCJUb3RhbFwiLFxuICAgICAgYW1vdW50OiBuLFxuICAgICAgcGVuZGluZzogclxuICAgIH0sXG4gICAgLy8gcmVxdWVzdFNoaXBwaW5nOiB0cnVlLFxuICAgIHJlcXVlc3RQYXllck5hbWU6ICEwLFxuICAgIHJlcXVlc3RQYXllckVtYWlsOiAhMCxcbiAgICBkaXNhYmxlV2FsbGV0czogW11cbiAgfSk7XG59LCBhdCA9IChlKSA9PiBuZXcgUHJvbWlzZSgobikgPT4ge1xuICBzZXRUaW1lb3V0KG4sIGUpO1xufSksIG10ID0gKCkgPT4gXCJTdHJpcGVcIiBpbiB3aW5kb3csIFJyID0gYXN5bmMgKGUpID0+IG5ldyBQcm9taXNlKChuLCB0KSA9PiB7XG4gIHRyeSB7XG4gICAgZS5vbihcInBheW1lbnRtZXRob2RcIiwgYXN5bmMgKHIpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwicGF5bWVudG1ldGhvZCBFVlQ6OiBcIiwgciksIG4ocik7XG4gICAgfSksIGUub24oXCJ0b2tlblwiLCBhc3luYyAocikgPT4ge1xuICAgICAgY29uc29sZS5sb2coXCJ0b2tlbiBFVlQ6OiBcIiwgcik7XG4gICAgfSksIGUub24oXCJjYW5jZWxcIiwgKCkgPT4ge1xuICAgICAgdChuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCwgcGxlYXNlIGNsaWNrIFN1Ym1pdCBhZ2FpbiB0byBwYXlcIikpO1xuICAgIH0pO1xuICB9IGNhdGNoIChyKSB7XG4gICAgdChyKTtcbiAgfVxufSksIFRyID0gYXN5bmMgKGUsIG4pID0+IHtcbiAgaWYgKCFlLnN0cmlwZV9wayB8fCAhZS5jbGllbnRfc2VjcmV0KVxuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBuZXh0IGFjdGlvbiBtZXRhZGF0YSBmb3JtYXQ6ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCk7XG4gIGNvbnN0IHIgPSBhd2FpdCAoYXdhaXQgemUoZS5zdHJpcGVfcGspKS5jb25maXJtQ2FyZFNldHVwKGUuY2xpZW50X3NlY3JldCwge1xuICAgIHBheW1lbnRfbWV0aG9kOiBuLnBheW1lbnRNZXRob2QuaWRcbiAgfSk7XG4gIGlmIChyLmVycm9yKVxuICAgIHRocm93IG4uY29tcGxldGUoXCJmYWlsXCIpLCBuZXcgRXJyb3IoYFBheW1lbnQgZmFpbGVkOiAke3IuZXJyb3IubWVzc2FnZSA/PyBcInVua25vd25cIn1gKTtcbiAgcmV0dXJuIG4uY29tcGxldGUoXCJzdWNjZXNzXCIpLCByO1xufSwgRnIgPSBhc3luYyAoZSkgPT4ge1xuICB2YXIgcywgaSwgYSwgYztcbiAgY29uc3QgdCA9IGF3YWl0IChhd2FpdCB6ZShlLnN0cmlwZV9waykpLmNvbmZpcm1DYXJkU2V0dXAoZS5jbGllbnRfc2VjcmV0LCB7XG4gICAgcGF5bWVudF9tZXRob2Q6IGUuc3RyaXBlX3BtX2lkXG4gIH0pLCByID0gKHMgPSB0LnNldHVwSW50ZW50KSA9PSBudWxsID8gdm9pZCAwIDogcy5zdGF0dXM7XG4gIGlmIChyID09PSBcInN1Y2NlZWRlZFwiKVxuICAgIGNvbnNvbGUubG9nKFwiWzNEU10gQ09ORklSTUlORyBQTTpcIiwgZS5zdHJpcGVfcG1faWQpLCBjb25zb2xlLmxvZyhcIlszRFNdIFNldHVwIGludGVudCBjcmVhdGVkOlwiLCB0LnNldHVwSW50ZW50KTtcbiAgZWxzZSB0aHJvdyByID09PSBcImNhbmNlbGVkXCIgPyBuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCwgcGxlYXNlIGNsaWNrIFN1Ym1pdCBhZ2FpbiB0byBwYXlcIikgOiBuZXcgRXJyb3IoXG4gICAgYCR7KChpID0gdC5lcnJvcikgPT0gbnVsbCA/IHZvaWQgMCA6IGkubWVzc2FnZSkgPz8gKChjID0gKGEgPSB0LnNldHVwSW50ZW50KSA9PSBudWxsID8gdm9pZCAwIDogYS5sYXN0X3NldHVwX2Vycm9yKSA9PSBudWxsID8gdm9pZCAwIDogYy5tZXNzYWdlKSA/PyBcIlBheW1lbnQgZmFpbGVkLCBwbGVhc2UgY2xpY2sgc3VibWl0IGFnYWluIHRvIHBheS5cIn1gXG4gICk7XG59LCBNciA9IChlKSA9PiBKU09OLnN0cmluZ2lmeShlKSwgZWUgPSAoZSwgbikgPT4gQXJyYXkuZnJvbShlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1vcGlkXVwiKSA/PyBbXSkucmVkdWNlKChzLCBpKSA9PiB7XG4gIGNvbnN0IGEgPSBpLmdldEF0dHJpYnV0ZShcImRhdGEtb3BpZFwiKTtcbiAgcmV0dXJuIGEgPyB7IC4uLnMsIFthXTogaS52YWx1ZSB9IDogcztcbn0sIHt9KSwgRHIgPSAoZSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBfci5wYXJzZShlKTtcbiAgfSBjYXRjaCAobikge1xuICAgIHRocm93IGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwYXJzaW5nIGV2ZW50IHBheWxvYWQ6XCIsIGUsIG4pLCBuO1xuICB9XG59LCBOciA9IGFzeW5jIChlKSA9PiB7XG4gIGlmICh0eXBlb2YgZSAhPSBcIm9iamVjdFwiIHx8ICFlKSByZXR1cm4gITE7XG4gIHRyeSB7XG4gICAgY29uc3QgbiA9IHsgdHlwZTogXCJwaW5nXCIgfSwgdCA9IGF3YWl0IGUuc2VuZChuKTtcbiAgICBpZiAodCAhPT0gITApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICd0cnVlJyBhZnRlciBwaW5nLCBnb3QgJHtKU09OLnN0cmluZ2lmeSh0KX1gKTtcbiAgICByZXR1cm4gITA7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gY29uc29sZS5lcnJvcihcIkludmFsaWQgQ0RFIGNvbm5lY3Rpb24gY2hlY2s6XCIsIG4pLCAhMTtcbiAgfVxufSwgTHIgPSAoZSwgbikgPT4gISFlICYmIG4sIHcgPSAoZSkgPT4geiQxLm51bGxhYmxlKGUub3B0aW9uYWwoKSk7XG56JDEuc3RyaW5nKCkudHJpbSgpLm1pbigxLCB7IG1lc3NhZ2U6IFwiQ2Fubm90IGJlIGJsYW5rXCIgfSk7XG5jb25zdCBPciA9IHokMS5vYmplY3Qoe1xuICBjZGVfcmVzcG9uc2VfdHlwZTogeiQxLmxpdGVyYWwoXCJlcnJvclwiKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbnokMS5lbnVtKFtcInVzZFwiLCBcImJybFwiXSk7XG5jb25zdCBCdCA9IHokMS5vYmplY3Qoe1xuICBuYW1lOiB6JDEuc3RyaW5nKCksXG4gIGFtb3VudF9hdG9tX29mZjogdyh6JDEubnVtYmVyKCkpLFxuICBwZXJjZW50X29mZjogdyh6JDEubnVtYmVyKCkpLFxuICBjdXJyZW5jeTogdyh6JDEuc3RyaW5nKCkpLFxuICBkdXJhdGlvbjogeiQxLnN0cmluZygpLFxuICBkdXJhdGlvbl9pbl9tb250aHM6IHcoeiQxLm51bWJlcigpKVxufSksIEh0ID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9zdWJ0b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGFtb3VudF90b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB3KHokMS5zdHJpbmcoKSksXG4gIHByaWNlX2lkOiB6JDEuc3RyaW5nKCksXG4gIGJpbGxpbmdfaW50ZXJ2YWw6IHcoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbF9jb3VudDogdyh6JDEubnVtYmVyKCkuaW50KCkpLFxuICBxdWFudGl0eTogeiQxLm51bWJlcigpLmludCgpXG59KSwgVXIgPSB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSwganIgPSB6JDEub2JqZWN0KHtcbiAgbmFtZTogeiQxLnN0cmluZygpLFxuICBzZXR0aW5nczogdyhVcilcbn0pLCBoZSA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnN0cmluZygpLFxuICBwcm9jZXNzb3JfbmFtZTogdyh6JDEuc3RyaW5nKCkpLFxuICBtZXRhZGF0YTogdyh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pLCB4ciA9IHokMS5vYmplY3Qoe1xuICBxdWFudGl0eTogeiQxLm51bWJlcigpXG59KSwgJHIgPSB6JDEub2JqZWN0KHtcbiAgaWQ6IHcoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbDogdyh6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsX2NvdW50OiB3KHokMS5udW1iZXIoKS5pbnQoKSksXG4gIHN1YnNjcmlwdGlvbl9pdGVtczogeiQxLmFycmF5KHhyKSxcbiAgdHJpYWxfc3RhcnQ6IHcoeiQxLnN0cmluZygpKSxcbiAgdHJpYWxfZW5kOiB3KHokMS5zdHJpbmcoKSlcbn0pLCBKdCA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfYXRvbTogeiQxLm51bWJlcigpXG59KSwgVnIgPSB6JDEub2JqZWN0KHtcbiAgYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgYW1vdW50X2F0b21fY29uc2lkZXJpbmdfZGlzY291bnRfYXBwbGllZDogeiQxLm51bWJlcigpLFxuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkaXNjb3VudF9hbW91bnRfYXRvbXM6IHokMS5hcnJheShKdCksXG4gIHN1YnNjcmlwdGlvbl9pdGVtX2lkOiB6JDEuc3RyaW5nKClcbn0pLCBHciA9IHokMS5vYmplY3Qoe1xuICBjb3Vwb246IEJ0XG59KSwgenIgPSB6JDEub2JqZWN0KHtcbiAgY3VycmVuY3k6IHokMS5zdHJpbmcoKSxcbiAgZGlzY291bnRzOiB6JDEuYXJyYXkoR3IpLFxuICBob3N0ZWRfaW52b2ljZV91cmw6IHcoeiQxLnN0cmluZygpKSxcbiAgbGluZXM6IHokMS5hcnJheShWciksXG4gIHJlbWFpbmluZ19hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0YXhfYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgdG90YWxfZGlzY291bnRfYW1vdW50X2F0b21zOiB6JDEuYXJyYXkoSnQpXG59KSwgeXQgPSB6JDEub2JqZWN0KHtcbiAgY3JlYXRlZDogeiQxLmFycmF5KCRyKSxcbiAgaW52b2ljZXM6IHokMS5hcnJheSh6ciksXG4gIHByb2Nlc3NvcnNfdXNlZDogdyh6JDEuYXJyYXkoeiQxLnN0cmluZygpKSlcbn0pLCBLdCA9IHokMS5vYmplY3Qoe1xuICBwcmV2aWV3OiB5dCxcbiAgcHJldmlld19wb3N0X3RyaWFsOiB3KHl0KSxcbiAgY291cG9uczogeiQxLmFycmF5KEJ0KVxufSksIGZ0ID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmxpdGVyYWwoXCJvcGVuXCIpLFxuICBsb2NhbGU6IHcoeiQxLnN0cmluZygpKSxcbiAgdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IHcoeiQxLnN0cmluZygpKSxcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KEh0KSxcbiAgYW1vdW50X3N1YnRvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYW1vdW50X3RvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYnJhbmQ6IGpyLFxuICBzdWJzX3ByZXZpZXc6IHcoS3QpLFxuICAvLyBOdWxsIGluIHNldHVwIG1vZGVcbiAgbWV0aG9kc19hdmFpbGFibGU6IHokMS5hcnJheShoZSlcbn0pLCBadCA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJtb2RlXCIsIFtcbiAgeiQxLm9iamVjdCh7XG4gICAgbW9kZTogeiQxLmxpdGVyYWwoXCJzZXR1cFwiKSxcbiAgICBjdXJyZW5jeTogeiQxLm51bGxhYmxlKHokMS51bmRlZmluZWQoKSlcbiAgfSkuZXh0ZW5kKGZ0LnNoYXBlKSxcbiAgeiQxLm9iamVjdCh7XG4gICAgbW9kZTogeiQxLmVudW0oW1wicGF5bWVudFwiLCBcInN1YnNjcmlwdGlvblwiXSksXG4gICAgY3VycmVuY3k6IHokMS5zdHJpbmcoKVxuICB9KS5leHRlbmQoZnQuc2hhcGUpXG5dKSwgcXIgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEubGl0ZXJhbChcImNvbXBsZXRlXCIpXG59KSwgWXIgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEubGl0ZXJhbChcImV4cGlyZWRcIilcbn0pO1xueiQxLnVuaW9uKFtadCwgcXIsIFlyXSk7XG56JDEub2JqZWN0KHtcbiAgbG9nbzogeiQxLnN0cmluZygpLFxuICBpY29uOiB6JDEuc3RyaW5nKCksXG4gIHByaW1hcnlfY29sb3I6IHokMS5zdHJpbmcoKSxcbiAgc2Vjb25kYXJ5X2NvbG9yOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcGF5bWVudF9pbnB1dDogeiQxLmFueSgpLFxuICAvLyBTaG91bGQgZm9sbG93IEFueVBheW1lbnRJbnB1dCBmcm9tIENERVxuICBjdXN0b21lcl9maXJzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfbGFzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfZW1haWw6IHokMS5zdHJpbmcoKSxcbiAgY3VzdG9tZXJfemlwX2NvZGU6IHokMS5zdHJpbmcoKSxcbiAgY3VzdG9tZXJfY291bnRyeTogeiQxLnN0cmluZygpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoSHQpLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBjYW5jZWxfYXRfZW5kOiB6JDEuYm9vbGVhbigpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogaGUsXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZG9fbm90X3VzZV9sZWdhY3lfY2NfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB1c2VfY29uZmlybWVkX3BtX2lkOiB3KHokMS5zdHJpbmcoKSksXG4gIHBheW1lbnRfcm91dGVfaWQ6IHcoeiQxLnN0cmluZygpKVxufSk7XG5jb25zdCBXdCA9IHokMS5vYmplY3Qoe1xuICBwYXltZW50X21ldGhvZF9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpLFxuICByZXR1cm5fdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgQnIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLmFycmF5KEJyKTtcbmNvbnN0IEhyID0geiQxLm9iamVjdCh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9hZGRyZXNzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KSwgSnIgPSB6JDEub2JqZWN0KHtcbiAgcHJpY2VfaWQ6IHokMS5zdHJpbmcoKSxcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKS5pbnQoKVxufSksIEtyID0geiQxLm9iamVjdCh7XG4gIGxpbmVfaXRlbXM6IHokMS5hcnJheShKciksXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KClcbn0pLCBaciA9IHokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHcoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBwYXltZW50X3Byb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBoZSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0aGVpcl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZV9wYXlfZmlyc3RfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IEtyLm9wdGlvbmFsKClcbn0pLmV4dGVuZChIci5zaGFwZSkuZXh0ZW5kKFpyLnNoYXBlKTtcbmNvbnN0IFF0ID0geiQxLm9iamVjdCh7XG4gIHJlcXVpcmVkX3VzZXJfYWN0aW9uczogeiQxLmFycmF5KHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKSxcbiAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogdyh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBmaWVsZHM6IHVyLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IGhlLFxuICBwYXltZW50X3JvdXRlX2lkOiB3KHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgbm9uX2NkZV9mb3JtX2ZpZWxkczogSWUsXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBoZSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICAvLyBUaGlzIGlzIG9wdGlvbmFsIGluIENERSwgYnV0IG5vdCBpbiBPSlMgbW92aW5nIGZvcndhcmRcbiAgcGF5bWVudF9yb3V0ZV9pZDogdyh6JDEuc3RyaW5nKCkpXG59KTtcbmNvbnN0IFdyID0geiQxLm9iamVjdCh7XG4gIHJlcXVpcmVkX3VzZXJfYWN0aW9uczogeiQxLmFycmF5KHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKSxcbiAgY2NfcG1faWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEucmVjb3JkKHokMS5hbnkoKSk7XG56JDEub2JqZWN0KHtcbiAgZmlyc3RfbmFtZTogdyh6JDEuc3RyaW5nKCkpLFxuICBsYXN0X25hbWU6IHcoeiQxLnN0cmluZygpKSxcbiAgbGluZTE6IHcoeiQxLnN0cmluZygpKSxcbiAgbGluZTI6IHcoeiQxLnN0cmluZygpKSxcbiAgbGluZTM6IHcoeiQxLnN0cmluZygpKSxcbiAgY2l0eTogdyh6JDEuc3RyaW5nKCkpLFxuICBzdGF0ZTogdyh6JDEuc3RyaW5nKCkpLFxuICBjb3VudHJ5OiB3KHokMS5zdHJpbmcoKSksXG4gIHppcF9jb2RlOiB3KHokMS5zdHJpbmcoKSksXG4gIGVtYWlsOiB3KHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfZW1haWw6IHcoeiQxLnN0cmluZygpKSxcbiAgcGhvbmVfbnVtYmVyOiB3KHokMS5zdHJpbmcoKSksXG4gIHVwZGF0ZV9wcm9jZXNzb3JfY3VzdG9tZXI6IHcoeiQxLmJvb2xlYW4oKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIGlkOiB6JDEuc3RyaW5nKCksXG4gIGVtYWlsOiB3KHokMS5zdHJpbmcoKSksXG4gIGZpcnN0X25hbWU6IHcoeiQxLnN0cmluZygpKSxcbiAgbGFzdF9uYW1lOiB3KHokMS5zdHJpbmcoKSksXG4gIHBob25lX251bWJlcjogdyh6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2VtYWlsOiB3KHokMS5zdHJpbmcoKSksXG4gIGFkZHJlc3M6IHcoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBtZXNzYWdlOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgUXIgPSB6JDEub2JqZWN0KHtcbiAgZXJyb3JfY29kZTogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBjaGVja291dF9wYXltZW50X21ldGhvZDogaGUsXG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gIHBheW1lbnRfcm91dGVfaWQ6IHcoeiQxLnN0cmluZygpKVxufSk7XG5jb25zdCBYciA9IHokMS5vYmplY3Qoe1xuICBuZXh0X2FjdGlvbl9tZXRhZGF0YTogdyh6JDEucmVjb3JkKHokMS5hbnkoKSkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBldmVudHM6IHokMS5hcnJheShcbiAgICB6JDEub2JqZWN0KHtcbiAgICAgIGV2ZW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICAgIGRldmljZV90b2tlbjogeiQxLnN0cmluZygpLFxuICAgICAgcHJvcGVydGllczogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZXh0X3Byb3BlcnRpZXM6IHokMS5yZWNvcmQoeiQxLmFueSgpKS5vcHRpb25hbCgpXG4gICAgfSlcbiAgKVxufSk7XG56JDEuYW55KCkub3B0aW9uYWwoKTtcbnokMS5vYmplY3Qoe1xuICBkZXZpY2VfdG9rZW46IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBlbyA9IHokMS5vYmplY3Qoe30pLCB0byA9IChlKSA9PiBlLnJlZHVjZSgobiwgdCkgPT4gbiArIHQsIDApO1xuZnVuY3Rpb24gbm8oZSwgbikge1xuICB2YXIgdCA9IE9iamVjdC5zZXRQcm90b3R5cGVPZjtcbiAgdCA/IHQoZSwgbikgOiBlLl9fcHJvdG9fXyA9IG47XG59XG5mdW5jdGlvbiBybyhlLCBuKSB7XG4gIG4gPT09IHZvaWQgMCAmJiAobiA9IGUuY29uc3RydWN0b3IpO1xuICB2YXIgdCA9IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlO1xuICB0ICYmIHQoZSwgbik7XG59XG52YXIgb28gPSAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7XG4gIHZhciBlID0gZnVuY3Rpb24odCwgcikge1xuICAgIHJldHVybiBlID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24ocywgaSkge1xuICAgICAgcy5fX3Byb3RvX18gPSBpO1xuICAgIH0gfHwgZnVuY3Rpb24ocywgaSkge1xuICAgICAgZm9yICh2YXIgYSBpbiBpKVxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSwgYSkgJiYgKHNbYV0gPSBpW2FdKTtcbiAgICB9LCBlKHQsIHIpO1xuICB9O1xuICByZXR1cm4gZnVuY3Rpb24obiwgdCkge1xuICAgIGlmICh0eXBlb2YgdCAhPSBcImZ1bmN0aW9uXCIgJiYgdCAhPT0gbnVsbCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcodCkgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIGUobiwgdCk7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBuO1xuICAgIH1cbiAgICBuLnByb3RvdHlwZSA9IHQgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKHQpIDogKHIucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyByKCkpO1xuICB9O1xufSgpLCBzbyA9IGZ1bmN0aW9uKGUpIHtcbiAgb28obiwgZSk7XG4gIGZ1bmN0aW9uIG4odCwgcikge1xuICAgIHZhciBzID0gdGhpcy5jb25zdHJ1Y3RvciwgaSA9IGUuY2FsbCh0aGlzLCB0LCByKSB8fCB0aGlzO1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoaSwgXCJuYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBzLm5hbWUsXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgbm8oaSwgcy5wcm90b3R5cGUpLCBybyhpKSwgaTtcbiAgfVxuICByZXR1cm4gbjtcbn0oRXJyb3IpO1xuY29uc3QgcmUgPSAoZSkgPT4gYXN5bmMgKG4pID0+IHtcbiAgdmFyIHQsIHI7XG4gIHRyeSB7XG4gICAgKHIgPSAodCA9IG4uZm9ybUNhbGxiYWNrcy5nZXQpLm9uQ2hlY2tvdXRTdGFydGVkKSA9PSBudWxsIHx8IHIuY2FsbCh0KSwgZyhcImNoZWNrb3V0X3N0YXJ0ZWRcIiwge1xuICAgICAgY3BtOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZFxuICAgIH0pO1xuICAgIGNvbnN0IHMgPSBhd2FpdCBlKG4pO1xuICAgIGlmIChnKFwiY2hlY2tvdXRfc3VjY2Vzc1wiLCB7XG4gICAgICBjcG06IG4uY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgLi4uc1xuICAgIH0pLCBzLm1vZGUgPT09IFwic2V0dXBcIilcbiAgICAgIG4uZm9ybUNhbGxiYWNrcy5nZXQub25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzKHMucmVzdWx0LnBheW1lbnRfbWV0aG9kX2lkKTtcbiAgICBlbHNlIGlmIChzLm1vZGUgPT09IFwiY2hlY2tvdXRcIilcbiAgICAgIG4uZm9ybUNhbGxiYWNrcy5nZXQub25DaGVja291dFN1Y2Nlc3MoXG4gICAgICAgIHMucmVzdWx0Lmludm9pY2VfdXJscyxcbiAgICAgICAgcy5yZXN1bHQuc3Vic2NyaXB0aW9uX2lkcyxcbiAgICAgICAgcy5yZXN1bHQuY3VzdG9tZXJfaWQsXG4gICAgICAgIHMucmVzdWx0LnByb2Nlc3NvcnNfdXNlZCA/PyBbXVxuICAgICAgKTtcbiAgICBlbHNlXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBtb2RlOiAke3N9YCk7XG4gIH0gY2F0Y2ggKHMpIHtcbiAgICBjb25zdCBpID0gVihzKSwgYSA9IGF3YWl0IGZuKG4uY29udGV4dC5hbnlDZGVDb25uZWN0aW9uLCBpKTtcbiAgICBuLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQ2hlY2tvdXRFcnJvcihpLCBhKSwgZyhcImNoZWNrb3V0X2Vycm9yXCIsIHsgY3BtOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZCwgZXJyb3JNZXNzYWdlOiBpLCBlcnJvckNvZGU6IGEgfSk7XG4gIH1cbn0sIGRlID0gKGUpID0+IGFzeW5jIChuKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGUobik7XG4gIH0gY2F0Y2ggKHQpIHtcbiAgICBjb25zdCB7IGVycl9fOiByIH0gPSBQKFwiaW5pdC1lcnJvci1jYXRjaGVyXCIpLCBzID0gVih0KSwgaSA9IGF3YWl0IGZuKG4uY29udGV4dC5hbnlDZGVDb25uZWN0aW9uLCBzKTtcbiAgICByZXR1cm4gcihpLCBzLCB0KSwgZyhcImluaXRfZmxvd19lcnJvclwiLCB7IGVycm9yTWVzc2FnZTogcywgZXJyb3JDb2RlOiBpIH0pLCB7IGlzQXZhaWxhYmxlOiAhMSwgcmVhc29uOiBzLCBlcnJvckNvZGU6IGksIGlzTG9hZGluZzogITEgfTtcbiAgfVxufSwgUCA9IChlKSA9PiB7XG4gIGNvbnN0IG4gPSAoLi4ucikgPT4ge1xuICAgIHdpbmRvdy5jb25zb2xlLmxvZyhgJHtNZS5ncmVlbi5ib2xkKFwib2pzL1wiKX0ke01lLmJvbGQuZ3JheShgJHtlfWApfVx0YCwgLi4ucik7XG4gIH0sIHQgPSAoLi4ucikgPT4ge1xuICAgIHdpbmRvdy5jb25zb2xlLndhcm4oYCR7TWUucmVkLmJvbGQoXCJvanMvXCIpfSR7TWUuYm9sZC5ncmF5KGAke2V9YCl9XHRgLCAuLi5yKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBsb2c6IG4sXG4gICAgZXJyOiB0LFxuICAgIGxvZ19fOiBuLFxuICAgIGVycl9fOiB0XG4gIH07XG59O1xudmFyIG50ID0gZnVuY3Rpb24oZSwgbikge1xuICByZXR1cm4gbnQgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbih0LCByKSB7XG4gICAgdC5fX3Byb3RvX18gPSByO1xuICB9IHx8IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICBmb3IgKHZhciBzIGluIHIpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLCBzKSAmJiAodFtzXSA9IHJbc10pO1xuICB9LCBudChlLCBuKTtcbn07XG5mdW5jdGlvbiBvZShlLCBuKSB7XG4gIGlmICh0eXBlb2YgbiAhPSBcImZ1bmN0aW9uXCIgJiYgbiAhPT0gbnVsbClcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhuKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIG50KGUsIG4pO1xuICBmdW5jdGlvbiB0KCkge1xuICAgIHRoaXMuY29uc3RydWN0b3IgPSBlO1xuICB9XG4gIGUucHJvdG90eXBlID0gbiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUobikgOiAodC5wcm90b3R5cGUgPSBuLnByb3RvdHlwZSwgbmV3IHQoKSk7XG59XG5mdW5jdGlvbiBpbyhlLCBuLCB0LCByKSB7XG4gIGZ1bmN0aW9uIHMoaSkge1xuICAgIHJldHVybiBpIGluc3RhbmNlb2YgdCA/IGkgOiBuZXcgdChmdW5jdGlvbihhKSB7XG4gICAgICBhKGkpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKHQgfHwgKHQgPSBQcm9taXNlKSkoZnVuY3Rpb24oaSwgYSkge1xuICAgIGZ1bmN0aW9uIGMoZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShyLm5leHQoZCkpO1xuICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICBhKF8pO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBsKGQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUoci50aHJvdyhkKSk7XG4gICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgIGEoXyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUoZCkge1xuICAgICAgZC5kb25lID8gaShkLnZhbHVlKSA6IHMoZC52YWx1ZSkudGhlbihjLCBsKTtcbiAgICB9XG4gICAgdSgociA9IHIuYXBwbHkoZSwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFh0KGUsIG4pIHtcbiAgdmFyIHQgPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHtcbiAgICBpZiAoaVswXSAmIDEpIHRocm93IGlbMV07XG4gICAgcmV0dXJuIGlbMV07XG4gIH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIHIsIHMsIGksIGEgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT0gXCJmdW5jdGlvblwiID8gSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSk7XG4gIHJldHVybiBhLm5leHQgPSBjKDApLCBhLnRocm93ID0gYygxKSwgYS5yZXR1cm4gPSBjKDIpLCB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiAoYVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBhO1xuICBmdW5jdGlvbiBjKHUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZCkge1xuICAgICAgcmV0dXJuIGwoW3UsIGRdKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGwodSkge1xuICAgIGlmIChyKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICBmb3IgKDsgYSAmJiAoYSA9IDAsIHVbMF0gJiYgKHQgPSAwKSksIHQ7ICkgdHJ5IHtcbiAgICAgIGlmIChyID0gMSwgcyAmJiAoaSA9IHVbMF0gJiAyID8gcy5yZXR1cm4gOiB1WzBdID8gcy50aHJvdyB8fCAoKGkgPSBzLnJldHVybikgJiYgaS5jYWxsKHMpLCAwKSA6IHMubmV4dCkgJiYgIShpID0gaS5jYWxsKHMsIHVbMV0pKS5kb25lKSByZXR1cm4gaTtcbiAgICAgIHN3aXRjaCAocyA9IDAsIGkgJiYgKHUgPSBbdVswXSAmIDIsIGkudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiB0LmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICB0LmxhYmVsKyssIHMgPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IHQub3BzLnBvcCgpLCB0LnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGkgPSB0LnRyeXMsICEoaSA9IGkubGVuZ3RoID4gMCAmJiBpW2kubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICB0ID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIWkgfHwgdVsxXSA+IGlbMF0gJiYgdVsxXSA8IGlbM10pKSB7XG4gICAgICAgICAgICB0LmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiB0LmxhYmVsIDwgaVsxXSkge1xuICAgICAgICAgICAgdC5sYWJlbCA9IGlbMV0sIGkgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpICYmIHQubGFiZWwgPCBpWzJdKSB7XG4gICAgICAgICAgICB0LmxhYmVsID0gaVsyXSwgdC5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpWzJdICYmIHQub3BzLnBvcCgpLCB0LnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gbi5jYWxsKGUsIHQpO1xuICAgIH0gY2F0Y2ggKGQpIHtcbiAgICAgIHUgPSBbNiwgZF0sIHMgPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICByID0gaSA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6ICEwIH07XG4gIH1cbn1cbmZ1bmN0aW9uIGZlKGUpIHtcbiAgdmFyIG4gPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHQgPSBuICYmIGVbbl0sIHIgPSAwO1xuICBpZiAodCkgcmV0dXJuIHQuY2FsbChlKTtcbiAgaWYgKGUgJiYgdHlwZW9mIGUubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZSAmJiByID49IGUubGVuZ3RoICYmIChlID0gdm9pZCAwKSwgeyB2YWx1ZTogZSAmJiBlW3IrK10sIGRvbmU6ICFlIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKG4gPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5mdW5jdGlvbiBqZShlLCBuKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgciA9IHQuY2FsbChlKSwgcywgaSA9IFtdLCBhO1xuICB0cnkge1xuICAgIGZvciAoOyAobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEocyA9IHIubmV4dCgpKS5kb25lOyApIGkucHVzaChzLnZhbHVlKTtcbiAgfSBjYXRjaCAoYykge1xuICAgIGEgPSB7IGVycm9yOiBjIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIHMgJiYgIXMuZG9uZSAmJiAodCA9IHIucmV0dXJuKSAmJiB0LmNhbGwocik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChhKSB0aHJvdyBhLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn1cbmZ1bmN0aW9uIHhlKGUsIG4sIHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIHIgPSAwLCBzID0gbi5sZW5ndGgsIGk7IHIgPCBzOyByKyspXG4gICAgKGkgfHwgIShyIGluIG4pKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4sIDAsIHIpKSwgaVtyXSA9IG5bcl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSk7XG59XG5mdW5jdGlvbiB5ZShlKSB7XG4gIHJldHVybiB0aGlzIGluc3RhbmNlb2YgeWUgPyAodGhpcy52ID0gZSwgdGhpcykgOiBuZXcgeWUoZSk7XG59XG5mdW5jdGlvbiBhbyhlLCBuLCB0KSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciByID0gdC5hcHBseShlLCBuIHx8IFtdKSwgcywgaSA9IFtdO1xuICByZXR1cm4gcyA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBBc3luY0l0ZXJhdG9yID09IFwiZnVuY3Rpb25cIiA/IEFzeW5jSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSksIGMoXCJuZXh0XCIpLCBjKFwidGhyb3dcIiksIGMoXCJyZXR1cm5cIiwgYSksIHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIHM7XG4gIGZ1bmN0aW9uIGEoeSkge1xuICAgIHJldHVybiBmdW5jdGlvbihmKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGYpLnRoZW4oeSwgXyk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBjKHksIGYpIHtcbiAgICByW3ldICYmIChzW3ldID0gZnVuY3Rpb24oaCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHYsIGIpIHtcbiAgICAgICAgaS5wdXNoKFt5LCBoLCB2LCBiXSkgPiAxIHx8IGwoeSwgaCk7XG4gICAgICB9KTtcbiAgICB9LCBmICYmIChzW3ldID0gZihzW3ldKSkpO1xuICB9XG4gIGZ1bmN0aW9uIGwoeSwgZikge1xuICAgIHRyeSB7XG4gICAgICB1KHJbeV0oZikpO1xuICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgIG0oaVswXVszXSwgaCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHUoeSkge1xuICAgIHkudmFsdWUgaW5zdGFuY2VvZiB5ZSA/IFByb21pc2UucmVzb2x2ZSh5LnZhbHVlLnYpLnRoZW4oZCwgXykgOiBtKGlbMF1bMl0sIHkpO1xuICB9XG4gIGZ1bmN0aW9uIGQoeSkge1xuICAgIGwoXCJuZXh0XCIsIHkpO1xuICB9XG4gIGZ1bmN0aW9uIF8oeSkge1xuICAgIGwoXCJ0aHJvd1wiLCB5KTtcbiAgfVxuICBmdW5jdGlvbiBtKHksIGYpIHtcbiAgICB5KGYpLCBpLnNoaWZ0KCksIGkubGVuZ3RoICYmIGwoaVswXVswXSwgaVswXVsxXSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNvKGUpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIG4gPSBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgdDtcbiAgcmV0dXJuIG4gPyBuLmNhbGwoZSkgOiAoZSA9IHR5cGVvZiBmZSA9PSBcImZ1bmN0aW9uXCIgPyBmZShlKSA6IGVbU3ltYm9sLml0ZXJhdG9yXSgpLCB0ID0ge30sIHIoXCJuZXh0XCIpLCByKFwidGhyb3dcIiksIHIoXCJyZXR1cm5cIiksIHRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIHQpO1xuICBmdW5jdGlvbiByKGkpIHtcbiAgICB0W2ldID0gZVtpXSAmJiBmdW5jdGlvbihhKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oYywgbCkge1xuICAgICAgICBhID0gZVtpXShhKSwgcyhjLCBsLCBhLmRvbmUsIGEudmFsdWUpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBzKGksIGEsIGMsIGwpIHtcbiAgICBQcm9taXNlLnJlc29sdmUobCkudGhlbihmdW5jdGlvbih1KSB7XG4gICAgICBpKHsgdmFsdWU6IHUsIGRvbmU6IGMgfSk7XG4gICAgfSwgYSk7XG4gIH1cbn1cbmZ1bmN0aW9uIEQoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gcWUoZSkge1xuICB2YXIgbiA9IGZ1bmN0aW9uKHIpIHtcbiAgICBFcnJvci5jYWxsKHIpLCByLnN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7XG4gIH0sIHQgPSBlKG4pO1xuICByZXR1cm4gdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSksIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gdCwgdDtcbn1cbnZhciBXZSA9IHFlKGZ1bmN0aW9uKGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBlKHRoaXMpLCB0aGlzLm1lc3NhZ2UgPSB0ID8gdC5sZW5ndGggKyBgIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XG5gICsgdC5tYXAoZnVuY3Rpb24ociwgcykge1xuICAgICAgcmV0dXJuIHMgKyAxICsgXCIpIFwiICsgci50b1N0cmluZygpO1xuICAgIH0pLmpvaW4oYFxuICBgKSA6IFwiXCIsIHRoaXMubmFtZSA9IFwiVW5zdWJzY3JpcHRpb25FcnJvclwiLCB0aGlzLmVycm9ycyA9IHQ7XG4gIH07XG59KTtcbmZ1bmN0aW9uICRlKGUsIG4pIHtcbiAgaWYgKGUpIHtcbiAgICB2YXIgdCA9IGUuaW5kZXhPZihuKTtcbiAgICAwIDw9IHQgJiYgZS5zcGxpY2UodCwgMSk7XG4gIH1cbn1cbnZhciBSZSA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBlKG4pIHtcbiAgICB0aGlzLmluaXRpYWxUZWFyZG93biA9IG4sIHRoaXMuY2xvc2VkID0gITEsIHRoaXMuX3BhcmVudGFnZSA9IG51bGwsIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICB9XG4gIHJldHVybiBlLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBuLCB0LCByLCBzLCBpO1xuICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgIHRoaXMuY2xvc2VkID0gITA7XG4gICAgICB2YXIgYSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgIGlmIChhKVxuICAgICAgICBpZiAodGhpcy5fcGFyZW50YWdlID0gbnVsbCwgQXJyYXkuaXNBcnJheShhKSlcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgYyA9IGZlKGEpLCBsID0gYy5uZXh0KCk7ICFsLmRvbmU7IGwgPSBjLm5leHQoKSkge1xuICAgICAgICAgICAgICB2YXIgdSA9IGwudmFsdWU7XG4gICAgICAgICAgICAgIHUucmVtb3ZlKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgICAgICAgIG4gPSB7IGVycm9yOiBoIH07XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGwgJiYgIWwuZG9uZSAmJiAodCA9IGMucmV0dXJuKSAmJiB0LmNhbGwoYyk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBpZiAobikgdGhyb3cgbi5lcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhLnJlbW92ZSh0aGlzKTtcbiAgICAgIHZhciBkID0gdGhpcy5pbml0aWFsVGVhcmRvd247XG4gICAgICBpZiAoRChkKSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBkKCk7XG4gICAgICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgICAgICBpID0gaCBpbnN0YW5jZW9mIFdlID8gaC5lcnJvcnMgOiBbaF07XG4gICAgICAgIH1cbiAgICAgIHZhciBfID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgIGlmIChfKSB7XG4gICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAodmFyIG0gPSBmZShfKSwgeSA9IG0ubmV4dCgpOyAheS5kb25lOyB5ID0gbS5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciBmID0geS52YWx1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIF90KGYpO1xuICAgICAgICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICAgICAgICBpID0gaSA/PyBbXSwgaCBpbnN0YW5jZW9mIFdlID8gaSA9IHhlKHhlKFtdLCBqZShpKSksIGplKGguZXJyb3JzKSkgOiBpLnB1c2goaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChoKSB7XG4gICAgICAgICAgciA9IHsgZXJyb3I6IGggfTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgeSAmJiAheS5kb25lICYmIChzID0gbS5yZXR1cm4pICYmIHMuY2FsbChtKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaSlcbiAgICAgICAgdGhyb3cgbmV3IFdlKGkpO1xuICAgIH1cbiAgfSwgZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0O1xuICAgIGlmIChuICYmIG4gIT09IHRoaXMpXG4gICAgICBpZiAodGhpcy5jbG9zZWQpXG4gICAgICAgIF90KG4pO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChuIGluc3RhbmNlb2YgZSkge1xuICAgICAgICAgIGlmIChuLmNsb3NlZCB8fCBuLl9oYXNQYXJlbnQodGhpcykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgbi5fYWRkUGFyZW50KHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgICh0aGlzLl9maW5hbGl6ZXJzID0gKHQgPSB0aGlzLl9maW5hbGl6ZXJzKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogW10pLnB1c2gobik7XG4gICAgICB9XG4gIH0sIGUucHJvdG90eXBlLl9oYXNQYXJlbnQgPSBmdW5jdGlvbihuKSB7XG4gICAgdmFyIHQgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgcmV0dXJuIHQgPT09IG4gfHwgQXJyYXkuaXNBcnJheSh0KSAmJiB0LmluY2x1ZGVzKG4pO1xuICB9LCBlLnByb3RvdHlwZS5fYWRkUGFyZW50ID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gdGhpcy5fcGFyZW50YWdlO1xuICAgIHRoaXMuX3BhcmVudGFnZSA9IEFycmF5LmlzQXJyYXkodCkgPyAodC5wdXNoKG4pLCB0KSA6IHQgPyBbdCwgbl0gOiBuO1xuICB9LCBlLnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50ID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gdGhpcy5fcGFyZW50YWdlO1xuICAgIHQgPT09IG4gPyB0aGlzLl9wYXJlbnRhZ2UgPSBudWxsIDogQXJyYXkuaXNBcnJheSh0KSAmJiAkZSh0LCBuKTtcbiAgfSwgZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gdGhpcy5fZmluYWxpemVycztcbiAgICB0ICYmICRlKHQsIG4pLCBuIGluc3RhbmNlb2YgZSAmJiBuLl9yZW1vdmVQYXJlbnQodGhpcyk7XG4gIH0sIGUuRU1QVFkgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbiA9IG5ldyBlKCk7XG4gICAgcmV0dXJuIG4uY2xvc2VkID0gITAsIG47XG4gIH0oKSwgZTtcbn0oKSwgZW4gPSBSZS5FTVBUWTtcbmZ1bmN0aW9uIHRuKGUpIHtcbiAgcmV0dXJuIGUgaW5zdGFuY2VvZiBSZSB8fCBlICYmIFwiY2xvc2VkXCIgaW4gZSAmJiBEKGUucmVtb3ZlKSAmJiBEKGUuYWRkKSAmJiBEKGUudW5zdWJzY3JpYmUpO1xufVxuZnVuY3Rpb24gX3QoZSkge1xuICBEKGUpID8gZSgpIDogZS51bnN1YnNjcmliZSgpO1xufVxudmFyIG5uID0ge1xuICBvblVuaGFuZGxlZEVycm9yOiBudWxsLFxuICBvblN0b3BwZWROb3RpZmljYXRpb246IG51bGwsXG4gIFByb21pc2U6IHZvaWQgMCxcbiAgdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZzogITEsXG4gIHVzZURlcHJlY2F0ZWROZXh0Q29udGV4dDogITFcbn0sIHJuID0ge1xuICBzZXRUaW1lb3V0OiBmdW5jdGlvbihlLCBuKSB7XG4gICAgZm9yICh2YXIgdCA9IFtdLCByID0gMjsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKylcbiAgICAgIHRbciAtIDJdID0gYXJndW1lbnRzW3JdO1xuICAgIHJldHVybiBzZXRUaW1lb3V0LmFwcGx5KHZvaWQgMCwgeGUoW2UsIG5dLCBqZSh0KSkpO1xuICB9LFxuICBjbGVhclRpbWVvdXQ6IGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gKGNsZWFyVGltZW91dCkoZSk7XG4gIH0sXG4gIGRlbGVnYXRlOiB2b2lkIDBcbn07XG5mdW5jdGlvbiBvbihlKSB7XG4gIHJuLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgdGhyb3cgZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBodCgpIHtcbn1cbmZ1bmN0aW9uIExlKGUpIHtcbiAgZSgpO1xufVxudmFyIGN0ID0gZnVuY3Rpb24oZSkge1xuICBvZShuLCBlKTtcbiAgZnVuY3Rpb24gbih0KSB7XG4gICAgdmFyIHIgPSBlLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gci5pc1N0b3BwZWQgPSAhMSwgdCA/IChyLmRlc3RpbmF0aW9uID0gdCwgdG4odCkgJiYgdC5hZGQocikpIDogci5kZXN0aW5hdGlvbiA9IG1vLCByO1xuICB9XG4gIHJldHVybiBuLmNyZWF0ZSA9IGZ1bmN0aW9uKHQsIHIsIHMpIHtcbiAgICByZXR1cm4gbmV3IHJ0KHQsIHIsIHMpO1xuICB9LCBuLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24odCkge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8IHRoaXMuX25leHQodCk7XG4gIH0sIG4ucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24odCkge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8ICh0aGlzLmlzU3RvcHBlZCA9ICEwLCB0aGlzLl9lcnJvcih0KSk7XG4gIH0sIG4ucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pc1N0b3BwZWQgfHwgKHRoaXMuaXNTdG9wcGVkID0gITAsIHRoaXMuX2NvbXBsZXRlKCkpO1xuICB9LCBuLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY2xvc2VkIHx8ICh0aGlzLmlzU3RvcHBlZCA9ICEwLCBlLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpLCB0aGlzLmRlc3RpbmF0aW9uID0gbnVsbCk7XG4gIH0sIG4ucHJvdG90eXBlLl9uZXh0ID0gZnVuY3Rpb24odCkge1xuICAgIHRoaXMuZGVzdGluYXRpb24ubmV4dCh0KTtcbiAgfSwgbi5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24odCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9LCBuLnByb3RvdHlwZS5fY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9LCBuO1xufShSZSksIGxvID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ7XG5mdW5jdGlvbiBRZShlLCBuKSB7XG4gIHJldHVybiBsby5jYWxsKGUsIG4pO1xufVxudmFyIHVvID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIGUobikge1xuICAgIHRoaXMucGFydGlhbE9ic2VydmVyID0gbjtcbiAgfVxuICByZXR1cm4gZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdCA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgIGlmICh0Lm5leHQpXG4gICAgICB0cnkge1xuICAgICAgICB0Lm5leHQobik7XG4gICAgICB9IGNhdGNoIChyKSB7XG4gICAgICAgIERlKHIpO1xuICAgICAgfVxuICB9LCBlLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdCA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgIGlmICh0LmVycm9yKVxuICAgICAgdHJ5IHtcbiAgICAgICAgdC5lcnJvcihuKTtcbiAgICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgICAgRGUocik7XG4gICAgICB9XG4gICAgZWxzZVxuICAgICAgRGUobik7XG4gIH0sIGUucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIG4gPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICBpZiAobi5jb21wbGV0ZSlcbiAgICAgIHRyeSB7XG4gICAgICAgIG4uY29tcGxldGUoKTtcbiAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgRGUodCk7XG4gICAgICB9XG4gIH0sIGU7XG59KCksIHJ0ID0gZnVuY3Rpb24oZSkge1xuICBvZShuLCBlKTtcbiAgZnVuY3Rpb24gbih0LCByLCBzKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodGhpcykgfHwgdGhpcywgYTtcbiAgICBpZiAoRCh0KSB8fCAhdClcbiAgICAgIGEgPSB7XG4gICAgICAgIG5leHQ6IHQgPz8gdm9pZCAwLFxuICAgICAgICBlcnJvcjogciA/PyB2b2lkIDAsXG4gICAgICAgIGNvbXBsZXRlOiBzID8/IHZvaWQgMFxuICAgICAgfTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBjO1xuICAgICAgaSAmJiBubi51c2VEZXByZWNhdGVkTmV4dENvbnRleHQgPyAoYyA9IE9iamVjdC5jcmVhdGUodCksIGMudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGkudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0sIGEgPSB7XG4gICAgICAgIG5leHQ6IHQubmV4dCAmJiBRZSh0Lm5leHQsIGMpLFxuICAgICAgICBlcnJvcjogdC5lcnJvciAmJiBRZSh0LmVycm9yLCBjKSxcbiAgICAgICAgY29tcGxldGU6IHQuY29tcGxldGUgJiYgUWUodC5jb21wbGV0ZSwgYylcbiAgICAgIH0pIDogYSA9IHQ7XG4gICAgfVxuICAgIHJldHVybiBpLmRlc3RpbmF0aW9uID0gbmV3IHVvKGEpLCBpO1xuICB9XG4gIHJldHVybiBuO1xufShjdCk7XG5mdW5jdGlvbiBEZShlKSB7XG4gIG9uKGUpO1xufVxuZnVuY3Rpb24gcG8oZSkge1xuICB0aHJvdyBlO1xufVxudmFyIG1vID0ge1xuICBjbG9zZWQ6ICEwLFxuICBuZXh0OiBodCxcbiAgZXJyb3I6IHBvLFxuICBjb21wbGV0ZTogaHRcbn0sIGx0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wub2JzZXJ2YWJsZSB8fCBcIkBAb2JzZXJ2YWJsZVwiO1xufSgpO1xuZnVuY3Rpb24geW8oZSkge1xuICByZXR1cm4gZTtcbn1cbmZ1bmN0aW9uIGZvKGUpIHtcbiAgcmV0dXJuIGUubGVuZ3RoID09PSAwID8geW8gOiBlLmxlbmd0aCA9PT0gMSA/IGVbMF0gOiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKHIsIHMpIHtcbiAgICAgIHJldHVybiBzKHIpO1xuICAgIH0sIHQpO1xuICB9O1xufVxudmFyIG5lID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIGUobikge1xuICAgIG4gJiYgKHRoaXMuX3N1YnNjcmliZSA9IG4pO1xuICB9XG4gIHJldHVybiBlLnByb3RvdHlwZS5saWZ0ID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gbmV3IGUoKTtcbiAgICByZXR1cm4gdC5zb3VyY2UgPSB0aGlzLCB0Lm9wZXJhdG9yID0gbiwgdDtcbiAgfSwgZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24obiwgdCwgcikge1xuICAgIHZhciBzID0gdGhpcywgaSA9IGhvKG4pID8gbiA6IG5ldyBydChuLCB0LCByKTtcbiAgICByZXR1cm4gTGUoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYSA9IHMsIGMgPSBhLm9wZXJhdG9yLCBsID0gYS5zb3VyY2U7XG4gICAgICBpLmFkZChjID8gYy5jYWxsKGksIGwpIDogbCA/IHMuX3N1YnNjcmliZShpKSA6IHMuX3RyeVN1YnNjcmliZShpKSk7XG4gICAgfSksIGk7XG4gIH0sIGUucHJvdG90eXBlLl90cnlTdWJzY3JpYmUgPSBmdW5jdGlvbihuKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLl9zdWJzY3JpYmUobik7XG4gICAgfSBjYXRjaCAodCkge1xuICAgICAgbi5lcnJvcih0KTtcbiAgICB9XG4gIH0sIGUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHJldHVybiB0ID0gZ3QodCksIG5ldyB0KGZ1bmN0aW9uKHMsIGkpIHtcbiAgICAgIHZhciBhID0gbmV3IHJ0KHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24oYykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuKGMpO1xuICAgICAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgICAgIGkobCksIGEudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBpLFxuICAgICAgICBjb21wbGV0ZTogc1xuICAgICAgfSk7XG4gICAgICByLnN1YnNjcmliZShhKTtcbiAgICB9KTtcbiAgfSwgZS5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdDtcbiAgICByZXR1cm4gKHQgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdC5zdWJzY3JpYmUobik7XG4gIH0sIGUucHJvdG90eXBlW2x0XSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCBlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgbiA9IFtdLCB0ID0gMDsgdCA8IGFyZ3VtZW50cy5sZW5ndGg7IHQrKylcbiAgICAgIG5bdF0gPSBhcmd1bWVudHNbdF07XG4gICAgcmV0dXJuIGZvKG4pKHRoaXMpO1xuICB9LCBlLnByb3RvdHlwZS50b1Byb21pc2UgPSBmdW5jdGlvbihuKSB7XG4gICAgdmFyIHQgPSB0aGlzO1xuICAgIHJldHVybiBuID0gZ3QobiksIG5ldyBuKGZ1bmN0aW9uKHIsIHMpIHtcbiAgICAgIHZhciBpO1xuICAgICAgdC5zdWJzY3JpYmUoZnVuY3Rpb24oYSkge1xuICAgICAgICByZXR1cm4gaSA9IGE7XG4gICAgICB9LCBmdW5jdGlvbihhKSB7XG4gICAgICAgIHJldHVybiBzKGEpO1xuICAgICAgfSwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByKGkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIGUuY3JlYXRlID0gZnVuY3Rpb24obikge1xuICAgIHJldHVybiBuZXcgZShuKTtcbiAgfSwgZTtcbn0oKTtcbmZ1bmN0aW9uIGd0KGUpIHtcbiAgdmFyIG47XG4gIHJldHVybiAobiA9IGUgPz8gbm4uUHJvbWlzZSkgIT09IG51bGwgJiYgbiAhPT0gdm9pZCAwID8gbiA6IFByb21pc2U7XG59XG5mdW5jdGlvbiBfbyhlKSB7XG4gIHJldHVybiBlICYmIEQoZS5uZXh0KSAmJiBEKGUuZXJyb3IpICYmIEQoZS5jb21wbGV0ZSk7XG59XG5mdW5jdGlvbiBobyhlKSB7XG4gIHJldHVybiBlICYmIGUgaW5zdGFuY2VvZiBjdCB8fCBfbyhlKSAmJiB0bihlKTtcbn1cbmZ1bmN0aW9uIGdvKGUpIHtcbiAgcmV0dXJuIEQoZSA9PSBudWxsID8gdm9pZCAwIDogZS5saWZ0KTtcbn1cbmZ1bmN0aW9uIHdvKGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG4pIHtcbiAgICBpZiAoZ28obikpXG4gICAgICByZXR1cm4gbi5saWZ0KGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZSh0LCB0aGlzKTtcbiAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgIHRoaXMuZXJyb3Iocik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmFibGUgdG8gbGlmdCB1bmtub3duIE9ic2VydmFibGUgdHlwZVwiKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGJvKGUsIG4sIHQsIHIsIHMpIHtcbiAgcmV0dXJuIG5ldyB2byhlLCBuLCB0LCByLCBzKTtcbn1cbnZhciB2byA9IGZ1bmN0aW9uKGUpIHtcbiAgb2UobiwgZSk7XG4gIGZ1bmN0aW9uIG4odCwgciwgcywgaSwgYSwgYykge1xuICAgIHZhciBsID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgcmV0dXJuIGwub25GaW5hbGl6ZSA9IGEsIGwuc2hvdWxkVW5zdWJzY3JpYmUgPSBjLCBsLl9uZXh0ID0gciA/IGZ1bmN0aW9uKHUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHIodSk7XG4gICAgICB9IGNhdGNoIChkKSB7XG4gICAgICAgIHQuZXJyb3IoZCk7XG4gICAgICB9XG4gICAgfSA6IGUucHJvdG90eXBlLl9uZXh0LCBsLl9lcnJvciA9IGkgPyBmdW5jdGlvbih1KSB7XG4gICAgICB0cnkge1xuICAgICAgICBpKHUpO1xuICAgICAgfSBjYXRjaCAoZCkge1xuICAgICAgICB0LmVycm9yKGQpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0gOiBlLnByb3RvdHlwZS5fZXJyb3IsIGwuX2NvbXBsZXRlID0gcyA/IGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcygpO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICB0LmVycm9yKHUpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0gOiBlLnByb3RvdHlwZS5fY29tcGxldGUsIGw7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHQ7XG4gICAgaWYgKCF0aGlzLnNob3VsZFVuc3Vic2NyaWJlIHx8IHRoaXMuc2hvdWxkVW5zdWJzY3JpYmUoKSkge1xuICAgICAgdmFyIHIgPSB0aGlzLmNsb3NlZDtcbiAgICAgIGUucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyksICFyICYmICgodCA9IHRoaXMub25GaW5hbGl6ZSkgPT09IG51bGwgfHwgdCA9PT0gdm9pZCAwIHx8IHQuY2FsbCh0aGlzKSk7XG4gICAgfVxuICB9LCBuO1xufShjdCksIEVvID0gcWUoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZSh0aGlzKSwgdGhpcy5uYW1lID0gXCJPYmplY3RVbnN1YnNjcmliZWRFcnJvclwiLCB0aGlzLm1lc3NhZ2UgPSBcIm9iamVjdCB1bnN1YnNjcmliZWRcIjtcbiAgfTtcbn0pLCBzbiA9IGZ1bmN0aW9uKGUpIHtcbiAgb2UobiwgZSk7XG4gIGZ1bmN0aW9uIG4oKSB7XG4gICAgdmFyIHQgPSBlLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gdC5jbG9zZWQgPSAhMSwgdC5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbCwgdC5vYnNlcnZlcnMgPSBbXSwgdC5pc1N0b3BwZWQgPSAhMSwgdC5oYXNFcnJvciA9ICExLCB0LnRocm93bkVycm9yID0gbnVsbCwgdDtcbiAgfVxuICByZXR1cm4gbi5wcm90b3R5cGUubGlmdCA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciA9IG5ldyB3dCh0aGlzLCB0aGlzKTtcbiAgICByZXR1cm4gci5vcGVyYXRvciA9IHQsIHI7XG4gIH0sIG4ucHJvdG90eXBlLl90aHJvd0lmQ2xvc2VkID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKVxuICAgICAgdGhyb3cgbmV3IEVvKCk7XG4gIH0sIG4ucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIExlKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHMsIGk7XG4gICAgICBpZiAoci5fdGhyb3dJZkNsb3NlZCgpLCAhci5pc1N0b3BwZWQpIHtcbiAgICAgICAgci5jdXJyZW50T2JzZXJ2ZXJzIHx8IChyLmN1cnJlbnRPYnNlcnZlcnMgPSBBcnJheS5mcm9tKHIub2JzZXJ2ZXJzKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZm9yICh2YXIgYSA9IGZlKHIuY3VycmVudE9ic2VydmVycyksIGMgPSBhLm5leHQoKTsgIWMuZG9uZTsgYyA9IGEubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgbCA9IGMudmFsdWU7XG4gICAgICAgICAgICBsLm5leHQodCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgICAgcyA9IHsgZXJyb3I6IHUgfTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYyAmJiAhYy5kb25lICYmIChpID0gYS5yZXR1cm4pICYmIGkuY2FsbChhKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKHMpIHRocm93IHMuZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIG4ucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcztcbiAgICBMZShmdW5jdGlvbigpIHtcbiAgICAgIGlmIChyLl90aHJvd0lmQ2xvc2VkKCksICFyLmlzU3RvcHBlZCkge1xuICAgICAgICByLmhhc0Vycm9yID0gci5pc1N0b3BwZWQgPSAhMCwgci50aHJvd25FcnJvciA9IHQ7XG4gICAgICAgIGZvciAodmFyIHMgPSByLm9ic2VydmVyczsgcy5sZW5ndGg7IClcbiAgICAgICAgICBzLnNoaWZ0KCkuZXJyb3IodCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIG4ucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHQgPSB0aGlzO1xuICAgIExlKGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHQuX3Rocm93SWZDbG9zZWQoKSwgIXQuaXNTdG9wcGVkKSB7XG4gICAgICAgIHQuaXNTdG9wcGVkID0gITA7XG4gICAgICAgIGZvciAodmFyIHIgPSB0Lm9ic2VydmVyczsgci5sZW5ndGg7IClcbiAgICAgICAgICByLnNoaWZ0KCkuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmlzU3RvcHBlZCA9IHRoaXMuY2xvc2VkID0gITAsIHRoaXMub2JzZXJ2ZXJzID0gdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgfSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCBcIm9ic2VydmVkXCIsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQ7XG4gICAgICByZXR1cm4gKCh0ID0gdGhpcy5vYnNlcnZlcnMpID09PSBudWxsIHx8IHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHQubGVuZ3RoKSA+IDA7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICBjb25maWd1cmFibGU6ICEwXG4gIH0pLCBuLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksIGUucHJvdG90eXBlLl90cnlTdWJzY3JpYmUuY2FsbCh0aGlzLCB0KTtcbiAgfSwgbi5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLCB0aGlzLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzKHQpLCB0aGlzLl9pbm5lclN1YnNjcmliZSh0KTtcbiAgfSwgbi5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcywgcyA9IHRoaXMsIGkgPSBzLmhhc0Vycm9yLCBhID0gcy5pc1N0b3BwZWQsIGMgPSBzLm9ic2VydmVycztcbiAgICByZXR1cm4gaSB8fCBhID8gZW4gOiAodGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbCwgYy5wdXNoKHQpLCBuZXcgUmUoZnVuY3Rpb24oKSB7XG4gICAgICByLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsLCAkZShjLCB0KTtcbiAgICB9KSk7XG4gIH0sIG4ucHJvdG90eXBlLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcywgcyA9IHIuaGFzRXJyb3IsIGkgPSByLnRocm93bkVycm9yLCBhID0gci5pc1N0b3BwZWQ7XG4gICAgcyA/IHQuZXJyb3IoaSkgOiBhICYmIHQuY29tcGxldGUoKTtcbiAgfSwgbi5wcm90b3R5cGUuYXNPYnNlcnZhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHQgPSBuZXcgbmUoKTtcbiAgICByZXR1cm4gdC5zb3VyY2UgPSB0aGlzLCB0O1xuICB9LCBuLmNyZWF0ZSA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICByZXR1cm4gbmV3IHd0KHQsIHIpO1xuICB9LCBuO1xufShuZSksIHd0ID0gZnVuY3Rpb24oZSkge1xuICBvZShuLCBlKTtcbiAgZnVuY3Rpb24gbih0LCByKSB7XG4gICAgdmFyIHMgPSBlLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gcy5kZXN0aW5hdGlvbiA9IHQsIHMuc291cmNlID0gciwgcztcbiAgfVxuICByZXR1cm4gbi5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciwgcztcbiAgICAocyA9IChyID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogci5uZXh0KSA9PT0gbnVsbCB8fCBzID09PSB2b2lkIDAgfHwgcy5jYWxsKHIsIHQpO1xuICB9LCBuLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciwgcztcbiAgICAocyA9IChyID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogci5lcnJvcikgPT09IG51bGwgfHwgcyA9PT0gdm9pZCAwIHx8IHMuY2FsbChyLCB0KTtcbiAgfSwgbi5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdCwgcjtcbiAgICAociA9ICh0ID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdC5jb21wbGV0ZSkgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwIHx8IHIuY2FsbCh0KTtcbiAgfSwgbi5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciwgcztcbiAgICByZXR1cm4gKHMgPSAociA9IHRoaXMuc291cmNlKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLnN1YnNjcmliZSh0KSkgIT09IG51bGwgJiYgcyAhPT0gdm9pZCAwID8gcyA6IGVuO1xuICB9LCBuO1xufShzbiksIENvID0ge1xuICBub3c6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBEYXRlLm5vdygpO1xuICB9LFxuICBkZWxlZ2F0ZTogdm9pZCAwXG59LCBTbyA9IGZ1bmN0aW9uKGUpIHtcbiAgb2UobiwgZSk7XG4gIGZ1bmN0aW9uIG4odCwgcikge1xuICAgIHJldHVybiBlLmNhbGwodGhpcykgfHwgdGhpcztcbiAgfVxuICByZXR1cm4gbi5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIG47XG59KFJlKSwgYnQgPSB7XG4gIHNldEludGVydmFsOiBmdW5jdGlvbihlLCBuKSB7XG4gICAgZm9yICh2YXIgdCA9IFtdLCByID0gMjsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKylcbiAgICAgIHRbciAtIDJdID0gYXJndW1lbnRzW3JdO1xuICAgIHJldHVybiBzZXRJbnRlcnZhbC5hcHBseSh2b2lkIDAsIHhlKFtlLCBuXSwgamUodCkpKTtcbiAgfSxcbiAgY2xlYXJJbnRlcnZhbDogZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiBjbGVhckludGVydmFsKGUpO1xuICB9LFxuICBkZWxlZ2F0ZTogdm9pZCAwXG59LCBQbyA9IGZ1bmN0aW9uKGUpIHtcbiAgb2UobiwgZSk7XG4gIGZ1bmN0aW9uIG4odCwgcikge1xuICAgIHZhciBzID0gZS5jYWxsKHRoaXMsIHQsIHIpIHx8IHRoaXM7XG4gICAgcmV0dXJuIHMuc2NoZWR1bGVyID0gdCwgcy53b3JrID0gciwgcy5wZW5kaW5nID0gITEsIHM7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24odCwgcikge1xuICAgIHZhciBzO1xuICAgIGlmIChyID09PSB2b2lkIDAgJiYgKHIgPSAwKSwgdGhpcy5jbG9zZWQpXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB0aGlzLnN0YXRlID0gdDtcbiAgICB2YXIgaSA9IHRoaXMuaWQsIGEgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICByZXR1cm4gaSAhPSBudWxsICYmICh0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZChhLCBpLCByKSksIHRoaXMucGVuZGluZyA9ICEwLCB0aGlzLmRlbGF5ID0gciwgdGhpcy5pZCA9IChzID0gdGhpcy5pZCkgIT09IG51bGwgJiYgcyAhPT0gdm9pZCAwID8gcyA6IHRoaXMucmVxdWVzdEFzeW5jSWQoYSwgdGhpcy5pZCwgciksIHRoaXM7XG4gIH0sIG4ucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkID0gZnVuY3Rpb24odCwgciwgcykge1xuICAgIHJldHVybiBzID09PSB2b2lkIDAgJiYgKHMgPSAwKSwgYnQuc2V0SW50ZXJ2YWwodC5mbHVzaC5iaW5kKHQsIHRoaXMpLCBzKTtcbiAgfSwgbi5wcm90b3R5cGUucmVjeWNsZUFzeW5jSWQgPSBmdW5jdGlvbih0LCByLCBzKSB7XG4gICAgaWYgKHMgPT09IHZvaWQgMCAmJiAocyA9IDApLCBzICE9IG51bGwgJiYgdGhpcy5kZWxheSA9PT0gcyAmJiB0aGlzLnBlbmRpbmcgPT09ICExKVxuICAgICAgcmV0dXJuIHI7XG4gICAgciAhPSBudWxsICYmIGJ0LmNsZWFySW50ZXJ2YWwocik7XG4gIH0sIG4ucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKVxuICAgICAgcmV0dXJuIG5ldyBFcnJvcihcImV4ZWN1dGluZyBhIGNhbmNlbGxlZCBhY3Rpb25cIik7XG4gICAgdGhpcy5wZW5kaW5nID0gITE7XG4gICAgdmFyIHMgPSB0aGlzLl9leGVjdXRlKHQsIHIpO1xuICAgIGlmIChzKVxuICAgICAgcmV0dXJuIHM7XG4gICAgdGhpcy5wZW5kaW5nID09PSAhMSAmJiB0aGlzLmlkICE9IG51bGwgJiYgKHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHRoaXMuc2NoZWR1bGVyLCB0aGlzLmlkLCBudWxsKSk7XG4gIH0sIG4ucHJvdG90eXBlLl9leGVjdXRlID0gZnVuY3Rpb24odCwgcikge1xuICAgIHZhciBzID0gITEsIGk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMud29yayh0KTtcbiAgICB9IGNhdGNoIChhKSB7XG4gICAgICBzID0gITAsIGkgPSBhIHx8IG5ldyBFcnJvcihcIlNjaGVkdWxlZCBhY3Rpb24gdGhyZXcgZmFsc3kgZXJyb3JcIik7XG4gICAgfVxuICAgIGlmIChzKVxuICAgICAgcmV0dXJuIHRoaXMudW5zdWJzY3JpYmUoKSwgaTtcbiAgfSwgbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICB2YXIgdCA9IHRoaXMsIHIgPSB0LmlkLCBzID0gdC5zY2hlZHVsZXIsIGkgPSBzLmFjdGlvbnM7XG4gICAgICB0aGlzLndvcmsgPSB0aGlzLnN0YXRlID0gdGhpcy5zY2hlZHVsZXIgPSBudWxsLCB0aGlzLnBlbmRpbmcgPSAhMSwgJGUoaSwgdGhpcyksIHIgIT0gbnVsbCAmJiAodGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQocywgciwgbnVsbCkpLCB0aGlzLmRlbGF5ID0gbnVsbCwgZS5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICB9XG4gIH0sIG47XG59KFNvKSwgdnQgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gZShuLCB0KSB7XG4gICAgdCA9PT0gdm9pZCAwICYmICh0ID0gZS5ub3cpLCB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSBuLCB0aGlzLm5vdyA9IHQ7XG4gIH1cbiAgcmV0dXJuIGUucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24obiwgdCwgcikge1xuICAgIHJldHVybiB0ID09PSB2b2lkIDAgJiYgKHQgPSAwKSwgbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLCBuKS5zY2hlZHVsZShyLCB0KTtcbiAgfSwgZS5ub3cgPSBDby5ub3csIGU7XG59KCksIGtvID0gZnVuY3Rpb24oZSkge1xuICBvZShuLCBlKTtcbiAgZnVuY3Rpb24gbih0LCByKSB7XG4gICAgciA9PT0gdm9pZCAwICYmIChyID0gdnQubm93KTtcbiAgICB2YXIgcyA9IGUuY2FsbCh0aGlzLCB0LCByKSB8fCB0aGlzO1xuICAgIHJldHVybiBzLmFjdGlvbnMgPSBbXSwgcy5fYWN0aXZlID0gITEsIHM7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcy5hY3Rpb25zO1xuICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgIHIucHVzaCh0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHM7XG4gICAgdGhpcy5fYWN0aXZlID0gITA7XG4gICAgZG9cbiAgICAgIGlmIChzID0gdC5leGVjdXRlKHQuc3RhdGUsIHQuZGVsYXkpKVxuICAgICAgICBicmVhaztcbiAgICB3aGlsZSAodCA9IHIuc2hpZnQoKSk7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZSA9ICExLCBzKSB7XG4gICAgICBmb3IgKDsgdCA9IHIuc2hpZnQoKTsgKVxuICAgICAgICB0LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aHJvdyBzO1xuICAgIH1cbiAgfSwgbjtcbn0odnQpLCBBbyA9IG5ldyBrbyhQbyksIElvID0gZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIiAmJiB0eXBlb2YgZSAhPSBcImZ1bmN0aW9uXCI7XG59O1xuZnVuY3Rpb24gUm8oZSkge1xuICByZXR1cm4gRChlID09IG51bGwgPyB2b2lkIDAgOiBlLnRoZW4pO1xufVxuZnVuY3Rpb24gVG8oZSkge1xuICByZXR1cm4gRChlW2x0XSk7XG59XG5mdW5jdGlvbiBGbyhlKSB7XG4gIHJldHVybiBTeW1ib2wuYXN5bmNJdGVyYXRvciAmJiBEKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKTtcbn1cbmZ1bmN0aW9uIE1vKGUpIHtcbiAgcmV0dXJuIG5ldyBUeXBlRXJyb3IoXCJZb3UgcHJvdmlkZWQgXCIgKyAoZSAhPT0gbnVsbCAmJiB0eXBlb2YgZSA9PSBcIm9iamVjdFwiID8gXCJhbiBpbnZhbGlkIG9iamVjdFwiIDogXCInXCIgKyBlICsgXCInXCIpICsgXCIgd2hlcmUgYSBzdHJlYW0gd2FzIGV4cGVjdGVkLiBZb3UgY2FuIHByb3ZpZGUgYW4gT2JzZXJ2YWJsZSwgUHJvbWlzZSwgUmVhZGFibGVTdHJlYW0sIEFycmF5LCBBc3luY0l0ZXJhYmxlLCBvciBJdGVyYWJsZS5cIik7XG59XG5mdW5jdGlvbiBEbygpIHtcbiAgcmV0dXJuIHR5cGVvZiBTeW1ib2wgIT0gXCJmdW5jdGlvblwiIHx8ICFTeW1ib2wuaXRlcmF0b3IgPyBcIkBAaXRlcmF0b3JcIiA6IFN5bWJvbC5pdGVyYXRvcjtcbn1cbnZhciBObyA9IERvKCk7XG5mdW5jdGlvbiBMbyhlKSB7XG4gIHJldHVybiBEKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGVbTm9dKTtcbn1cbmZ1bmN0aW9uIE9vKGUpIHtcbiAgcmV0dXJuIGFvKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHQsIHIsIHMsIGk7XG4gICAgcmV0dXJuIFh0KHRoaXMsIGZ1bmN0aW9uKGEpIHtcbiAgICAgIHN3aXRjaCAoYS5sYWJlbCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgdCA9IGUuZ2V0UmVhZGVyKCksIGEubGFiZWwgPSAxO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgYS50cnlzLnB1c2goWzEsICwgOSwgMTBdKSwgYS5sYWJlbCA9IDI7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICByZXR1cm4gWzQsIHllKHQucmVhZCgpKV07XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gciA9IGEuc2VudCgpLCBzID0gci52YWx1ZSwgaSA9IHIuZG9uZSwgaSA/IFs0LCB5ZSh2b2lkIDApXSA6IFszLCA1XTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBbMiwgYS5zZW50KCldO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgcmV0dXJuIFs0LCB5ZShzKV07XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICByZXR1cm4gWzQsIGEuc2VudCgpXTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHJldHVybiBhLnNlbnQoKSwgWzMsIDJdO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMF07XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICByZXR1cm4gdC5yZWxlYXNlTG9jaygpLCBbN107XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBVbyhlKSB7XG4gIHJldHVybiBEKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUuZ2V0UmVhZGVyKTtcbn1cbmZ1bmN0aW9uIGpvKGUpIHtcbiAgaWYgKGUgaW5zdGFuY2VvZiBuZSlcbiAgICByZXR1cm4gZTtcbiAgaWYgKGUgIT0gbnVsbCkge1xuICAgIGlmIChUbyhlKSlcbiAgICAgIHJldHVybiB4byhlKTtcbiAgICBpZiAoSW8oZSkpXG4gICAgICByZXR1cm4gJG8oZSk7XG4gICAgaWYgKFJvKGUpKVxuICAgICAgcmV0dXJuIFZvKGUpO1xuICAgIGlmIChGbyhlKSlcbiAgICAgIHJldHVybiBhbihlKTtcbiAgICBpZiAoTG8oZSkpXG4gICAgICByZXR1cm4gR28oZSk7XG4gICAgaWYgKFVvKGUpKVxuICAgICAgcmV0dXJuIHpvKGUpO1xuICB9XG4gIHRocm93IE1vKGUpO1xufVxuZnVuY3Rpb24geG8oZSkge1xuICByZXR1cm4gbmV3IG5lKGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdCA9IGVbbHRdKCk7XG4gICAgaWYgKEQodC5zdWJzY3JpYmUpKVxuICAgICAgcmV0dXJuIHQuc3Vic2NyaWJlKG4pO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcm92aWRlZCBvYmplY3QgZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBTeW1ib2wub2JzZXJ2YWJsZVwiKTtcbiAgfSk7XG59XG5mdW5jdGlvbiAkbyhlKSB7XG4gIHJldHVybiBuZXcgbmUoZnVuY3Rpb24obikge1xuICAgIGZvciAodmFyIHQgPSAwOyB0IDwgZS5sZW5ndGggJiYgIW4uY2xvc2VkOyB0KyspXG4gICAgICBuLm5leHQoZVt0XSk7XG4gICAgbi5jb21wbGV0ZSgpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFZvKGUpIHtcbiAgcmV0dXJuIG5ldyBuZShmdW5jdGlvbihuKSB7XG4gICAgZS50aGVuKGZ1bmN0aW9uKHQpIHtcbiAgICAgIG4uY2xvc2VkIHx8IChuLm5leHQodCksIG4uY29tcGxldGUoKSk7XG4gICAgfSwgZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIG4uZXJyb3IodCk7XG4gICAgfSkudGhlbihudWxsLCBvbik7XG4gIH0pO1xufVxuZnVuY3Rpb24gR28oZSkge1xuICByZXR1cm4gbmV3IG5lKGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdCwgcjtcbiAgICB0cnkge1xuICAgICAgZm9yICh2YXIgcyA9IGZlKGUpLCBpID0gcy5uZXh0KCk7ICFpLmRvbmU7IGkgPSBzLm5leHQoKSkge1xuICAgICAgICB2YXIgYSA9IGkudmFsdWU7XG4gICAgICAgIGlmIChuLm5leHQoYSksIG4uY2xvc2VkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChjKSB7XG4gICAgICB0ID0geyBlcnJvcjogYyB9O1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpICYmICFpLmRvbmUgJiYgKHIgPSBzLnJldHVybikgJiYgci5jYWxsKHMpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKHQpIHRocm93IHQuZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICAgIG4uY29tcGxldGUoKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBhbihlKSB7XG4gIHJldHVybiBuZXcgbmUoZnVuY3Rpb24obikge1xuICAgIHFvKGUsIG4pLmNhdGNoKGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiBuLmVycm9yKHQpO1xuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHpvKGUpIHtcbiAgcmV0dXJuIGFuKE9vKGUpKTtcbn1cbmZ1bmN0aW9uIHFvKGUsIG4pIHtcbiAgdmFyIHQsIHIsIHMsIGk7XG4gIHJldHVybiBpbyh0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGEsIGM7XG4gICAgcmV0dXJuIFh0KHRoaXMsIGZ1bmN0aW9uKGwpIHtcbiAgICAgIHN3aXRjaCAobC5sYWJlbCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgbC50cnlzLnB1c2goWzAsIDUsIDYsIDExXSksIHQgPSBjbyhlKSwgbC5sYWJlbCA9IDE7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICByZXR1cm4gWzQsIHQubmV4dCgpXTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmIChyID0gbC5zZW50KCksICEhci5kb25lKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgIGlmIChhID0gci52YWx1ZSwgbi5uZXh0KGEpLCBuLmNsb3NlZClcbiAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgbC5sYWJlbCA9IDM7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gWzMsIDFdO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMV07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByZXR1cm4gYyA9IGwuc2VudCgpLCBzID0geyBlcnJvcjogYyB9LCBbMywgMTFdO1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgcmV0dXJuIGwudHJ5cy5wdXNoKFs2LCAsIDksIDEwXSksIHIgJiYgIXIuZG9uZSAmJiAoaSA9IHQucmV0dXJuKSA/IFs0LCBpLmNhbGwodCldIDogWzMsIDhdO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgbC5zZW50KCksIGwubGFiZWwgPSA4O1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMF07XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBpZiAocykgdGhyb3cgcy5lcnJvcjtcbiAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIHJldHVybiBbN107XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgcmV0dXJuIG4uY29tcGxldGUoKSwgWzJdO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFlvKGUsIG4sIHQsIHIsIHMpIHtcbiAgciA9PT0gdm9pZCAwICYmIChyID0gMCksIHMgPT09IHZvaWQgMCAmJiAocyA9ICExKTtcbiAgdmFyIGkgPSBuLnNjaGVkdWxlKGZ1bmN0aW9uKCkge1xuICAgIHQoKSwgcyA/IGUuYWRkKHRoaXMuc2NoZWR1bGUobnVsbCwgcikpIDogdGhpcy51bnN1YnNjcmliZSgpO1xuICB9LCByKTtcbiAgaWYgKGUuYWRkKGkpLCAhcylcbiAgICByZXR1cm4gaTtcbn1cbmZ1bmN0aW9uIEJvKGUsIG4pIHtcbiAgdmFyIHQgPSBEKGUpID8gZSA6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBlO1xuICB9LCByID0gZnVuY3Rpb24ocykge1xuICAgIHJldHVybiBzLmVycm9yKHQoKSk7XG4gIH07XG4gIHJldHVybiBuZXcgbmUocik7XG59XG52YXIgSG8gPSBxZShmdW5jdGlvbihlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBlKHRoaXMpLCB0aGlzLm5hbWUgPSBcIkVtcHR5RXJyb3JcIiwgdGhpcy5tZXNzYWdlID0gXCJubyBlbGVtZW50cyBpbiBzZXF1ZW5jZVwiO1xuICB9O1xufSk7XG5mdW5jdGlvbiBKbyhlLCBuKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LCByKSB7XG4gICAgdmFyIHMgPSAhMSwgaTtcbiAgICBlLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBmdW5jdGlvbihhKSB7XG4gICAgICAgIGkgPSBhLCBzID0gITA7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IHIsXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHMgPyB0KGkpIDogcihuZXcgSG8oKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gS28oZSkge1xuICByZXR1cm4gZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGUpO1xufVxudmFyIFpvID0gcWUoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHQgPT09IHZvaWQgMCAmJiAodCA9IG51bGwpLCBlKHRoaXMpLCB0aGlzLm1lc3NhZ2UgPSBcIlRpbWVvdXQgaGFzIG9jY3VycmVkXCIsIHRoaXMubmFtZSA9IFwiVGltZW91dEVycm9yXCIsIHRoaXMuaW5mbyA9IHQ7XG4gIH07XG59KTtcbmZ1bmN0aW9uIFdvKGUsIG4pIHtcbiAgdmFyIHQgPSBLbyhlKSA/IHsgZmlyc3Q6IGUgfSA6IHR5cGVvZiBlID09IFwibnVtYmVyXCIgPyB7IGVhY2g6IGUgfSA6IGUsIHIgPSB0LmZpcnN0LCBzID0gdC5lYWNoLCBpID0gdC53aXRoLCBhID0gaSA9PT0gdm9pZCAwID8gUW8gOiBpLCBjID0gdC5zY2hlZHVsZXIsIGwgPSBjID09PSB2b2lkIDAgPyBBbyA6IGMsIHUgPSB0Lm1ldGEsIGQgPSB1ID09PSB2b2lkIDAgPyBudWxsIDogdTtcbiAgaWYgKHIgPT0gbnVsbCAmJiBzID09IG51bGwpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk5vIHRpbWVvdXQgcHJvdmlkZWQuXCIpO1xuICByZXR1cm4gd28oZnVuY3Rpb24oXywgbSkge1xuICAgIHZhciB5LCBmLCBoID0gbnVsbCwgdiA9IDAsIGIgPSBmdW5jdGlvbihFKSB7XG4gICAgICBmID0gWW8obSwgbCwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgeS51bnN1YnNjcmliZSgpLCBqbyhhKHtcbiAgICAgICAgICAgIG1ldGE6IGQsXG4gICAgICAgICAgICBsYXN0VmFsdWU6IGgsXG4gICAgICAgICAgICBzZWVuOiB2XG4gICAgICAgICAgfSkpLnN1YnNjcmliZShtKTtcbiAgICAgICAgfSBjYXRjaCAoaykge1xuICAgICAgICAgIG0uZXJyb3Ioayk7XG4gICAgICAgIH1cbiAgICAgIH0sIEUpO1xuICAgIH07XG4gICAgeSA9IF8uc3Vic2NyaWJlKGJvKG0sIGZ1bmN0aW9uKEUpIHtcbiAgICAgIGYgPT0gbnVsbCB8fCBmLnVuc3Vic2NyaWJlKCksIHYrKywgbS5uZXh0KGggPSBFKSwgcyA+IDAgJiYgYihzKTtcbiAgICB9LCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24oKSB7XG4gICAgICBmICE9IG51bGwgJiYgZi5jbG9zZWQgfHwgZiA9PSBudWxsIHx8IGYudW5zdWJzY3JpYmUoKSwgaCA9IG51bGw7XG4gICAgfSkpLCAhdiAmJiBiKHIgIT0gbnVsbCA/IHR5cGVvZiByID09IFwibnVtYmVyXCIgPyByIDogK3IgLSBsLm5vdygpIDogcyk7XG4gIH0pO1xufVxuZnVuY3Rpb24gUW8oZSkge1xuICB0aHJvdyBuZXcgWm8oZSk7XG59XG5jbGFzcyBTZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0ID0gKG4pID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcInN1Y2Nlc3NcIiwgaXNTdWNjZXNzOiAhMCwgbG9hZGVkVmFsdWU6IG4gfSwgdGhpcy5fc3ViamVjdC5uZXh0KG4pLCB0aGlzLl9zdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgfSwgdGhpcy50aHJvdyA9IChuLCB0KSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2FkZWRPbmNlIGlzIGFscmVhZHkgaW4gc3VjY2VzcyBzdGF0ZVwiKTtcbiAgICAgIHRoaXMuX2N1cnJlbnQgPSB7IHN0YXR1czogXCJlcnJvclwiLCBpc1N1Y2Nlc3M6ICExLCBlcnJvcjogbiwgZXJyTXNnOiB0IH0sIHRoaXMuX3N1YmplY3QuZXJyb3Iobik7XG4gICAgfSwgdGhpcy5nZXRWYWx1ZUlmTG9hZGVkRWxzZSA9IChuKSA9PiB0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIgPyB0aGlzLl9jdXJyZW50LmxvYWRlZFZhbHVlIDogbiwgdGhpcy5zdWJzY3JpYmUgPSAobikgPT4ge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICBuKHRoaXMuX2N1cnJlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJlcnJvclwiICYmIG4odGhpcy5fY3VycmVudCk7XG4gICAgICBjb25zdCB0ID0gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcInN1Y2Nlc3NcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGUgKG5leHQpOiBwbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSBfY3VycmVudCBiZWZvcmUgdGhlIHN1YmplY3RcIik7XG4gICAgICAgICAgbih0aGlzLl9jdXJyZW50KSwgdC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyAhPT0gXCJlcnJvclwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZSAoZXJyb3IpOiBwbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSBfY3VycmVudCBiZWZvcmUgdGhlIHN1YmplY3RcIik7XG4gICAgICAgICAgbih0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgdGhpcy53YWl0Rm9yTG9hZCA9IChuKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2N1cnJlbnQubG9hZGVkVmFsdWUpO1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcImVycm9yXCIpIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGlzLl9jdXJyZW50LmVycm9yKTtcbiAgICAgIHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcImluaXRpYWxcIiAmJiBZZSh0aGlzLl9jdXJyZW50KTtcbiAgICAgIGNvbnN0IHQgPSB7XG4gICAgICAgIGZpcnN0OiBuLnRpbWVvdXRTZWMgKiAxZTMsXG4gICAgICAgIHdpdGg6ICgpID0+IEJvKCgpID0+IG5ldyBFcnJvcihuLnRpbWVvdXRFcnJNc2cpKVxuICAgICAgfTtcbiAgICAgIHJldHVybiBKbyh0aGlzLl9zdWJqZWN0LnBpcGUoV28odCkpKTtcbiAgICB9LCB0aGlzLl9jdXJyZW50ID0geyBzdGF0dXM6IFwiaW5pdGlhbFwiLCBpc1N1Y2Nlc3M6ICExIH0sIHRoaXMuX3N1YmplY3QgPSBuZXcgc24oKTtcbiAgfVxuICBnZXQgY3VycmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudDtcbiAgfVxufVxuY29uc3QgRXQgPSB6JDEuZW51bShbXCJkZXZcIiwgXCJzdGdcIiwgXCJwcm9kXCJdKSwgWG8gPSB7XG4gIHByb2Q6IFwiaHR0cHM6Ly9jb25udG8uZ2V0b3BlbnBheS5jb21cIixcbiAgc3RnOiBcImh0dHBzOi8vY29ubnRvLm9wZW5wYXlzdGFnaW5nLmNvbVwiLFxuICBkZXY6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDAwXCJcbn0sIGVzID0gKGUpID0+IFhvW2VdLCBYZSA9IHt9LCBjbiA9IGFzeW5jIChlKSA9PiB7XG4gIGlmIChYZVtlXSlcbiAgICByZXR1cm4gWGVbZV07XG4gIHRyeSB7XG4gICAgY29uc3QgbiA9IGF3YWl0IGZldGNoKG5ldyBVUkwoXCIvaGVhbHRoL2Vudmlyb25tZW50XCIsIGUpKS50aGVuKChyKSA9PiByLmpzb24oKSksIHQgPSBFdC5wYXJzZShuLmVudmlyb25tZW50KTtcbiAgICByZXR1cm4gWGVbZV0gPSB0LCB0O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gRXQuVmFsdWVzLnByb2Q7XG4gIH1cbn07XG5mdW5jdGlvbiBZZShlKSB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIGNhc2U6ICR7ZX1gKTtcbn1cbmNvbnN0IGxuID0gKGUsIG4pID0+IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFt0XSkgPT4gIW4uaW5jbHVkZXModCkpKSwgQSA9ICgpID0+IHtcbiAgaWYgKCEodHlwZW9mIHdpbmRvdyA+IFwidVwiKSlcbiAgICByZXR1cm4gd2luZG93O1xufSwgb3QgPSBuZXcgU2UoKSwgQ3QgPSBcIm9wX21ldHJpY3NfcXVldWVcIiwgdHMgPSAzLCBucyA9IDMsIHJzID0gMWUzLCB7IGxvZ19fOiBOZSB9ID0gUChcIm9wLW1ldHJpY3NcIik7XG5jbGFzcyBvcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHZhciBuLCB0O1xuICAgIHRoaXMucXVldWUgPSBbXSwgdGhpcy5wcm9jZXNzaW5nUXVldWUgPSAhMSwgdGhpcy5iYXRjaFRpbWVvdXQgPSBudWxsLCB0aGlzLmxhc3RFdmVudFRpbWVzdGFtcCA9IDAsIHRoaXMub2ZmbGluZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgTmUoXCJOZXR3b3JrIG9mZmxpbmUsIG1ldHJpY3Mgd2lsbCBiZSBxdWV1ZWRcIiksIHRoaXMuY2FuY2VsQmF0Y2hQcm9jZXNzaW5nKCk7XG4gICAgfSwgdGhpcy5vbmxpbmVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgIE5lKFwiTmV0d29yayBvbmxpbmUsIHByb2Nlc3NpbmcgbWV0cmljcyBxdWV1ZVwiKSwgdGhpcy5wcm9jZXNzUXVldWUoKTtcbiAgICB9LCB0aGlzLmxvYWRRdWV1ZUZyb21TdG9yYWdlKCksIChuID0gQSgpKSA9PSBudWxsIHx8IG4uYWRkRXZlbnRMaXN0ZW5lcihcIm9mZmxpbmVcIiwgdGhpcy5vZmZsaW5lTGlzdGVuZXIpLCAodCA9IEEoKSkgPT0gbnVsbCB8fCB0LmFkZEV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIiwgdGhpcy5vbmxpbmVMaXN0ZW5lcik7XG4gIH1cbiAgYWRkRXZlbnQobiwgdCwgcikge1xuICAgIGNvbnN0IHMgPSB7XG4gICAgICBldmVudE5hbWU6IG4sXG4gICAgICBwcm9wZXJ0aWVzOiB0IHx8IHt9LFxuICAgICAgY29udGV4dFByb3BlcnRpZXM6IHIgfHwge30sXG4gICAgICBub25jZTogdjQoKSxcbiAgICAgIHRpbWVzdGFtcDogcGVyZm9ybWFuY2Uubm93KCksXG4gICAgICBkYXRldGltZTogKC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpKS50b0lTT1N0cmluZygpLFxuICAgICAgYXR0ZW1wdENvdW50OiAwLFxuICAgICAgdGltZURpZmZGcm9tUHJldmlvdXNFdmVudDogdGhpcy5sYXN0RXZlbnRUaW1lc3RhbXAgPyBwZXJmb3JtYW5jZS5ub3coKSAtIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wIDogMFxuICAgIH07XG4gICAgdGhpcy5sYXN0RXZlbnRUaW1lc3RhbXAgPSBzLnRpbWVzdGFtcCwgdGhpcy5xdWV1ZS5wdXNoKHMpLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpLCB0aGlzLnNjaGVkdWxlQmF0Y2hQcm9jZXNzaW5nKCk7XG4gIH1cbiAgbG9hZFF1ZXVlRnJvbVN0b3JhZ2UoKSB7XG4gICAgdmFyIG4sIHQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHIgPSAodCA9IChuID0gQSgpKSA9PSBudWxsID8gdm9pZCAwIDogbi5sb2NhbFN0b3JhZ2UpID09IG51bGwgPyB2b2lkIDAgOiB0LmdldEl0ZW0oQ3QpO1xuICAgICAgciAmJiAodGhpcy5xdWV1ZSA9IEpTT04ucGFyc2UocikpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5xdWV1ZSA9IFtdLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpO1xuICAgIH1cbiAgfVxuICBzYXZlUXVldWVUb1N0b3JhZ2UoKSB7XG4gICAgdmFyIG47XG4gICAgKG4gPSBBKCkpID09IG51bGwgfHwgbi5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShDdCwgSlNPTi5zdHJpbmdpZnkodGhpcy5xdWV1ZSkpO1xuICB9XG4gIHNjaGVkdWxlQmF0Y2hQcm9jZXNzaW5nKCkge1xuICAgIGNvbnN0IG4gPSBBKCk7XG4gICAgbiAmJiBuYXZpZ2F0b3Iub25MaW5lICYmICF0aGlzLnByb2Nlc3NpbmdRdWV1ZSAmJiB0aGlzLnF1ZXVlLmxlbmd0aCA+IDAgJiYgIXRoaXMuYmF0Y2hUaW1lb3V0ICYmICh0aGlzLmJhdGNoVGltZW91dCA9IG4uc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmJhdGNoVGltZW91dCA9IG51bGwsIHRoaXMucHJvY2Vzc1F1ZXVlKCk7XG4gICAgfSwgcnMpKTtcbiAgfVxuICBjYW5jZWxCYXRjaFByb2Nlc3NpbmcoKSB7XG4gICAgdmFyIG47XG4gICAgdGhpcy5iYXRjaFRpbWVvdXQgJiYgKChuID0gQSgpKSA9PSBudWxsIHx8IG4uY2xlYXJUaW1lb3V0KHRoaXMuYmF0Y2hUaW1lb3V0KSwgdGhpcy5iYXRjaFRpbWVvdXQgPSBudWxsKSwgdGhpcy5wcm9jZXNzaW5nUXVldWUgPSAhMTtcbiAgfVxuICBwcm9jZXNzUXVldWUoKSB7XG4gICAgIW5hdmlnYXRvci5vbkxpbmUgfHwgdGhpcy5wcm9jZXNzaW5nUXVldWUgfHwgdGhpcy5xdWV1ZS5sZW5ndGggPT09IDAgfHwgKHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gITAsIHRoaXMuc2VuZEJhdGNoKCkuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9ICExLCB0aGlzLnF1ZXVlLmxlbmd0aCA+IDAgJiYgdGhpcy5zY2hlZHVsZUJhdGNoUHJvY2Vzc2luZygpO1xuICAgIH0pKTtcbiAgfVxuICBhc3luYyBzZW5kQmF0Y2goKSB7XG4gICAgaWYgKHRoaXMucXVldWUubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgbiA9IG90LmdldFZhbHVlSWZMb2FkZWRFbHNlKHZvaWQgMCk7XG4gICAgaWYgKCFuKSB7XG4gICAgICBOZShcIk1ldHJpY3MgY29udGV4dCBub3QgYXZhaWxhYmxlLCB3aWxsIHJldHJ5IGxhdGVyXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0ID0gdGhpcy5xdWV1ZS5zbGljZSgwLCBucyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHIgPSB7XG4gICAgICAgIGV2ZW50czogdC5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgZXZlbnRfbmFtZTogYy5ldmVudE5hbWUsXG4gICAgICAgICAgZGV2aWNlX3Rva2VuOiBuLmRldmljZVRva2VuLFxuICAgICAgICAgIGNvbnRleHRfcHJvcGVydGllczoge1xuICAgICAgICAgICAgLi4ubixcbiAgICAgICAgICAgIC4uLmMuY29udGV4dFByb3BlcnRpZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG5vbmNlOiBjLm5vbmNlLFxuICAgICAgICAgICAgZGF0ZXRpbWU6IGMuZGF0ZXRpbWUsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IGMudGltZXN0YW1wLFxuICAgICAgICAgICAgdGltZV9kaWZmX2Zyb21fcHJldmlvdXNfZXZlbnQ6IGMudGltZURpZmZGcm9tUHJldmlvdXNFdmVudCxcbiAgICAgICAgICAgIGNoZWNrb3V0X3NlY3VyZV90b2tlbjogbi5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgICAgLi4uYy5wcm9wZXJ0aWVzXG4gICAgICAgICAgfVxuICAgICAgICB9KSlcbiAgICAgIH0sIHMgPSBlcyhuLmVudmlyb25tZW50KSwgaSA9IG5ldyBVUkwoXCIvbWV0cmljcy9wdWJsaWMvY2FwdHVyZVwiLCBzKTtcbiAgICAgIChhd2FpdCBmZXRjaChpLnRvU3RyaW5nKCksIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHIpXG4gICAgICB9KSkub2sgPyAodGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuc2xpY2UodC5sZW5ndGgpLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpKSA6IHRoaXMuaGFuZGxlRmFpbGVkQmF0Y2godCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgTmUoXCJFcnJvciBzZW5kaW5nIG1ldHJpY3MgYmF0Y2g6XCIsIHIpLCB0aGlzLmhhbmRsZUZhaWxlZEJhdGNoKHQpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVGYWlsZWRCYXRjaChuKSB7XG4gICAgbi5mb3JFYWNoKChyKSA9PiB7XG4gICAgICByLmF0dGVtcHRDb3VudCsrO1xuICAgIH0pO1xuICAgIGNvbnN0IHQgPSBuLmZpbHRlcigocikgPT4gci5hdHRlbXB0Q291bnQgPCB0cyk7XG4gICAgdGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuc2xpY2Uobi5sZW5ndGgpLCB0aGlzLnF1ZXVlID0gWy4uLnQsIC4uLnRoaXMucXVldWVdLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpO1xuICB9XG4gIGNsZWFudXAoKSB7XG4gICAgdmFyIG4sIHQ7XG4gICAgKG4gPSBBKCkpID09IG51bGwgfHwgbi5yZW1vdmVFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCB0aGlzLm9mZmxpbmVMaXN0ZW5lciksICh0ID0gQSgpKSA9PSBudWxsIHx8IHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCB0aGlzLm9ubGluZUxpc3RlbmVyKSwgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgfVxufVxuY29uc3QgdW4gPSBuZXcgb3MoKSwgZyA9IChlLCBuLCB0KSA9PiB7XG4gIHVuLmFkZEV2ZW50KGUsIG4sIHQpO1xufSwgZG4gPSAoZSkgPT4ge1xuICBjb25zdCBuID0gVihlLnJlYXNvbik7XG4gIGcoXCJ1bmhhbmRsZWRfcmVqZWN0aW9uX2Vycm9yXCIsIHtcbiAgICBlcnJvcl9tZXNzYWdlOiBuLFxuICAgIGVycm9yX25hbWU6IGUucmVhc29uXG4gIH0pO1xufSwgcG4gPSAoZSkgPT4ge1xuICB2YXIgdCwgcjtcbiAgY29uc3QgbiA9IFYoZS5lcnJvcik7XG4gIGcoXCJ1bmNhdWdodF9lcnJvclwiLCB7XG4gICAgZXJyb3JfbWVzc2FnZTogbixcbiAgICBlcnJvcl9uYW1lOiAodCA9IGUuZXJyb3IpID09IG51bGwgPyB2b2lkIDAgOiB0Lm5hbWUsXG4gICAgZXJyb3Jfc3RhY2s6IChyID0gZS5lcnJvcikgPT0gbnVsbCA/IHZvaWQgMCA6IHIuc3RhY2ssXG4gICAgZmlsZV9uYW1lOiBlLmZpbGVuYW1lLFxuICAgIGxpbmVfbnVtYmVyOiBlLmxpbmVubyxcbiAgICBjb2x1bW5fbnVtYmVyOiBlLmNvbG5vXG4gIH0pO1xufSwgc3MgPSAoKSA9PiB7XG4gIHZhciBlLCBuO1xuICAoZSA9IEEoKSkgPT0gbnVsbCB8fCBlLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBwbiksIChuID0gQSgpKSA9PSBudWxsIHx8IG4uYWRkRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLCBkbik7XG59LCBpcyA9ICgpID0+IHtcbiAgdmFyIGUsIG47XG4gIChlID0gQSgpKSA9PSBudWxsIHx8IGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHBuKSwgKG4gPSBBKCkpID09IG51bGwgfHwgbi5yZW1vdmVFdmVudExpc3RlbmVyKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIsIGRuKTtcbn07XG52YXIgVXQ7XG4oVXQgPSBBKCkpID09IG51bGwgfHwgVXQuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCAoKSA9PiB7XG4gIHVuLnByb2Nlc3NRdWV1ZSgpO1xufSk7XG5jbGFzcyBtbiBleHRlbmRzIHNvIHtcbiAgY29uc3RydWN0b3Iobikge1xuICAgIGNvbnN0IHQgPSBgJHtuLm1lc3NhZ2V9YDtcbiAgICBzdXBlcih0KSwgdGhpcy5yZXNwb25zZSA9IG47XG4gIH1cbiAgZ2V0IG9yaWdpbmFsRXJyb3JNZXNzYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlLm1lc3NhZ2U7XG4gIH1cbn1cbmNvbnN0IEwgPSBhc3luYyAoZSwgbiwgdCwgcikgPT4ge1xuICByICYmIGcociwge1xuICAgIC4uLm5cbiAgfSk7XG4gIGNvbnN0IHMgPSBhd2FpdCBlLnNlbmQobik7XG4gIGlmIChjcyhzKSlcbiAgICB0aHJvdyBuZXcgbW4ocyk7XG4gIGlmICghYXMocywgdCkpIHtcbiAgICBjb25zdCBpID0gdC5zYWZlUGFyc2Uocyk7XG4gICAgdGhyb3cgaS5zdWNjZXNzID8gbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZVwiKSA6IChjb25zb2xlLmVycm9yKFwiT0pTIHF1ZXJ5QXBpIGdvdCBhIHNjaGVtYSBlcnJvci4gRXhwZWN0ZWQgc2NoZW1hOlwiLCB0LCBcIkFjdHVhbDpcIiwgcyksIGkuZXJyb3IpO1xuICB9XG4gIHJldHVybiByICYmIGcociwge1xuICAgIC4uLnNcbiAgfSksIHM7XG59LCBhcyA9IChlLCBuKSA9PiBuLnNhZmVQYXJzZShlKS5zdWNjZXNzLCBjcyA9IChlKSA9PiBPci5zYWZlUGFyc2UoZSkuc3VjY2VzcywgbHMgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChlLCB7IHR5cGU6IFwiZ2V0X2NoZWNrb3V0X3ByZXZpZXdcIiwgcGF5bG9hZDogbiB9LCBLdCksIE4gPSBhc3luYyAoZSkgPT4gYXdhaXQgTChlLCB7IHR5cGU6IFwiZ2V0X3ByZWZpbGxcIiwgcGF5bG9hZDoge30gfSwgWnQpLCBnZSA9IGFzeW5jIChlLCBuKSA9PiBhd2FpdCBMKFxuICBlLFxuICB7IHR5cGU6IFwidjJfc3RhcnRfcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IG4gfSxcbiAgUXQsXG4gIFwic3RhcnRfcGF5bWVudF9mbG93XCJcbiksIHVzID0gYXN5bmMgKGUsIG4pID0+IGF3YWl0IEwoXG4gIGUsXG4gIHsgdHlwZTogXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX2NjXCIsIHBheWxvYWQ6IG4gfSxcbiAgV3IsXG4gIFwic3RhcnRfcGF5bWVudF9mbG93X2Zvcl9jY1wiXG4pLCBkcyA9IGFzeW5jIChlLCBuKSA9PiB7XG4gIGcoXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX3ByXCIsIHtcbiAgICAuLi5uXG4gIH0pO1xuICBjb25zdCB0ID0gYXdhaXQgTChlLCB7IHR5cGU6IFwic3RhcnRfcGF5bWVudF9mbG93X2Zvcl9wclwiLCBwYXlsb2FkOiBuIH0sIFF0KTtcbiAgcmV0dXJuIGcoXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX3ByX3Jlc3VsdFwiLCB7XG4gICAgLi4udFxuICB9KSwgdDtcbn0sIFkgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChcbiAgZSxcbiAgeyB0eXBlOiBcImNvbmZpcm1fcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IG4gfSxcbiAgQ3IsXG4gIFwiY29uZmlybV9wYXltZW50X2Zsb3dcIlxuKSwgcHMgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChcbiAgZSxcbiAgeyB0eXBlOiBcImZpbmFsaXplX3NldHVwX3BheW1lbnRfbWV0aG9kXCIsIHBheWxvYWQ6IG4gfSxcbiAgV3QsXG4gIFwiZmluYWxpemVfc2V0dXBfcGF5bWVudF9tZXRob2RcIlxuKSwgbXMgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChcbiAgZSxcbiAgeyB0eXBlOiBcImNoZWNrX2lmX3BvcHVwX3dpbmRvd192ZXJpZmllZFwiLCBwYXlsb2FkOiBuIH0sXG4gIEVyLFxuICBcImNoZWNrX2lmX3BvcHVwX3dpbmRvd192ZXJpZmllZFwiXG4pLCB5cyA9IGFzeW5jIChlLCBuLCB0KSA9PiB7XG4gIGNvbnN0IHIgPSBhd2FpdCBscyhlLCB7XG4gICAgc2VjdXJlX3Rva2VuOiBuLFxuICAgIHByb21vdGlvbl9jb2RlOiB0XG4gIH0pLCBzID0gbmV3IFNldChyLnByZXZpZXcuaW52b2ljZXMubWFwKChjKSA9PiBjLmN1cnJlbmN5KSk7XG4gIGlmIChzLnNpemUgIT09IDEpXG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBleGFjdGx5IG9uZSBjdXJyZW5jeSwgZ290ICR7cy5zaXplfWApO1xuICBjb25zdCBpID0gcy52YWx1ZXMoKS5uZXh0KCkudmFsdWUgPz8gXCJ1c2RcIiwgYSA9IHRvKHIucHJldmlldy5pbnZvaWNlcy5tYXAoKGMpID0+IGMucmVtYWluaW5nX2Ftb3VudF9hdG9tKSk7XG4gIHJldHVybiB7XG4gICAgY3VycmVuY3k6IGksXG4gICAgYW1vdW50QXRvbTogYVxuICB9O1xufSwgd2UgPSBhc3luYyAoZSwgbiwgdCwgcikgPT4ge1xuICBpZiAodClcbiAgICByZXR1cm4geyBhbW91bnRBdG9tOiAwLCBjdXJyZW5jeTogXCJ1c2RcIiB9O1xuICB7XG4gICAgciA9IHIgfHwgdm9pZCAwO1xuICAgIGNvbnN0IHMgPSBhd2FpdCB5cyhlLCBuLCByKTtcbiAgICByZXR1cm4geyBhbW91bnRBdG9tOiBzLmFtb3VudEF0b20sIGN1cnJlbmN5OiBzLmN1cnJlbmN5IH07XG4gIH1cbn0sIGZzID0gYXN5bmMgKGUsIG4pID0+IHtcbiAgaWYgKGUuc2l6ZSA9PT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBDREUgY29ubmVjdGlvbnMgZm91bmRcIik7XG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBBcnJheS5mcm9tKGUudmFsdWVzKCkpLm1hcChcbiAgICAgIChyKSA9PiBMKHIsIHsgdHlwZTogXCJ0b2tlbml6ZV9jYXJkXCIsIHBheWxvYWQ6IG4gfSwgd3IpXG4gICAgKVxuICApO1xufSwgU3QgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChcbiAgZSxcbiAgeyB0eXBlOiBcImNoZWNrb3V0X2NhcmRfZWxlbWVudHNcIiwgcGF5bG9hZDogbiB9LFxuICBpdCxcbiAgXCJjaGVja291dF9jYXJkX2VsZW1lbnRzXCJcbiksIF9zID0gYXN5bmMgKGUsIG4pID0+IGF3YWl0IEwoZSwgeyB0eXBlOiBcInNldHVwX3BheW1lbnRfbWV0aG9kXCIsIHBheWxvYWQ6IG4gfSwgV3QsIFwic2V0dXBfY2hlY2tvdXRcIiksIHV0ID0gYXN5bmMgKGUsIG4pID0+IGF3YWl0IEwoZSwgeyB0eXBlOiBcImNoZWNrb3V0XCIsIHBheWxvYWQ6IG4gfSwgaXQsIFwicGVyZm9ybV9jaGVja291dFwiKSwgeW4gPSAxZTMsIGhzID0gYXN5bmMgKGUsIG4pID0+IHtcbiAgY29uc29sZS5sb2cobik7XG4gIGNvbnN0IHIgPSBhd2FpdCBjb25uZWN0VG9DaGlsZCh7XG4gICAgaWZyYW1lOiBlLFxuICAgIGRlYnVnOiAhMCxcbiAgICB0aW1lb3V0OiB5bixcbiAgICBjaGlsZE9yaWdpbjogXCIqXCJcbiAgICAvLyBUT0RPOiB1c2Ugd2l0aCBwcm9wZXIgY2hpbGRPcmlnaW5cbiAgfSkucHJvbWlzZSwgcyA9IGF3YWl0IEwociwgeyB0eXBlOiBcInBpbmctM2RzLXN0YXR1c1wiIH0sIGJyKTtcbiAgcmV0dXJuIGNvbnNvbGUubG9nKFwi8J+foiBDREUgY29ubmVjdGlvbiBzdWNjZXNzZnVsISBTdG9wcGluZyBwb2xsaW5nLi4uIFJlc3VsdDpcIiwgcyksIHM7XG59LCBkdCA9IGFzeW5jIChlLCBuKSA9PiBhd2FpdCBMKFxuICBlLFxuICB7IHR5cGU6IFwicHJlcGFyZV9wYXltZW50X2Zsb3dcIiwgcGF5bG9hZDogbiB9LFxuICBYcixcbiAgXCJwcmVwYXJlX3BheW1lbnRfZmxvd1wiXG4pLCBmbiA9IGFzeW5jIChlLCBuKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBMKFxuICAgICAgZSxcbiAgICAgIHsgdHlwZTogXCJnZXRfc3RhbmRhcmRpemVkX2Vycm9yX2NvZGVcIiwgcGF5bG9hZDogeyBtZXNzYWdlOiBuIH0gfSxcbiAgICAgIFFyXG4gICAgKSkuZXJyb3JfY29kZTtcbiAgfSBjYXRjaCAodCkge1xuICAgIHJldHVybiBjb25zb2xlLmVycm9yKFwiW2NkZS1jbGllbnRdIEVycm9yIGR1cmluZyBnZXRTdGFuZGFyZGl6ZWRFcnJvckNvZGU6XCIsIFYodCkpLCBcIlBBWU1FTlRfRkFJTEVEX0dFTkVSSUNcIjtcbiAgfVxufSwgZ3MgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChcbiAgZSxcbiAgeyB0eXBlOiBcInNldF91c2VyX2RldmljZV90b2tlblwiLCBwYXlsb2FkOiB7IGRldmljZV90b2tlbjogbiB9IH0sXG4gIGVvXG4pLCBCID0geiQxLmVudW0oW1wic3RyaXBlXCIsIFwiYWlyd2FsbGV4XCIsIFwiYXV0aG9yaXplX25ldFwiXSk7XG5CLkVudW0uc3RyaXBlO1xuY29uc3QgX24gPSAoe1xuICBzY3JpcHRJZDogZSxcbiAgc3JjOiBuLFxuICBjaGVja0xvYWRlZEZuOiB0XG59KSA9PiB7XG4gIGNvbnN0IHIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocywgaSkgPT4ge1xuICAgIGxldCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICBhLnNyYyA9IG4sIGEuaWQgPSBlLCBhLmFzeW5jID0gITA7XG4gICAgY29uc3QgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO1xuICAgIHQoKSA/IHMoKSA6IGMgPyBhID0gYyA6IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSksIGEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgIFwibG9hZFwiLFxuICAgICAgKCkgPT4ge1xuICAgICAgICByLmFib3J0KCksIHMoKTtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogci5zaWduYWwgfVxuICAgICksIGEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgIFwiZXJyb3JcIixcbiAgICAgICgpID0+IHtcbiAgICAgICAgci5hYm9ydCgpLCBpKFwiRmFpbGVkIHRvIGxvYWQgdGhlIHNjcmlwdFwiKTtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogci5zaWduYWwgfVxuICAgICk7XG4gIH0pO1xufSwgaG4gPSAoKSA9PiBfbih7XG4gIHNjcmlwdElkOiBcIl9fb3BfaW50ZXJuYWxfYXBwbGVfcGF5X3Nka1wiLFxuICBzcmM6IFwiaHR0cHM6Ly9hcHBsZXBheS5jZG4tYXBwbGUuY29tL2pzYXBpLzEubGF0ZXN0L2FwcGxlLXBheS1zZGsuanNcIixcbiAgY2hlY2tMb2FkZWRGbjogKCkgPT4gISF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uIHx8ICEhd2luZG93LkFwcGxlUGF5U0RLXG59KSwgZ24gPSAoZSwgbikgPT4ge1xuICBjb25zdCB0ID0gbi50b2tlbi5wYXltZW50TWV0aG9kLmJpbGxpbmdDb250YWN0LCByID0gbi5iaWxsaW5nQ29udGFjdCwgcyA9IG4uc2hpcHBpbmdDb250YWN0LCBpID0geyAuLi5lIH07XG4gIGlmICh0IHx8IHIgfHwgcykge1xuICAgIGlbcC5FTUFJTF0gPSBpW3AuRU1BSUxdIHx8ICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LmVtYWlsQWRkcmVzcykgfHwgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZW1haWxBZGRyZXNzKSB8fCAocyA9PSBudWxsID8gdm9pZCAwIDogcy5lbWFpbEFkZHJlc3MpIHx8IFwib3BfdW5maWxsZWRAZW1haWwuY29tXCIsIGlbcC5DT1VOVFJZXSA9IGlbcC5DT1VOVFJZXSB8fCAodCA9PSBudWxsID8gdm9pZCAwIDogdC5jb3VudHJ5Q29kZSkgfHwgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuY291bnRyeUNvZGUpIHx8IChzID09IG51bGwgPyB2b2lkIDAgOiBzLmNvdW50cnlDb2RlKSB8fCBcIlVTXCIsIGlbcC5aSVBfQ09ERV0gPSBpW3AuWklQX0NPREVdIHx8ICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LnBvc3RhbENvZGUpIHx8IChyID09IG51bGwgPyB2b2lkIDAgOiByLnBvc3RhbENvZGUpIHx8IChzID09IG51bGwgPyB2b2lkIDAgOiBzLnBvc3RhbENvZGUpIHx8IFwiMDAwMDBcIjtcbiAgICBjb25zdCBhID0gaVtwLkZJUlNUX05BTUVdIHx8ICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LmdpdmVuTmFtZSkgfHwgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZ2l2ZW5OYW1lKSB8fCAocyA9PSBudWxsID8gdm9pZCAwIDogcy5naXZlbk5hbWUpIHx8IFwiXCIsIGMgPSBpW3AuTEFTVF9OQU1FXSB8fCAodCA9PSBudWxsID8gdm9pZCAwIDogdC5mYW1pbHlOYW1lKSB8fCAociA9PSBudWxsID8gdm9pZCAwIDogci5mYW1pbHlOYW1lKSB8fCAocyA9PSBudWxsID8gdm9pZCAwIDogcy5mYW1pbHlOYW1lKSB8fCBcIlwiO1xuICAgIGEgfHwgYyA/IChpW3AuRklSU1RfTkFNRV0gPSBhLCBpW3AuTEFTVF9OQU1FXSA9IGMpIDogKGlbcC5GSVJTVF9OQU1FXSA9IFwiX09QX1VOS05PV05cIiwgaVtwLkxBU1RfTkFNRV0gPSBcIlwiKTtcbiAgfVxuICByZXR1cm4gaTtcbn07XG56JDEub2JqZWN0KHtcbiAgZGF0YTogeiQxLm9iamVjdCh7XG4gICAgbWVzc2FnZUhlYWRlcnM6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICAgIGVycm9yczogeiQxLmFycmF5KHokMS5hbnkoKSksXG4gICAgbWVzc2FnZVR5cGU6IHokMS5zdHJpbmcoKSxcbiAgICBtZXNzYWdlQm9keTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSlcbiAgfSksXG4gIG9yaWdpbjogeiQxLmxpdGVyYWwoXCJodHRwczovL2FwcGxlcGF5LmNkbi1hcHBsZS5jb21cIilcbn0pO1xuY29uc3Qgd3MgPSAoe1xuICB0b3RhbDogZSxcbiAgcHJlZmlsbDogblxufSkgPT4ge1xuICB2YXIgcjtcbiAgaWYgKG4ubW9kZSA9PT0gXCJzZXR1cFwiKVxuICAgIHJldHVybiB7XG4gICAgICBwYXltZW50RGVzY3JpcHRpb246IFwiU2V0dXAgcmVjdXJyaW5nIHBheW1lbnRcIixcbiAgICAgIHJlZ3VsYXJCaWxsaW5nOiB7XG4gICAgICAgIGFtb3VudDogZS5hbW91bnQsXG4gICAgICAgIGxhYmVsOiBcIlNldHVwIHJlY3VycmluZyBwYXltZW50XCIsXG4gICAgICAgIHBheW1lbnRUaW1pbmc6IFwicmVjdXJyaW5nXCIsXG4gICAgICAgIHR5cGU6IFwiZmluYWxcIlxuICAgICAgfSxcbiAgICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIGJpbGxpbmcgcG9ydGFsIHVybFxuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vcGFzc2tpdC9wa3JlY3VycmluZ3BheW1lbnRyZXF1ZXN0L21hbmFnZW1lbnR1cmwjRGlzY3Vzc2lvblxuICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSB1c2VkIHdoZW4gdXNlciByZW1vdmUgYSBjYXJkIGZyb20gdGhlaXIgQXBwbGVQYXkgd2FsbGV0LlxuICAgICAgLy8gQ3VycmVudHkgc2V0IHRvIGNoZWNrb3V0IHNlc3Npb24gdXJsIHRvIHNhdGlzZnkgQXBwbGVQYXkgdHlwZXNcbiAgICAgIG1hbmFnZW1lbnRVUkw6IG5ldyBVUkwoYC9wYXkvJHtuLnRva2VufWAsIHh0KS50b1N0cmluZygpXG4gICAgfTtcbiAgY29uc3QgdCA9IChyID0gbi5saW5lX2l0ZW1zKSA9PSBudWxsID8gdm9pZCAwIDogclswXTtcbiAgaWYgKHQpXG4gICAgcmV0dXJuIHtcbiAgICAgIHBheW1lbnREZXNjcmlwdGlvbjogKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuZGVzY3JpcHRpb24pID8/IFwiXCIsXG4gICAgICByZWd1bGFyQmlsbGluZzoge1xuICAgICAgICBhbW91bnQ6IGUuYW1vdW50LFxuICAgICAgICBsYWJlbDogKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuZGVzY3JpcHRpb24pID8/IFwiXCIsXG4gICAgICAgIHJlY3VycmluZ1BheW1lbnRJbnRlcnZhbFVuaXQ6IHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuYmlsbGluZ19pbnRlcnZhbCxcbiAgICAgICAgcmVjdXJyaW5nUGF5bWVudEludGVydmFsQ291bnQ6ICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LmJpbGxpbmdfaW50ZXJ2YWxfY291bnQpID8/IHZvaWQgMCxcbiAgICAgICAgcGF5bWVudFRpbWluZzogXCJyZWN1cnJpbmdcIixcbiAgICAgICAgdHlwZTogXCJmaW5hbFwiXG4gICAgICB9LFxuICAgICAgbWFuYWdlbWVudFVSTDogYGh0dHBzOi8vY2RlLmdldG9wZW5wYXkuY29tL3BheS8ke24udG9rZW59YFxuICAgIH07XG59LCBicyA9ICh7XG4gIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGUsXG4gIGluaXRpYWxQcmV2aWV3OiBuLFxuICBwcmVmaWxsOiB0LFxuICBkZWZhdWx0TGFiZWw6IHIgPSBcIlRvdGFsXCJcbn0pID0+IHtcbiAgdmFyIGMsIGw7XG4gIGNvbnN0IHMgPSAoKChjID0gZSA9PSBudWxsID8gdm9pZCAwIDogZS5hbW91bnQpID09IG51bGwgPyB2b2lkIDAgOiBjLmN1cnJlbmN5KSA/PyAodCA9PSBudWxsID8gdm9pZCAwIDogdC5jdXJyZW5jeSkgPz8gbi5jdXJyZW5jeSkudG9VcHBlckNhc2UoKSwgYSA9ICgoKChsID0gZSA9PSBudWxsID8gdm9pZCAwIDogZS5hbW91bnQpID09IG51bGwgPyB2b2lkIDAgOiBsLmFtb3VudEF0b20pID8/IChuID09IG51bGwgPyB2b2lkIDAgOiBuLmFtb3VudEF0b20pID8/IDApIC8gMTAwKS50b0ZpeGVkKDIpO1xuICByZXR1cm4ge1xuICAgIGN1cnJlbmN5Q29kZTogcyxcbiAgICB0b3RhbDoge1xuICAgICAgbGFiZWw6IChlID09IG51bGwgPyB2b2lkIDAgOiBlLmxhYmVsKSA/PyByID8/IFwiVG90YWxcIixcbiAgICAgIHR5cGU6IGUgIT0gbnVsbCAmJiBlLnBlbmRpbmcgPyBcInBlbmRpbmdcIiA6IFwiZmluYWxcIixcbiAgICAgIGFtb3VudDogYVxuICAgIH1cbiAgfTtcbn0sIHduID0gKHtcbiAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogZSxcbiAgaW5pdGlhbFByZXZpZXc6IG4sXG4gIHByZWZpbGw6IHQsXG4gIGRlZmF1bHRMYWJlbDogclxufSkgPT4ge1xuICBjb25zdCB7IGN1cnJlbmN5Q29kZTogcywgdG90YWw6IGkgfSA9IGJzKHtcbiAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBlLFxuICAgIGluaXRpYWxQcmV2aWV3OiBuLFxuICAgIHByZWZpbGw6IHQsXG4gICAgZGVmYXVsdExhYmVsOiByXG4gIH0pO1xuICBsZXQgYSA9IHtcbiAgICBjb3VudHJ5Q29kZTogXCJVU1wiLFxuICAgIGN1cnJlbmN5Q29kZTogcyxcbiAgICByZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzOiBbXCJlbWFpbFwiLCBcInBvc3RhbEFkZHJlc3NcIiwgXCJuYW1lXCJdLFxuICAgIHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOiBbXCJlbWFpbFwiXSxcbiAgICBzdXBwb3J0ZWROZXR3b3JrczogW1widmlzYVwiLCBcIm1hc3RlckNhcmRcIiwgXCJhbWV4XCIsIFwiZGlzY292ZXJcIl0sXG4gICAgbWVyY2hhbnRDYXBhYmlsaXRpZXM6IFtcbiAgICAgIFwic3VwcG9ydHMzRFNcIixcbiAgICAgIFwic3VwcG9ydHNDcmVkaXRcIixcbiAgICAgIFwic3VwcG9ydHNEZWJpdFwiLFxuICAgICAgXCJzdXBwb3J0c0VNVlwiXG4gICAgXSxcbiAgICB0b3RhbDogaSxcbiAgICByZWN1cnJpbmdQYXltZW50UmVxdWVzdDogd3Moe1xuICAgICAgdG90YWw6IGksXG4gICAgICBwcmVmaWxsOiB0XG4gICAgfSlcbiAgfTtcbiAgcmV0dXJuIGUgIT0gbnVsbCAmJiBlLmFwcGxlUGF5UGF5bWVudFJlcXVlc3QgJiYgKHR5cGVvZiBlLmFwcGxlUGF5UGF5bWVudFJlcXVlc3QgPT0gXCJmdW5jdGlvblwiID8gYSA9IHtcbiAgICAuLi5hLFxuICAgIC4uLmUuYXBwbGVQYXlQYXltZW50UmVxdWVzdChhKVxuICB9IDogYSA9IHsgLi4uYSwgLi4uZS5hcHBsZVBheVBheW1lbnRSZXF1ZXN0IH0pLCBhO1xufSwgeyBsb2dfXzogcGEsIGVycl9fOiB2cyB9ID0gUChcImNvbW1vblwiKSwgVGUgPSAoZSkgPT4ge1xuICBpZiAoZS5wYXltZW50X21ldGhvZHMubGVuZ3RoICE9PSAxKVxuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZXhhY3RseSBvbmUgcGF5bWVudCBtZXRob2QsIGdvdCAke2UucGF5bWVudF9tZXRob2RzLmxlbmd0aH1gKTtcbiAgcmV0dXJuIHsgcGF5bWVudF9tZXRob2RfaWQ6IGUucGF5bWVudF9tZXRob2RzWzBdLmlkIH07XG59LCBKID0gKGUsIG4pID0+IHtcbiAgY29uc3QgdCA9IGUuZmluZCgocikgPT4gbi5zYWZlUGFyc2Uocikuc3VjY2Vzcyk7XG4gIGlmICghdClcbiAgICB0aHJvdyB2cyhcIk5vIENQTXMgZm91bmQgZm9yIG1vZGVsLiBBbGwgbW9kZWxzOlwiLCBlKSwgbmV3IEVycm9yKFwiTm8gQ1BNcyBmb3VuZCBmb3IgbW9kZWxcIik7XG4gIHJldHVybiBuLnBhcnNlKHQpO1xufSwgRXMgPSAoZSkgPT4gKHtcbiAgbmV3X2N1c3RvbWVyX2VtYWlsOiBlLmVtYWlsLFxuICBuZXdfY3VzdG9tZXJfYWRkcmVzczoge1xuICAgIHppcF9jb2RlOiBlLnppcENvZGUsXG4gICAgY291bnRyeTogZS5jb3VudHJ5XG4gIH0sXG4gIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiBlLmZpcnN0TmFtZSxcbiAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogZS5sYXN0TmFtZVxufSksIEJlID0gYXN5bmMgKGUpID0+IHtcbiAgY29uc3QgeyBsb2dfXzogbiB9ID0gUChlLmxvZ1ByZWZpeCksIHQgPSBhd2FpdCBOKGUuYW55Q2RlQ29ubmVjdGlvbiksIHIgPSBUZShlLmNvbmZpcm1SZXN1bHQpO1xuICBpZiAodC5tb2RlID09PSBcInNldHVwXCIpXG4gICAgcmV0dXJuIG4oXCJTZXR0aW5nIHVwIHBheW1lbnQgbWV0aG9kLi4uXCIpLCB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBhd2FpdCBwcyhlLmFueUNkZUNvbm5lY3Rpb24sIHtcbiAgICAgIHNlY3VyZV90b2tlbjogdC50b2tlbixcbiAgICAgIHBtX2lkOiByLnBheW1lbnRfbWV0aG9kX2lkXG4gICAgfSkgfTtcbiAge1xuICAgIG4oXCJEb2luZyBjaGVja291dC4uLlwiKTtcbiAgICBjb25zdCBzID0ge1xuICAgICAgc2VjdXJlX3Rva2VuOiB0LnRva2VuLFxuICAgICAgcGF5bWVudF9pbnB1dDoge1xuICAgICAgICBwcm92aWRlcl90eXBlOiBlLmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlclxuICAgICAgfSxcbiAgICAgIGN1c3RvbWVyX2VtYWlsOiBlLnJlcXVpcmVkRm9ybUZpZWxkc1twLkVNQUlMXSxcbiAgICAgIGN1c3RvbWVyX3ppcF9jb2RlOiBlLnJlcXVpcmVkRm9ybUZpZWxkc1twLlpJUF9DT0RFXSxcbiAgICAgIGN1c3RvbWVyX2NvdW50cnk6IGUucmVxdWlyZWRGb3JtRmllbGRzW3AuQ09VTlRSWV0sXG4gICAgICBwcm9tb3Rpb25fY29kZTogZS5yZXF1aXJlZEZvcm1GaWVsZHNbcC5QUk9NT1RJT05fQ09ERV0sXG4gICAgICBsaW5lX2l0ZW1zOiB0LmxpbmVfaXRlbXMsXG4gICAgICB0b3RhbF9hbW91bnRfYXRvbTogdC5hbW91bnRfdG90YWxfYXRvbSxcbiAgICAgIGNhbmNlbF9hdF9lbmQ6ICExLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IGUuY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgdXNlX2NvbmZpcm1lZF9wbV9pZDogci5wYXltZW50X21ldGhvZF9pZFxuICAgIH07XG4gICAgcmV0dXJuIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IGF3YWl0IHV0KGUuYW55Q2RlQ29ubmVjdGlvbiwgcykgfTtcbiAgfVxufSwgQ3MgPSBcIkBrZXlmcmFtZXMgZmFkZUluezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjkpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9fS5vdmVybGF5e3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3otaW5kZXg6MjE0NzQ4MzY0OCFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6IzAwMDAwMDgwfS5jb250YWluZXJ7bWF4LXdpZHRoOjUwMHB4O21heC1oZWlnaHQ6NjAwcHg7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7cG9zaXRpb246cmVsYXRpdmU7YW5pbWF0aW9uOmZhZGVJbiAuM3MgZWFzZS1vdXR9LmZyYW1lLCNhZHllbi1jb250YWluZXIsI2FkeWVuLWNvbnRhaW5lcj4qe21heC13aWR0aDo1MDBweDttYXgtaGVpZ2h0OjYwMHB4O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyOm5vbmV9LmNhbmNlbC1idXR0b257cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtmb250LXNpemU6MXJlbTtjb2xvcjojZmZmO2N1cnNvcjpwb2ludGVyO3RvcDotMS41cmVtO3BhZGRpbmc6MDtyaWdodDowfVwiLCBibiA9IChlKSA9PiB7XG4gIGNvbnN0IG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGVtcGxhdGVcIik7XG4gIG4uaW5uZXJIVE1MID0gYFxuICAgIDxzdHlsZT5cbiAgICAgICR7Q3N9XG4gICAgPC9zdHlsZT5cbiAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICA8aWZyYW1lIHNyYz1cIiR7ZX1cIiBjbGFzcz1cImZyYW1lXCIgaWQ9XCJ0aHJlZS1kcy1pZnJhbWVcIiB0aXRsZT1cIjNEIFNlY3VyZSB2ZXJpZmljYXRpb25cIiBhbGxvdz1cInBheW1lbnRcIj48L2lmcmFtZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgO1xuICBjb25zdCB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSwgciA9IHQuYXR0YWNoU2hhZG93KHsgbW9kZTogXCJvcGVuXCIgfSk7XG4gIHIuYXBwZW5kQ2hpbGQobi5jb250ZW50LmNsb25lTm9kZSghMCkpO1xuICBjb25zdCBzID0gci5xdWVyeVNlbGVjdG9yKFwiI3RocmVlLWRzLWlmcmFtZVwiKSwgaSA9IHIucXVlcnlTZWxlY3RvcihcIi5jYW5jZWwtYnV0dG9uXCIpO1xuICByZXR1cm4gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KSwgeyBob3N0OiB0LCBpZnJhbWU6IHMsIGNhbmNlbEJ1dHRvbjogaSB9O1xufTtcbmZ1bmN0aW9uIFNzKGUsIG4sIHQpIHtcbiAgY29uc3QgciA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaSA9IGF3YWl0IGhzKGUsIHQpO1xuICAgICAgaSAmJiAoY2xlYXJJbnRlcnZhbChzKSwgbihpKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgfVxuICB9O1xuICByKCk7XG4gIGNvbnN0IHMgPSBzZXRJbnRlcnZhbChyLCB5bik7XG4gIHJldHVybiBzO1xufVxuZnVuY3Rpb24gUHMoe1xuICBlbGVtZW50czogZSxcbiAgcG9sbGluZ0ludGVydmFsOiBuLFxuICByZXNvbHZlOiB0XG59KSB7XG4gIGNvbnN0IHIgPSAoKSA9PiB7XG4gICAgY2xlYXJJbnRlcnZhbChuKSwgZS5ob3N0LnJlbW92ZSgpLCB0KHsgc3RhdHVzOiBULkNBTkNFTExFRCB9KTtcbiAgfTtcbiAgcmV0dXJuIGUuY2FuY2VsQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByKSwgKCkgPT4ge1xuICAgIGUuY2FuY2VsQnV0dG9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByKTtcbiAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIEhlKGUpIHtcbiAgY29uc3QgeyB1cmw6IG4sIGJhc2VVcmw6IHQgfSA9IGUsIHIgPSBibihuKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChzKSA9PiB7XG4gICAgY29uc3QgaSA9IChsKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgci5ob3N0LnJlbW92ZSgpO1xuICAgICAgfSwgMWUzKSwgcyhsKSwgYyA9PSBudWxsIHx8IGMoKTtcbiAgICB9LCBhID0gU3Moci5pZnJhbWUsIGksIG5ldyBVUkwodCkub3JpZ2luKSwgYyA9IFBzKHtcbiAgICAgIGVsZW1lbnRzOiByLFxuICAgICAgcG9sbGluZ0ludGVydmFsOiBhLFxuICAgICAgcmVzb2x2ZTogc1xuICAgIH0pO1xuICB9KTtcbn1cbmNvbnN0IHZuID0gYXN5bmMgKGUpID0+IHtcbiAgY29uc3QgbiA9IGF3YWl0IEhlKGUpO1xuICBpZiAobi5zdGF0dXMgPT09IFQuQ0FOQ0VMTEVEKVxuICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gY2FuY2VsbGVkXCIpO1xuICBpZiAobi5zdGF0dXMgPT09IFQuRkFJTFVSRSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgcmV0dXJuIG4uc3RhdHVzICE9PSBULlNVQ0NFU1MgJiYgWWUobi5zdGF0dXMpLCB7XG4gICAgaHJlZjogbi5ocmVmXG4gIH07XG59LCBrcyA9IChlLCBuKSA9PiB7XG4gIGNvbnN0IHQgPSB3aW5kb3cub3BlbihuLCBcIl9ibGFua1wiKTtcbiAgaWYgKCF0KVxuICAgIHRocm93IG5ldyBFcnJvcihgJHtlfSBwb3B1cCB3aW5kb3cgYmxvY2tlZC4gUGxlYXNlIGFsbG93IHBvcHVwcyBmb3IgdGhpcyBzaXRlLmApO1xuICByZXR1cm4gdDtcbn0sIEFzID0gYXN5bmMgKGUsIG4sIHQsIHIpID0+IHtcbiAgY29uc3QgeyBlcnJfXzogcyB9ID0gUChcInBvcHVwLXZlcmlmeVwiKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChpLCBhKSA9PiB7XG4gICAgY29uc3QgYyA9IGtzKGUsIHIpLCBsID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdSA9IGF3YWl0IG1zKG4sIHQpO1xuICAgICAgICBpZiAodS5wcmVzZW50KVxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwobCksIGMuY2xvc2UoKSwgaSh7IGhyZWY6IHUuaHJlZiB9KTtcbiAgICAgICAgZWxzZSBpZiAoYy5jbG9zZWQpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2V9IHBheW1lbnQgY2FuY2VsbGVkYCk7XG4gICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgIHMoVih1KSksIGNsZWFySW50ZXJ2YWwobCksIGEoVih1KSk7XG4gICAgICB9XG4gICAgfSwgMWUzKTtcbiAgfSk7XG59LCB7IGxvZ19fOiBJcywgZXJyX186IHB0IH0gPSBQKFwiYWlyd2FsbGV4LWNjXCIpLCBScyA9IHokMS5vYmplY3Qoe1xuICBcIm9wLWFpcndhbGxleC0zZHMtdXJsXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1haXJ3YWxsZXgtaW5pdGlhbC1pbnRlbnQtaWRcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFpcndhbGxleC1jb25zZW50LWlkXCI6IHokMS5zdHJpbmcoKVxufSksIFRzID0gKGUpID0+IHtcbiAgY29uc3QgbiA9IFJzLnNhZmVQYXJzZShlKTtcbiAgaWYgKCFuLnN1Y2Nlc3MpIHtcbiAgICBjb25zdCB0ID0gXCJVbmFibGUgdG8gcHJvY2VzcyB5b3VyIGNyZWRpdCBjYXJkLiBQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlLlwiLCByID0gYEFpcndhbGxleCAzRFMgaXMgcmVxdWlyZWQgYnV0IGhlYWRlcnMgYXJlIG1hbGZvcm1lZC4gR290OiAke0pTT04uc3RyaW5naWZ5KGUpfWA7XG4gICAgdGhyb3cgcHQociksIG5ldyBFcnJvcih0KTtcbiAgfVxuICByZXR1cm4gbi5kYXRhO1xufSwgRnMgPSAoZSkgPT4gKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGVbXCJvcC1haXJ3YWxsZXgtM2RzLXVybFwiXSkgIT09IHZvaWQgMCwgTXMgPSAoZSkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IG4gPSBuZXcgVVJMKGUgPz8gXCJcIikuc2VhcmNoUGFyYW1zLmdldChcInBheW1lbnRfaW50ZW50X2lkXCIpO1xuICAgIGlmICghbilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGludGVudCBJRCBmb3VuZCBpbiBBaXJ3YWxsZXggM0RTIHZlcmlmaWNhdGlvbiByZXN1bHRcIik7XG4gICAgcmV0dXJuIElzKGBBaXJ3YWxsZXggM0RTIHZlcmlmaWNhdGlvbiBzdWNjZXNzLiBbSW50ZW50IElEOiAke259XWApLCBuO1xuICB9IGNhdGNoIChuKSB7XG4gICAgY29uc3QgdCA9IFwiRXJyb3IgdmVyaWZ5aW5nIEFpcndhbGxleCAzRFMgdmVyaWZpY2F0aW9uIHJlc3VsdC5cIjtcbiAgICB0aHJvdyBwdCh0LCBgUmVzdWx0aW5nIFVSTDogJHtlfS5cbkVycm9yOiAke1Yobil9YCksIG5ldyBFcnJvcih0KTtcbiAgfVxufSwgRHMgPSBhc3luYyAoZSwgbikgPT4ge1xuICBjb25zdCB0ID0gVHMobiksIHIgPSBhd2FpdCB2bih7IHVybDogdFtcIm9wLWFpcndhbGxleC0zZHMtdXJsXCJdLCBiYXNlVXJsOiBlIH0pLCBzID0gTXMoci5ocmVmID8/IFwiXCIpLCBpID0gdFtcIm9wLWFpcndhbGxleC1pbml0aWFsLWludGVudC1pZFwiXTtcbiAgaWYgKGkgIT09IHMpIHtcbiAgICBjb25zdCBjID0gXCJVbmFibGUgdG8gcHJvY2VzcyB5b3VyIGNyZWRpdCBjYXJkLiBQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlLlwiLCBsID0gYEludGVudCBJRCBmcm9tIGNhbGxiYWNrICgke3N9KSBkb2VzIG5vdCBtYXRjaCB0aGUgaW5pdGlhbCBpbnRlbnQgSUQgKCR7aX0pLmA7XG4gICAgdGhyb3cgcHQobCksIG5ldyBFcnJvcihjKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICBpbml0aWFsX2ludGVudF9pZDogcyxcbiAgICAgIGNvbnNlbnRfaWQ6IHRbXCJvcC1haXJ3YWxsZXgtY29uc2VudC1pZFwiXVxuICAgIH1cbiAgfTtcbn0sIEVuID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWlyd2FsbGV4XCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgcHJvY2Vzc29yX2FjY291bnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9uYW1lOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBDbiA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICBnb29nbGVfcGF5X21lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpXG4gIH0pXG59KSwgeyBsb2dfXzogU24sIGVycl9fOiBQbiB9ID0gUChcImNvbW1vbi1jY1wiKSwgc2UgPSAoZSwgbiwgdCkgPT4ge1xuICBpZiAodCkge1xuICAgIFNuKGBSZWNlaXZlZCBkZWZhdWx0IGZpZWxkIHZhbHVlczogJHtKU09OLnN0cmluZ2lmeSh0KX1gKTtcbiAgICBmb3IgKGNvbnN0IFtzLCBpXSBvZiBPYmplY3QuZW50cmllcyh0KSlcbiAgICAgIGVbc10gfHwgKGVbc10gPSBpKTtcbiAgfVxuICBjb25zdCByID0gSWUuc2FmZVBhcnNlKGUpO1xuICBpZiAoIXIuc3VjY2Vzcykge1xuICAgIGNvbnN0IHMgPSByLmVycm9yLmZvcm1hdCgpLCBpID0gWXQocyk7XG4gICAgZm9yIChjb25zdCBbYSwgY10gb2YgT2JqZWN0LmVudHJpZXMoaSkpXG4gICAgICBuKGEsIGMsIGEpO1xuICAgIHRocm93IFBuKFwiR290IHZhbGlkYXRpb24gZXJyb3JzIGluIG5vbi1DREUgZm9ybSBmaWVsZHNcIiwgaSksIG5ldyBFcnJvcihcIkdvdCB2YWxpZGF0aW9uIGVycm9ycyBpbiBub24tQ0RFIGZvcm0gZmllbGRzXCIpO1xuICB9XG4gIHJldHVybiByLmRhdGE7XG59LCBOcyA9IChlLCBuKSA9PiB7XG4gIGZvciAoY29uc3QgdCBvZiBlKVxuICAgIGlmICh0LnN1Y2Nlc3MgPT09ICExKVxuICAgICAgdGhyb3cgdC5lcnJvcnMuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICBjb25zdCBzID0genQuc2FmZVBhcnNlKHIuZWxlbWVudFR5cGUpO1xuICAgICAgICBpZiAoIXMuc3VjY2VzcylcbiAgICAgICAgICBQbihgVW5rbm93biBmaWVsZCBuYW1lIGluIG9uVmFsaWRhdGlvbkVycm9yOiAke3IuZWxlbWVudFR5cGV9LiBFcnJvciBvYmplY3Q6YCwgcik7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGkgPSBzLmRhdGE7XG4gICAgICAgICAgbihpLCByLmVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgIH0pLCBTbihgRXJyb3IgdG9rZW5pemluZyBjYXJkOiBnb3QgdmFsaWRhdGlvbiBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkodC5lcnJvcnMpfWApLCBuZXcgRXJyb3IoXCJHb3QgdmFsaWRhdGlvbiBlcnJvcnMgd2hpbGUgdG9rZW5pemluZyBjYXJkXCIpO1xufSwgeyBsb2dfXzogT2UgfSA9IFAoXCJhd3gtYXBwbGUtcGF5XCIpO1xuYXN5bmMgZnVuY3Rpb24gTHMoZSwgbikge1xuICB0cnkge1xuICAgIGNvbnN0IHIgPSAoYXdhaXQgZHQobi5jb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgYWlyd2FsbGV4X3BheW1lbnRfc2Vzc2lvbjoge1xuICAgICAgICAgIHZhbGlkYXRpb25fdXJsOiBlLnZhbGlkYXRpb25VUkwsXG4gICAgICAgICAgaW5pdGlhdGl2ZV9jb250ZXh0OiB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsXG4gICAgICAgICAgdGhlaXJfYWNjb3VudF9pZDogbi5wcm9jZXNzb3JBY2NvdW50LnByb2Nlc3Nvcl9hY2NvdW50X2lkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSkubmV4dF9hY3Rpb25fbWV0YWRhdGEsIHMgPSByID09IG51bGwgPyB2b2lkIDAgOiByLmFwcGxlX3BheV9zZXNzaW9uO1xuICAgIGlmICghcylcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHNlc3Npb24gZGF0YSByZWNlaXZlZCBmcm9tIHBheW1lbnQgZmxvd1wiKTtcbiAgICBuLnNlc3Npb24uY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24ocyksIGcoXCJhcHBsZV9wYXlfY29tcGxldGVfbWVyY2hhbnRfdmFsaWRhdGlvblwiLCB7XG4gICAgICAuLi5zXG4gICAgfSk7XG4gIH0gY2F0Y2ggKHQpIHtcbiAgICB0aHJvdyBuLnNlc3Npb24uYWJvcnQoKSwgdDtcbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gT3MoZSwgbikge1xuICBpZiAoIWUucmVkaXJlY3RfdXJsKVxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZFwiKTtcbiAgT2UoXCIzRFMgUmVxdWlyZWQsIHN0YXJ0aW5nIHZlcmlmaWNhdGlvbi4uLlwiLCBlKTtcbiAgY29uc3QgeyBzdGF0dXM6IHQgfSA9IGF3YWl0IEhlKHtcbiAgICB1cmw6IGUucmVkaXJlY3RfdXJsLFxuICAgIGJhc2VVcmw6IG4uYmFzZVVybFxuICB9KTtcbiAgaWYgKE9lKGDilbAgM0RTIHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQgW1N0YXR1czogJHt0fV1gKSwgdCA9PT0gVC5DQU5DRUxMRUQpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gIGlmICh0ID09PSBULkZBSUxVUkUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gIGNvbnN0IHIgPSBhd2FpdCBZKG4uY29ubmVjdGlvbiwge1xuICAgIHNlY3VyZV90b2tlbjogbi5wcmVmaWxsLnRva2VuLFxuICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgdGhlaXJfcG1faWQ6IGUudGhlaXJfcG1faWQsXG4gICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogZS5jb25zZW50X2lkLFxuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXJcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gT2UoXCJbMm5kXSBDb25maXJtIHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCByKSwgcjtcbn1cbmFzeW5jIGZ1bmN0aW9uIFVzKGUsIG4pIHtcbiAgdmFyIHQsIHIsIHMsIGksIGE7XG4gIHRyeSB7XG4gICAgY29uc3QgYyA9IGUucGF5bWVudCwgbCA9IGduKG4ubm9uQ2RlRm9ybUlucHV0cywgYyksIHUgPSBzZShcbiAgICAgIGwsXG4gICAgICBuLmZvcm1DYWxsYmFja3MuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgbi5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICApO1xuICAgIGcoXCJiaWxsaW5nX2RldGFpbHNfcmVjZWl2ZWRcIiwge1xuICAgICAgLi4udVxuICAgIH0pO1xuICAgIGNvbnN0IG0gPSAoYXdhaXQgZ2Uobi5jb25uZWN0aW9uLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlcixcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIG5ld19jdXN0b21lcl9lbWFpbDogdVtwLkVNQUlMXSxcbiAgICAgIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiB1W3AuRklSU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiB1W3AuTEFTVF9OQU1FXSxcbiAgICAgIG5ld19jdXN0b21lcl9hZGRyZXNzOiB7XG4gICAgICAgIHppcF9jb2RlOiB1W3AuWklQX0NPREVdLFxuICAgICAgICBjb3VudHJ5OiB1W3AuQ09VTlRSWV1cbiAgICAgIH1cbiAgICB9KSkucmVxdWlyZWRfdXNlcl9hY3Rpb25zWzBdLmNvbnNlbnRfaWQ7XG4gICAgaWYgKCFtKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gY29uc2VudCBJRCByZWNlaXZlZCBmcm9tIHBheW1lbnQgZmxvd1wiKTtcbiAgICBsZXQgeSA9IGF3YWl0IFkobi5jb25uZWN0aW9uLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IG4ucHJlZmlsbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlcixcbiAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IG0sXG4gICAgICAgIGFpcndhbGxleF9wYXltZW50X21ldGhvZF9kYXRhOiB7XG4gICAgICAgICAgdHlwZTogXCJhcHBsZXBheVwiLFxuICAgICAgICAgIGFwcGxlcGF5OiB7XG4gICAgICAgICAgICBwYXltZW50X2RhdGFfdHlwZTogXCJlbmNyeXB0ZWRfcGF5bWVudF90b2tlblwiLFxuICAgICAgICAgICAgZW5jcnlwdGVkX3BheW1lbnRfdG9rZW46IEpTT04uc3RyaW5naWZ5KGMudG9rZW4pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2UoXCJbMXN0XSBDb25maXJtIHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCB5KTtcbiAgICBsZXQgZiA9IChyID0gKHQgPSB5LnBheW1lbnRfbWV0aG9kcykgPT0gbnVsbCA/IHZvaWQgMCA6IHRbMF0pID09IG51bGwgPyB2b2lkIDAgOiByLmlkO1xuICAgIGNvbnN0IGggPSAocyA9IHkucmVxdWlyZWRfdXNlcl9hY3Rpb25zKSA9PSBudWxsID8gdm9pZCAwIDogcy5maW5kKFxuICAgICAgKGIpID0+IGIudHlwZSA9PT0gXCJhaXJ3YWxsZXhfcGF5bWVudF9jb25zZW50XCJcbiAgICApO1xuICAgIGlmIChoICE9IG51bGwgJiYgaC5yZWRpcmVjdF91cmwgJiYgaC5jb25zZW50X2lkICYmIGgudGhlaXJfcG1faWQgJiYgKHkgPSBhd2FpdCBPcyhoLCBuKSwgZiA9IChhID0gKGkgPSB5LnBheW1lbnRfbWV0aG9kcykgPT0gbnVsbCA/IHZvaWQgMCA6IGlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBhLmlkKSwgIWYpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBQTSBJRCBmb3VuZFwiKTtcbiAgICBjb25zdCB2ID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX1NVQ0NFU1NcbiAgICB9O1xuICAgIHJldHVybiBuLnNlc3Npb24uY29tcGxldGVQYXltZW50KHYpLCBCZSh7XG4gICAgICBsb2dQcmVmaXg6IFwiYXd4LWFwcGxlcGF5XCIsXG4gICAgICBhbnlDZGVDb25uZWN0aW9uOiBuLmNvbm5lY3Rpb24sXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4uY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiB1LFxuICAgICAgY29uZmlybVJlc3VsdDogeSxcbiAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICB9KTtcbiAgfSBjYXRjaCAoYykge1xuICAgIGNvbnN0IGwgPSB7XG4gICAgICBzdGF0dXM6IEFwcGxlUGF5U2Vzc2lvbi5TVEFUVVNfRkFJTFVSRVxuICAgIH07XG4gICAgdGhyb3cgbi5zZXNzaW9uLmNvbXBsZXRlUGF5bWVudChsKSwgYztcbiAgfVxufVxuY29uc3QgeyBsb2dfXzogdmUsIGVycl9fOiBrbiB9ID0gUChcImF3eC1hcHBsZS1wYXlcIiksIGpzID0gZGUoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIGNvbnN0IHQgPSB7XG4gICAgICBwcm9jZXNzb3I6IEIuRW51bS5haXJ3YWxsZXgsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBFbik7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIHQ7XG4gICAgaWYgKHZlKFwiTG9hZGluZyBBcHBsZSBQYXkgc2NyaXB0XCIpLCBhd2FpdCBobigpLCAhd2luZG93LkFwcGxlUGF5U2Vzc2lvbiB8fCAhQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50cygpKVxuICAgICAgcmV0dXJuIHZlKFwiQXBwbGUgUGF5IGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBkZXZpY2UvYnJvd3NlclwiKSwgdDtcbiAgICBpZiAodmUoXCJBcHBsZSBQYXkgTG9hZGVkXCIpLCAhYXdhaXQgQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50cygpKVxuICAgICAgcmV0dXJuIHZlKFwiTm8gYWN0aXZlIGNhcmRzIGF2YWlsYWJsZSBmb3IgQXBwbGUgUGF5XCIpLCB0O1xuICAgIGlmICghci5tZXRhZGF0YS5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIik7XG4gICAgY29uc3QgYSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgYyA9IGF3YWl0IE4oYSksIGwgPSBjLm1vZGUgPT09IFwic2V0dXBcIiwgdSA9IGF3YWl0IHdlKGEsIGMudG9rZW4sIGwsIHZvaWQgMCksIGQgPSBhc3luYyAoXykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgUi5haXJ3YWxsZXhBcHBsZVBheS5ydW4oe1xuICAgICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiByLFxuICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGVlKGUuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLl8sXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAobSkge1xuICAgICAgICBrbihcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIG0pLCBuLmdldC5vbkNoZWNrb3V0RXJyb3IoKG0gPT0gbnVsbCA/IHZvaWQgMCA6IG0ubWVzc2FnZSkgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogQi5FbnVtLmFpcndhbGxleCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGRcbiAgICB9O1xuICB9XG4pLCB4cyA9IHJlKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHQsXG4gICAgY3VzdG9tUGFyYW1zOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IHNcbiAgfSkgPT4ge1xuICAgIHZhciBmO1xuICAgIGNvbnN0IGkgPSBKKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgRW4pLCB7IG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGEsIGluaXRpYWxQcmV2aWV3OiBjIH0gPSByLCBsID0gZS5hbnlDZGVDb25uZWN0aW9uLCB1ID0gYXdhaXQgTihsKSwgZCA9IHUubW9kZSA9PT0gXCJzZXR1cFwiLCBfID0gd24oe1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogYSxcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBjLFxuICAgICAgcHJlZmlsbDoge1xuICAgICAgICAuLi51XG4gICAgICB9LFxuICAgICAgZGVmYXVsdExhYmVsOiAoZiA9IGkgPT0gbnVsbCA/IHZvaWQgMCA6IGkubWV0YWRhdGEpID09IG51bGwgPyB2b2lkIDAgOiBmLnByb2Nlc3Nvcl9hY2NvdW50X25hbWVcbiAgICB9KSwgbSA9IG5ldyBBcHBsZVBheVNlc3Npb24oMywgXyksIHkgPSB7XG4gICAgICBzZXNzaW9uOiBtLFxuICAgICAgY29ubmVjdGlvbjogZS5hbnlDZGVDb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICAgIHByb2Nlc3NvckFjY291bnQ6IGkubWV0YWRhdGEsXG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgaXNTZXR1cE1vZGU6IGQsXG4gICAgICBiYXNlVXJsOiBlLmJhc2VVcmwsXG4gICAgICBmb3JtQ2FsbGJhY2tzOiBzLFxuICAgICAgZGVmYXVsdEZpZWxkVmFsdWVzOiByID09IG51bGwgPyB2b2lkIDAgOiByLmRlZmF1bHRGaWVsZFZhbHVlc1xuICAgIH07XG4gICAgcmV0dXJuIGcoXCJhcHBsZV9wYXlfZmxvd19zdGFydGVkXCIsIHtcbiAgICAgIHByb2Nlc3Nvcl9uYW1lOiBuLnByb2Nlc3Nvcl9uYW1lLFxuICAgICAgcHJlZmlsbDogbG4odSwgW1wiYnJhbmRcIl0pLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogYVxuICAgIH0pLCBuZXcgUHJvbWlzZSgoaCwgdikgPT4ge1xuICAgICAgY29uc3QgYiA9ICgpID0+IHtcbiAgICAgICAgdmUoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpLCB2KG5ldyBFcnJvcihcIlBheW1lbnQgY2FuY2VsbGVkIGJ5IHVzZXJcIikpO1xuICAgICAgfTtcbiAgICAgIG0ub25jYW5jZWwgPSBiLCBtLm9udmFsaWRhdGVtZXJjaGFudCA9IGFzeW5jIChFKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgTHMoRSwgeSk7XG4gICAgICAgIH0gY2F0Y2ggKGspIHtcbiAgICAgICAgICB2KGspO1xuICAgICAgICB9XG4gICAgICB9LCBtLm9ucGF5bWVudG1ldGhvZHNlbGVjdGVkID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBFID0ge1xuICAgICAgICAgIG5ld1RvdGFsOiB7IC4uLl8udG90YWwgfVxuICAgICAgICB9O1xuICAgICAgICBtLmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihFKTtcbiAgICAgIH0sIG0ub25wYXltZW50YXV0aG9yaXplZCA9IGFzeW5jIChFKSA9PiB7XG4gICAgICAgIGcoXCJhcHBsZV9wYXlfcGF5bWVudF9hdXRob3JpemVkXCIpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGsgPSBhd2FpdCBVcyhFLCB5KTtcbiAgICAgICAgICBoKGspO1xuICAgICAgICB9IGNhdGNoIChrKSB7XG4gICAgICAgICAgdihrKTtcbiAgICAgICAgfVxuICAgICAgfSwgbS5iZWdpbigpO1xuICAgIH0pLmNhdGNoKChoKSA9PiB7XG4gICAgICB0aHJvdyBrbihcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIGgpLCBnKFwiYXBwbGVfcGF5X3BheW1lbnRfZXJyb3JcIiwge1xuICAgICAgICBlcnJvcjogaFxuICAgICAgfSksIGg7XG4gICAgfSk7XG4gIH1cbiksIEplID0gKHtcbiAgZ2F0ZXdheTogZSxcbiAgZ2F0ZXdheU1lcmNoYW50SWQ6IG4sXG4gIG1lcmNoYW50TmFtZTogdCxcbiAgbWVyY2hhbnRJZDogcixcbiAgaW5pdGlhbFByZXZpZXc6IHMsXG4gIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGksXG4gIHByZWZpbGw6IGFcbn0pID0+IHtcbiAgdmFyIF8sIG07XG4gIGNvbnN0IGMgPSAoKF8gPSBpID09IG51bGwgPyB2b2lkIDAgOiBpLmFtb3VudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF8uYW1vdW50QXRvbSkgPz8gKHMgPT0gbnVsbCA/IHZvaWQgMCA6IHMuYW1vdW50QXRvbSkgPz8gMCwgbCA9IE1hdGgubWF4KGMgLyAxMDAsIDApLCB1ID0gKCgobSA9IGkgPT0gbnVsbCA/IHZvaWQgMCA6IGkuYW1vdW50KSA9PSBudWxsID8gdm9pZCAwIDogbS5jdXJyZW5jeSkgPz8gKGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEuY3VycmVuY3kpID8/IHMuY3VycmVuY3kpLnRvVXBwZXJDYXNlKCksIGQgPSB7XG4gICAgYXBpVmVyc2lvbjogMixcbiAgICBhcGlWZXJzaW9uTWlub3I6IDAsXG4gICAgYWxsb3dlZFBheW1lbnRNZXRob2RzOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiQ0FSRFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgYWxsb3dlZEF1dGhNZXRob2RzOiBbXCJQQU5fT05MWVwiLCBcIkNSWVBUT0dSQU1fM0RTXCJdLFxuICAgICAgICAgIGFsbG93ZWRDYXJkTmV0d29ya3M6IFtcIkFNRVhcIiwgXCJESVNDT1ZFUlwiLCBcIklOVEVSQUNcIiwgXCJKQ0JcIiwgXCJNQVNURVJDQVJEXCIsIFwiVklTQVwiXSxcbiAgICAgICAgICBiaWxsaW5nQWRkcmVzc1JlcXVpcmVkOiAhMCxcbiAgICAgICAgICBiaWxsaW5nQWRkcmVzc1BhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogXCJGVUxMXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFsbG93Q3JlZGl0Q2FyZHM6ICEwLFxuICAgICAgICAgIGFsbG93UHJlcGFpZENhcmRzOiAhMFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbml6YXRpb25TcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgICAgdHlwZTogXCJQQVlNRU5UX0dBVEVXQVlcIixcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBnYXRld2F5OiBlLFxuICAgICAgICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IG5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGVtYWlsUmVxdWlyZWQ6ICEwLFxuICAgIG1lcmNoYW50SW5mbzoge1xuICAgICAgLy8gUFJPRCBlbnYgd2lsbCBuZWVkIHRoaXNcbiAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3BheS9hcGkvd2ViL3JlZmVyZW5jZS9yZXF1ZXN0LW9iamVjdHMjTWVyY2hhbnRJbmZvXG4gICAgICBtZXJjaGFudElkOiByID8/IFwiXCIsXG4gICAgICBtZXJjaGFudE5hbWU6IHRcbiAgICB9LFxuICAgIHRyYW5zYWN0aW9uSW5mbzoge1xuICAgICAgY291bnRyeUNvZGU6IFwiVVNcIixcbiAgICAgIGN1cnJlbmN5Q29kZTogdSxcbiAgICAgIHRvdGFsUHJpY2VTdGF0dXM6IGkgIT0gbnVsbCAmJiBpLnBlbmRpbmcgPyBcIkVTVElNQVRFRFwiIDogXCJGSU5BTFwiLFxuICAgICAgdG90YWxQcmljZTogbC50b0ZpeGVkKDIpXG4gICAgfVxuICB9O1xuICByZXR1cm4gaSAhPSBudWxsICYmIGkuZ29vZ2xlUGF5UGF5bWVudFJlcXVlc3QgPyB0eXBlb2YgaS5nb29nbGVQYXlQYXltZW50UmVxdWVzdCA9PSBcImZ1bmN0aW9uXCIgPyB7IC4uLmQsIC4uLmkuZ29vZ2xlUGF5UGF5bWVudFJlcXVlc3QoZCkgfSA6IHsgLi4uZCwgLi4uaS5nb29nbGVQYXlQYXltZW50UmVxdWVzdCB9IDogZDtcbn0sIEFuID0gKCkgPT4gX24oe1xuICBzY3JpcHRJZDogXCJfX29wX2ludGVybmFsX2dvb2dsZV9wYXlfc2RrXCIsXG4gIHNyYzogXCJodHRwczovL3BheS5nb29nbGUuY29tL2dwL3AvanMvcGF5LmpzXCIsXG4gIGNoZWNrTG9hZGVkRm46ICgpID0+IHtcbiAgICB2YXIgZSwgbjtcbiAgICByZXR1cm4gISEoKG4gPSAoZSA9IHdpbmRvdy5nb29nbGUpID09IG51bGwgPyB2b2lkIDAgOiBlLnBheW1lbnRzKSAhPSBudWxsICYmIG4uYXBpKTtcbiAgfVxufSk7XG5sZXQgZXQgPSBudWxsO1xuY29uc3QgSW4gPSBhc3luYyAoZSkgPT4gYXdhaXQgY24oZSkgPT09IFwicHJvZFwiID8gXCJQUk9EVUNUSU9OXCIgOiBcIlRFU1RcIiwgS2UgPSBhc3luYyAoZSwgbikgPT4ge1xuICBjb25zdCB0ID0gYXdhaXQgSW4oZSk7XG4gIHJldHVybiBldCA9PT0gbnVsbCAmJiAoZXQgPSBuZXcgd2luZG93Lmdvb2dsZS5wYXltZW50cy5hcGkuUGF5bWVudHNDbGllbnQoe1xuICAgIGVudmlyb25tZW50OiB0LFxuICAgIG1lcmNoYW50SW5mbzogbi5tZXJjaGFudEluZm9cbiAgfSkpLCBldDtcbn0sICRzID0gKGUpID0+IHtcbiAgY29uc3QgbiA9IGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmZpbmQoKHQpID0+IHQudHlwZSA9PT0gXCJhaXJ3YWxsZXhfcGF5bWVudF9jb25zZW50XCIpO1xuICByZXR1cm4gbiA/IHF0LnBhcnNlKG4pIDogbnVsbDtcbn0sIFJuID0gKGUsIG4pID0+IHtcbiAgdmFyIHMsIGksIGEsIGM7XG4gIGNvbnN0IHQgPSB7IC4uLmUgfSwgciA9IChpID0gKHMgPSBuLnBheW1lbnRNZXRob2REYXRhKSA9PSBudWxsID8gdm9pZCAwIDogcy5pbmZvKSA9PSBudWxsID8gdm9pZCAwIDogaS5iaWxsaW5nQWRkcmVzcztcbiAgaWYgKHIpIHtcbiAgICBjb25zdCBbbCwgLi4udV0gPSAoKGMgPSAoYSA9IHIubmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IGEudHJpbSgpKSA9PSBudWxsID8gdm9pZCAwIDogYy5zcGxpdCgvXFxzKy8pKSA/PyBbXSwgZCA9IHUuam9pbihcIiBcIikgfHwgdm9pZCAwO1xuICAgIHRbcC5FTUFJTF0gPSB0W3AuRU1BSUxdIHx8IG4uZW1haWwgfHwgXCJvcF91bmZpbGxlZEBnZXRvcGVucGF5LmNvbVwiLCB0W3AuQ09VTlRSWV0gPSB0W3AuQ09VTlRSWV0gfHwgci5jb3VudHJ5Q29kZSB8fCBcIlVTXCIsIHRbcC5BRERSRVNTXSA9IHRbcC5BRERSRVNTXSB8fCByLmFkZHJlc3MxIHx8IFwiXCIsIHRbcC5DSVRZXSA9IHRbcC5DSVRZXSB8fCByLmxvY2FsaXR5IHx8IFwiXCIsIHRbcC5aSVBfQ09ERV0gPSB0W3AuWklQX0NPREVdIHx8IHIucG9zdGFsQ29kZSB8fCBcIjAwMDAwXCIsIHRbcC5TVEFURV0gPSB0W3AuU1RBVEVdIHx8IHIuYWRtaW5pc3RyYXRpdmVBcmVhIHx8IFwiXCI7XG4gICAgY29uc3QgXyA9IHRbcC5GSVJTVF9OQU1FXSB8fCBsIHx8IFwiXCIsIG0gPSB0W3AuTEFTVF9OQU1FXSB8fCBkIHx8IFwiXCI7XG4gICAgXyB8fCBtID8gKHRbcC5GSVJTVF9OQU1FXSA9IF8sIHRbcC5MQVNUX05BTUVdID0gbSkgOiAodFtwLkZJUlNUX05BTUVdID0gXCJfT1BfVU5LTk9XTlwiLCB0W3AuTEFTVF9OQU1FXSA9IFwiXCIpO1xuICB9XG4gIHJldHVybiB0O1xufSwgeyBsb2dfXzogcSwgZXJyX186IG1lIH0gPSBQKFwiYXd4LWdvb2dsZS1wYXlcIiksIFZzID0gZGUoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIHZhciBfLCBtO1xuICAgIGNvbnN0IHQgPSB7XG4gICAgICBwcm9jZXNzb3I6IEIuRW51bS5haXJ3YWxsZXgsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBDbik7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIHQ7XG4gICAgcShcIkdvb2dsZSBQYXkgQ1BNXCIsIHIpO1xuICAgIGNvbnN0IHMgPSByLm1ldGFkYXRhO1xuICAgIGlmICghcy5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHJldHVybiBtZShcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIiksIHQ7XG4gICAgaWYgKHEoXCJMb2FkaW5nIEdvb2dsZSBQYXkgc2NyaXB0XCIpLCBhd2FpdCBBbigpLCAhKChtID0gKF8gPSB3aW5kb3cuZ29vZ2xlKSA9PSBudWxsID8gdm9pZCAwIDogXy5wYXltZW50cykgIT0gbnVsbCAmJiBtLmFwaSkpXG4gICAgICByZXR1cm4gbWUoXCJHb29nbGUgUGF5IFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCB0O1xuICAgIGlmIChhd2FpdCBJbihlLmJhc2VVcmwpID09PSBcIlBST0RVQ1RJT05cIiAmJiAhcy5nb29nbGVfcGF5X21lcmNoYW50X2lkKVxuICAgICAgcmV0dXJuIG1lKFwiR29vZ2xlIFBheSBtZXJjaGFudCBJRCBpcyByZXF1aXJlZCBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudFwiKSwgdDtcbiAgICBxKFwiR29vZ2xlIFBheSBTREsgbG9hZGVkXCIsIHdpbmRvdy5nb29nbGUucGF5bWVudHMpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB5ID0gSmUoe1xuICAgICAgICBnYXRld2F5OiBcImFpcndhbGxleFwiLFxuICAgICAgICBnYXRld2F5TWVyY2hhbnRJZDogcy5wcm9jZXNzb3JfYWNjb3VudF9pZCxcbiAgICAgICAgbWVyY2hhbnROYW1lOiBzLnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICAgIG1lcmNoYW50SWQ6IHMuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgICAvLyBUaGlzIGlzIGZvciBpbml0aWFsIHBheW1lbnQgcmVxdWVzdCB0byBjaGVjayBhdmFpbGFiaWxpdHkuIEFjdHVhbCBgaW5pdGlhbFByZXZpZXdgIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSBVSSBpcyBzaG93blxuICAgICAgICBpbml0aWFsUHJldmlldzoge1xuICAgICAgICAgIGFtb3VudEF0b206IDAsXG4gICAgICAgICAgY3VycmVuY3k6IFwiVVNEXCJcbiAgICAgICAgfVxuICAgICAgfSksIGYgPSBhd2FpdCBLZShlLmJhc2VVcmwsIHkpLCB7IHJlc3VsdDogaCB9ID0gYXdhaXQgZi5pc1JlYWR5VG9QYXkoeSk7XG4gICAgICBpZiAoIWgpXG4gICAgICAgIHJldHVybiBxKFwiR29vZ2xlIFBheSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXJcIiksIHQ7XG4gICAgfSBjYXRjaCAoeSkge1xuICAgICAgcmV0dXJuIG1lKFwiRXJyb3IgY2hlY2tpbmcgR29vZ2xlIFBheSBhdmFpbGFiaWxpdHlcIiwgeSksIHQ7XG4gICAgfVxuICAgIGNvbnN0IGEgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGMgPSBhd2FpdCBOKGEpLCBsID0gYy5tb2RlID09PSBcInNldHVwXCIsIHUgPSBhd2FpdCB3ZShhLCBjLnRva2VuLCBsLCB2b2lkIDApLCBkID0gYXN5bmMgKHkpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFIuYWlyd2FsbGV4R29vZ2xlUGF5LnJ1bih7XG4gICAgICAgICAgY29udGV4dDogZSxcbiAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogZWUoZS5mb3JtRGl2KSxcbiAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMCxcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLnksXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChmKSB7XG4gICAgICAgIG1lKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIGYpLCBuLmdldC5vbkNoZWNrb3V0RXJyb3IoKGYgPT0gbnVsbCA/IHZvaWQgMCA6IGYubWVzc2FnZSkgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogQi5FbnVtLmFpcndhbGxleCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGRcbiAgICB9O1xuICB9XG4pLCBHcyA9IHJlKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHQsXG4gICAgZm9ybUNhbGxiYWNrczogcixcbiAgICBjdXN0b21QYXJhbXM6IHNcbiAgfSkgPT4ge1xuICAgIHZhciB5LCBmLCBoLCB2LCBiLCBFLCBrO1xuICAgIHEoXCJTdGFydGluZyBHb29nbGUgUGF5IGZsb3cuLi5cIik7XG4gICAgY29uc3QgaSA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBDbiksIHsgaW5pdGlhbFByZXZpZXc6IGEsIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGMgfSA9IHMsIGwgPSBpLm1ldGFkYXRhO1xuICAgIGlmICghbC5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIik7XG4gICAgY29uc3QgdSA9IEplKHtcbiAgICAgIGdhdGV3YXk6IFwiYWlyd2FsbGV4XCIsXG4gICAgICBnYXRld2F5TWVyY2hhbnRJZDogbC5wcm9jZXNzb3JfYWNjb3VudF9pZCxcbiAgICAgIG1lcmNoYW50TmFtZTogbC5wcm9jZXNzb3JfYWNjb3VudF9uYW1lLFxuICAgICAgbWVyY2hhbnRJZDogbC5nb29nbGVfcGF5X21lcmNoYW50X2lkID8/IFwiXCIsXG4gICAgICBpbml0aWFsUHJldmlldzogYSxcbiAgICAgIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGNcbiAgICB9KSwgZCA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgXyA9IGF3YWl0IE4oZCk7XG4gICAgZyhcImdvb2dsZV9wYXlfZmxvd19zdGFydGVkXCIsIHtcbiAgICAgIHByb2Nlc3Nvcl9uYW1lOiBpLnByb2Nlc3Nvcl9uYW1lLFxuICAgICAgcHJlZmlsbDogbG4oXywgW1wiYnJhbmRcIl0pLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogY1xuICAgIH0pO1xuICAgIGNvbnN0IG0gPSBhd2FpdCBLZShlLmJhc2VVcmwsIHUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBPID0gYXdhaXQgbS5sb2FkUGF5bWVudERhdGEodSk7XG4gICAgICBxKFwiR29vZ2xlIFBheSBQYXltZW50IGRhdGFcIiwgTyk7XG4gICAgICBjb25zdCB0ZSA9IFJuKHQsIE8pLCB4ID0gc2UoXG4gICAgICAgIHRlLFxuICAgICAgICByLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgICAgcyA9PSBudWxsID8gdm9pZCAwIDogcy5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICAgICk7XG4gICAgICBnKFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgICAgLi4ueFxuICAgICAgfSk7XG4gICAgICBjb25zdCBwZSA9IChmID0gKHkgPSBPLnBheW1lbnRNZXRob2REYXRhKSA9PSBudWxsID8gdm9pZCAwIDogeS50b2tlbml6YXRpb25EYXRhKSA9PSBudWxsID8gdm9pZCAwIDogZi50b2tlbjtcbiAgICAgIGlmICghcGUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHBheW1lbnQgdG9rZW4gcmVjZWl2ZWQgZnJvbSBHb29nbGUgUGF5XCIpO1xuICAgICAgY29uc3QgJG4gPSBhd2FpdCBnZShkLCB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IG4ucHJvdmlkZXIsXG4gICAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuLFxuICAgICAgICBuZXdfY3VzdG9tZXJfZW1haWw6IHhbcC5FTUFJTF0sXG4gICAgICAgIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiB4W3AuRklSU1RfTkFNRV0sXG4gICAgICAgIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHhbcC5MQVNUX05BTUVdLFxuICAgICAgICBuZXdfY3VzdG9tZXJfYWRkcmVzczoge1xuICAgICAgICAgIHppcF9jb2RlOiB4W3AuWklQX0NPREVdLFxuICAgICAgICAgIGNvdW50cnk6IHhbcC5DT1VOVFJZXVxuICAgICAgICB9XG4gICAgICB9KSwgRmUgPSAkcygkbik7XG4gICAgICBxKFwiU3RhcnQgZmxvdyBuZXh0IGFjdGlvbnNcIiwgRmUpO1xuICAgICAgbGV0IGllID0gYXdhaXQgWShkLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogXy50b2tlbixcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5wcm92aWRlcixcbiAgICAgICAgICAvLyBHb29nbGVQYXkncyBlbmNyeXB0ZWRfcGF5bWVudF90b2tlbiBwcm92aWRlZCB0byB2ZXJpZnkgdGhlIGNvbnNlbnQgZmlyc3RcbiAgICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogRmUgPT0gbnVsbCA/IHZvaWQgMCA6IEZlLmNvbnNlbnRfaWQsXG4gICAgICAgICAgYWlyd2FsbGV4X3BheW1lbnRfbWV0aG9kX2RhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiZ29vZ2xlcGF5XCIsXG4gICAgICAgICAgICBnb29nbGVwYXk6IHtcbiAgICAgICAgICAgICAgcGF5bWVudF9kYXRhX3R5cGU6IFwiZW5jcnlwdGVkX3BheW1lbnRfdG9rZW5cIixcbiAgICAgICAgICAgICAgZW5jcnlwdGVkX3BheW1lbnRfdG9rZW46IHBlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHEoXCJbMXN0XSBDb25maXJtIHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCBpZSk7XG4gICAgICBsZXQgWmUgPSAodiA9IChoID0gaWUucGF5bWVudF9tZXRob2RzKSA9PSBudWxsID8gdm9pZCAwIDogaFswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IHYuaWQ7XG4gICAgICBjb25zdCBhZSA9IChiID0gaWUucmVxdWlyZWRfdXNlcl9hY3Rpb25zKSA9PSBudWxsID8gdm9pZCAwIDogYi5maW5kKFxuICAgICAgICAoYmUpID0+IGJlLnR5cGUgPT09IFwiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiXG4gICAgICApO1xuICAgICAgaWYgKGFlICYmIGFlLnJlZGlyZWN0X3VybCkge1xuICAgICAgICBxKFwiM0RTIFJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIiwgYWUpO1xuICAgICAgICBjb25zdCB7IHN0YXR1czogYmUgfSA9IGF3YWl0IEhlKHtcbiAgICAgICAgICB1cmw6IGFlLnJlZGlyZWN0X3VybCxcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChxKGDilbAgM0RTIHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQgW1N0YXR1czogJHtiZX1dYCksIGJlID09PSBULkNBTkNFTExFRClcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgICAgaWYgKGJlID09PSBULkZBSUxVUkUpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgICBpZiAoYWUgJiYgIVplICYmIChpZSA9IGF3YWl0IFkoZCwge1xuICAgICAgICBzZWN1cmVfdG9rZW46IF8udG9rZW4sXG4gICAgICAgIHRoZWlyX3BtX2lkOiBhZS50aGVpcl9wbV9pZCxcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5wcm92aWRlcixcbiAgICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogYWUuY29uc2VudF9pZFxuICAgICAgICB9XG4gICAgICB9KSwgcShcIlsybmRdIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIGllKSwgWmUgPSAoayA9IChFID0gaWUucGF5bWVudF9tZXRob2RzKSA9PSBudWxsID8gdm9pZCAwIDogRVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IGsuaWQpLCAhWmUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIFBNIElEIGZvdW5kXCIpO1xuICAgICAgcmV0dXJuIEJlKHtcbiAgICAgICAgbG9nUHJlZml4OiBcImF3eC1nb29nbGVwYXlcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogZCxcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IHgsXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IGllLFxuICAgICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChPKSB7XG4gICAgICB0aHJvdyBtZShcIkdvb2dsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBPKSwgZyhcImdvb2dsZV9wYXlfcGF5bWVudF9lcnJvclwiLCB7XG4gICAgICAgIGVycm9yOiBPXG4gICAgICB9KSwgbmV3IEVycm9yKChPID09IG51bGwgPyB2b2lkIDAgOiBPLm1lc3NhZ2UpID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICB9XG4gIH1cbiksIFRuID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgRm4gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pO1xuYXN5bmMgZnVuY3Rpb24genMoZSwgbikge1xuICB0cnkge1xuICAgIGNvbnN0IHIgPSAoYXdhaXQgZHQobi5jb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgYXBwbGVfcGF5bWVudF9zZXNzaW9uOiB7XG4gICAgICAgICAgdmFsaWRhdGlvbl91cmw6IGUudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICBpbml0aWF0aXZlX2NvbnRleHQ6IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgICAgICB0aGVpcl9hY2NvdW50X2lkOiBuLnByb2Nlc3NvckFjY291bnQucHJvY2Vzc29yX2FjY291bnRfaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKS5uZXh0X2FjdGlvbl9tZXRhZGF0YSwgcyA9IHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuYXBwbGVfcGF5X3Nlc3Npb247XG4gICAgaWYgKCFzKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc2Vzc2lvbiBkYXRhIHJlY2VpdmVkIGZyb20gcGF5bWVudCBmbG93XCIpO1xuICAgIG4uc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihzKSwgZyhcImFwcGxlX3BheV9jb21wbGV0ZV9tZXJjaGFudF92YWxpZGF0aW9uXCIsIHtcbiAgICAgIC4uLnNcbiAgICB9KTtcbiAgfSBjYXRjaCAodCkge1xuICAgIHRocm93IG4uc2Vzc2lvbi5hYm9ydCgpLCB0O1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBxcyhlLCBuKSB7XG4gIHZhciB0LCByO1xuICB0cnkge1xuICAgIGNvbnN0IHMgPSBlLnBheW1lbnQsIGkgPSBnbihuLm5vbkNkZUZvcm1JbnB1dHMsIHMpLCBhID0gc2UoaSwgbi5mb3JtQ2FsbGJhY2tzLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgZyhcImJpbGxpbmdfZGV0YWlsc19yZWNlaXZlZFwiLCB7XG4gICAgICAuLi5hXG4gICAgfSksIGF3YWl0IGdlKG4uY29ubmVjdGlvbiwge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBuZXdfY3VzdG9tZXJfZW1haWw6IGFbcC5FTUFJTF0sXG4gICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogYVtwLkZJUlNUX05BTUVdLFxuICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogYVtwLkxBU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfYWRkcmVzczoge1xuICAgICAgICB6aXBfY29kZTogYVtwLlpJUF9DT0RFXSxcbiAgICAgICAgY291bnRyeTogYVtwLkNPVU5UUlldXG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgYyA9IHtcbiAgICAgIGRhdGFEZXNjcmlwdG9yOiBcIkNPTU1PTi5BUFBMRS5JTkFQUC5QQVlNRU5UXCIsXG4gICAgICBkYXRhVmFsdWU6IHdpbmRvdy5idG9hKEpTT04uc3RyaW5naWZ5KHMudG9rZW4ucGF5bWVudERhdGEpKVxuICAgIH0sIGwgPSBhd2FpdCBZKG4uY29ubmVjdGlvbiwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBuLnByZWZpbGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICAgIG1vYmlsZV93YWxsZXRfcGF5bWVudF9kYXRhOiBjXG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCEoKHIgPSAodCA9IGwucGF5bWVudF9tZXRob2RzKSA9PSBudWxsID8gdm9pZCAwIDogdFswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IHIuaWQpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gUE0gSUQgZm91bmRcIik7XG4gICAgY29uc3QgZCA9IHtcbiAgICAgIHN0YXR1czogQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19TVUNDRVNTXG4gICAgfTtcbiAgICByZXR1cm4gbi5zZXNzaW9uLmNvbXBsZXRlUGF5bWVudChkKSwgQmUoe1xuICAgICAgbG9nUHJlZml4OiBcImF1dGhuZXQtYXBwbGVwYXlcIixcbiAgICAgIGFueUNkZUNvbm5lY3Rpb246IG4uY29ubmVjdGlvbixcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IGEsXG4gICAgICBjb25maXJtUmVzdWx0OiBsLFxuICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgIH0pO1xuICB9IGNhdGNoIChzKSB7XG4gICAgY29uc3QgaSA9IHtcbiAgICAgIHN0YXR1czogQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFXG4gICAgfTtcbiAgICB0aHJvdyBuLnNlc3Npb24uY29tcGxldGVQYXltZW50KGkpLCBzO1xuICB9XG59XG5jb25zdCB7IGxvZ19fOiBVZSwgZXJyX186IE1uIH0gPSBQKFwiYXV0aG5ldC1hcHBsZXBheVwiKSwgWXMgPSBkZShcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgZm9ybUNhbGxiYWNrczogbiB9KSA9PiB7XG4gICAgY29uc3QgdCA9IHtcbiAgICAgIHByb2Nlc3NvcjogQi5FbnVtLmF1dGhvcml6ZV9uZXQsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBUbik7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIHQ7XG4gICAgaWYgKFVlKFwiTG9hZGluZyBBcHBsZSBQYXkgc2NyaXB0XCIpLCBhd2FpdCBobigpLCAhd2luZG93LkFwcGxlUGF5U2Vzc2lvbiB8fCAhQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50cygpKVxuICAgICAgcmV0dXJuIFVlKFwiQXBwbGUgUGF5IGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBkZXZpY2UvYnJvd3NlclwiKSwgdDtcbiAgICBpZiAoIWF3YWl0IEFwcGxlUGF5U2Vzc2lvbi5jYW5NYWtlUGF5bWVudHMoKSlcbiAgICAgIHJldHVybiBVZShcIk5vIGFjdGl2ZSBjYXJkcyBhdmFpbGFibGUgZm9yIEFwcGxlIFBheVwiKSwgdDtcbiAgICBpZiAoIXIubWV0YWRhdGEucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpO1xuICAgIGNvbnN0IGEgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGMgPSBhd2FpdCBOKGEpLCBsID0gYy5tb2RlID09PSBcInNldHVwXCIsIHUgPSBhd2FpdCB3ZShhLCBjLnRva2VuLCBsLCB2b2lkIDApLCBkID0gYXN5bmMgKF8pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFIuYXV0aG9yaXplTmV0QXBwbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBlZShlLmZvcm1EaXYpLFxuICAgICAgICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5fLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKG0pIHtcbiAgICAgICAgTW4oXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBtKSwgZyhcImFwcGxlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgICBlcnJvcjogbVxuICAgICAgICB9KSwgbi5nZXQub25DaGVja291dEVycm9yKChtID09IG51bGwgPyB2b2lkIDAgOiBtLm1lc3NhZ2UpID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IEIuRW51bS5hdXRob3JpemVfbmV0LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogZFxuICAgIH07XG4gIH1cbiksIEJzID0gcmUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICBjdXN0b21QYXJhbXM6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogc1xuICB9KSA9PiB7XG4gICAgdmFyIGY7XG4gICAgY29uc3QgeyBpbml0aWFsUHJldmlldzogaSwgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogYSB9ID0gciwgYyA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBUbiksIGwgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHUgPSBhd2FpdCBOKGwpLCBkID0gdS5tb2RlID09PSBcInNldHVwXCIsIF8gPSB3bih7XG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBhLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IGksXG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgZGVmYXVsdExhYmVsOiAoZiA9IGMgPT0gbnVsbCA/IHZvaWQgMCA6IGMubWV0YWRhdGEpID09IG51bGwgPyB2b2lkIDAgOiBmLnByb2Nlc3Nvcl9hY2NvdW50X25hbWVcbiAgICB9KTtcbiAgICBnKFwiYXBwbGVfcGF5X2Zsb3dfc3RhcnRlZFwiLCB7XG4gICAgICBwcm9jZXNzb3JfbmFtZTogbi5wcm9jZXNzb3JfbmFtZSxcbiAgICAgIHByZWZpbGw6IHUsXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBhXG4gICAgfSk7XG4gICAgY29uc3QgbSA9IG5ldyBBcHBsZVBheVNlc3Npb24oMywgXyksIHkgPSB7XG4gICAgICBzZXNzaW9uOiBtLFxuICAgICAgY29ubmVjdGlvbjogZS5hbnlDZGVDb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICAgIHByb2Nlc3NvckFjY291bnQ6IG4ubWV0YWRhdGEsXG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgaXNTZXR1cE1vZGU6IGQsXG4gICAgICBiYXNlVXJsOiBlLmJhc2VVcmwsXG4gICAgICBmb3JtQ2FsbGJhY2tzOiBzXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKGgsIHYpID0+IHtcbiAgICAgIG0ub25jYW5jZWwgPSAoKSA9PiB7XG4gICAgICAgIFVlKFwiUGF5bWVudCBjYW5jZWxsZWQgYnkgdXNlclwiKSwgdihuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpKTtcbiAgICAgIH0sIG0ub252YWxpZGF0ZW1lcmNoYW50ID0gYXN5bmMgKGIpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB6cyhiLCB5KTtcbiAgICAgICAgfSBjYXRjaCAoRSkge1xuICAgICAgICAgIHYoRSk7XG4gICAgICAgIH1cbiAgICAgIH0sIG0ub25wYXltZW50bWV0aG9kc2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGIgPSB7XG4gICAgICAgICAgbmV3VG90YWw6IF8udG90YWxcbiAgICAgICAgfTtcbiAgICAgICAgbS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oYik7XG4gICAgICB9LCBtLm9ucGF5bWVudGF1dGhvcml6ZWQgPSBhc3luYyAoYikgPT4ge1xuICAgICAgICBnKFwiYXBwbGVfcGF5X3BheW1lbnRfYXV0aG9yaXplZFwiKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBFID0gYXdhaXQgcXMoYiwgeSk7XG4gICAgICAgICAgaChFKTtcbiAgICAgICAgfSBjYXRjaCAoRSkge1xuICAgICAgICAgIHYoRSk7XG4gICAgICAgIH1cbiAgICAgIH0sIG0uYmVnaW4oKTtcbiAgICB9KS5jYXRjaCgoaCkgPT4ge1xuICAgICAgdGhyb3cgTW4oXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBoKSwgZyhcImFwcGxlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IGhcbiAgICAgIH0pLCBoO1xuICAgIH0pO1xuICB9XG4pLCB7IGxvZ19fOiBsZSwgZXJyX186IEVlIH0gPSBQKFwiYXV0aG5ldC1nb29nbGVwYXlcIiksIEhzID0gZGUoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIHZhciBkLCBfO1xuICAgIGxlKFwiSW5pdGlhbGl6aW5nIEF1dGhuZXQgR29vZ2xlUGF5IGZsb3dcIik7XG4gICAgY29uc3QgdCA9IHtcbiAgICAgIHByb2Nlc3NvcjogQi5FbnVtLmF1dGhvcml6ZV9uZXQsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBGbik7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIHQ7XG4gICAgbGUoXCJHb29nbGUgUGF5IENQTVwiLCByKTtcbiAgICBjb25zdCBzID0gci5tZXRhZGF0YTtcbiAgICBpZiAoIXMucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICByZXR1cm4gRWUoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpLCB0O1xuICAgIGlmIChsZShcIkxvYWRpbmcgR29vZ2xlIFBheSBzY3JpcHRcIiksIGF3YWl0IEFuKCksICEoKF8gPSAoZCA9IHdpbmRvdy5nb29nbGUpID09IG51bGwgPyB2b2lkIDAgOiBkLnBheW1lbnRzKSAhPSBudWxsICYmIF8uYXBpKSlcbiAgICAgIHJldHVybiBFZShcIkdvb2dsZSBQYXkgU0RLIG5vdCBsb2FkZWQgcHJvcGVybHlcIiksIHQ7XG4gICAgbGUoXCJHb29nbGUgUGF5IFNESyBsb2FkZWRcIiwgd2luZG93Lmdvb2dsZS5wYXltZW50cyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG0gPSBKZSh7XG4gICAgICAgIGdhdGV3YXk6IFwiYXV0aG9yaXplbmV0XCIsXG4gICAgICAgIGdhdGV3YXlNZXJjaGFudElkOiBzLnByb2Nlc3Nvcl9hY2NvdW50X2lkLFxuICAgICAgICBtZXJjaGFudE5hbWU6IHMucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgICAgbWVyY2hhbnRJZDogcy5nb29nbGVfcGF5X21lcmNoYW50X2lkID8/IFwiXCIsXG4gICAgICAgIC8vIFRoaXMgaXMgZm9yIGluaXRpYWwgcGF5bWVudCByZXF1ZXN0IHRvIGNoZWNrIGF2YWlsYWJpbGl0eS4gQWN0dWFsIGBpbml0aWFsUHJldmlld2Agd2lsbCBiZSB1c2VkIHdoZW4gdGhlIFVJIGlzIHNob3duXG4gICAgICAgIGluaXRpYWxQcmV2aWV3OiB7XG4gICAgICAgICAgYW1vdW50QXRvbTogMCxcbiAgICAgICAgICBjdXJyZW5jeTogXCJVU0RcIlxuICAgICAgICB9XG4gICAgICB9KSwgeSA9IGF3YWl0IEtlKGUuYmFzZVVybCwgbSksIHsgcmVzdWx0OiBmIH0gPSBhd2FpdCB5LmlzUmVhZHlUb1BheShtKTtcbiAgICAgIGlmICghZilcbiAgICAgICAgcmV0dXJuIGxlKFwiR29vZ2xlIFBheSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXJcIiksIHQ7XG4gICAgfSBjYXRjaCAobSkge1xuICAgICAgcmV0dXJuIEVlKFwiRXJyb3IgY2hlY2tpbmcgR29vZ2xlIFBheSBhdmFpbGFiaWxpdHlcIiwgbSksIHQ7XG4gICAgfVxuICAgIGNvbnN0IGkgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGEgPSBhd2FpdCBOKGkpLCBjID0gYS5tb2RlID09PSBcInNldHVwXCIsIGwgPSBhd2FpdCB3ZShpLCBhLnRva2VuLCBjLCB2b2lkIDApLCB1ID0gYXN5bmMgKG0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFIuYXV0aG9yaXplTmV0R29vZ2xlUGF5LnJ1bih7XG4gICAgICAgICAgY29udGV4dDogZSxcbiAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogZWUoZS5mb3JtRGl2KSxcbiAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMCxcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLm0sXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogbFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoICh5KSB7XG4gICAgICAgIEVlKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIHkpLCBnKFwiZ29vZ2xlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgICBlcnJvcjogeVxuICAgICAgICB9KSwgbi5nZXQub25DaGVja291dEVycm9yKCh5ID09IG51bGwgPyB2b2lkIDAgOiB5Lm1lc3NhZ2UpID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IEIuRW51bS5hdXRob3JpemVfbmV0LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogdVxuICAgIH07XG4gIH1cbiksIEpzID0gcmUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBub25DZGVGb3JtSW5wdXRzOiBuLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogc1xuICB9KSA9PiB7XG4gICAgdmFyIHksIGYsIGgsIHY7XG4gICAgY29uc3QgeyBpbml0aWFsUHJldmlldzogaSwgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogYSB9ID0gcywgbCA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBGbikubWV0YWRhdGEsIHUgPSBKZSh7XG4gICAgICBnYXRld2F5OiBcImF1dGhvcml6ZW5ldFwiLFxuICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IGwucHJvY2Vzc29yX2FjY291bnRfaWQsXG4gICAgICBtZXJjaGFudE5hbWU6IGwucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgIG1lcmNoYW50SWQ6IGwuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IGksXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBhXG4gICAgfSksIGQgPSBlLmFueUNkZUNvbm5lY3Rpb24sIF8gPSBhd2FpdCBOKGQpO1xuICAgIGcoXCJnb29nbGVfcGF5X2Zsb3dfc3RhcnRlZFwiLCB7XG4gICAgICBwcm9jZXNzb3JfbmFtZTogdC5wcm9jZXNzb3JfbmFtZSxcbiAgICAgIHByZWZpbGw6IF8sXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBhXG4gICAgfSk7XG4gICAgY29uc3QgbSA9IGF3YWl0IEtlKGUuYmFzZVVybCwgdSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGIgPSBhd2FpdCBtLmxvYWRQYXltZW50RGF0YSh1KTtcbiAgICAgIGxlKFwiR29vZ2xlIFBheSBQYXltZW50IGRhdGFcIiwgYik7XG4gICAgICBjb25zdCBFID0gUm4obiwgYiksIGsgPSBzZShFLCByLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgICBnKFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgICAgLi4ua1xuICAgICAgfSk7XG4gICAgICBjb25zdCBPID0gKGYgPSAoeSA9IGIucGF5bWVudE1ldGhvZERhdGEpID09IG51bGwgPyB2b2lkIDAgOiB5LnRva2VuaXphdGlvbkRhdGEpID09IG51bGwgPyB2b2lkIDAgOiBmLnRva2VuO1xuICAgICAgaWYgKCFPKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBwYXltZW50IHRva2VuIHJlY2VpdmVkIGZyb20gR29vZ2xlIFBheVwiKTtcbiAgICAgIGNvbnN0IHRlID0gYXdhaXQgZ2UoZCwge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdCxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2VtYWlsOiBrW3AuRU1BSUxdLFxuICAgICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZToga1twLkZJUlNUX05BTUVdLFxuICAgICAgICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiBrW3AuTEFTVF9OQU1FXSxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2FkZHJlc3M6IHtcbiAgICAgICAgICB6aXBfY29kZToga1twLlpJUF9DT0RFXSxcbiAgICAgICAgICBjb3VudHJ5OiBrW3AuQ09VTlRSWV1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsZShcIlN0YXJ0IHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCB0ZSk7XG4gICAgICBjb25zdCB4ID0gYXdhaXQgWShkLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogXy50b2tlbixcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgICBtb2JpbGVfd2FsbGV0X3BheW1lbnRfZGF0YToge1xuICAgICAgICAgICAgZGF0YURlc2NyaXB0b3I6IFwiQ09NTU9OLkdPT0dMRS5JTkFQUC5QQVlNRU5UXCIsXG4gICAgICAgICAgICBkYXRhVmFsdWU6IHdpbmRvdy5idG9hKE8pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghKCh2ID0gKGggPSB4LnBheW1lbnRfbWV0aG9kcykgPT0gbnVsbCA/IHZvaWQgMCA6IGhbMF0pID09IG51bGwgPyB2b2lkIDAgOiB2LmlkKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gUE0gSUQgZm91bmRcIik7XG4gICAgICByZXR1cm4gQmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwiYXV0aG5ldC1nb29nbGVwYXlcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogZCxcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IGssXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IHgsXG4gICAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGIpIHtcbiAgICAgIHRocm93IEVlKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIGIpLCBnKFwiZ29vZ2xlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IGJcbiAgICAgIH0pLCBuZXcgRXJyb3IoKGIgPT0gbnVsbCA/IHZvaWQgMCA6IGIubWVzc2FnZSkgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogS3MsIGVycl9fOiBEbiB9ID0gUChcInBvY2t5dC1jY1wiKSwgWnMgPSB6JDEub2JqZWN0KHtcbiAgXCJvcC1wb2NreXQtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXR4bi1ub1wiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXJlZi1ub1wiOiB6JDEuc3RyaW5nKClcbn0pLCBXcyA9IChlKSA9PiB7XG4gIGNvbnN0IG4gPSBacy5zYWZlUGFyc2UoZSk7XG4gIGlmICghbi5zdWNjZXNzKSB7XG4gICAgY29uc3QgdCA9IFwiVW5hYmxlIHRvIHByb2Nlc3MgeW91ciBjcmVkaXQgY2FyZC4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgciA9IGBQb2NreXQgM0RTIGlzIHJlcXVpcmVkIGJ1dCBoZWFkZXJzIGFyZSBtYWxmb3JtZWQuIEdvdDogJHtKU09OLnN0cmluZ2lmeShlKX1gO1xuICAgIHRocm93IERuKHIpLCBuZXcgRXJyb3IodCk7XG4gIH1cbiAgcmV0dXJuIG4uZGF0YTtcbn0sIE5uID0gKGUpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBuID0gbmV3IFVSTChlID8/IFwiXCIpLnNlYXJjaFBhcmFtcy5nZXQoXCJ2YXVsdElkXCIpO1xuICAgIGlmICghbilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHZhdWx0IElEIGZvdW5kIGluIDNEUyB2ZXJpZmljYXRpb24gcmVzdWx0XCIpO1xuICAgIHJldHVybiBLcyhgM0RTIHZlcmlmaWNhdGlvbiBzdWNjZXNzLiBbVmF1bHQgSUQ6ICR7bn1dYCksIG47XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICBjb25zdCB0ID0gXCJFcnJvciB2ZXJpZnlpbmcgM0RTIHZlcmlmaWNhdGlvbiByZXN1bHQuXCI7XG4gICAgdGhyb3cgRG4odCwgYFJlc3VsdGluZyBVUkw6ICR7ZX0uXG5FcnJvcjogJHtWKG4pfWApLCBuZXcgRXJyb3IodCk7XG4gIH1cbn0sIFFzID0gKGUsIG4pID0+IG5ldyBVUkwoZSkuc2VhcmNoUGFyYW1zLmdldChuKSwgWHMgPSAoZSkgPT4gKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGVbXCJvcC1wb2NreXQtM2RzLXVybFwiXSkgIT09IHZvaWQgMCwgZWkgPSBhc3luYyAoZSwgbikgPT4ge1xuICBjb25zdCB0ID0gV3MobiksIHIgPSBhd2FpdCB2bih7IHVybDogdFtcIm9wLXBvY2t5dC0zZHMtdXJsXCJdLCBiYXNlVXJsOiBlIH0pO1xuICByZXR1cm4ge1xuICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICB2YXVsdF9pZDogTm4oci5ocmVmID8/IFwiXCIpLFxuICAgICAgdHJhbnNhY3Rpb25fbm86IHRbXCJvcC1wb2NreXQtdHhuLW5vXCJdLFxuICAgICAgcmVmZXJlbmNlX25vOiB0W1wib3AtcG9ja3l0LXJlZi1ub1wiXVxuICAgIH1cbiAgfTtcbn0sIHRpID0geiQxLmVudW0oW1widGVzdFwiLCBcImxpdmVcIiwgXCJsaXZlLXVzXCIsIFwibGl2ZS1pblwiLCBcImxpdmUtYXBzZVwiLCBcImxpdmUtYXVcIl0pLCBuaSA9IHokMS5lbnVtKFtcbiAgXCJhclwiLFxuICBcImJnLUJHXCIsXG4gIFwiY2EtRVNcIixcbiAgXCJjcy1DWlwiLFxuICBcImRhLURLXCIsXG4gIFwiZGUtREVcIixcbiAgXCJlbC1HUlwiLFxuICBcImVuLVVTXCIsXG4gIFwiZXMtRVNcIixcbiAgXCJldC1FRVwiLFxuICBcImZpLUZJXCIsXG4gIFwiZnItRlJcIixcbiAgXCJoci1IUlwiLFxuICBcImh1LUhVXCIsXG4gIFwiaXMtSVNcIixcbiAgXCJpdC1JVFwiLFxuICBcImphLUpQXCIsXG4gIFwia28tS1JcIixcbiAgXCJsdC1MVFwiLFxuICBcImx2LUxWXCIsXG4gIFwibmwtTkxcIixcbiAgXCJuby1OT1wiLFxuICBcInBsLVBMXCIsXG4gIFwicHQtQlJcIixcbiAgXCJwdC1QVFwiLFxuICBcInJvLVJPXCIsXG4gIFwicnUtUlVcIixcbiAgXCJzay1TS1wiLFxuICBcInNsLVNJXCIsXG4gIFwic3YtU0VcIixcbiAgXCJ6aC1DTlwiLFxuICBcInpoLVRXXCJcbl0pLCB7IGxvZ19fOiBfZSwgZXJyX186IEFlIH0gPSBQKFwiYWR5ZW4tY2NcIiksIHJpID0geiQxLm9iamVjdCh7XG4gIFwib3AtYWNjb3VudC1pZFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWR5ZW4tY2xpZW50LWtleVwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWR5ZW4tZW52aXJvbm1lbnRcIjogdGksXG4gIFwib3AtYWR5ZW4tYWN0aW9uXCI6IHokMS5zdHJpbmcoKVxufSksIExuID0gXCJVbmFibGUgdG8gcHJvY2VzcyB5b3VyIGNyZWRpdCBjYXJkLiBQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlLlwiLCBvaSA9IChlKSA9PiB7XG4gIGNvbnN0IG4gPSByaS5zYWZlUGFyc2UoZSk7XG4gIGlmICghbi5zdWNjZXNzKVxuICAgIHRocm93IEFlKGBBZHllbiAzRFMgaXMgcmVxdWlyZWQgYnV0IGhlYWRlcnMgYXJlIG1hbGZvcm1lZC4gR290OiAke0pTT04uc3RyaW5naWZ5KGUpfWApLCBuZXcgRXJyb3IoTG4pO1xuICByZXR1cm4gbi5kYXRhO1xufSwgc2kgPSAoZSkgPT4gSlNPTi5wYXJzZShlKSwgUHQgPSAoKSA9PiBcIkFkeWVuV2ViXCIgaW4gd2luZG93ICYmIFwiQWR5ZW5DaGVja291dFwiIGluIHdpbmRvdy5BZHllbldlYiwgaWkgPSBhc3luYyAoKSA9PiB7XG4gIF9lKFwiV2FpdGluZyBmb3IgQWR5ZW4gU0RLIHRvIGxvYWQuLi5cIik7XG4gIGZvciAobGV0IGUgPSAwOyBlIDwgMTA7IGUrKylcbiAgICBQdCgpIHx8IGF3YWl0IGF0KDUwMCk7XG4gIGlmICghUHQoKSlcbiAgICB0aHJvdyBBZShcIkFkeWVuIFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCBuZXcgRXJyb3IoTG4pO1xuICByZXR1cm4gX2UoXCJBZHllbiBTREsgbG9hZGVkIHN1Y2Nlc3NmdWxseVwiKSwgd2luZG93LkFkeWVuV2ViLkFkeWVuQ2hlY2tvdXQ7XG59LCBhaSA9IChlKSA9PiB7XG4gIGNvbnN0IHsgaGVhZGVyczogbiwgbG9jYWxlOiB0LCBjb3VudHJ5Q29kZTogciwgY29tcG9uZW50OiBzLCBob3N0OiBpLCBjYW5jZWxCdXR0b246IGEgfSA9IGUsIGMgPSBzaShuW1wib3AtYWR5ZW4tYWN0aW9uXCJdKTtcbiAgcmV0dXJuIF9lKGBSdW5uaW5nIEFkeWVuIDNEUyBmbG93IGZvciBhY3Rpb24gdHlwZTogJHtjLnR5cGV9YCksIG5ldyBQcm9taXNlKChsKSA9PiB7XG4gICAgY29uc3QgdSA9ICgpID0+IHtcbiAgICAgIF9lKFwiQ2xlYW5pbmcgdXAgQWR5ZW4gM0RTIGZsb3dcIiksIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG0pLCBpLnJlbW92ZSgpO1xuICAgIH0sIGQgPSAoZikgPT4ge1xuICAgICAgQWUoXCJBdXRoZW50aWNhdGlvbiBmYWlsZWQuIFJlc3VsdDpcIiwgZiksIGwoeyBzdGF0dXM6IFQuRkFJTFVSRSwgY2xlYW51cDogdSB9KTtcbiAgICB9LCBfID0gKGYpID0+IHtcbiAgICAgIEFlKFwiQWR5ZW4gZXJyb3I6XCIsIGYpLCBsKHsgc3RhdHVzOiBULkZBSUxVUkUsIGNsZWFudXA6IHUgfSk7XG4gICAgfSwgbSA9ICgpID0+IHtcbiAgICAgIGwoeyBzdGF0dXM6IFQuQ0FOQ0VMTEVELCBjbGVhbnVwOiB1IH0pO1xuICAgIH07XG4gICAgYS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgbSk7XG4gICAgY29uc3QgeSA9IChmLCBoLCB2KSA9PiB7XG4gICAgICBpLnJlbW92ZSgpLCBsKHsgc3RhdHVzOiBULlNVQ0NFU1MsIGFkZGl0aW9uYWxEZXRhaWxzOiBmLCBjbGVhbnVwOiB1IH0pO1xuICAgIH07XG4gICAgaWkoKS50aGVuKFxuICAgICAgKGYpID0+IGYoe1xuICAgICAgICBjbGllbnRLZXk6IG5bXCJvcC1hZHllbi1jbGllbnQta2V5XCJdLFxuICAgICAgICBlbnZpcm9ubWVudDogbltcIm9wLWFkeWVuLWVudmlyb25tZW50XCJdLFxuICAgICAgICBsb2NhbGU6IHQsXG4gICAgICAgIGNvdW50cnlDb2RlOiByLFxuICAgICAgICBvbkFkZGl0aW9uYWxEZXRhaWxzOiB5LFxuICAgICAgICBvblBheW1lbnRGYWlsZWQ6IGQsXG4gICAgICAgIG9uRXJyb3I6IF9cbiAgICAgIH0pXG4gICAgKS50aGVuKChmKSA9PiB7XG4gICAgICBmLmNyZWF0ZUZyb21BY3Rpb24oYywgeyBjaGFsbGVuZ2VXaW5kb3dTaXplOiBcIjAzXCIgfSkubW91bnQocyk7XG4gICAgfSk7XG4gIH0pO1xufSwgY2kgPSAoZSkgPT4ge1xuICBjb25zdCBuID0gbmF2aWdhdG9yLmxhbmd1YWdlcyAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aCA/IG5hdmlnYXRvci5sYW5ndWFnZXNbMF0gOiBuYXZpZ2F0b3IubGFuZ3VhZ2UsIHQgPSBlID8/IG4sIHIgPSBuaS5zYWZlUGFyc2UodCk7XG4gIHJldHVybiByLnN1Y2Nlc3MgPyAoX2UoYFJlc29sdmVkIGxvY2FsZTogJHtyLmRhdGF9YCksIHIuZGF0YSkgOiAoQWUoYFJlc29sdmVkIGludmFsaWQgbG9jYWxlOiAke3R9LiBEZWZhdWx0aW5nIHRvIGVuLVVTLmApLCBcImVuLVVTXCIpO1xufSwgbGkgPSAoZSkgPT4gKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGVbXCJvcC1hZHllbi1hY3Rpb25cIl0pICE9PSB2b2lkIDAsIHVpID0gYXN5bmMgKGUsIG4sIHQpID0+IHtcbiAgY29uc3QgciA9IG9pKG4pLCBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgcy5pZCA9IFwiYWR5ZW4tY29udGFpbmVyXCI7XG4gIGNvbnN0IHsgaG9zdDogaSwgaWZyYW1lOiBhLCBjYW5jZWxCdXR0b246IGMgfSA9IGJuKFwiaHR0cDovL2V4YW1wbGUuY29tXCIpO1xuICBhLnJlcGxhY2VXaXRoKHMpO1xuICBjb25zdCBsID0gYXdhaXQgYWkoe1xuICAgIGhlYWRlcnM6IHIsXG4gICAgbG9jYWxlOiBjaSh0KSxcbiAgICBjb3VudHJ5Q29kZTogZSxcbiAgICBjb21wb25lbnQ6IHMsXG4gICAgaG9zdDogaSxcbiAgICBjYW5jZWxCdXR0b246IGNcbiAgfSk7XG4gIGlmIChsLmNsZWFudXAoKSwgbC5zdGF0dXMgPT09IFQuRkFJTFVSRSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgaWYgKGwuc3RhdHVzID09PSBULkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKGwuc3RhdHVzID09PSBULlNVQ0NFU1MpIHtcbiAgICBpZiAoIWwuYWRkaXRpb25hbERldGFpbHMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIHN1Y2NlZWRlZCBidXQgbm8gYWRkaXRpb25hbCBkZXRhaWxzIHdlcmUgcmV0dXJuZWRcIik7XG4gICAgcmV0dXJuIF9lKFwiM0RTIHZlcmlmaWNhdGlvbiBzdWNjZWVkZWRcIiksIHtcbiAgICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICAgIGFkZGl0aW9uYWxfZGV0YWlsczogbC5hZGRpdGlvbmFsRGV0YWlscy5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlXG4gICAgWWUobC5zdGF0dXMpO1xufSwgeyBsb2dfXzogUywgZXJyX186IGt0IH0gPSBQKFwiY29tbW9uLWNjXCIpLCB7IGxvZ19fOiBBdCB9ID0gUChcInN0cmlwZS1jY1wiKTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuY29uc3QgZGkgPSByZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiB0LFxuICAgIGZvcm1DYWxsYmFja3M6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBzXG4gIH0pID0+IHtcbiAgICB2YXIgdTtcbiAgICBTKFwi4pScIFJ1bm5pbmcgY29tbW9uIENDIGZsb3cuLi5cIiwgeyBjaGVja291dFBheW1lbnRNZXRob2Q6IG4gfSk7XG4gICAgY29uc3QgaSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgYSA9IGF3YWl0IE4oaSk7XG4gICAgZyhcImNvbW1vbl9jY19mbG93X3N0YXJ0ZWRcIiwge1xuICAgICAgLi4ubixcbiAgICAgIHByZWZpbGw6IGFcbiAgICB9KSwgUyhg4pScIFZhbGlkYXRpbmcgbm9uLUNERSBmb3JtIGZpZWxkcyBbTW9kZTogJHthLm1vZGV9XWApO1xuICAgIGNvbnN0IGMgPSBzZSh0LCByLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgZyhcImJpbGxpbmdfZGV0YWlsc19yZWNlaXZlZFwiLCB7XG4gICAgICAuLi5jXG4gICAgfSk7XG4gICAgY29uc3QgbCA9IHtcbiAgICAgIHNlc3Npb25faWQ6IGUuZWxlbWVudHNTZXNzaW9uSWQsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbixcbiAgICAgIG5vbl9jZGVfZm9ybV9maWVsZHM6IGMsXG4gICAgICBleHRyYV9tZXRhZGF0YToge1xuICAgICAgICBvcmlnaW46IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cbiAgICAgIH0sXG4gICAgICBwYXltZW50X3JvdXRlX2lkOiBzLnBheW1lbnRSb3V0ZUlkXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgUyhg4pScIFRva2VuaXppbmcgY2FyZCBpbmZvIGluIENERSBbU2Vzc2lvbjogJHtlLmVsZW1lbnRzU2Vzc2lvbklkfV1gKTtcbiAgICAgIGNvbnN0IGQgPSBhd2FpdCBmcyhzLmN1cnJlbnRDZGVDb25uZWN0aW9ucywge1xuICAgICAgICBzZXNzaW9uX2lkOiBlLmVsZW1lbnRzU2Vzc2lvbklkXG4gICAgICB9KTtcbiAgICAgIGlmIChOcyhkLCByLmdldC5vblZhbGlkYXRpb25FcnJvciksIGEubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICAgIFMoYOKUnCBTZXR0aW5nIHVwIHBheW1lbnQgbWV0aG9kIGluIENERSBbVG9rZW46ICR7YS50b2tlbn1dYCk7XG4gICAgICAgIGNvbnN0IF8gPSBhd2FpdCBfcyhpLCBsKTtcbiAgICAgICAgcmV0dXJuIFMoYOKVsCBTZXR1cCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IFtQTSBJRDogJHtfLnBheW1lbnRfbWV0aG9kX2lkfV1gKSwgeyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogXyB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUyhg4pScIEluaXRpYWwgY2hlY2tvdXQgZmxvdy4gQ2hlY2tpbmcgb3V0IGNhcmQgaW5mbyBpbiBDREUgW1Nlc3Npb246ICR7ZS5lbGVtZW50c1Nlc3Npb25JZH1dYCk7XG4gICAgICAgIGNvbnN0IF8gPSBhd2FpdCBTdChpLCBsKTtcbiAgICAgICAgcmV0dXJuIFMoXCLilbAgQ2hlY2tvdXQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5cIiksIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IF8gfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChkKSB7XG4gICAgICBpZiAoZCBpbnN0YW5jZW9mIG1uICYmIGQub3JpZ2luYWxFcnJvck1lc3NhZ2UuaW5jbHVkZXMoXCIzRFNfUkVRVUlSRURcIikpIHtcbiAgICAgICAgUyhcIuKUnCBDYXJkIHJlcXVpcmVzIDNEUywgc3RhcnRpbmcgbm9uLWxlZ2FjeSBwYXltZW50IGZsb3dcIiksIFMoXCJSZWNlaXZlZCAzRFMgZXJyb3IgcmVzcG9uc2UgaGVhZGVyczpcIiwgZC5yZXNwb25zZS5oZWFkZXJzKSwgZyhcIjNkc19yZXF1aXJlZFwiLCB7XG4gICAgICAgICAgLi4ubixcbiAgICAgICAgICAuLi5kLnJlc3BvbnNlLmhlYWRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IF8gPSBYcyhkLnJlc3BvbnNlLmhlYWRlcnMpO1xuICAgICAgICBpZiAoXykge1xuICAgICAgICAgIFMoXCLilJwgUG9ja3l0IDNEUyBjYXNlIGRldGVjdGVkLiBHb2luZyB0aHJvdWdoIFBvY2t5dCAzRFMgZmxvdy5cIik7XG4gICAgICAgICAgY29uc3QgYiA9IGF3YWl0IGVpKGUuYmFzZVVybCwgZC5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgICBsLmV4dHJhX21ldGFkYXRhLnBvY2t5dCA9IGI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEZzKGQucmVzcG9uc2UuaGVhZGVycykpIHtcbiAgICAgICAgICBTKFwi4pScIEFpcndhbGxleCAzRFMgY2FzZSBkZXRlY3RlZC4gR29pbmcgdGhyb3VnaCBBaXJ3YWxsZXggM0RTIGZsb3cuXCIpO1xuICAgICAgICAgIGNvbnN0IGIgPSBhd2FpdCBEcyhlLmJhc2VVcmwsIGQucmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICAgICAgbC5leHRyYV9tZXRhZGF0YS5haXJ3YWxsZXggPSBiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaShkLnJlc3BvbnNlLmhlYWRlcnMpKSB7XG4gICAgICAgICAgUyhcIuKUnCBBZHllbiAzRFMgY2FzZSBkZXRlY3RlZC4gR29pbmcgdGhyb3VnaCBBZHllbiAzRFMgZmxvdy5cIik7XG4gICAgICAgICAgY29uc3QgYiA9IGF3YWl0IHVpKFxuICAgICAgICAgICAgdFtwLkNPVU5UUlldLFxuICAgICAgICAgICAgZC5yZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgICAgYS5sb2NhbGVcbiAgICAgICAgICApO1xuICAgICAgICAgIGwuZXh0cmFfbWV0YWRhdGEuYWR5ZW4gPSBiO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGYgPSBhd2FpdCB1cyhpLCBsKTtcbiAgICAgICAgUyhcIuKUnCBQYXltZW50IGZsb3cgcmVzdWx0OlwiLCBmKTtcbiAgICAgICAgY29uc3QgaCA9ICgodSA9IGQucmVzcG9uc2UuaGVhZGVycykgPT0gbnVsbCA/IHZvaWQgMCA6IHVbXCJvcC1zaG91bGQtdXNlLW5ldy1mbG93XCJdKSAhPT0gXCJ0cnVlXCI7XG4gICAgICAgIF8gPyBTKFwi4pScIFByZS1zdGFydCAzRFMgaXMgc3VjY2Vzc2Z1bCwgb3RoZXIgM0RTIGZsb3dzIHdpbGwgYmUgc2tpcHBlZC5cIikgOiBoID8gKFMoXCLilJwgVXNpbmcgc3RyaXBlIDNEUyBmbG93XCIpLCBhd2FpdCBfaShmKSkgOiAoUyhcIuKUnCBVc2luZyBjb21tb24gM0RTIGZsb3dcIiksIGF3YWl0IGZpKGYsIGUuYmFzZVVybCkpO1xuICAgICAgICBjb25zdCB2ID0gZi5jY19wbV9pZDtcbiAgICAgICAgaWYgKGEubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICAgICAgUyhg4pScIENvbmZpcm1pbmcgcGF5bWVudCBmbG93IFtjY19wbV9pZDogJHt2fV1gKTtcbiAgICAgICAgICBjb25zdCBiID0gYXdhaXQgWShpLCB7XG4gICAgICAgICAgICBzZWN1cmVfdG9rZW46IGEudG9rZW4sXG4gICAgICAgICAgICBleGlzdGluZ19jY19wbV9pZDogdlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIFMoXCLilJwgQ29uZmlybSBwYXltZW50IGZsb3cgcmVzdWx0IHJlY2VpdmVkIFJlc3VsdDpcIiwgYik7XG4gICAgICAgICAgY29uc3QgRSA9IFRlKGIpO1xuICAgICAgICAgIHJldHVybiBTKGDilbAgU2V0dXAgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBbUE0gSUQ6ICR7RS5wYXltZW50X21ldGhvZF9pZH1dYCksIHsgbW9kZTogXCJzZXR1cFwiLCByZXN1bHQ6IEUgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBTKGDilJwgQ2hlY2tpbmcgb3V0IGFmdGVyIDNEUyBmbG93IFtGbG93OiAke2ggPyBcImxlZ2FjeVwiIDogXCJuZXdcIn1dYCk7XG4gICAgICAgICAgY29uc3QgYiA9IGF3YWl0IFN0KGksIHtcbiAgICAgICAgICAgIC4uLmwsXG4gICAgICAgICAgICBleGlzdGluZ19jY19wbV9pZDogdixcbiAgICAgICAgICAgIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IGhcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gUyhcIuKVsCBDaGVja291dCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LlwiKSwgeyBtb2RlOiBcImNoZWNrb3V0XCIsIHJlc3VsdDogYiB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBrdChcIuKVsCBFcnJvciBjaGVja2luZyBvdXQgY2FyZCBpbmZvIGluIENERVwiKSwga3QoZCksIGQ7XG4gICAgfVxuICB9XG4pLCBwaSA9IChlKSA9PiB7XG4gIGNvbnN0IG4gPSBlLnJlcXVpcmVkX3VzZXJfYWN0aW9ucy5maW5kKCh0KSA9PiB0LnR5cGUgPT09IFwic3RyaXBlXzNkc1wiKTtcbiAgaWYgKCFuKVxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHN0cmlwZSAzRFMgYWN0aW9uIGZvdW5kXCIpO1xuICByZXR1cm4gU3IucGFyc2Uobik7XG59LCBtaSA9IFtcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIiwgXCJhZHllblwiXSwgeWkgPSAoZSkgPT4ge1xuICBjb25zdCBuID0gZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMuZmluZCgodCkgPT4gbWkuaW5jbHVkZXModC50eXBlKSk7XG4gIGlmICghbilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb21tb24gM0RTIGFjdGlvbiBmb3VuZFwiKTtcbiAgcmV0dXJuIHZyLnBhcnNlKG4pO1xufSwgZmkgPSBhc3luYyAoZSwgbikgPT4ge1xuICBjb25zdCB0ID0geWkoZSk7XG4gIGlmICh0LnJlZGlyZWN0X3VybCA9PT0gXCIzRFNfQ09NUExFVEVcIikge1xuICAgIFMoXCLilJwgM0RTIGZsb3cgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiKSwgZyhcIjNkc19jb21wbGV0ZVwiKTtcbiAgICByZXR1cm47XG4gIH1cbiAgUyhg4pScIFVzaW5nIGNvbW1vbiAzRFMgZmxvdyBbVVJMOiAke3QucmVkaXJlY3RfdXJsfV1gKSwgZyhcIjNkc19yZWRpcmVjdFwiLCB7XG4gICAgLi4udFxuICB9KTtcbiAgY29uc3QgeyBzdGF0dXM6IHIgfSA9IGF3YWl0IEhlKHsgdXJsOiB0LnJlZGlyZWN0X3VybCwgYmFzZVVybDogbiB9KTtcbiAgaWYgKFMoYOKVsCAzRFMgdmVyaWZpY2F0aW9uIGNvbXBsZXRlZCBbU3RhdHVzOiAke3J9XWApLCByID09PSBULkNBTkNFTExFRClcbiAgICB0aHJvdyBnKFwiM2RzX2NhbmNlbGxlZFwiKSwgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gIGlmIChyID09PSBULkZBSUxVUkUpXG4gICAgdGhyb3cgZyhcIjNkc19mYWlsdXJlXCIpLCBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbn0sIF9pID0gYXN5bmMgKGUpID0+IHtcbiAgY29uc3QgbiA9IHBpKGUpO1xuICBnKFwiM2RzX3N0cmlwZV9yZWRpcmVjdFwiLCB7XG4gICAgLi4ublxuICB9KSwgQXQoYOKUnCBVc2luZyBzdHJpcGUgM0RTIGZsb3cgW0NsaWVudCBTZWNyZXQ6ICR7bi5jbGllbnRfc2VjcmV0LnN1YnN0cmluZygwLCA4KX0uLi5dYCksIGF3YWl0IEZyKG4pLCBnKFwiM2RzX3N0cmlwZV9jb21wbGV0ZVwiKSwgQXQoXCLilbAgU3RyaXBlIDNEUyBmbG93IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIik7XG59LCBoaSA9IDEsIGdpID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImxvb3BcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImNyeXB0b1wiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgZW50aXR5X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgYXBpX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gICAgc3VwcG9ydGVkX2N1cnJlbmNpZXM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICAgIGVudmlyb25tZW50OiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCB7IGxvZ19fOiBqLCBlcnJfXzogT24gfSA9IFAoXCJsb29wLWNyeXB0b1wiKSwgd2kgPSB6JDEub2JqZWN0KHtcbiAgbG9vcEZpcnN0TmFtZTogSSxcbiAgbG9vcExhc3ROYW1lOiBJLFxuICBsb29wRW1haWw6IEksXG4gIFtwLlBST01PVElPTl9DT0RFXTogQ1xufSksIGJpID0geiQxLm9iamVjdCh7XG4gIGxvb3BGaXJzdE5hbWU6IEMsXG4gIGxvb3BMYXN0TmFtZTogQyxcbiAgbG9vcEVtYWlsOiBDLFxuICBbcC5QUk9NT1RJT05fQ09ERV06IENcbn0pLCBJdCA9IChlLCBuLCB0LCByKSA9PiB7XG4gIGNvbnN0IHMgPSB0LnNhZmVQYXJzZShlKTtcbiAgaWYgKCFzLnN1Y2Nlc3MpIHtcbiAgICBjb25zdCBpID0gcy5lcnJvci5mb3JtYXQoKSwgYSA9IFl0KGkpO1xuICAgIGZvciAoY29uc3QgW2MsIGxdIG9mIE9iamVjdC5lbnRyaWVzKGEpKVxuICAgICAgbihjLCBsLCBjKTtcbiAgICB0aHJvdyBPbihcIkdvdCB2YWxpZGF0aW9uIGVycm9ycyBpbiBub24tQ0RFIGZvcm0gZmllbGRzXCIsIGEpLCBuZXcgRXJyb3IoXCJHb3QgdmFsaWRhdGlvbiBlcnJvcnMgaW4gbm9uLUNERSBmb3JtIGZpZWxkc1wiKTtcbiAgfVxuICByZXR1cm4gcy5kYXRhO1xufSwgdmkgPSBkZShcbiAgYXN5bmMgKHsgY29udGV4dDogZSB9KSA9PiB7XG4gICAgaihcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgTG9vcCBDcnlwdG8uLi5cIik7XG4gICAgY29uc3QgbiA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBnaSk7XG4gICAgaihgY2hlY2tvdXRQYXltZW50TWV0aG9kOiAke0pTT04uc3RyaW5naWZ5KG4pfWApLCBqKFwiU3RhcnRpbmcgTG9vcCBDcnlwdG8gZmxvdy4uLlwiKTtcbiAgICBjb25zdCB0ID0gYXdhaXQgTihlLmFueUNkZUNvbm5lY3Rpb24pLCByID0gYXdhaXQgZHQoZS5hbnlDZGVDb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogblxuICAgIH0pO1xuICAgIGlmICh0Lm1vZGUgIT09IFwic2V0dXBcIiAmJiAhbi5tZXRhZGF0YS5zdXBwb3J0ZWRfY3VycmVuY2llcy5pbmNsdWRlcyh0LmN1cnJlbmN5KSlcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgQ3VycmVuY3kgJHt0LmN1cnJlbmN5fSBub3QgZW5hYmxlZCBmb3IgTG9vcC4gRW5hYmxlZCBjdXJyZW5jaWVzOiAke24ubWV0YWRhdGEuc3VwcG9ydGVkX2N1cnJlbmNpZXN9YFxuICAgICAgKTtcbiAgICBpZiAoIXIgfHwgIXIubmV4dF9hY3Rpb25fbWV0YWRhdGEpXG4gICAgICB0aHJvdyBFcnJvcihcIkZhaWxlZCB0byBmZXRjaCBuZWNlc3Nhcnkgc2V0dXAgZGF0YSBmb3IgTG9vcFwiKTtcbiAgICBjb25zdCBzID0gci5uZXh0X2FjdGlvbl9tZXRhZGF0YTtcbiAgICBsZXQgaTtcbiAgICB0Lm1vZGUgPT09IFwic2V0dXBcIiA/IGkgPSBoaSA6IGkgPSB0LmFtb3VudF90b3RhbF9hdG9tICogcy50b2tlbl9wcmljZTtcbiAgICBjb25zdCBhID0gaSwgYyA9IHMuYXV0aG9yaXphdGlvbl9hbW91bnQsIGwgPSB2NCgpLCB1ID0ge1xuICAgICAgcGF5bWVudFVzZEFtb3VudDogYSxcbiAgICAgIHN1Z2dlc3RlZEF1dGhvcml6YXRpb25Vc2RBbW91bnQ6IGMsXG4gICAgICBjdXN0b21lclJlZklkOiBsXG4gICAgfSwgZCA9IHtcbiAgICAgIGFwaUtleTogbi5tZXRhZGF0YS5hcGlfdG9rZW4sXG4gICAgICBlbnRpdHlJZDogbi5tZXRhZGF0YS5lbnRpdHlfaWQsXG4gICAgICBtZXJjaGFudElkOiBuLm1ldGFkYXRhLm1lcmNoYW50X2lkLFxuICAgICAgZW52aXJvbm1lbnQ6IG4ubWV0YWRhdGEuZW52aXJvbm1lbnRcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICB3aWRnZXRQcm9wczogdSxcbiAgICAgIGluaXRMb29wQ29ubmVjdFByb3BzOiBkXG4gICAgfTtcbiAgfVxuKSwgRWkgPSByZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiB0LFxuICAgIGZvcm1DYWxsYmFja3M6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBzXG4gIH0pID0+IHtcbiAgICBqKFwiUnVubmluZyBMb29wIGZsb3cuLi5cIiksIGooXCJjb250ZXh0XCIsIGUpLCBqKFwiY2hlY2tvdXRQYXltZW50TWV0aG9kXCIsIG4pLCBqKFwibm9uQ2RlRm9ybUlucHV0c1wiLCB0KSwgaihcImZsb3dDYWxsYmFja3NcIiwgciksIGooXCJjdXN0b21QYXJhbXNcIiwgcyk7XG4gICAgbGV0IGk7XG4gICAgcyAhPSBudWxsICYmIHMuc3VjY2VzcyA/IGkgPSBJdChcbiAgICAgIHQsXG4gICAgICByLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIHdpXG4gICAgKSA6IGkgPSBJdChcbiAgICAgIHQsXG4gICAgICByLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIGJpXG4gICAgKTtcbiAgICBjb25zdCBhID0gZS5hbnlDZGVDb25uZWN0aW9uLCBjID0gYXdhaXQgTihlLmFueUNkZUNvbm5lY3Rpb24pLCBsID0gYy5tb2RlICE9PSBcInNldHVwXCIsIHUgPSBhd2FpdCBnZShlLmFueUNkZUNvbm5lY3Rpb24sIHtcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuLFxuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5wcm92aWRlcixcbiAgICAgIG5ld19jdXN0b21lcl9lbWFpbDogaS5sb29wRW1haWwsXG4gICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogaS5sb29wRmlyc3ROYW1lLFxuICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogaS5sb29wTGFzdE5hbWUsXG4gICAgICB1c2VfcGF5X2ZpcnN0X2Zsb3c6IGwsXG4gICAgICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IGwgPyB7XG4gICAgICAgIC8vIFRPRE8gYWRkIGNvdXBvbiBhbmQgY2FydCBhZGp1c3RlZCBsaW5lIGl0ZW1zIGxhdGVyXG4gICAgICAgIGxpbmVfaXRlbXM6IGMubGluZV9pdGVtcyxcbiAgICAgICAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiBjLmFtb3VudF90b3RhbF9hdG9tXG4gICAgICB9IDogdm9pZCAwXG4gICAgfSk7XG4gICAgaWYgKCFzKVxuICAgICAgdGhyb3cgRXJyb3IoXCJDaGVja291dCBmYWlsZWQuIEZhaWxlZCB0byBwcm9wZXJseSBzdWJtaXQgZm9ybSBkYXRhLlwiKTtcbiAgICBjb25zdCBkID0gYXdhaXQgWShhLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGMudG9rZW4sXG4gICAgICB0aGVpcl9wbV9pZDogcy5zdWNjZXNzID8gcy5wYXlpbi5wYXltZW50TWV0aG9kLnBheW1lbnRNZXRob2RJZCA6IHZvaWQgMCxcbiAgICAgIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IGMubW9kZSAhPT0gXCJzZXR1cFwiID8gdS5jaGVja291dF9hdHRlbXB0X2lkIDogdm9pZCAwLFxuICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgIGxvb3BfY3VzdG9tZXI6IHMuc3VjY2VzcyA/IHMuY3VzdG9tZXIgOiB2b2lkIDAsXG4gICAgICAgIGxvb3BfcGF5aW46IHMuc3VjY2VzcyA/IHMucGF5aW4gOiB2b2lkIDAsXG4gICAgICAgIGxvb3BfZmFpbHVyZV9kZXRhaWxzOiBzLnN1Y2Nlc3MgPyB2b2lkIDAgOiBzLmZhaWx1cmVEZXRhaWxzLFxuICAgICAgICBsb29wX2RlYnVnX2luZm86IHMuc3VjY2VzcyA/IHZvaWQgMCA6IHMuZGVidWdJbmZvLFxuICAgICAgICBsb29wX3N1Y2Nlc3M6IHMuc3VjY2Vzc1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChqKGBDb25maXJtIHJlc3VsdDogJHtkfWApLCBjLm1vZGUgPT09IFwic2V0dXBcIikge1xuICAgICAgaihcIkRvaW5nIHBheW1lbnQgc2V0dXAuLi5cIiksIGooXCLilJwgQ29uZmlybSBwYXltZW50IGZsb3cgcmVzdWx0IHJlY2VpdmVkIFJlc3VsdDpcIiwgZCk7XG4gICAgICBjb25zdCBfID0gVGUoZCk7XG4gICAgICByZXR1cm4gaihg4pWwIFNldHVwIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgW1BNIElEOiAke18ucGF5bWVudF9tZXRob2RfaWR9XWApLCB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBfIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChqKFwiRG9pbmcgY2hlY2tvdXQuLi5cIiksICFkLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlKVxuICAgICAgICB0aHJvdyBPbihcIkNoZWNrb3V0IGZhaWxlZCwgbm8gcGF5LWZpcnN0IHN1Y2Nlc3MgcmVzcG9uc2U6XCIsIGQpLCBuZXcgRXJyb3IoXCJDaGVja291dCBmYWlsZWQsIHBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIHBheW1lbnQgbWV0aG9kLlwiKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6IFwiY2hlY2tvdXRcIixcbiAgICAgICAgcmVzdWx0OiBkLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogSywgZXJyX186IFJ0IH0gPSBQKFwicG9ja3l0LXBheXBhbFwiKSwgQ2kgPSB6JDEub2JqZWN0KHtcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwicG9ja3l0XCIpLFxuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJwYXlwYWxcIilcbn0pO1xueiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBwYXlwYWxfaWZyYW1lX3VybDogeiQxLnN0cmluZygpLFxuICAgIHZlcmlmeV90b2tlbjogeiQxLnN0cmluZygpXG4gIH0pXG4pLmxlbmd0aCgxKTtcbmNvbnN0IFNpID0gcmUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogc1xuICB9KSA9PiB7XG4gICAgdmFyIHgsIHBlO1xuICAgIEsoXCJSdW5uaW5nIFBvY2t5dCBQYXlwYWwgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gZS5hbnlDZGVDb25uZWN0aW9uLCBhID0gYXdhaXQgTihpKTtcbiAgICBLKFwiVmVyaWZ5aW5nIENQTS4uLlwiKTtcbiAgICBjb25zdCBjID0gQ2kucGFyc2Uobik7XG4gICAgSyhcIuKUnCBWYWxpZGF0aW5nIG5vbi1DREUgZm9ybSBmaWVsZHNcIik7XG4gICAgY29uc3QgbCA9IHMgPT0gbnVsbCA/IHZvaWQgMCA6IHMuc2V0dGluZ3MsIHUgPSBzZShcbiAgICAgIHQsXG4gICAgICByLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIGwgPT0gbnVsbCA/IHZvaWQgMCA6IGwuZGVmYXVsdEZpZWxkVmFsdWVzXG4gICAgKSwgZCA9IEVzKHUpO1xuICAgIEsoYFN0YXJ0aW5nIHBheW1lbnQgZmxvdy4uLiBNb2RlOiAke2EubW9kZX1gKTtcbiAgICBjb25zdCBfID0gdjQoKSwgbSA9IGEubW9kZSAhPT0gXCJzZXR1cFwiLCB5ID0ge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogYy5wcm92aWRlcixcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBjLFxuICAgICAgdXNlX3BheV9maXJzdF9mbG93OiBtLFxuICAgICAgcGF5X2ZpcnN0X2Zsb3dfY2FydF9pbmZvOiBtID8ge1xuICAgICAgICAvLyBUT0RPIGFkZCBjb3Vwb24gYW5kIGNhcnQgYWRqdXN0ZWQgbGluZSBpdGVtcyBsYXRlclxuICAgICAgICBsaW5lX2l0ZW1zOiBhLmxpbmVfaXRlbXMsXG4gICAgICAgIGRpc3BsYXllZF90b3RhbF9hbW91bnRfYXRvbTogYS5hbW91bnRfdG90YWxfYXRvbVxuICAgICAgfSA6IHZvaWQgMCxcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICB1c2VfcGF5cGFsX3JlZGlyZWN0X2Zsb3c6ICEhKCh4ID0gcyA9PSBudWxsID8gdm9pZCAwIDogcy5zZXR0aW5ncykgIT0gbnVsbCAmJiB4LnVzZVJlZGlyZWN0RmxvdyksXG4gICAgICAgIGZyb250ZW5kX3Rva2VuX2Zvcl9yZWRpcmVjdF9mbG93OiBfXG4gICAgICB9LFxuICAgICAgLi4uZFxuICAgIH0sIGYgPSBuZXcgVVJMKFwiL2FwcC9wcmUtYWN0aW9uL3N0YXJ0L1wiLCBlLmJhc2VVcmwpLnRvU3RyaW5nKCksIGggPSBidG9hKEpTT04uc3RyaW5naWZ5KHkpKSwgdiA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgc3Q6IGEudG9rZW4sXG4gICAgICByOiBoXG4gICAgfSksIGIgPSBgJHtmfT8ke3YudG9TdHJpbmcoKX1gO1xuICAgIGlmICgocGUgPSBzID09IG51bGwgPyB2b2lkIDAgOiBzLnNldHRpbmdzKSAhPSBudWxsICYmIHBlLnVzZVJlZGlyZWN0RmxvdylcbiAgICAgIHRocm93IEsoXCJTdGFydGluZyByZWRpcmVjdCBtb2RlIGZvciBQYXlQYWwuLi5cIiksIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYiwgYXdhaXQgYXQoMjAgKiAxZTMpLCBuZXcgRXJyb3IoXCJQYXlwYWwgZmxvdyB0aW1lZCBvdXQsIHBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIHBheW1lbnQgbWV0aG9kLlwiKTtcbiAgICBLKFwiU3RhcnRpbmcgcG9wdXAgbW9kZSBmb3IgUGF5UGFsLi4uXCIpLCBLKFwiT3BlbmluZyBwYXlwYWwgaWZyYW1lLi4uXCIpO1xuICAgIGNvbnN0IEUgPSBhd2FpdCBBcyhcbiAgICAgIFwiUGF5UGFsXCIsXG4gICAgICBpLFxuICAgICAgXyxcbiAgICAgIGJcbiAgICApO1xuICAgIEsoXCJQYXlwYWwgZmxvdyByZXN1bHRcIiwgRSk7XG4gICAgY29uc3QgayA9IE5uKEUuaHJlZiksIE8gPSBRcyhFLmhyZWYsIFwiY2F0dFwiKTtcbiAgICBpZiAoIU8pXG4gICAgICB0aHJvdyBSdChcIkNoZWNrb3V0IGF0dGVtcHQgSUQgbm90IGZvdW5kIGluIHJlZGlyZWN0IFVSTDpcIiwgRS5ocmVmKSwgbmV3IEVycm9yKFwiQ2hlY2tvdXQgYXR0ZW1wdCBJRCBub3QgZm91bmQgaW4gcmVkaXJlY3QgVVJMXCIpO1xuICAgIEsoYENvbmZpcm1pbmcgcGF5bWVudCBmbG93IHVzaW5nIHZhdWx0IElEICR7a31gKTtcbiAgICBjb25zdCB0ZSA9IGF3YWl0IFkoaSwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBhLnRva2VuLFxuICAgICAgdGhlaXJfcG1faWQ6IGssXG4gICAgICBjaGVja291dF9hdHRlbXB0X2lkOiBtID8gTyA6IHZvaWQgMFxuICAgIH0pO1xuICAgIGlmIChLKFwiQ29uZmlybSBwYXltZW50IGZsb3cgcmVzdWx0XCIsIHRlKSwgYS5tb2RlID09PSBcInNldHVwXCIpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBcInNldHVwXCIsXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIHBheW1lbnRfbWV0aG9kX2lkOiB0ZS5wYXltZW50X21ldGhvZHNbMF0uaWRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICBpZiAoIXRlLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlKVxuICAgICAgdGhyb3cgUnQoXCJDaGVja291dCBmYWlsZWQsIG5vIHBheS1maXJzdCBzdWNjZXNzIHJlc3BvbnNlOlwiLCB0ZSksIG5ldyBFcnJvcihcIkNoZWNrb3V0IGZhaWxlZCwgcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGFub3RoZXIgcGF5bWVudCBtZXRob2QuXCIpO1xuICAgIHJldHVybiB7XG4gICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICByZXN1bHQ6IHRlLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlXG4gICAgfTtcbiAgfVxuKSwgVHQgPSBcIm9qcy1zdHJpcGUtbGluay1idG5cIiwgeyBsb2dfXzogRiwgZXJyX186IFBpIH0gPSBQKFwic3RyaXBlLWxpbmtcIiksIGtpID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcInN0cmlwZV9saW5rXCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJzdHJpcGVcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBzdHJpcGVfcGs6IHokMS5zdHJpbmcoKVxuICB9KVxufSksIEFpID0geiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBvdXJfZXhpc3RpbmdfcG1faWQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSksIElpID0gZGUoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIGNvbnN0IHQgPSBlLmN1c3RvbUluaXRQYXJhbXMuc3RyaXBlTGluaztcbiAgICBGKFwiQ2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBDUE1zIGZvciBTdHJpcGUgTGluay4uLlwiKTtcbiAgICBjb25zdCByID0gSihlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIGtpKTtcbiAgICBGKFwiU3RhcnRpbmcgc3RyaXBlIGxpbmsgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBpID0gYXdhaXQgTihzKSwgYSA9IGkubW9kZSA9PT0gXCJzZXR1cFwiO1xuICAgIEYoXCJDcmVhdGluZyBzdHJpcGUgZWxlbWVudHMuLi5cIik7XG4gICAgY29uc3QgYyA9IGF3YWl0IHdlKHMsIGkudG9rZW4sIGEsIHZvaWQgMCksIHsgZWxlbWVudHM6IGwsIHN0cmlwZTogdSB9ID0gYXdhaXQgQXIoci5tZXRhZGF0YS5zdHJpcGVfcGssIHtcbiAgICAgIG1vZGU6IFwic2V0dXBcIixcbiAgICAgIGN1cnJlbmN5OiBjLmN1cnJlbmN5LFxuICAgICAgc2V0dXBfZnV0dXJlX3VzYWdlOiBcIm9mZl9zZXNzaW9uXCIsXG4gICAgICBwYXltZW50TWV0aG9kQ3JlYXRpb246IFwibWFudWFsXCJcbiAgICB9KTtcbiAgICBGKFwiQ3JlYXRpbmcgZXhwcmVzcyBjaGVja291dC4uLlwiKTtcbiAgICBjb25zdCBkID0gbC5jcmVhdGUoXCJleHByZXNzQ2hlY2tvdXRcIiwge1xuICAgICAgYnV0dG9uSGVpZ2h0OiB0ID09IG51bGwgPyB2b2lkIDAgOiB0LmJ1dHRvbkhlaWdodCxcbiAgICAgIHBheW1lbnRNZXRob2RzOiB7XG4gICAgICAgIGFtYXpvblBheTogXCJuZXZlclwiLFxuICAgICAgICBhcHBsZVBheTogXCJuZXZlclwiLFxuICAgICAgICBnb29nbGVQYXk6IFwibmV2ZXJcIixcbiAgICAgICAgcGF5cGFsOiBcIm5ldmVyXCJcbiAgICAgIH1cbiAgICB9KSwgXyA9ICgpID0+IHtcbiAgICAgIGQubW91bnQoYCMke1R0fWApO1xuICAgIH0sIG0gPSAoKSA9PiB7XG4gICAgICBkLnVubW91bnQoKTtcbiAgICB9O1xuICAgIHJldHVybiB0ICE9IG51bGwgJiYgdC5kb05vdE1vdW50T25Jbml0ID8gRihcIk5PVCBtb3VudGluZyBzdHJpcGUgbGluayBidXR0b24gKGRvTm90TW91bnRPbkluaXQgaXMgdHJ1ZSlcIikgOiAoRihcIk1vdW50aW5nIHN0cmlwZSBsaW5rIGJ1dHRvbi4uLlwiKSwgXygpKSwgZC5vbihcImNsaWNrXCIsIGFzeW5jICh5KSA9PiB7XG4gICAgICBpZiAoRihcIlN0cmlwZSBMaW5rIGJ1dHRvbiBjbGlja2VkXCIpLCB0ICE9IG51bGwgJiYgdC5vdmVycmlkZUxpbmtTdWJtaXQgJiYgIWF3YWl0IHQub3ZlcnJpZGVMaW5rU3VibWl0KCkpIHtcbiAgICAgICAgRihcIlN0cmlwZSBMaW5rIHN1Ym1pdCBhYm9ydGVkIGJ5IG92ZXJyaWRlTGlua1N1Ym1pdFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgeS5yZXNvbHZlKCk7XG4gICAgfSksIGQub24oXCJjb25maXJtXCIsIGFzeW5jICh5KSA9PiB7XG4gICAgICBGKFwiU3RyaXBlIExpbmsgd2luZG93IGNvbmZpcm1lZFwiLCB5KTtcbiAgICAgIGNvbnN0IGYgPSBhd2FpdCB1LmNyZWF0ZVBheW1lbnRNZXRob2Qoe1xuICAgICAgICBlbGVtZW50czogbCxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgYmlsbGluZ19kZXRhaWxzOiB5LmJpbGxpbmdEZXRhaWxzXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZi5lcnJvciA/IChQaShcImVycm9yXCIsIGYuZXJyb3IpLCBuLmdldC5vbkNoZWNrb3V0RXJyb3IoZi5lcnJvci5tZXNzYWdlID8/IFwiU3RyaXBlIExpbmsgdW5rbm93biBlcnJvclwiKSkgOiAoRihcInBheW1lbnRNZXRob2RcIiwgZi5wYXltZW50TWV0aG9kKSwgUi5zdHJpcGVMaW5rLnJ1bih7XG4gICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogZWUoZS5mb3JtRGl2KSxcbiAgICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgICAgY3VzdG9tUGFyYW1zOiB7IHN0cmlwZVBNOiBmLnBheW1lbnRNZXRob2QgfSxcbiAgICAgICAgaW5pdFJlc3VsdDogeyBpc0F2YWlsYWJsZTogITAgfVxuICAgICAgfSkpO1xuICAgIH0pLCB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBjb250cm9sbGVyOiB7XG4gICAgICAgIG1vdW50QnV0dG9uOiBfLFxuICAgICAgICBkaXNtb3VudEJ1dHRvbjogbSxcbiAgICAgICAgd2FpdEZvckJ1dHRvblRvTW91bnQ6IGFzeW5jICgpID0+IGF3YWl0IEZpKFR0KVxuICAgICAgfVxuICAgIH07XG4gIH1cbiksIFJpID0gcmUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogc1xuICB9KSA9PiB7XG4gICAgRihcIlJ1bm5pbmcgU3RyaXBlIExpbmsgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gZS5hbnlDZGVDb25uZWN0aW9uO1xuICAgIEYoXCJNZXJnaW5nIFBNIGZpZWxkcyB3aXRoIGZvcm0gZmllbGRzLi4uXCIpO1xuICAgIGNvbnN0IGEgPSBUaSh0LCBzLnN0cmlwZVBNKSwgYyA9IHNlKGEsIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKTtcbiAgICBnKFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgIC4uLmNcbiAgICB9KSwgRihcIlN0YXJ0aW5nIHBheW1lbnQgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBsID0gYXdhaXQgZ2UoaSwge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5wcm92aWRlcixcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuLFxuICAgICAgdGhlaXJfZXhpc3RpbmdfcG1faWQ6IHMuc3RyaXBlUE0uaWQsXG4gICAgICBuZXdfY3VzdG9tZXJfZW1haWw6IGNbcC5FTUFJTF0sXG4gICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogY1twLkZJUlNUX05BTUVdLFxuICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogY1twLkxBU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfYWRkcmVzczoge1xuICAgICAgICB6aXBfY29kZTogY1twLlpJUF9DT0RFXSxcbiAgICAgICAgY291bnRyeTogY1twLkNPVU5UUlldXG4gICAgICB9XG4gICAgfSk7XG4gICAgRihcIlN0YXJ0IHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCBsKTtcbiAgICBjb25zdCBkID0gQWkucGFyc2UobC5yZXF1aXJlZF91c2VyX2FjdGlvbnMpWzBdLm91cl9leGlzdGluZ19wbV9pZCwgXyA9IGF3YWl0IE4oaSk7XG4gICAgaWYgKF8ubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICBGKFwiRG9pbmcgcGF5bWVudCBzZXR1cC4uLlwiKTtcbiAgICAgIGNvbnN0IG0gPSBhd2FpdCBZKGksIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBfLnRva2VuLFxuICAgICAgICBleGlzdGluZ19jY19wbV9pZDogZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogVGUobSkgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgRihcIkRvaW5nIGNoZWNrb3V0Li4uXCIpO1xuICAgICAgY29uc3QgbSA9IHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBfLnRva2VuLFxuICAgICAgICBwYXltZW50X2lucHV0OiB7XG4gICAgICAgICAgcHJvdmlkZXJfdHlwZTogbi5wcm92aWRlclxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21lcl9lbWFpbDogY1twLkVNQUlMXSxcbiAgICAgICAgY3VzdG9tZXJfemlwX2NvZGU6IGNbcC5aSVBfQ09ERV0sXG4gICAgICAgIGN1c3RvbWVyX2NvdW50cnk6IGNbcC5DT1VOVFJZXSxcbiAgICAgICAgcHJvbW90aW9uX2NvZGU6IGNbcC5QUk9NT1RJT05fQ09ERV0sXG4gICAgICAgIGxpbmVfaXRlbXM6IF8ubGluZV9pdGVtcyxcbiAgICAgICAgdG90YWxfYW1vdW50X2F0b206IF8uYW1vdW50X3RvdGFsX2F0b20sXG4gICAgICAgIGNhbmNlbF9hdF9lbmQ6ICExLFxuICAgICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogblxuICAgICAgfTtcbiAgICAgIHJldHVybiB7IG1vZGU6IFwiY2hlY2tvdXRcIiwgcmVzdWx0OiBhd2FpdCB1dChpLCBtKSB9O1xuICAgIH1cbiAgfVxuKSwgVGkgPSAoZSwgbikgPT4ge1xuICB2YXIgbCwgdSwgZCwgXywgbTtcbiAgY29uc3QgdCA9IHsgLi4uZSB9LCBbciwgLi4uc10gPSAoKHUgPSAobCA9IG4uYmlsbGluZ19kZXRhaWxzLm5hbWUpID09IG51bGwgPyB2b2lkIDAgOiBsLnRyaW0oKSkgPT0gbnVsbCA/IHZvaWQgMCA6IHUuc3BsaXQoL1xccysvKSkgPz8gW10sIGkgPSBzLmpvaW4oXCIgXCIpIHx8IHZvaWQgMDtcbiAgdFtwLkVNQUlMXSA9IHRbcC5FTUFJTF0gfHwgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgKChkID0gbi5saW5rKSA9PSBudWxsID8gdm9pZCAwIDogZC5lbWFpbCkgfHwgbi5iaWxsaW5nX2RldGFpbHMuZW1haWwgfHwgXCJvcF91bmZpbGxlZEBnZXRvcGVucGF5LmNvbVwiLCB0W3AuWklQX0NPREVdID0gdFtwLlpJUF9DT0RFXSB8fCAoKF8gPSBuLmJpbGxpbmdfZGV0YWlscy5hZGRyZXNzKSA9PSBudWxsID8gdm9pZCAwIDogXy5wb3N0YWxfY29kZSkgfHwgXCIwMDAwMFwiLCB0W3AuQ09VTlRSWV0gPSB0W3AuQ09VTlRSWV0gfHwgKChtID0gbi5iaWxsaW5nX2RldGFpbHMuYWRkcmVzcykgPT0gbnVsbCA/IHZvaWQgMCA6IG0uY291bnRyeSkgfHwgXCJVU1wiO1xuICBjb25zdCBhID0gdFtwLkZJUlNUX05BTUVdIHx8IHIgfHwgXCJcIiwgYyA9IHRbcC5MQVNUX05BTUVdIHx8IGkgfHwgXCJcIjtcbiAgcmV0dXJuIGEgfHwgYyA/ICh0W3AuRklSU1RfTkFNRV0gPSBhLCB0W3AuTEFTVF9OQU1FXSA9IGMpIDogKHRbcC5GSVJTVF9OQU1FXSA9IFwiX09QX1VOS05PV05cIiwgdFtwLkxBU1RfTkFNRV0gPSBcIlwiKSwgRihcIkZpbmFsIGZvcm0gaW5wdXRzOlwiLCB0KSwgdDtcbn0sIEZpID0gKGUpID0+IG5ldyBQcm9taXNlKChuKSA9PiB7XG4gIGNvbnN0IHQgPSAoKSA9PiB7XG4gICAgY29uc3QgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO1xuICAgIHIgPyBuKHIpIDogcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpO1xuICB9O1xuICB0KCk7XG59KSwgeyBsb2dfXzogVSwgZXJyX186IE1pIH0gPSBQKFwic3RyaXBlLXByXCIpLCBEaSA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnVuaW9uKFt6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSwgeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpXSksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgTmkgPSBkZShcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgZm9ybUNhbGxiYWNrczogbiB9KSA9PiB7XG4gICAgVShcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgU3RyaXBlIFBSLi4uXCIpO1xuICAgIGNvbnN0IHQgPSBKKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgRGkpO1xuICAgIFUoXCJJbml0aWFsaXppbmcgU3RyaXBlIFBSIGZsb3cuLi5cIik7XG4gICAgY29uc3QgciA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgcyA9IGF3YWl0IE4ociksIGkgPSBzLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICBVKFwiR2V0dGluZyBpbml0aWFsIHByZXZpZXcgYW1vdW50XCIpO1xuICAgIGNvbnN0IGEgPSBhd2FpdCB3ZShyLCBzLnRva2VuLCBpLCB2b2lkIDApLCBjID0gYXdhaXQgSXIoXG4gICAgICB0Lm1ldGFkYXRhLnN0cmlwZV9wayxcbiAgICAgIGEuYW1vdW50QXRvbSxcbiAgICAgIGEuY3VycmVuY3ksXG4gICAgICBpXG4gICAgKTtcbiAgICBVKFwiQ2hlY2tpbmcgaWYgY2FuIG1ha2UgcGF5bWVudFwiKTtcbiAgICBjb25zdCBsID0gYXdhaXQgYy5jYW5NYWtlUGF5bWVudCgpO1xuICAgIGlmIChsID09PSBudWxsKVxuICAgICAgcmV0dXJuIE1pKFwiY2FuTWFrZVBheW1lbnQgcmV0dXJuZWQgbnVsbFwiKSwgeyBpc0F2YWlsYWJsZTogITEsIHJlYXNvbjogXCJjYW5NYWtlUGF5bWVudCByZXR1cm5lZCBudWxsXCIgfTtcbiAgICBVKFwiU3RyaXBlIFBSIGZsb3cgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LiBDYW4gbWFrZSBwYXltZW50XCIsIGwpO1xuICAgIGNvbnN0IHUgPSAoZCwgXykgPT4gUi5zdHJpcGVQUi5ydW4oe1xuICAgICAgY29udGV4dDogZSxcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogUGUoZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBkKSxcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGVlKGUuZm9ybURpdiksXG4gICAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgICAgY3VzdG9tUGFyYW1zOiB7IHByb3ZpZGVyOiBkLCBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBfID09IG51bGwgPyB2b2lkIDAgOiBfLm92ZXJyaWRlUGF5bWVudFJlcXVlc3QgfSxcbiAgICAgIGluaXRSZXN1bHQ6IHtcbiAgICAgICAgcHJvY2Vzc29yOiBCLkVudW0uc3RyaXBlLFxuICAgICAgICBwcjogYyxcbiAgICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgICBhdmFpbGFibGVQcm92aWRlcnM6IHsgYXBwbGVQYXk6IGwuYXBwbGVQYXksIGdvb2dsZVBheTogbC5nb29nbGVQYXkgfSxcbiAgICAgICAgc3RhcnRGbG93OiB1XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogQi5FbnVtLnN0cmlwZSxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIHByOiBjLFxuICAgICAgYXZhaWxhYmxlUHJvdmlkZXJzOiB7XG4gICAgICAgIGFwcGxlUGF5OiBsLmFwcGxlUGF5LFxuICAgICAgICBnb29nbGVQYXk6IGwuZ29vZ2xlUGF5XG4gICAgICB9LFxuICAgICAgc3RhcnRGbG93OiB1XG4gICAgfTtcbiAgfVxuKSwgTGkgPSByZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiB0LFxuICAgIGZvcm1DYWxsYmFja3M6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBzLFxuICAgIGluaXRSZXN1bHQ6IGlcbiAgfSkgPT4ge1xuICAgIGlmIChVKFwiUnVubmluZyBTdHJpcGUgUFIgZmxvdy4uLlwiKSwgcy5wcm92aWRlciAhPT0gbi5wcm92aWRlcilcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlkZXIgbWlzbWF0Y2guIEV4cGVjdGVkICR7cy5wcm92aWRlcn0sIGdvdCAke24ucHJvdmlkZXJ9YCk7XG4gICAgY29uc3QgYSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgYyA9IGkucHI7XG4gICAgaWYgKHMgIT0gbnVsbCAmJiBzLm92ZXJyaWRlUGF5bWVudFJlcXVlc3QpIHtcbiAgICAgIGNvbnN0IGYgPSBzLm92ZXJyaWRlUGF5bWVudFJlcXVlc3Q7XG4gICAgICBVKFwiT3ZlcnJpZGluZyBQUiBhbW91bnQgd2l0aFwiLCBmKTtcbiAgICAgIGNvbnN0IGggPSB0eXBlb2YgZi5hcHBsZVBheVBheW1lbnRSZXF1ZXN0ID09IFwiZnVuY3Rpb25cIiA/IGYuYXBwbGVQYXlQYXltZW50UmVxdWVzdCh7fSkgOiBmLmFwcGxlUGF5UGF5bWVudFJlcXVlc3Q7XG4gICAgICBVaShjLCBmLmFtb3VudCwgZi5wZW5kaW5nLCBoLCBmLmxhYmVsKTtcbiAgICB9XG4gICAgVShcIlNob3dpbmcgUFIgZGlhbG9nLi4uXCIpLCBjLnNob3coKTtcbiAgICBjb25zdCBsID0gYXdhaXQgUnIoYyk7XG4gICAgVShcIlN0cmlwZSBQTSBhZGRlZCBldmVudDpcIiwgbCksIFUoXCJNZXJnaW5nIFBNIGZpZWxkcyB3aXRoIGZvcm0gZmllbGRzLi4uXCIpO1xuICAgIGNvbnN0IHUgPSBPaSh0LCBsKSwgZCA9IHNlKHUsIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKTtcbiAgICBnKFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgIC4uLmRcbiAgICB9KSwgVShcIlBSIGRpYWxvZyBmaW5pc2hlZC4gU3RhcnRpbmcgcGF5bWVudCBmbG93Li4uXCIsIGQpO1xuICAgIGNvbnN0IF8gPSBhd2FpdCBkcyhhLCB7XG4gICAgICBmaWVsZHM6IGQsXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG5cbiAgICB9KSwgbSA9IGppKF8pO1xuICAgIFUoXCJDb25maXJtaW5nIFBSIHdpdGggU3RyaXBlLi4uXCIpLCBhd2FpdCBUcihtLCBsKTtcbiAgICBjb25zdCB5ID0gYXdhaXQgTihhKTtcbiAgICBpZiAoeS5tb2RlID09PSBcInNldHVwXCIpIHtcbiAgICAgIFUoXCJDb25maXJtaW5nIHBheW1lbnQgZmxvdyBmb3Igc2V0dXAuLi5cIik7XG4gICAgICBjb25zdCBmID0gYXdhaXQgWShhLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogeS50b2tlblxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogVGUoZikgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgVShcIlBlcmZvcm1pbmcgY2hlY2tvdXQuLi5cIik7XG4gICAgICBjb25zdCBmID0ge1xuICAgICAgICBzZWN1cmVfdG9rZW46IHkudG9rZW4sXG4gICAgICAgIHBheW1lbnRfaW5wdXQ6IHtcbiAgICAgICAgICBwcm92aWRlcl90eXBlOiBuLnByb3ZpZGVyXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbWVyX2ZpcnN0X25hbWU6IGRbcC5GSVJTVF9OQU1FXSxcbiAgICAgICAgY3VzdG9tZXJfbGFzdF9uYW1lOiBkW3AuTEFTVF9OQU1FXSxcbiAgICAgICAgY3VzdG9tZXJfZW1haWw6IGRbcC5FTUFJTF0sXG4gICAgICAgIGN1c3RvbWVyX3ppcF9jb2RlOiBkW3AuWklQX0NPREVdLFxuICAgICAgICBjdXN0b21lcl9jb3VudHJ5OiBkW3AuQ09VTlRSWV0sXG4gICAgICAgIHByb21vdGlvbl9jb2RlOiBkW3AuUFJPTU9USU9OX0NPREVdLFxuICAgICAgICBsaW5lX2l0ZW1zOiB5LmxpbmVfaXRlbXMsXG4gICAgICAgIHRvdGFsX2Ftb3VudF9hdG9tOiB5LmFtb3VudF90b3RhbF9hdG9tLFxuICAgICAgICBjYW5jZWxfYXRfZW5kOiAhMSxcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG5cbiAgICAgIH07XG4gICAgICByZXR1cm4geyBtb2RlOiBcImNoZWNrb3V0XCIsIHJlc3VsdDogYXdhaXQgdXQoYSwgZikgfTtcbiAgICB9XG4gIH1cbiksIE9pID0gKGUsIG4pID0+IHtcbiAgdmFyIGQsIF8sIG0sIHk7XG4gIGNvbnN0IHQgPSB7IC4uLmUgfSwgW3IsIC4uLnNdID0gKChfID0gKGQgPSBuLnBheWVyTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IGQudHJpbSgpKSA9PSBudWxsID8gdm9pZCAwIDogXy5zcGxpdCgvXFxzKy8pKSA/PyBbXSwgaSA9IHMuam9pbihcIiBcIikgfHwgdm9pZCAwLCBhID0gKHkgPSAobSA9IG4ucGF5bWVudE1ldGhvZCkgPT0gbnVsbCA/IHZvaWQgMCA6IG0uYmlsbGluZ19kZXRhaWxzKSA9PSBudWxsID8gdm9pZCAwIDogeS5hZGRyZXNzLCBjID0gbi5zaGlwcGluZ0FkZHJlc3M7XG4gIHRbcC5FTUFJTF0gPSB0W3AuRU1BSUxdIHx8IG4ucGF5ZXJFbWFpbCB8fCBcIm9wX3VuZmlsbGVkQGdldG9wZW5wYXkuY29tXCIsIHRbcC5aSVBfQ09ERV0gPSB0W3AuWklQX0NPREVdIHx8IChhID09IG51bGwgPyB2b2lkIDAgOiBhLnBvc3RhbF9jb2RlKSB8fCAoYyA9PSBudWxsID8gdm9pZCAwIDogYy5wb3N0YWxDb2RlKSB8fCBcIjAwMDAwXCIsIHRbcC5DT1VOVFJZXSA9IHRbcC5DT1VOVFJZXSB8fCAoYSA9PSBudWxsID8gdm9pZCAwIDogYS5jb3VudHJ5KSB8fCAoYyA9PSBudWxsID8gdm9pZCAwIDogYy5jb3VudHJ5KSB8fCBcIlVTXCI7XG4gIGNvbnN0IGwgPSB0W3AuRklSU1RfTkFNRV0gfHwgciB8fCBcIlwiLCB1ID0gdFtwLkxBU1RfTkFNRV0gfHwgaSB8fCBcIlwiO1xuICByZXR1cm4gbCB8fCB1ID8gKHRbcC5GSVJTVF9OQU1FXSA9IGwsIHRbcC5MQVNUX05BTUVdID0gdSkgOiAodFtwLkZJUlNUX05BTUVdID0gXCJfT1BfVU5LTk9XTlwiLCB0W3AuTEFTVF9OQU1FXSA9IFwiXCIpLCBVKFwiRmluYWwgZm9ybSBpbnB1dHM6XCIsIHQpLCB0O1xufSwgVWkgPSAoZSwgbiwgdCwgciwgcykgPT4ge1xuICBlLnVwZGF0ZSh7XG4gICAgdG90YWw6IHtcbiAgICAgIGFtb3VudDogbi5hbW91bnRBdG9tLFxuICAgICAgbGFiZWw6IHMgPz8gXCJUb3RhbFwiLFxuICAgICAgcGVuZGluZzogdFxuICAgIH0sXG4gICAgY3VycmVuY3k6IG4uY3VycmVuY3ksXG4gICAgLy8gU3RyaXBlJ3MgYXBwbGVQYXkgb3B0aW9uIG9ubHkgc3VwcG9ydHMgJ3JlY3VycmluZ1BheW1lbnRSZXF1ZXN0JyB8ICdkZWZlcnJlZFBheW1lbnRSZXF1ZXN0JyB8ICdhdXRvbWF0aWNSZWxvYWRQYXltZW50UmVxdWVzdCcgb2YgbmF0aXZlIEFwcGxlUGF5IHBheW1lbnQgcmVxdWVzdFxuICAgIC8vIFdlJ3JlIGFjY2VwdGluZyBuYXRpdmUgUGF5bWVudCBSZXF1ZXN0IGhlcmUgZm9yIG1vcmUgY29tbW9uIHR5cGluZy5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gc3RyaXBlIGRvIG5vdCBleHBlY3QgYWRkaXRpb25hbCBmaWVsZHNcbiAgICBhcHBsZVBheTogclxuICB9KTtcbn0sIGppID0gKGUpID0+IHtcbiAgaWYgKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIG9jY3VycmVkLlxuRGV0YWlsczogZ290ICR7ZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMubGVuZ3RofSByZXF1aXJlZCB1c2VyIGFjdGlvbnNgKTtcbiAgcmV0dXJuIFByLnBhcnNlKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zWzBdKTtcbn0sIFBlID0gKGUsIG4sIHQpID0+IHtcbiAgY29uc3QgciA9IGUuZmlsdGVyKChzKSA9PiB7XG4gICAgY29uc3QgaSA9IHQgPT09IHZvaWQgMCA/ICEwIDogcy5wcm9jZXNzb3JfbmFtZSA9PT0gdCwgYSA9IHMucHJvdmlkZXIgPT09IG47XG4gICAgcmV0dXJuIGkgJiYgYTtcbiAgfSk7XG4gIGlmIChyLmxlbmd0aCA9PT0gMClcbiAgICB0aHJvdyBjb25zb2xlLndhcm4oXCJDUE1zIGxpc3RcIiwgZSksIG5ldyBFcnJvcihgTm8gQ1BNcyBmb3VuZCB3aXRoIHByb3ZpZGVyICcke259JyBhbmQgcHJvY2Vzc29yICcke3R9J2ApO1xuICByZXR1cm4gci5sZW5ndGggIT09IDEgJiYgKGNvbnNvbGUud2FybihcIkNQTXMgbGlzdFwiLCBlKSwgY29uc29sZS53YXJuKGBNb3JlIHRoYW4gb25lIENQTSBmb3VuZCB3aXRoIHByb3ZpZGVyICcke259JyBhbmQgcHJvY2Vzc29yICcke3R9J2ApLCBnKFwibW9yZV90aGFuX29uZV9jcG1fZm91bmRcIiwge1xuICAgIHByb3ZpZGVyOiBuLFxuICAgIHByb2Nlc3NvcjogdCxcbiAgICBjcG1zOiBlXG4gIH0pKSwgclswXTtcbn0sIFIgPSB7XG4gIC8vIOKciyBOb3RlOiBGb3IgZmxvd3MgdGhhdCByZXF1aXJlIGluaXRpYWxpemF0aW9uLCBwbGVhc2UgYWRkIHRoZW0gdG8gYGluaXQtZmxvd3MudHNgXG4gIC8vIENvbW1vblxuICBjb21tb25DQzoge1xuICAgIGluaXQ6IGFzeW5jICgpID0+IHtcbiAgICB9LFxuICAgIHJ1bjogZGlcbiAgfSxcbiAgLy8gU3RyaXBlXG4gIHN0cmlwZVBSOiB7XG4gICAgaW5pdDogTmksXG4gICAgcnVuOiBMaVxuICB9LFxuICBzdHJpcGVMaW5rOiB7XG4gICAgaW5pdDogSWksXG4gICAgcnVuOiBSaVxuICB9LFxuICAvLyBQb2NreXRcbiAgcG9ja3l0UGF5cGFsOiB7XG4gICAgcnVuOiBTaVxuICB9LFxuICAvLyBBaXJ3YWxsZXhcbiAgYWlyd2FsbGV4R29vZ2xlUGF5OiB7XG4gICAgaW5pdDogVnMsXG4gICAgcnVuOiBHc1xuICB9LFxuICBhaXJ3YWxsZXhBcHBsZVBheToge1xuICAgIGluaXQ6IGpzLFxuICAgIHJ1bjogeHNcbiAgfSxcbiAgLy8gTG9vcFxuICBsb29wQ3J5cHRvOiB7XG4gICAgaW5pdDogdmksXG4gICAgcnVuOiBFaVxuICB9LFxuICBhdXRob3JpemVOZXRBcHBsZVBheToge1xuICAgIGluaXQ6IFlzLFxuICAgIHJ1bjogQnNcbiAgfSxcbiAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiB7XG4gICAgaW5pdDogSHMsXG4gICAgcnVuOiBKc1xuICB9XG4gIC8vIPCfkYkgQWRkIG1vcmUgZmxvd3MgaGVyZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxufSwgeyBsb2dfXzogeGksIGVycl9fOiAkaSB9ID0gUChcImluaXQtZmxvd3NcIiksIGNlID0gKGUsIG4pID0+IHtcbiAgY29uc3QgdCA9IG5ldyBTZSgpO1xuICByZXR1cm4ge1xuICAgIHB1Ymxpc2hlcjogdCxcbiAgICBpbml0aWFsaXplOiBhc3luYyAocikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHQuY3VycmVudC5pc1N1Y2Nlc3MpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBmbG93IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQuXCIpO1xuICAgICAgICBjb25zdCBzID0gYXdhaXQgbihyKTtcbiAgICAgICAgeGkoYOKclCAke2V9IGZsb3cgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LiBSZXN1bHQ6YCwgcyksIHQuc2V0KHMpO1xuICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICAkaShg8J2ZrSAke2V9IGZsb3cgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiBFcnJvcjpgLCBWKHMpLCBcIkRldGFpbHM6XCIsIHMpLCB0LnRocm93KHMsIFYocykpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn0sIFZpID0gYXN5bmMgKGUsIG4sIHQpID0+IHtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LnZhbHVlcyhlKS5tYXAoKHIpID0+IHIuaW5pdGlhbGl6ZSh7IGNvbnRleHQ6IG4sIGZvcm1DYWxsYmFja3M6IHQgfSkpKTtcbn0sIEdpID0gKCkgPT4gKHtcbiAgLy8g8J+SoSBBZGQgbmV3IGluaXQgZmxvd3MgaGVyZVxuICAvLyBTdHJpcGUgUFJcbiAgc3RyaXBlUFI6IGNlKFwiU3RyaXBlIFBSXCIsIFIuc3RyaXBlUFIuaW5pdCksXG4gIC8vIFN0cmlwZSBMaW5rXG4gIHN0cmlwZUxpbms6IGNlKFwiU3RyaXBlIExpbmtcIiwgUi5zdHJpcGVMaW5rLmluaXQpLFxuICAvLyBBaXJ3YWxsZXggR29vZ2xlUGF5XG4gIGFpcndhbGxleEdvb2dsZVBheTogY2UoXCJBaXJ3YWxsZXggR29vZ2xlUGF5XCIsIFIuYWlyd2FsbGV4R29vZ2xlUGF5LmluaXQpLFxuICAvLyBBaXJ3YWxsZXggQXBwbGVQYXlcbiAgYWlyd2FsbGV4QXBwbGVQYXk6IGNlKFwiQWlyd2FsbGV4IEFwcGxlUGF5XCIsIFIuYWlyd2FsbGV4QXBwbGVQYXkuaW5pdCksXG4gIC8vIExvb3BcbiAgbG9vcDogY2UoXCJMb29wXCIsIFIubG9vcENyeXB0by5pbml0KSxcbiAgLy8gQXV0aG5ldCBHb29nbGVQYXlcbiAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiBjZShcIkF1dGhuZXQgR29vZ2xlUGF5XCIsIFIuYXV0aG9yaXplTmV0R29vZ2xlUGF5LmluaXQpLFxuICAvLyBBdXRobmV0IEFwcGxlUGF5XG4gIGF1dGhvcml6ZU5ldEFwcGxlUGF5OiBjZShcIkF1dGhuZXQgQXBwbGVQYXlcIiwgUi5hdXRob3JpemVOZXRBcHBsZVBheS5pbml0KVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxufSksIHsgZXJyX186IHppIH0gPSBQKFwiZm9ybS1jYWxsYmFja3NcIiksIEcgPSB6JDEuZnVuY3Rpb24oKS5vcHRpb25hbCgpLCBGdCA9IHokMS5vYmplY3Qoe1xuICBvbkZvY3VzOiBHLFxuICBvbkJsdXI6IEcsXG4gIG9uQ2hhbmdlOiBHLFxuICBvbkxvYWQ6IEcsXG4gIG9uTG9hZEVycm9yOiBHLFxuICBvblZhbGlkYXRpb25FcnJvcjogRyxcbiAgb25DaGVja291dFN0YXJ0ZWQ6IEcsXG4gIG9uQ2hlY2tvdXRTdWNjZXNzOiBHLFxuICBvblNldHVwUGF5bWVudE1ldGhvZFN1Y2Nlc3M6IEcsXG4gIG9uQ2hlY2tvdXRFcnJvcjogRyxcbiAgb25QYXltZW50UmVxdWVzdExvYWQ6IEdcbn0pLCBRID0gY2xhc3MgUSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0Q2FsbGJhY2tzID0gKG4pID0+IHtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IFEuY3JlYXRlRW1wdHlDYWxsYmFja3MoKSwgT2JqZWN0LmVudHJpZXMobikuZm9yRWFjaCgoW3QsIHJdKSA9PiB7XG4gICAgICAgIGNvbnN0IHMgPSBLbih0LCByID8/IFEuTk9PUCwgemkpO1xuICAgICAgICB0aGlzLl9jYWxsYmFja3NbdF0gPSBzO1xuICAgICAgfSk7XG4gICAgfSwgdGhpcy5fY2FsbGJhY2tzID0gUS5jcmVhdGVFbXB0eUNhbGxiYWNrcygpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVhZC1vbmx5IHZlcnNpb24gb2YgdGhlIGNhbGxiYWNrcyBvYmplY3QuXG4gICAqL1xuICBnZXQgZ2V0KCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX2NhbGxiYWNrcyB9O1xuICB9XG59O1xuUS5OT09QID0gKCkgPT4ge1xufSwgUS5jcmVhdGVFbXB0eUNhbGxiYWNrcyA9ICgpID0+IHtcbiAgY29uc3QgbiA9IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMoRnQua2V5b2YoKS5lbnVtKS5mb3JFYWNoKCh0KSA9PiB7XG4gICAgblt0XSA9IFEuTk9PUDtcbiAgfSksIG47XG59LCBRLmZyb21PYmplY3QgPSAobikgPT4ge1xuICBjb25zdCB0ID0gbmV3IFEoKTtcbiAgcmV0dXJuIHQuc2V0Q2FsbGJhY2tzKEZ0LnBhcnNlKG4pKSwgdDtcbn07XG5sZXQgc3QgPSBRO1xuY29uc3QgVW4gPSBcIjAxMjM0NTY3ODlBQkNERUZHSEpLTU5QUVJTVFZXWFlaXCIsIGtlID0gMzIsIHFpID0gMTYsIGpuID0gMTAsIE10ID0gMjgxNDc0OTc2NzEwNjU1O1xudmFyIHVlO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZS5CYXNlMzJJbmNvcnJlY3RFbmNvZGluZyA9IFwiQjMyX0VOQ19JTlZBTElEXCIsIGUuRGVjb2RlVGltZUludmFsaWRDaGFyYWN0ZXIgPSBcIkRFQ19USU1FX0NIQVJcIiwgZS5EZWNvZGVUaW1lVmFsdWVNYWxmb3JtZWQgPSBcIkRFQ19USU1FX01BTEZPUk1FRFwiLCBlLkVuY29kZVRpbWVOZWdhdGl2ZSA9IFwiRU5DX1RJTUVfTkVHXCIsIGUuRW5jb2RlVGltZVNpemVFeGNlZWRlZCA9IFwiRU5DX1RJTUVfU0laRV9FWENFRURcIiwgZS5FbmNvZGVUaW1lVmFsdWVNYWxmb3JtZWQgPSBcIkVOQ19USU1FX01BTEZPUk1FRFwiLCBlLlBSTkdEZXRlY3RGYWlsdXJlID0gXCJQUk5HX0RFVEVDVFwiLCBlLlVMSURJbnZhbGlkID0gXCJVTElEX0lOVkFMSURcIiwgZS5VbmV4cGVjdGVkID0gXCJVTkVYUEVDVEVEXCIsIGUuVVVJREludmFsaWQgPSBcIlVVSURfSU5WQUxJRFwiO1xufSkodWUgfHwgKHVlID0ge30pKTtcbmNsYXNzIENlIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuLCB0KSB7XG4gICAgc3VwZXIoYCR7dH0gKCR7bn0pYCksIHRoaXMubmFtZSA9IFwiVUxJREVycm9yXCIsIHRoaXMuY29kZSA9IG47XG4gIH1cbn1cbmZ1bmN0aW9uIFlpKGUpIHtcbiAgbGV0IG4gPSBNYXRoLmZsb29yKGUoKSAqIGtlKTtcbiAgcmV0dXJuIG4gPT09IGtlICYmIChuID0ga2UgLSAxKSwgVW4uY2hhckF0KG4pO1xufVxuZnVuY3Rpb24gQmkoZSkge1xuICBjb25zdCBuID0gSGkoKSwgdCA9IG4gJiYgKG4uY3J5cHRvIHx8IG4ubXNDcnlwdG8pIHx8IG51bGw7XG4gIGlmICh0eXBlb2YgKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuZ2V0UmFuZG9tVmFsdWVzKSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IHIgPSBuZXcgVWludDhBcnJheSgxKTtcbiAgICAgIHJldHVybiB0LmdldFJhbmRvbVZhbHVlcyhyKSwgclswXSAvIDI1NTtcbiAgICB9O1xuICBpZiAodHlwZW9mICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LnJhbmRvbUJ5dGVzKSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuICgpID0+IHQucmFuZG9tQnl0ZXMoMSkucmVhZFVJbnQ4KCkgLyAyNTU7XG4gIHRocm93IG5ldyBDZSh1ZS5QUk5HRGV0ZWN0RmFpbHVyZSwgXCJGYWlsZWQgdG8gZmluZCBhIHJlbGlhYmxlIFBSTkdcIik7XG59XG5mdW5jdGlvbiBIaSgpIHtcbiAgcmV0dXJuIFppKCkgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyA8IFwidVwiID8gd2luZG93IDogdHlwZW9mIGdsb2JhbCA8IFwidVwiID8gZ2xvYmFsIDogdHlwZW9mIGdsb2JhbFRoaXMgPCBcInVcIiA/IGdsb2JhbFRoaXMgOiBudWxsO1xufVxuZnVuY3Rpb24gSmkoZSwgbikge1xuICBsZXQgdCA9IFwiXCI7XG4gIGZvciAoOyBlID4gMDsgZS0tKVxuICAgIHQgPSBZaShuKSArIHQ7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gS2koZSwgbiA9IGpuKSB7XG4gIGlmIChpc05hTihlKSlcbiAgICB0aHJvdyBuZXcgQ2UodWUuRW5jb2RlVGltZVZhbHVlTWFsZm9ybWVkLCBgVGltZSBtdXN0IGJlIGEgbnVtYmVyOiAke2V9YCk7XG4gIGlmIChlID4gTXQpXG4gICAgdGhyb3cgbmV3IENlKHVlLkVuY29kZVRpbWVTaXplRXhjZWVkZWQsIGBDYW5ub3QgZW5jb2RlIGEgdGltZSBsYXJnZXIgdGhhbiAke010fTogJHtlfWApO1xuICBpZiAoZSA8IDApXG4gICAgdGhyb3cgbmV3IENlKHVlLkVuY29kZVRpbWVOZWdhdGl2ZSwgYFRpbWUgbXVzdCBiZSBwb3NpdGl2ZTogJHtlfWApO1xuICBpZiAoTnVtYmVyLmlzSW50ZWdlcihlKSA9PT0gITEpXG4gICAgdGhyb3cgbmV3IENlKHVlLkVuY29kZVRpbWVWYWx1ZU1hbGZvcm1lZCwgYFRpbWUgbXVzdCBiZSBhbiBpbnRlZ2VyOiAke2V9YCk7XG4gIGxldCB0LCByID0gXCJcIjtcbiAgZm9yIChsZXQgcyA9IG47IHMgPiAwOyBzLS0pXG4gICAgdCA9IGUgJSBrZSwgciA9IFVuLmNoYXJBdCh0KSArIHIsIGUgPSAoZSAtIHQpIC8ga2U7XG4gIHJldHVybiByO1xufVxuZnVuY3Rpb24gWmkoKSB7XG4gIHJldHVybiB0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUgPCBcInVcIiAmJiBzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGU7XG59XG5mdW5jdGlvbiBXaShlLCBuKSB7XG4gIGNvbnN0IHQgPSBCaSgpLCByID0gRGF0ZS5ub3coKTtcbiAgcmV0dXJuIEtpKHIsIGpuKSArIEppKHFpLCB0KTtcbn1cbmNvbnN0IHhuID0gXCJvcF9hbmFseXRpY3NfZGV2aWNlX3Rva2VuXCIsIFFpID0gKCkgPT4ge1xuICBjb25zdCBlID0gZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKS5maW5kKCh0KSA9PiB0LmluY2x1ZGVzKHhuKSk7XG4gIGlmIChlKVxuICAgIHJldHVybiBlLnNwbGl0KFwiPVwiKVsxXTtcbiAgY29uc3QgbiA9IFdpKCk7XG4gIHJldHVybiBYaShuKSwgbjtcbn0sIFhpID0gKGUpID0+IHtcbiAgY29uc3QgbiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICBuLnNldEZ1bGxZZWFyKG4uZ2V0RnVsbFllYXIoKSArIDEpLCBkb2N1bWVudC5jb29raWUgPSBgJHt4bn09JHtlfTsgcGF0aD0vOyBleHBpcmVzPSR7bi50b1VUQ1N0cmluZygpfWA7XG59O1xuZnVuY3Rpb24gZWEoKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgZSA9IEEoKTtcbiAgICBpZiAoZSAhPSBudWxsICYmIGUubmV4dCB8fCBlICE9IG51bGwgJiYgZS5fX05FWFRfREFUQV9fIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjX19uZXh0XCIpKVxuICAgICAgcmV0dXJuIFwibmV4dGpzXCI7XG4gICAgY29uc3QgbiA9IEEoKTtcbiAgICBpZiAobiAhPSBudWxsICYmIG4uX19OVVhUX18gfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNfX251eHRcIikpXG4gICAgICByZXR1cm4gXCJudXh0XCI7XG4gICAgaWYgKE9iamVjdC5rZXlzKGRvY3VtZW50KS5maW5kKChyKSA9PiByLmluY2x1ZGVzKFwicmVhY3RcIikpIHx8IEFycmF5LmZyb20oZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKFwiYm9keSA+ICpcIikpLmZpbmQoKHIpID0+IHIuX3JlYWN0Um9vdENvbnRhaW5lcikpXG4gICAgICByZXR1cm4gXCJyZWFjdFwiO1xuICAgIGNvbnN0IHQgPSBBKCk7XG4gICAgcmV0dXJuIHQgIT0gbnVsbCAmJiB0LlZ1ZSB8fCB0ICE9IG51bGwgJiYgdC5fX1ZVRV9fID8gXCJ2dWVcIiA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbbmctdmVyc2lvbl1cIikgPyBcImFuZ3VsYXJcIiA6IFwidmFuaWxsYVwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gIH1cbn1cbmZ1bmN0aW9uIHRhKGUpIHtcbiAgdmFyIG4sIHQsIHI7XG4gIHRyeSB7XG4gICAgc3dpdGNoIChlKSB7XG4gICAgICBjYXNlIFwicmVhY3RcIjpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlIFwibmV4dGpzXCI6IHtcbiAgICAgICAgY29uc3QgcyA9IEEoKTtcbiAgICAgICAgcmV0dXJuICgobiA9IHMgPT0gbnVsbCA/IHZvaWQgMCA6IHMubmV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IG4udmVyc2lvbikgfHwgKCh0ID0gcyA9PSBudWxsID8gdm9pZCAwIDogcy5fX05FWFRfREFUQV9fKSA9PSBudWxsID8gdm9pZCAwIDogdC5idWlsZElkKSB8fCBudWxsO1xuICAgICAgfVxuICAgICAgY2FzZSBcIm51eHRcIjpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlIFwidnVlXCI6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgY2FzZSBcImFuZ3VsYXJcIjoge1xuICAgICAgICBjb25zdCBzID0gKHIgPSBBKCkpID09IG51bGwgPyB2b2lkIDAgOiByLmRvY3VtZW50LCBpID0gcyA9PSBudWxsID8gdm9pZCAwIDogcy5xdWVyeVNlbGVjdG9yKFwiW25nLXZlcnNpb25dXCIpO1xuICAgICAgICByZXR1cm4gaSA/IGkuZ2V0QXR0cmlidXRlKFwibmctdmVyc2lvblwiKSA6IG51bGw7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5mdW5jdGlvbiBuYSgpIHtcbiAgY29uc3QgZSA9IGVhKCksIG4gPSB0YShlKTtcbiAgcmV0dXJuIHsgZnJhbWV3b3JrOiBlLCB2ZXJzaW9uOiBuIH07XG59XG5jbGFzcyByYSB7XG4gIGNvbnN0cnVjdG9yKG4sIHQsIHIsIHMpIHtcbiAgICB0aGlzLmhhbmRsZU1lc3NhZ2UgPSAoaSkgPT4ge1xuICAgICAgaWYgKCFpLnNvdXJjZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJbT0pTXSBObyBzb3VyY2UgZm91bmRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChEdChpLm9yaWdpbikgIT09IER0KHRoaXMuYmFzZVVybCkgfHwgdHlwZW9mIGkuZGF0YSA9PSBcIm9iamVjdFwiICYmIGkuZGF0YS5wZW5wYWwgfHwgdHlwZW9mIGkuZGF0YSA9PSBcIm9iamVjdFwiICYmIGkuZGF0YS5zb3VyY2UgJiYgaS5kYXRhLnNvdXJjZSA9PT0gXCJyZWFjdC1kZXZ0b29scy1icmlkZ2VcIilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IGEgPSBudWxsO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYSA9IERyKEpTT04ucGFyc2UoaS5kYXRhKSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlRXZlbnQoYSkpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgZWxlbWVudElkOiBsLCBwYXlsb2FkOiB1IH0gPSBhLCBkID0gdS50eXBlO1xuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgIGNhc2UgXCJMQVlPVVRcIjpcbiAgICAgICAgICB0aGlzLmludGVybmFsQ2FsbGJhY2tzLnNldEZvcm1IZWlnaHQodS5oZWlnaHQgPyBgJHt1LmhlaWdodH1weGAgOiBcIjEwMCVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJGT0NVU1wiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25Gb2N1cyhsLCB1LmVsZW1lbnRUeXBlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkJMVVJcIjpcbiAgICAgICAgICB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQmx1cihsLCB1LmVsZW1lbnRUeXBlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkNIQU5HRVwiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25DaGFuZ2UobCwgdS5lbGVtZW50VHlwZSwgdS5lcnJvcnMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTE9BREVEXCI6XG4gICAgICAgICAgdGhpcy5ldmVudFRhcmdldHNbbF0gPSBpLnNvdXJjZSwgdGhpcy5pbnRlcm5hbENhbGxiYWNrcy5vbkNkZUxvYWRlZCh1KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkxPQURfRVJST1JcIjpcbiAgICAgICAgICB0aGlzLmludGVybmFsQ2FsbGJhY2tzLm9uQ2RlTG9hZEVycm9yKHUubWVzc2FnZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJWQUxJREFUSU9OX0VSUk9SXCI6XG4gICAgICAgICAgdGhpcy5mb3JtQ2FsbGJhY2tzLmdldC5vblZhbGlkYXRpb25FcnJvcih1LmVsZW1lbnRUeXBlLCB1LmVycm9ycywgbCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW2Zvcm1dIFVuaGFuZGxlZCBldmVudCB0eXBlOlwiLCBkKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLnZhbGlkYXRlRXZlbnQgPSAoaSkgPT4gaS5mb3JtSWQgIT09IHRoaXMuZm9ybUlkIHx8ICFpLmVsZW1lbnRJZCA/IChjb25zb2xlLmxvZyhcIltPSlNdIGZvcm1JZFwiLCB0aGlzLmZvcm1JZCwgaS5mb3JtSWQpLCBjb25zb2xlLndhcm4oXCJbZm9ybV0gSWdub3JpbmcgdW5rbm93biBldmVudDpcIiwgaSksICExKSA6IHRoaXMubm9uY2VzLmhhcyhpLm5vbmNlKSA/IChjb25zb2xlLndhcm4oXCJbZm9ybV0gSWdub3JpbmcgZHVwbGljYXRlIGV2ZW50OlwiLCBpKSwgITEpIDogKHRoaXMubm9uY2VzLmFkZChpLm5vbmNlKSwgITApLCB0aGlzLmV2ZW50VGFyZ2V0cyA9IHt9LCB0aGlzLm5vbmNlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksIHRoaXMuZm9ybUlkID0gbiwgdGhpcy5iYXNlVXJsID0gdCwgdGhpcy5mb3JtQ2FsbGJhY2tzID0gciwgdGhpcy5pbnRlcm5hbENhbGxiYWNrcyA9IHM7XG4gIH1cbn1cbmNvbnN0IER0ID0gKGUpID0+IG5ldyBVUkwoZSkub3JpZ2luO1xuYXN5bmMgZnVuY3Rpb24gb2EoZSwgbikge1xuICBjb25zdCByID0gYXdhaXQgY29ubmVjdFRvQ2hpbGQoe1xuICAgIGlmcmFtZTogZSxcbiAgICBkZWJ1ZzogITEsXG4gICAgY2hpbGRPcmlnaW46IG5cbiAgfSkucHJvbWlzZSwgcyA9IGF3YWl0IE5yKHIpO1xuICBpZiAoIUxyKHIsIHMpKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkdvdCBpbnZhbGlkIENERSBjb25uZWN0aW9uIG9iamVjdFwiKTtcbiAgcmV0dXJuIHI7XG59XG5jbGFzcyBzYSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICB9XG4gIGFkZENvbm5lY3Rpb24obiwgdCkge1xuICAgIHRoaXMuY29ubmVjdGlvbnMuc2V0KG4sIHQpO1xuICB9XG4gIGdldENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3QgbiA9IHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgIGlmICghbilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbm5lY3Rpb24gbm90IGZvdW5kXCIpO1xuICAgIHJldHVybiBuO1xuICB9XG4gIGdldEFsbENvbm5lY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zO1xuICB9XG59XG5jb25zdCBpYSA9IChlLCBuLCB0KSA9PiB7XG4gIGNvbnN0IHsgc3RyaXBlUFI6IHIgfSA9IGU7XG4gIHIucHVibGlzaGVyLnN1YnNjcmliZSgocykgPT4ge1xuICAgIGlmIChzLmlzU3VjY2Vzcykge1xuICAgICAgY29uc3QgaSA9IHMubG9hZGVkVmFsdWUsIGEgPSBpLmlzQXZhaWxhYmxlICYmIGkuYXZhaWxhYmxlUHJvdmlkZXJzLmFwcGxlUGF5LCBjID0gaS5pc0F2YWlsYWJsZSAmJiBpLmF2YWlsYWJsZVByb3ZpZGVycy5nb29nbGVQYXksIGwgPSB7XG4gICAgICAgIGFwcGxlX3BheToge1xuICAgICAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICAgICAgaXNBdmFpbGFibGU6IGEsXG4gICAgICAgICAgc3RhcnRGbG93OiBhc3luYyAodSkgPT4ge1xuICAgICAgICAgICAgYSAmJiBOdChcImFwcGxlX3BheVwiLCBpLCBuLCB0LCB1KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdvb2dsZV9wYXk6IHtcbiAgICAgICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgICAgIGlzQXZhaWxhYmxlOiBjLFxuICAgICAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKHUpID0+IHtcbiAgICAgICAgICAgIGMgJiYgTnQoXCJnb29nbGVfcGF5XCIsIGksIG4sIHQsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHQuZ2V0Lm9uUGF5bWVudFJlcXVlc3RMb2FkKGwpO1xuICAgIH1cbiAgfSk7XG59LCBOdCA9IChlLCBuLCB0LCByLCBzKSA9PiBSLnN0cmlwZVBSLnJ1bih7XG4gIGNvbnRleHQ6IHQsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogUGUodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBlKSxcbiAgbm9uQ2RlRm9ybUlucHV0czogZWUodC5mb3JtRGl2KSxcbiAgZm9ybUNhbGxiYWNrczogcixcbiAgY3VzdG9tUGFyYW1zOiB7IHByb3ZpZGVyOiBlLCBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzID09IG51bGwgPyB2b2lkIDAgOiBzLm92ZXJyaWRlUGF5bWVudFJlcXVlc3QgfSxcbiAgaW5pdFJlc3VsdDogblxufSksIEx0ID0gXCJUaGUgc2VjdXJlIGZvcm0gZmFpbGVkIHRvIGxvYWQgcHJvcGVybHkuIFBsZWFzZSBjaGVjayB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24sIG9yIHRyeSBhZ2FpbiBsYXRlci5cIiwgeyBsb2dfXzogWiwgZXJyX186IHogfSA9IFAoXCJvcC1mb3JtXCIpLCBYID0gY2xhc3MgWCB7XG4gIGNvbnN0cnVjdG9yKG4pIHtcbiAgICB2YXIgcztcbiAgICB0aGlzLmlzRGVzdHJveWVkID0gITEsIHRoaXMuY2RlTG9hZEV2ZW50ID0gbmV3IFNlKCksIHRoaXMuYW55Q2RlQ29ubiA9IG5ldyBTZSgpLCB0aGlzLmNvbnRleHQgPSBuZXcgU2UoKSwgdGhpcy5pbml0Rmxvd3MgPSBHaSgpLCB0aGlzLnN0YXJ0Rm9ybUluaXQgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpID0gdGhpcy5jcmVhdGVFbGVtZW50KFcuQ0RFX0JSSURHRSk7XG4gICAgICAgIGkubm9kZS5pZCA9IFwiX19vcF9pbnRlcm5hbF9jZGVfYnJpZGdlXCIsIGkubm9kZS5hcmlhSGlkZGVuID0gXCJ0cnVlXCIsIE9iamVjdC5hc3NpZ24oaS5ub2RlLnN0eWxlLCB7XG4gICAgICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgICAgICBtYXJnaW46IFwiMHB4XCIsXG4gICAgICAgICAgcGFkZGluZzogXCIwcHhcIixcbiAgICAgICAgICB3aWR0aDogXCIxcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiMXB4XCIsXG4gICAgICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgdmlzaWJpbGl0eTogXCJoaWRkZW5cIixcbiAgICAgICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgICAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiLFxuICAgICAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiXG4gICAgICAgIH0pLCBpLm1vdW50KFwiYm9keVwiKSwgWihcIkNERSBicmlkZ2UgZWxlbWVudCBtb3VudGVkXCIpLCBaKFwiSW5pdGlhbGl6aW5nIE9wZW5QYXkgZm9ybTpcIiksIFooXCLilJwgV2FpdGluZyBmb3IgQ0RFIGxvYWQgZXZlbnQuLi5cIik7XG4gICAgICAgIGNvbnN0IGEgPSBhd2FpdCB0aGlzLmNkZUxvYWRFdmVudC53YWl0Rm9yTG9hZCh7XG4gICAgICAgICAgdGltZW91dFNlYzogMTIwLFxuICAgICAgICAgIHRpbWVvdXRFcnJNc2c6IEx0XG4gICAgICAgIH0pO1xuICAgICAgICBaKFwi4pScIENERSBsb2FkIGV2ZW50IHJlY2VpdmVkXCIpLCBaKFwi4pScIFdhaXRpbmcgZm9yIENERSBjb25uZWN0aW9uLi4uXCIpO1xuICAgICAgICBjb25zdCBjID0gYXdhaXQgdGhpcy5hbnlDZGVDb25uLndhaXRGb3JMb2FkKHtcbiAgICAgICAgICB0aW1lb3V0U2VjOiAxMjAsXG4gICAgICAgICAgdGltZW91dEVyck1zZzogTHRcbiAgICAgICAgfSk7XG4gICAgICAgIFooXCLilJwgQ0RFIGNvbm5lY3Rpb24gcmVjZWl2ZWRcIiksIGF3YWl0IGdzKGMsIHRoaXMuZGV2aWNlVG9rZW4pLCBaKFwi4pScIENyZWF0aW5nIE9KUyBjb250ZXh0LCBzZXR0aW5nIHVwIGhhbmRsZXJzLi4uXCIpO1xuICAgICAgICBjb25zdCBsID0gWC5idWlsZE9qc0Zsb3dDb250ZXh0KFxuICAgICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICAgIGEsXG4gICAgICAgICAgYyxcbiAgICAgICAgICB0aGlzLmdldEZvcm1EaXYoKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvbnRleHQuc2V0KGwpLCBpYSh0aGlzLmluaXRGbG93cywgbCwgdGhpcy5mb3JtQ2FsbGJhY2tzKSwgWihcIuKUnCBTdGFydGluZyBPSlMgaW5pdCBmbG93cy4uLlwiKSwgYXdhaXQgVmkodGhpcy5pbml0Rmxvd3MsIGwsIHRoaXMuZm9ybUNhbGxiYWNrcyksIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25Mb2FkKGEudG90YWxBbW91bnRBdG9tcywgYS5jdXJyZW5jeSksIFooXCLilbAgRG9uZSBpbml0aWFsaXppbmcgT0pTIGZsb3dzLlwiKSwgZyhcImZvcm1fbG9hZGVkXCIpO1xuICAgICAgfSBjYXRjaCAoaSkge1xuICAgICAgICBjb25zdCBhID0gVihpKTtcbiAgICAgICAgeihcIuKVsCBFcnJvciBpbml0aWFsaXppbmcgT1AgZm9ybTpcIiwgYSksIGcoXCJmb3JtX2luaXRfZXJyb3JcIiwge1xuICAgICAgICAgIGVycm9yOiBhXG4gICAgICAgIH0pLCB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uTG9hZEVycm9yKGEpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuc2V0Rm9ybUhlaWdodCA9IChpKSA9PiB7XG4gICAgICB0aGlzLmZvcm1Qcm9wZXJ0aWVzLmhlaWdodCA9IGksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzICYmIE9iamVjdC52YWx1ZXModGhpcy5yZWdpc3RlcmVkRWxlbWVudHMpLmZvckVhY2goKGEpID0+IHtcbiAgICAgICAgIWEgfHwgYS50eXBlID09PSBXLkNERV9CUklER0UgfHwgKGEubm9kZS5zdHlsZS5oZWlnaHQgPSBpKTtcbiAgICAgIH0pO1xuICAgIH0sIHRoaXMub25DZGVMb2FkZWQgPSAoaSkgPT4ge1xuICAgICAgdGhpcy5jZGVMb2FkRXZlbnQuY3VycmVudC5pc1N1Y2Nlc3MgfHwgKHRoaXMuY2RlTG9hZEV2ZW50LnNldChpKSwgZyhcImNkZV9sb2FkZWRcIikpO1xuICAgIH0sIHRoaXMub25DZGVMb2FkRXJyb3IgPSAoaSkgPT4ge1xuICAgICAgdGhpcy5jZGVMb2FkRXZlbnQuY3VycmVudC5pc1N1Y2Nlc3MgfHwgKHRoaXMuY2RlTG9hZEV2ZW50LnRocm93KG5ldyBFcnJvcihpKSwgaSksIGcoXCJjZGVfbG9hZF9lcnJvclwiLCB7XG4gICAgICAgIGVycm9yOiBpXG4gICAgICB9KSk7XG4gICAgfSwgdGhpcy5jcmVhdGVFbGVtZW50ID0gKGksIGEgPSB7fSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzVmFsaWRGb3JtSW5zdGFuY2UoXCJjcmVhdGVFbGVtZW50XCIpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGb3JtIGluc3RhbmNlIGlzIGludmFsaWQgb3IgaGFzIGJlZW4gZGVzdHJveWVkXCIpO1xuICAgICAgaWYgKCF0aGlzLmNvbmZpZykgdGhyb3cgbmV3IEVycm9yKFwiT3BlblBheSBmb3JtIG5vdCBpbml0aWFsaXplZFwiKTtcbiAgICAgIGNvbnN0IGMgPSBabi5wYXJzZShpKSwgbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIiksIHUgPSB0aGlzLmJ1aWxkUXVlcnlTdHJpbmcoYSk7XG4gICAgICBsLm5hbWUgPSBgJHtjfS1lbGVtZW50YDtcbiAgICAgIGNvbnN0IGQgPSBuZXcgVVJMKGAvYXBwL3YxLyR7bC5uYW1lfS9gLCB0aGlzLmNvbmZpZy5iYXNlVXJsKTtcbiAgICAgIHJldHVybiBkLnNlYXJjaCA9IHUudG9TdHJpbmcoKSwgbC5zcmMgPSBkLmhyZWYsIGwuc3R5bGUuYm9yZGVyID0gXCJub25lXCIsIGwuc3R5bGUud2lkdGggPSBcIjEwMCVcIiwgdGhpcy5yZWdpc3RlcklmcmFtZShjLCBsKTtcbiAgICB9LCB0aGlzLnJlZ2lzdGVySWZyYW1lID0gKGksIGEpID0+IHtcbiAgICAgIGNvbnN0IGMgPSB7XG4gICAgICAgIHR5cGU6IGksXG4gICAgICAgIG5vZGU6IGEsXG4gICAgICAgIG1vdW50OiAobCkgPT4ge1xuICAgICAgICAgIHZhciB1O1xuICAgICAgICAgICh1ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihsKSkgPT0gbnVsbCB8fCB1LmFwcGVuZENoaWxkKGEpLCBnKFwiZWxlbWVudF9tb3VudGVkXCIsIHtcbiAgICAgICAgICAgIGVsZW1lbnRfdHlwZTogaVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdFRvRWxlbWVudCh7IHR5cGU6IGMudHlwZSwgbm9kZTogYy5ub2RlIH0pLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyB8fCAodGhpcy5yZWdpc3RlcmVkRWxlbWVudHMgPSB7XG4gICAgICAgIFtXLkNBUkRdOiB2b2lkIDAsXG4gICAgICAgIFtXLkNBUkRfTlVNQkVSXTogdm9pZCAwLFxuICAgICAgICBbVy5DQVJEX0VYUElSWV06IHZvaWQgMCxcbiAgICAgICAgW1cuQ0FSRF9DVkNdOiB2b2lkIDAsXG4gICAgICAgIFtXLkNERV9CUklER0VdOiB2b2lkIDBcbiAgICAgIH0pLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50c1tpXSA9IGMsIGM7XG4gICAgfSwgdGhpcy5idWlsZFF1ZXJ5U3RyaW5nID0gKGkpID0+IHtcbiAgICAgIGNvbnN0IGEgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICByZXR1cm4gYS5hcHBlbmQoXCJyZWZlcmVyXCIsIHRoaXMucmVmZXJyZXIpLCBhLmFwcGVuZChcImZvcm1JZFwiLCB0aGlzLmZvcm1JZCksIGkuc3R5bGVzICYmIGEuYXBwZW5kKFwic3R5bGVzXCIsIE1yKGkuc3R5bGVzKSksIGEuYXBwZW5kKFwic2VjdXJlVG9rZW5cIiwgdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbiksIGE7XG4gICAgfSwgdGhpcy5jb25uZWN0VG9FbGVtZW50ID0gKGkpID0+IHtcbiAgICAgIG9hKGkubm9kZSkudGhlbigoYSkgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25NYW5hZ2VyLmFkZENvbm5lY3Rpb24oaS50eXBlLCBhKSwgIXRoaXMuYW55Q2RlQ29ubi5jdXJyZW50LmlzU3VjY2VzcyAmJiBpLnR5cGUgPT09IFcuQ0RFX0JSSURHRSAmJiB0aGlzLmFueUNkZUNvbm4uc2V0KGEpO1xuICAgICAgfSkuY2F0Y2goKGEpID0+IHooXCJbRk9STV0gRXJyb3IgY29ubmVjdGluZyB0byBDREUgaWZyYW1lXCIsIGEpKTtcbiAgICB9LCB0aGlzLmdldEZvcm1EaXYgPSAoKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZm9ybVRhcmdldCkgPz8gZG9jdW1lbnQuYm9keSwgdGhpcy5zdWJtaXRDYXJkID0gKGkpID0+IHtcbiAgICAgIGlmIChnKFwic3VibWl0X2NhcmRcIiwgeyAuLi5pIH0pLCAhdGhpcy5pc1ZhbGlkRm9ybUluc3RhbmNlKFwic3VibWl0Q2FyZFwiKSkge1xuICAgICAgICBnKFwib3V0ZGF0ZWRfZm9ybV9pbnN0YW5jZVwiLCB7XG4gICAgICAgICAgY2FsbGVyOiBcInN1Ym1pdENhcmRcIlxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgYSA9IHRoaXMuY29udGV4dC5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICAgIGlmICghYSkge1xuICAgICAgICB6KFwiUGxlYXNlIHdhaXQgZm9yIHRoZSBmb3JtIHRvIGZpbmlzaCBsb2FkaW5nIGJlZm9yZSBzdWJtaXR0aW5nLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgUi5jb21tb25DQy5ydW4oe1xuICAgICAgICBjb250ZXh0OiBhLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IFBlKGEuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgXCJjcmVkaXRfY2FyZFwiKSxcbiAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogZWUoYS5mb3JtRGl2KSxcbiAgICAgICAgZm9ybUNhbGxiYWNrczogdGhpcy5mb3JtQ2FsbGJhY2tzLFxuICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICBjdXJyZW50Q2RlQ29ubmVjdGlvbnM6IHRoaXMuY29ubmVjdGlvbk1hbmFnZXIuZ2V0QWxsQ29ubmVjdGlvbnMoKSxcbiAgICAgICAgICBwYXltZW50Um91dGVJZDogaSA9PSBudWxsID8gdm9pZCAwIDogaS5wYXltZW50Um91dGVJZFxuICAgICAgICB9LFxuICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDBcbiAgICAgICAgLy8gVGhpcyBmbG93IHJlcXVpcmVzIG5vIGluaXRpYWxpemF0aW9uXG4gICAgICB9KTtcbiAgICB9LCB0aGlzLmdldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzID0gKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzVmFsaWRGb3JtSW5zdGFuY2UoXCJnZXRBdmFpbGFibGVQYXltZW50TWV0aG9kc1wiKSlcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgaWYgKCF0aGlzLmNvbnRleHQuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCkpIHtcbiAgICAgICAgeihcIlBsZWFzZSB3YWl0IGZvciB0aGUgZm9ybSB0byBmaW5pc2ggbG9hZGluZyBiZWZvcmUgZ2V0dGluZyBhdmFpbGFibGUgcGF5bWVudCBtZXRob2RzLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgYSA9IHtcbiAgICAgICAgYWlyd2FsbGV4R29vZ2xlUGF5OiAkLmFpcndhbGxleEdvb2dsZVBheSxcbiAgICAgICAgYWlyd2FsbGV4QXBwbGVQYXk6ICQuYWlyd2FsbGV4QXBwbGVQYXksXG4gICAgICAgIGF1dGhvcml6ZU5ldEdvb2dsZVBheTogJC5hdXRob3JpemVuZXRHb29nbGVQYXksXG4gICAgICAgIGF1dGhvcml6ZU5ldEFwcGxlUGF5OiAkLmF1dGhvcml6ZW5ldEFwcGxlUGF5XG4gICAgICB9LCBjID0gT2JqZWN0LmVudHJpZXModGhpcy5pbml0Rmxvd3MpLm1hcCgoW2wsIHVdKSA9PiAoe1xuICAgICAgICBuYW1lOiBhW2xdID8/IGwsXG4gICAgICAgIC4uLnUucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gZyhcImdldF9hdmFpbGFibGVfcGF5bWVudF9tZXRob2RzXCIsIHtcbiAgICAgICAgYXZhaWxhYmxlX3BheW1lbnRfbWV0aG9kczogY1xuICAgICAgfSksIGM7XG4gICAgfSwgdGhpcy5nZW5lcmFsU3VibWl0ID0gKGksIGEpID0+IHtcbiAgICAgIGlmIChnKFwiZ2VuZXJhbF9mb3JtX3N1Ym1pdFwiLCB7XG4gICAgICAgIG1ldGhvZDogaSxcbiAgICAgICAgc2V0dGluZ3M6IGFcbiAgICAgIH0pLCAhdGhpcy5pc1ZhbGlkRm9ybUluc3RhbmNlKFwiZ2VuZXJhbFN1Ym1pdFwiKSkge1xuICAgICAgICBnKFwib3V0ZGF0ZWRfZm9ybV9pbnN0YW5jZVwiLCB7XG4gICAgICAgICAgY2FsbGVyOiBcImdlbmVyYWxTdWJtaXRcIlxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgYyA9IHRoaXMuY29udGV4dC5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICAgIGlmICghYykge1xuICAgICAgICB6KFwiUGxlYXNlIHdhaXQgZm9yIHRoZSBmb3JtIHRvIGZpbmlzaCBsb2FkaW5nIGJlZm9yZSBzdWJtaXR0aW5nLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgIGNhc2UgJC5wb2NreXRQYXlwYWw6XG4gICAgICAgICAgcmV0dXJuIFIucG9ja3l0UGF5cGFsLnJ1bih7XG4gICAgICAgICAgICBjb250ZXh0OiBjLFxuICAgICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBQZShjLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIFwicGF5cGFsXCIsIFwicG9ja3l0XCIpLFxuICAgICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogZWUoYy5mb3JtRGl2KSxcbiAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgICAgIGN1c3RvbVBhcmFtczogeyBzZXR0aW5nczogYSB9LFxuICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgJC5haXJ3YWxsZXhHb29nbGVQYXk6IHtcbiAgICAgICAgICBjb25zdCBsID0gdGhpcy5pbml0Rmxvd3MuYWlyd2FsbGV4R29vZ2xlUGF5LnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICAgICAgICBpZiAoIWwpIHtcbiAgICAgICAgICAgIHooXG4gICAgICAgICAgICAgIFwiYWlyd2FsbGV4LWdvb2dsZS1wYXkgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgdXNpbmcgJ2dldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzKCknXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBsLnN0YXJ0RmxvdyhhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuYWlyd2FsbGV4QXBwbGVQYXk6IHtcbiAgICAgICAgICBjb25zdCBsID0gdGhpcy5pbml0Rmxvd3MuYWlyd2FsbGV4QXBwbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgIGlmICghbCkge1xuICAgICAgICAgICAgeihcbiAgICAgICAgICAgICAgXCJhaXJ3YWxsZXgtYXBwbGUtcGF5IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IHVzaW5nICdnZXRBdmFpbGFibGVQYXltZW50TWV0aG9kcygpJ1wiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbC5zdGFydEZsb3coYSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLmF1dGhvcml6ZW5ldEdvb2dsZVBheToge1xuICAgICAgICAgIGNvbnN0IGwgPSB0aGlzLmluaXRGbG93cy5hdXRob3JpemVOZXRHb29nbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgIGlmICghbCkge1xuICAgICAgICAgICAgeihcbiAgICAgICAgICAgICAgXCJhdXRob3JpemUtbmV0LWdvb2dsZS1wYXkgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgdXNpbmcgJ2dldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzKCknXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBsLnN0YXJ0RmxvdyhhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuYXV0aG9yaXplbmV0QXBwbGVQYXk6IHtcbiAgICAgICAgICBjb25zdCBsID0gdGhpcy5pbml0Rmxvd3MuYXV0aG9yaXplTmV0QXBwbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgIGlmICghbCkge1xuICAgICAgICAgICAgeihcbiAgICAgICAgICAgICAgXCJhdXRob3JpemUtbmV0LWFwcGxlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGwuc3RhcnRGbG93KGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5sb29wQ3J5cHRvOlxuICAgICAgICAgIHJldHVybiBSLmxvb3BDcnlwdG8ucnVuKHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGMsXG4gICAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IFBlKGMuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgXCJjcnlwdG9cIiwgXCJsb29wXCIpLFxuICAgICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogZWUoYy5mb3JtRGl2KSxcbiAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgICAgIGN1c3RvbVBhcmFtczogYSxcbiAgICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIFllKGkpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuc3VibWl0ID0gdGhpcy5zdWJtaXRDYXJkLCB0aGlzLmRlc3Ryb3kgPSAoKSA9PiB7XG4gICAgICB2YXIgaTtcbiAgICAgIGlmIChaKFwiRGVzdHJveWluZyBPcGVuUGF5IGZvcm0uLi5cIiksICEhdGhpcy5pc1ZhbGlkRm9ybUluc3RhbmNlKFwiZGVzdHJveVwiKSkge1xuICAgICAgICB0aGlzLmlzRGVzdHJveWVkID0gITA7XG4gICAgICAgIGZvciAoY29uc3QgYSBvZiBPYmplY3QudmFsdWVzKHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzID8/IHt9KSlcbiAgICAgICAgICBhICYmIGEubm9kZS5yZW1vdmUoKTtcbiAgICAgICAgKGkgPSBBKCkpID09IG51bGwgfHwgaS5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmV2ZW50SGFuZGxlci5oYW5kbGVNZXNzYWdlLmJpbmQodGhpcy5ldmVudEhhbmRsZXIpKSwgaXMoKSwgdGhpcy5yZWdpc3RlcmVkRWxlbWVudHMgPSBudWxsLCBkZWxldGUgd2luZG93Lm9qcywgZyhcImZvcm1fZGVzdHJveWVkXCIpO1xuICAgICAgfVxuICAgIH0sIHRoaXMudXBkYXRlQ2FsbGJhY2tzID0gKGkpID0+IHtcbiAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5zZXRDYWxsYmFja3MoaSk7XG4gICAgfSwgWC5hc3NpZ25Bc1NpbmdsZXRvbih0aGlzKSwgdGhpcy5vanNWZXJzaW9uID0gXCIwLjIuMzVcIiwgdGhpcy5vanNSZWxlYXNlVmVyc2lvbiA9IFwibG9jYWxfYnVpbGRcIiwgdGhpcy5iYXNlVXJsID0gbi5iYXNlVXJsID8/IFwiaHR0cHM6Ly9jZGUuZ2V0b3BlbnBheS5jb21cIiwgdGhpcy5jb25maWcgPSB7IC4uLm4sIGJhc2VVcmw6IHRoaXMuYmFzZVVybCB9LCB0aGlzLmZvcm1DYWxsYmFja3MgPSBzdC5mcm9tT2JqZWN0KG4pLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyA9IG51bGwsIHRoaXMuZm9ybUlkID0gYG9wanMtZm9ybS0ke3Y0KCl9YCwgdGhpcy5yZWZlcnJlciA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sIHRoaXMuZm9ybVRhcmdldCA9IG4uZm9ybVRhcmdldCA/PyBcImJvZHlcIiwgdGhpcy5mb3JtUHJvcGVydGllcyA9IHsgaGVpZ2h0OiBcIjFweFwiIH0sIHRoaXMuY29ubmVjdGlvbk1hbmFnZXIgPSBuZXcgc2EoKSwgdGhpcy5kZXZpY2VUb2tlbiA9IFFpKCksIHNzKCk7XG4gICAgY29uc3QgeyBmcmFtZXdvcms6IHQsIHZlcnNpb246IHIgfSA9IG5hKCk7XG4gICAgY24odGhpcy5iYXNlVXJsKS50aGVuKChpKSA9PiB7XG4gICAgICBpZiAoIW90LmN1cnJlbnQuaXNTdWNjZXNzKSB7XG4gICAgICAgIGNvbnN0IGEgPSB7XG4gICAgICAgICAgY2hlY2tvdXRTZWN1cmVUb2tlbjogdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgICBkZXZpY2VUb2tlbjogdGhpcy5kZXZpY2VUb2tlbixcbiAgICAgICAgICBlbnZpcm9ubWVudDogaSxcbiAgICAgICAgICBmcmFtZXdvcms6IHQsXG4gICAgICAgICAgZnJhbWV3b3JrVmVyc2lvbjogcixcbiAgICAgICAgICBvanNWZXJzaW9uOiB0aGlzLm9qc1ZlcnNpb24sXG4gICAgICAgICAgb2pzUmVsZWFzZVZlcnNpb246IHRoaXMub2pzUmVsZWFzZVZlcnNpb24sXG4gICAgICAgICAgcmVmZXJyZXI6IHRoaXMucmVmZXJyZXIsXG4gICAgICAgICAgYmFzZVVybDogdGhpcy5iYXNlVXJsXG4gICAgICAgIH07XG4gICAgICAgIG90LnNldChhKTtcbiAgICAgIH1cbiAgICB9KSwgZyhcImZvcm1faW5pdFwiKSwgdGhpcy5ldmVudEhhbmRsZXIgPSBuZXcgcmEodGhpcy5mb3JtSWQsIHRoaXMuYmFzZVVybCwgdGhpcy5mb3JtQ2FsbGJhY2tzLCB7XG4gICAgICBzZXRGb3JtSGVpZ2h0OiB0aGlzLnNldEZvcm1IZWlnaHQsXG4gICAgICBvbkNkZUxvYWRlZDogdGhpcy5vbkNkZUxvYWRlZCxcbiAgICAgIG9uQ2RlTG9hZEVycm9yOiB0aGlzLm9uQ2RlTG9hZEVycm9yXG4gICAgfSksIChzID0gQSgpKSA9PSBudWxsIHx8IHMuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5ldmVudEhhbmRsZXIuaGFuZGxlTWVzc2FnZS5iaW5kKHRoaXMuZXZlbnRIYW5kbGVyKSksIHRoaXMuc3RhcnRGb3JtSW5pdCgpO1xuICB9XG4gIGdldCBjaGVja291dFNlY3VyZVRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jaGVja291dFNlY3VyZVRva2VuO1xuICB9XG4gIGlzVmFsaWRGb3JtSW5zdGFuY2UobiA9IFwidW5rbm93blwiKSB7XG4gICAgY29uc3QgdCA9IFguZ2V0SW5zdGFuY2UoKSwgciA9IHtcbiAgICAgIGNhbGxlcjogbixcbiAgICAgIHRoaXNGb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgY3VycmVudEZvcm1JZDogKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuZm9ybUlkKSB8fCBcIm5vLWN1cnJlbnQtaW5zdGFuY2VcIixcbiAgICAgIGlzRGVzdHJveWVkOiB0aGlzLmlzRGVzdHJveWVkLFxuICAgICAgY2hlY2tvdXRUb2tlbjogdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbi5zdWJzdHJpbmcoMCwgMTApICsgXCIuLi5cIlxuICAgIH0sIHMgPSBgXG4gICAgICBbV2FybmluZ10gSW52YWxpZCBmb3JtIGluc3RhbmNlIGRldGVjdGVkLlxuICAgICAgSXQgbG9va3MgbGlrZSB5b3UgYXJlIHN0aWxsIHVzaW5nIGFuIG9sZCBpbnN0YW5jZSB0aGF0IGhhcyBiZWVuIGRlc3Ryb3llZC5cbiAgICAgIFBsZWFzZSBtYWtlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgbGF0ZXN0IGluc3RhbmNlIG9mIHRoZSBmb3JtIGFuZCBjbGVhbnVwIGV2ZW50IGxpc3RlbmVycy5cbiAgICAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICAgRGVidWcgSW5mbzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgLSBjYWxsZXI6ICR7bn1cbiAgICAgIC0gY2FsbGVyX2Zvcm1faWQ6ICR7ci50aGlzRm9ybUlkfVxuICAgICAgLSBjdXJyZW50X2FjdGl2ZV9mb3JtX2lkOiAke3IuY3VycmVudEZvcm1JZH1cbiAgICAgIC0gaXNfZGVzdHJveWVkOiAke3IuaXNEZXN0cm95ZWR9XG4gICAgICAtIGNoZWNrb3V0X3Rva2VuOiAke3IuY2hlY2tvdXRUb2tlbn1cbiAgICBgO1xuICAgIHJldHVybiB0aGlzLmlzRGVzdHJveWVkIHx8ICF0IHx8IHQuZm9ybUlkICE9PSB0aGlzLmZvcm1JZCA/ICh6KHMpLCAhMSkgOiAhMDtcbiAgfVxufTtcblgub2pzRmxvd3MgPSBSLCBYLmFzc2lnbkFzU2luZ2xldG9uID0gKG4pID0+IHtcbiAgaWYgKFguZ2V0SW5zdGFuY2UoKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJPcGVuUGF5IGluc3RhbmNlIGFscmVhZHkgZXhpc3RzLiBPbmx5IG9uZSBpbnN0YW5jZSBpcyBhbGxvd2VkLlwiKTtcbiAgd2luZG93Lm9qcyA9IG47XG59LCBYLmdldEluc3RhbmNlID0gKCkgPT4gd2luZG93Lm9qcyA/PyBudWxsLCBYLmJ1aWxkT2pzRmxvd0NvbnRleHQgPSAobiwgdCwgciwgcykgPT4gKHtcbiAgY2hlY2tvdXRTZWN1cmVUb2tlbjogbi5jaGVja291dFNlY3VyZVRva2VuLFxuICBiYXNlVXJsOiBuZXcgVVJMKG4uYmFzZVVybCA/PyB4dCkub3JpZ2luLFxuICBmb3JtRGl2OiBzLFxuICBlbGVtZW50c1Nlc3Npb25JZDogdC5zZXNzaW9uSWQsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZHM6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcyxcbiAgYW55Q2RlQ29ubmVjdGlvbjogcixcbiAgY3VzdG9tSW5pdFBhcmFtczogbi5jdXN0b21Jbml0UGFyYW1zID8/IHt9XG59KTtcbmxldCBPdCA9IFg7XG5cbmNvbnN0IFB5ZGFudGljVmFsaWRhdGlvbkVycm9yJDEgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLmFycmF5KFB5ZGFudGljVmFsaWRhdGlvbkVycm9yJDEpO1xuY29uc3QgWm9kRmllbGRFcnJvciA9IHokMS5vYmplY3Qoe1xuICBjb2RlOiB6JDEuc3RyaW5nKCksXG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKSxcbiAgcGF0aDogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLmFycmF5KFpvZEZpZWxkRXJyb3IpO1xuY29uc3QgbWFrZUNhbGxiYWNrU2FmZSA9IChjYWxsYmFja05hbWUsIGZuLCBlcnJvckxvZ2dlcikgPT4ge1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZuKC4uLmFyZ3MpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBlcnJvckxvZ2dlcihgW2Zvcm1dIEVycm9yIHJ1bm5pbmcgY2FsbGJhY2sgKCR7Y2FsbGJhY2tOYW1lfSk6YCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgU3VibWl0TWV0aG9kcyA9IC8qIEBfX1BVUkVfXyAqLyAoKFN1Ym1pdE1ldGhvZHMyKSA9PiB7XG4gIFN1Ym1pdE1ldGhvZHMyW1wicG9ja3l0UGF5cGFsXCJdID0gXCJwb2NreXQtcGF5cGFsXCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWlyd2FsbGV4R29vZ2xlUGF5XCJdID0gXCJhaXJ3YWxsZXgtZ29vZ2xlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImFpcndhbGxleEFwcGxlUGF5XCJdID0gXCJhaXJ3YWxsZXgtYXBwbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYXV0aG9yaXplbmV0R29vZ2xlUGF5XCJdID0gXCJhdXRob3JpemVuZXQtZ29vZ2xlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImF1dGhvcml6ZW5ldEFwcGxlUGF5XCJdID0gXCJhdXRob3JpemVuZXQtYXBwbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wibG9vcENyeXB0b1wiXSA9IFwibG9vcC1jcnlwdG9cIjtcbiAgcmV0dXJuIFN1Ym1pdE1ldGhvZHMyO1xufSkoU3VibWl0TWV0aG9kcyB8fCB7fSk7XG56JDEubmF0aXZlRW51bShTdWJtaXRNZXRob2RzKTtcblxuY29uc3QgUmVxdWlyZWRTdHJpbmcgPSB6JDEuc3RyaW5nKCkudHJpbSgpLm1pbigxLCB7IG1lc3NhZ2U6IGBDYW5ub3QgYmUgYmxhbmtgIH0pO1xuY29uc3QgT3B0aW9uYWxTdHJpbmcgPSB6JDEuc3RyaW5nKCkudHJpbSgpLm9wdGlvbmFsKCk7XG5jb25zdCBudWxsT3JVbmRlZk9yJDEgPSAoelR5cGUpID0+IHokMS5udWxsYWJsZSh6VHlwZS5vcHRpb25hbCgpKTtcbnZhciBGaWVsZE5hbWUgPSAvKiBAX19QVVJFX18gKi8gKChGaWVsZE5hbWUyKSA9PiB7XG4gIEZpZWxkTmFtZTJbXCJGSVJTVF9OQU1FXCJdID0gXCJmaXJzdE5hbWVcIjtcbiAgRmllbGROYW1lMltcIkxBU1RfTkFNRVwiXSA9IFwibGFzdE5hbWVcIjtcbiAgRmllbGROYW1lMltcIkVNQUlMXCJdID0gXCJlbWFpbFwiO1xuICBGaWVsZE5hbWUyW1wiWklQX0NPREVcIl0gPSBcInppcENvZGVcIjtcbiAgRmllbGROYW1lMltcIkNJVFlcIl0gPSBcImNpdHlcIjtcbiAgRmllbGROYW1lMltcIlNUQVRFXCJdID0gXCJzdGF0ZVwiO1xuICBGaWVsZE5hbWUyW1wiQ09VTlRSWVwiXSA9IFwiY291bnRyeVwiO1xuICBGaWVsZE5hbWUyW1wiQUREUkVTU1wiXSA9IFwiYWRkcmVzc1wiO1xuICBGaWVsZE5hbWUyW1wiUEhPTkVcIl0gPSBcInBob25lXCI7XG4gIEZpZWxkTmFtZTJbXCJQUk9NT1RJT05fQ09ERVwiXSA9IFwicHJvbW90aW9uQ29kZVwiO1xuICByZXR1cm4gRmllbGROYW1lMjtcbn0pKEZpZWxkTmFtZSB8fCB7fSk7XG5jb25zdCBGaWVsZE5hbWVFbnVtID0geiQxLm5hdGl2ZUVudW0oRmllbGROYW1lKTtcbnZhciBQcml2YXRlRmllbGROYW1lID0gLyogQF9fUFVSRV9fICovICgoUHJpdmF0ZUZpZWxkTmFtZTIpID0+IHtcbiAgUHJpdmF0ZUZpZWxkTmFtZTJbXCJDQVJEX05VTUJFUlwiXSA9IFwiY2FyZE51bWJlclwiO1xuICBQcml2YXRlRmllbGROYW1lMltcIkNBUkRfRVhQSVJZXCJdID0gXCJjYXJkRXhwaXJ5XCI7XG4gIFByaXZhdGVGaWVsZE5hbWUyW1wiQ0FSRF9DVkNcIl0gPSBcImNhcmRDdmNcIjtcbiAgcmV0dXJuIFByaXZhdGVGaWVsZE5hbWUyO1xufSkoUHJpdmF0ZUZpZWxkTmFtZSB8fCB7fSk7XG5jb25zdCBQcml2YXRlRmllbGROYW1lRW51bSA9IHokMS5uYXRpdmVFbnVtKFByaXZhdGVGaWVsZE5hbWUpO1xuY29uc3QgQWxsRmllbGROYW1lcyA9IHokMS51bmlvbihbRmllbGROYW1lRW51bSwgUHJpdmF0ZUZpZWxkTmFtZUVudW1dKTtcbnZhciBFbGVtZW50VHlwZUVudW0gPSAvKiBAX19QVVJFX18gKi8gKChFbGVtZW50VHlwZUVudW0yKSA9PiB7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEXCJdID0gXCJjYXJkXCI7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEX05VTUJFUlwiXSA9IFwiY2FyZC1udW1iZXJcIjtcbiAgRWxlbWVudFR5cGVFbnVtMltcIkNBUkRfRVhQSVJZXCJdID0gXCJjYXJkLWV4cGlyeVwiO1xuICBFbGVtZW50VHlwZUVudW0yW1wiQ0FSRF9DVkNcIl0gPSBcImNhcmQtY3ZjXCI7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDREVfQlJJREdFXCJdID0gXCJjZGUtYnJpZGdlXCI7XG4gIHJldHVybiBFbGVtZW50VHlwZUVudW0yO1xufSkoRWxlbWVudFR5cGVFbnVtIHx8IHt9KTtcbnokMS5uYXRpdmVFbnVtKEVsZW1lbnRUeXBlRW51bSk7XG5jb25zdCBDaGVja291dFBheW1lbnRNZXRob2QkMSA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnN0cmluZygpLFxuICBwcm9jZXNzb3JfbmFtZTogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIG1ldGFkYXRhOiBudWxsT3JVbmRlZk9yJDEoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbmNvbnN0IFBheW1lbnRNZXRob2RNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGlkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGNhcmROdW1iZXI6IE9wdGlvbmFsU3RyaW5nLFxuICBleHBpcnk6IE9wdGlvbmFsU3RyaW5nLFxuICBjdmM6IE9wdGlvbmFsU3RyaW5nXG59KTtcbnokMS5vYmplY3Qoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IE9wdGlvbmFsU3RyaW5nLFxuICBjb2xvcjogT3B0aW9uYWxTdHJpbmcsXG4gIGZvbnRGYW1pbHk6IE9wdGlvbmFsU3RyaW5nLFxuICBmb250U2l6ZTogT3B0aW9uYWxTdHJpbmcsXG4gIGZvbnRXZWlnaHQ6IE9wdGlvbmFsU3RyaW5nLFxuICBtYXJnaW46IE9wdGlvbmFsU3RyaW5nLFxuICBwYWRkaW5nOiBPcHRpb25hbFN0cmluZyxcbiAgbGV0dGVyU3BhY2luZzogT3B0aW9uYWxTdHJpbmcsXG4gIGxpbmVIZWlnaHQ6IE9wdGlvbmFsU3RyaW5nLFxuICBoaWRlSWNvbjogT3B0aW9uYWxTdHJpbmdcbn0pO1xuY29uc3QgRXZlbnRUeXBlID0geiQxLmVudW0oW1xuICAvLyBFbGVtZW50IC0+IEZvcm1cbiAgXCJMQVlPVVRcIixcbiAgXCJMT0FERURcIixcbiAgXCJCTFVSXCIsXG4gIFwiRk9DVVNcIixcbiAgXCJDSEFOR0VcIixcbiAgXCJUT0tFTklaRV9TVEFSVEVEXCIsXG4gIFwiQ0hFQ0tPVVRfU1RBUlRFRFwiLFxuICBcIlBBWU1FTlRfRkxPV19TVEFSVEVEXCIsXG4gIFwiVE9LRU5JWkVfU1VDQ0VTU1wiLFxuICBcIkNIRUNLT1VUX1NVQ0NFU1NcIixcbiAgXCJMT0FEX0VSUk9SXCIsXG4gIFwiVkFMSURBVElPTl9FUlJPUlwiLFxuICBcIlRPS0VOSVpFX0VSUk9SXCIsXG4gIFwiQ0hFQ0tPVVRfRVJST1JcIixcbiAgXCJTRVRVUF9QQVlNRU5UX01FVEhPRF9TVUNDRVNTXCIsXG4gIC8vIEZvcm0gLT4gRWxlbWVudFxuICBcIlRPS0VOSVpFXCIsXG4gIFwiQ0hFQ0tPVVRcIixcbiAgXCJTVEFSVF9QQVlNRU5UX0ZMT1dcIlxuXSk7XG5jb25zdCBHZW5lcmljRXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiVE9LRU5JWkVfU1RBUlRFRFwiLCBcIkNIRUNLT1VUX1NUQVJURURcIl0pO1xuY29uc3QgR2VuZXJpY0V2ZW50UGF5bG9hZCA9IHokMS5vYmplY3QoeyB0eXBlOiBHZW5lcmljRXZlbnRUeXBlIH0pO1xuY29uc3QgSW5wdXRFdmVudFR5cGUgPSBFdmVudFR5cGUuZXh0cmFjdChbXCJCTFVSXCIsIFwiRk9DVVNcIiwgXCJDSEFOR0VcIl0pO1xuY29uc3QgSW5wdXRFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogSW5wdXRFdmVudFR5cGUsXG4gIGVsZW1lbnRUeXBlOiBQcml2YXRlRmllbGROYW1lRW51bSxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IEVycm9yRXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiTE9BRF9FUlJPUlwiLCBcIlRPS0VOSVpFX0VSUk9SXCIsIFwiQ0hFQ0tPVVRfRVJST1JcIl0pO1xuY29uc3QgRXJyb3JFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogRXJyb3JFdmVudFR5cGUsXG4gIG1lc3NhZ2U6IFJlcXVpcmVkU3RyaW5nLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IFZhbGlkYXRpb25FcnJvckV2ZW50VHlwZSA9IEV2ZW50VHlwZS5leHRyYWN0KFtcIlZBTElEQVRJT05fRVJST1JcIl0pO1xuY29uc3QgVmFsaWRhdGlvbkVycm9yRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IFZhbGlkYXRpb25FcnJvckV2ZW50VHlwZSxcbiAgZWxlbWVudFR5cGU6IEFsbEZpZWxkTmFtZXMsXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgTGF5b3V0RXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLkxBWU9VVCksXG4gIGhlaWdodDogUmVxdWlyZWRTdHJpbmdcbn0pO1xuY29uc3QgTG9hZGVkRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLkxPQURFRCksXG4gIHNlc3Npb25JZDogUmVxdWlyZWRTdHJpbmcsXG4gIHRvdGFsQW1vdW50QXRvbXM6IHokMS5udW1iZXIoKSxcbiAgY3VycmVuY3k6IE9wdGlvbmFsU3RyaW5nLFxuICBjaGVja291dFBheW1lbnRNZXRob2RzOiB6JDEuYXJyYXkoQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEpXG59KTtcbmNvbnN0IFBheW1lbnRGbG93U3RhcnRlZEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5QQVlNRU5UX0ZMT1dfU1RBUlRFRCksXG4gIG5leHRBY3Rpb25NZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBzdGFydFBGTWV0YWRhdGE6IHokMS5vcHRpb25hbCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgU2V0dXBDaGVja291dFN1Y2Nlc3NFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uU0VUVVBfUEFZTUVOVF9NRVRIT0RfU1VDQ0VTUyksXG4gIHBheW1lbnRNZXRob2RJZDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IFJlcXVpcmVkRm9ybUZpZWxkcyA9IHokMS5vYmplY3Qoe1xuICBbXCJmaXJzdE5hbWVcIiAvKiBGSVJTVF9OQU1FICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImxhc3ROYW1lXCIgLyogTEFTVF9OQU1FICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImVtYWlsXCIgLyogRU1BSUwgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wiemlwQ29kZVwiIC8qIFpJUF9DT0RFICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImNvdW50cnlcIiAvKiBDT1VOVFJZICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcInByb21vdGlvbkNvZGVcIiAvKiBQUk9NT1RJT05fQ09ERSAqL106IE9wdGlvbmFsU3RyaW5nXG59KTtcbmNvbnN0IFBSRm9ybUZpZWxkcyA9IHokMS5vYmplY3Qoe1xuICBbXCJmaXJzdE5hbWVcIiAvKiBGSVJTVF9OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImxhc3ROYW1lXCIgLyogTEFTVF9OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImVtYWlsXCIgLyogRU1BSUwgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wiemlwQ29kZVwiIC8qIFpJUF9DT0RFICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImNvdW50cnlcIiAvKiBDT1VOVFJZICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcInByb21vdGlvbkNvZGVcIiAvKiBQUk9NT1RJT05fQ09ERSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJhZGRyZXNzXCIgLyogQUREUkVTUyAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJjaXR5XCIgLyogQ0lUWSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzdGF0ZVwiIC8qIFNUQVRFICovXTogT3B0aW9uYWxTdHJpbmdcbn0pO1xuY29uc3QgU3VibWl0RXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiVE9LRU5JWkVcIiwgXCJDSEVDS09VVFwiLCBcIlNUQVJUX1BBWU1FTlRfRkxPV1wiXSk7XG5jb25zdCBTdWJtaXRFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogU3VibWl0RXZlbnRUeXBlLFxuICBzZXNzaW9uSWQ6IFJlcXVpcmVkU3RyaW5nLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxLFxuICBwYXltZW50Rmxvd01ldGFkYXRhOiB6JDEuYW55KCkub3B0aW9uYWwoKSxcbiAgZG9Ob3RVc2VMZWdhY3lDQ0Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdDQ1BNSWQ6IE9wdGlvbmFsU3RyaW5nLFxuICBwYXltZW50Um91dGVJZDogT3B0aW9uYWxTdHJpbmdcbn0pLmV4dGVuZChSZXF1aXJlZEZvcm1GaWVsZHMuc2hhcGUpO1xuY29uc3QgVG9rZW5pemVTdWNjZXNzRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLlRPS0VOSVpFX1NVQ0NFU1MpLFxuICBpc1JlYWR5Rm9yQ2hlY2tvdXQ6IHokMS5ib29sZWFuKClcbn0pO1xuY29uc3QgQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLkNIRUNLT1VUX1NVQ0NFU1MpLFxuICBpbnZvaWNlVXJsczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIHN1YnNjcmlwdGlvbklkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVySWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBFdmVudFBheWxvYWQgPSB6JDEuZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIEdlbmVyaWNFdmVudFBheWxvYWQsXG4gIElucHV0RXZlbnRQYXlsb2FkLFxuICBFcnJvckV2ZW50UGF5bG9hZCxcbiAgVmFsaWRhdGlvbkVycm9yRXZlbnRQYXlsb2FkLFxuICBMYXlvdXRFdmVudFBheWxvYWQsXG4gIExvYWRlZEV2ZW50UGF5bG9hZCxcbiAgU3VibWl0RXZlbnRQYXlsb2FkLFxuICBUb2tlbml6ZVN1Y2Nlc3NFdmVudFBheWxvYWQsXG4gIENoZWNrb3V0U3VjY2Vzc0V2ZW50UGF5bG9hZCxcbiAgUGF5bWVudEZsb3dTdGFydGVkRXZlbnRQYXlsb2FkLFxuICBTZXR1cENoZWNrb3V0U3VjY2Vzc0V2ZW50UGF5bG9hZFxuXSk7XG56JDEub2JqZWN0KHtcbiAgcGF5bG9hZDogRXZlbnRQYXlsb2FkLFxuICBub25jZTogUmVxdWlyZWRTdHJpbmcsXG4gIGZvcm1JZDogUmVxdWlyZWRTdHJpbmcsXG4gIGVsZW1lbnRJZDogUmVxdWlyZWRTdHJpbmdcbn0pO1xueiQxLm9iamVjdCh7XG4gIGFtb3VudEF0b206IHokMS5udW1iZXIoKSxcbiAgLyoqXG4gICAqIFRoZSB0aHJlZS1sZXR0ZXIgSVNPIDQyMTcgY3VycmVuY3kgY29kZSBmb3IgdGhlIHBheW1lbnQuXG4gICAqL1xuICBjdXJyZW5jeTogUmVxdWlyZWRTdHJpbmdcbn0pO1xueiQxLmVudW0oW1wiYXBwbGVfcGF5XCIsIFwiZ29vZ2xlX3BheVwiXSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIGV4aXN0aW5nX2NjX3BtX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBjaGVja291dF9hdHRlbXB0X2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiBudWxsT3JVbmRlZk9yJDEoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbmNvbnN0IENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlID0geiQxLm9iamVjdCh7XG4gIGludm9pY2VfdXJsczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIHN1YnNjcmlwdGlvbl9pZHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBjdXN0b21lcl9pZDogeiQxLnN0cmluZygpLFxuICBwcm9jZXNzb3JzX3VzZWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuYXJyYXkoeiQxLnN0cmluZygpKSlcbn0pO1xuY29uc3QgRmllbGRWYWxpZGF0aW9uRXJyb3IgPSB6JDEub2JqZWN0KHtcbiAgZWxlbWVudFR5cGU6IHokMS5zdHJpbmcoKSxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IFRva2VuaXplQ2FyZEVycm9yUmVzcG9uc2UgPSB6JDEub2JqZWN0KHtcbiAgc3VjY2VzczogeiQxLmxpdGVyYWwoZmFsc2UpLFxuICBlcnJvcl90eXBlOiB6JDEubGl0ZXJhbChcInZhbGlkYXRpb25fZXJyb3JcIiksXG4gIGVycm9yczogeiQxLmFycmF5KEZpZWxkVmFsaWRhdGlvbkVycm9yKVxufSk7XG56JDEuZGlzY3JpbWluYXRlZFVuaW9uKFwic3VjY2Vzc1wiLCBbXG4gIHokMS5vYmplY3QoeyBzdWNjZXNzOiB6JDEubGl0ZXJhbCh0cnVlKSB9KSxcbiAgVG9rZW5pemVDYXJkRXJyb3JSZXNwb25zZVxuXSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEsXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFJlcXVpcmVkRm9ybUZpZWxkcyxcbiAgZG9fbm90X3VzZV9sZWdhY3lfY2NfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBleGlzdGluZ19jY19wbV9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSxcbiAgcGF5bWVudF9yb3V0ZV9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxLFxuICBub25fY2RlX2Zvcm1fZmllbGRzOiBSZXF1aXJlZEZvcm1GaWVsZHMsXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXCJzdWNjZXNzXCIgLyogU1VDQ0VTUyAqLywgXCJmYWlsdXJlXCIgLyogRkFJTFVSRSAqLywgXCJjYW5jZWxsZWRcIiAvKiBDQU5DRUxMRUQgKi9dKSxcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICByZWRpcmVjdF91cmw6IHokMS5zdHJpbmcoKSxcbiAgaW5pdGlhbF9pbnRlbnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgY29uc2VudF9pZDogeiQxLnN0cmluZygpLFxuICB0aGVpcl9wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuY29uc3QgQ29tbW9uTmV4dEFjdGlvbk1ldGFkYXRhID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgcmVkaXJlY3RfdXJsOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgaW5pdGlhbF9pbnRlbnRfaWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBjb25zZW50X2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3Nlc3Npb246IG51bGxPclVuZGVmT3IkMSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwodHJ1ZSksIGhyZWY6IHokMS5zdHJpbmcoKSB9KSxcbiAgeiQxLm9iamVjdCh7IHByZXNlbnQ6IHokMS5saXRlcmFsKGZhbHNlKSB9KVxuXSk7XG56JDEub2JqZWN0KHtcbiAgcGF5bWVudF9tZXRob2RzOiB6JDEuYXJyYXkoUGF5bWVudE1ldGhvZE1pbmltYWwpLFxuICBwYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZTogbnVsbE9yVW5kZWZPciQxKENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlKSxcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiBudWxsT3JVbmRlZk9yJDEoeiQxLmFycmF5KENvbW1vbk5leHRBY3Rpb25NZXRhZGF0YSkpXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHN0cmlwZV9wazogeiQxLnN0cmluZygpLFxuICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKCksXG4gIHN0cmlwZV9wbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbn0pO1xuXG5jb25zdCBjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyA9IChzdHlsZXMpID0+IHtcbiAgY29uc3Qgc2VyaWFsaXplZFN0eWxlcyA9IEpTT04uc3RyaW5naWZ5KHN0eWxlcyk7XG4gIHJldHVybiBzZXJpYWxpemVkU3R5bGVzO1xufTtcblxuY29uc3QgbnVsbE9yVW5kZWZPciA9ICh6VHlwZSkgPT4geiQxLm51bGxhYmxlKHpUeXBlLm9wdGlvbmFsKCkpO1xueiQxLnN0cmluZygpLnRyaW0oKS5taW4oMSwgeyBtZXNzYWdlOiBgQ2Fubm90IGJlIGJsYW5rYCB9KTtcbnokMS5vYmplY3Qoe1xuICBjZGVfcmVzcG9uc2VfdHlwZTogeiQxLmxpdGVyYWwoXCJlcnJvclwiKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbnokMS5lbnVtKFtcInVzZFwiLCBcImJybFwiXSk7XG5jb25zdCBDb3Vwb25NaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgYW1vdW50X2F0b21fb2ZmOiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKSksXG4gIHBlcmNlbnRfb2ZmOiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKSksXG4gIGN1cnJlbmN5OiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGR1cmF0aW9uOiB6JDEuc3RyaW5nKCksXG4gIGR1cmF0aW9uX2luX21vbnRoczogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkpXG59KTtcbmNvbnN0IExpbmVJdGVtID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9zdWJ0b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGFtb3VudF90b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHByaWNlX2lkOiB6JDEuc3RyaW5nKCksXG4gIGJpbGxpbmdfaW50ZXJ2YWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbF9jb3VudDogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkuaW50KCkpLFxuICBxdWFudGl0eTogeiQxLm51bWJlcigpLmludCgpXG59KTtcbmNvbnN0IEJyYW5kU2V0dGluZ3MgPSB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKTtcbmNvbnN0IEJyYW5kID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgc2V0dGluZ3M6IG51bGxPclVuZGVmT3IoQnJhbmRTZXR0aW5ncylcbn0pO1xuY29uc3QgQ2hlY2tvdXRQYXltZW50TWV0aG9kID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIHByb2Nlc3Nvcl9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIG1ldGFkYXRhOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBTdWJzY3JpcHRpb25JdGVtTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBxdWFudGl0eTogeiQxLm51bWJlcigpXG59KTtcbmNvbnN0IFN1YnNjcmlwdGlvbk1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgaWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsX2NvdW50OiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKS5pbnQoKSksXG4gIHN1YnNjcmlwdGlvbl9pdGVtczogeiQxLmFycmF5KFN1YnNjcmlwdGlvbkl0ZW1NaW5pbWFsKSxcbiAgdHJpYWxfc3RhcnQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdHJpYWxfZW5kOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgSW52b2ljZUl0ZW1EaXNjb3VudEFtb3VudHNNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9hdG9tOiB6JDEubnVtYmVyKClcbn0pO1xuY29uc3QgSW52b2ljZUxpbmVJdGVtTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICBhbW91bnRfYXRvbV9jb25zaWRlcmluZ19kaXNjb3VudF9hcHBsaWVkOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRpc2NvdW50X2Ftb3VudF9hdG9tczogeiQxLmFycmF5KEludm9pY2VJdGVtRGlzY291bnRBbW91bnRzTWluaW1hbCksXG4gIHN1YnNjcmlwdGlvbl9pdGVtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgRGlzY291bnRNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGNvdXBvbjogQ291cG9uTWluaW1hbFxufSk7XG5jb25zdCBJbnZvaWNlTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkaXNjb3VudHM6IHokMS5hcnJheShEaXNjb3VudE1pbmltYWwpLFxuICBob3N0ZWRfaW52b2ljZV91cmw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGluZXM6IHokMS5hcnJheShJbnZvaWNlTGluZUl0ZW1NaW5pbWFsKSxcbiAgcmVtYWluaW5nX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRheF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9kaXNjb3VudF9hbW91bnRfYXRvbXM6IHokMS5hcnJheShJbnZvaWNlSXRlbURpc2NvdW50QW1vdW50c01pbmltYWwpXG59KTtcbmNvbnN0IENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjcmVhdGVkOiB6JDEuYXJyYXkoU3Vic2NyaXB0aW9uTWluaW1hbCksXG4gIGludm9pY2VzOiB6JDEuYXJyYXkoSW52b2ljZU1pbmltYWwpLFxuICBwcm9jZXNzb3JzX3VzZWQ6IG51bGxPclVuZGVmT3IoeiQxLmFycmF5KHokMS5zdHJpbmcoKSkpXG59KTtcbmNvbnN0IFByZXZpZXdDaGVja291dFJlc3BvbnNlID0geiQxLm9iamVjdCh7XG4gIHByZXZpZXc6IENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCxcbiAgcHJldmlld19wb3N0X3RyaWFsOiBudWxsT3JVbmRlZk9yKENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCksXG4gIGNvdXBvbnM6IHokMS5hcnJheShDb3Vwb25NaW5pbWFsKVxufSk7XG5jb25zdCBfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmxpdGVyYWwoXCJvcGVuXCIpLFxuICBsb2NhbGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KExpbmVJdGVtKSxcbiAgYW1vdW50X3N1YnRvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYW1vdW50X3RvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYnJhbmQ6IEJyYW5kLFxuICBzdWJzX3ByZXZpZXc6IG51bGxPclVuZGVmT3IoUHJldmlld0NoZWNrb3V0UmVzcG9uc2UpLFxuICAvLyBOdWxsIGluIHNldHVwIG1vZGVcbiAgbWV0aG9kc19hdmFpbGFibGU6IHokMS5hcnJheShDaGVja291dFBheW1lbnRNZXRob2QpXG59KTtcbmNvbnN0IFBheW1lbnRGb3JtUHJlZmlsbCA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJtb2RlXCIsIFtcbiAgeiQxLm9iamVjdCh7XG4gICAgbW9kZTogeiQxLmxpdGVyYWwoXCJzZXR1cFwiKSxcbiAgICBjdXJyZW5jeTogeiQxLm51bGxhYmxlKHokMS51bmRlZmluZWQoKSlcbiAgfSkuZXh0ZW5kKF9QYXltZW50Rm9ybVByZWZpbGxDb21tb24uc2hhcGUpLFxuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEuZW51bShbXCJwYXltZW50XCIsIFwic3Vic2NyaXB0aW9uXCJdKSxcbiAgICBjdXJyZW5jeTogeiQxLnN0cmluZygpXG4gIH0pLmV4dGVuZChfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uLnNoYXBlKVxuXSk7XG5jb25zdCBDb21wbGV0ZWRGb3JtUHJlZmlsbCA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiY29tcGxldGVcIilcbn0pO1xuY29uc3QgRXhwaXJlZEZvcm1QcmVmaWxsID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmxpdGVyYWwoXCJleHBpcmVkXCIpXG59KTtcbnokMS51bmlvbihbUGF5bWVudEZvcm1QcmVmaWxsLCBDb21wbGV0ZWRGb3JtUHJlZmlsbCwgRXhwaXJlZEZvcm1QcmVmaWxsXSk7XG56JDEub2JqZWN0KHtcbiAgbG9nbzogeiQxLnN0cmluZygpLFxuICBpY29uOiB6JDEuc3RyaW5nKCksXG4gIHByaW1hcnlfY29sb3I6IHokMS5zdHJpbmcoKSxcbiAgc2Vjb25kYXJ5X2NvbG9yOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcGF5bWVudF9pbnB1dDogeiQxLmFueSgpLFxuICAvLyBTaG91bGQgZm9sbG93IEFueVBheW1lbnRJbnB1dCBmcm9tIENERVxuICBjdXN0b21lcl9maXJzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfbGFzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfZW1haWw6IHokMS5zdHJpbmcoKSxcbiAgY3VzdG9tZXJfemlwX2NvZGU6IHokMS5zdHJpbmcoKSxcbiAgY3VzdG9tZXJfY291bnRyeTogeiQxLnN0cmluZygpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoTGluZUl0ZW0pLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBjYW5jZWxfYXRfZW5kOiB6JDEuYm9vbGVhbigpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdXNlX2NvbmZpcm1lZF9wbV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHBheW1lbnRfbWV0aG9kX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGlkOiB6JDEuc3RyaW5nKCksXG4gIHJldHVybl91cmw6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBQeWRhbnRpY1ZhbGlkYXRpb25FcnJvciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGxvYzogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIG1zZzogeiQxLnN0cmluZygpLFxuICB1cmw6IHokMS5zdHJpbmcoKVxufSk7XG56JDEuYXJyYXkoUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IpO1xuY29uc3QgTmV3Q3VzdG9tZXJGaWVsZHMgPSB6JDEub2JqZWN0KHtcbiAgbmV3X2N1c3RvbWVyX2VtYWlsOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbmV3X2N1c3RvbWVyX2FkZHJlc3M6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuY29uc3QgUHJpY2VRdHkgPSB6JDEub2JqZWN0KHtcbiAgcHJpY2VfaWQ6IHokMS5zdHJpbmcoKSxcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKS5pbnQoKVxufSk7XG5jb25zdCBDYXJ0SW5mbyA9IHokMS5vYmplY3Qoe1xuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoUHJpY2VRdHkpLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRpc3BsYXllZF90b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLmludCgpXG59KTtcbmNvbnN0IFByb2Nlc3NvclNwZWNpZmljTWV0YWRhdGEgPSB6JDEub2JqZWN0KHtcbiAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgcGF5bWVudF9wcm92aWRlcjogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBleGlzdGluZ19jY19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRoZWlyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdXNlX3BheV9maXJzdF9mbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogQ2FydEluZm8ub3B0aW9uYWwoKVxufSkuZXh0ZW5kKE5ld0N1c3RvbWVyRmllbGRzLnNoYXBlKS5leHRlbmQoUHJvY2Vzc29yU3BlY2lmaWNNZXRhZGF0YS5zaGFwZSk7XG56JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjaGVja291dF9hdHRlbXB0X2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIGZpZWxkczogUFJGb3JtRmllbGRzLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgcGF5bWVudF9yb3V0ZV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFJlcXVpcmVkRm9ybUZpZWxkcyxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICAvLyBUaGlzIGlzIG9wdGlvbmFsIGluIENERSwgYnV0IG5vdCBpbiBPSlMgbW92aW5nIGZvcndhcmRcbiAgcGF5bWVudF9yb3V0ZV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICByZXF1aXJlZF91c2VyX2FjdGlvbnM6IHokMS5hcnJheSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSksXG4gIGNjX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLnJlY29yZCh6JDEuYW55KCkpO1xueiQxLm9iamVjdCh7XG4gIGZpcnN0X25hbWU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGFzdF9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmUxOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmUyOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmUzOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGNpdHk6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgc3RhdGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgY291bnRyeTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICB6aXBfY29kZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBlbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2VtYWlsOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHBob25lX251bWJlcjogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICB1cGRhdGVfcHJvY2Vzc29yX2N1c3RvbWVyOiBudWxsT3JVbmRlZk9yKHokMS5ib29sZWFuKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpLFxuICBlbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBmaXJzdF9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxhc3RfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwaG9uZV9udW1iZXI6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19lbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBhZGRyZXNzOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBlcnJvcl9jb2RlOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBDaGVja291dFBheW1lbnRNZXRob2QsXG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gIHBheW1lbnRfcm91dGVfaWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgbmV4dF9hY3Rpb25fbWV0YWRhdGE6IG51bGxPclVuZGVmT3IoeiQxLnJlY29yZCh6JDEuYW55KCkpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgZXZlbnRzOiB6JDEuYXJyYXkoXG4gICAgeiQxLm9iamVjdCh7XG4gICAgICBldmVudF9uYW1lOiB6JDEuc3RyaW5nKCksXG4gICAgICBkZXZpY2VfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgICAgIHByb3BlcnRpZXM6IHokMS5yZWNvcmQoeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICAgICAgY29udGV4dF9wcm9wZXJ0aWVzOiB6JDEucmVjb3JkKHokMS5hbnkoKSkub3B0aW9uYWwoKVxuICAgIH0pXG4gIClcbn0pO1xueiQxLmFueSgpLm9wdGlvbmFsKCk7XG56JDEub2JqZWN0KHtcbiAgZGV2aWNlX3Rva2VuOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7fSk7XG5cbmZ1bmN0aW9uIGZpeFByb3RvKHRhcmdldCwgcHJvdG90eXBlKSB7XG4gIHZhciBzZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZjtcbiAgc2V0UHJvdG90eXBlT2YgPyBzZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvdHlwZSkgOiB0YXJnZXQuX19wcm90b19fID0gcHJvdG90eXBlO1xufVxuZnVuY3Rpb24gZml4U3RhY2sodGFyZ2V0LCBmbikge1xuICBpZiAoZm4gPT09IHZvaWQgMCkge1xuICAgIGZuID0gdGFyZ2V0LmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgdmFyIGNhcHR1cmVTdGFja1RyYWNlID0gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U7XG4gIGNhcHR1cmVTdGFja1RyYWNlICYmIGNhcHR1cmVTdGFja1RyYWNlKHRhcmdldCwgZm4pO1xufVxuXG52YXIgX19leHRlbmRzJDEgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG4oZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMkMShDdXN0b21FcnJvciwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBDdXN0b21FcnJvcihtZXNzYWdlLCBvcHRpb25zKSB7XG4gICAgdmFyIF9uZXdUYXJnZXQgPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbWVzc2FnZSwgb3B0aW9ucykgfHwgdGhpcztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfdGhpcywgJ25hbWUnLCB7XG4gICAgICB2YWx1ZTogX25ld1RhcmdldC5uYW1lLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBmaXhQcm90byhfdGhpcywgX25ld1RhcmdldC5wcm90b3R5cGUpO1xuICAgIGZpeFN0YWNrKF90aGlzKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gQ3VzdG9tRXJyb3I7XG59KShFcnJvcik7XG5cbmNvbnN0IGNyZWF0ZU9qc0Zsb3dMb2dnZXJzID0gKHByZWZpeCkgPT4ge1xuICBjb25zdCBsb2cgPSAoLi4uYXJncykgPT4ge1xuICAgIHdpbmRvd1tcImNvbnNvbGVcIl0ubG9nKGAke01lLmdyZWVuLmJvbGQoXCJvanMvXCIpfSR7TWUuYm9sZC5ncmF5KGAke3ByZWZpeH1gKX1cdGAsIC4uLmFyZ3MpO1xuICB9O1xuICBjb25zdCBlcnIgPSAoLi4uYXJncykgPT4ge1xuICAgIHdpbmRvd1tcImNvbnNvbGVcIl0ud2FybihgJHtNZS5yZWQuYm9sZChcIm9qcy9cIil9JHtNZS5ib2xkLmdyYXkoYCR7cHJlZml4fWApfVx0YCwgLi4uYXJncyk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgbG9nLFxuICAgIGVycixcbiAgICBsb2dfXzogbG9nLFxuICAgIGVycl9fOiBlcnJcbiAgfTtcbn07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxuXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCwgSXRlcmF0b3IgKi9cblxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XG4gIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xufTtcblxuZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcbiAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn1cblxuZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XG4gIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGcgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEl0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpO1xuICByZXR1cm4gZy5uZXh0ID0gdmVyYigwKSwgZ1tcInRocm93XCJdID0gdmVyYigxKSwgZ1tcInJldHVyblwiXSA9IHZlcmIoMiksIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cblxuZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcbiAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIW0pIHJldHVybiBvO1xuICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgdHJ5IHtcbiAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICB9XG4gIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgfVxuICByZXR1cm4gYXI7XG59XG5cbmZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcbiAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn1cblxuZnVuY3Rpb24gX19hd2FpdCh2KSB7XG4gIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xufVxuXG5mdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xuICByZXR1cm4gaSA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBBc3luY0l0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBBc3luY0l0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpLCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIsIGF3YWl0UmV0dXJuKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiBhd2FpdFJldHVybihmKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZiwgcmVqZWN0KTsgfTsgfVxuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaWYgKGdbbl0pIHsgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgaWYgKGYpIGlbbl0gPSBmKGlbbl0pOyB9IH1cbiAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxuICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cbiAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cbn1cblxuZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbnR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xuICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcbn07XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFcnJvckNsYXNzKGNyZWF0ZUltcGwpIHtcbiAgICB2YXIgX3N1cGVyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gICAgICAgIEVycm9yLmNhbGwoaW5zdGFuY2UpO1xuICAgICAgICBpbnN0YW5jZS5zdGFjayA9IG5ldyBFcnJvcigpLnN0YWNrO1xuICAgIH07XG4gICAgdmFyIGN0b3JGdW5jID0gY3JlYXRlSW1wbChfc3VwZXIpO1xuICAgIGN0b3JGdW5jLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbiAgICBjdG9yRnVuYy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yRnVuYztcbiAgICByZXR1cm4gY3RvckZ1bmM7XG59XG5cbnZhciBVbnN1YnNjcmlwdGlvbkVycm9yID0gY3JlYXRlRXJyb3JDbGFzcyhmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIFVuc3Vic2NyaXB0aW9uRXJyb3JJbXBsKGVycm9ycykge1xuICAgICAgICBfc3VwZXIodGhpcyk7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGVycm9yc1xuICAgICAgICAgICAgPyBlcnJvcnMubGVuZ3RoICsgXCIgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcXG5cIiArIGVycm9ycy5tYXAoZnVuY3Rpb24gKGVyciwgaSkgeyByZXR1cm4gaSArIDEgKyBcIikgXCIgKyBlcnIudG9TdHJpbmcoKTsgfSkuam9pbignXFxuICAnKVxuICAgICAgICAgICAgOiAnJztcbiAgICAgICAgdGhpcy5uYW1lID0gJ1Vuc3Vic2NyaXB0aW9uRXJyb3InO1xuICAgICAgICB0aGlzLmVycm9ycyA9IGVycm9ycztcbiAgICB9O1xufSk7XG5cbmZ1bmN0aW9uIGFyclJlbW92ZShhcnIsIGl0ZW0pIHtcbiAgICBpZiAoYXJyKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAwIDw9IGluZGV4ICYmIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbn1cblxudmFyIFN1YnNjcmlwdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3Vic2NyaXB0aW9uKGluaXRpYWxUZWFyZG93bikge1xuICAgICAgICB0aGlzLmluaXRpYWxUZWFyZG93biA9IGluaXRpYWxUZWFyZG93bjtcbiAgICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZmluYWxpemVycyA9IG51bGw7XG4gICAgfVxuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iO1xuICAgICAgICB2YXIgZXJyb3JzO1xuICAgICAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX3BhcmVudGFnZSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgICAgICAgIGlmIChfcGFyZW50YWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfcGFyZW50YWdlKSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX3BhcmVudGFnZV8xID0gX192YWx1ZXMoX3BhcmVudGFnZSksIF9wYXJlbnRhZ2VfMV8xID0gX3BhcmVudGFnZV8xLm5leHQoKTsgIV9wYXJlbnRhZ2VfMV8xLmRvbmU7IF9wYXJlbnRhZ2VfMV8xID0gX3BhcmVudGFnZV8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJlbnRfMSA9IF9wYXJlbnRhZ2VfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF8xLnJlbW92ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9wYXJlbnRhZ2VfMV8xICYmICFfcGFyZW50YWdlXzFfMS5kb25lICYmIChfYSA9IF9wYXJlbnRhZ2VfMS5yZXR1cm4pKSBfYS5jYWxsKF9wYXJlbnRhZ2VfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF9wYXJlbnRhZ2UucmVtb3ZlKHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpbml0aWFsRmluYWxpemVyID0gdGhpcy5pbml0aWFsVGVhcmRvd247XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihpbml0aWFsRmluYWxpemVyKSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxGaW5hbGl6ZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZSBpbnN0YW5jZW9mIFVuc3Vic2NyaXB0aW9uRXJyb3IgPyBlLmVycm9ycyA6IFtlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2ZpbmFsaXplcnMgPSB0aGlzLl9maW5hbGl6ZXJzO1xuICAgICAgICAgICAgaWYgKF9maW5hbGl6ZXJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmluYWxpemVycyA9IG51bGw7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2ZpbmFsaXplcnNfMSA9IF9fdmFsdWVzKF9maW5hbGl6ZXJzKSwgX2ZpbmFsaXplcnNfMV8xID0gX2ZpbmFsaXplcnNfMS5uZXh0KCk7ICFfZmluYWxpemVyc18xXzEuZG9uZTsgX2ZpbmFsaXplcnNfMV8xID0gX2ZpbmFsaXplcnNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaW5hbGl6ZXIgPSBfZmluYWxpemVyc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNGaW5hbGl6ZXIoZmluYWxpemVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnJvcnMgIT09IG51bGwgJiYgZXJyb3JzICE9PSB2b2lkIDAgPyBlcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVW5zdWJzY3JpcHRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChlcnJvcnMpKSwgX19yZWFkKGVyci5lcnJvcnMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2ZpbmFsaXplcnNfMV8xICYmICFfZmluYWxpemVyc18xXzEuZG9uZSAmJiAoX2IgPSBfZmluYWxpemVyc18xLnJldHVybikpIF9iLmNhbGwoX2ZpbmFsaXplcnNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdWJzY3JpcHRpb25FcnJvcihlcnJvcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh0ZWFyZG93bikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh0ZWFyZG93biAmJiB0ZWFyZG93biAhPT0gdGhpcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgZXhlY0ZpbmFsaXplcih0ZWFyZG93bik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGVhcmRvd24gaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlYXJkb3duLmNsb3NlZCB8fCB0ZWFyZG93bi5faGFzUGFyZW50KHRoaXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGVhcmRvd24uX2FkZFBhcmVudCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKHRoaXMuX2ZpbmFsaXplcnMgPSAoX2EgPSB0aGlzLl9maW5hbGl6ZXJzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSkucHVzaCh0ZWFyZG93bik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX2hhc1BhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIHJldHVybiBfcGFyZW50YWdlID09PSBwYXJlbnQgfHwgKEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkgJiYgX3BhcmVudGFnZS5pbmNsdWRlcyhwYXJlbnQpKTtcbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX2FkZFBhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkgPyAoX3BhcmVudGFnZS5wdXNoKHBhcmVudCksIF9wYXJlbnRhZ2UpIDogX3BhcmVudGFnZSA/IFtfcGFyZW50YWdlLCBwYXJlbnRdIDogcGFyZW50O1xuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50ID0gZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICB2YXIgX3BhcmVudGFnZSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgICAgaWYgKF9wYXJlbnRhZ2UgPT09IHBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpKSB7XG4gICAgICAgICAgICBhcnJSZW1vdmUoX3BhcmVudGFnZSwgcGFyZW50KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAodGVhcmRvd24pIHtcbiAgICAgICAgdmFyIF9maW5hbGl6ZXJzID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgICAgX2ZpbmFsaXplcnMgJiYgYXJyUmVtb3ZlKF9maW5hbGl6ZXJzLCB0ZWFyZG93bik7XG4gICAgICAgIGlmICh0ZWFyZG93biBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGVhcmRvd24uX3JlbW92ZVBhcmVudCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLkVNUFRZID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVtcHR5ID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICBlbXB0eS5jbG9zZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZW1wdHk7XG4gICAgfSkoKTtcbiAgICByZXR1cm4gU3Vic2NyaXB0aW9uO1xufSgpKTtcbnZhciBFTVBUWV9TVUJTQ1JJUFRJT04gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5mdW5jdGlvbiBpc1N1YnNjcmlwdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiAodmFsdWUgaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24gfHxcbiAgICAgICAgKHZhbHVlICYmICdjbG9zZWQnIGluIHZhbHVlICYmIGlzRnVuY3Rpb24odmFsdWUucmVtb3ZlKSAmJiBpc0Z1bmN0aW9uKHZhbHVlLmFkZCkgJiYgaXNGdW5jdGlvbih2YWx1ZS51bnN1YnNjcmliZSkpKTtcbn1cbmZ1bmN0aW9uIGV4ZWNGaW5hbGl6ZXIoZmluYWxpemVyKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oZmluYWxpemVyKSkge1xuICAgICAgICBmaW5hbGl6ZXIoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZpbmFsaXplci51bnN1YnNjcmliZSgpO1xuICAgIH1cbn1cblxudmFyIGNvbmZpZyA9IHtcbiAgICBvblVuaGFuZGxlZEVycm9yOiBudWxsLFxuICAgIG9uU3RvcHBlZE5vdGlmaWNhdGlvbjogbnVsbCxcbiAgICBQcm9taXNlOiB1bmRlZmluZWQsXG4gICAgdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZzogZmFsc2UsXG4gICAgdXNlRGVwcmVjYXRlZE5leHRDb250ZXh0OiBmYWxzZSxcbn07XG5cbnZhciB0aW1lb3V0UHJvdmlkZXIgPSB7XG4gICAgc2V0VGltZW91dDogZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQuYXBwbHkodm9pZCAwLCBfX3NwcmVhZEFycmF5KFtoYW5kbGVyLCB0aW1lb3V0XSwgX19yZWFkKGFyZ3MpKSk7XG4gICAgfSxcbiAgICBjbGVhclRpbWVvdXQ6IGZ1bmN0aW9uIChoYW5kbGUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gdGltZW91dFByb3ZpZGVyLmRlbGVnYXRlO1xuICAgICAgICByZXR1cm4gKChkZWxlZ2F0ZSA9PT0gbnVsbCB8fCBkZWxlZ2F0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVsZWdhdGUuY2xlYXJUaW1lb3V0KSB8fCBjbGVhclRpbWVvdXQpKGhhbmRsZSk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcblxuZnVuY3Rpb24gcmVwb3J0VW5oYW5kbGVkRXJyb3IoZXJyKSB7XG4gICAgdGltZW91dFByb3ZpZGVyLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICB7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gbm9vcCgpIHsgfVxuXG5mdW5jdGlvbiBlcnJvckNvbnRleHQoY2IpIHtcbiAgICB7XG4gICAgICAgIGNiKCk7XG4gICAgfVxufVxuXG52YXIgU3Vic2NyaWJlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFN1YnNjcmliZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3Vic2NyaWJlcihkZXN0aW5hdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5pc1N0b3BwZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uKSB7XG4gICAgICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICAgICAgaWYgKGlzU3Vic2NyaXB0aW9uKGRlc3RpbmF0aW9uKSkge1xuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFkZChfdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IEVNUFRZX09CU0VSVkVSO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgU3Vic2NyaWJlci5jcmVhdGUgPSBmdW5jdGlvbiAobmV4dCwgZXJyb3IsIGNvbXBsZXRlKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2FmZVN1YnNjcmliZXIobmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9wcGVkKSA7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbmV4dCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICBpZiAodGhpcy5pc1N0b3BwZWQpIDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9wcGVkKSA7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5fbmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLm5leHQodmFsdWUpO1xuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5fY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBTdWJzY3JpYmVyO1xufShTdWJzY3JpcHRpb24pKTtcbnZhciBfYmluZCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kO1xuZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICAgIHJldHVybiBfYmluZC5jYWxsKGZuLCB0aGlzQXJnKTtcbn1cbnZhciBDb25zdW1lck9ic2VydmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb25zdW1lck9ic2VydmVyKHBhcnRpYWxPYnNlcnZlcikge1xuICAgICAgICB0aGlzLnBhcnRpYWxPYnNlcnZlciA9IHBhcnRpYWxPYnNlcnZlcjtcbiAgICB9XG4gICAgQ29uc3VtZXJPYnNlcnZlci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChwYXJ0aWFsT2JzZXJ2ZXIubmV4dCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbnN1bWVyT2JzZXJ2ZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChwYXJ0aWFsT2JzZXJ2ZXIuZXJyb3IpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDb25zdW1lck9ic2VydmVyLnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxPYnNlcnZlciA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgICAgICBpZiAocGFydGlhbE9ic2VydmVyLmNvbXBsZXRlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQ29uc3VtZXJPYnNlcnZlcjtcbn0oKSk7XG52YXIgU2FmZVN1YnNjcmliZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTYWZlU3Vic2NyaWJlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTYWZlU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCwgZXJyb3IsIGNvbXBsZXRlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIHZhciBwYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKG9ic2VydmVyT3JOZXh0KSB8fCAhb2JzZXJ2ZXJPck5leHQpIHtcbiAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlciA9IHtcbiAgICAgICAgICAgICAgICBuZXh0OiAob2JzZXJ2ZXJPck5leHQgIT09IG51bGwgJiYgb2JzZXJ2ZXJPck5leHQgIT09IHZvaWQgMCA/IG9ic2VydmVyT3JOZXh0IDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IgIT09IG51bGwgJiYgZXJyb3IgIT09IHZvaWQgMCA/IGVycm9yIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBjb21wbGV0ZSAhPT0gbnVsbCAmJiBjb21wbGV0ZSAhPT0gdm9pZCAwID8gY29tcGxldGUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGNvbnRleHRfMTtcbiAgICAgICAgICAgIGlmIChfdGhpcyAmJiBjb25maWcudXNlRGVwcmVjYXRlZE5leHRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgY29udGV4dF8xID0gT2JqZWN0LmNyZWF0ZShvYnNlcnZlck9yTmV4dCk7XG4gICAgICAgICAgICAgICAgY29udGV4dF8xLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMudW5zdWJzY3JpYmUoKTsgfTtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IG9ic2VydmVyT3JOZXh0Lm5leHQgJiYgYmluZChvYnNlcnZlck9yTmV4dC5uZXh0LCBjb250ZXh0XzEpLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogb2JzZXJ2ZXJPck5leHQuZXJyb3IgJiYgYmluZChvYnNlcnZlck9yTmV4dC5lcnJvciwgY29udGV4dF8xKSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IG9ic2VydmVyT3JOZXh0LmNvbXBsZXRlICYmIGJpbmQob2JzZXJ2ZXJPck5leHQuY29tcGxldGUsIGNvbnRleHRfMSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlciA9IG9ic2VydmVyT3JOZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIF90aGlzLmRlc3RpbmF0aW9uID0gbmV3IENvbnN1bWVyT2JzZXJ2ZXIocGFydGlhbE9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gU2FmZVN1YnNjcmliZXI7XG59KFN1YnNjcmliZXIpKTtcbmZ1bmN0aW9uIGhhbmRsZVVuaGFuZGxlZEVycm9yKGVycm9yKSB7XG4gICAge1xuICAgICAgICByZXBvcnRVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgfVxufVxuZnVuY3Rpb24gZGVmYXVsdEVycm9ySGFuZGxlcihlcnIpIHtcbiAgICB0aHJvdyBlcnI7XG59XG52YXIgRU1QVFlfT0JTRVJWRVIgPSB7XG4gICAgY2xvc2VkOiB0cnVlLFxuICAgIG5leHQ6IG5vb3AsXG4gICAgZXJyb3I6IGRlZmF1bHRFcnJvckhhbmRsZXIsXG4gICAgY29tcGxldGU6IG5vb3AsXG59O1xuXG52YXIgb2JzZXJ2YWJsZSA9IChmdW5jdGlvbiAoKSB7IHJldHVybiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wub2JzZXJ2YWJsZSkgfHwgJ0BAb2JzZXJ2YWJsZSc7IH0pKCk7XG5cbmZ1bmN0aW9uIGlkZW50aXR5KHgpIHtcbiAgICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gcGlwZUZyb21BcnJheShmbnMpIHtcbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gaWRlbnRpdHk7XG4gICAgfVxuICAgIGlmIChmbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBmbnNbMF07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiBwaXBlZChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZm5zLnJlZHVjZShmdW5jdGlvbiAocHJldiwgZm4pIHsgcmV0dXJuIGZuKHByZXYpOyB9LCBpbnB1dCk7XG4gICAgfTtcbn1cblxudmFyIE9ic2VydmFibGUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE9ic2VydmFibGUoc3Vic2NyaWJlKSB7XG4gICAgICAgIGlmIChzdWJzY3JpYmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZSA9IHN1YnNjcmliZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5saWZ0ID0gZnVuY3Rpb24gKG9wZXJhdG9yKSB7XG4gICAgICAgIHZhciBvYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGUoKTtcbiAgICAgICAgb2JzZXJ2YWJsZS5zb3VyY2UgPSB0aGlzO1xuICAgICAgICBvYnNlcnZhYmxlLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gKG9ic2VydmVyT3JOZXh0LCBlcnJvciwgY29tcGxldGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHN1YnNjcmliZXIgPSBpc1N1YnNjcmliZXIob2JzZXJ2ZXJPck5leHQpID8gb2JzZXJ2ZXJPck5leHQgOiBuZXcgU2FmZVN1YnNjcmliZXIob2JzZXJ2ZXJPck5leHQsIGVycm9yLCBjb21wbGV0ZSk7XG4gICAgICAgIGVycm9yQ29udGV4dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBfdGhpcywgb3BlcmF0b3IgPSBfYS5vcGVyYXRvciwgc291cmNlID0gX2Euc291cmNlO1xuICAgICAgICAgICAgc3Vic2NyaWJlci5hZGQob3BlcmF0b3JcbiAgICAgICAgICAgICAgICA/XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yLmNhbGwoc3Vic2NyaWJlciwgc291cmNlKVxuICAgICAgICAgICAgICAgIDogc291cmNlXG4gICAgICAgICAgICAgICAgICAgID9cbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9zdWJzY3JpYmUoc3Vic2NyaWJlcilcbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3RyeVN1YnNjcmliZShzdWJzY3JpYmVyKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3Vic2NyaWJlcjtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLl90cnlTdWJzY3JpYmUgPSBmdW5jdGlvbiAoc2luaykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnNjcmliZShzaW5rKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBzaW5rLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiAobmV4dCwgcHJvbWlzZUN0b3IpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcHJvbWlzZUN0b3IgPSBnZXRQcm9taXNlQ3Rvcihwcm9taXNlQ3Rvcik7XG4gICAgICAgIHJldHVybiBuZXcgcHJvbWlzZUN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHN1YnNjcmliZXIgPSBuZXcgU2FmZVN1YnNjcmliZXIoe1xuICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICAgICAgICAgICAgY29tcGxldGU6IHJlc29sdmUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5zb3VyY2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdWJzY3JpYmUoc3Vic2NyaWJlcik7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZVtvYnNlcnZhYmxlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb3BlcmF0aW9ucyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgb3BlcmF0aW9uc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwaXBlRnJvbUFycmF5KG9wZXJhdGlvbnMpKHRoaXMpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUudG9Qcm9taXNlID0gZnVuY3Rpb24gKHByb21pc2VDdG9yKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHByb21pc2VDdG9yID0gZ2V0UHJvbWlzZUN0b3IocHJvbWlzZUN0b3IpO1xuICAgICAgICByZXR1cm4gbmV3IHByb21pc2VDdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZTtcbiAgICAgICAgICAgIF90aGlzLnN1YnNjcmliZShmdW5jdGlvbiAoeCkgeyByZXR1cm4gKHZhbHVlID0geCk7IH0sIGZ1bmN0aW9uIChlcnIpIHsgcmV0dXJuIHJlamVjdChlcnIpOyB9LCBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKHZhbHVlKTsgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5jcmVhdGUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlKSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmUpO1xuICAgIH07XG4gICAgcmV0dXJuIE9ic2VydmFibGU7XG59KCkpO1xuZnVuY3Rpb24gZ2V0UHJvbWlzZUN0b3IocHJvbWlzZUN0b3IpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IHByb21pc2VDdG9yICE9PSBudWxsICYmIHByb21pc2VDdG9yICE9PSB2b2lkIDAgPyBwcm9taXNlQ3RvciA6IGNvbmZpZy5Qcm9taXNlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBQcm9taXNlO1xufVxuZnVuY3Rpb24gaXNPYnNlcnZlcih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiBpc0Z1bmN0aW9uKHZhbHVlLm5leHQpICYmIGlzRnVuY3Rpb24odmFsdWUuZXJyb3IpICYmIGlzRnVuY3Rpb24odmFsdWUuY29tcGxldGUpO1xufVxuZnVuY3Rpb24gaXNTdWJzY3JpYmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIFN1YnNjcmliZXIpIHx8IChpc09ic2VydmVyKHZhbHVlKSAmJiBpc1N1YnNjcmlwdGlvbih2YWx1ZSkpO1xufVxuXG5mdW5jdGlvbiBoYXNMaWZ0KHNvdXJjZSkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKHNvdXJjZSA9PT0gbnVsbCB8fCBzb3VyY2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNvdXJjZS5saWZ0KTtcbn1cbmZ1bmN0aW9uIG9wZXJhdGUoaW5pdCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNMaWZ0KHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UubGlmdChmdW5jdGlvbiAobGlmdGVkU291cmNlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluaXQobGlmdGVkU291cmNlLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGUnKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPcGVyYXRvclN1YnNjcmliZXIoZGVzdGluYXRpb24sIG9uTmV4dCwgb25Db21wbGV0ZSwgb25FcnJvciwgb25GaW5hbGl6ZSkge1xuICAgIHJldHVybiBuZXcgT3BlcmF0b3JTdWJzY3JpYmVyKGRlc3RpbmF0aW9uLCBvbk5leHQsIG9uQ29tcGxldGUsIG9uRXJyb3IsIG9uRmluYWxpemUpO1xufVxudmFyIE9wZXJhdG9yU3Vic2NyaWJlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE9wZXJhdG9yU3Vic2NyaWJlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBPcGVyYXRvclN1YnNjcmliZXIoZGVzdGluYXRpb24sIG9uTmV4dCwgb25Db21wbGV0ZSwgb25FcnJvciwgb25GaW5hbGl6ZSwgc2hvdWxkVW5zdWJzY3JpYmUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGVzdGluYXRpb24pIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm9uRmluYWxpemUgPSBvbkZpbmFsaXplO1xuICAgICAgICBfdGhpcy5zaG91bGRVbnN1YnNjcmliZSA9IHNob3VsZFVuc3Vic2NyaWJlO1xuICAgICAgICBfdGhpcy5fbmV4dCA9IG9uTmV4dFxuICAgICAgICAgICAgPyBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbk5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBfc3VwZXIucHJvdG90eXBlLl9uZXh0O1xuICAgICAgICBfdGhpcy5fZXJyb3IgPSBvbkVycm9yXG4gICAgICAgICAgICA/IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IF9zdXBlci5wcm90b3R5cGUuX2Vycm9yO1xuICAgICAgICBfdGhpcy5fY29tcGxldGUgPSBvbkNvbXBsZXRlXG4gICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IF9zdXBlci5wcm90b3R5cGUuX2NvbXBsZXRlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9wZXJhdG9yU3Vic2NyaWJlci5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFVuc3Vic2NyaWJlIHx8IHRoaXMuc2hvdWxkVW5zdWJzY3JpYmUoKSkge1xuICAgICAgICAgICAgdmFyIGNsb3NlZF8xID0gdGhpcy5jbG9zZWQ7XG4gICAgICAgICAgICBfc3VwZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAhY2xvc2VkXzEgJiYgKChfYSA9IHRoaXMub25GaW5hbGl6ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwodGhpcykpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gT3BlcmF0b3JTdWJzY3JpYmVyO1xufShTdWJzY3JpYmVyKSk7XG5cbnZhciBPYmplY3RVbnN1YnNjcmliZWRFcnJvciA9IGNyZWF0ZUVycm9yQ2xhc3MoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIHJldHVybiBmdW5jdGlvbiBPYmplY3RVbnN1YnNjcmliZWRFcnJvckltcGwoKSB7XG4gICAgICAgIF9zdXBlcih0aGlzKTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ09iamVjdFVuc3Vic2NyaWJlZEVycm9yJztcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gJ29iamVjdCB1bnN1YnNjcmliZWQnO1xuICAgIH07XG59KTtcblxudmFyIFN1YmplY3QgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTdWJqZWN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFN1YmplY3QoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmNsb3NlZCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICAgICAgX3RoaXMub2JzZXJ2ZXJzID0gW107XG4gICAgICAgIF90aGlzLmlzU3RvcHBlZCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgICBfdGhpcy50aHJvd25FcnJvciA9IG51bGw7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgU3ViamVjdC5wcm90b3R5cGUubGlmdCA9IGZ1bmN0aW9uIChvcGVyYXRvcikge1xuICAgICAgICB2YXIgc3ViamVjdCA9IG5ldyBBbm9ueW1vdXNTdWJqZWN0KHRoaXMsIHRoaXMpO1xuICAgICAgICBzdWJqZWN0Lm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgICAgIHJldHVybiBzdWJqZWN0O1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX3Rocm93SWZDbG9zZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE9iamVjdFVuc3Vic2NyaWJlZEVycm9yKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICAgICAgX3RoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgICAgIGlmICghX3RoaXMuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBBcnJheS5mcm9tKF90aGlzLm9ic2VydmVycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMoX3RoaXMuY3VycmVudE9ic2VydmVycyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYnNlcnZlciA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBlcnJvckNvbnRleHQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgICAgIGlmICghX3RoaXMuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGFzRXJyb3IgPSBfdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIF90aGlzLnRocm93bkVycm9yID0gZXJyO1xuICAgICAgICAgICAgICAgIHZhciBvYnNlcnZlcnMgPSBfdGhpcy5vYnNlcnZlcnM7XG4gICAgICAgICAgICAgICAgd2hpbGUgKG9ic2VydmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJzLnNoaWZ0KCkuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGVycm9yQ29udGV4dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciBvYnNlcnZlcnMgPSBfdGhpcy5vYnNlcnZlcnM7XG4gICAgICAgICAgICAgICAgd2hpbGUgKG9ic2VydmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJzLnNoaWZ0KCkuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9ic2VydmVycyA9IHRoaXMuY3VycmVudE9ic2VydmVycyA9IG51bGw7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3ViamVjdC5wcm90b3R5cGUsIFwib2JzZXJ2ZWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAoKF9hID0gdGhpcy5vYnNlcnZlcnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpID4gMDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIFN1YmplY3QucHJvdG90eXBlLl90cnlTdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB0aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgIHJldHVybiBfc3VwZXIucHJvdG90eXBlLl90cnlTdWJzY3JpYmUuY2FsbCh0aGlzLCBzdWJzY3JpYmVyKTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB0aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgIHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMoc3Vic2NyaWJlcik7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbm5lclN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLl9pbm5lclN1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGhhc0Vycm9yID0gX2EuaGFzRXJyb3IsIGlzU3RvcHBlZCA9IF9hLmlzU3RvcHBlZCwgb2JzZXJ2ZXJzID0gX2Eub2JzZXJ2ZXJzO1xuICAgICAgICBpZiAoaGFzRXJyb3IgfHwgaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfU1VCU0NSSVBUSU9OO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudE9ic2VydmVycyA9IG51bGw7XG4gICAgICAgIG9ic2VydmVycy5wdXNoKHN1YnNjcmliZXIpO1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICAgICAgICAgIGFyclJlbW92ZShvYnNlcnZlcnMsIHN1YnNjcmliZXIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgaGFzRXJyb3IgPSBfYS5oYXNFcnJvciwgdGhyb3duRXJyb3IgPSBfYS50aHJvd25FcnJvciwgaXNTdG9wcGVkID0gX2EuaXNTdG9wcGVkO1xuICAgICAgICBpZiAoaGFzRXJyb3IpIHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IodGhyb3duRXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzU3RvcHBlZCkge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5hc09ic2VydmFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBvYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGUoKTtcbiAgICAgICAgb2JzZXJ2YWJsZS5zb3VyY2UgPSB0aGlzO1xuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICB9O1xuICAgIFN1YmplY3QuY3JlYXRlID0gZnVuY3Rpb24gKGRlc3RpbmF0aW9uLCBzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBbm9ueW1vdXNTdWJqZWN0KGRlc3RpbmF0aW9uLCBzb3VyY2UpO1xuICAgIH07XG4gICAgcmV0dXJuIFN1YmplY3Q7XG59KE9ic2VydmFibGUpKTtcbnZhciBBbm9ueW1vdXNTdWJqZWN0ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQW5vbnltb3VzU3ViamVjdCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBbm9ueW1vdXNTdWJqZWN0KGRlc3RpbmF0aW9uLCBzb3VyY2UpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcbiAgICAgICAgX3RoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFub255bW91c1N1YmplY3QucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9iID0gKF9hID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5leHQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBBbm9ueW1vdXNTdWJqZWN0LnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9iID0gKF9hID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVycm9yKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSwgZXJyKTtcbiAgICB9O1xuICAgIEFub255bW91c1N1YmplY3QucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29tcGxldGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTtcbiAgICB9O1xuICAgIEFub255bW91c1N1YmplY3QucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gdGhpcy5zb3VyY2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdWJzY3JpYmUoc3Vic2NyaWJlcikpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IEVNUFRZX1NVQlNDUklQVElPTjtcbiAgICB9O1xuICAgIHJldHVybiBBbm9ueW1vdXNTdWJqZWN0O1xufShTdWJqZWN0KSk7XG5cbnZhciBkYXRlVGltZXN0YW1wUHJvdmlkZXIgPSB7XG4gICAgbm93OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoRGF0ZSkubm93KCk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcblxudmFyIEFjdGlvbiA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFjdGlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBY3Rpb24oc2NoZWR1bGVyLCB3b3JrKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBY3Rpb24ucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24gKHN0YXRlLCBkZWxheSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBBY3Rpb247XG59KFN1YnNjcmlwdGlvbikpO1xuXG52YXIgaW50ZXJ2YWxQcm92aWRlciA9IHtcbiAgICBzZXRJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldEludGVydmFsLmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgIH0sXG4gICAgY2xlYXJJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICByZXR1cm4gKGNsZWFySW50ZXJ2YWwpKGhhbmRsZSk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcblxudmFyIEFzeW5jQWN0aW9uID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXN5bmNBY3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXN5bmNBY3Rpb24oc2NoZWR1bGVyLCB3b3JrKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHNjaGVkdWxlciwgd29yaykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyO1xuICAgICAgICBfdGhpcy53b3JrID0gd29yaztcbiAgICAgICAgX3RoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uIChzdGF0ZSwgZGVsYXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZGVsYXkgPT09IHZvaWQgMCkgeyBkZWxheSA9IDA7IH1cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgICAgIHZhciBpZCA9IHRoaXMuaWQ7XG4gICAgICAgIHZhciBzY2hlZHVsZXIgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHNjaGVkdWxlciwgaWQsIGRlbGF5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgICAgIHRoaXMuaWQgPSAoX2EgPSB0aGlzLmlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLnJlcXVlc3RBc3luY0lkKHNjaGVkdWxlciwgdGhpcy5pZCwgZGVsYXkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZCA9IGZ1bmN0aW9uIChzY2hlZHVsZXIsIF9pZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBpbnRlcnZhbFByb3ZpZGVyLnNldEludGVydmFsKHNjaGVkdWxlci5mbHVzaC5iaW5kKHNjaGVkdWxlciwgdGhpcyksIGRlbGF5KTtcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZCA9IGZ1bmN0aW9uIChfc2NoZWR1bGVyLCBpZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIGlmIChkZWxheSAhPSBudWxsICYmIHRoaXMuZGVsYXkgPT09IGRlbGF5ICYmIHRoaXMucGVuZGluZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW50ZXJ2YWxQcm92aWRlci5jbGVhckludGVydmFsKGlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgQXN5bmNBY3Rpb24ucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoc3RhdGUsIGRlbGF5KSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcignZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICB2YXIgZXJyb3IgPSB0aGlzLl9leGVjdXRlKHN0YXRlLCBkZWxheSk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGVuZGluZyA9PT0gZmFsc2UgJiYgdGhpcy5pZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlciwgdGhpcy5pZCwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5fZXhlY3V0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgX2RlbGF5KSB7XG4gICAgICAgIHZhciBlcnJvcmVkID0gZmFsc2U7XG4gICAgICAgIHZhciBlcnJvclZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy53b3JrKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZXJyb3JlZCA9IHRydWU7XG4gICAgICAgICAgICBlcnJvclZhbHVlID0gZSA/IGUgOiBuZXcgRXJyb3IoJ1NjaGVkdWxlZCBhY3Rpb24gdGhyZXcgZmFsc3kgZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JlZCkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgaWQgPSBfYS5pZCwgc2NoZWR1bGVyID0gX2Euc2NoZWR1bGVyO1xuICAgICAgICAgICAgdmFyIGFjdGlvbnMgPSBzY2hlZHVsZXIuYWN0aW9ucztcbiAgICAgICAgICAgIHRoaXMud29yayA9IHRoaXMuc3RhdGUgPSB0aGlzLnNjaGVkdWxlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGFyclJlbW92ZShhY3Rpb25zLCB0aGlzKTtcbiAgICAgICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQoc2NoZWR1bGVyLCBpZCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRlbGF5ID0gbnVsbDtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEFzeW5jQWN0aW9uO1xufShBY3Rpb24pKTtcblxudmFyIFNjaGVkdWxlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2NoZWR1bGVyKHNjaGVkdWxlckFjdGlvbkN0b3IsIG5vdykge1xuICAgICAgICBpZiAobm93ID09PSB2b2lkIDApIHsgbm93ID0gU2NoZWR1bGVyLm5vdzsgfVxuICAgICAgICB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSBzY2hlZHVsZXJBY3Rpb25DdG9yO1xuICAgICAgICB0aGlzLm5vdyA9IG5vdztcbiAgICB9XG4gICAgU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uICh3b3JrLCBkZWxheSwgc3RhdGUpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBuZXcgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yKHRoaXMsIHdvcmspLnNjaGVkdWxlKHN0YXRlLCBkZWxheSk7XG4gICAgfTtcbiAgICBTY2hlZHVsZXIubm93ID0gZGF0ZVRpbWVzdGFtcFByb3ZpZGVyLm5vdztcbiAgICByZXR1cm4gU2NoZWR1bGVyO1xufSgpKTtcblxudmFyIEFzeW5jU2NoZWR1bGVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXN5bmNTY2hlZHVsZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXN5bmNTY2hlZHVsZXIoU2NoZWR1bGVyQWN0aW9uLCBub3cpIHtcbiAgICAgICAgaWYgKG5vdyA9PT0gdm9pZCAwKSB7IG5vdyA9IFNjaGVkdWxlci5ub3c7IH1cbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgU2NoZWR1bGVyQWN0aW9uLCBub3cpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmFjdGlvbnMgPSBbXTtcbiAgICAgICAgX3RoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFzeW5jU2NoZWR1bGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgdmFyIGFjdGlvbnMgPSB0aGlzLmFjdGlvbnM7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJvcjtcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKChlcnJvciA9IGFjdGlvbi5leGVjdXRlKGFjdGlvbi5zdGF0ZSwgYWN0aW9uLmRlbGF5KSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoKGFjdGlvbiA9IGFjdGlvbnMuc2hpZnQoKSkpO1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICB3aGlsZSAoKGFjdGlvbiA9IGFjdGlvbnMuc2hpZnQoKSkpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQXN5bmNTY2hlZHVsZXI7XG59KFNjaGVkdWxlcikpO1xuXG52YXIgYXN5bmNTY2hlZHVsZXIgPSBuZXcgQXN5bmNTY2hlZHVsZXIoQXN5bmNBY3Rpb24pO1xuXG52YXIgaXNBcnJheUxpa2UgPSAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggJiYgdHlwZW9mIHgubGVuZ3RoID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgeCAhPT0gJ2Z1bmN0aW9uJzsgfSk7XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSh2YWx1ZSkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWx1ZS50aGVuKTtcbn1cblxuZnVuY3Rpb24gaXNJbnRlcm9wT2JzZXJ2YWJsZShpbnB1dCkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKGlucHV0W29ic2VydmFibGVdKTtcbn1cblxuZnVuY3Rpb24gaXNBc3luY0l0ZXJhYmxlKG9iaikge1xuICAgIHJldHVybiBTeW1ib2wuYXN5bmNJdGVyYXRvciAmJiBpc0Z1bmN0aW9uKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9ialtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVJbnZhbGlkT2JzZXJ2YWJsZVR5cGVFcnJvcihpbnB1dCkge1xuICAgIHJldHVybiBuZXcgVHlwZUVycm9yKFwiWW91IHByb3ZpZGVkIFwiICsgKGlucHV0ICE9PSBudWxsICYmIHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgPyAnYW4gaW52YWxpZCBvYmplY3QnIDogXCInXCIgKyBpbnB1dCArIFwiJ1wiKSArIFwiIHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21pc2UsIFJlYWRhYmxlU3RyZWFtLCBBcnJheSwgQXN5bmNJdGVyYWJsZSwgb3IgSXRlcmFibGUuXCIpO1xufVxuXG5mdW5jdGlvbiBnZXRTeW1ib2xJdGVyYXRvcigpIHtcbiAgICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7XG4gICAgICAgIHJldHVybiAnQEBpdGVyYXRvcic7XG4gICAgfVxuICAgIHJldHVybiBTeW1ib2wuaXRlcmF0b3I7XG59XG52YXIgaXRlcmF0b3IgPSBnZXRTeW1ib2xJdGVyYXRvcigpO1xuXG5mdW5jdGlvbiBpc0l0ZXJhYmxlKGlucHV0KSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oaW5wdXQgPT09IG51bGwgfHwgaW5wdXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGlucHV0W2l0ZXJhdG9yXSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtTGlrZVRvQXN5bmNHZW5lcmF0b3IocmVhZGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gX19hc3luY0dlbmVyYXRvcih0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtTGlrZVRvQXN5bmNHZW5lcmF0b3JfMSgpIHtcbiAgICAgICAgdmFyIHJlYWRlciwgX2EsIHZhbHVlLCBkb25lO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICByZWFkZXIgPSByZWFkYWJsZVN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFsxLCAsIDksIDEwXSk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMjtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgX19hd2FpdChyZWFkZXIucmVhZCgpKV07XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBfYSA9IF9iLnNlbnQoKSwgdmFsdWUgPSBfYS52YWx1ZSwgZG9uZSA9IF9hLmRvbmU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZG9uZSkgcmV0dXJuIFszLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBfX2F3YWl0KHZvaWQgMCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyLCBfYi5zZW50KCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFs0LCBfX2F3YWl0KHZhbHVlKV07XG4gICAgICAgICAgICAgICAgY2FzZSA2OiByZXR1cm4gWzQsIF9iLnNlbnQoKV07XG4gICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMl07XG4gICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzMsIDEwXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICAgICAgICAgIGNhc2UgMTA6IHJldHVybiBbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxpa2Uob2JqKSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24ob2JqID09PSBudWxsIHx8IG9iaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb2JqLmdldFJlYWRlcik7XG59XG5cbmZ1bmN0aW9uIGlubmVyRnJvbShpbnB1dCkge1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoaXNJbnRlcm9wT2JzZXJ2YWJsZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tSW50ZXJvcE9ic2VydmFibGUoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FycmF5TGlrZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcm9taXNlKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21Qcm9taXNlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBc3luY0l0ZXJhYmxlKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21Bc3luY0l0ZXJhYmxlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNJdGVyYWJsZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tSXRlcmFibGUoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1JlYWRhYmxlU3RyZWFtTGlrZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tUmVhZGFibGVTdHJlYW1MaWtlKGlucHV0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBjcmVhdGVJbnZhbGlkT2JzZXJ2YWJsZVR5cGVFcnJvcihpbnB1dCk7XG59XG5mdW5jdGlvbiBmcm9tSW50ZXJvcE9ic2VydmFibGUob2JqKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBvYnMgPSBvYmpbb2JzZXJ2YWJsZV0oKTtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob2JzLnN1YnNjcmliZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnMuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlJyk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBmcm9tQXJyYXlMaWtlKGFycmF5KSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoICYmICFzdWJzY3JpYmVyLmNsb3NlZDsgaSsrKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoYXJyYXlbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21Qcm9taXNlKHByb21pc2UpIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgcHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIXN1YnNjcmliZXIuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHsgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZXJyKTsgfSlcbiAgICAgICAgICAgIC50aGVuKG51bGwsIHJlcG9ydFVuaGFuZGxlZEVycm9yKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21JdGVyYWJsZShpdGVyYWJsZSkge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGl0ZXJhYmxlXzEgPSBfX3ZhbHVlcyhpdGVyYWJsZSksIGl0ZXJhYmxlXzFfMSA9IGl0ZXJhYmxlXzEubmV4dCgpOyAhaXRlcmFibGVfMV8xLmRvbmU7IGl0ZXJhYmxlXzFfMSA9IGl0ZXJhYmxlXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gaXRlcmFibGVfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHN1YnNjcmliZXIuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYWJsZV8xXzEgJiYgIWl0ZXJhYmxlXzFfMS5kb25lICYmIChfYSA9IGl0ZXJhYmxlXzEucmV0dXJuKSkgX2EuY2FsbChpdGVyYWJsZV8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBmcm9tQXN5bmNJdGVyYWJsZShhc3luY0l0ZXJhYmxlKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHByb2Nlc3MoYXN5bmNJdGVyYWJsZSwgc3Vic2NyaWJlcikuY2F0Y2goZnVuY3Rpb24gKGVycikgeyByZXR1cm4gc3Vic2NyaWJlci5lcnJvcihlcnIpOyB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21SZWFkYWJsZVN0cmVhbUxpa2UocmVhZGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gZnJvbUFzeW5jSXRlcmFibGUocmVhZGFibGVTdHJlYW1MaWtlVG9Bc3luY0dlbmVyYXRvcihyZWFkYWJsZVN0cmVhbSkpO1xufVxuZnVuY3Rpb24gcHJvY2Vzcyhhc3luY0l0ZXJhYmxlLCBzdWJzY3JpYmVyKSB7XG4gICAgdmFyIGFzeW5jSXRlcmFibGVfMSwgYXN5bmNJdGVyYWJsZV8xXzE7XG4gICAgdmFyIGVfMiwgX2E7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUsIGVfMl8xO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBfYi50cnlzLnB1c2goWzAsIDUsIDYsIDExXSk7XG4gICAgICAgICAgICAgICAgICAgIGFzeW5jSXRlcmFibGVfMSA9IF9fYXN5bmNWYWx1ZXMoYXN5bmNJdGVyYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBbNCwgYXN5bmNJdGVyYWJsZV8xLm5leHQoKV07XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIShhc3luY0l0ZXJhYmxlXzFfMSA9IF9iLnNlbnQoKSwgIWFzeW5jSXRlcmFibGVfMV8xLmRvbmUpKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzeW5jSXRlcmFibGVfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic2NyaWJlci5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAzO1xuICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFszLCAxXTtcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgZV8yXzEgPSBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFs2LCAsIDksIDEwXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGFzeW5jSXRlcmFibGVfMV8xICYmICFhc3luY0l0ZXJhYmxlXzFfMS5kb25lICYmIChfYSA9IGFzeW5jSXRlcmFibGVfMS5yZXR1cm4pKSkgcmV0dXJuIFszLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBfYS5jYWxsKGFzeW5jSXRlcmFibGVfMSldO1xuICAgICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDg7XG4gICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzMsIDEwXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs3XTtcbiAgICAgICAgICAgICAgICBjYXNlIDEwOiByZXR1cm4gWzddO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVTY2hlZHVsZShwYXJlbnRTdWJzY3JpcHRpb24sIHNjaGVkdWxlciwgd29yaywgZGVsYXksIHJlcGVhdCkge1xuICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgIGlmIChyZXBlYXQgPT09IHZvaWQgMCkgeyByZXBlYXQgPSBmYWxzZTsgfVxuICAgIHZhciBzY2hlZHVsZVN1YnNjcmlwdGlvbiA9IHNjaGVkdWxlci5zY2hlZHVsZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdvcmsoKTtcbiAgICAgICAgaWYgKHJlcGVhdCkge1xuICAgICAgICAgICAgcGFyZW50U3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNjaGVkdWxlKG51bGwsIGRlbGF5KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9LCBkZWxheSk7XG4gICAgcGFyZW50U3Vic2NyaXB0aW9uLmFkZChzY2hlZHVsZVN1YnNjcmlwdGlvbik7XG4gICAgaWYgKCFyZXBlYXQpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVkdWxlU3Vic2NyaXB0aW9uO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdGhyb3dFcnJvcihlcnJvck9yRXJyb3JGYWN0b3J5LCBzY2hlZHVsZXIpIHtcbiAgICB2YXIgZXJyb3JGYWN0b3J5ID0gaXNGdW5jdGlvbihlcnJvck9yRXJyb3JGYWN0b3J5KSA/IGVycm9yT3JFcnJvckZhY3RvcnkgOiBmdW5jdGlvbiAoKSB7IHJldHVybiBlcnJvck9yRXJyb3JGYWN0b3J5OyB9O1xuICAgIHZhciBpbml0ID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHsgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZXJyb3JGYWN0b3J5KCkpOyB9O1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShpbml0KTtcbn1cblxudmFyIEVtcHR5RXJyb3IgPSBjcmVhdGVFcnJvckNsYXNzKGZ1bmN0aW9uIChfc3VwZXIpIHsgcmV0dXJuIGZ1bmN0aW9uIEVtcHR5RXJyb3JJbXBsKCkge1xuICAgIF9zdXBlcih0aGlzKTtcbiAgICB0aGlzLm5hbWUgPSAnRW1wdHlFcnJvcic7XG4gICAgdGhpcy5tZXNzYWdlID0gJ25vIGVsZW1lbnRzIGluIHNlcXVlbmNlJztcbn07IH0pO1xuXG5mdW5jdGlvbiBsYXN0VmFsdWVGcm9tKHNvdXJjZSwgY29uZmlnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIF9oYXNWYWx1ZSA9IGZhbHNlO1xuICAgICAgICB2YXIgX3ZhbHVlO1xuICAgICAgICBzb3VyY2Uuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIF92YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIF9oYXNWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6IHJlamVjdCxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKF9oYXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKF92YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVtcHR5RXJyb3IoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWREYXRlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4odmFsdWUpO1xufVxuXG52YXIgVGltZW91dEVycm9yID0gY3JlYXRlRXJyb3JDbGFzcyhmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIFRpbWVvdXRFcnJvckltcGwoaW5mbykge1xuICAgICAgICBpZiAoaW5mbyA9PT0gdm9pZCAwKSB7IGluZm8gPSBudWxsOyB9XG4gICAgICAgIF9zdXBlcih0aGlzKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gJ1RpbWVvdXQgaGFzIG9jY3VycmVkJztcbiAgICAgICAgdGhpcy5uYW1lID0gJ1RpbWVvdXRFcnJvcic7XG4gICAgICAgIHRoaXMuaW5mbyA9IGluZm87XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gdGltZW91dChjb25maWcsIHNjaGVkdWxlckFyZykge1xuICAgIHZhciBfYSA9IChpc1ZhbGlkRGF0ZShjb25maWcpID8geyBmaXJzdDogY29uZmlnIH0gOiB0eXBlb2YgY29uZmlnID09PSAnbnVtYmVyJyA/IHsgZWFjaDogY29uZmlnIH0gOiBjb25maWcpLCBmaXJzdCA9IF9hLmZpcnN0LCBlYWNoID0gX2EuZWFjaCwgX2IgPSBfYS53aXRoLCBfd2l0aCA9IF9iID09PSB2b2lkIDAgPyB0aW1lb3V0RXJyb3JGYWN0b3J5IDogX2IsIF9jID0gX2Euc2NoZWR1bGVyLCBzY2hlZHVsZXIgPSBfYyA9PT0gdm9pZCAwID8gYXN5bmNTY2hlZHVsZXIgOiBfYywgX2QgPSBfYS5tZXRhLCBtZXRhID0gX2QgPT09IHZvaWQgMCA/IG51bGwgOiBfZDtcbiAgICBpZiAoZmlyc3QgPT0gbnVsbCAmJiBlYWNoID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gdGltZW91dCBwcm92aWRlZC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wZXJhdGUoZnVuY3Rpb24gKHNvdXJjZSwgc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgb3JpZ2luYWxTb3VyY2VTdWJzY3JpcHRpb247XG4gICAgICAgIHZhciB0aW1lclN1YnNjcmlwdGlvbjtcbiAgICAgICAgdmFyIGxhc3RWYWx1ZSA9IG51bGw7XG4gICAgICAgIHZhciBzZWVuID0gMDtcbiAgICAgICAgdmFyIHN0YXJ0VGltZXIgPSBmdW5jdGlvbiAoZGVsYXkpIHtcbiAgICAgICAgICAgIHRpbWVyU3Vic2NyaXB0aW9uID0gZXhlY3V0ZVNjaGVkdWxlKHN1YnNjcmliZXIsIHNjaGVkdWxlciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsU291cmNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlubmVyRnJvbShfd2l0aCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlOiBsYXN0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWVuOiBzZWVuLFxuICAgICAgICAgICAgICAgICAgICB9KSkuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBkZWxheSk7XG4gICAgICAgIH07XG4gICAgICAgIG9yaWdpbmFsU291cmNlU3Vic2NyaXB0aW9uID0gc291cmNlLnN1YnNjcmliZShjcmVhdGVPcGVyYXRvclN1YnNjcmliZXIoc3Vic2NyaWJlciwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB0aW1lclN1YnNjcmlwdGlvbiA9PT0gbnVsbCB8fCB0aW1lclN1YnNjcmlwdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHNlZW4rKztcbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCgobGFzdFZhbHVlID0gdmFsdWUpKTtcbiAgICAgICAgICAgIGVhY2ggPiAwICYmIHN0YXJ0VGltZXIoZWFjaCk7XG4gICAgICAgIH0sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoISh0aW1lclN1YnNjcmlwdGlvbiA9PT0gbnVsbCB8fCB0aW1lclN1YnNjcmlwdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGltZXJTdWJzY3JpcHRpb24uY2xvc2VkKSkge1xuICAgICAgICAgICAgICAgIHRpbWVyU3Vic2NyaXB0aW9uID09PSBudWxsIHx8IHRpbWVyU3Vic2NyaXB0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFzdFZhbHVlID0gbnVsbDtcbiAgICAgICAgfSkpO1xuICAgICAgICAhc2VlbiAmJiBzdGFydFRpbWVyKGZpcnN0ICE9IG51bGwgPyAodHlwZW9mIGZpcnN0ID09PSAnbnVtYmVyJyA/IGZpcnN0IDogK2ZpcnN0IC0gc2NoZWR1bGVyLm5vdygpKSA6IGVhY2gpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gdGltZW91dEVycm9yRmFjdG9yeShpbmZvKSB7XG4gICAgdGhyb3cgbmV3IFRpbWVvdXRFcnJvcihpbmZvKTtcbn1cblxuY2xhc3MgTG9hZGVkT25jZVB1Ymxpc2hlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcInN1Y2Nlc3NcIiwgaXNTdWNjZXNzOiB0cnVlLCBsb2FkZWRWYWx1ZTogdmFsdWUgfTtcbiAgICAgIHRoaXMuX3N1YmplY3QubmV4dCh2YWx1ZSk7XG4gICAgICB0aGlzLl9zdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgfTtcbiAgICB0aGlzLnRocm93ID0gKGVycm9yLCBlcnJNc2cpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTG9hZGVkT25jZSBpcyBhbHJlYWR5IGluIHN1Y2Nlc3Mgc3RhdGVcIik7XG4gICAgICB9XG4gICAgICB0aGlzLl9jdXJyZW50ID0geyBzdGF0dXM6IFwiZXJyb3JcIiwgaXNTdWNjZXNzOiBmYWxzZSwgZXJyb3IsIGVyck1zZyB9O1xuICAgICAgdGhpcy5fc3ViamVjdC5lcnJvcihlcnJvcik7XG4gICAgfTtcbiAgICB0aGlzLmdldFZhbHVlSWZMb2FkZWRFbHNlID0gKHZhbHVlSWZOb3RMb2FkZWQpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHJldHVybiB0aGlzLl9jdXJyZW50LmxvYWRlZFZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlSWZOb3RMb2FkZWQ7XG4gICAgfTtcbiAgICB0aGlzLnN1YnNjcmliZSA9IChmbikgPT4ge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICBmbih0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgZm4odGhpcy5fY3VycmVudCk7XG4gICAgICB9XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0YXRlIChuZXh0KTogcGxlYXNlIG1ha2Ugc3VyZSB0byB1cGRhdGUgX2N1cnJlbnQgYmVmb3JlIHRoZSBzdWJqZWN0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbih0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwiZXJyb3JcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZSAoZXJyb3IpOiBwbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSBfY3VycmVudCBiZWZvcmUgdGhlIHN1YmplY3RcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZuKHRoaXMuX2N1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRoaXMud2FpdEZvckxvYWQgPSAodGltZW91dENvbmZpZykgPT4ge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIikgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9jdXJyZW50LmxvYWRlZFZhbHVlKTtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJlcnJvclwiKSByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhpcy5fY3VycmVudC5lcnJvcik7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwiaW5pdGlhbFwiKSBhc3NlcnROZXZlcih0aGlzLl9jdXJyZW50KTtcbiAgICAgIGNvbnN0IHRpbWVvdXRQYXJhbXMgPSB7XG4gICAgICAgIGZpcnN0OiB0aW1lb3V0Q29uZmlnLnRpbWVvdXRTZWMgKiAxZTMsXG4gICAgICAgIHdpdGg6ICgpID0+IHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKHRpbWVvdXRDb25maWcudGltZW91dEVyck1zZykpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5fc3ViamVjdC5waXBlKHRpbWVvdXQodGltZW91dFBhcmFtcykpKTtcbiAgICB9O1xuICAgIHRoaXMuX2N1cnJlbnQgPSB7IHN0YXR1czogXCJpbml0aWFsXCIsIGlzU3VjY2VzczogZmFsc2UgfTtcbiAgICB0aGlzLl9zdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcbiAgfVxuICBnZXQgY3VycmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudDtcbiAgfVxufVxuXG56JDEuZW51bShbXCJkZXZcIiwgXCJzdGdcIiwgXCJwcm9kXCJdKTtcbmNvbnN0IGNvbm50b0Jhc2VVcmxzID0ge1xuICBwcm9kOiBcImh0dHBzOi8vY29ubnRvLmdldG9wZW5wYXkuY29tXCIsXG4gIHN0ZzogXCJodHRwczovL2Nvbm50by5vcGVucGF5c3RhZ2luZy5jb21cIixcbiAgZGV2OiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMFwiXG59O1xuY29uc3QgZ2V0Q29ubnRvVXJsID0gKGVudikgPT4ge1xuICByZXR1cm4gY29ubnRvQmFzZVVybHNbZW52XTtcbn07XG5cbmZ1bmN0aW9uIGFzc2VydE5ldmVyKHZhbHVlKSB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIGNhc2U6ICR7dmFsdWV9YCk7XG59XG5jb25zdCBnZXRXaW5kb3dTYWZlID0gKCkgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIHdpbmRvdztcbn07XG5cbmNvbnN0IG1ldHJpY3NQdWJsaXNoZXIgPSBuZXcgTG9hZGVkT25jZVB1Ymxpc2hlcigpO1xuY29uc3QgTUVUUklDU19RVUVVRV9LRVkgPSBcIm9wX21ldHJpY3NfcXVldWVcIjtcbmNvbnN0IE1BWF9SRVRSWV9BVFRFTVBUUyA9IDM7XG5jb25zdCBCQVRDSF9TSVpFID0gMztcbmNvbnN0IEJBVENIX0lOVEVSVkFMX01TID0gMWUzO1xuY29uc3QgeyBsb2dfXyB9ID0gY3JlYXRlT2pzRmxvd0xvZ2dlcnMoXCJvcC1tZXRyaWNzXCIpO1xuY2xhc3MgTWV0cmljc1F1ZXVlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5xdWV1ZSA9IFtdO1xuICAgIHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gZmFsc2U7XG4gICAgdGhpcy5iYXRjaFRpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID0gMDtcbiAgICB0aGlzLm9mZmxpbmVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgIGxvZ19fKFwiTmV0d29yayBvZmZsaW5lLCBtZXRyaWNzIHdpbGwgYmUgcXVldWVkXCIpO1xuICAgICAgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICB9O1xuICAgIHRoaXMub25saW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBsb2dfXyhcIk5ldHdvcmsgb25saW5lLCBwcm9jZXNzaW5nIG1ldHJpY3MgcXVldWVcIik7XG4gICAgICB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgIH07XG4gICAgdGhpcy5sb2FkUXVldWVGcm9tU3RvcmFnZSgpO1xuICAgIGdldFdpbmRvd1NhZmUoKT8uYWRkRXZlbnRMaXN0ZW5lcihcIm9mZmxpbmVcIiwgdGhpcy5vZmZsaW5lTGlzdGVuZXIpO1xuICAgIGdldFdpbmRvd1NhZmUoKT8uYWRkRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCB0aGlzLm9ubGluZUxpc3RlbmVyKTtcbiAgfVxuICBhZGRFdmVudChldmVudE5hbWUsIHByb3BlcnRpZXMsIGNvbnRleHRQcm9wZXJ0aWVzKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudE5hbWUsXG4gICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzIHx8IHt9LFxuICAgICAgY29udGV4dFByb3BlcnRpZXM6IGNvbnRleHRQcm9wZXJ0aWVzIHx8IHt9LFxuICAgICAgbm9uY2U6IHY0KCksXG4gICAgICB0aW1lc3RhbXA6IHBlcmZvcm1hbmNlLm5vdygpLFxuICAgICAgZGF0ZXRpbWU6ICgvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkudG9JU09TdHJpbmcoKSxcbiAgICAgIGF0dGVtcHRDb3VudDogMCxcbiAgICAgIHRpbWVEaWZmRnJvbVByZXZpb3VzRXZlbnQ6IHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID8gcGVyZm9ybWFuY2Uubm93KCkgLSB0aGlzLmxhc3RFdmVudFRpbWVzdGFtcCA6IDBcbiAgICB9O1xuICAgIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID0gZXZlbnQudGltZXN0YW1wO1xuICAgIHRoaXMucXVldWUucHVzaChldmVudCk7XG4gICAgdGhpcy5zYXZlUXVldWVUb1N0b3JhZ2UoKTtcbiAgICB0aGlzLnNjaGVkdWxlQmF0Y2hQcm9jZXNzaW5nKCk7XG4gIH1cbiAgbG9hZFF1ZXVlRnJvbVN0b3JhZ2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZFF1ZXVlID0gZ2V0V2luZG93U2FmZSgpPy5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oTUVUUklDU19RVUVVRV9LRVkpO1xuICAgICAgaWYgKHN0b3JlZFF1ZXVlKSB7XG4gICAgICAgIHRoaXMucXVldWUgPSBKU09OLnBhcnNlKHN0b3JlZFF1ZXVlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5xdWV1ZSA9IFtdO1xuICAgICAgdGhpcy5zYXZlUXVldWVUb1N0b3JhZ2UoKTtcbiAgICB9XG4gIH1cbiAgc2F2ZVF1ZXVlVG9TdG9yYWdlKCkge1xuICAgIGdldFdpbmRvd1NhZmUoKT8ubG9jYWxTdG9yYWdlLnNldEl0ZW0oTUVUUklDU19RVUVVRV9LRVksIEpTT04uc3RyaW5naWZ5KHRoaXMucXVldWUpKTtcbiAgfVxuICBzY2hlZHVsZUJhdGNoUHJvY2Vzc2luZygpIHtcbiAgICBjb25zdCBzYWZlV2luZG93ID0gZ2V0V2luZG93U2FmZSgpO1xuICAgIGlmIChzYWZlV2luZG93ICYmIG5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMucHJvY2Vzc2luZ1F1ZXVlICYmIHRoaXMucXVldWUubGVuZ3RoID4gMCAmJiAhdGhpcy5iYXRjaFRpbWVvdXQpIHtcbiAgICAgIHRoaXMuYmF0Y2hUaW1lb3V0ID0gc2FmZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5iYXRjaFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgICAgfSwgQkFUQ0hfSU5URVJWQUxfTVMpO1xuICAgIH1cbiAgfVxuICBjYW5jZWxCYXRjaFByb2Nlc3NpbmcoKSB7XG4gICAgaWYgKHRoaXMuYmF0Y2hUaW1lb3V0KSB7XG4gICAgICBnZXRXaW5kb3dTYWZlKCk/LmNsZWFyVGltZW91dCh0aGlzLmJhdGNoVGltZW91dCk7XG4gICAgICB0aGlzLmJhdGNoVGltZW91dCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gZmFsc2U7XG4gIH1cbiAgcHJvY2Vzc1F1ZXVlKCkge1xuICAgIGlmICghbmF2aWdhdG9yLm9uTGluZSB8fCB0aGlzLnByb2Nlc3NpbmdRdWV1ZSB8fCB0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9IHRydWU7XG4gICAgdGhpcy5zZW5kQmF0Y2goKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5xdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBhc3luYyBzZW5kQmF0Y2goKSB7XG4gICAgaWYgKHRoaXMucXVldWUubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgY29udGV4dCA9IG1ldHJpY3NQdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2Uodm9pZCAwKTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIGxvZ19fKFwiTWV0cmljcyBjb250ZXh0IG5vdCBhdmFpbGFibGUsIHdpbGwgcmV0cnkgbGF0ZXJcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGJhdGNoID0gdGhpcy5xdWV1ZS5zbGljZSgwLCBCQVRDSF9TSVpFKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmF0Y2hQYXlsb2FkID0ge1xuICAgICAgICBldmVudHM6IGJhdGNoLm1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXZlbnRfbmFtZTogZXZlbnQuZXZlbnROYW1lLFxuICAgICAgICAgICAgZGV2aWNlX3Rva2VuOiBjb250ZXh0LmRldmljZVRva2VuLFxuICAgICAgICAgICAgY29udGV4dF9wcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIC4uLmNvbnRleHQsXG4gICAgICAgICAgICAgIC4uLmV2ZW50LmNvbnRleHRQcm9wZXJ0aWVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBub25jZTogZXZlbnQubm9uY2UsXG4gICAgICAgICAgICAgIGRhdGV0aW1lOiBldmVudC5kYXRldGltZSxcbiAgICAgICAgICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgIHRpbWVfZGlmZl9mcm9tX3ByZXZpb3VzX2V2ZW50OiBldmVudC50aW1lRGlmZkZyb21QcmV2aW91c0V2ZW50LFxuICAgICAgICAgICAgICBjaGVja291dF9zZWN1cmVfdG9rZW46IGNvbnRleHQuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgICAgICAgLi4uZXZlbnQucHJvcGVydGllc1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgICAgY29uc3QgY29ubnRvVXJsID0gZ2V0Q29ubnRvVXJsKGNvbnRleHQuZW52aXJvbm1lbnQpO1xuICAgICAgY29uc3QgbWV0cmljc1JvdXRlciA9IG5ldyBVUkwoXCIvbWV0cmljcy9wdWJsaWMvY2FwdHVyZVwiLCBjb25udG9VcmwpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChtZXRyaWNzUm91dGVyLnRvU3RyaW5nKCksIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJhdGNoUGF5bG9hZClcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRoaXMucXVldWUgPSB0aGlzLnF1ZXVlLnNsaWNlKGJhdGNoLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuc2F2ZVF1ZXVlVG9TdG9yYWdlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhhbmRsZUZhaWxlZEJhdGNoKGJhdGNoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nX18oXCJFcnJvciBzZW5kaW5nIG1ldHJpY3MgYmF0Y2g6XCIsIGVycm9yKTtcbiAgICAgIHRoaXMuaGFuZGxlRmFpbGVkQmF0Y2goYmF0Y2gpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVGYWlsZWRCYXRjaChiYXRjaCkge1xuICAgIGJhdGNoLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICBldmVudC5hdHRlbXB0Q291bnQrKztcbiAgICB9KTtcbiAgICBjb25zdCBldmVudHNUb0tlZXAgPSBiYXRjaC5maWx0ZXIoKGV2ZW50KSA9PiBldmVudC5hdHRlbXB0Q291bnQgPCBNQVhfUkVUUllfQVRURU1QVFMpO1xuICAgIHRoaXMucXVldWUgPSB0aGlzLnF1ZXVlLnNsaWNlKGJhdGNoLmxlbmd0aCk7XG4gICAgdGhpcy5xdWV1ZSA9IFsuLi5ldmVudHNUb0tlZXAsIC4uLnRoaXMucXVldWVdO1xuICAgIHRoaXMuc2F2ZVF1ZXVlVG9TdG9yYWdlKCk7XG4gIH1cbiAgY2xlYW51cCgpIHtcbiAgICBnZXRXaW5kb3dTYWZlKCk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJvZmZsaW5lXCIsIHRoaXMub2ZmbGluZUxpc3RlbmVyKTtcbiAgICBnZXRXaW5kb3dTYWZlKCk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIiwgdGhpcy5vbmxpbmVMaXN0ZW5lcik7XG4gICAgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgfVxufVxuY29uc3QgbWV0cmljc1F1ZXVlID0gbmV3IE1ldHJpY3NRdWV1ZSgpO1xuZ2V0V2luZG93U2FmZSgpPy5hZGRFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsICgpID0+IHtcbiAgbWV0cmljc1F1ZXVlLnByb2Nlc3NRdWV1ZSgpO1xufSk7XG5cbmNvbnN0IFBheW1lbnRQcm9jZXNzb3IgPSB6JDEuZW51bShbXCJzdHJpcGVcIiwgXCJhaXJ3YWxsZXhcIiwgXCJhdXRob3JpemVfbmV0XCJdKTtcbih7XG4gIHByb2Nlc3NvcjogUGF5bWVudFByb2Nlc3Nvci5FbnVtLnN0cmlwZSxcbiAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICBpc0xvYWRpbmc6IHRydWUsXG4gIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICB9XG59KTtcblxueiQxLm9iamVjdCh7XG4gIGRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lc3NhZ2VIZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSxcbiAgICBlcnJvcnM6IHokMS5hcnJheSh6JDEuYW55KCkpLFxuICAgIG1lc3NhZ2VUeXBlOiB6JDEuc3RyaW5nKCksXG4gICAgbWVzc2FnZUJvZHk6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpXG4gIH0pLFxuICBvcmlnaW46IHokMS5saXRlcmFsKFwiaHR0cHM6Ly9hcHBsZXBheS5jZG4tYXBwbGUuY29tXCIpXG59KTtcblxueiQxLm9iamVjdCh7XG4gIFwib3AtYWlyd2FsbGV4LTNkcy11cmxcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFpcndhbGxleC1pbml0aWFsLWludGVudC1pZFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWlyd2FsbGV4LWNvbnNlbnQtaWRcIjogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJhcHBsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImFpcndhbGxleFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICBnb29nbGVfcGF5X21lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpXG4gIH0pXG59KTtcbmNvbnN0IEFXWF9MT0FESU5HID0ge1xuICBpc0F2YWlsYWJsZTogZmFsc2UsXG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gIH1cbn07XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJhcHBsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImF1dGhvcml6ZV9uZXRcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSk7XG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pO1xuXG56JDEub2JqZWN0KHtcbiAgXCJvcC1wb2NreXQtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXR4bi1ub1wiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXJlZi1ub1wiOiB6JDEuc3RyaW5nKClcbn0pO1xuXG5jb25zdCBBZHllbkVudmlyb25tZW50ID0geiQxLmVudW0oW1widGVzdFwiLCBcImxpdmVcIiwgXCJsaXZlLXVzXCIsIFwibGl2ZS1pblwiLCBcImxpdmUtYXBzZVwiLCBcImxpdmUtYXVcIl0pO1xueiQxLmVudW0oW1xuICBcImFyXCIsXG4gIFwiYmctQkdcIixcbiAgXCJjYS1FU1wiLFxuICBcImNzLUNaXCIsXG4gIFwiZGEtREtcIixcbiAgXCJkZS1ERVwiLFxuICBcImVsLUdSXCIsXG4gIFwiZW4tVVNcIixcbiAgXCJlcy1FU1wiLFxuICBcImV0LUVFXCIsXG4gIFwiZmktRklcIixcbiAgXCJmci1GUlwiLFxuICBcImhyLUhSXCIsXG4gIFwiaHUtSFVcIixcbiAgXCJpcy1JU1wiLFxuICBcIml0LUlUXCIsXG4gIFwiamEtSlBcIixcbiAgXCJrby1LUlwiLFxuICBcImx0LUxUXCIsXG4gIFwibHYtTFZcIixcbiAgXCJubC1OTFwiLFxuICBcIm5vLU5PXCIsXG4gIFwicGwtUExcIixcbiAgXCJwdC1CUlwiLFxuICBcInB0LVBUXCIsXG4gIFwicm8tUk9cIixcbiAgXCJydS1SVVwiLFxuICBcInNrLVNLXCIsXG4gIFwic2wtU0lcIixcbiAgXCJzdi1TRVwiLFxuICBcInpoLUNOXCIsXG4gIFwiemgtVFdcIlxuXSk7XG56JDEub2JqZWN0KHtcbiAgXCJvcC1hY2NvdW50LWlkXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1hZHllbi1jbGllbnQta2V5XCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1hZHllbi1lbnZpcm9ubWVudFwiOiBBZHllbkVudmlyb25tZW50LFxuICBcIm9wLWFkeWVuLWFjdGlvblwiOiB6JDEuc3RyaW5nKClcbn0pO1xuXG56JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIG91cl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpXG4gIH0pXG4pLmxlbmd0aCgxKTtcblxueiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImxvb3BcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImNyeXB0b1wiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgZW50aXR5X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgYXBpX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gICAgc3VwcG9ydGVkX2N1cnJlbmNpZXM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICAgIGVudmlyb25tZW50OiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xudmFyIFBheUluU3RhdGUgPSAvKiBAX19QVVJFX18gKi8gKChQYXlJblN0YXRlMikgPT4ge1xuICBQYXlJblN0YXRlMltcIklETEVcIl0gPSBcImlkbGVcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDT05GSVJNSU5HX0JBTEFOQ0VcIl0gPSBcImNvbmZpcm1pbmdCYWxhbmNlXCI7XG4gIFBheUluU3RhdGUyW1wiQ09ORklSTUlOR19BVVRIT1JJWkFUSU9OXCJdID0gXCJjb25maXJtaW5nQXV0aG9yaXphdGlvblwiO1xuICBQYXlJblN0YXRlMltcIlVQREFUSU5HX0FVVEhPUklaQVRJT05cIl0gPSBcInVwZGF0aW5nQXV0aG9yaXphdGlvblwiO1xuICBQYXlJblN0YXRlMltcIlNJR05JTkdfTUVTU0FHRVwiXSA9IFwic2lnbmluZ01lc3NhZ2VcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDUkVBVElOR19DVVNUT01FUlwiXSA9IFwiY3JlYXRpbmdDdXN0b21lclwiO1xuICBQYXlJblN0YXRlMltcIlBST0NFU1NJTkdfUEFZTUVOVFwiXSA9IFwicHJvY2Vzc2luZ1BheW1lbnRcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDUkVBVElOR19QQVlNRU5UXCJdID0gXCJjcmVhdGluZ1BheW1lbnRcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDT05GSVJNSU5HX1BBWU1FTlRcIl0gPSBcImNvbmZpcm1pbmdQYXltZW50XCI7XG4gIFBheUluU3RhdGUyW1wiQ09NUExFVEVcIl0gPSBcImNvbXBsZXRlXCI7XG4gIHJldHVybiBQYXlJblN0YXRlMjtcbn0pKFBheUluU3RhdGUgfHwge30pO1xuXG5jb25zdCBMT09QX0xPQURJTkcgPSB7XG4gIGlzQXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNMb2FkaW5nOiB0cnVlLFxuICBjb25maWc6IG51bGwsXG4gIHdpZGdldDogbnVsbFxufTtcbnokMS5vYmplY3Qoe1xuICBbXCJsb29wRmlyc3ROYW1lXCJdOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wibG9vcExhc3ROYW1lXCJdOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wibG9vcEVtYWlsXCJdOiBSZXF1aXJlZFN0cmluZyxcbiAgW0ZpZWxkTmFtZS5QUk9NT1RJT05fQ09ERV06IE9wdGlvbmFsU3RyaW5nXG59KTtcbnokMS5vYmplY3Qoe1xuICBbXCJsb29wRmlyc3ROYW1lXCJdOiBPcHRpb25hbFN0cmluZyxcbiAgW1wibG9vcExhc3ROYW1lXCJdOiBPcHRpb25hbFN0cmluZyxcbiAgW1wibG9vcEVtYWlsXCJdOiBPcHRpb25hbFN0cmluZyxcbiAgW0ZpZWxkTmFtZS5QUk9NT1RJT05fQ09ERV06IE9wdGlvbmFsU3RyaW5nXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInBvY2t5dFwiKSxcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwicGF5cGFsXCIpXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgcGF5cGFsX2lmcmFtZV91cmw6IHokMS5zdHJpbmcoKSxcbiAgICB2ZXJpZnlfdG9rZW46IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJzdHJpcGVfbGlua1wiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xueiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBvdXJfZXhpc3RpbmdfcG1faWQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnVuaW9uKFt6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSwgeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpXSksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcblxuY29uc3QgUFJfTE9BRElORyA9IHtcbiAgaXNMb2FkaW5nOiB0cnVlLFxuICBpc0F2YWlsYWJsZTogZmFsc2UsXG4gIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGBzdGFydEZsb3cgdHJpZ2dlcmVkIHdoaWxlIHBheW1lbnQgcmVxdWVzdCBpcyBzdGlsbCBub3QgcmVhZHkuIFxuICAgICAgWW91IGNhbiBjaGVjayB0aGUgXCIuaXNMb2FkaW5nXCIgcGFyYW0gdG8ga25vdyB3aGVuIGEgcGF5bWVudCByZXF1ZXN0IGlzIHN0aWxsIGxvYWRpbmcsIFxuICAgICAgYW5kIFwiLmlzQXZhaWxhYmxlXCIgdG8ga25vdyBpZiBhIHBheW1lbnQgcmVxdWVzdCBpcyBhdmFpbGFibGUuYFxuICAgICk7XG4gIH1cbn07XG5cbmNvbnN0IHsgZXJyX18gfSA9IGNyZWF0ZU9qc0Zsb3dMb2dnZXJzKFwiZm9ybS1jYWxsYmFja3NcIik7XG5jb25zdCBPcHRpb25hbEZuID0geiQxLmZ1bmN0aW9uKCkub3B0aW9uYWwoKTtcbmNvbnN0IFpvZEZvcm1DYWxsYmFja3MgPSB6JDEub2JqZWN0KHtcbiAgb25Gb2N1czogT3B0aW9uYWxGbixcbiAgb25CbHVyOiBPcHRpb25hbEZuLFxuICBvbkNoYW5nZTogT3B0aW9uYWxGbixcbiAgb25Mb2FkOiBPcHRpb25hbEZuLFxuICBvbkxvYWRFcnJvcjogT3B0aW9uYWxGbixcbiAgb25WYWxpZGF0aW9uRXJyb3I6IE9wdGlvbmFsRm4sXG4gIG9uQ2hlY2tvdXRTdGFydGVkOiBPcHRpb25hbEZuLFxuICBvbkNoZWNrb3V0U3VjY2VzczogT3B0aW9uYWxGbixcbiAgb25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzOiBPcHRpb25hbEZuLFxuICBvbkNoZWNrb3V0RXJyb3I6IE9wdGlvbmFsRm4sXG4gIG9uUGF5bWVudFJlcXVlc3RMb2FkOiBPcHRpb25hbEZuXG59KTtcbmNsYXNzIEZvcm1DYWxsYmFja3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvKipcbiAgICAgKiBTZXRzIEFMTCBmb3JtIGNhbGxiYWNrcy4gTm90ZSB0aGF0IGFsbCBvbGQgY2FsbGJhY2tzIGFyZSByZW1vdmVkLlxuICAgICAqL1xuICAgIHRoaXMuc2V0Q2FsbGJhY2tzID0gKHJhd0NhbGxiYWNrcykgPT4ge1xuICAgICAgdGhpcy5fY2FsbGJhY2tzID0gRm9ybUNhbGxiYWNrcy5jcmVhdGVFbXB0eUNhbGxiYWNrcygpO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmF3Q2FsbGJhY2tzKS5mb3JFYWNoKChba2V5LCByYXdDYWxsYmFja10pID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZUNhbGxiYWNrID0gbWFrZUNhbGxiYWNrU2FmZShrZXksIHJhd0NhbGxiYWNrID8/IEZvcm1DYWxsYmFja3MuTk9PUCwgZXJyX18pO1xuICAgICAgICB0aGlzLl9jYWxsYmFja3Nba2V5XSA9IHNhZmVDYWxsYmFjaztcbiAgICAgIH0pO1xuICAgIH07XG4gICAgdGhpcy5fY2FsbGJhY2tzID0gRm9ybUNhbGxiYWNrcy5jcmVhdGVFbXB0eUNhbGxiYWNrcygpO1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5OT09QID0gKCkgPT4ge1xuICAgIH07XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLmNyZWF0ZUVtcHR5Q2FsbGJhY2tzID0gKCkgPT4ge1xuICAgICAgY29uc3QgeCA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoWm9kRm9ybUNhbGxiYWNrcy5rZXlvZigpLmVudW0pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB4W2tleV0gPSBGb3JtQ2FsbGJhY2tzLk5PT1A7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB4O1xuICAgIH07XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLmZyb21PYmplY3QgPSAob2JqKSA9PiB7XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBGb3JtQ2FsbGJhY2tzKCk7XG4gICAgICBpbnN0YW5jZS5zZXRDYWxsYmFja3MoWm9kRm9ybUNhbGxiYWNrcy5wYXJzZShvYmopKTtcbiAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVhZC1vbmx5IHZlcnNpb24gb2YgdGhlIGNhbGxiYWNrcyBvYmplY3QuXG4gICAqL1xuICBnZXQgZ2V0KCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX2NhbGxiYWNrcyB9O1xuICB9XG59XG5cbmNvbnN0IHVzZVJlYWN0aXZlRm9ybUNhbGxiYWNrcyA9IChwcm9wcykgPT4ge1xuICBjb25zdCBmb3JtQ2FsbGJhY2tzID0gRm9ybUNhbGxiYWNrcy5mcm9tT2JqZWN0KHtcbiAgICBvbkZvY3VzOiBwcm9wcy5vbkZvY3VzLFxuICAgIG9uQmx1cjogcHJvcHMub25CbHVyLFxuICAgIG9uQ2hhbmdlOiBwcm9wcy5vbkNoYW5nZSxcbiAgICBvbkxvYWQ6IHByb3BzLm9uTG9hZCxcbiAgICBvbkxvYWRFcnJvcjogcHJvcHMub25Mb2FkRXJyb3IsXG4gICAgb25WYWxpZGF0aW9uRXJyb3I6IHByb3BzLm9uVmFsaWRhdGlvbkVycm9yLFxuICAgIG9uQ2hlY2tvdXRTdGFydGVkOiBwcm9wcy5vbkNoZWNrb3V0U3RhcnRlZCxcbiAgICBvbkNoZWNrb3V0U3VjY2VzczogcHJvcHMub25DaGVja291dFN1Y2Nlc3MsXG4gICAgb25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzOiBwcm9wcy5vblNldHVwUGF5bWVudE1ldGhvZFN1Y2Nlc3MsXG4gICAgb25DaGVja291dEVycm9yOiBwcm9wcy5vbkNoZWNrb3V0RXJyb3IsXG4gICAgb25QYXltZW50UmVxdWVzdExvYWQ6IHByb3BzLm9uUGF5bWVudFJlcXVlc3RMb2FkXG4gIH0pO1xuICBpZiAoT3QuZ2V0SW5zdGFuY2UoKSkge1xuICAgIE90LmdldEluc3RhbmNlKCk/LnVwZGF0ZUNhbGxiYWNrcyhmb3JtQ2FsbGJhY2tzLmdldCk7XG4gIH1cbiAgcmV0dXJuIGZvcm1DYWxsYmFja3MuZ2V0O1xufTtcblxuY29uc3QgdXNlUGF5bWVudFJlcXVlc3RzID0gKG9yaWdpbmFsT25QYXltZW50UmVxdWVzdExvYWQpID0+IHtcbiAgY29uc3QgW3BheW1lbnRSZXF1ZXN0cywgc2V0UGF5bWVudFJlcXVlc3RzXSA9IHVzZVN0YXRlKHtcbiAgICBhcHBsZV9wYXk6IFBSX0xPQURJTkcsXG4gICAgZ29vZ2xlX3BheTogUFJfTE9BRElOR1xuICB9KTtcbiAgY29uc3Qgb3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQgPSB1c2VDYWxsYmFjayhcbiAgICAocGF5bWVudFJlcXVlc3RzMikgPT4ge1xuICAgICAgc2V0UGF5bWVudFJlcXVlc3RzKHBheW1lbnRSZXF1ZXN0czIpO1xuICAgICAgb3JpZ2luYWxPblBheW1lbnRSZXF1ZXN0TG9hZD8uKHBheW1lbnRSZXF1ZXN0czIpO1xuICAgIH0sXG4gICAgW29yaWdpbmFsT25QYXltZW50UmVxdWVzdExvYWRdXG4gICk7XG4gIHJldHVybiB7IHBheW1lbnRSZXF1ZXN0cywgb3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQgfTtcbn07XG5cbmNvbnN0IEZPUk1fVEFSR0VUID0gXCJvcF9vanNfZm9ybVwiO1xuY29uc3QgRWxlbWVudHNGb3JtID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcEZvcm0sIHNldE9wRm9ybV0gPSB1c2VTdGF0ZSgpO1xuICBjb25zdCBbZWxlbWVudHNDb250ZXh0VmFsdWUsIHNldEVsZW1lbnRzQ29udGV4dFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCB7IHBheW1lbnRSZXF1ZXN0cywgb3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQgfSA9IHVzZVBheW1lbnRSZXF1ZXN0cyhwcm9wcy5vblBheW1lbnRSZXF1ZXN0TG9hZCk7XG4gIGNvbnN0IFtsb2FkZWQsIHNldExvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzdHJpcGVMaW5rQ3RybCwgc2V0U3RyaXBlTGlua0N0cmxdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtsb29wQ29uZmlnLCBzZXRMb29wQ29uZmlnXSA9IHVzZVN0YXRlKExPT1BfTE9BRElORyk7XG4gIGNvbnN0IFthaXJ3YWxsZXgsIHNldEFpcndhbGxleF0gPSB1c2VTdGF0ZSh7XG4gICAgZ29vZ2xlUGF5OiBBV1hfTE9BRElORyxcbiAgICBhcHBsZVBheTogQVdYX0xPQURJTkdcbiAgfSk7XG4gIGNvbnN0IGZvcm1DYWxsYmFja3MgPSB1c2VSZWFjdGl2ZUZvcm1DYWxsYmFja3Moe1xuICAgIC4uLnByb3BzLFxuICAgIG9uUGF5bWVudFJlcXVlc3RMb2FkOiBvdmVycmlkZW5PblBheW1lbnRSZXF1ZXN0TG9hZCxcbiAgICBvbkxvYWQ6ICh0b3RhbEFtb3VudEF0b21zLCBjdXJyZW5jeSkgPT4ge1xuICAgICAgc2V0TG9hZGVkKHRydWUpO1xuICAgICAgcHJvcHMub25Mb2FkPy4odG90YWxBbW91bnRBdG9tcywgY3VycmVuY3kpO1xuICAgIH1cbiAgfSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9wRm9ybSkgcmV0dXJuO1xuICAgIGNvbnN0IGZvcm0gPSBPdC5nZXRJbnN0YW5jZSgpID8/IG5ldyBPdCh7XG4gICAgICBjaGVja291dFNlY3VyZVRva2VuOiBwcm9wcy5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgZm9ybVRhcmdldDogYCMke0ZPUk1fVEFSR0VUfWAsXG4gICAgICBiYXNlVXJsOiBwcm9wcy5iYXNlVXJsLFxuICAgICAgY3VzdG9tSW5pdFBhcmFtczogcHJvcHMuY3VzdG9tSW5pdFBhcmFtcyxcbiAgICAgIC4uLmZvcm1DYWxsYmFja3NcbiAgICB9KTtcbiAgICBzZXRPcEZvcm0oZm9ybSk7XG4gICAgY29uc3QgdmFsdWUgPSBnZXRFbGVtZW50c0NvbnRleHRWYWx1ZShmb3JtKTtcbiAgICBzZXRFbGVtZW50c0NvbnRleHRWYWx1ZSh2YWx1ZSk7XG4gICAgZm9ybS5pbml0Rmxvd3Muc3RyaXBlTGluay5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZS5pc0F2YWlsYWJsZSkge1xuICAgICAgICBzZXRTdHJpcGVMaW5rQ3RybChyZXN1bHQubG9hZGVkVmFsdWUuY29udHJvbGxlcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZm9ybS5pbml0Rmxvd3MubG9vcC5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZS5pc0F2YWlsYWJsZSkge1xuICAgICAgICBzZXRMb29wQ29uZmlnKHtcbiAgICAgICAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIHdpZGdldDogcmVzdWx0LmxvYWRlZFZhbHVlLndpZGdldFByb3BzLFxuICAgICAgICAgIGNvbmZpZzogcmVzdWx0LmxvYWRlZFZhbHVlLmluaXRMb29wQ29ubmVjdFByb3BzXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmICFyZXN1bHQubG9hZGVkVmFsdWUuaXNBdmFpbGFibGUpIHtcbiAgICAgICAgc2V0TG9vcENvbmZpZyh7XG4gICAgICAgICAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgd2lkZ2V0OiBudWxsLFxuICAgICAgICAgIGNvbmZpZzogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmb3JtLmluaXRGbG93cy5haXJ3YWxsZXhHb29nbGVQYXkucHVibGlzaGVyLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcyAmJiByZXN1bHQubG9hZGVkVmFsdWUpIHtcbiAgICAgICAgc2V0QWlyd2FsbGV4KChwcmV2KSA9PiAoe1xuICAgICAgICAgIGFwcGxlUGF5OiBwcmV2LmFwcGxlUGF5LFxuICAgICAgICAgIGdvb2dsZVBheTogcmVzdWx0LmxvYWRlZFZhbHVlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmb3JtLmluaXRGbG93cy5haXJ3YWxsZXhBcHBsZVBheS5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZSkge1xuICAgICAgICBzZXRBaXJ3YWxsZXgoKHByZXYpID0+ICh7XG4gICAgICAgICAgZ29vZ2xlUGF5OiBwcmV2Lmdvb2dsZVBheSxcbiAgICAgICAgICBhcHBsZVBheTogcmVzdWx0LmxvYWRlZFZhbHVlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZm9ybS5kZXN0cm95KCk7XG4gICAgfTtcbiAgfSwgW10pO1xuICBpZiAoIW9wRm9ybSkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7fSk7XG4gIH1cbiAgY29uc3QgY2hpbGRyZW5Qcm9wcyA9IHtcbiAgICBzdWJtaXQ6IG9wRm9ybS5zdWJtaXRDYXJkLFxuICAgIHN1Ym1pdFdpdGg6IG9wRm9ybS5nZW5lcmFsU3VibWl0LFxuICAgIGFwcGxlUGF5OiBwYXltZW50UmVxdWVzdHMuYXBwbGVfcGF5LFxuICAgIGdvb2dsZVBheTogcGF5bWVudFJlcXVlc3RzLmdvb2dsZV9wYXksXG4gICAgbG9hZGVkLFxuICAgIC8vIERpc2FibGUgZHluYW1pYyBwcmV2aWV3cyBmZWF0dXJlIGZvciBub3dcbiAgICBwcmV2aWV3OiB7XG4gICAgICBhbW91bnQ6IG51bGwsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZXJyb3I6IG51bGxcbiAgICB9LFxuICAgIHN0cmlwZUxpbms6IHN0cmlwZUxpbmtDdHJsLFxuICAgIGFpcndhbGxleCxcbiAgICBsb29wOiBsb29wQ29uZmlnXG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7IGNoaWxkcmVuOiBlbGVtZW50c0NvbnRleHRWYWx1ZSA/IC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudHNDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBlbGVtZW50c0NvbnRleHRWYWx1ZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBpZDogRk9STV9UQVJHRVQsIGNsYXNzTmFtZTogcHJvcHMuY2xhc3NOYW1lLCBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW4oY2hpbGRyZW5Qcm9wcykgfSkgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7fSkgfSk7XG59O1xuY29uc3QgZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUgPSAob3BGb3JtKSA9PiB7XG4gIHJldHVybiB7XG4gICAgZm9ybUlkOiBvcEZvcm0uZm9ybUlkLFxuICAgIGZvcm1IZWlnaHQ6IG9wRm9ybS5mb3JtUHJvcGVydGllcy5oZWlnaHQsXG4gICAgcmVmZXJyZXI6IG9wRm9ybS5yZWZlcnJlcixcbiAgICBjaGVja291dFNlY3VyZVRva2VuOiBvcEZvcm0uY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICByZWdpc3RlcklmcmFtZTogb3BGb3JtLnJlZ2lzdGVySWZyYW1lLFxuICAgIGJhc2VVcmw6IG9wRm9ybS5iYXNlVXJsXG4gIH07XG59O1xuXG5jb25zdCBFbGVtZW50RnJhbWUgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBlbGVtZW50VHlwZSwgc3R5bGVzIH0gPSBwcm9wcztcbiAgY29uc3QgeyBmb3JtSWQsIHJlZmVycmVyLCBmb3JtSGVpZ2h0LCBjaGVja291dFNlY3VyZVRva2VuLCByZWdpc3RlcklmcmFtZSwgYmFzZVVybCB9ID0gdXNlT3BlblBheUVsZW1lbnRzKCk7XG4gIGNvbnN0IHN1YlBhdGggPSBlbGVtZW50VHlwZS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBbaGFzTG9hZGVkLCBzZXRIYXNMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpZnJhbWVSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGVsZW1lbnRTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc3R5bGVzKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gY29udmVydFN0eWxlc1RvUXVlcnlTdHJpbmcoc3R5bGVzKTtcbiAgfSwgW3N0eWxlc10pO1xuICBjb25zdCBmcmFtZVN0eWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBoZWlnaHQ6IGZvcm1IZWlnaHRcbiAgICB9O1xuICB9LCBbZm9ybUhlaWdodF0pO1xuICBjb25zdCBxdWVyeVN0cmluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghY2hlY2tvdXRTZWN1cmVUb2tlbiB8fCAhcmVmZXJyZXIpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuYXBwZW5kKFwicmVmZXJlclwiLCByZWZlcnJlcik7XG4gICAgcGFyYW1zLmFwcGVuZChcInN0eWxlc1wiLCBlbGVtZW50U3R5bGUpO1xuICAgIHBhcmFtcy5hcHBlbmQoXCJmb3JtSWRcIiwgZm9ybUlkKTtcbiAgICBwYXJhbXMuYXBwZW5kKFwic2VjdXJlVG9rZW5cIiwgY2hlY2tvdXRTZWN1cmVUb2tlbik7XG4gICAgcmV0dXJuIHBhcmFtcy50b1N0cmluZygpO1xuICB9LCBbZWxlbWVudFN0eWxlLCBmb3JtSWQsIHJlZmVycmVyLCBjaGVja291dFNlY3VyZVRva2VuXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRIYXNMb2FkZWQodHJ1ZSksIFtdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlmcmFtZVJlZi5jdXJyZW50IHx8ICFoYXNMb2FkZWQpIHJldHVybjtcbiAgICByZWdpc3RlcklmcmFtZShlbGVtZW50VHlwZSwgaWZyYW1lUmVmLmN1cnJlbnQpO1xuICB9LCBbaGFzTG9hZGVkXSk7XG4gIGlmICghY2hlY2tvdXRTZWN1cmVUb2tlbikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJbZm9ybV0gQ2Fubm90IHJlbmRlciBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgZnJhbWVcIik7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwge30pO1xuICB9XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoYC9hcHAvdjEvJHtzdWJQYXRofS1lbGVtZW50L2AsIGJhc2VVcmwpO1xuICB1cmwuc2VhcmNoID0gcXVlcnlTdHJpbmc7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiaWZyYW1lXCIsXG4gICAge1xuICAgICAgaWQ6IGBvanMtJHtzdWJQYXRofS1lbGVtZW50YCxcbiAgICAgIG5hbWU6IGAke3N1YlBhdGh9LWVsZW1lbnRgLFxuICAgICAgY2xhc3NOYW1lOiBcIm9qcy1pZnJhbWVcIixcbiAgICAgIHNyYzogdXJsLnRvU3RyaW5nKCksXG4gICAgICBzdHlsZTogZnJhbWVTdHlsZSxcbiAgICAgIHJlZjogaWZyYW1lUmVmXG4gICAgfVxuICApO1xufTtcblxuY29uc3QgQ2FyZEN2Y0VsZW1lbnQgPSAoeyBzdHlsZXMgfSkgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChFbGVtZW50RnJhbWUsIHsgc3R5bGVzLCBlbGVtZW50VHlwZTogRWxlbWVudFR5cGVFbnVtLkNBUkRfQ1ZDIH0pO1xufTtcblxuY29uc3QgQ2FyZEVsZW1lbnQgPSAoeyBzdHlsZXMgfSkgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChFbGVtZW50RnJhbWUsIHsgc3R5bGVzLCBlbGVtZW50VHlwZTogRWxlbWVudFR5cGVFbnVtLkNBUkQgfSk7XG59O1xuXG5jb25zdCBDYXJkRXhwaXJ5RWxlbWVudCA9ICh7IHN0eWxlcyB9KSA9PiB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEVsZW1lbnRGcmFtZSwgeyBzdHlsZXMsIGVsZW1lbnRUeXBlOiBFbGVtZW50VHlwZUVudW0uQ0FSRF9FWFBJUlkgfSk7XG59O1xuXG5jb25zdCBDYXJkTnVtYmVyRWxlbWVudCA9ICh7IHN0eWxlcyB9KSA9PiB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEVsZW1lbnRGcmFtZSwgeyBzdHlsZXMsIGVsZW1lbnRUeXBlOiBFbGVtZW50VHlwZUVudW0uQ0FSRF9OVU1CRVIgfSk7XG59O1xuXG5leHBvcnQgeyBDYXJkQ3ZjRWxlbWVudCwgQ2FyZEVsZW1lbnQsIENhcmRFeHBpcnlFbGVtZW50LCBDYXJkTnVtYmVyRWxlbWVudCwgRWxlbWVudHNGb3JtLCBGaWVsZE5hbWUsIFBheUluU3RhdGUsIHVzZU9wZW5QYXlFbGVtZW50cyB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsaUJBQUFBLElBQWUsY0FBQUMsSUFBWSxZQUFBQyxJQUFVLGVBQUFDLElBQWEsYUFBQUMsSUFBVyxVQUFBQyxJQUFRLFdBQUFDLFVBQWU7QUFDN0YsU0FBUyxPQUFBQyxHQUFLLFlBQUFDLFVBQWdCO0FBQzlCLFNBQVMsS0FBS0MsU0FBVztBQUN6QixTQUFTLE1BQUFDLFVBQVU7QUFDbkIsU0FBUyxrQkFBQUMsVUFBc0I7QUFDL0IsT0FBT0MsUUFBUTtBQUVmLE1BQU1DLEtBQWtCYixHQUFjO0FBQUEsRUFDcEMsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUFBLEVBQ1YscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCLE1BQU07QUFBQSxFQUN0QjtBQUFBLEVBQ0EsU0FBUztBQUNYLENBQUMsR0FFS2MsS0FBcUIsTUFBTTtBQUMvQixRQUFNQyxJQUFVZCxHQUFXWSxFQUFlO0FBQzFDLE1BQUksQ0FBQ0U7QUFDSCxVQUFNLElBQUksTUFBTSxtRUFBbUU7QUFFckYsU0FBT0E7QUFDVCxHQUVNQyxLQUFLLDhCQUE4QkMsS0FBS1IsRUFBSSxPQUFPO0FBQUEsRUFDdkQsTUFBTUEsRUFBSSxPQUFPO0FBQUEsRUFDakIsS0FBS0EsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzNCLEtBQUtBLEVBQUksT0FBTztBQUFBLEVBQ2hCLEtBQUtBLEVBQUksT0FBTztBQUNsQixDQUFDLEdBQUdTLEtBQUtULEVBQUksTUFBTVEsRUFBRSxHQUFHRSxLQUFLVixFQUFJLE9BQU87QUFBQSxFQUN0QyxNQUFNQSxFQUFJLE9BQU87QUFBQSxFQUNqQixTQUFTQSxFQUFJLE9BQU87QUFBQSxFQUNwQixNQUFNQSxFQUFJLE1BQU1BLEVBQUksT0FBTyxDQUFDO0FBQzlCLENBQUMsR0FBR1csS0FBS1gsRUFBSSxNQUFNVSxFQUFFLEdBQUdFLEtBQUs7QUFBQSxFQUMzQixtQkFBbUI7QUFDckIsR0FBR0MsS0FBSyxDQUFDLE1BQU07QUFDYixRQUFNQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUs7QUFDL0IsU0FBT0YsR0FBR0UsQ0FBQyxLQUFLO0FBQ2xCLEdBQUdDLEtBQUssQ0FBQyxNQUFNO0FBQ2IsTUFBSTtBQUNGLFdBQU8sT0FBTyxLQUFLLE1BQU0sQ0FBQyxLQUFLO0FBQUEsRUFDakMsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0YsR0FBR0MsS0FBSyxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUlILEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJO0FBQUEsRUFDN0MsRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLQSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLO0FBQUEsQ0FDckMsQ0FBQyxJQUFJSSxLQUFLLENBQUMsTUFBTTtBQUFBLEVBQ2hCLEVBQUUsSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLEtBQUssS0FBSyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUs7QUFBQSxDQUMxRCxDQUFDLElBQUlDLElBQUksQ0FBQyxNQUFNO0FBQ2YsTUFBSSxhQUFhO0FBQ2YsUUFBSUgsR0FBRyxFQUFFLE9BQU8sR0FBRztBQUNqQixZQUFNRCxJQUFJLEtBQUssTUFBTSxFQUFFLE9BQU87QUFDOUIsYUFBT0wsR0FBRyxVQUFVSyxDQUFDLEVBQUUsVUFBVUUsR0FBR0YsQ0FBQyxJQUFJSCxHQUFHLFVBQVVHLENBQUMsRUFBRSxVQUFVRyxHQUFHSCxDQUFDLEtBQUssUUFBUSxLQUFLO0FBQUEsRUFDN0YsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0FBQUEsSUFDZDtBQUNFLGFBQU9ELEdBQUcsRUFBRSxPQUFPO0FBQ3ZCLE1BQUksT0FBTyxLQUFLO0FBQ2QsUUFBSTtBQUNGLGFBQU8sS0FBSyxVQUFVLENBQUM7QUFBQSxJQUN6QixTQUFTQyxHQUFHO0FBQ1YsYUFBT0EsSUFBSTtBQUFBLElBQ2I7QUFBQTtBQUVBLFdBQU8sSUFBSTtBQUNmLEdBQUdLLEtBQUssQ0FBQyxHQUFHTCxHQUFHTSxNQUFNLElBQUlDLE1BQU07QUFDN0IsTUFBSTtBQUNGLFdBQU9QLEVBQUUsR0FBR08sQ0FBQztBQUFBLEVBQ2YsU0FBU0MsR0FBRztBQUNWLElBQUFGLEVBQUUsa0NBQWtDLENBQUMsTUFBTUUsQ0FBQztBQUM1QztBQUFBLEVBQ0Y7QUFDRjtBQUNBLElBQUlDLElBQXFCLGtCQUFDLE9BQU8sRUFBRSxlQUFlLGlCQUFpQixFQUFFLHFCQUFxQix3QkFBd0IsRUFBRSxvQkFBb0IsdUJBQXVCLEVBQUUsd0JBQXdCLDJCQUEyQixFQUFFLHVCQUF1QiwwQkFBMEIsRUFBRSxhQUFhLGVBQWUsSUFBSUEsS0FBSyxDQUFDLENBQUM7QUFDaFR2QixFQUFJLFdBQVd1QixDQUFDO0FBQUcsTUFBTUMsSUFBSXhCLEVBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxTQUFTLGtCQUFrQixDQUFDLEdBQUd5QixJQUFJekIsRUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRzBCLElBQUksQ0FBQyxNQUFNMUIsRUFBSSxTQUFTLEVBQUUsU0FBUyxDQUFDO0FBQ2pLLElBQUkyQixJQUFxQixrQkFBQyxPQUFPLEVBQUUsYUFBYSxhQUFhLEVBQUUsWUFBWSxZQUFZLEVBQUUsUUFBUSxTQUFTLEVBQUUsV0FBVyxXQUFXLEVBQUUsT0FBTyxRQUFRLEVBQUUsUUFBUSxTQUFTLEVBQUUsVUFBVSxXQUFXLEVBQUUsVUFBVSxXQUFXLEVBQUUsUUFBUSxTQUFTLEVBQUUsaUJBQWlCLGlCQUFpQixJQUFJQSxLQUFLLENBQUMsQ0FBQztBQUN0UixNQUFNQyxLQUFLNUIsRUFBSSxXQUFXMkIsQ0FBQztBQUMzQixJQUFJRSxLQUFzQixrQkFBQyxPQUFPLEVBQUUsY0FBYyxjQUFjLEVBQUUsY0FBYyxjQUFjLEVBQUUsV0FBVyxXQUFXLElBQUlBLE1BQU0sQ0FBQyxDQUFDO0FBQ2xJLE1BQU1DLEtBQUs5QixFQUFJLFdBQVc2QixFQUFFLEdBQUdFLEtBQUsvQixFQUFJLE1BQU0sQ0FBQzRCLElBQUlFLEVBQUUsQ0FBQztBQUN0RCxJQUFJRSxLQUFxQixrQkFBQyxPQUFPLEVBQUUsT0FBTyxRQUFRLEVBQUUsY0FBYyxlQUFlLEVBQUUsY0FBYyxlQUFlLEVBQUUsV0FBVyxZQUFZLEVBQUUsYUFBYSxjQUFjLElBQUlBLE1BQUssQ0FBQyxDQUFDO0FBQ2pMLE1BQU1DLEtBQUtqQyxFQUFJLFdBQVdnQyxFQUFDLEdBQUdFLEtBQUtsQyxFQUFJLE9BQU87QUFBQSxFQUM1QyxVQUFVQSxFQUFJLE9BQU87QUFBQSxFQUNyQixnQkFBZ0IwQixFQUFFMUIsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUM5QixVQUFVMEIsRUFBRTFCLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDLENBQUM7QUFDakQsQ0FBQyxHQUFHbUMsS0FBS25DLEVBQUksT0FBTztBQUFBLEVBQ2xCLElBQUlBLEVBQUksT0FBTztBQUNqQixDQUFDO0FBQ0RBLEVBQUksT0FBTztBQUFBLEVBQ1QsWUFBWXlCO0FBQUEsRUFDWixRQUFRQTtBQUFBLEVBQ1IsS0FBS0E7QUFDUCxDQUFDO0FBQ0R6QixFQUFJLE9BQU87QUFBQSxFQUNULGlCQUFpQnlCO0FBQUEsRUFDakIsT0FBT0E7QUFBQSxFQUNQLFlBQVlBO0FBQUEsRUFDWixVQUFVQTtBQUFBLEVBQ1YsWUFBWUE7QUFBQSxFQUNaLFFBQVFBO0FBQUEsRUFDUixTQUFTQTtBQUFBLEVBQ1QsZUFBZUE7QUFBQSxFQUNmLFlBQVlBO0FBQUEsRUFDWixVQUFVQTtBQUNaLENBQUM7QUFDRCxNQUFNVyxJQUFJcEMsRUFBSSxLQUFLO0FBQUE7QUFBQSxFQUVqQjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUE7QUFBQSxFQUVBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRixDQUFDLEdBQUdxQyxLQUFLRCxFQUFFLFFBQVEsQ0FBQyxvQkFBb0Isa0JBQWtCLENBQUMsR0FBR0UsS0FBS3RDLEVBQUksT0FBTyxFQUFFLE1BQU1xQyxHQUFHLENBQUMsR0FBR0UsS0FBS0gsRUFBRSxRQUFRLENBQUMsUUFBUSxTQUFTLFFBQVEsQ0FBQyxHQUFHSSxLQUFLeEMsRUFBSSxPQUFPO0FBQUEsRUFDeEosTUFBTXVDO0FBQUEsRUFDTixhQUFhVDtBQUFBLEVBQ2IsUUFBUTlCLEVBQUksTUFBTUEsRUFBSSxPQUFPLENBQUMsRUFBRSxTQUFTO0FBQzNDLENBQUMsR0FBR3lDLEtBQUtMLEVBQUUsUUFBUSxDQUFDLGNBQWMsa0JBQWtCLGdCQUFnQixDQUFDLEdBQUdNLEtBQUsxQyxFQUFJLE9BQU87QUFBQSxFQUN0RixNQUFNeUM7QUFBQSxFQUNOLFNBQVNqQjtBQUFBLEVBQ1QsU0FBU3hCLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksT0FBTyxDQUFDLEVBQUUsU0FBUztBQUMzRCxDQUFDLEdBQUcyQyxLQUFLUCxFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHUSxLQUFLNUMsRUFBSSxPQUFPO0FBQUEsRUFDeEQsTUFBTTJDO0FBQUEsRUFDTixhQUFhWjtBQUFBLEVBQ2IsUUFBUS9CLEVBQUksTUFBTUEsRUFBSSxPQUFPLENBQUM7QUFDaEMsQ0FBQyxHQUFHNkMsS0FBSzdDLEVBQUksT0FBTztBQUFBLEVBQ2xCLE1BQU1BLEVBQUksUUFBUW9DLEVBQUUsS0FBSyxNQUFNO0FBQUEsRUFDL0IsUUFBUVo7QUFDVixDQUFDLEdBQUdzQixLQUFLOUMsRUFBSSxPQUFPO0FBQUEsRUFDbEIsTUFBTUEsRUFBSSxRQUFRb0MsRUFBRSxLQUFLLE1BQU07QUFBQSxFQUMvQixXQUFXWjtBQUFBLEVBQ1gsa0JBQWtCeEIsRUFBSSxPQUFPO0FBQUEsRUFDN0IsVUFBVXlCO0FBQUEsRUFDVix3QkFBd0J6QixFQUFJLE1BQU1rQyxFQUFFO0FBQ3RDLENBQUMsR0FBR2EsS0FBSy9DLEVBQUksT0FBTztBQUFBLEVBQ2xCLE1BQU1BLEVBQUksUUFBUW9DLEVBQUUsS0FBSyxvQkFBb0I7QUFBQSxFQUM3QyxvQkFBb0JwQyxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQztBQUFBLEVBQ3RELHFCQUFxQkEsRUFBSSxJQUFJLEVBQUUsU0FBUztBQUFBLEVBQ3hDLGlCQUFpQkEsRUFBSSxTQUFTQSxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxDQUFDO0FBQ25FLENBQUMsR0FBR2dELEtBQUtoRCxFQUFJLE9BQU87QUFBQSxFQUNsQixNQUFNQSxFQUFJLFFBQVFvQyxFQUFFLEtBQUssNEJBQTRCO0FBQUEsRUFDckQsaUJBQWlCcEMsRUFBSSxPQUFPO0FBQzlCLENBQUMsR0FBR2lELEtBQUtqRCxFQUFJLE9BQU87QUFBQSxFQUNsQixXQUFXd0I7QUFBQSxFQUNYLFVBQVVBO0FBQUEsRUFDVixPQUFPQTtBQUFBLEVBQ1AsU0FBU0E7QUFBQSxFQUNULFNBQVNBO0FBQUEsRUFDVCxlQUFlQztBQUNqQixDQUFDLEdBQUd5QixLQUFLbEQsRUFBSSxPQUFPO0FBQUEsRUFDbEIsV0FBV3lCO0FBQUEsRUFDWCxVQUFVQTtBQUFBLEVBQ1YsT0FBT0Q7QUFBQSxFQUNQLFNBQVNBO0FBQUEsRUFDVCxTQUFTQTtBQUFBLEVBQ1QsZUFBZUM7QUFBQSxFQUNmLFNBQVNBO0FBQUEsRUFDVCxNQUFNQTtBQUFBLEVBQ04sT0FBT0E7QUFDVCxDQUFDLEdBQUcwQixLQUFLZixFQUFFLFFBQVEsQ0FBQyxZQUFZLFlBQVksb0JBQW9CLENBQUMsR0FBR2dCLEtBQUtwRCxFQUFJLE9BQU87QUFBQSxFQUNsRixNQUFNbUQ7QUFBQSxFQUNOLFdBQVczQjtBQUFBLEVBQ1gsdUJBQXVCVTtBQUFBLEVBQ3ZCLHFCQUFxQmxDLEVBQUksSUFBSSxFQUFFLFNBQVM7QUFBQSxFQUN4QyxzQkFBc0JBLEVBQUksUUFBUSxFQUFFLFNBQVM7QUFBQSxFQUM3QyxnQkFBZ0J5QjtBQUFBLEVBQ2hCLGdCQUFnQkE7QUFDbEIsQ0FBQyxFQUFFLE9BQU93QixHQUFHLEtBQUssR0FBR0ksS0FBS3JELEVBQUksT0FBTztBQUFBLEVBQ25DLE1BQU1BLEVBQUksUUFBUW9DLEVBQUUsS0FBSyxnQkFBZ0I7QUFBQSxFQUN6QyxvQkFBb0JwQyxFQUFJLFFBQVE7QUFDbEMsQ0FBQyxHQUFHc0QsS0FBS3RELEVBQUksT0FBTztBQUFBLEVBQ2xCLE1BQU1BLEVBQUksUUFBUW9DLEVBQUUsS0FBSyxnQkFBZ0I7QUFBQSxFQUN6QyxhQUFhcEMsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ25DLGlCQUFpQkEsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3ZDLFlBQVlBLEVBQUksT0FBTztBQUN6QixDQUFDLEdBQUd1RCxLQUFLdkQsRUFBSSxtQkFBbUIsUUFBUTtBQUFBLEVBQ3RDc0M7QUFBQSxFQUNBRTtBQUFBLEVBQ0FFO0FBQUEsRUFDQUU7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQU07QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQVA7QUFBQSxFQUNBQztBQUNGLENBQUMsR0FBR1EsS0FBS3hELEVBQUksT0FBTztBQUFBLEVBQ2xCLFNBQVN1RDtBQUFBLEVBQ1QsT0FBTy9CO0FBQUEsRUFDUCxRQUFRQTtBQUFBLEVBQ1IsV0FBV0E7QUFDYixDQUFDO0FBQ0R4QixFQUFJLE9BQU87QUFBQSxFQUNULFlBQVlBLEVBQUksT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSXZCLFVBQVV3QjtBQUNaLENBQUM7QUFDRHhCLEVBQUksS0FBSyxDQUFDLGFBQWEsWUFBWSxDQUFDO0FBQ3BDQSxFQUFJLE9BQU87QUFBQSxFQUNULGNBQWNBLEVBQUksT0FBTztBQUFBLEVBQ3pCLGdCQUFnQkEsRUFBSSxPQUFPLEVBQUUsU0FBUztBQUN4QyxDQUFDO0FBQ0RBLEVBQUksT0FBTztBQUFBLEVBQ1QsY0FBY0EsRUFBSSxPQUFPO0FBQUEsRUFDekIsbUJBQW1CMEIsRUFBRTFCLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDakMsYUFBYTBCLEVBQUUxQixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzNCLHFCQUFxQjBCLEVBQUUxQixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ25DLDZCQUE2QjBCLEVBQUUxQixFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFDRCxNQUFNeUQsS0FBS3pELEVBQUksT0FBTztBQUFBLEVBQ3BCLGNBQWNBLEVBQUksTUFBTUEsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUNwQyxrQkFBa0JBLEVBQUksTUFBTUEsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUN4QyxhQUFhQSxFQUFJLE9BQU87QUFBQSxFQUN4QixpQkFBaUIwQixFQUFFMUIsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLENBQUMsR0FBRzBELEtBQUsxRCxFQUFJLE9BQU87QUFBQSxFQUNsQixhQUFhQSxFQUFJLE9BQU87QUFBQSxFQUN4QixRQUFRQSxFQUFJLE1BQU1BLEVBQUksT0FBTyxDQUFDO0FBQ2hDLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxZQUFZQSxFQUFJLE9BQU87QUFDekIsQ0FBQztBQUNELE1BQU0yRCxLQUFLM0QsRUFBSSxPQUFPO0FBQUEsRUFDcEIsU0FBU0EsRUFBSSxRQUFRLEVBQUU7QUFBQSxFQUN2QixZQUFZQSxFQUFJLFFBQVEsa0JBQWtCO0FBQUEsRUFDMUMsUUFBUUEsRUFBSSxNQUFNMEQsRUFBRTtBQUN0QixDQUFDLEdBQUdFLEtBQUs1RCxFQUFJLG1CQUFtQixXQUFXO0FBQUEsRUFDekNBLEVBQUksT0FBTyxFQUFFLFNBQVNBLEVBQUksUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUFBLEVBQ3ZDMkQ7QUFDRixDQUFDO0FBQ0QzRCxFQUFJLE9BQU87QUFBQSxFQUNULFlBQVlBLEVBQUksT0FBTztBQUFBLEVBQ3ZCLHlCQUF5QmtDO0FBQUEsRUFDekIscUJBQXFCZTtBQUFBLEVBQ3JCLDJCQUEyQmpELEVBQUksUUFBUSxFQUFFLFNBQVM7QUFBQSxFQUNsRCxtQkFBbUIwQixFQUFFMUIsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUNqQyxnQkFBZ0JBLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDO0FBQUEsRUFDbEQsa0JBQWtCMEIsRUFBRTFCLEVBQUksT0FBTyxDQUFDO0FBQ2xDLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxZQUFZQSxFQUFJLE9BQU87QUFBQSxFQUN2Qix5QkFBeUJrQztBQUFBLEVBQ3pCLHFCQUFxQmU7QUFBQSxFQUNyQixnQkFBZ0JqRCxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxFQUFFLFNBQVM7QUFBQSxFQUM3RCxrQkFBa0IwQixFQUFFMUIsRUFBSSxPQUFPLENBQUM7QUFDbEMsQ0FBQztBQUNELElBQUk2RCxJQUFxQixrQkFBQyxPQUFPLEVBQUUsVUFBVSxXQUFXLEVBQUUsVUFBVSxXQUFXLEVBQUUsWUFBWSxhQUFhLElBQUlBLEtBQUssQ0FBQyxDQUFDO0FBQ3JILE1BQU1DLEtBQUs5RCxFQUFJLE9BQU87QUFBQSxFQUNwQixRQUFRQSxFQUFJLEtBQUs7QUFBQSxJQUNmO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQTtBQUFBLEVBRUYsQ0FBQztBQUFBLEVBQ0QsTUFBTUEsRUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVM7QUFDekMsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULE1BQU1BLEVBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTO0FBQ3pDLENBQUM7QUFDRCxNQUFNK0QsS0FBSy9ELEVBQUksT0FBTztBQUFBLEVBQ3BCLE1BQU1BLEVBQUksT0FBTztBQUFBLEVBQ2pCLGNBQWNBLEVBQUksT0FBTztBQUFBLEVBQ3pCLG1CQUFtQkEsRUFBSSxPQUFPO0FBQUEsRUFDOUIsWUFBWUEsRUFBSSxPQUFPO0FBQUEsRUFDdkIsYUFBYUEsRUFBSSxPQUFPLEVBQUUsU0FBUztBQUNyQyxDQUFDLEdBQUdnRSxLQUFLaEUsRUFBSSxPQUFPO0FBQUEsRUFDbEIsTUFBTUEsRUFBSSxPQUFPO0FBQUEsRUFDakIsY0FBYzBCLEVBQUUxQixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzVCLG1CQUFtQjBCLEVBQUUxQixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ2pDLFlBQVkwQixFQUFFMUIsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUMxQixhQUFhMEIsRUFBRTFCLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDM0IsaUJBQWlCMEIsRUFBRTFCLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDLENBQUM7QUFDeEQsQ0FBQyxHQUFHaUUsS0FBS2pFLEVBQUksbUJBQW1CLFdBQVc7QUFBQSxFQUN6Q0EsRUFBSSxPQUFPLEVBQUUsU0FBU0EsRUFBSSxRQUFRLEVBQUUsR0FBRyxNQUFNQSxFQUFJLE9BQU8sRUFBRSxDQUFDO0FBQUEsRUFDM0RBLEVBQUksT0FBTyxFQUFFLFNBQVNBLEVBQUksUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUN6QyxDQUFDLEdBQUdrRSxLQUFLbEUsRUFBSSxPQUFPO0FBQUEsRUFDbEIsaUJBQWlCQSxFQUFJLE1BQU1tQyxFQUFFO0FBQUEsRUFDN0IsNEJBQTRCVCxFQUFFK0IsRUFBRTtBQUFBLEVBQ2hDLHVCQUF1Qi9CLEVBQUUxQixFQUFJLE1BQU1nRSxFQUFFLENBQUM7QUFDeEMsQ0FBQyxHQUFHRyxLQUFLLENBQUMsTUFBTTtBQUNkLFFBQU1yRCxJQUFJLENBQUM7QUFDWCxTQUFPLE9BQU8sUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUNNLEdBQUdDLENBQUMsTUFBTTtBQUMzQyxRQUFJO0FBQ0YsWUFBTUMsSUFBSU0sR0FBRyxNQUFNUixDQUFDO0FBQ3BCLFlBQU0sUUFBUUMsQ0FBQyxJQUFJUCxFQUFFUSxDQUFDLElBQUlELElBQUksTUFBTSxRQUFRQSxFQUFFLE9BQU8sTUFBTVAsRUFBRVEsQ0FBQyxJQUFJRCxFQUFFO0FBQUEsSUFDdEUsUUFBUTtBQUNOO0FBQUEsSUFDRjtBQUFBLEVBQ0YsQ0FBQyxHQUFHUDtBQUNOLEdBQUdzRCxLQUFLcEUsRUFBSSxPQUFPO0FBQUEsRUFDakIsV0FBV0EsRUFBSSxPQUFPO0FBQUEsRUFDdEIsZUFBZUEsRUFBSSxPQUFPO0FBQUEsRUFDMUIsY0FBY0EsRUFBSSxPQUFPO0FBQzNCLENBQUMsR0FBR3FFLEtBQUtyRSxFQUFJLE9BQU87QUFBQSxFQUNsQixNQUFNQSxFQUFJLE9BQU87QUFBQSxFQUNqQixlQUFlQSxFQUFJLE9BQU87QUFBQSxFQUMxQixXQUFXQSxFQUFJLE9BQU87QUFDeEIsQ0FBQyxHQUFHc0UsS0FBSztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsS0FBSztBQUNQLEdBQUdDLEtBQUssT0FBTyxNQUFNO0FBQ25CLFdBQVMsSUFBSSxHQUFHLElBQUksSUFBSTtBQUN0QixJQUFBQyxHQUFHLEtBQUssTUFBTUMsR0FBRyxHQUFHO0FBQ3RCLE1BQUksQ0FBQ0QsR0FBRztBQUNOLFVBQU0sUUFBUSxJQUFJLHNCQUFzQixHQUFHLElBQUksTUFBTSxzQkFBc0I7QUFDN0UsU0FBTyxJQUFJLE9BQU8sQ0FBQztBQUNyQixHQUFHRSxLQUFLLE9BQU8sR0FBRzVELE1BQU07QUFDdEIsUUFBTU0sSUFBSSxNQUFNbUQsR0FBRyxDQUFDO0FBQ3BCLFNBQU87QUFBQSxJQUNMLFVBQVVuRCxFQUFFLFNBQVNOLENBQUM7QUFBQSxJQUN0QixRQUFRTTtBQUFBLEVBQ1Y7QUFDRixHQUFHdUQsS0FBSyxPQUFPLEdBQUc3RCxHQUFHTSxHQUFHQyxHQUFHQyxNQUFNO0FBQy9CLFFBQU1zRCxJQUFJLE1BQU1MLEdBQUcsQ0FBQyxHQUFHTSxJQUFJUCxHQUFHbEQsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDO0FBQ3BELFNBQU93RCxFQUFFLGVBQWU7QUFBQTtBQUFBLElBRXRCLFNBQVM7QUFBQSxJQUNULFVBQVVDO0FBQUEsSUFDVixPQUFPO0FBQUEsTUFDTCxPQUFPO0FBQUEsTUFDUCxRQUFRL0Q7QUFBQSxNQUNSLFNBQVNPO0FBQUEsSUFDWDtBQUFBO0FBQUEsSUFFQSxrQkFBa0I7QUFBQSxJQUNsQixtQkFBbUI7QUFBQSxJQUNuQixnQkFBZ0IsQ0FBQztBQUFBLEVBQ25CLENBQUM7QUFDSCxHQUFHb0QsS0FBSyxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMzRCxNQUFNO0FBQ2hDLGFBQVdBLEdBQUcsQ0FBQztBQUNqQixDQUFDLEdBQUcwRCxLQUFLLE1BQU0sWUFBWSxRQUFRTSxLQUFLLE9BQU8sTUFBTSxJQUFJLFFBQVEsQ0FBQ2hFLEdBQUdNLE1BQU07QUFDekUsTUFBSTtBQUNGLE1BQUUsR0FBRyxpQkFBaUIsT0FBT0MsTUFBTTtBQUNqQyxjQUFRLElBQUksd0JBQXdCQSxDQUFDLEdBQUdQLEVBQUVPLENBQUM7QUFBQSxJQUM3QyxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsT0FBT0EsTUFBTTtBQUM3QixjQUFRLElBQUksZ0JBQWdCQSxDQUFDO0FBQUEsSUFDL0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxVQUFVLE1BQU07QUFDdkIsTUFBQUQsRUFBRSxJQUFJLE1BQU0scURBQXFELENBQUM7QUFBQSxJQUNwRSxDQUFDO0FBQUEsRUFDSCxTQUFTQyxHQUFHO0FBQ1YsSUFBQUQsRUFBRUMsQ0FBQztBQUFBLEVBQ0w7QUFDRixDQUFDLEdBQUcwRCxLQUFLLE9BQU8sR0FBR2pFLE1BQU07QUFDdkIsTUFBSSxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUU7QUFDckIsVUFBTSxJQUFJLE1BQU0sd0NBQXdDLEtBQUssVUFBVSxDQUFDLENBQUMsRUFBRTtBQUM3RSxRQUFNLElBQUksT0FBTyxNQUFNeUQsR0FBRyxFQUFFLFNBQVMsR0FBRyxpQkFBaUIsRUFBRSxlQUFlO0FBQUEsSUFDeEUsZ0JBQWdCekQsRUFBRSxjQUFjO0FBQUEsRUFDbEMsQ0FBQztBQUNELE1BQUksRUFBRTtBQUNKLFVBQU1BLEVBQUUsU0FBUyxNQUFNLEdBQUcsSUFBSSxNQUFNLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxTQUFTLEVBQUU7QUFDdkYsU0FBT0EsRUFBRSxTQUFTLFNBQVMsR0FBRztBQUNoQyxHQUFHa0UsS0FBSyxPQUFPLE1BQU07QUFDbkIsTUFBSTFELEdBQUdzRCxHQUFHQyxHQUFHSTtBQUNiLFFBQU03RCxJQUFJLE9BQU8sTUFBTW1ELEdBQUcsRUFBRSxTQUFTLEdBQUcsaUJBQWlCLEVBQUUsZUFBZTtBQUFBLElBQ3hFLGdCQUFnQixFQUFFO0FBQUEsRUFDcEIsQ0FBQyxHQUFHbEQsS0FBS0MsSUFBSUYsRUFBRSxnQkFBZ0IsT0FBTyxTQUFTRSxFQUFFO0FBQ2pELE1BQUlELE1BQU07QUFDUixZQUFRLElBQUksd0JBQXdCLEVBQUUsWUFBWSxHQUFHLFFBQVEsSUFBSSwrQkFBK0JELEVBQUUsV0FBVztBQUFBLE1BQzFHLE9BQU1DLE1BQU0sYUFBYSxJQUFJLE1BQU0scURBQXFELElBQUksSUFBSTtBQUFBLElBQ25HLEtBQUt1RCxJQUFJeEQsRUFBRSxVQUFVLE9BQU8sU0FBU3dELEVBQUUsY0FBY0ssS0FBS0osSUFBSXpELEVBQUUsZ0JBQWdCLE9BQU8sU0FBU3lELEVBQUUscUJBQXFCLE9BQU8sU0FBU0ksRUFBRSxZQUFZLG1EQUFtRDtBQUFBLEVBQzFNO0FBQ0YsR0FBR0MsS0FBSyxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsR0FBR0MsS0FBSyxDQUFDLEdBQUdyRSxNQUFNLE1BQU0sS0FBSyxFQUFFLGlCQUFpQixhQUFhLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDUSxHQUFHc0QsTUFBTTtBQUNwSCxRQUFNQyxJQUFJRCxFQUFFLGFBQWEsV0FBVztBQUNwQyxTQUFPQyxJQUFJLEVBQUUsR0FBR3ZELEdBQUcsQ0FBQ3VELENBQUMsR0FBR0QsRUFBRSxNQUFNLElBQUl0RDtBQUN0QyxHQUFHLENBQUMsQ0FBQyxHQUFHOEQsS0FBSyxDQUFDLE1BQU07QUFDbEIsTUFBSTtBQUNGLFdBQU81QixHQUFHLE1BQU0sQ0FBQztBQUFBLEVBQ25CLFNBQVMxQyxHQUFHO0FBQ1YsVUFBTSxRQUFRLE1BQU0sZ0NBQWdDLEdBQUdBLENBQUMsR0FBR0E7QUFBQSxFQUM3RDtBQUNGLEdBQUd1RSxLQUFLLE9BQU8sTUFBTTtBQUNuQixNQUFJLE9BQU8sS0FBSyxZQUFZLENBQUMsRUFBRyxRQUFPO0FBQ3ZDLE1BQUk7QUFDRixVQUFNdkUsSUFBSSxFQUFFLE1BQU0sT0FBTyxHQUFHTSxJQUFJLE1BQU0sRUFBRSxLQUFLTixDQUFDO0FBQzlDLFFBQUlNLE1BQU07QUFDUixZQUFNLElBQUksTUFBTSxtQ0FBbUMsS0FBSyxVQUFVQSxDQUFDLENBQUMsRUFBRTtBQUN4RSxXQUFPO0FBQUEsRUFDVCxTQUFTTixHQUFHO0FBQ1YsV0FBTyxRQUFRLE1BQU0saUNBQWlDQSxDQUFDLEdBQUc7QUFBQSxFQUM1RDtBQUNGLEdBQUd3RSxLQUFLLENBQUMsR0FBR3hFLE1BQU0sQ0FBQyxDQUFDLEtBQUtBLEdBQUd5RSxJQUFJLENBQUMsTUFBTXZGLEVBQUksU0FBUyxFQUFFLFNBQVMsQ0FBQztBQUNoRUEsRUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLFNBQVMsa0JBQWtCLENBQUM7QUFDekQsTUFBTXdGLEtBQUt4RixFQUFJLE9BQU87QUFBQSxFQUNwQixtQkFBbUJBLEVBQUksUUFBUSxPQUFPO0FBQUEsRUFDdEMsU0FBU0EsRUFBSSxPQUFPO0FBQUEsRUFDcEIsU0FBU0EsRUFBSSxPQUFPQSxFQUFJLE9BQU8sR0FBR0EsRUFBSSxPQUFPLENBQUMsRUFBRSxTQUFTO0FBQzNELENBQUM7QUFDREEsRUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLENBQUM7QUFDdkIsTUFBTXlGLEtBQUt6RixFQUFJLE9BQU87QUFBQSxFQUNwQixNQUFNQSxFQUFJLE9BQU87QUFBQSxFQUNqQixpQkFBaUJ1RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUMvQixhQUFhdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDM0IsVUFBVXVGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3hCLFVBQVVBLEVBQUksT0FBTztBQUFBLEVBQ3JCLG9CQUFvQnVGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUNwQyxDQUFDLEdBQUcwRixLQUFLMUYsRUFBSSxPQUFPO0FBQUEsRUFDbEIsc0JBQXNCQSxFQUFJLE9BQU8sRUFBRSxJQUFJO0FBQUEsRUFDdkMsbUJBQW1CQSxFQUFJLE9BQU8sRUFBRSxJQUFJO0FBQUEsRUFDcEMsVUFBVUEsRUFBSSxPQUFPO0FBQUEsRUFDckIsYUFBYXVGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzNCLFVBQVVBLEVBQUksT0FBTztBQUFBLEVBQ3JCLGtCQUFrQnVGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ2hDLHdCQUF3QnVGLEVBQUV2RixFQUFJLE9BQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxFQUM1QyxVQUFVQSxFQUFJLE9BQU8sRUFBRSxJQUFJO0FBQzdCLENBQUMsR0FBRzJGLEtBQUszRixFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxHQUFHNEYsS0FBSzVGLEVBQUksT0FBTztBQUFBLEVBQzVELE1BQU1BLEVBQUksT0FBTztBQUFBLEVBQ2pCLFVBQVV1RixFQUFFSSxFQUFFO0FBQ2hCLENBQUMsR0FBR0UsS0FBSzdGLEVBQUksT0FBTztBQUFBLEVBQ2xCLFVBQVVBLEVBQUksT0FBTztBQUFBLEVBQ3JCLGdCQUFnQnVGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzlCLFVBQVV1RixFQUFFdkYsRUFBSSxPQUFPQSxFQUFJLE9BQU8sR0FBR0EsRUFBSSxJQUFJLENBQUMsQ0FBQztBQUNqRCxDQUFDLEdBQUc4RixLQUFLOUYsRUFBSSxPQUFPO0FBQUEsRUFDbEIsVUFBVUEsRUFBSSxPQUFPO0FBQ3ZCLENBQUMsR0FBRytGLEtBQUsvRixFQUFJLE9BQU87QUFBQSxFQUNsQixJQUFJdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDbEIsa0JBQWtCdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDaEMsd0JBQXdCdUYsRUFBRXZGLEVBQUksT0FBTyxFQUFFLElBQUksQ0FBQztBQUFBLEVBQzVDLG9CQUFvQkEsRUFBSSxNQUFNOEYsRUFBRTtBQUFBLEVBQ2hDLGFBQWFQLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzNCLFdBQVd1RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFDM0IsQ0FBQyxHQUFHZ0csS0FBS2hHLEVBQUksT0FBTztBQUFBLEVBQ2xCLGFBQWFBLEVBQUksT0FBTztBQUMxQixDQUFDLEdBQUdpRyxLQUFLakcsRUFBSSxPQUFPO0FBQUEsRUFDbEIsYUFBYUEsRUFBSSxPQUFPO0FBQUEsRUFDeEIsMENBQTBDQSxFQUFJLE9BQU87QUFBQSxFQUNyRCxVQUFVQSxFQUFJLE9BQU87QUFBQSxFQUNyQix1QkFBdUJBLEVBQUksTUFBTWdHLEVBQUU7QUFBQSxFQUNuQyxzQkFBc0JoRyxFQUFJLE9BQU87QUFDbkMsQ0FBQyxHQUFHa0csS0FBS2xHLEVBQUksT0FBTztBQUFBLEVBQ2xCLFFBQVF5RjtBQUNWLENBQUMsR0FBR1UsS0FBS25HLEVBQUksT0FBTztBQUFBLEVBQ2xCLFVBQVVBLEVBQUksT0FBTztBQUFBLEVBQ3JCLFdBQVdBLEVBQUksTUFBTWtHLEVBQUU7QUFBQSxFQUN2QixvQkFBb0JYLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ2xDLE9BQU9BLEVBQUksTUFBTWlHLEVBQUU7QUFBQSxFQUNuQix1QkFBdUJqRyxFQUFJLE9BQU87QUFBQSxFQUNsQyxpQkFBaUJBLEVBQUksT0FBTztBQUFBLEVBQzVCLG1CQUFtQkEsRUFBSSxPQUFPO0FBQUEsRUFDOUIsNkJBQTZCQSxFQUFJLE1BQU1nRyxFQUFFO0FBQzNDLENBQUMsR0FBR0ksS0FBS3BHLEVBQUksT0FBTztBQUFBLEVBQ2xCLFNBQVNBLEVBQUksTUFBTStGLEVBQUU7QUFBQSxFQUNyQixVQUFVL0YsRUFBSSxNQUFNbUcsRUFBRTtBQUFBLEVBQ3RCLGlCQUFpQlosRUFBRXZGLEVBQUksTUFBTUEsRUFBSSxPQUFPLENBQUMsQ0FBQztBQUM1QyxDQUFDLEdBQUdxRyxLQUFLckcsRUFBSSxPQUFPO0FBQUEsRUFDbEIsU0FBU29HO0FBQUEsRUFDVCxvQkFBb0JiLEVBQUVhLEVBQUU7QUFBQSxFQUN4QixTQUFTcEcsRUFBSSxNQUFNeUYsRUFBRTtBQUN2QixDQUFDLEdBQUdhLEtBQUt0RyxFQUFJLE9BQU87QUFBQSxFQUNsQixRQUFRQSxFQUFJLFFBQVEsTUFBTTtBQUFBLEVBQzFCLFFBQVF1RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUN0QixPQUFPQSxFQUFJLE9BQU87QUFBQSxFQUNsQixPQUFPdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDckIsWUFBWUEsRUFBSSxNQUFNMEYsRUFBRTtBQUFBLEVBQ3hCLHNCQUFzQjFGLEVBQUksT0FBTyxFQUFFLElBQUk7QUFBQSxFQUN2QyxtQkFBbUJBLEVBQUksT0FBTyxFQUFFLElBQUk7QUFBQSxFQUNwQyxPQUFPNEY7QUFBQSxFQUNQLGNBQWNMLEVBQUVjLEVBQUU7QUFBQTtBQUFBLEVBRWxCLG1CQUFtQnJHLEVBQUksTUFBTTZGLEVBQUU7QUFDakMsQ0FBQyxHQUFHVSxLQUFLdkcsRUFBSSxtQkFBbUIsUUFBUTtBQUFBLEVBQ3RDQSxFQUFJLE9BQU87QUFBQSxJQUNULE1BQU1BLEVBQUksUUFBUSxPQUFPO0FBQUEsSUFDekIsVUFBVUEsRUFBSSxTQUFTQSxFQUFJLFVBQVUsQ0FBQztBQUFBLEVBQ3hDLENBQUMsRUFBRSxPQUFPc0csR0FBRyxLQUFLO0FBQUEsRUFDbEJ0RyxFQUFJLE9BQU87QUFBQSxJQUNULE1BQU1BLEVBQUksS0FBSyxDQUFDLFdBQVcsY0FBYyxDQUFDO0FBQUEsSUFDMUMsVUFBVUEsRUFBSSxPQUFPO0FBQUEsRUFDdkIsQ0FBQyxFQUFFLE9BQU9zRyxHQUFHLEtBQUs7QUFDcEIsQ0FBQyxHQUFHRSxLQUFLeEcsRUFBSSxPQUFPO0FBQUEsRUFDbEIsUUFBUUEsRUFBSSxRQUFRLFVBQVU7QUFDaEMsQ0FBQyxHQUFHeUcsS0FBS3pHLEVBQUksT0FBTztBQUFBLEVBQ2xCLFFBQVFBLEVBQUksUUFBUSxTQUFTO0FBQy9CLENBQUM7QUFDREEsRUFBSSxNQUFNLENBQUN1RyxJQUFJQyxJQUFJQyxFQUFFLENBQUM7QUFDdEJ6RyxFQUFJLE9BQU87QUFBQSxFQUNULE1BQU1BLEVBQUksT0FBTztBQUFBLEVBQ2pCLE1BQU1BLEVBQUksT0FBTztBQUFBLEVBQ2pCLGVBQWVBLEVBQUksT0FBTztBQUFBLEVBQzFCLGlCQUFpQkEsRUFBSSxPQUFPO0FBQzlCLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxjQUFjQSxFQUFJLE9BQU87QUFBQSxFQUN6QixPQUFPQSxFQUFJLE9BQU87QUFDcEIsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULGNBQWNBLEVBQUksT0FBTztBQUFBLEVBQ3pCLGVBQWVBLEVBQUksSUFBSTtBQUFBO0FBQUEsRUFFdkIscUJBQXFCQSxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDM0Msb0JBQW9CQSxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDMUMsZ0JBQWdCQSxFQUFJLE9BQU87QUFBQSxFQUMzQixtQkFBbUJBLEVBQUksT0FBTztBQUFBLEVBQzlCLGtCQUFrQkEsRUFBSSxPQUFPO0FBQUEsRUFDN0IsWUFBWUEsRUFBSSxNQUFNMEYsRUFBRTtBQUFBLEVBQ3hCLG1CQUFtQjFGLEVBQUksT0FBTyxFQUFFLElBQUk7QUFBQSxFQUNwQyxlQUFlQSxFQUFJLFFBQVE7QUFBQSxFQUMzQix5QkFBeUI2RjtBQUFBLEVBQ3pCLGdCQUFnQjdGLEVBQUksT0FBTyxFQUFFLFNBQVM7QUFBQSxFQUN0QywyQkFBMkJBLEVBQUksUUFBUSxFQUFFLFNBQVM7QUFBQSxFQUNsRCxxQkFBcUJ1RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUNuQyxrQkFBa0J1RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFDbEMsQ0FBQztBQUNELE1BQU0wRyxLQUFLMUcsRUFBSSxPQUFPO0FBQUEsRUFDcEIsbUJBQW1CQSxFQUFJLE9BQU87QUFDaEMsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULElBQUlBLEVBQUksT0FBTztBQUFBLEVBQ2YsWUFBWUEsRUFBSSxPQUFPO0FBQ3pCLENBQUM7QUFDRCxNQUFNMkcsS0FBSzNHLEVBQUksT0FBTztBQUFBLEVBQ3BCLE1BQU1BLEVBQUksT0FBTztBQUFBLEVBQ2pCLEtBQUtBLEVBQUksTUFBTUEsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUMzQixLQUFLQSxFQUFJLE9BQU87QUFBQSxFQUNoQixLQUFLQSxFQUFJLE9BQU87QUFDbEIsQ0FBQztBQUNEQSxFQUFJLE1BQU0yRyxFQUFFO0FBQ1osTUFBTUMsS0FBSzVHLEVBQUksT0FBTztBQUFBLEVBQ3BCLG9CQUFvQkEsRUFBSSxPQUFPLEVBQUUsU0FBUztBQUFBLEVBQzFDLHNCQUFzQkEsRUFBSSxPQUFPQSxFQUFJLE9BQU8sR0FBR0EsRUFBSSxJQUFJLENBQUMsRUFBRSxTQUFTO0FBQUEsRUFDbkUseUJBQXlCQSxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDL0Msd0JBQXdCQSxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQ2hELENBQUMsR0FBRzZHLEtBQUs3RyxFQUFJLE9BQU87QUFBQSxFQUNsQixVQUFVQSxFQUFJLE9BQU87QUFBQSxFQUNyQixVQUFVQSxFQUFJLE9BQU8sRUFBRSxJQUFJO0FBQzdCLENBQUMsR0FBRzhHLEtBQUs5RyxFQUFJLE9BQU87QUFBQSxFQUNsQixZQUFZQSxFQUFJLE1BQU02RyxFQUFFO0FBQUEsRUFDeEIsZ0JBQWdCN0csRUFBSSxPQUFPLEVBQUUsU0FBUztBQUFBLEVBQ3RDLDZCQUE2QkEsRUFBSSxPQUFPLEVBQUUsSUFBSTtBQUNoRCxDQUFDLEdBQUcrRyxLQUFLL0csRUFBSSxPQUFPO0FBQUEsRUFDbEIsNkJBQTZCdUYsRUFBRXZGLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULGtCQUFrQkEsRUFBSSxPQUFPO0FBQUEsRUFDN0IseUJBQXlCNkY7QUFBQSxFQUN6QixtQkFBbUI3RixFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDekMsc0JBQXNCQSxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDNUMsb0JBQW9CQSxFQUFJLFFBQVEsRUFBRSxTQUFTO0FBQUEsRUFDM0MsMEJBQTBCOEcsR0FBRyxTQUFTO0FBQ3hDLENBQUMsRUFBRSxPQUFPRixHQUFHLEtBQUssRUFBRSxPQUFPRyxHQUFHLEtBQUs7QUFDbkMsTUFBTUMsS0FBS2hILEVBQUksT0FBTztBQUFBLEVBQ3BCLHVCQUF1QkEsRUFBSSxNQUFNQSxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxDQUFDO0FBQUEsRUFDcEUscUJBQXFCdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQ3JDLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxRQUFRa0Q7QUFBQSxFQUNSLHVCQUF1QjJDO0FBQUEsRUFDdkIsa0JBQWtCTixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFDbEMsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULFlBQVlBLEVBQUksT0FBTztBQUFBLEVBQ3ZCLHFCQUFxQmlEO0FBQUEsRUFDckIseUJBQXlCNEM7QUFBQSxFQUN6QixnQkFBZ0I3RixFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQztBQUFBO0FBQUEsRUFFbEQsa0JBQWtCdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQ2xDLENBQUM7QUFDRCxNQUFNaUgsS0FBS2pILEVBQUksT0FBTztBQUFBLEVBQ3BCLHVCQUF1QkEsRUFBSSxNQUFNQSxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxDQUFDO0FBQUEsRUFDcEUsVUFBVUEsRUFBSSxPQUFPO0FBQ3ZCLENBQUM7QUFDREEsRUFBSSxPQUFPQSxFQUFJLElBQUksQ0FBQztBQUNwQkEsRUFBSSxPQUFPO0FBQUEsRUFDVCxZQUFZdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDMUIsV0FBV3VGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3pCLE9BQU91RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUNyQixPQUFPdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDckIsT0FBT3VGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3JCLE1BQU11RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUNwQixPQUFPdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDckIsU0FBU3VGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3ZCLFVBQVV1RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUN4QixPQUFPdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDckIsZUFBZXVGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzdCLGNBQWN1RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUM1QiwyQkFBMkJ1RixFQUFFdkYsRUFBSSxRQUFRLENBQUM7QUFDNUMsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULElBQUlBLEVBQUksT0FBTztBQUFBLEVBQ2YsT0FBT3VGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3JCLFlBQVl1RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUMxQixXQUFXdUYsRUFBRXZGLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDekIsY0FBY3VGLEVBQUV2RixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzVCLGVBQWV1RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUM3QixTQUFTdUYsRUFBRXZGLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULFNBQVNBLEVBQUksT0FBTztBQUN0QixDQUFDO0FBQ0QsTUFBTWtILEtBQUtsSCxFQUFJLE9BQU87QUFBQSxFQUNwQixZQUFZQSxFQUFJLE9BQU87QUFDekIsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULHlCQUF5QjZGO0FBQUEsRUFDekIsNkJBQTZCN0YsRUFBSSxPQUFPQSxFQUFJLElBQUksQ0FBQyxFQUFFLFNBQVM7QUFBQSxFQUM1RCxrQkFBa0J1RixFQUFFdkYsRUFBSSxPQUFPLENBQUM7QUFDbEMsQ0FBQztBQUNELE1BQU1tSCxLQUFLbkgsRUFBSSxPQUFPO0FBQUEsRUFDcEIsc0JBQXNCdUYsRUFBRXZGLEVBQUksT0FBT0EsRUFBSSxJQUFJLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBQ0RBLEVBQUksT0FBTztBQUFBLEVBQ1QsUUFBUUEsRUFBSTtBQUFBLElBQ1ZBLEVBQUksT0FBTztBQUFBLE1BQ1QsWUFBWUEsRUFBSSxPQUFPO0FBQUEsTUFDdkIsY0FBY0EsRUFBSSxPQUFPO0FBQUEsTUFDekIsWUFBWUEsRUFBSSxPQUFPQSxFQUFJLElBQUksQ0FBQyxFQUFFLFNBQVM7QUFBQSxNQUMzQyxvQkFBb0JBLEVBQUksT0FBT0EsRUFBSSxJQUFJLENBQUMsRUFBRSxTQUFTO0FBQUEsSUFDckQsQ0FBQztBQUFBLEVBQ0g7QUFDRixDQUFDO0FBQ0RBLEVBQUksSUFBSSxFQUFFLFNBQVM7QUFDbkJBLEVBQUksT0FBTztBQUFBLEVBQ1QsY0FBY0EsRUFBSSxPQUFPO0FBQzNCLENBQUM7QUFDRCxNQUFNb0gsS0FBS3BILEVBQUksT0FBTyxDQUFDLENBQUMsR0FBR3FILEtBQUssQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDdkcsR0FBR00sTUFBTU4sSUFBSU0sR0FBRyxDQUFDO0FBQ2xFLFNBQVNrRyxHQUFHLEdBQUd4RyxHQUFHO0FBQ2hCLE1BQUlNLElBQUksT0FBTztBQUNmLEVBQUFBLElBQUlBLEVBQUUsR0FBR04sQ0FBQyxJQUFJLEVBQUUsWUFBWUE7QUFDOUI7QUFDQSxTQUFTeUcsR0FBRyxHQUFHekcsR0FBRztBQUNoQixFQUFBQSxNQUFNLFdBQVdBLElBQUksRUFBRTtBQUN2QixNQUFJTSxJQUFJLE1BQU07QUFDZCxFQUFBQSxLQUFLQSxFQUFFLEdBQUdOLENBQUM7QUFDYjtBQUNBLElBQUkwRyxLQUFxQiwyQkFBVztBQUNsQyxNQUFJLElBQUksU0FBUyxHQUFHLEdBQUc7QUFDckIsV0FBTyxJQUFJLE9BQU8sa0JBQWtCO0FBQUEsTUFDbEMsV0FBVyxDQUFDO0FBQUEsSUFDZCxhQUFhLFNBQVMsU0FBU2xHLEdBQUcsR0FBRztBQUNuQyxNQUFBQSxFQUFFLFlBQVk7QUFBQSxJQUNoQixLQUFLLFNBQVNBLEdBQUcsR0FBRztBQUNsQixlQUFTLEtBQUs7QUFDWixlQUFPLFVBQVUsZUFBZSxLQUFLLEdBQUcsQ0FBQyxNQUFNQSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7QUFBQSxJQUM3RCxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQUEsRUFDWDtBQUNBLFNBQU8sU0FBU1IsR0FBR00sR0FBRztBQUNwQixRQUFJLE9BQU9BLEtBQUssY0FBY0EsTUFBTSxLQUFNLE9BQU0sSUFBSSxVQUFVLHlCQUF5QixPQUFPQSxDQUFDLElBQUksK0JBQStCO0FBQ2xJLE1BQUVOLEdBQUdNLENBQUM7QUFDTixhQUFTQyxJQUFJO0FBQ1gsV0FBSyxjQUFjUDtBQUFBLElBQ3JCO0FBQ0EsSUFBQUEsRUFBRSxZQUFZTSxNQUFNLE9BQU8sT0FBTyxPQUFPQSxDQUFDLEtBQUtDLEVBQUUsWUFBWUQsRUFBRSxXQUFXLElBQUlDLEVBQUU7QUFBQSxFQUNsRjtBQUNGLEVBQUUsR0FBR29HLEtBQUssU0FBUyxHQUFHO0FBQ3BCLEVBQUFELEdBQUcxRyxHQUFHLENBQUM7QUFDUCxXQUFTQSxFQUFFTSxHQUFHQyxHQUFHO0FBQ2YsUUFBSUMsSUFBSSxLQUFLLGFBQWFzRCxJQUFJLEVBQUUsS0FBSyxNQUFNeEQsR0FBR0MsQ0FBQyxLQUFLO0FBQ3BELFdBQU8sT0FBTyxlQUFldUQsR0FBRyxRQUFRO0FBQUEsTUFDdEMsT0FBT3RELEVBQUU7QUFBQSxNQUNULFlBQVk7QUFBQSxNQUNaLGNBQWM7QUFBQSxJQUNoQixDQUFDLEdBQUdnRyxHQUFHMUMsR0FBR3RELEVBQUUsU0FBUyxHQUFHaUcsR0FBRzNDLENBQUMsR0FBR0E7QUFBQSxFQUNqQztBQUNBLFNBQU85RDtBQUNULEVBQUUsS0FBSztBQUNQLE1BQU00RyxLQUFLLENBQUMsTUFBTSxPQUFPNUcsTUFBTTtBQUM3QixNQUFJTSxHQUFHQztBQUNQLE1BQUk7QUFDRixLQUFDQSxLQUFLRCxJQUFJTixFQUFFLGNBQWMsS0FBSyxzQkFBc0IsUUFBUU8sRUFBRSxLQUFLRCxDQUFDLEdBQUcsRUFBRSxvQkFBb0I7QUFBQSxNQUM1RixLQUFLTixFQUFFO0FBQUEsSUFDVCxDQUFDO0FBQ0QsVUFBTVEsSUFBSSxNQUFNLEVBQUVSLENBQUM7QUFDbkIsUUFBSSxFQUFFLG9CQUFvQjtBQUFBLE1BQ3hCLEtBQUtBLEVBQUU7QUFBQSxNQUNQLEdBQUdRO0FBQUEsSUFDTCxDQUFDLEdBQUdBLEVBQUUsU0FBUztBQUNiLE1BQUFSLEVBQUUsY0FBYyxJQUFJLDRCQUE0QlEsRUFBRSxPQUFPLGlCQUFpQjtBQUFBLGFBQ25FQSxFQUFFLFNBQVM7QUFDbEIsTUFBQVIsRUFBRSxjQUFjLElBQUk7QUFBQSxRQUNsQlEsRUFBRSxPQUFPO0FBQUEsUUFDVEEsRUFBRSxPQUFPO0FBQUEsUUFDVEEsRUFBRSxPQUFPO0FBQUEsUUFDVEEsRUFBRSxPQUFPLG1CQUFtQixDQUFDO0FBQUEsTUFDL0I7QUFBQTtBQUVBLFlBQU0sSUFBSSxNQUFNLG1CQUFtQkEsQ0FBQyxFQUFFO0FBQUEsRUFDMUMsU0FBU0EsR0FBRztBQUNWLFVBQU1zRCxJQUFJMUQsRUFBRUksQ0FBQyxHQUFHdUQsSUFBSSxNQUFNLEdBQUcvRCxFQUFFLFFBQVEsa0JBQWtCOEQsQ0FBQztBQUMxRCxJQUFBOUQsRUFBRSxjQUFjLElBQUksZ0JBQWdCOEQsR0FBR0MsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsS0FBSy9ELEVBQUUsdUJBQXVCLGNBQWM4RCxHQUFHLFdBQVdDLEVBQUUsQ0FBQztBQUFBLEVBQ2hJO0FBQ0YsR0FBRzhDLEtBQUssQ0FBQyxNQUFNLE9BQU83RyxNQUFNO0FBQzFCLE1BQUk7QUFDRixXQUFPLE1BQU0sRUFBRUEsQ0FBQztBQUFBLEVBQ2xCLFNBQVNNLEdBQUc7QUFDVixVQUFNLEVBQUUsT0FBT0MsRUFBRSxJQUFJdUcsRUFBRSxvQkFBb0IsR0FBR3RHLElBQUlKLEVBQUVFLENBQUMsR0FBR3dELElBQUksTUFBTSxHQUFHOUQsRUFBRSxRQUFRLGtCQUFrQlEsQ0FBQztBQUNsRyxXQUFPRCxFQUFFdUQsR0FBR3RELEdBQUdGLENBQUMsR0FBRyxFQUFFLG1CQUFtQixFQUFFLGNBQWNFLEdBQUcsV0FBV3NELEVBQUUsQ0FBQyxHQUFHLEVBQUUsYUFBYSxJQUFJLFFBQVF0RCxHQUFHLFdBQVdzRCxHQUFHLFdBQVcsR0FBRztBQUFBLEVBQ3hJO0FBQ0YsR0FBR2dELElBQUksQ0FBQyxNQUFNO0FBQ1osUUFBTTlHLElBQUksSUFBSU8sTUFBTTtBQUNsQixXQUFPLFFBQVEsSUFBSSxHQUFHbEIsR0FBRyxNQUFNLEtBQUssTUFBTSxDQUFDLEdBQUdBLEdBQUcsS0FBSyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHa0IsQ0FBQztBQUFBLEVBQzdFLEdBQUdELElBQUksSUFBSUMsTUFBTTtBQUNmLFdBQU8sUUFBUSxLQUFLLEdBQUdsQixHQUFHLElBQUksS0FBSyxNQUFNLENBQUMsR0FBR0EsR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUdrQixDQUFDO0FBQUEsRUFDNUU7QUFDQSxTQUFPO0FBQUEsSUFDTCxLQUFLUDtBQUFBLElBQ0wsS0FBS007QUFBQSxJQUNMLE9BQU9OO0FBQUEsSUFDUCxPQUFPTTtBQUFBLEVBQ1Q7QUFDRjtBQUNBLElBQUl5RyxLQUFLLFNBQVMsR0FBRy9HLEdBQUc7QUFDdEIsU0FBTytHLEtBQUssT0FBTyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsRUFBRSxhQUFhLFNBQVMsU0FBU3pHLEdBQUdDLEdBQUc7QUFDeEYsSUFBQUQsRUFBRSxZQUFZQztBQUFBLEVBQ2hCLEtBQUssU0FBU0QsR0FBR0MsR0FBRztBQUNsQixhQUFTQyxLQUFLRCxFQUFHLFFBQU8sVUFBVSxlQUFlLEtBQUtBLEdBQUdDLENBQUMsTUFBTUYsRUFBRUUsQ0FBQyxJQUFJRCxFQUFFQyxDQUFDO0FBQUEsRUFDNUUsR0FBR3VHLEdBQUcsR0FBRy9HLENBQUM7QUFDWjtBQUNBLFNBQVNnSCxHQUFHLEdBQUdoSCxHQUFHO0FBQ2hCLE1BQUksT0FBT0EsS0FBSyxjQUFjQSxNQUFNO0FBQ2xDLFVBQU0sSUFBSSxVQUFVLHlCQUF5QixPQUFPQSxDQUFDLElBQUksK0JBQStCO0FBQzFGLEVBQUErRyxHQUFHLEdBQUcvRyxDQUFDO0FBQ1AsV0FBU00sSUFBSTtBQUNYLFNBQUssY0FBYztBQUFBLEVBQ3JCO0FBQ0EsSUFBRSxZQUFZTixNQUFNLE9BQU8sT0FBTyxPQUFPQSxDQUFDLEtBQUtNLEVBQUUsWUFBWU4sRUFBRSxXQUFXLElBQUlNLEVBQUU7QUFDbEY7QUFDQSxTQUFTMkcsR0FBRyxHQUFHakgsR0FBR00sR0FBR0MsR0FBRztBQUN0QixXQUFTQyxFQUFFc0QsR0FBRztBQUNaLFdBQU9BLGFBQWF4RCxJQUFJd0QsSUFBSSxJQUFJeEQsRUFBRSxTQUFTeUQsR0FBRztBQUM1QyxNQUFBQSxFQUFFRCxDQUFDO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDSDtBQUNBLFNBQU8sS0FBS3hELE1BQU1BLElBQUksVUFBVSxTQUFTd0QsR0FBR0MsR0FBRztBQUM3QyxhQUFTLEVBQUUsR0FBRztBQUNaLFVBQUk7QUFDRixVQUFFeEQsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUFBLE1BQ2IsU0FBUzJHLEdBQUc7QUFDVixRQUFBbkQsRUFBRW1ELENBQUM7QUFBQSxNQUNMO0FBQUEsSUFDRjtBQUNBLGFBQVMsRUFBRSxHQUFHO0FBQ1osVUFBSTtBQUNGLFVBQUUzRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQUEsTUFDZCxTQUFTMkcsR0FBRztBQUNWLFFBQUFuRCxFQUFFbUQsQ0FBQztBQUFBLE1BQ0w7QUFBQSxJQUNGO0FBQ0EsYUFBUyxFQUFFLEdBQUc7QUFDWixRQUFFLE9BQU9wRCxFQUFFLEVBQUUsS0FBSyxJQUFJdEQsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQztBQUFBLElBQzVDO0FBQ0EsT0FBR0QsSUFBSUEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQUEsRUFDL0IsQ0FBQztBQUNIO0FBQ0EsU0FBUzRHLEdBQUcsR0FBR25ILEdBQUc7QUFDaEIsTUFBSU0sSUFBSSxFQUFFLE9BQU8sR0FBRyxNQUFNLFdBQVc7QUFDbkMsUUFBSXdELEVBQUUsQ0FBQyxJQUFJLEVBQUcsT0FBTUEsRUFBRSxDQUFDO0FBQ3ZCLFdBQU9BLEVBQUUsQ0FBQztBQUFBLEVBQ1osR0FBRyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxHQUFHdkQsR0FBR0MsR0FBR3NELEdBQUdDLElBQUksT0FBTyxRQUFRLE9BQU8sWUFBWSxhQUFhLFdBQVcsUUFBUSxTQUFTO0FBQ2hILFNBQU9BLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBR0EsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHQSxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsT0FBTyxVQUFVLGVBQWVBLEVBQUUsT0FBTyxRQUFRLElBQUksV0FBVztBQUNySCxXQUFPO0FBQUEsRUFDVCxJQUFJQTtBQUNKLFdBQVMsRUFBRSxHQUFHO0FBQ1osV0FBTyxTQUFTLEdBQUc7QUFDakIsYUFBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFDQSxXQUFTLEVBQUUsR0FBRztBQUNaLFFBQUl4RCxFQUFHLE9BQU0sSUFBSSxVQUFVLGlDQUFpQztBQUM1RCxXQUFPd0QsTUFBTUEsSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNekQsSUFBSSxLQUFLQSxJQUFLLEtBQUk7QUFDN0MsVUFBSUMsSUFBSSxHQUFHQyxNQUFNc0QsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJdEQsRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJQSxFQUFFLFdBQVdzRCxJQUFJdEQsRUFBRSxXQUFXc0QsRUFBRSxLQUFLdEQsQ0FBQyxHQUFHLEtBQUtBLEVBQUUsU0FBUyxFQUFFc0QsSUFBSUEsRUFBRSxLQUFLdEQsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQU0sUUFBT3NEO0FBQy9JLGNBQVF0RCxJQUFJLEdBQUdzRCxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHQSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsR0FBRztBQUFBLFFBQ25ELEtBQUs7QUFBQSxRQUNMLEtBQUs7QUFDSCxVQUFBQSxJQUFJO0FBQ0o7QUFBQSxRQUNGLEtBQUs7QUFDSCxpQkFBT3hELEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHO0FBQUEsUUFDNUMsS0FBSztBQUNILFVBQUFBLEVBQUUsU0FBU0UsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMzQjtBQUFBLFFBQ0YsS0FBSztBQUNILGNBQUlGLEVBQUUsSUFBSSxJQUFJLEdBQUdBLEVBQUUsS0FBSyxJQUFJO0FBQzVCO0FBQUEsUUFDRjtBQUNFLGNBQUl3RCxJQUFJeEQsRUFBRSxNQUFNLEVBQUV3RCxJQUFJQSxFQUFFLFNBQVMsS0FBS0EsRUFBRUEsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxNQUFNLElBQUk7QUFDcEYsWUFBQXhELElBQUk7QUFDSjtBQUFBLFVBQ0Y7QUFDQSxjQUFJLEVBQUUsQ0FBQyxNQUFNLE1BQU0sQ0FBQ3dELEtBQUssRUFBRSxDQUFDLElBQUlBLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJQSxFQUFFLENBQUMsSUFBSTtBQUNwRCxZQUFBeEQsRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUNiO0FBQUEsVUFDRjtBQUNBLGNBQUksRUFBRSxDQUFDLE1BQU0sS0FBS0EsRUFBRSxRQUFRd0QsRUFBRSxDQUFDLEdBQUc7QUFDaEMsWUFBQXhELEVBQUUsUUFBUXdELEVBQUUsQ0FBQyxHQUFHQSxJQUFJO0FBQ3BCO0FBQUEsVUFDRjtBQUNBLGNBQUlBLEtBQUt4RCxFQUFFLFFBQVF3RCxFQUFFLENBQUMsR0FBRztBQUN2QixZQUFBeEQsRUFBRSxRQUFRd0QsRUFBRSxDQUFDLEdBQUd4RCxFQUFFLElBQUksS0FBSyxDQUFDO0FBQzVCO0FBQUEsVUFDRjtBQUNBLFVBQUF3RCxFQUFFLENBQUMsS0FBS3hELEVBQUUsSUFBSSxJQUFJLEdBQUdBLEVBQUUsS0FBSyxJQUFJO0FBQ2hDO0FBQUEsTUFDSjtBQUNBLFVBQUlOLEVBQUUsS0FBSyxHQUFHTSxDQUFDO0FBQUEsSUFDakIsU0FBUyxHQUFHO0FBQ1YsVUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHRSxJQUFJO0FBQUEsSUFDbEIsVUFBRTtBQUNBLE1BQUFELElBQUl1RCxJQUFJO0FBQUEsSUFDVjtBQUNBLFFBQUksRUFBRSxDQUFDLElBQUksRUFBRyxPQUFNLEVBQUUsQ0FBQztBQUN2QixXQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxRQUFRLE1BQU0sR0FBRztBQUFBLEVBQ2pEO0FBQ0Y7QUFDQSxTQUFTc0QsR0FBRyxHQUFHO0FBQ2IsTUFBSXBILElBQUksT0FBTyxVQUFVLGNBQWMsT0FBTyxVQUFVTSxJQUFJTixLQUFLLEVBQUVBLENBQUMsR0FBR08sSUFBSTtBQUMzRSxNQUFJRCxFQUFHLFFBQU9BLEVBQUUsS0FBSyxDQUFDO0FBQ3RCLE1BQUksS0FBSyxPQUFPLEVBQUUsVUFBVSxTQUFVLFFBQU87QUFBQSxJQUMzQyxNQUFNLFdBQVc7QUFDZixhQUFPLEtBQUtDLEtBQUssRUFBRSxXQUFXLElBQUksU0FBUyxFQUFFLE9BQU8sS0FBSyxFQUFFQSxHQUFHLEdBQUcsTUFBTSxDQUFDLEVBQUU7QUFBQSxJQUM1RTtBQUFBLEVBQ0Y7QUFDQSxRQUFNLElBQUksVUFBVVAsSUFBSSw0QkFBNEIsaUNBQWlDO0FBQ3ZGO0FBQ0EsU0FBU3FILEdBQUcsR0FBR3JILEdBQUc7QUFDaEIsTUFBSU0sSUFBSSxPQUFPLFVBQVUsY0FBYyxFQUFFLE9BQU8sUUFBUTtBQUN4RCxNQUFJLENBQUNBLEVBQUcsUUFBTztBQUNmLE1BQUlDLElBQUlELEVBQUUsS0FBSyxDQUFDLEdBQUdFLEdBQUdzRCxJQUFJLENBQUMsR0FBR0M7QUFDOUIsTUFBSTtBQUNGLFlBQVEvRCxNQUFNLFVBQVVBLE1BQU0sTUFBTSxFQUFFUSxJQUFJRCxFQUFFLEtBQUssR0FBRyxPQUFRLENBQUF1RCxFQUFFLEtBQUt0RCxFQUFFLEtBQUs7QUFBQSxFQUM1RSxTQUFTLEdBQUc7QUFDVixJQUFBdUQsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUFBLEVBQ2pCLFVBQUU7QUFDQSxRQUFJO0FBQ0YsTUFBQXZELEtBQUssQ0FBQ0EsRUFBRSxTQUFTRixJQUFJQyxFQUFFLFdBQVdELEVBQUUsS0FBS0MsQ0FBQztBQUFBLElBQzVDLFVBQUU7QUFDQSxVQUFJd0QsRUFBRyxPQUFNQSxFQUFFO0FBQUEsSUFDakI7QUFBQSxFQUNGO0FBQ0EsU0FBT0Q7QUFDVDtBQUNBLFNBQVN3RCxHQUFHLEdBQUd0SCxHQUFHTSxHQUFHO0FBQ25CLE1BQUksVUFBVSxXQUFXLEVBQUcsVUFBU0MsSUFBSSxHQUFHQyxJQUFJUixFQUFFLFFBQVE4RCxHQUFHdkQsSUFBSUMsR0FBR0Q7QUFDbEUsS0FBQ3VELEtBQUssRUFBRXZELEtBQUtQLFFBQVE4RCxNQUFNQSxJQUFJLE1BQU0sVUFBVSxNQUFNLEtBQUs5RCxHQUFHLEdBQUdPLENBQUMsSUFBSXVELEVBQUV2RCxDQUFDLElBQUlQLEVBQUVPLENBQUM7QUFDakYsU0FBTyxFQUFFLE9BQU91RCxLQUFLLE1BQU0sVUFBVSxNQUFNLEtBQUs5RCxDQUFDLENBQUM7QUFDcEQ7QUFDQSxTQUFTdUgsR0FBRyxHQUFHO0FBQ2IsU0FBTyxnQkFBZ0JBLE1BQU0sS0FBSyxJQUFJLEdBQUcsUUFBUSxJQUFJQSxHQUFHLENBQUM7QUFDM0Q7QUFDQSxTQUFTQyxHQUFHLEdBQUd4SCxHQUFHTSxHQUFHO0FBQ25CLE1BQUksQ0FBQyxPQUFPLGNBQWUsT0FBTSxJQUFJLFVBQVUsc0NBQXNDO0FBQ3JGLE1BQUlDLElBQUlELEVBQUUsTUFBTSxHQUFHTixLQUFLLENBQUMsQ0FBQyxHQUFHUSxHQUFHc0QsSUFBSSxDQUFDO0FBQ3JDLFNBQU90RCxJQUFJLE9BQU8sUUFBUSxPQUFPLGlCQUFpQixhQUFhLGdCQUFnQixRQUFRLFNBQVMsR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLE9BQU8sR0FBRyxFQUFFLFVBQVV1RCxDQUFDLEdBQUd2RCxFQUFFLE9BQU8sYUFBYSxJQUFJLFdBQVc7QUFDN0ssV0FBTztBQUFBLEVBQ1QsR0FBR0E7QUFDSCxXQUFTdUQsRUFBRTBELEdBQUc7QUFDWixXQUFPLFNBQVNDLEdBQUc7QUFDakIsYUFBTyxRQUFRLFFBQVFBLENBQUMsRUFBRSxLQUFLRCxHQUFHUCxDQUFDO0FBQUEsSUFDckM7QUFBQSxFQUNGO0FBQ0EsV0FBUyxFQUFFTyxHQUFHQyxHQUFHO0FBQ2YsSUFBQW5ILEVBQUVrSCxDQUFDLE1BQU1qSCxFQUFFaUgsQ0FBQyxJQUFJLFNBQVNFLEdBQUc7QUFDMUIsYUFBTyxJQUFJLFFBQVEsU0FBU0MsR0FBR0MsR0FBRztBQUNoQyxRQUFBL0QsRUFBRSxLQUFLLENBQUMyRCxHQUFHRSxHQUFHQyxHQUFHQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUVKLEdBQUdFLENBQUM7QUFBQSxNQUNwQyxDQUFDO0FBQUEsSUFDSCxHQUFHRCxNQUFNbEgsRUFBRWlILENBQUMsSUFBSUMsRUFBRWxILEVBQUVpSCxDQUFDLENBQUM7QUFBQSxFQUN4QjtBQUNBLFdBQVMsRUFBRUEsR0FBR0MsR0FBRztBQUNmLFFBQUk7QUFDRixRQUFFbkgsRUFBRWtILENBQUMsRUFBRUMsQ0FBQyxDQUFDO0FBQUEsSUFDWCxTQUFTQyxHQUFHO0FBQ1YsTUFBQUcsRUFBRWhFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRzZELENBQUM7QUFBQSxJQUNkO0FBQUEsRUFDRjtBQUNBLFdBQVMsRUFBRUYsR0FBRztBQUNaLElBQUFBLEVBQUUsaUJBQWlCRixLQUFLLFFBQVEsUUFBUUUsRUFBRSxNQUFNLENBQUMsRUFBRSxLQUFLLEdBQUdQLENBQUMsSUFBSVksRUFBRWhFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRzJELENBQUM7QUFBQSxFQUM5RTtBQUNBLFdBQVMsRUFBRUEsR0FBRztBQUNaLE1BQUUsUUFBUUEsQ0FBQztBQUFBLEVBQ2I7QUFDQSxXQUFTUCxFQUFFTyxHQUFHO0FBQ1osTUFBRSxTQUFTQSxDQUFDO0FBQUEsRUFDZDtBQUNBLFdBQVNLLEVBQUVMLEdBQUdDLEdBQUc7QUFDZixJQUFBRCxFQUFFQyxDQUFDLEdBQUc1RCxFQUFFLE1BQU0sR0FBR0EsRUFBRSxVQUFVLEVBQUVBLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBR0EsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFDakQ7QUFDRjtBQUNBLFNBQVNpRSxHQUFHLEdBQUc7QUFDYixNQUFJLENBQUMsT0FBTyxjQUFlLE9BQU0sSUFBSSxVQUFVLHNDQUFzQztBQUNyRixNQUFJL0gsSUFBSSxFQUFFLE9BQU8sYUFBYSxHQUFHTTtBQUNqQyxTQUFPTixJQUFJQSxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBT29ILE1BQU0sYUFBYUEsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLFFBQVEsRUFBRSxHQUFHOUcsSUFBSSxDQUFDLEdBQUdDLEVBQUUsTUFBTSxHQUFHQSxFQUFFLE9BQU8sR0FBR0EsRUFBRSxRQUFRLEdBQUdELEVBQUUsT0FBTyxhQUFhLElBQUksV0FBVztBQUNuSyxXQUFPO0FBQUEsRUFDVCxHQUFHQTtBQUNILFdBQVNDLEVBQUV1RCxHQUFHO0FBQ1osSUFBQXhELEVBQUV3RCxDQUFDLElBQUksRUFBRUEsQ0FBQyxLQUFLLFNBQVNDLEdBQUc7QUFDekIsYUFBTyxJQUFJLFFBQVEsU0FBUyxHQUFHLEdBQUc7QUFDaEMsUUFBQUEsSUFBSSxFQUFFRCxDQUFDLEVBQUVDLENBQUMsR0FBR3ZELEVBQUUsR0FBRyxHQUFHdUQsRUFBRSxNQUFNQSxFQUFFLEtBQUs7QUFBQSxNQUN0QyxDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDQSxXQUFTdkQsRUFBRXNELEdBQUdDLEdBQUcsR0FBRyxHQUFHO0FBQ3JCLFlBQVEsUUFBUSxDQUFDLEVBQUUsS0FBSyxTQUFTLEdBQUc7QUFDbEMsTUFBQUQsRUFBRSxFQUFFLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUFBLElBQ3pCLEdBQUdDLENBQUM7QUFBQSxFQUNOO0FBQ0Y7QUFDQSxTQUFTaUUsRUFBRSxHQUFHO0FBQ1osU0FBTyxPQUFPLEtBQUs7QUFDckI7QUFDQSxTQUFTQyxHQUFHLEdBQUc7QUFDYixNQUFJakksSUFBSSxTQUFTTyxHQUFHO0FBQ2xCLFVBQU0sS0FBS0EsQ0FBQyxHQUFHQSxFQUFFLFFBQVEsSUFBSSxNQUFNLEVBQUU7QUFBQSxFQUN2QyxHQUFHRCxJQUFJLEVBQUVOLENBQUM7QUFDVixTQUFPTSxFQUFFLFlBQVksT0FBTyxPQUFPLE1BQU0sU0FBUyxHQUFHQSxFQUFFLFVBQVUsY0FBY0EsR0FBR0E7QUFDcEY7QUFDQSxJQUFJNEgsS0FBS0QsR0FBRyxTQUFTLEdBQUc7QUFDdEIsU0FBTyxTQUFTLEdBQUc7QUFDakIsTUFBRSxJQUFJLEdBQUcsS0FBSyxVQUFVLElBQUksRUFBRSxTQUFTO0FBQUEsSUFDdkMsRUFBRSxJQUFJLFNBQVMsR0FBR3pILEdBQUc7QUFDbkIsYUFBT0EsSUFBSSxJQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsSUFDbkMsQ0FBQyxFQUFFLEtBQUs7QUFBQSxHQUNULElBQUksSUFBSSxLQUFLLE9BQU8sdUJBQXVCLEtBQUssU0FBUztBQUFBLEVBQzFEO0FBQ0YsQ0FBQztBQUNELFNBQVMySCxHQUFHLEdBQUduSSxHQUFHO0FBQ2hCLE1BQUksR0FBRztBQUNMLFFBQUlNLElBQUksRUFBRSxRQUFRTixDQUFDO0FBQ25CLFNBQUtNLEtBQUssRUFBRSxPQUFPQSxHQUFHLENBQUM7QUFBQSxFQUN6QjtBQUNGO0FBQ0EsSUFBSThILEtBQUssV0FBVztBQUNsQixXQUFTLEVBQUVwSSxHQUFHO0FBQ1osU0FBSyxrQkFBa0JBLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxhQUFhLE1BQU0sS0FBSyxjQUFjO0FBQUEsRUFDekY7QUFDQSxTQUFPLEVBQUUsVUFBVSxjQUFjLFdBQVc7QUFDMUMsUUFBSUEsR0FBR00sR0FBR0MsR0FBR0MsR0FBR3NEO0FBQ2hCLFFBQUksQ0FBQyxLQUFLLFFBQVE7QUFDaEIsV0FBSyxTQUFTO0FBQ2QsVUFBSUMsSUFBSSxLQUFLO0FBQ2IsVUFBSUE7QUFDRixZQUFJLEtBQUssYUFBYSxNQUFNLE1BQU0sUUFBUUEsQ0FBQztBQUN6QyxjQUFJO0FBQ0YscUJBQVMsSUFBSXFELEdBQUdyRCxDQUFDLEdBQUcsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBTSxJQUFJLEVBQUUsS0FBSyxHQUFHO0FBQ3ZELGtCQUFJLElBQUksRUFBRTtBQUNWLGdCQUFFLE9BQU8sSUFBSTtBQUFBLFlBQ2Y7QUFBQSxVQUNGLFNBQVM0RCxHQUFHO0FBQ1YsWUFBQTNILElBQUksRUFBRSxPQUFPMkgsRUFBRTtBQUFBLFVBQ2pCLFVBQUU7QUFDQSxnQkFBSTtBQUNGLG1CQUFLLENBQUMsRUFBRSxTQUFTckgsSUFBSSxFQUFFLFdBQVdBLEVBQUUsS0FBSyxDQUFDO0FBQUEsWUFDNUMsVUFBRTtBQUNBLGtCQUFJTixFQUFHLE9BQU1BLEVBQUU7QUFBQSxZQUNqQjtBQUFBLFVBQ0Y7QUFBQTtBQUVBLFVBQUErRCxFQUFFLE9BQU8sSUFBSTtBQUNqQixVQUFJLElBQUksS0FBSztBQUNiLFVBQUlpRSxFQUFFLENBQUM7QUFDTCxZQUFJO0FBQ0YsWUFBRTtBQUFBLFFBQ0osU0FBU0wsR0FBRztBQUNWLFVBQUE3RCxJQUFJNkQsYUFBYU8sS0FBS1AsRUFBRSxTQUFTLENBQUNBLENBQUM7QUFBQSxRQUNyQztBQUNGLFVBQUlULElBQUksS0FBSztBQUNiLFVBQUlBLEdBQUc7QUFDTCxhQUFLLGNBQWM7QUFDbkIsWUFBSTtBQUNGLG1CQUFTWSxJQUFJVixHQUFHRixDQUFDLEdBQUdPLElBQUlLLEVBQUUsS0FBSyxHQUFHLENBQUNMLEVBQUUsTUFBTUEsSUFBSUssRUFBRSxLQUFLLEdBQUc7QUFDdkQsZ0JBQUlKLElBQUlELEVBQUU7QUFDVixnQkFBSTtBQUNGLGNBQUFZLEdBQUdYLENBQUM7QUFBQSxZQUNOLFNBQVNDLEdBQUc7QUFDVixjQUFBN0QsSUFBSUEsS0FBSyxDQUFDLEdBQUc2RCxhQUFhTyxLQUFLcEUsSUFBSXdELEdBQUdBLEdBQUcsQ0FBQyxHQUFHRCxHQUFHdkQsQ0FBQyxDQUFDLEdBQUd1RCxHQUFHTSxFQUFFLE1BQU0sQ0FBQyxJQUFJN0QsRUFBRSxLQUFLNkQsQ0FBQztBQUFBLFlBQy9FO0FBQUEsVUFDRjtBQUFBLFFBQ0YsU0FBU0EsR0FBRztBQUNWLFVBQUFwSCxJQUFJLEVBQUUsT0FBT29ILEVBQUU7QUFBQSxRQUNqQixVQUFFO0FBQ0EsY0FBSTtBQUNGLFlBQUFGLEtBQUssQ0FBQ0EsRUFBRSxTQUFTakgsSUFBSXNILEVBQUUsV0FBV3RILEVBQUUsS0FBS3NILENBQUM7QUFBQSxVQUM1QyxVQUFFO0FBQ0EsZ0JBQUl2SCxFQUFHLE9BQU1BLEVBQUU7QUFBQSxVQUNqQjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0EsVUFBSXVEO0FBQ0YsY0FBTSxJQUFJb0UsR0FBR3BFLENBQUM7QUFBQSxJQUNsQjtBQUFBLEVBQ0YsR0FBRyxFQUFFLFVBQVUsTUFBTSxTQUFTOUQsR0FBRztBQUMvQixRQUFJTTtBQUNKLFFBQUlOLEtBQUtBLE1BQU07QUFDYixVQUFJLEtBQUs7QUFDUCxRQUFBcUksR0FBR3JJLENBQUM7QUFBQSxXQUNEO0FBQ0gsWUFBSUEsYUFBYSxHQUFHO0FBQ2xCLGNBQUlBLEVBQUUsVUFBVUEsRUFBRSxXQUFXLElBQUk7QUFDL0I7QUFDRixVQUFBQSxFQUFFLFdBQVcsSUFBSTtBQUFBLFFBQ25CO0FBQ0EsU0FBQyxLQUFLLGVBQWVNLElBQUksS0FBSyxpQkFBaUIsUUFBUUEsTUFBTSxTQUFTQSxJQUFJLENBQUMsR0FBRyxLQUFLTixDQUFDO0FBQUEsTUFDdEY7QUFBQSxFQUNKLEdBQUcsRUFBRSxVQUFVLGFBQWEsU0FBU0EsR0FBRztBQUN0QyxRQUFJTSxJQUFJLEtBQUs7QUFDYixXQUFPQSxNQUFNTixLQUFLLE1BQU0sUUFBUU0sQ0FBQyxLQUFLQSxFQUFFLFNBQVNOLENBQUM7QUFBQSxFQUNwRCxHQUFHLEVBQUUsVUFBVSxhQUFhLFNBQVNBLEdBQUc7QUFDdEMsUUFBSU0sSUFBSSxLQUFLO0FBQ2IsU0FBSyxhQUFhLE1BQU0sUUFBUUEsQ0FBQyxLQUFLQSxFQUFFLEtBQUtOLENBQUMsR0FBR00sS0FBS0EsSUFBSSxDQUFDQSxHQUFHTixDQUFDLElBQUlBO0FBQUEsRUFDckUsR0FBRyxFQUFFLFVBQVUsZ0JBQWdCLFNBQVNBLEdBQUc7QUFDekMsUUFBSU0sSUFBSSxLQUFLO0FBQ2IsSUFBQUEsTUFBTU4sSUFBSSxLQUFLLGFBQWEsT0FBTyxNQUFNLFFBQVFNLENBQUMsS0FBSzZILEdBQUc3SCxHQUFHTixDQUFDO0FBQUEsRUFDaEUsR0FBRyxFQUFFLFVBQVUsU0FBUyxTQUFTQSxHQUFHO0FBQ2xDLFFBQUlNLElBQUksS0FBSztBQUNiLElBQUFBLEtBQUs2SCxHQUFHN0gsR0FBR04sQ0FBQyxHQUFHQSxhQUFhLEtBQUtBLEVBQUUsY0FBYyxJQUFJO0FBQUEsRUFDdkQsR0FBRyxFQUFFLFFBQVEsV0FBVztBQUN0QixRQUFJQSxJQUFJLElBQUksRUFBRTtBQUNkLFdBQU9BLEVBQUUsU0FBUyxJQUFJQTtBQUFBLEVBQ3hCLEVBQUUsR0FBRztBQUNQLEVBQUUsR0FBR3NJLEtBQUtGLEdBQUc7QUFDYixTQUFTRyxHQUFHLEdBQUc7QUFDYixTQUFPLGFBQWFILE1BQU0sS0FBSyxZQUFZLEtBQUtKLEVBQUUsRUFBRSxNQUFNLEtBQUtBLEVBQUUsRUFBRSxHQUFHLEtBQUtBLEVBQUUsRUFBRSxXQUFXO0FBQzVGO0FBQ0EsU0FBU0ssR0FBRyxHQUFHO0FBQ2IsRUFBQUwsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWTtBQUM3QjtBQUNBLElBQUksS0FBSztBQUFBLEVBQ1Asa0JBQWtCO0FBQUEsRUFDbEIsdUJBQXVCO0FBQUEsRUFDdkIsU0FBUztBQUFBLEVBQ1QsdUNBQXVDO0FBQUEsRUFDdkMsMEJBQTBCO0FBQzVCLEdBQUdRLEtBQUs7QUFBQSxFQUNOLFlBQVksU0FBUyxHQUFHeEksR0FBRztBQUN6QixhQUFTTSxJQUFJLENBQUMsR0FBR0MsSUFBSSxHQUFHQSxJQUFJLFVBQVUsUUFBUUE7QUFDNUMsTUFBQUQsRUFBRUMsSUFBSSxDQUFDLElBQUksVUFBVUEsQ0FBQztBQUN4QixXQUFPLFdBQVcsTUFBTSxRQUFRK0csR0FBRyxDQUFDLEdBQUd0SCxDQUFDLEdBQUdxSCxHQUFHL0csQ0FBQyxDQUFDLENBQUM7QUFBQSxFQUNuRDtBQUFBLEVBQ0EsY0FBYyxTQUFTLEdBQUc7QUFDeEIsV0FBUSxhQUFjLENBQUM7QUFBQSxFQUN6QjtBQUFBLEVBQ0EsVUFBVTtBQUNaO0FBQ0EsU0FBUyxHQUFHLEdBQUc7QUFDYixFQUFBa0ksR0FBRyxXQUFXLFdBQVc7QUFDdkIsVUFBTTtBQUFBLEVBQ1IsQ0FBQztBQUNIO0FBQ0EsU0FBU0MsS0FBSztBQUNkO0FBQ0EsU0FBU0MsR0FBRyxHQUFHO0FBQ2IsSUFBRTtBQUNKO0FBQ0EsSUFBSUMsS0FBSyxTQUFTLEdBQUc7QUFDbkIsRUFBQTNCLEdBQUdoSCxHQUFHLENBQUM7QUFDUCxXQUFTQSxFQUFFTSxHQUFHO0FBQ1osUUFBSUMsSUFBSSxFQUFFLEtBQUssSUFBSSxLQUFLO0FBQ3hCLFdBQU9BLEVBQUUsWUFBWSxJQUFJRCxLQUFLQyxFQUFFLGNBQWNELEdBQUdpSSxHQUFHakksQ0FBQyxLQUFLQSxFQUFFLElBQUlDLENBQUMsS0FBS0EsRUFBRSxjQUFjcUksSUFBSXJJO0FBQUEsRUFDNUY7QUFDQSxTQUFPUCxFQUFFLFNBQVMsU0FBU00sR0FBR0MsR0FBR0MsR0FBRztBQUNsQyxXQUFPLElBQUlxSSxHQUFHdkksR0FBR0MsR0FBR0MsQ0FBQztBQUFBLEVBQ3ZCLEdBQUdSLEVBQUUsVUFBVSxPQUFPLFNBQVNNLEdBQUc7QUFDaEMsU0FBSyxhQUFhLEtBQUssTUFBTUEsQ0FBQztBQUFBLEVBQ2hDLEdBQUdOLEVBQUUsVUFBVSxRQUFRLFNBQVNNLEdBQUc7QUFDakMsU0FBSyxjQUFjLEtBQUssWUFBWSxJQUFJLEtBQUssT0FBT0EsQ0FBQztBQUFBLEVBQ3ZELEdBQUdOLEVBQUUsVUFBVSxXQUFXLFdBQVc7QUFDbkMsU0FBSyxjQUFjLEtBQUssWUFBWSxJQUFJLEtBQUssVUFBVTtBQUFBLEVBQ3pELEdBQUdBLEVBQUUsVUFBVSxjQUFjLFdBQVc7QUFDdEMsU0FBSyxXQUFXLEtBQUssWUFBWSxJQUFJLEVBQUUsVUFBVSxZQUFZLEtBQUssSUFBSSxHQUFHLEtBQUssY0FBYztBQUFBLEVBQzlGLEdBQUdBLEVBQUUsVUFBVSxRQUFRLFNBQVNNLEdBQUc7QUFDakMsU0FBSyxZQUFZLEtBQUtBLENBQUM7QUFBQSxFQUN6QixHQUFHTixFQUFFLFVBQVUsU0FBUyxTQUFTTSxHQUFHO0FBQ2xDLFFBQUk7QUFDRixXQUFLLFlBQVksTUFBTUEsQ0FBQztBQUFBLElBQzFCLFVBQUU7QUFDQSxXQUFLLFlBQVk7QUFBQSxJQUNuQjtBQUFBLEVBQ0YsR0FBR04sRUFBRSxVQUFVLFlBQVksV0FBVztBQUNwQyxRQUFJO0FBQ0YsV0FBSyxZQUFZLFNBQVM7QUFBQSxJQUM1QixVQUFFO0FBQ0EsV0FBSyxZQUFZO0FBQUEsSUFDbkI7QUFBQSxFQUNGLEdBQUdBO0FBQ0wsRUFBRW9JLEVBQUUsR0FBR1UsS0FBSyxTQUFTLFVBQVU7QUFDL0IsU0FBU0MsR0FBRyxHQUFHL0ksR0FBRztBQUNoQixTQUFPOEksR0FBRyxLQUFLLEdBQUc5SSxDQUFDO0FBQ3JCO0FBQ0EsSUFBSWdKLEtBQUssV0FBVztBQUNsQixXQUFTLEVBQUVoSixHQUFHO0FBQ1osU0FBSyxrQkFBa0JBO0FBQUEsRUFDekI7QUFDQSxTQUFPLEVBQUUsVUFBVSxPQUFPLFNBQVNBLEdBQUc7QUFDcEMsUUFBSU0sSUFBSSxLQUFLO0FBQ2IsUUFBSUEsRUFBRTtBQUNKLFVBQUk7QUFDRixRQUFBQSxFQUFFLEtBQUtOLENBQUM7QUFBQSxNQUNWLFNBQVNPLEdBQUc7QUFDVixRQUFBMEksR0FBRzFJLENBQUM7QUFBQSxNQUNOO0FBQUEsRUFDSixHQUFHLEVBQUUsVUFBVSxRQUFRLFNBQVNQLEdBQUc7QUFDakMsUUFBSU0sSUFBSSxLQUFLO0FBQ2IsUUFBSUEsRUFBRTtBQUNKLFVBQUk7QUFDRixRQUFBQSxFQUFFLE1BQU1OLENBQUM7QUFBQSxNQUNYLFNBQVNPLEdBQUc7QUFDVixRQUFBMEksR0FBRzFJLENBQUM7QUFBQSxNQUNOO0FBQUE7QUFFQSxNQUFBMEksR0FBR2pKLENBQUM7QUFBQSxFQUNSLEdBQUcsRUFBRSxVQUFVLFdBQVcsV0FBVztBQUNuQyxRQUFJQSxJQUFJLEtBQUs7QUFDYixRQUFJQSxFQUFFO0FBQ0osVUFBSTtBQUNGLFFBQUFBLEVBQUUsU0FBUztBQUFBLE1BQ2IsU0FBU00sR0FBRztBQUNWLFFBQUEySSxHQUFHM0ksQ0FBQztBQUFBLE1BQ047QUFBQSxFQUNKLEdBQUc7QUFDTCxFQUFFLEdBQUd1SSxLQUFLLFNBQVMsR0FBRztBQUNwQixFQUFBN0IsR0FBR2hILEdBQUcsQ0FBQztBQUNQLFdBQVNBLEVBQUVNLEdBQUdDLEdBQUdDLEdBQUc7QUFDbEIsUUFBSXNELElBQUksRUFBRSxLQUFLLElBQUksS0FBSyxNQUFNQztBQUM5QixRQUFJaUUsRUFBRTFILENBQUMsS0FBSyxDQUFDQTtBQUNYLE1BQUF5RCxJQUFJO0FBQUEsUUFDRixNQUFNekQsS0FBSztBQUFBLFFBQ1gsT0FBT0MsS0FBSztBQUFBLFFBQ1osVUFBVUMsS0FBSztBQUFBLE1BQ2pCO0FBQUEsU0FDRztBQUNILFVBQUk7QUFDSixNQUFBc0QsS0FBSyxHQUFHLDRCQUE0QixJQUFJLE9BQU8sT0FBT3hELENBQUMsR0FBRyxFQUFFLGNBQWMsV0FBVztBQUNuRixlQUFPd0QsRUFBRSxZQUFZO0FBQUEsTUFDdkIsR0FBR0MsSUFBSTtBQUFBLFFBQ0wsTUFBTXpELEVBQUUsUUFBUXlJLEdBQUd6SSxFQUFFLE1BQU0sQ0FBQztBQUFBLFFBQzVCLE9BQU9BLEVBQUUsU0FBU3lJLEdBQUd6SSxFQUFFLE9BQU8sQ0FBQztBQUFBLFFBQy9CLFVBQVVBLEVBQUUsWUFBWXlJLEdBQUd6SSxFQUFFLFVBQVUsQ0FBQztBQUFBLE1BQzFDLEtBQUt5RCxJQUFJekQ7QUFBQSxJQUNYO0FBQ0EsV0FBT3dELEVBQUUsY0FBYyxJQUFJa0YsR0FBR2pGLENBQUMsR0FBR0Q7QUFBQSxFQUNwQztBQUNBLFNBQU85RDtBQUNULEVBQUUySSxFQUFFO0FBQ0osU0FBU00sR0FBRyxHQUFHO0FBQ2IsS0FBRyxDQUFDO0FBQ047QUFDQSxTQUFTQyxHQUFHLEdBQUc7QUFDYixRQUFNO0FBQ1I7QUFDQSxJQUFJTixLQUFLO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixNQUFNSDtBQUFBLEVBQ04sT0FBT1M7QUFBQSxFQUNQLFVBQVVUO0FBQ1osR0FBR1UsS0FBSyxXQUFXO0FBQ2pCLFNBQU8sT0FBTyxVQUFVLGNBQWMsT0FBTyxjQUFjO0FBQzdELEVBQUU7QUFDRixTQUFTQyxHQUFHLEdBQUc7QUFDYixTQUFPO0FBQ1Q7QUFDQSxTQUFTQyxHQUFHLEdBQUc7QUFDYixTQUFPLEVBQUUsV0FBVyxJQUFJRCxLQUFLLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQyxJQUFJLFNBQVMsR0FBRztBQUMvRCxXQUFPLEVBQUUsT0FBTyxTQUFTLEdBQUc1SSxHQUFHO0FBQzdCLGFBQU9BLEVBQUUsQ0FBQztBQUFBLElBQ1osR0FBRyxDQUFDO0FBQUEsRUFDTjtBQUNGO0FBQ0EsSUFBSThJLEtBQUssV0FBVztBQUNsQixXQUFTLEVBQUV0SixHQUFHO0FBQ1osSUFBQUEsTUFBTSxLQUFLLGFBQWFBO0FBQUEsRUFDMUI7QUFDQSxTQUFPLEVBQUUsVUFBVSxPQUFPLFNBQVNBLEdBQUc7QUFDcEMsUUFBSU0sSUFBSSxJQUFJLEVBQUU7QUFDZCxXQUFPQSxFQUFFLFNBQVMsTUFBTUEsRUFBRSxXQUFXTixHQUFHTTtBQUFBLEVBQzFDLEdBQUcsRUFBRSxVQUFVLFlBQVksU0FBU04sR0FBR00sR0FBR0MsR0FBRztBQUMzQyxRQUFJQyxJQUFJLE1BQU1zRCxJQUFJeUYsR0FBR3ZKLENBQUMsSUFBSUEsSUFBSSxJQUFJNkksR0FBRzdJLEdBQUdNLEdBQUdDLENBQUM7QUFDNUMsV0FBT21JLEdBQUcsV0FBVztBQUNuQixVQUFJM0UsSUFBSXZELEdBQUcsSUFBSXVELEVBQUUsVUFBVSxJQUFJQSxFQUFFO0FBQ2pDLE1BQUFELEVBQUUsSUFBSSxJQUFJLEVBQUUsS0FBS0EsR0FBRyxDQUFDLElBQUksSUFBSXRELEVBQUUsV0FBV3NELENBQUMsSUFBSXRELEVBQUUsY0FBY3NELENBQUMsQ0FBQztBQUFBLElBQ25FLENBQUMsR0FBR0E7QUFBQSxFQUNOLEdBQUcsRUFBRSxVQUFVLGdCQUFnQixTQUFTOUQsR0FBRztBQUN6QyxRQUFJO0FBQ0YsYUFBTyxLQUFLLFdBQVdBLENBQUM7QUFBQSxJQUMxQixTQUFTTSxHQUFHO0FBQ1YsTUFBQU4sRUFBRSxNQUFNTSxDQUFDO0FBQUEsSUFDWDtBQUFBLEVBQ0YsR0FBRyxFQUFFLFVBQVUsVUFBVSxTQUFTTixHQUFHTSxHQUFHO0FBQ3RDLFFBQUlDLElBQUk7QUFDUixXQUFPRCxJQUFJa0osR0FBR2xKLENBQUMsR0FBRyxJQUFJQSxFQUFFLFNBQVNFLEdBQUdzRCxHQUFHO0FBQ3JDLFVBQUlDLElBQUksSUFBSThFLEdBQUc7QUFBQSxRQUNiLE1BQU0sU0FBUyxHQUFHO0FBQ2hCLGNBQUk7QUFDRixZQUFBN0ksRUFBRSxDQUFDO0FBQUEsVUFDTCxTQUFTLEdBQUc7QUFDVixZQUFBOEQsRUFBRSxDQUFDLEdBQUdDLEVBQUUsWUFBWTtBQUFBLFVBQ3RCO0FBQUEsUUFDRjtBQUFBLFFBQ0EsT0FBT0Q7QUFBQSxRQUNQLFVBQVV0RDtBQUFBLE1BQ1osQ0FBQztBQUNELE1BQUFELEVBQUUsVUFBVXdELENBQUM7QUFBQSxJQUNmLENBQUM7QUFBQSxFQUNILEdBQUcsRUFBRSxVQUFVLGFBQWEsU0FBUy9ELEdBQUc7QUFDdEMsUUFBSU07QUFDSixZQUFRQSxJQUFJLEtBQUssWUFBWSxRQUFRQSxNQUFNLFNBQVMsU0FBU0EsRUFBRSxVQUFVTixDQUFDO0FBQUEsRUFDNUUsR0FBRyxFQUFFLFVBQVVtSixFQUFFLElBQUksV0FBVztBQUM5QixXQUFPO0FBQUEsRUFDVCxHQUFHLEVBQUUsVUFBVSxPQUFPLFdBQVc7QUFDL0IsYUFBU25KLElBQUksQ0FBQyxHQUFHTSxJQUFJLEdBQUdBLElBQUksVUFBVSxRQUFRQTtBQUM1QyxNQUFBTixFQUFFTSxDQUFDLElBQUksVUFBVUEsQ0FBQztBQUNwQixXQUFPK0ksR0FBR3JKLENBQUMsRUFBRSxJQUFJO0FBQUEsRUFDbkIsR0FBRyxFQUFFLFVBQVUsWUFBWSxTQUFTQSxHQUFHO0FBQ3JDLFFBQUlNLElBQUk7QUFDUixXQUFPTixJQUFJd0osR0FBR3hKLENBQUMsR0FBRyxJQUFJQSxFQUFFLFNBQVNPLEdBQUdDLEdBQUc7QUFDckMsVUFBSXNEO0FBQ0osTUFBQXhELEVBQUUsVUFBVSxTQUFTeUQsR0FBRztBQUN0QixlQUFPRCxJQUFJQztBQUFBLE1BQ2IsR0FBRyxTQUFTQSxHQUFHO0FBQ2IsZUFBT3ZELEVBQUV1RCxDQUFDO0FBQUEsTUFDWixHQUFHLFdBQVc7QUFDWixlQUFPeEQsRUFBRXVELENBQUM7QUFBQSxNQUNaLENBQUM7QUFBQSxJQUNILENBQUM7QUFBQSxFQUNILEdBQUcsRUFBRSxTQUFTLFNBQVM5RCxHQUFHO0FBQ3hCLFdBQU8sSUFBSSxFQUFFQSxDQUFDO0FBQUEsRUFDaEIsR0FBRztBQUNMLEVBQUU7QUFDRixTQUFTd0osR0FBRyxHQUFHO0FBQ2IsTUFBSXhKO0FBQ0osVUFBUUEsSUFBSSxLQUFLLEdBQUcsYUFBYSxRQUFRQSxNQUFNLFNBQVNBLElBQUk7QUFDOUQ7QUFDQSxTQUFTeUosR0FBRyxHQUFHO0FBQ2IsU0FBTyxLQUFLekIsRUFBRSxFQUFFLElBQUksS0FBS0EsRUFBRSxFQUFFLEtBQUssS0FBS0EsRUFBRSxFQUFFLFFBQVE7QUFDckQ7QUFDQSxTQUFTdUIsR0FBRyxHQUFHO0FBQ2IsU0FBTyxLQUFLLGFBQWFaLE1BQU1jLEdBQUcsQ0FBQyxLQUFLbEIsR0FBRyxDQUFDO0FBQzlDO0FBQ0EsU0FBU21CLEdBQUcsR0FBRztBQUNiLFNBQU8xQixFQUFFLEtBQUssT0FBTyxTQUFTLEVBQUUsSUFBSTtBQUN0QztBQUNBLFNBQVMyQixHQUFHLEdBQUc7QUFDYixTQUFPLFNBQVMzSixHQUFHO0FBQ2pCLFFBQUkwSixHQUFHMUosQ0FBQztBQUNOLGFBQU9BLEVBQUUsS0FBSyxTQUFTTSxHQUFHO0FBQ3hCLFlBQUk7QUFDRixpQkFBTyxFQUFFQSxHQUFHLElBQUk7QUFBQSxRQUNsQixTQUFTQyxHQUFHO0FBQ1YsZUFBSyxNQUFNQSxDQUFDO0FBQUEsUUFDZDtBQUFBLE1BQ0YsQ0FBQztBQUNILFVBQU0sSUFBSSxVQUFVLHdDQUF3QztBQUFBLEVBQzlEO0FBQ0Y7QUFDQSxTQUFTcUosR0FBRyxHQUFHNUosR0FBR00sR0FBR0MsR0FBR0MsR0FBRztBQUN6QixTQUFPLElBQUlxSixHQUFHLEdBQUc3SixHQUFHTSxHQUFHQyxHQUFHQyxDQUFDO0FBQzdCO0FBQ0EsSUFBSXFKLEtBQUssU0FBUyxHQUFHO0FBQ25CLEVBQUE3QyxHQUFHaEgsR0FBRyxDQUFDO0FBQ1AsV0FBU0EsRUFBRU0sR0FBR0MsR0FBR0MsR0FBR3NELEdBQUdDLEdBQUcsR0FBRztBQUMzQixRQUFJLElBQUksRUFBRSxLQUFLLE1BQU16RCxDQUFDLEtBQUs7QUFDM0IsV0FBTyxFQUFFLGFBQWF5RCxHQUFHLEVBQUUsb0JBQW9CLEdBQUcsRUFBRSxRQUFReEQsSUFBSSxTQUFTLEdBQUc7QUFDMUUsVUFBSTtBQUNGLFFBQUFBLEVBQUUsQ0FBQztBQUFBLE1BQ0wsU0FBUyxHQUFHO0FBQ1YsUUFBQUQsRUFBRSxNQUFNLENBQUM7QUFBQSxNQUNYO0FBQUEsSUFDRixJQUFJLEVBQUUsVUFBVSxPQUFPLEVBQUUsU0FBU3dELElBQUksU0FBUyxHQUFHO0FBQ2hELFVBQUk7QUFDRixRQUFBQSxFQUFFLENBQUM7QUFBQSxNQUNMLFNBQVMsR0FBRztBQUNWLFFBQUF4RCxFQUFFLE1BQU0sQ0FBQztBQUFBLE1BQ1gsVUFBRTtBQUNBLGFBQUssWUFBWTtBQUFBLE1BQ25CO0FBQUEsSUFDRixJQUFJLEVBQUUsVUFBVSxRQUFRLEVBQUUsWUFBWUUsSUFBSSxXQUFXO0FBQ25ELFVBQUk7QUFDRixRQUFBQSxFQUFFO0FBQUEsTUFDSixTQUFTLEdBQUc7QUFDVixRQUFBRixFQUFFLE1BQU0sQ0FBQztBQUFBLE1BQ1gsVUFBRTtBQUNBLGFBQUssWUFBWTtBQUFBLE1BQ25CO0FBQUEsSUFDRixJQUFJLEVBQUUsVUFBVSxXQUFXO0FBQUEsRUFDN0I7QUFDQSxTQUFPTixFQUFFLFVBQVUsY0FBYyxXQUFXO0FBQzFDLFFBQUlNO0FBQ0osUUFBSSxDQUFDLEtBQUsscUJBQXFCLEtBQUssa0JBQWtCLEdBQUc7QUFDdkQsVUFBSUMsSUFBSSxLQUFLO0FBQ2IsUUFBRSxVQUFVLFlBQVksS0FBSyxJQUFJLEdBQUcsQ0FBQ0EsT0FBT0QsSUFBSSxLQUFLLGdCQUFnQixRQUFRQSxNQUFNLFVBQVVBLEVBQUUsS0FBSyxJQUFJO0FBQUEsSUFDMUc7QUFBQSxFQUNGLEdBQUdOO0FBQ0wsRUFBRTJJLEVBQUUsR0FBR21CLEtBQUs3QixHQUFHLFNBQVMsR0FBRztBQUN6QixTQUFPLFdBQVc7QUFDaEIsTUFBRSxJQUFJLEdBQUcsS0FBSyxPQUFPLDJCQUEyQixLQUFLLFVBQVU7QUFBQSxFQUNqRTtBQUNGLENBQUMsR0FBRzhCLEtBQUssU0FBUyxHQUFHO0FBQ25CLEVBQUEvQyxHQUFHaEgsR0FBRyxDQUFDO0FBQ1AsV0FBU0EsSUFBSTtBQUNYLFFBQUlNLElBQUksRUFBRSxLQUFLLElBQUksS0FBSztBQUN4QixXQUFPQSxFQUFFLFNBQVMsSUFBSUEsRUFBRSxtQkFBbUIsTUFBTUEsRUFBRSxZQUFZLENBQUMsR0FBR0EsRUFBRSxZQUFZLElBQUlBLEVBQUUsV0FBVyxJQUFJQSxFQUFFLGNBQWMsTUFBTUE7QUFBQSxFQUM5SDtBQUNBLFNBQU9OLEVBQUUsVUFBVSxPQUFPLFNBQVNNLEdBQUc7QUFDcEMsUUFBSUMsSUFBSSxJQUFJeUosR0FBRyxNQUFNLElBQUk7QUFDekIsV0FBT3pKLEVBQUUsV0FBV0QsR0FBR0M7QUFBQSxFQUN6QixHQUFHUCxFQUFFLFVBQVUsaUJBQWlCLFdBQVc7QUFDekMsUUFBSSxLQUFLO0FBQ1AsWUFBTSxJQUFJOEosR0FBRztBQUFBLEVBQ2pCLEdBQUc5SixFQUFFLFVBQVUsT0FBTyxTQUFTTSxHQUFHO0FBQ2hDLFFBQUlDLElBQUk7QUFDUixJQUFBbUksR0FBRyxXQUFXO0FBQ1osVUFBSWxJLEdBQUdzRDtBQUNQLFVBQUl2RCxFQUFFLGVBQWUsR0FBRyxDQUFDQSxFQUFFLFdBQVc7QUFDcEMsUUFBQUEsRUFBRSxxQkFBcUJBLEVBQUUsbUJBQW1CLE1BQU0sS0FBS0EsRUFBRSxTQUFTO0FBQ2xFLFlBQUk7QUFDRixtQkFBU3dELElBQUlxRCxHQUFHN0csRUFBRSxnQkFBZ0IsR0FBRyxJQUFJd0QsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sSUFBSUEsRUFBRSxLQUFLLEdBQUc7QUFDeEUsZ0JBQUksSUFBSSxFQUFFO0FBQ1YsY0FBRSxLQUFLekQsQ0FBQztBQUFBLFVBQ1Y7QUFBQSxRQUNGLFNBQVMsR0FBRztBQUNWLFVBQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7QUFBQSxRQUNqQixVQUFFO0FBQ0EsY0FBSTtBQUNGLGlCQUFLLENBQUMsRUFBRSxTQUFTc0QsSUFBSUMsRUFBRSxXQUFXRCxFQUFFLEtBQUtDLENBQUM7QUFBQSxVQUM1QyxVQUFFO0FBQ0EsZ0JBQUl2RCxFQUFHLE9BQU1BLEVBQUU7QUFBQSxVQUNqQjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSCxHQUFHUixFQUFFLFVBQVUsUUFBUSxTQUFTTSxHQUFHO0FBQ2pDLFFBQUlDLElBQUk7QUFDUixJQUFBbUksR0FBRyxXQUFXO0FBQ1osVUFBSW5JLEVBQUUsZUFBZSxHQUFHLENBQUNBLEVBQUUsV0FBVztBQUNwQyxRQUFBQSxFQUFFLFdBQVdBLEVBQUUsWUFBWSxJQUFJQSxFQUFFLGNBQWNEO0FBQy9DLGlCQUFTRSxJQUFJRCxFQUFFLFdBQVdDLEVBQUU7QUFDMUIsVUFBQUEsRUFBRSxNQUFNLEVBQUUsTUFBTUYsQ0FBQztBQUFBLE1BQ3JCO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSCxHQUFHTixFQUFFLFVBQVUsV0FBVyxXQUFXO0FBQ25DLFFBQUlNLElBQUk7QUFDUixJQUFBb0ksR0FBRyxXQUFXO0FBQ1osVUFBSXBJLEVBQUUsZUFBZSxHQUFHLENBQUNBLEVBQUUsV0FBVztBQUNwQyxRQUFBQSxFQUFFLFlBQVk7QUFDZCxpQkFBU0MsSUFBSUQsRUFBRSxXQUFXQyxFQUFFO0FBQzFCLFVBQUFBLEVBQUUsTUFBTSxFQUFFLFNBQVM7QUFBQSxNQUN2QjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0gsR0FBR1AsRUFBRSxVQUFVLGNBQWMsV0FBVztBQUN0QyxTQUFLLFlBQVksS0FBSyxTQUFTLElBQUksS0FBSyxZQUFZLEtBQUssbUJBQW1CO0FBQUEsRUFDOUUsR0FBRyxPQUFPLGVBQWVBLEVBQUUsV0FBVyxZQUFZO0FBQUEsSUFDaEQsS0FBSyxXQUFXO0FBQ2QsVUFBSU07QUFDSixlQUFTQSxJQUFJLEtBQUssZUFBZSxRQUFRQSxNQUFNLFNBQVMsU0FBU0EsRUFBRSxVQUFVO0FBQUEsSUFDL0U7QUFBQSxJQUNBLFlBQVk7QUFBQSxJQUNaLGNBQWM7QUFBQSxFQUNoQixDQUFDLEdBQUdOLEVBQUUsVUFBVSxnQkFBZ0IsU0FBU00sR0FBRztBQUMxQyxXQUFPLEtBQUssZUFBZSxHQUFHLEVBQUUsVUFBVSxjQUFjLEtBQUssTUFBTUEsQ0FBQztBQUFBLEVBQ3RFLEdBQUdOLEVBQUUsVUFBVSxhQUFhLFNBQVNNLEdBQUc7QUFDdEMsV0FBTyxLQUFLLGVBQWUsR0FBRyxLQUFLLHdCQUF3QkEsQ0FBQyxHQUFHLEtBQUssZ0JBQWdCQSxDQUFDO0FBQUEsRUFDdkYsR0FBR04sRUFBRSxVQUFVLGtCQUFrQixTQUFTTSxHQUFHO0FBQzNDLFFBQUlDLElBQUksTUFBTUMsSUFBSSxNQUFNc0QsSUFBSXRELEVBQUUsVUFBVXVELElBQUl2RCxFQUFFLFdBQVcsSUFBSUEsRUFBRTtBQUMvRCxXQUFPc0QsS0FBS0MsSUFBSXVFLE1BQU0sS0FBSyxtQkFBbUIsTUFBTSxFQUFFLEtBQUtoSSxDQUFDLEdBQUcsSUFBSThILEdBQUcsV0FBVztBQUMvRSxNQUFBN0gsRUFBRSxtQkFBbUIsTUFBTTRILEdBQUcsR0FBRzdILENBQUM7QUFBQSxJQUNwQyxDQUFDO0FBQUEsRUFDSCxHQUFHTixFQUFFLFVBQVUsMEJBQTBCLFNBQVNNLEdBQUc7QUFDbkQsUUFBSUMsSUFBSSxNQUFNQyxJQUFJRCxFQUFFLFVBQVV1RCxJQUFJdkQsRUFBRSxhQUFhd0QsSUFBSXhELEVBQUU7QUFDdkQsSUFBQUMsSUFBSUYsRUFBRSxNQUFNd0QsQ0FBQyxJQUFJQyxLQUFLekQsRUFBRSxTQUFTO0FBQUEsRUFDbkMsR0FBR04sRUFBRSxVQUFVLGVBQWUsV0FBVztBQUN2QyxRQUFJTSxJQUFJLElBQUlnSixHQUFHO0FBQ2YsV0FBT2hKLEVBQUUsU0FBUyxNQUFNQTtBQUFBLEVBQzFCLEdBQUdOLEVBQUUsU0FBUyxTQUFTTSxHQUFHQyxHQUFHO0FBQzNCLFdBQU8sSUFBSXlKLEdBQUcxSixHQUFHQyxDQUFDO0FBQUEsRUFDcEIsR0FBR1A7QUFDTCxFQUFFc0osRUFBRSxHQUFHVSxLQUFLLFNBQVMsR0FBRztBQUN0QixFQUFBaEQsR0FBR2hILEdBQUcsQ0FBQztBQUNQLFdBQVNBLEVBQUVNLEdBQUdDLEdBQUc7QUFDZixRQUFJQyxJQUFJLEVBQUUsS0FBSyxJQUFJLEtBQUs7QUFDeEIsV0FBT0EsRUFBRSxjQUFjRixHQUFHRSxFQUFFLFNBQVNELEdBQUdDO0FBQUEsRUFDMUM7QUFDQSxTQUFPUixFQUFFLFVBQVUsT0FBTyxTQUFTTSxHQUFHO0FBQ3BDLFFBQUlDLEdBQUdDO0FBQ1AsS0FBQ0EsS0FBS0QsSUFBSSxLQUFLLGlCQUFpQixRQUFRQSxNQUFNLFNBQVMsU0FBU0EsRUFBRSxVQUFVLFFBQVFDLE1BQU0sVUFBVUEsRUFBRSxLQUFLRCxHQUFHRCxDQUFDO0FBQUEsRUFDakgsR0FBR04sRUFBRSxVQUFVLFFBQVEsU0FBU00sR0FBRztBQUNqQyxRQUFJQyxHQUFHQztBQUNQLEtBQUNBLEtBQUtELElBQUksS0FBSyxpQkFBaUIsUUFBUUEsTUFBTSxTQUFTLFNBQVNBLEVBQUUsV0FBVyxRQUFRQyxNQUFNLFVBQVVBLEVBQUUsS0FBS0QsR0FBR0QsQ0FBQztBQUFBLEVBQ2xILEdBQUdOLEVBQUUsVUFBVSxXQUFXLFdBQVc7QUFDbkMsUUFBSU0sR0FBR0M7QUFDUCxLQUFDQSxLQUFLRCxJQUFJLEtBQUssaUJBQWlCLFFBQVFBLE1BQU0sU0FBUyxTQUFTQSxFQUFFLGNBQWMsUUFBUUMsTUFBTSxVQUFVQSxFQUFFLEtBQUtELENBQUM7QUFBQSxFQUNsSCxHQUFHTixFQUFFLFVBQVUsYUFBYSxTQUFTTSxHQUFHO0FBQ3RDLFFBQUlDLEdBQUdDO0FBQ1AsWUFBUUEsS0FBS0QsSUFBSSxLQUFLLFlBQVksUUFBUUEsTUFBTSxTQUFTLFNBQVNBLEVBQUUsVUFBVUQsQ0FBQyxPQUFPLFFBQVFFLE1BQU0sU0FBU0EsSUFBSThIO0FBQUEsRUFDbkgsR0FBR3RJO0FBQ0wsRUFBRStKLEVBQUUsR0FBR0UsS0FBSztBQUFBLEVBQ1YsS0FBSyxXQUFXO0FBQ2QsV0FBTyxLQUFLLElBQUk7QUFBQSxFQUNsQjtBQUFBLEVBQ0EsVUFBVTtBQUNaLEdBQUdDLEtBQUssU0FBUyxHQUFHO0FBQ2xCLEVBQUFsRCxHQUFHaEgsR0FBRyxDQUFDO0FBQ1AsV0FBU0EsRUFBRU0sR0FBR0MsR0FBRztBQUNmLFdBQU8sRUFBRSxLQUFLLElBQUksS0FBSztBQUFBLEVBQ3pCO0FBQ0EsU0FBT1AsRUFBRSxVQUFVLFdBQVcsU0FBU00sR0FBR0MsR0FBRztBQUMzQyxXQUFPO0FBQUEsRUFDVCxHQUFHUDtBQUNMLEVBQUVvSSxFQUFFLEdBQUcrQixLQUFLO0FBQUEsRUFDVixhQUFhLFNBQVMsR0FBR25LLEdBQUc7QUFDMUIsYUFBU00sSUFBSSxDQUFDLEdBQUdDLElBQUksR0FBR0EsSUFBSSxVQUFVLFFBQVFBO0FBQzVDLE1BQUFELEVBQUVDLElBQUksQ0FBQyxJQUFJLFVBQVVBLENBQUM7QUFDeEIsV0FBTyxZQUFZLE1BQU0sUUFBUStHLEdBQUcsQ0FBQyxHQUFHdEgsQ0FBQyxHQUFHcUgsR0FBRy9HLENBQUMsQ0FBQyxDQUFDO0FBQUEsRUFDcEQ7QUFBQSxFQUNBLGVBQWUsU0FBUyxHQUFHO0FBQ3pCLFdBQU8sY0FBYyxDQUFDO0FBQUEsRUFDeEI7QUFBQSxFQUNBLFVBQVU7QUFDWixHQUFHOEosS0FBSyxTQUFTLEdBQUc7QUFDbEIsRUFBQXBELEdBQUdoSCxHQUFHLENBQUM7QUFDUCxXQUFTQSxFQUFFTSxHQUFHQyxHQUFHO0FBQ2YsUUFBSUMsSUFBSSxFQUFFLEtBQUssTUFBTUYsR0FBR0MsQ0FBQyxLQUFLO0FBQzlCLFdBQU9DLEVBQUUsWUFBWUYsR0FBR0UsRUFBRSxPQUFPRCxHQUFHQyxFQUFFLFVBQVUsSUFBSUE7QUFBQSxFQUN0RDtBQUNBLFNBQU9SLEVBQUUsVUFBVSxXQUFXLFNBQVNNLEdBQUdDLEdBQUc7QUFDM0MsUUFBSUM7QUFDSixRQUFJRCxNQUFNLFdBQVdBLElBQUksSUFBSSxLQUFLO0FBQ2hDLGFBQU87QUFDVCxTQUFLLFFBQVFEO0FBQ2IsUUFBSXdELElBQUksS0FBSyxJQUFJQyxJQUFJLEtBQUs7QUFDMUIsV0FBT0QsS0FBSyxTQUFTLEtBQUssS0FBSyxLQUFLLGVBQWVDLEdBQUdELEdBQUd2RCxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksS0FBSyxRQUFRQSxHQUFHLEtBQUssTUFBTUMsSUFBSSxLQUFLLFFBQVEsUUFBUUEsTUFBTSxTQUFTQSxJQUFJLEtBQUssZUFBZXVELEdBQUcsS0FBSyxJQUFJeEQsQ0FBQyxHQUFHO0FBQUEsRUFDOUwsR0FBR1AsRUFBRSxVQUFVLGlCQUFpQixTQUFTTSxHQUFHQyxHQUFHQyxHQUFHO0FBQ2hELFdBQU9BLE1BQU0sV0FBV0EsSUFBSSxJQUFJMkosR0FBRyxZQUFZN0osRUFBRSxNQUFNLEtBQUtBLEdBQUcsSUFBSSxHQUFHRSxDQUFDO0FBQUEsRUFDekUsR0FBR1IsRUFBRSxVQUFVLGlCQUFpQixTQUFTTSxHQUFHQyxHQUFHQyxHQUFHO0FBQ2hELFFBQUlBLE1BQU0sV0FBV0EsSUFBSSxJQUFJQSxLQUFLLFFBQVEsS0FBSyxVQUFVQSxLQUFLLEtBQUssWUFBWTtBQUM3RSxhQUFPRDtBQUNULElBQUFBLEtBQUssUUFBUTRKLEdBQUcsY0FBYzVKLENBQUM7QUFBQSxFQUNqQyxHQUFHUCxFQUFFLFVBQVUsVUFBVSxTQUFTTSxHQUFHQyxHQUFHO0FBQ3RDLFFBQUksS0FBSztBQUNQLGFBQU8sSUFBSSxNQUFNLDhCQUE4QjtBQUNqRCxTQUFLLFVBQVU7QUFDZixRQUFJQyxJQUFJLEtBQUssU0FBU0YsR0FBR0MsQ0FBQztBQUMxQixRQUFJQztBQUNGLGFBQU9BO0FBQ1QsU0FBSyxZQUFZLE1BQU0sS0FBSyxNQUFNLFNBQVMsS0FBSyxLQUFLLEtBQUssZUFBZSxLQUFLLFdBQVcsS0FBSyxJQUFJLElBQUk7QUFBQSxFQUN4RyxHQUFHUixFQUFFLFVBQVUsV0FBVyxTQUFTTSxHQUFHQyxHQUFHO0FBQ3ZDLFFBQUlDLElBQUksSUFBSXNEO0FBQ1osUUFBSTtBQUNGLFdBQUssS0FBS3hELENBQUM7QUFBQSxJQUNiLFNBQVN5RCxHQUFHO0FBQ1YsTUFBQXZELElBQUksSUFBSXNELElBQUlDLEtBQUssSUFBSSxNQUFNLG9DQUFvQztBQUFBLElBQ2pFO0FBQ0EsUUFBSXZEO0FBQ0YsYUFBTyxLQUFLLFlBQVksR0FBR3NEO0FBQUEsRUFDL0IsR0FBRzlELEVBQUUsVUFBVSxjQUFjLFdBQVc7QUFDdEMsUUFBSSxDQUFDLEtBQUssUUFBUTtBQUNoQixVQUFJTSxJQUFJLE1BQU1DLElBQUlELEVBQUUsSUFBSUUsSUFBSUYsRUFBRSxXQUFXd0QsSUFBSXRELEVBQUU7QUFDL0MsV0FBSyxPQUFPLEtBQUssUUFBUSxLQUFLLFlBQVksTUFBTSxLQUFLLFVBQVUsSUFBSTJILEdBQUdyRSxHQUFHLElBQUksR0FBR3ZELEtBQUssU0FBUyxLQUFLLEtBQUssS0FBSyxlQUFlQyxHQUFHRCxHQUFHLElBQUksSUFBSSxLQUFLLFFBQVEsTUFBTSxFQUFFLFVBQVUsWUFBWSxLQUFLLElBQUk7QUFBQSxJQUNoTTtBQUFBLEVBQ0YsR0FBR1A7QUFDTCxFQUFFa0ssRUFBRSxHQUFHRyxLQUFLLFdBQVc7QUFDckIsV0FBUyxFQUFFckssR0FBR00sR0FBRztBQUNmLElBQUFBLE1BQU0sV0FBV0EsSUFBSSxFQUFFLE1BQU0sS0FBSyxzQkFBc0JOLEdBQUcsS0FBSyxNQUFNTTtBQUFBLEVBQ3hFO0FBQ0EsU0FBTyxFQUFFLFVBQVUsV0FBVyxTQUFTTixHQUFHTSxHQUFHQyxHQUFHO0FBQzlDLFdBQU9ELE1BQU0sV0FBV0EsSUFBSSxJQUFJLElBQUksS0FBSyxvQkFBb0IsTUFBTU4sQ0FBQyxFQUFFLFNBQVNPLEdBQUdELENBQUM7QUFBQSxFQUNyRixHQUFHLEVBQUUsTUFBTTJKLEdBQUcsS0FBSztBQUNyQixFQUFFLEdBQUdLLEtBQUssU0FBUyxHQUFHO0FBQ3BCLEVBQUF0RCxHQUFHaEgsR0FBRyxDQUFDO0FBQ1AsV0FBU0EsRUFBRU0sR0FBR0MsR0FBRztBQUNmLElBQUFBLE1BQU0sV0FBV0EsSUFBSThKLEdBQUc7QUFDeEIsUUFBSTdKLElBQUksRUFBRSxLQUFLLE1BQU1GLEdBQUdDLENBQUMsS0FBSztBQUM5QixXQUFPQyxFQUFFLFVBQVUsQ0FBQyxHQUFHQSxFQUFFLFVBQVUsSUFBSUE7QUFBQSxFQUN6QztBQUNBLFNBQU9SLEVBQUUsVUFBVSxRQUFRLFNBQVNNLEdBQUc7QUFDckMsUUFBSUMsSUFBSSxLQUFLO0FBQ2IsUUFBSSxLQUFLLFNBQVM7QUFDaEIsTUFBQUEsRUFBRSxLQUFLRCxDQUFDO0FBQ1I7QUFBQSxJQUNGO0FBQ0EsUUFBSUU7QUFDSixTQUFLLFVBQVU7QUFDZjtBQUNFLFVBQUlBLElBQUlGLEVBQUUsUUFBUUEsRUFBRSxPQUFPQSxFQUFFLEtBQUs7QUFDaEM7QUFBQSxXQUNHQSxJQUFJQyxFQUFFLE1BQU07QUFDbkIsUUFBSSxLQUFLLFVBQVUsSUFBSUMsR0FBRztBQUN4QixhQUFPRixJQUFJQyxFQUFFLE1BQU07QUFDakIsUUFBQUQsRUFBRSxZQUFZO0FBQ2hCLFlBQU1FO0FBQUEsSUFDUjtBQUFBLEVBQ0YsR0FBR1I7QUFDTCxFQUFFcUssRUFBRSxHQUFHRSxLQUFLLElBQUlELEdBQUdGLEVBQUUsR0FBR0ksS0FBSyxTQUFTLEdBQUc7QUFDdkMsU0FBTyxLQUFLLE9BQU8sRUFBRSxVQUFVLFlBQVksT0FBTyxLQUFLO0FBQ3pEO0FBQ0EsU0FBU0MsR0FBRyxHQUFHO0FBQ2IsU0FBT3pDLEVBQUUsS0FBSyxPQUFPLFNBQVMsRUFBRSxJQUFJO0FBQ3RDO0FBQ0EsU0FBUzBDLEdBQUcsR0FBRztBQUNiLFNBQU8xQyxFQUFFLEVBQUVtQixFQUFFLENBQUM7QUFDaEI7QUFDQSxTQUFTd0IsR0FBRyxHQUFHO0FBQ2IsU0FBTyxPQUFPLGlCQUFpQjNDLEVBQUUsS0FBSyxPQUFPLFNBQVMsRUFBRSxPQUFPLGFBQWEsQ0FBQztBQUMvRTtBQUNBLFNBQVM0QyxHQUFHLEdBQUc7QUFDYixTQUFPLElBQUksVUFBVSxtQkFBbUIsTUFBTSxRQUFRLE9BQU8sS0FBSyxXQUFXLHNCQUFzQixNQUFNLElBQUksT0FBTywwSEFBMEg7QUFDaFA7QUFDQSxTQUFTQyxLQUFLO0FBQ1osU0FBTyxPQUFPLFVBQVUsY0FBYyxDQUFDLE9BQU8sV0FBVyxlQUFlLE9BQU87QUFDakY7QUFDQSxJQUFJQyxLQUFLRCxHQUFHO0FBQ1osU0FBU0UsR0FBRyxHQUFHO0FBQ2IsU0FBTy9DLEVBQUUsS0FBSyxPQUFPLFNBQVMsRUFBRThDLEVBQUUsQ0FBQztBQUNyQztBQUNBLFNBQVNFLEdBQUcsR0FBRztBQUNiLFNBQU94RCxHQUFHLE1BQU0sV0FBVyxXQUFXO0FBQ3BDLFFBQUksR0FBRyxHQUFHaEgsR0FBRztBQUNiLFdBQU8yRyxHQUFHLE1BQU0sU0FBUyxHQUFHO0FBQzFCLGNBQVEsRUFBRSxPQUFPO0FBQUEsUUFDZixLQUFLO0FBQ0gsY0FBSSxFQUFFLFVBQVUsR0FBRyxFQUFFLFFBQVE7QUFBQSxRQUMvQixLQUFLO0FBQ0gsWUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVE7QUFBQSxRQUN2QyxLQUFLO0FBQ0gsaUJBQU8sQ0FBQyxHQUFHSSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFBQSxRQUN6QixLQUFLO0FBQ0gsaUJBQU8sSUFBSSxFQUFFLEtBQUssR0FBRy9HLElBQUksRUFBRSxPQUFPLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxHQUFHK0csR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUFBLFFBQzNFLEtBQUs7QUFDSCxpQkFBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7QUFBQSxRQUNyQixLQUFLO0FBQ0gsaUJBQU8sQ0FBQyxHQUFHQSxHQUFHL0csQ0FBQyxDQUFDO0FBQUEsUUFDbEIsS0FBSztBQUNILGlCQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQztBQUFBLFFBQ3JCLEtBQUs7QUFDSCxpQkFBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUFBLFFBQ3hCLEtBQUs7QUFDSCxpQkFBTyxDQUFDLEdBQUcsRUFBRTtBQUFBLFFBQ2YsS0FBSztBQUNILGlCQUFPLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQztBQUFBLFFBQzVCLEtBQUs7QUFDSCxpQkFBTyxDQUFDLENBQUM7QUFBQSxNQUNiO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFDQSxTQUFTeUssR0FBRyxHQUFHO0FBQ2IsU0FBT2pELEVBQUUsS0FBSyxPQUFPLFNBQVMsRUFBRSxTQUFTO0FBQzNDO0FBQ0EsU0FBU2tELEdBQUcsR0FBRztBQUNiLE1BQUksYUFBYTVCO0FBQ2YsV0FBTztBQUNULE1BQUksS0FBSyxNQUFNO0FBQ2IsUUFBSW9CLEdBQUcsQ0FBQztBQUNOLGFBQU9TLEdBQUcsQ0FBQztBQUNiLFFBQUlYLEdBQUcsQ0FBQztBQUNOLGFBQU9ZLEdBQUcsQ0FBQztBQUNiLFFBQUlYLEdBQUcsQ0FBQztBQUNOLGFBQU9ZLEdBQUcsQ0FBQztBQUNiLFFBQUlWLEdBQUcsQ0FBQztBQUNOLGFBQU9XLEdBQUcsQ0FBQztBQUNiLFFBQUlQLEdBQUcsQ0FBQztBQUNOLGFBQU9RLEdBQUcsQ0FBQztBQUNiLFFBQUlOLEdBQUcsQ0FBQztBQUNOLGFBQU9PLEdBQUcsQ0FBQztBQUFBLEVBQ2Y7QUFDQSxRQUFNWixHQUFHLENBQUM7QUFDWjtBQUNBLFNBQVNPLEdBQUcsR0FBRztBQUNiLFNBQU8sSUFBSTdCLEdBQUcsU0FBU3RKLEdBQUc7QUFDeEIsUUFBSU0sSUFBSSxFQUFFNkksRUFBRSxFQUFFO0FBQ2QsUUFBSW5CLEVBQUUxSCxFQUFFLFNBQVM7QUFDZixhQUFPQSxFQUFFLFVBQVVOLENBQUM7QUFDdEIsVUFBTSxJQUFJLFVBQVUsZ0VBQWdFO0FBQUEsRUFDdEYsQ0FBQztBQUNIO0FBQ0EsU0FBU29MLEdBQUcsR0FBRztBQUNiLFNBQU8sSUFBSTlCLEdBQUcsU0FBU3RKLEdBQUc7QUFDeEIsYUFBU00sSUFBSSxHQUFHQSxJQUFJLEVBQUUsVUFBVSxDQUFDTixFQUFFLFFBQVFNO0FBQ3pDLE1BQUFOLEVBQUUsS0FBSyxFQUFFTSxDQUFDLENBQUM7QUFDYixJQUFBTixFQUFFLFNBQVM7QUFBQSxFQUNiLENBQUM7QUFDSDtBQUNBLFNBQVNxTCxHQUFHLEdBQUc7QUFDYixTQUFPLElBQUkvQixHQUFHLFNBQVN0SixHQUFHO0FBQ3hCLE1BQUUsS0FBSyxTQUFTTSxHQUFHO0FBQ2pCLE1BQUFOLEVBQUUsV0FBV0EsRUFBRSxLQUFLTSxDQUFDLEdBQUdOLEVBQUUsU0FBUztBQUFBLElBQ3JDLEdBQUcsU0FBU00sR0FBRztBQUNiLGFBQU9OLEVBQUUsTUFBTU0sQ0FBQztBQUFBLElBQ2xCLENBQUMsRUFBRSxLQUFLLE1BQU0sRUFBRTtBQUFBLEVBQ2xCLENBQUM7QUFDSDtBQUNBLFNBQVNpTCxHQUFHLEdBQUc7QUFDYixTQUFPLElBQUlqQyxHQUFHLFNBQVN0SixHQUFHO0FBQ3hCLFFBQUlNLEdBQUdDO0FBQ1AsUUFBSTtBQUNGLGVBQVNDLElBQUk0RyxHQUFHLENBQUMsR0FBR3RELElBQUl0RCxFQUFFLEtBQUssR0FBRyxDQUFDc0QsRUFBRSxNQUFNQSxJQUFJdEQsRUFBRSxLQUFLLEdBQUc7QUFDdkQsWUFBSXVELElBQUlELEVBQUU7QUFDVixZQUFJOUQsRUFBRSxLQUFLK0QsQ0FBQyxHQUFHL0QsRUFBRTtBQUNmO0FBQUEsTUFDSjtBQUFBLElBQ0YsU0FBUyxHQUFHO0FBQ1YsTUFBQU0sSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUFBLElBQ2pCLFVBQUU7QUFDQSxVQUFJO0FBQ0YsUUFBQXdELEtBQUssQ0FBQ0EsRUFBRSxTQUFTdkQsSUFBSUMsRUFBRSxXQUFXRCxFQUFFLEtBQUtDLENBQUM7QUFBQSxNQUM1QyxVQUFFO0FBQ0EsWUFBSUYsRUFBRyxPQUFNQSxFQUFFO0FBQUEsTUFDakI7QUFBQSxJQUNGO0FBQ0EsSUFBQU4sRUFBRSxTQUFTO0FBQUEsRUFDYixDQUFDO0FBQ0g7QUFDQSxTQUFTc0wsR0FBRyxHQUFHO0FBQ2IsU0FBTyxJQUFJaEMsR0FBRyxTQUFTdEosR0FBRztBQUN4QixJQUFBeUwsR0FBRyxHQUFHekwsQ0FBQyxFQUFFLE1BQU0sU0FBU00sR0FBRztBQUN6QixhQUFPTixFQUFFLE1BQU1NLENBQUM7QUFBQSxJQUNsQixDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFDQSxTQUFTa0wsR0FBRyxHQUFHO0FBQ2IsU0FBT0YsR0FBR04sR0FBRyxDQUFDLENBQUM7QUFDakI7QUFDQSxTQUFTUyxHQUFHLEdBQUd6TCxHQUFHO0FBQ2hCLE1BQUlNLEdBQUdDLEdBQUdDLEdBQUdzRDtBQUNiLFNBQU9tRCxHQUFHLE1BQU0sUUFBUSxRQUFRLFdBQVc7QUFDekMsUUFBSWxELEdBQUc7QUFDUCxXQUFPb0QsR0FBRyxNQUFNLFNBQVMsR0FBRztBQUMxQixjQUFRLEVBQUUsT0FBTztBQUFBLFFBQ2YsS0FBSztBQUNILFlBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUc3RyxJQUFJeUgsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRO0FBQUEsUUFDbkQsS0FBSztBQUNILGlCQUFPLENBQUMsR0FBR3pILEVBQUUsS0FBSyxDQUFDO0FBQUEsUUFDckIsS0FBSztBQUNILGNBQUlDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDQSxFQUFFLEtBQU0sUUFBTyxDQUFDLEdBQUcsQ0FBQztBQUN4QyxjQUFJd0QsSUFBSXhELEVBQUUsT0FBT1AsRUFBRSxLQUFLK0QsQ0FBQyxHQUFHL0QsRUFBRTtBQUM1QixtQkFBTyxDQUFDLENBQUM7QUFDWCxZQUFFLFFBQVE7QUFBQSxRQUNaLEtBQUs7QUFDSCxpQkFBTyxDQUFDLEdBQUcsQ0FBQztBQUFBLFFBQ2QsS0FBSztBQUNILGlCQUFPLENBQUMsR0FBRyxFQUFFO0FBQUEsUUFDZixLQUFLO0FBQ0gsaUJBQU8sSUFBSSxFQUFFLEtBQUssR0FBR1EsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFO0FBQUEsUUFDL0MsS0FBSztBQUNILGlCQUFPLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUdELEtBQUssQ0FBQ0EsRUFBRSxTQUFTdUQsSUFBSXhELEVBQUUsVUFBVSxDQUFDLEdBQUd3RCxFQUFFLEtBQUt4RCxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUFBLFFBQzNGLEtBQUs7QUFDSCxZQUFFLEtBQUssR0FBRyxFQUFFLFFBQVE7QUFBQSxRQUN0QixLQUFLO0FBQ0gsaUJBQU8sQ0FBQyxHQUFHLEVBQUU7QUFBQSxRQUNmLEtBQUs7QUFDSCxjQUFJRSxFQUFHLE9BQU1BLEVBQUU7QUFDZixpQkFBTyxDQUFDLENBQUM7QUFBQSxRQUNYLEtBQUs7QUFDSCxpQkFBTyxDQUFDLENBQUM7QUFBQSxRQUNYLEtBQUs7QUFDSCxpQkFBT1IsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQUEsTUFDM0I7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDtBQUNBLFNBQVMwTCxHQUFHLEdBQUcxTCxHQUFHTSxHQUFHQyxHQUFHQyxHQUFHO0FBQ3pCLEVBQUFELE1BQU0sV0FBV0EsSUFBSSxJQUFJQyxNQUFNLFdBQVdBLElBQUk7QUFDOUMsTUFBSXNELElBQUk5RCxFQUFFLFNBQVMsV0FBVztBQUM1QixJQUFBTSxFQUFFLEdBQUdFLElBQUksRUFBRSxJQUFJLEtBQUssU0FBUyxNQUFNRCxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVk7QUFBQSxFQUM1RCxHQUFHQSxDQUFDO0FBQ0osTUFBSSxFQUFFLElBQUl1RCxDQUFDLEdBQUcsQ0FBQ3REO0FBQ2IsV0FBT3NEO0FBQ1g7QUFDQSxTQUFTNkgsR0FBRyxHQUFHM0wsR0FBRztBQUNoQixNQUFJTSxJQUFJMEgsRUFBRSxDQUFDLElBQUksSUFBSSxXQUFXO0FBQzVCLFdBQU87QUFBQSxFQUNULEdBQUd6SCxJQUFJLFNBQVNDLEdBQUc7QUFDakIsV0FBT0EsRUFBRSxNQUFNRixFQUFFLENBQUM7QUFBQSxFQUNwQjtBQUNBLFNBQU8sSUFBSWdKLEdBQUcvSSxDQUFDO0FBQ2pCO0FBQ0EsSUFBSXFMLEtBQUszRCxHQUFHLFNBQVMsR0FBRztBQUN0QixTQUFPLFdBQVc7QUFDaEIsTUFBRSxJQUFJLEdBQUcsS0FBSyxPQUFPLGNBQWMsS0FBSyxVQUFVO0FBQUEsRUFDcEQ7QUFDRixDQUFDO0FBQ0QsU0FBUzRELEdBQUcsR0FBRzdMLEdBQUc7QUFDaEIsU0FBTyxJQUFJLFFBQVEsU0FBU00sR0FBR0MsR0FBRztBQUNoQyxRQUFJQyxJQUFJLElBQUlzRDtBQUNaLE1BQUUsVUFBVTtBQUFBLE1BQ1YsTUFBTSxTQUFTQyxHQUFHO0FBQ2hCLFFBQUFELElBQUlDLEdBQUd2RCxJQUFJO0FBQUEsTUFDYjtBQUFBLE1BQ0EsT0FBT0Q7QUFBQSxNQUNQLFVBQVUsV0FBVztBQUNuQixRQUFBQyxJQUFJRixFQUFFd0QsQ0FBQyxJQUFJdkQsRUFBRSxJQUFJcUwsR0FBRyxDQUFDO0FBQUEsTUFDdkI7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNILENBQUM7QUFDSDtBQUNBLFNBQVNFLEdBQUcsR0FBRztBQUNiLFNBQU8sYUFBYSxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ3RDO0FBQ0EsSUFBSUMsS0FBSzlELEdBQUcsU0FBUyxHQUFHO0FBQ3RCLFNBQU8sU0FBUyxHQUFHO0FBQ2pCLFVBQU0sV0FBVyxJQUFJLE9BQU8sRUFBRSxJQUFJLEdBQUcsS0FBSyxVQUFVLHdCQUF3QixLQUFLLE9BQU8sZ0JBQWdCLEtBQUssT0FBTztBQUFBLEVBQ3RIO0FBQ0YsQ0FBQztBQUNELFNBQVMrRCxHQUFHLEdBQUdoTSxHQUFHO0FBQ2hCLE1BQUlNLElBQUl3TCxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLE9BQU8sS0FBSyxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksR0FBR3ZMLElBQUlELEVBQUUsT0FBT0UsSUFBSUYsRUFBRSxNQUFNd0QsSUFBSXhELEVBQUUsTUFBTXlELElBQUlELE1BQU0sU0FBU21JLEtBQUtuSSxHQUFHLElBQUl4RCxFQUFFLFdBQVcsSUFBSSxNQUFNLFNBQVNpSyxLQUFLLEdBQUcsSUFBSWpLLEVBQUUsTUFBTSxJQUFJLE1BQU0sU0FBUyxPQUFPO0FBQ3pOLE1BQUlDLEtBQUssUUFBUUMsS0FBSztBQUNwQixVQUFNLElBQUksVUFBVSxzQkFBc0I7QUFDNUMsU0FBT21KLEdBQUcsU0FBU3pDLEdBQUdZLEdBQUc7QUFDdkIsUUFBSUwsR0FBR0MsR0FBR0MsSUFBSSxNQUFNQyxJQUFJLEdBQUdDLElBQUksU0FBU3FFLEdBQUc7QUFDekMsTUFBQXhFLElBQUlnRSxHQUFHNUQsR0FBRyxHQUFHLFdBQVc7QUFDdEIsWUFBSTtBQUNGLFVBQUFMLEVBQUUsWUFBWSxHQUFHeUQsR0FBR25ILEVBQUU7QUFBQSxZQUNwQixNQUFNO0FBQUEsWUFDTixXQUFXNEQ7QUFBQSxZQUNYLE1BQU1DO0FBQUEsVUFDUixDQUFDLENBQUMsRUFBRSxVQUFVRSxDQUFDO0FBQUEsUUFDakIsU0FBU3FFLEdBQUc7QUFDVixVQUFBckUsRUFBRSxNQUFNcUUsQ0FBQztBQUFBLFFBQ1g7QUFBQSxNQUNGLEdBQUdELENBQUM7QUFBQSxJQUNOO0FBQ0EsSUFBQXpFLElBQUlQLEVBQUUsVUFBVTBDLEdBQUc5QixHQUFHLFNBQVNvRSxHQUFHO0FBQ2hDLE1BQUF4RSxLQUFLLFFBQVFBLEVBQUUsWUFBWSxHQUFHRSxLQUFLRSxFQUFFLEtBQUtILElBQUl1RSxDQUFDLEdBQUcxTCxJQUFJLEtBQUtxSCxFQUFFckgsQ0FBQztBQUFBLElBQ2hFLEdBQUcsUUFBUSxRQUFRLFdBQVc7QUFDNUIsTUFBQWtILEtBQUssUUFBUUEsRUFBRSxVQUFVQSxLQUFLLFFBQVFBLEVBQUUsWUFBWSxHQUFHQyxJQUFJO0FBQUEsSUFDN0QsQ0FBQyxDQUFDLEdBQUcsQ0FBQ0MsS0FBS0MsRUFBRXRILEtBQUssT0FBTyxPQUFPQSxLQUFLLFdBQVdBLElBQUksQ0FBQ0EsSUFBSSxFQUFFLElBQUksSUFBSUMsQ0FBQztBQUFBLEVBQ3RFLENBQUM7QUFDSDtBQUNBLFNBQVN5TCxHQUFHLEdBQUc7QUFDYixRQUFNLElBQUlGLEdBQUcsQ0FBQztBQUNoQjtBQUNBLE1BQU1LLEdBQUc7QUFBQSxFQUNQLGNBQWM7QUFDWixTQUFLLE1BQU0sQ0FBQ3BNLE1BQU07QUFDaEIsVUFBSSxLQUFLLFNBQVMsV0FBVztBQUMzQixjQUFNLElBQUksTUFBTSx3Q0FBd0M7QUFDMUQsV0FBSyxXQUFXLEVBQUUsUUFBUSxXQUFXLFdBQVcsSUFBSSxhQUFhQSxFQUFFLEdBQUcsS0FBSyxTQUFTLEtBQUtBLENBQUMsR0FBRyxLQUFLLFNBQVMsU0FBUztBQUFBLElBQ3RILEdBQUcsS0FBSyxRQUFRLENBQUNBLEdBQUdNLE1BQU07QUFDeEIsVUFBSSxLQUFLLFNBQVMsV0FBVztBQUMzQixjQUFNLElBQUksTUFBTSx3Q0FBd0M7QUFDMUQsV0FBSyxXQUFXLEVBQUUsUUFBUSxTQUFTLFdBQVcsSUFBSSxPQUFPTixHQUFHLFFBQVFNLEVBQUUsR0FBRyxLQUFLLFNBQVMsTUFBTU4sQ0FBQztBQUFBLElBQ2hHLEdBQUcsS0FBSyx1QkFBdUIsQ0FBQ0EsTUFBTSxLQUFLLFNBQVMsV0FBVyxZQUFZLEtBQUssU0FBUyxjQUFjQSxHQUFHLEtBQUssWUFBWSxDQUFDQSxNQUFNO0FBQ2hJLFVBQUksS0FBSyxTQUFTLFdBQVcsV0FBVztBQUN0QyxRQUFBQSxFQUFFLEtBQUssUUFBUTtBQUNmO0FBQUEsTUFDRjtBQUNBLFdBQUssU0FBUyxXQUFXLFdBQVdBLEVBQUUsS0FBSyxRQUFRO0FBQ25ELFlBQU1NLElBQUksS0FBSyxTQUFTLFVBQVU7QUFBQSxRQUNoQyxNQUFNLE1BQU07QUFDVixjQUFJLEtBQUssU0FBUyxXQUFXO0FBQzNCLGtCQUFNLElBQUksTUFBTSw4RUFBOEU7QUFDaEcsVUFBQU4sRUFBRSxLQUFLLFFBQVEsR0FBR00sRUFBRSxZQUFZO0FBQUEsUUFDbEM7QUFBQSxRQUNBLE9BQU8sTUFBTTtBQUNYLGNBQUksS0FBSyxTQUFTLFdBQVc7QUFDM0Isa0JBQU0sSUFBSSxNQUFNLCtFQUErRTtBQUNqRyxVQUFBTixFQUFFLEtBQUssUUFBUTtBQUFBLFFBQ2pCO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxHQUFHLEtBQUssY0FBYyxDQUFDQSxNQUFNO0FBQzNCLFVBQUksS0FBSyxTQUFTLFdBQVcsVUFBVyxRQUFPLFFBQVEsUUFBUSxLQUFLLFNBQVMsV0FBVztBQUN4RixVQUFJLEtBQUssU0FBUyxXQUFXLFFBQVMsUUFBTyxRQUFRLE9BQU8sS0FBSyxTQUFTLEtBQUs7QUFDL0UsV0FBSyxTQUFTLFdBQVcsYUFBYXFNLEdBQUcsS0FBSyxRQUFRO0FBQ3RELFlBQU0vTCxJQUFJO0FBQUEsUUFDUixPQUFPTixFQUFFLGFBQWE7QUFBQSxRQUN0QixNQUFNLE1BQU0yTCxHQUFHLE1BQU0sSUFBSSxNQUFNM0wsRUFBRSxhQUFhLENBQUM7QUFBQSxNQUNqRDtBQUNBLGFBQU82TCxHQUFHLEtBQUssU0FBUyxLQUFLRyxHQUFHMUwsQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUNyQyxHQUFHLEtBQUssV0FBVyxFQUFFLFFBQVEsV0FBVyxXQUFXLEdBQUcsR0FBRyxLQUFLLFdBQVcsSUFBSXlKLEdBQUc7QUFBQSxFQUNsRjtBQUFBLEVBQ0EsSUFBSSxVQUFVO0FBQ1osV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUNGO0FBQ0EsTUFBTXVDLEtBQUtwTixFQUFJLEtBQUssQ0FBQyxPQUFPLE9BQU8sTUFBTSxDQUFDLEdBQUdxTixLQUFLO0FBQUEsRUFDaEQsTUFBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsS0FBSztBQUNQLEdBQUdDLEtBQUssQ0FBQyxNQUFNRCxHQUFHLENBQUMsR0FBR0UsS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLE1BQU07QUFDL0MsTUFBSUEsR0FBRyxDQUFDO0FBQ04sV0FBT0EsR0FBRyxDQUFDO0FBQ2IsTUFBSTtBQUNGLFVBQU16TSxJQUFJLE1BQU0sTUFBTSxJQUFJLElBQUksdUJBQXVCLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQ08sTUFBTUEsRUFBRSxLQUFLLENBQUMsR0FBR0QsSUFBSWdNLEdBQUcsTUFBTXRNLEVBQUUsV0FBVztBQUMxRyxXQUFPeU0sR0FBRyxDQUFDLElBQUluTSxHQUFHQTtBQUFBLEVBQ3BCLFFBQVE7QUFDTixXQUFPZ00sR0FBRyxPQUFPO0FBQUEsRUFDbkI7QUFDRjtBQUNBLFNBQVNELEdBQUcsR0FBRztBQUNiLFFBQU0sSUFBSSxNQUFNLG1CQUFtQixDQUFDLEVBQUU7QUFDeEM7QUFDQSxNQUFNLEtBQUssQ0FBQyxHQUFHck0sTUFBTSxPQUFPLFlBQVksT0FBTyxRQUFRLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQ00sQ0FBQyxNQUFNLENBQUNOLEVBQUUsU0FBU00sQ0FBQyxDQUFDLENBQUMsR0FBR29NLElBQUksTUFBTTtBQUNwRyxNQUFJLEVBQUUsT0FBTyxTQUFTO0FBQ3BCLFdBQU87QUFDWCxHQUFHQyxLQUFLLElBQUlQLEdBQUcsR0FBR1EsS0FBSyxvQkFBb0JDLEtBQUssR0FBR0MsS0FBSyxHQUFHQyxLQUFLLEtBQUssRUFBRSxPQUFPQyxHQUFHLElBQUlsRyxFQUFFLFlBQVk7QUFDbkcsTUFBTW1HLEdBQUc7QUFBQSxFQUNQLGNBQWM7QUFDWixRQUFJak4sR0FBR007QUFDUCxTQUFLLFFBQVEsQ0FBQyxHQUFHLEtBQUssa0JBQWtCLElBQUksS0FBSyxlQUFlLE1BQU0sS0FBSyxxQkFBcUIsR0FBRyxLQUFLLGtCQUFrQixNQUFNO0FBQzlILE1BQUEwTSxHQUFHLHlDQUF5QyxHQUFHLEtBQUssc0JBQXNCO0FBQUEsSUFDNUUsR0FBRyxLQUFLLGlCQUFpQixNQUFNO0FBQzdCLE1BQUFBLEdBQUcsMENBQTBDLEdBQUcsS0FBSyxhQUFhO0FBQUEsSUFDcEUsR0FBRyxLQUFLLHFCQUFxQixJQUFJaE4sSUFBSTBNLEVBQUUsTUFBTSxRQUFRMU0sRUFBRSxpQkFBaUIsV0FBVyxLQUFLLGVBQWUsSUFBSU0sSUFBSW9NLEVBQUUsTUFBTSxRQUFRcE0sRUFBRSxpQkFBaUIsVUFBVSxLQUFLLGNBQWM7QUFBQSxFQUNqTDtBQUFBLEVBQ0EsU0FBU04sR0FBR00sR0FBR0MsR0FBRztBQUNoQixVQUFNQyxJQUFJO0FBQUEsTUFDUixXQUFXUjtBQUFBLE1BQ1gsWUFBWU0sS0FBSyxDQUFDO0FBQUEsTUFDbEIsbUJBQW1CQyxLQUFLLENBQUM7QUFBQSxNQUN6QixPQUFPcEIsR0FBRztBQUFBLE1BQ1YsV0FBVyxZQUFZLElBQUk7QUFBQSxNQUMzQixXQUEyQixvQkFBSSxLQUFLLEdBQUcsWUFBWTtBQUFBLE1BQ25ELGNBQWM7QUFBQSxNQUNkLDJCQUEyQixLQUFLLHFCQUFxQixZQUFZLElBQUksSUFBSSxLQUFLLHFCQUFxQjtBQUFBLElBQ3JHO0FBQ0EsU0FBSyxxQkFBcUJxQixFQUFFLFdBQVcsS0FBSyxNQUFNLEtBQUtBLENBQUMsR0FBRyxLQUFLLG1CQUFtQixHQUFHLEtBQUssd0JBQXdCO0FBQUEsRUFDckg7QUFBQSxFQUNBLHVCQUF1QjtBQUNyQixRQUFJUixHQUFHTTtBQUNQLFFBQUk7QUFDRixZQUFNQyxLQUFLRCxLQUFLTixJQUFJME0sRUFBRSxNQUFNLE9BQU8sU0FBUzFNLEVBQUUsaUJBQWlCLE9BQU8sU0FBU00sRUFBRSxRQUFRc00sRUFBRTtBQUMzRixNQUFBck0sTUFBTSxLQUFLLFFBQVEsS0FBSyxNQUFNQSxDQUFDO0FBQUEsSUFDakMsUUFBUTtBQUNOLFdBQUssUUFBUSxDQUFDLEdBQUcsS0FBSyxtQkFBbUI7QUFBQSxJQUMzQztBQUFBLEVBQ0Y7QUFBQSxFQUNBLHFCQUFxQjtBQUNuQixRQUFJUDtBQUNKLEtBQUNBLElBQUkwTSxFQUFFLE1BQU0sUUFBUTFNLEVBQUUsYUFBYSxRQUFRNE0sSUFBSSxLQUFLLFVBQVUsS0FBSyxLQUFLLENBQUM7QUFBQSxFQUM1RTtBQUFBLEVBQ0EsMEJBQTBCO0FBQ3hCLFVBQU01TSxJQUFJME0sRUFBRTtBQUNaLElBQUExTSxLQUFLLFVBQVUsVUFBVSxDQUFDLEtBQUssbUJBQW1CLEtBQUssTUFBTSxTQUFTLEtBQUssQ0FBQyxLQUFLLGlCQUFpQixLQUFLLGVBQWVBLEVBQUUsV0FBVyxNQUFNO0FBQ3ZJLFdBQUssZUFBZSxNQUFNLEtBQUssYUFBYTtBQUFBLElBQzlDLEdBQUcrTSxFQUFFO0FBQUEsRUFDUDtBQUFBLEVBQ0Esd0JBQXdCO0FBQ3RCLFFBQUkvTTtBQUNKLFNBQUssa0JBQWtCQSxJQUFJME0sRUFBRSxNQUFNLFFBQVExTSxFQUFFLGFBQWEsS0FBSyxZQUFZLEdBQUcsS0FBSyxlQUFlLE9BQU8sS0FBSyxrQkFBa0I7QUFBQSxFQUNsSTtBQUFBLEVBQ0EsZUFBZTtBQUNiLEtBQUMsVUFBVSxVQUFVLEtBQUssbUJBQW1CLEtBQUssTUFBTSxXQUFXLE1BQU0sS0FBSyxrQkFBa0IsSUFBSSxLQUFLLFVBQVUsRUFBRSxRQUFRLE1BQU07QUFDakksV0FBSyxrQkFBa0IsSUFBSSxLQUFLLE1BQU0sU0FBUyxLQUFLLEtBQUssd0JBQXdCO0FBQUEsSUFDbkYsQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQUNBLE1BQU0sWUFBWTtBQUNoQixRQUFJLEtBQUssTUFBTSxXQUFXLEVBQUc7QUFDN0IsVUFBTUEsSUFBSTJNLEdBQUcscUJBQXFCLE1BQU07QUFDeEMsUUFBSSxDQUFDM00sR0FBRztBQUNOLE1BQUFnTixHQUFHLGlEQUFpRDtBQUNwRDtBQUFBLElBQ0Y7QUFDQSxVQUFNMU0sSUFBSSxLQUFLLE1BQU0sTUFBTSxHQUFHd00sRUFBRTtBQUNoQyxRQUFJO0FBQ0YsWUFBTXZNLElBQUk7QUFBQSxRQUNSLFFBQVFELEVBQUUsSUFBSSxDQUFDNkQsT0FBTztBQUFBLFVBQ3BCLFlBQVlBLEVBQUU7QUFBQSxVQUNkLGNBQWNuRSxFQUFFO0FBQUEsVUFDaEIsb0JBQW9CO0FBQUEsWUFDbEIsR0FBR0E7QUFBQSxZQUNILEdBQUdtRSxFQUFFO0FBQUEsVUFDUDtBQUFBLFVBQ0EsWUFBWTtBQUFBLFlBQ1YsT0FBT0EsRUFBRTtBQUFBLFlBQ1QsVUFBVUEsRUFBRTtBQUFBLFlBQ1osV0FBV0EsRUFBRTtBQUFBLFlBQ2IsK0JBQStCQSxFQUFFO0FBQUEsWUFDakMsdUJBQXVCbkUsRUFBRTtBQUFBLFlBQ3pCLEdBQUdtRSxFQUFFO0FBQUEsVUFDUDtBQUFBLFFBQ0YsRUFBRTtBQUFBLE1BQ0osR0FBRzNELElBQUlnTSxHQUFHeE0sRUFBRSxXQUFXLEdBQUc4RCxJQUFJLElBQUksSUFBSSwyQkFBMkJ0RCxDQUFDO0FBQ2xFLE9BQUMsTUFBTSxNQUFNc0QsRUFBRSxTQUFTLEdBQUc7QUFBQSxRQUN6QixRQUFRO0FBQUEsUUFDUixTQUFTO0FBQUEsVUFDUCxnQkFBZ0I7QUFBQSxRQUNsQjtBQUFBLFFBQ0EsTUFBTSxLQUFLLFVBQVV2RCxDQUFDO0FBQUEsTUFDeEIsQ0FBQyxHQUFHLE1BQU0sS0FBSyxRQUFRLEtBQUssTUFBTSxNQUFNRCxFQUFFLE1BQU0sR0FBRyxLQUFLLG1CQUFtQixLQUFLLEtBQUssa0JBQWtCQSxDQUFDO0FBQUEsSUFDMUcsU0FBU0MsR0FBRztBQUNWLE1BQUF5TSxHQUFHLGdDQUFnQ3pNLENBQUMsR0FBRyxLQUFLLGtCQUFrQkQsQ0FBQztBQUFBLElBQ2pFO0FBQUEsRUFDRjtBQUFBLEVBQ0Esa0JBQWtCTixHQUFHO0FBQ25CLElBQUFBLEVBQUUsUUFBUSxDQUFDTyxNQUFNO0FBQ2YsTUFBQUEsRUFBRTtBQUFBLElBQ0osQ0FBQztBQUNELFVBQU1ELElBQUlOLEVBQUUsT0FBTyxDQUFDTyxNQUFNQSxFQUFFLGVBQWVzTSxFQUFFO0FBQzdDLFNBQUssUUFBUSxLQUFLLE1BQU0sTUFBTTdNLEVBQUUsTUFBTSxHQUFHLEtBQUssUUFBUSxDQUFDLEdBQUdNLEdBQUcsR0FBRyxLQUFLLEtBQUssR0FBRyxLQUFLLG1CQUFtQjtBQUFBLEVBQ3ZHO0FBQUEsRUFDQSxVQUFVO0FBQ1IsUUFBSU4sR0FBR007QUFDUCxLQUFDTixJQUFJME0sRUFBRSxNQUFNLFFBQVExTSxFQUFFLG9CQUFvQixXQUFXLEtBQUssZUFBZSxJQUFJTSxJQUFJb00sRUFBRSxNQUFNLFFBQVFwTSxFQUFFLG9CQUFvQixVQUFVLEtBQUssY0FBYyxHQUFHLEtBQUssc0JBQXNCO0FBQUEsRUFDckw7QUFDRjtBQUNBLE1BQU0sS0FBSyxJQUFJMk0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHak4sR0FBR00sTUFBTTtBQUNwQyxLQUFHLFNBQVMsR0FBR04sR0FBR00sQ0FBQztBQUNyQixHQUFHLEtBQUssQ0FBQyxNQUFNO0FBQ2IsUUFBTU4sSUFBSUksRUFBRSxFQUFFLE1BQU07QUFDcEIsSUFBRSw2QkFBNkI7QUFBQSxJQUM3QixlQUFlSjtBQUFBLElBQ2YsWUFBWSxFQUFFO0FBQUEsRUFDaEIsQ0FBQztBQUNILEdBQUcsS0FBSyxDQUFDLE1BQU07QUFDYixNQUFJLEdBQUc7QUFDUCxRQUFNQSxJQUFJSSxFQUFFLEVBQUUsS0FBSztBQUNuQixJQUFFLGtCQUFrQjtBQUFBLElBQ2xCLGVBQWVKO0FBQUEsSUFDZixhQUFhLElBQUksRUFBRSxVQUFVLE9BQU8sU0FBUyxFQUFFO0FBQUEsSUFDL0MsY0FBYyxJQUFJLEVBQUUsVUFBVSxPQUFPLFNBQVMsRUFBRTtBQUFBLElBQ2hELFdBQVcsRUFBRTtBQUFBLElBQ2IsYUFBYSxFQUFFO0FBQUEsSUFDZixlQUFlLEVBQUU7QUFBQSxFQUNuQixDQUFDO0FBQ0gsR0FBR2tOLEtBQUssTUFBTTtBQUNaLE1BQUksR0FBR2xOO0FBQ1AsR0FBQyxJQUFJME0sRUFBRSxNQUFNLFFBQVEsRUFBRSxpQkFBaUIsU0FBUyxFQUFFLElBQUkxTSxJQUFJME0sRUFBRSxNQUFNLFFBQVExTSxFQUFFLGlCQUFpQixzQkFBc0IsRUFBRTtBQUN4SCxHQUFHbU4sS0FBSyxNQUFNO0FBQ1osTUFBSSxHQUFHbk47QUFDUCxHQUFDLElBQUkwTSxFQUFFLE1BQU0sUUFBUSxFQUFFLG9CQUFvQixTQUFTLEVBQUUsSUFBSTFNLElBQUkwTSxFQUFFLE1BQU0sUUFBUTFNLEVBQUUsb0JBQW9CLHNCQUFzQixFQUFFO0FBQzlIO0FBQ0EsSUFBSW9OO0FBQUEsQ0FDSEEsS0FBS1YsRUFBRSxNQUFNLFFBQVFVLEdBQUcsaUJBQWlCLGdCQUFnQixNQUFNO0FBQzlELEtBQUcsYUFBYTtBQUNsQixDQUFDO0FBQ0QsTUFBTSxXQUFXekcsR0FBRztBQUFBLEVBQ2xCLFlBQVkzRyxHQUFHO0FBQ2IsVUFBTU0sSUFBSSxHQUFHTixFQUFFLE9BQU87QUFDdEIsVUFBTU0sQ0FBQyxHQUFHLEtBQUssV0FBV047QUFBQSxFQUM1QjtBQUFBLEVBQ0EsSUFBSSx1QkFBdUI7QUFDekIsV0FBTyxLQUFLLFNBQVM7QUFBQSxFQUN2QjtBQUNGO0FBQ0EsTUFBTXFOLElBQUksT0FBTyxHQUFHck4sR0FBR00sR0FBR0MsTUFBTTtBQUM5QixFQUFBQSxLQUFLLEVBQUVBLEdBQUc7QUFBQSxJQUNSLEdBQUdQO0FBQUEsRUFDTCxDQUFDO0FBQ0QsUUFBTVEsSUFBSSxNQUFNLEVBQUUsS0FBS1IsQ0FBQztBQUN4QixNQUFJc04sR0FBRzlNLENBQUM7QUFDTixVQUFNLElBQUksR0FBR0EsQ0FBQztBQUNoQixNQUFJLENBQUMrTSxHQUFHL00sR0FBR0YsQ0FBQyxHQUFHO0FBQ2IsVUFBTXdELElBQUl4RCxFQUFFLFVBQVVFLENBQUM7QUFDdkIsVUFBTXNELEVBQUUsVUFBVSxJQUFJLE1BQU0sZUFBZSxLQUFLLFFBQVEsTUFBTSxxREFBcUR4RCxHQUFHLFdBQVdFLENBQUMsR0FBR3NELEVBQUU7QUFBQSxFQUN6STtBQUNBLFNBQU92RCxLQUFLLEVBQUVBLEdBQUc7QUFBQSxJQUNmLEdBQUdDO0FBQUEsRUFDTCxDQUFDLEdBQUdBO0FBQ04sR0FBRytNLEtBQUssQ0FBQyxHQUFHdk4sTUFBTUEsRUFBRSxVQUFVLENBQUMsRUFBRSxTQUFTc04sS0FBSyxDQUFDLE1BQU01SSxHQUFHLFVBQVUsQ0FBQyxFQUFFLFNBQVM4SSxLQUFLLE9BQU8sR0FBR3hOLE1BQU0sTUFBTXFOLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLFNBQVNyTixFQUFFLEdBQUd1RixFQUFFLEdBQUdrSSxJQUFJLE9BQU8sTUFBTSxNQUFNSixFQUFFLEdBQUcsRUFBRSxNQUFNLGVBQWUsU0FBUyxDQUFDLEVBQUUsR0FBRzVILEVBQUUsR0FBR2lJLEtBQUssT0FBTyxHQUFHMU4sTUFBTSxNQUFNcU47QUFBQSxFQUNsUTtBQUFBLEVBQ0EsRUFBRSxNQUFNLHlCQUF5QixTQUFTck4sRUFBRTtBQUFBLEVBQzVDa0c7QUFBQSxFQUNBO0FBQ0YsR0FBR3lILEtBQUssT0FBTyxHQUFHM04sTUFBTSxNQUFNcU47QUFBQSxFQUM1QjtBQUFBLEVBQ0EsRUFBRSxNQUFNLDZCQUE2QixTQUFTck4sRUFBRTtBQUFBLEVBQ2hEbUc7QUFBQSxFQUNBO0FBQ0YsR0FBR3lILEtBQUssT0FBTyxHQUFHNU4sTUFBTTtBQUN0QixJQUFFLDZCQUE2QjtBQUFBLElBQzdCLEdBQUdBO0FBQUEsRUFDTCxDQUFDO0FBQ0QsUUFBTU0sSUFBSSxNQUFNK00sRUFBRSxHQUFHLEVBQUUsTUFBTSw2QkFBNkIsU0FBU3JOLEVBQUUsR0FBR2tHLEVBQUU7QUFDMUUsU0FBTyxFQUFFLG9DQUFvQztBQUFBLElBQzNDLEdBQUc1RjtBQUFBLEVBQ0wsQ0FBQyxHQUFHQTtBQUNOLEdBQUd1TixJQUFJLE9BQU8sR0FBRzdOLE1BQU0sTUFBTXFOO0FBQUEsRUFDM0I7QUFBQSxFQUNBLEVBQUUsTUFBTSx3QkFBd0IsU0FBU3JOLEVBQUU7QUFBQSxFQUMzQ29EO0FBQUEsRUFDQTtBQUNGLEdBQUcwSyxLQUFLLE9BQU8sR0FBRzlOLE1BQU0sTUFBTXFOO0FBQUEsRUFDNUI7QUFBQSxFQUNBLEVBQUUsTUFBTSxpQ0FBaUMsU0FBU3JOLEVBQUU7QUFBQSxFQUNwRDRGO0FBQUEsRUFDQTtBQUNGLEdBQUdtSSxLQUFLLE9BQU8sR0FBRy9OLE1BQU0sTUFBTXFOO0FBQUEsRUFDNUI7QUFBQSxFQUNBLEVBQUUsTUFBTSxrQ0FBa0MsU0FBU3JOLEVBQUU7QUFBQSxFQUNyRG1EO0FBQUEsRUFDQTtBQUNGLEdBQUc2SyxLQUFLLE9BQU8sR0FBR2hPLEdBQUdNLE1BQU07QUFDekIsUUFBTUMsSUFBSSxNQUFNaU4sR0FBRyxHQUFHO0FBQUEsSUFDcEIsY0FBY3hOO0FBQUEsSUFDZCxnQkFBZ0JNO0FBQUEsRUFDbEIsQ0FBQyxHQUFHRSxJQUFJLElBQUksSUFBSUQsRUFBRSxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7QUFDekQsTUFBSUMsRUFBRSxTQUFTO0FBQ2IsVUFBTSxJQUFJLE1BQU0sc0NBQXNDQSxFQUFFLElBQUksRUFBRTtBQUNoRSxRQUFNc0QsSUFBSXRELEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLE9BQU91RCxJQUFJd0MsR0FBR2hHLEVBQUUsUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUM7QUFDekcsU0FBTztBQUFBLElBQ0wsVUFBVXVEO0FBQUEsSUFDVixZQUFZQztBQUFBLEVBQ2Q7QUFDRixHQUFHa0ssS0FBSyxPQUFPLEdBQUdqTyxHQUFHTSxHQUFHQyxNQUFNO0FBQzVCLE1BQUlEO0FBQ0YsV0FBTyxFQUFFLFlBQVksR0FBRyxVQUFVLE1BQU07QUFDMUM7QUFDRSxJQUFBQyxJQUFJQSxLQUFLO0FBQ1QsVUFBTUMsSUFBSSxNQUFNd04sR0FBRyxHQUFHaE8sR0FBR08sQ0FBQztBQUMxQixXQUFPLEVBQUUsWUFBWUMsRUFBRSxZQUFZLFVBQVVBLEVBQUUsU0FBUztBQUFBLEVBQzFEO0FBQ0YsR0FBRzBOLEtBQUssT0FBTyxHQUFHbE8sTUFBTTtBQUN0QixNQUFJLEVBQUUsU0FBUztBQUNiLFVBQU0sSUFBSSxNQUFNLDBCQUEwQjtBQUM1QyxTQUFPLE1BQU0sUUFBUTtBQUFBLElBQ25CLE1BQU0sS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFO0FBQUEsTUFDckIsQ0FBQyxNQUFNcU4sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsU0FBU3JOLEVBQUUsR0FBRzhDLEVBQUU7QUFBQSxJQUN2RDtBQUFBLEVBQ0Y7QUFDRixHQUFHcUwsS0FBSyxPQUFPLEdBQUduTyxNQUFNLE1BQU1xTjtBQUFBLEVBQzVCO0FBQUEsRUFDQSxFQUFFLE1BQU0sMEJBQTBCLFNBQVNyTixFQUFFO0FBQUEsRUFDN0MyQztBQUFBLEVBQ0E7QUFDRixHQUFHeUwsS0FBSyxPQUFPLEdBQUdwTyxNQUFNLE1BQU1xTixFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixTQUFTck4sRUFBRSxHQUFHNEYsSUFBSSxnQkFBZ0IsR0FBR3lJLEtBQUssT0FBTyxHQUFHck8sTUFBTSxNQUFNcU4sRUFBRSxHQUFHLEVBQUUsTUFBTSxZQUFZLFNBQVNyTixFQUFFLEdBQUcyQyxJQUFJLGtCQUFrQixHQUFHMkwsS0FBSyxLQUFLQyxLQUFLLE9BQU8sR0FBR3ZPLE1BQU07QUFDaE8sVUFBUSxJQUFJQSxDQUFDO0FBQ2IsUUFBTSxJQUFJLE1BQU1aLEdBQWU7QUFBQSxJQUM3QixRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsSUFDUCxTQUFTa1A7QUFBQSxJQUNULGFBQWE7QUFBQTtBQUFBLEVBRWYsQ0FBQyxFQUFFLFNBQVM5TixJQUFJLE1BQU02TSxFQUFFLEdBQUcsRUFBRSxNQUFNLGtCQUFrQixHQUFHckssRUFBRTtBQUMxRCxTQUFPLFFBQVEsSUFBSSw2REFBNkR4QyxDQUFDLEdBQUdBO0FBQ3RGLEdBQUdnTyxLQUFLLE9BQU8sR0FBR3hPLE1BQU0sTUFBTXFOO0FBQUEsRUFDNUI7QUFBQSxFQUNBLEVBQUUsTUFBTSx3QkFBd0IsU0FBU3JOLEVBQUU7QUFBQSxFQUMzQ3FHO0FBQUEsRUFDQTtBQUNGLEdBQUcsS0FBSyxPQUFPLEdBQUdyRyxNQUFNO0FBQ3RCLE1BQUk7QUFDRixZQUFRLE1BQU1xTjtBQUFBLE1BQ1o7QUFBQSxNQUNBLEVBQUUsTUFBTSwrQkFBK0IsU0FBUyxFQUFFLFNBQVNyTixFQUFFLEVBQUU7QUFBQSxNQUMvRG9HO0FBQUEsSUFDRixHQUFHO0FBQUEsRUFDTCxTQUFTOUYsR0FBRztBQUNWLFdBQU8sUUFBUSxNQUFNLHVEQUF1REYsRUFBRUUsQ0FBQyxDQUFDLEdBQUc7QUFBQSxFQUNyRjtBQUNGLEdBQUdtTyxLQUFLLE9BQU8sR0FBR3pPLE1BQU0sTUFBTXFOO0FBQUEsRUFDNUI7QUFBQSxFQUNBLEVBQUUsTUFBTSx5QkFBeUIsU0FBUyxFQUFFLGNBQWNyTixFQUFFLEVBQUU7QUFBQSxFQUM5RHNHO0FBQ0YsR0FBR29JLElBQUl4UCxFQUFJLEtBQUssQ0FBQyxVQUFVLGFBQWEsZUFBZSxDQUFDO0FBQ3hEd1AsRUFBRSxLQUFLO0FBQ1AsTUFBTUMsS0FBSyxDQUFDO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixLQUFLM087QUFBQSxFQUNMLGVBQWVNO0FBQ2pCLE1BQU07QUFDSixRQUFNQyxJQUFJLElBQUksZ0JBQWdCO0FBQzlCLFNBQU8sSUFBSSxRQUFRLENBQUNDLEdBQUdzRCxNQUFNO0FBQzNCLFFBQUlDLElBQUksU0FBUyxjQUFjLFFBQVE7QUFDdkMsSUFBQUEsRUFBRSxNQUFNL0QsR0FBRytELEVBQUUsS0FBSyxHQUFHQSxFQUFFLFFBQVE7QUFDL0IsVUFBTSxJQUFJLFNBQVMsZUFBZSxDQUFDO0FBQ25DLElBQUF6RCxFQUFFLElBQUlFLEVBQUUsSUFBSSxJQUFJdUQsSUFBSSxJQUFJLFNBQVMsS0FBSyxZQUFZQSxDQUFDLEdBQUdBLEVBQUU7QUFBQSxNQUN0RDtBQUFBLE1BQ0EsTUFBTTtBQUNKLFFBQUF4RCxFQUFFLE1BQU0sR0FBR0MsRUFBRTtBQUFBLE1BQ2Y7QUFBQSxNQUNBLEVBQUUsUUFBUUQsRUFBRSxPQUFPO0FBQUEsSUFDckIsR0FBR3dELEVBQUU7QUFBQSxNQUNIO0FBQUEsTUFDQSxNQUFNO0FBQ0osUUFBQXhELEVBQUUsTUFBTSxHQUFHdUQsRUFBRSwyQkFBMkI7QUFBQSxNQUMxQztBQUFBLE1BQ0EsRUFBRSxRQUFRdkQsRUFBRSxPQUFPO0FBQUEsSUFDckI7QUFBQSxFQUNGLENBQUM7QUFDSCxHQUFHcU8sS0FBSyxNQUFNRCxHQUFHO0FBQUEsRUFDZixVQUFVO0FBQUEsRUFDVixLQUFLO0FBQUEsRUFDTCxlQUFlLE1BQU0sQ0FBQyxDQUFDLE9BQU8sbUJBQW1CLENBQUMsQ0FBQyxPQUFPO0FBQzVELENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRzNPLE1BQU07QUFDakIsUUFBTU0sSUFBSU4sRUFBRSxNQUFNLGNBQWMsZ0JBQWdCTyxJQUFJUCxFQUFFLGdCQUFnQlEsSUFBSVIsRUFBRSxpQkFBaUI4RCxJQUFJLEVBQUUsR0FBRyxFQUFFO0FBQ3hHLE1BQUl4RCxLQUFLQyxLQUFLQyxHQUFHO0FBQ2YsSUFBQXNELEVBQUVqRCxFQUFFLEtBQUssSUFBSWlELEVBQUVqRCxFQUFFLEtBQUssTUFBTVAsS0FBSyxPQUFPLFNBQVNBLEVBQUUsa0JBQWtCQyxLQUFLLE9BQU8sU0FBU0EsRUFBRSxrQkFBa0JDLEtBQUssT0FBTyxTQUFTQSxFQUFFLGlCQUFpQix5QkFBeUJzRCxFQUFFakQsRUFBRSxPQUFPLElBQUlpRCxFQUFFakQsRUFBRSxPQUFPLE1BQU1QLEtBQUssT0FBTyxTQUFTQSxFQUFFLGlCQUFpQkMsS0FBSyxPQUFPLFNBQVNBLEVBQUUsaUJBQWlCQyxLQUFLLE9BQU8sU0FBU0EsRUFBRSxnQkFBZ0IsTUFBTXNELEVBQUVqRCxFQUFFLFFBQVEsSUFBSWlELEVBQUVqRCxFQUFFLFFBQVEsTUFBTVAsS0FBSyxPQUFPLFNBQVNBLEVBQUUsZ0JBQWdCQyxLQUFLLE9BQU8sU0FBU0EsRUFBRSxnQkFBZ0JDLEtBQUssT0FBTyxTQUFTQSxFQUFFLGVBQWU7QUFDbGUsVUFBTXVELElBQUlELEVBQUVqRCxFQUFFLFVBQVUsTUFBTVAsS0FBSyxPQUFPLFNBQVNBLEVBQUUsZUFBZUMsS0FBSyxPQUFPLFNBQVNBLEVBQUUsZUFBZUMsS0FBSyxPQUFPLFNBQVNBLEVBQUUsY0FBYyxJQUFJLElBQUlzRCxFQUFFakQsRUFBRSxTQUFTLE1BQU1QLEtBQUssT0FBTyxTQUFTQSxFQUFFLGdCQUFnQkMsS0FBSyxPQUFPLFNBQVNBLEVBQUUsZ0JBQWdCQyxLQUFLLE9BQU8sU0FBU0EsRUFBRSxlQUFlO0FBQzlSLElBQUF1RCxLQUFLLEtBQUtELEVBQUVqRCxFQUFFLFVBQVUsSUFBSWtELEdBQUdELEVBQUVqRCxFQUFFLFNBQVMsSUFBSSxNQUFNaUQsRUFBRWpELEVBQUUsVUFBVSxJQUFJLGVBQWVpRCxFQUFFakQsRUFBRSxTQUFTLElBQUk7QUFBQSxFQUMxRztBQUNBLFNBQU9pRDtBQUNUO0FBQ0E1RSxFQUFJLE9BQU87QUFBQSxFQUNULE1BQU1BLEVBQUksT0FBTztBQUFBLElBQ2YsZ0JBQWdCQSxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQztBQUFBLElBQ2xELFFBQVFBLEVBQUksTUFBTUEsRUFBSSxJQUFJLENBQUM7QUFBQSxJQUMzQixhQUFhQSxFQUFJLE9BQU87QUFBQSxJQUN4QixhQUFhQSxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQztBQUFBLEVBQ2pELENBQUM7QUFBQSxFQUNELFFBQVFBLEVBQUksUUFBUSxnQ0FBZ0M7QUFDdEQsQ0FBQztBQUNELE1BQU0yUCxLQUFLLENBQUM7QUFBQSxFQUNWLE9BQU87QUFBQSxFQUNQLFNBQVM3TztBQUNYLE1BQU07QUFDSixNQUFJO0FBQ0osTUFBSUEsRUFBRSxTQUFTO0FBQ2IsV0FBTztBQUFBLE1BQ0wsb0JBQW9CO0FBQUEsTUFDcEIsZ0JBQWdCO0FBQUEsUUFDZCxRQUFRLEVBQUU7QUFBQSxRQUNWLE9BQU87QUFBQSxRQUNQLGVBQWU7QUFBQSxRQUNmLE1BQU07QUFBQSxNQUNSO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtBLGVBQWUsSUFBSSxJQUFJLFFBQVFBLEVBQUUsS0FBSyxJQUFJUCxFQUFFLEVBQUUsU0FBUztBQUFBLElBQ3pEO0FBQ0YsUUFBTWEsS0FBSyxJQUFJTixFQUFFLGVBQWUsT0FBTyxTQUFTLEVBQUUsQ0FBQztBQUNuRCxNQUFJTTtBQUNGLFdBQU87QUFBQSxNQUNMLHFCQUFxQkEsS0FBSyxPQUFPLFNBQVNBLEVBQUUsZ0JBQWdCO0FBQUEsTUFDNUQsZ0JBQWdCO0FBQUEsUUFDZCxRQUFRLEVBQUU7QUFBQSxRQUNWLFFBQVFBLEtBQUssT0FBTyxTQUFTQSxFQUFFLGdCQUFnQjtBQUFBLFFBQy9DLDhCQUE4QkEsS0FBSyxPQUFPLFNBQVNBLEVBQUU7QUFBQSxRQUNyRCxnQ0FBZ0NBLEtBQUssT0FBTyxTQUFTQSxFQUFFLDJCQUEyQjtBQUFBLFFBQ2xGLGVBQWU7QUFBQSxRQUNmLE1BQU07QUFBQSxNQUNSO0FBQUEsTUFDQSxlQUFlLGtDQUFrQ04sRUFBRSxLQUFLO0FBQUEsSUFDMUQ7QUFDSixHQUFHOE8sS0FBSyxDQUFDO0FBQUEsRUFDUCx3QkFBd0I7QUFBQSxFQUN4QixnQkFBZ0I5TztBQUFBLEVBQ2hCLFNBQVNNO0FBQUEsRUFDVCxjQUFjQyxJQUFJO0FBQ3BCLE1BQU07QUFDSixNQUFJNEQsR0FBRzRLO0FBQ1AsUUFBTSxPQUFPNUssSUFBSSxLQUFLLE9BQU8sU0FBUyxFQUFFLFdBQVcsT0FBTyxTQUFTQSxFQUFFLGNBQWM3RCxLQUFLLE9BQU8sU0FBU0EsRUFBRSxhQUFhTixFQUFFLFVBQVUsWUFBWSxHQUFHK0QsUUFBUWdMLElBQUksS0FBSyxPQUFPLFNBQVMsRUFBRSxXQUFXLE9BQU8sU0FBU0EsRUFBRSxnQkFBZ0IvTyxLQUFLLE9BQU8sU0FBU0EsRUFBRSxlQUFlLEtBQUssS0FBSyxRQUFRLENBQUM7QUFDM1IsU0FBTztBQUFBLElBQ0wsY0FBYztBQUFBLElBQ2QsT0FBTztBQUFBLE1BQ0wsUUFBUSxLQUFLLE9BQU8sU0FBUyxFQUFFLFVBQVVPLEtBQUs7QUFBQSxNQUM5QyxNQUFNLEtBQUssUUFBUSxFQUFFLFVBQVUsWUFBWTtBQUFBLE1BQzNDLFFBQVF3RDtBQUFBLElBQ1Y7QUFBQSxFQUNGO0FBQ0YsR0FBR2lMLEtBQUssQ0FBQztBQUFBLEVBQ1Asd0JBQXdCO0FBQUEsRUFDeEIsZ0JBQWdCaFA7QUFBQSxFQUNoQixTQUFTTTtBQUFBLEVBQ1QsY0FBY0M7QUFDaEIsTUFBTTtBQUNKLFFBQU0sRUFBRSxjQUFjQyxHQUFHLE9BQU9zRCxFQUFFLElBQUlnTCxHQUFHO0FBQUEsSUFDdkMsd0JBQXdCO0FBQUEsSUFDeEIsZ0JBQWdCOU87QUFBQSxJQUNoQixTQUFTTTtBQUFBLElBQ1QsY0FBY0M7QUFBQSxFQUNoQixDQUFDO0FBQ0QsTUFBSXdELElBQUk7QUFBQSxJQUNOLGFBQWE7QUFBQSxJQUNiLGNBQWN2RDtBQUFBLElBQ2QsOEJBQThCLENBQUMsU0FBUyxpQkFBaUIsTUFBTTtBQUFBLElBQy9ELCtCQUErQixDQUFDLE9BQU87QUFBQSxJQUN2QyxtQkFBbUIsQ0FBQyxRQUFRLGNBQWMsUUFBUSxVQUFVO0FBQUEsSUFDNUQsc0JBQXNCO0FBQUEsTUFDcEI7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsSUFDQSxPQUFPc0Q7QUFBQSxJQUNQLHlCQUF5QitLLEdBQUc7QUFBQSxNQUMxQixPQUFPL0s7QUFBQSxNQUNQLFNBQVN4RDtBQUFBLElBQ1gsQ0FBQztBQUFBLEVBQ0g7QUFDQSxTQUFPLEtBQUssUUFBUSxFQUFFLDJCQUEyQixPQUFPLEVBQUUsMEJBQTBCLGFBQWF5RCxJQUFJO0FBQUEsSUFDbkcsR0FBR0E7QUFBQSxJQUNILEdBQUcsRUFBRSx1QkFBdUJBLENBQUM7QUFBQSxFQUMvQixJQUFJQSxJQUFJLEVBQUUsR0FBR0EsR0FBRyxHQUFHLEVBQUUsdUJBQXVCLElBQUlBO0FBQ2xELEdBQUcsRUFBRSxPQUFPa0wsSUFBSSxPQUFPQyxHQUFHLElBQUlwSSxFQUFFLFFBQVEsR0FBR3FJLEtBQUssQ0FBQyxNQUFNO0FBQ3JELE1BQUksRUFBRSxnQkFBZ0IsV0FBVztBQUMvQixVQUFNLElBQUksTUFBTSw0Q0FBNEMsRUFBRSxnQkFBZ0IsTUFBTSxFQUFFO0FBQ3hGLFNBQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUc7QUFDdEQsR0FBR0MsSUFBSSxDQUFDLEdBQUdwUCxNQUFNO0FBQ2YsUUFBTU0sSUFBSSxFQUFFLEtBQUssQ0FBQ0MsTUFBTVAsRUFBRSxVQUFVTyxDQUFDLEVBQUUsT0FBTztBQUM5QyxNQUFJLENBQUNEO0FBQ0gsVUFBTTRPLEdBQUcsd0NBQXdDLENBQUMsR0FBRyxJQUFJLE1BQU0seUJBQXlCO0FBQzFGLFNBQU9sUCxFQUFFLE1BQU1NLENBQUM7QUFDbEIsR0FBRytPLEtBQUssQ0FBQyxPQUFPO0FBQUEsRUFDZCxvQkFBb0IsRUFBRTtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLElBQ3BCLFVBQVUsRUFBRTtBQUFBLElBQ1osU0FBUyxFQUFFO0FBQUEsRUFDYjtBQUFBLEVBQ0EseUJBQXlCLEVBQUU7QUFBQSxFQUMzQix3QkFBd0IsRUFBRTtBQUM1QixJQUFJQyxLQUFLLE9BQU8sTUFBTTtBQUNwQixRQUFNLEVBQUUsT0FBT3RQLEVBQUUsSUFBSThHLEVBQUUsRUFBRSxTQUFTLEdBQUd4RyxJQUFJLE1BQU1tTixFQUFFLEVBQUUsZ0JBQWdCLEdBQUdsTixJQUFJNE8sR0FBRyxFQUFFLGFBQWE7QUFDNUYsTUFBSTdPLEVBQUUsU0FBUztBQUNiLFdBQU9OLEVBQUUsOEJBQThCLEdBQUcsRUFBRSxNQUFNLFNBQVMsUUFBUSxNQUFNOE4sR0FBRyxFQUFFLGtCQUFrQjtBQUFBLE1BQzlGLGNBQWN4TixFQUFFO0FBQUEsTUFDaEIsT0FBT0MsRUFBRTtBQUFBLElBQ1gsQ0FBQyxFQUFFO0FBQ0w7QUFDRSxJQUFBUCxFQUFFLG1CQUFtQjtBQUNyQixVQUFNUSxJQUFJO0FBQUEsTUFDUixjQUFjRixFQUFFO0FBQUEsTUFDaEIsZUFBZTtBQUFBLFFBQ2IsZUFBZSxFQUFFLHNCQUFzQjtBQUFBLE1BQ3pDO0FBQUEsTUFDQSxnQkFBZ0IsRUFBRSxtQkFBbUJPLEVBQUUsS0FBSztBQUFBLE1BQzVDLG1CQUFtQixFQUFFLG1CQUFtQkEsRUFBRSxRQUFRO0FBQUEsTUFDbEQsa0JBQWtCLEVBQUUsbUJBQW1CQSxFQUFFLE9BQU87QUFBQSxNQUNoRCxnQkFBZ0IsRUFBRSxtQkFBbUJBLEVBQUUsY0FBYztBQUFBLE1BQ3JELFlBQVlQLEVBQUU7QUFBQSxNQUNkLG1CQUFtQkEsRUFBRTtBQUFBLE1BQ3JCLGVBQWU7QUFBQSxNQUNmLHlCQUF5QixFQUFFO0FBQUEsTUFDM0IscUJBQXFCQyxFQUFFO0FBQUEsSUFDekI7QUFDQSxXQUFPLEVBQUUsTUFBTSxZQUFZLFFBQVEsTUFBTThOLEdBQUcsRUFBRSxrQkFBa0I3TixDQUFDLEVBQUU7QUFBQSxFQUNyRTtBQUNGLEdBQUcrTyxLQUFLLHNvQkFBc29CLEtBQUssQ0FBQyxNQUFNO0FBQ3hwQixRQUFNdlAsSUFBSSxTQUFTLGNBQWMsVUFBVTtBQUMzQyxFQUFBQSxFQUFFLFlBQVk7QUFBQTtBQUFBLFFBRVJ1UCxFQUFFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSx1QkFLYSxDQUFDO0FBQUE7QUFBQTtBQUFBO0FBSXRCLFFBQU1qUCxJQUFJLFNBQVMsY0FBYyxLQUFLLEdBQUdDLElBQUlELEVBQUUsYUFBYSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzVFLEVBQUFDLEVBQUUsWUFBWVAsRUFBRSxRQUFRLFVBQVUsRUFBRSxDQUFDO0FBQ3JDLFFBQU1RLElBQUlELEVBQUUsY0FBYyxrQkFBa0IsR0FBR3VELElBQUl2RCxFQUFFLGNBQWMsZ0JBQWdCO0FBQ25GLFNBQU8sU0FBUyxLQUFLLFlBQVlELENBQUMsR0FBRyxFQUFFLE1BQU1BLEdBQUcsUUFBUUUsR0FBRyxjQUFjc0QsRUFBRTtBQUM3RTtBQUNBLFNBQVMwTCxHQUFHLEdBQUd4UCxHQUFHTSxHQUFHO0FBQ25CLFFBQU1DLElBQUksWUFBWTtBQUNwQixRQUFJO0FBQ0YsWUFBTXVELElBQUksTUFBTXlLLEdBQUcsR0FBR2pPLENBQUM7QUFDdkIsTUFBQXdELE1BQU0sY0FBY3RELENBQUMsR0FBR1IsRUFBRThELENBQUM7QUFBQSxJQUM3QixRQUFRO0FBQUEsSUFDUjtBQUFBLEVBQ0Y7QUFDQSxFQUFBdkQsRUFBRTtBQUNGLFFBQU1DLElBQUksWUFBWUQsR0FBRytOLEVBQUU7QUFDM0IsU0FBTzlOO0FBQ1Q7QUFDQSxTQUFTaVAsR0FBRztBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCelA7QUFBQSxFQUNqQixTQUFTTTtBQUNYLEdBQUc7QUFDRCxRQUFNQyxJQUFJLE1BQU07QUFDZCxrQkFBY1AsQ0FBQyxHQUFHLEVBQUUsS0FBSyxPQUFPLEdBQUdNLEVBQUUsRUFBRSxRQUFReUMsRUFBRSxVQUFVLENBQUM7QUFBQSxFQUM5RDtBQUNBLFNBQU8sRUFBRSxhQUFhLGlCQUFpQixTQUFTeEMsQ0FBQyxHQUFHLE1BQU07QUFDeEQsTUFBRSxhQUFhLG9CQUFvQixTQUFTQSxDQUFDO0FBQUEsRUFDL0M7QUFDRjtBQUNBLGVBQWVtUCxHQUFHLEdBQUc7QUFDbkIsUUFBTSxFQUFFLEtBQUsxUCxHQUFHLFNBQVNNLEVBQUUsSUFBSSxHQUFHQyxJQUFJLEdBQUdQLENBQUM7QUFDMUMsU0FBTyxJQUFJLFFBQVEsQ0FBQ1EsTUFBTTtBQUN4QixVQUFNc0QsSUFBSSxDQUFDLE1BQU07QUFDZixpQkFBVyxNQUFNO0FBQ2YsUUFBQXZELEVBQUUsS0FBSyxPQUFPO0FBQUEsTUFDaEIsR0FBRyxHQUFHLEdBQUdDLEVBQUUsQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO0FBQUEsSUFDaEMsR0FBR3VELElBQUl5TCxHQUFHalAsRUFBRSxRQUFRdUQsR0FBRyxJQUFJLElBQUl4RCxDQUFDLEVBQUUsTUFBTSxHQUFHLElBQUltUCxHQUFHO0FBQUEsTUFDaEQsVUFBVWxQO0FBQUEsTUFDVixpQkFBaUJ3RDtBQUFBLE1BQ2pCLFNBQVN2RDtBQUFBLElBQ1gsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUNIO0FBQ0EsTUFBTW1QLEtBQUssT0FBTyxNQUFNO0FBQ3RCLFFBQU0zUCxJQUFJLE1BQU0wUCxHQUFHLENBQUM7QUFDcEIsTUFBSTFQLEVBQUUsV0FBVytDLEVBQUU7QUFDakIsVUFBTSxJQUFJLE1BQU0sNEJBQTRCO0FBQzlDLE1BQUkvQyxFQUFFLFdBQVcrQyxFQUFFO0FBQ2pCLFVBQU0sSUFBSSxNQUFNLHlCQUF5QjtBQUMzQyxTQUFPL0MsRUFBRSxXQUFXK0MsRUFBRSxXQUFXc0osR0FBR3JNLEVBQUUsTUFBTSxHQUFHO0FBQUEsSUFDN0MsTUFBTUEsRUFBRTtBQUFBLEVBQ1Y7QUFDRixHQUFHNFAsS0FBSyxDQUFDLEdBQUc1UCxNQUFNO0FBQ2hCLFFBQU1NLElBQUksT0FBTyxLQUFLTixHQUFHLFFBQVE7QUFDakMsTUFBSSxDQUFDTTtBQUNILFVBQU0sSUFBSSxNQUFNLEdBQUcsQ0FBQywyREFBMkQ7QUFDakYsU0FBT0E7QUFDVCxHQUFHdVAsS0FBSyxPQUFPLEdBQUc3UCxHQUFHTSxHQUFHQyxNQUFNO0FBQzVCLFFBQU0sRUFBRSxPQUFPQyxFQUFFLElBQUlzRyxFQUFFLGNBQWM7QUFDckMsU0FBTyxJQUFJLFFBQVEsQ0FBQ2hELEdBQUdDLE1BQU07QUFDM0IsVUFBTSxJQUFJNkwsR0FBRyxHQUFHclAsQ0FBQyxHQUFHLElBQUksWUFBWSxZQUFZO0FBQzlDLFVBQUk7QUFDRixjQUFNLElBQUksTUFBTXdOLEdBQUcvTixHQUFHTSxDQUFDO0FBQ3ZCLFlBQUksRUFBRTtBQUNKLHdCQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBR3dELEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO0FBQUEsaUJBQ3hDLEVBQUU7QUFDVCxnQkFBTSxJQUFJLE1BQU0sR0FBRyxDQUFDLG9CQUFvQjtBQUFBLE1BQzVDLFNBQVMsR0FBRztBQUNWLFFBQUF0RCxFQUFFSixFQUFFLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxHQUFHMkQsRUFBRTNELEVBQUUsQ0FBQyxDQUFDO0FBQUEsTUFDbkM7QUFBQSxJQUNGLEdBQUcsR0FBRztBQUFBLEVBQ1IsQ0FBQztBQUNILEdBQUcsRUFBRSxPQUFPMFAsSUFBSSxPQUFPQyxHQUFHLElBQUlqSixFQUFFLGNBQWMsR0FBR2tKLEtBQUs5USxFQUFJLE9BQU87QUFBQSxFQUMvRCx3QkFBd0JBLEVBQUksT0FBTztBQUFBLEVBQ25DLGtDQUFrQ0EsRUFBSSxPQUFPO0FBQUEsRUFDN0MsMkJBQTJCQSxFQUFJLE9BQU87QUFDeEMsQ0FBQyxHQUFHK1EsS0FBSyxDQUFDLE1BQU07QUFDZCxRQUFNalEsSUFBSWdRLEdBQUcsVUFBVSxDQUFDO0FBQ3hCLE1BQUksQ0FBQ2hRLEVBQUUsU0FBUztBQUNkLFVBQU1NLElBQUksOEVBQThFQyxJQUFJLDZEQUE2RCxLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQzFLLFVBQU13UCxHQUFHeFAsQ0FBQyxHQUFHLElBQUksTUFBTUQsQ0FBQztBQUFBLEVBQzFCO0FBQ0EsU0FBT04sRUFBRTtBQUNYLEdBQUdrUSxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU8sU0FBUyxFQUFFLHNCQUFzQixPQUFPLFFBQVFDLEtBQUssQ0FBQyxNQUFNO0FBQ3RGLE1BQUk7QUFDRixVQUFNblEsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUUsYUFBYSxJQUFJLG1CQUFtQjtBQUMvRCxRQUFJLENBQUNBO0FBQ0gsWUFBTSxJQUFJLE1BQU0seURBQXlEO0FBQzNFLFdBQU84UCxHQUFHLG1EQUFtRDlQLENBQUMsR0FBRyxHQUFHQTtBQUFBLEVBQ3RFLFNBQVNBLEdBQUc7QUFDVixVQUFNTSxJQUFJO0FBQ1YsVUFBTXlQLEdBQUd6UCxHQUFHLGtCQUFrQixDQUFDO0FBQUEsU0FDMUJGLEVBQUVKLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxNQUFNTSxDQUFDO0FBQUEsRUFDM0I7QUFDRixHQUFHOFAsS0FBSyxPQUFPLEdBQUdwUSxNQUFNO0FBQ3RCLFFBQU1NLElBQUkyUCxHQUFHalEsQ0FBQyxHQUFHTyxJQUFJLE1BQU1vUCxHQUFHLEVBQUUsS0FBS3JQLEVBQUUsc0JBQXNCLEdBQUcsU0FBUyxFQUFFLENBQUMsR0FBR0UsSUFBSTJQLEdBQUc1UCxFQUFFLFFBQVEsRUFBRSxHQUFHdUQsSUFBSXhELEVBQUUsZ0NBQWdDO0FBQzNJLE1BQUl3RCxNQUFNdEQsR0FBRztBQUNYLFVBQU0yRCxJQUFJLDhFQUE4RTRLLElBQUksNEJBQTRCdk8sQ0FBQywyQ0FBMkNzRCxDQUFDO0FBQ3JLLFVBQU1pTSxHQUFHaEIsQ0FBQyxHQUFHLElBQUksTUFBTTVLLENBQUM7QUFBQSxFQUMxQjtBQUNBLFNBQU87QUFBQSxJQUNMLGFBQWE7QUFBQSxNQUNYLG1CQUFtQjNEO0FBQUEsTUFDbkIsWUFBWUYsRUFBRSx5QkFBeUI7QUFBQSxJQUN6QztBQUFBLEVBQ0Y7QUFDRixHQUFHLEtBQUtwQixFQUFJLE9BQU87QUFBQSxFQUNqQixVQUFVQSxFQUFJLFFBQVEsV0FBVztBQUFBLEVBQ2pDLGdCQUFnQkEsRUFBSSxRQUFRLFdBQVc7QUFBQSxFQUN2QyxVQUFVQSxFQUFJLE9BQU87QUFBQSxJQUNuQixzQkFBc0JBLEVBQUksT0FBTztBQUFBLElBQ2pDLHdCQUF3QkEsRUFBSSxPQUFPO0FBQUEsRUFDckMsQ0FBQztBQUNILENBQUMsR0FBR21SLEtBQUtuUixFQUFJLE9BQU87QUFBQSxFQUNsQixVQUFVQSxFQUFJLFFBQVEsWUFBWTtBQUFBLEVBQ2xDLGdCQUFnQkEsRUFBSSxRQUFRLFdBQVc7QUFBQSxFQUN2QyxVQUFVQSxFQUFJLE9BQU87QUFBQSxJQUNuQixzQkFBc0JBLEVBQUksT0FBTztBQUFBLElBQ2pDLHdCQUF3QkEsRUFBSSxPQUFPO0FBQUEsSUFDbkMsd0JBQXdCQSxFQUFJLE9BQU8sRUFBRSxRQUFRO0FBQUEsRUFDL0MsQ0FBQztBQUNILENBQUMsR0FBRyxFQUFFLE9BQU9vUixJQUFJLE9BQU9DLEdBQUcsSUFBSXpKLEVBQUUsV0FBVyxHQUFHMEosS0FBSyxDQUFDLEdBQUd4USxHQUFHTSxNQUFNO0FBQy9ELE1BQUlBLEdBQUc7QUFDTCxJQUFBZ1EsR0FBRyxrQ0FBa0MsS0FBSyxVQUFVaFEsQ0FBQyxDQUFDLEVBQUU7QUFDeEQsZUFBVyxDQUFDRSxHQUFHc0QsQ0FBQyxLQUFLLE9BQU8sUUFBUXhELENBQUM7QUFDbkMsUUFBRUUsQ0FBQyxNQUFNLEVBQUVBLENBQUMsSUFBSXNEO0FBQUEsRUFDcEI7QUFDQSxRQUFNdkQsSUFBSTRCLEdBQUcsVUFBVSxDQUFDO0FBQ3hCLE1BQUksQ0FBQzVCLEVBQUUsU0FBUztBQUNkLFVBQU1DLElBQUlELEVBQUUsTUFBTSxPQUFPLEdBQUd1RCxJQUFJVCxHQUFHN0MsQ0FBQztBQUNwQyxlQUFXLENBQUN1RCxHQUFHLENBQUMsS0FBSyxPQUFPLFFBQVFELENBQUM7QUFDbkMsTUFBQTlELEVBQUUrRCxHQUFHLEdBQUdBLENBQUM7QUFDWCxVQUFNd00sR0FBRyxnREFBZ0R6TSxDQUFDLEdBQUcsSUFBSSxNQUFNLDhDQUE4QztBQUFBLEVBQ3ZIO0FBQ0EsU0FBT3ZELEVBQUU7QUFDWCxHQUFHa1EsS0FBSyxDQUFDLEdBQUd6USxNQUFNO0FBQ2hCLGFBQVdNLEtBQUs7QUFDZCxRQUFJQSxFQUFFLFlBQVk7QUFDaEIsWUFBTUEsRUFBRSxPQUFPLFFBQVEsQ0FBQ0MsTUFBTTtBQUM1QixjQUFNQyxJQUFJUyxHQUFHLFVBQVVWLEVBQUUsV0FBVztBQUNwQyxZQUFJLENBQUNDLEVBQUU7QUFDTCxVQUFBK1AsR0FBRyw0Q0FBNENoUSxFQUFFLFdBQVcsbUJBQW1CQSxDQUFDO0FBQUEsYUFDN0U7QUFDSCxnQkFBTXVELElBQUl0RCxFQUFFO0FBQ1osVUFBQVIsRUFBRThELEdBQUd2RCxFQUFFLE1BQU07QUFBQSxRQUNmO0FBQUEsTUFDRixDQUFDLEdBQUcrUCxHQUFHLGlEQUFpRCxLQUFLLFVBQVVoUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxNQUFNLDZDQUE2QztBQUNsSixHQUFHLEVBQUUsT0FBT29RLEdBQUcsSUFBSTVKLEVBQUUsZUFBZTtBQUNwQyxlQUFlNkosR0FBRyxHQUFHM1EsR0FBRztBQUN0QixNQUFJO0FBQ0YsVUFBTSxLQUFLLE1BQU13TyxHQUFHeE8sRUFBRSxZQUFZO0FBQUEsTUFDaEMseUJBQXlCQSxFQUFFO0FBQUEsTUFDM0IsNkJBQTZCO0FBQUEsUUFDM0IsMkJBQTJCO0FBQUEsVUFDekIsZ0JBQWdCLEVBQUU7QUFBQSxVQUNsQixvQkFBb0IsT0FBTyxTQUFTO0FBQUEsVUFDcEMsa0JBQWtCQSxFQUFFLGlCQUFpQjtBQUFBLFFBQ3ZDO0FBQUEsTUFDRjtBQUFBLElBQ0YsQ0FBQyxHQUFHLHNCQUFzQlEsSUFBSSxLQUFLLE9BQU8sU0FBUyxFQUFFO0FBQ3JELFFBQUksQ0FBQ0E7QUFDSCxZQUFNLElBQUksTUFBTSw0Q0FBNEM7QUFDOUQsSUFBQVIsRUFBRSxRQUFRLDJCQUEyQlEsQ0FBQyxHQUFHLEVBQUUsMENBQTBDO0FBQUEsTUFDbkYsR0FBR0E7QUFBQSxJQUNMLENBQUM7QUFBQSxFQUNILFNBQVNGLEdBQUc7QUFDVixVQUFNTixFQUFFLFFBQVEsTUFBTSxHQUFHTTtBQUFBLEVBQzNCO0FBQ0Y7QUFDQSxlQUFlc1EsR0FBRyxHQUFHNVEsR0FBRztBQUN0QixNQUFJLENBQUMsRUFBRTtBQUNMLFVBQU0sSUFBSSxNQUFNLHVCQUF1QjtBQUN6QyxFQUFBMFEsR0FBRywwQ0FBMEMsQ0FBQztBQUM5QyxRQUFNLEVBQUUsUUFBUXBRLEVBQUUsSUFBSSxNQUFNb1AsR0FBRztBQUFBLElBQzdCLEtBQUssRUFBRTtBQUFBLElBQ1AsU0FBUzFQLEVBQUU7QUFBQSxFQUNiLENBQUM7QUFDRCxNQUFJMFEsR0FBRyx5Q0FBeUNwUSxDQUFDLEdBQUcsR0FBR0EsTUFBTXlDLEVBQUU7QUFDN0QsVUFBTSxJQUFJLE1BQU0sNEJBQTRCO0FBQzlDLE1BQUl6QyxNQUFNeUMsRUFBRTtBQUNWLFVBQU0sSUFBSSxNQUFNLHlCQUF5QjtBQUMzQyxRQUFNeEMsSUFBSSxNQUFNc04sRUFBRTdOLEVBQUUsWUFBWTtBQUFBLElBQzlCLGNBQWNBLEVBQUUsUUFBUTtBQUFBLElBQ3hCLDZCQUE2QjtBQUFBLE1BQzNCLGFBQWEsRUFBRTtBQUFBLE1BQ2Ysc0JBQXNCLEVBQUU7QUFBQSxNQUN4QixrQkFBa0JBLEVBQUUsc0JBQXNCO0FBQUEsSUFDNUM7QUFBQSxFQUNGLENBQUM7QUFDRCxTQUFPMFEsR0FBRyx1Q0FBdUNuUSxDQUFDLEdBQUdBO0FBQ3ZEO0FBQ0EsZUFBZXNRLEdBQUcsR0FBRzdRLEdBQUc7QUFDdEIsTUFBSU0sR0FBR0MsR0FBR0MsR0FBR3NELEdBQUdDO0FBQ2hCLE1BQUk7QUFDRixVQUFNLElBQUksRUFBRSxTQUFTLElBQUksR0FBRy9ELEVBQUUsa0JBQWtCLENBQUMsR0FBRyxJQUFJd1E7QUFBQSxNQUN0RDtBQUFBLE1BQ0F4USxFQUFFLGNBQWMsSUFBSTtBQUFBLE1BQ3BCQSxFQUFFO0FBQUEsSUFDSjtBQUNBLE1BQUUsNEJBQTRCO0FBQUEsTUFDNUIsR0FBRztBQUFBLElBQ0wsQ0FBQztBQUNELFVBQU04SCxLQUFLLE1BQU00RixHQUFHMU4sRUFBRSxZQUFZO0FBQUEsTUFDaEMsa0JBQWtCQSxFQUFFLHNCQUFzQjtBQUFBLE1BQzFDLHlCQUF5QkEsRUFBRTtBQUFBLE1BQzNCLG9CQUFvQixFQUFFYSxFQUFFLEtBQUs7QUFBQSxNQUM3Qix5QkFBeUIsRUFBRUEsRUFBRSxVQUFVO0FBQUEsTUFDdkMsd0JBQXdCLEVBQUVBLEVBQUUsU0FBUztBQUFBLE1BQ3JDLHNCQUFzQjtBQUFBLFFBQ3BCLFVBQVUsRUFBRUEsRUFBRSxRQUFRO0FBQUEsUUFDdEIsU0FBUyxFQUFFQSxFQUFFLE9BQU87QUFBQSxNQUN0QjtBQUFBLElBQ0YsQ0FBQyxHQUFHLHNCQUFzQixDQUFDLEVBQUU7QUFDN0IsUUFBSSxDQUFDaUg7QUFDSCxZQUFNLElBQUksTUFBTSwwQ0FBMEM7QUFDNUQsUUFBSSxJQUFJLE1BQU0rRixFQUFFN04sRUFBRSxZQUFZO0FBQUEsTUFDNUIsY0FBY0EsRUFBRSxRQUFRO0FBQUEsTUFDeEIsNkJBQTZCO0FBQUEsUUFDM0Isa0JBQWtCQSxFQUFFLHNCQUFzQjtBQUFBLFFBQzFDLHNCQUFzQjhIO0FBQUEsUUFDdEIsK0JBQStCO0FBQUEsVUFDN0IsTUFBTTtBQUFBLFVBQ04sVUFBVTtBQUFBLFlBQ1IsbUJBQW1CO0FBQUEsWUFDbkIseUJBQXlCLEtBQUssVUFBVSxFQUFFLEtBQUs7QUFBQSxVQUNqRDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUFDO0FBQ0QsSUFBQTRJLEdBQUcsdUNBQXVDLENBQUM7QUFDM0MsUUFBSSxLQUFLblEsS0FBS0QsSUFBSSxFQUFFLG9CQUFvQixPQUFPLFNBQVNBLEVBQUUsQ0FBQyxNQUFNLE9BQU8sU0FBU0MsRUFBRTtBQUNuRixVQUFNb0gsS0FBS25ILElBQUksRUFBRSwwQkFBMEIsT0FBTyxTQUFTQSxFQUFFO0FBQUEsTUFDM0QsQ0FBQ3FILE1BQU1BLEVBQUUsU0FBUztBQUFBLElBQ3BCO0FBQ0EsUUFBSUYsS0FBSyxRQUFRQSxFQUFFLGdCQUFnQkEsRUFBRSxjQUFjQSxFQUFFLGdCQUFnQixJQUFJLE1BQU1pSixHQUFHakosR0FBRzNILENBQUMsR0FBRyxLQUFLK0QsS0FBS0QsSUFBSSxFQUFFLG9CQUFvQixPQUFPLFNBQVNBLEVBQUUsQ0FBQyxNQUFNLE9BQU8sU0FBU0MsRUFBRSxLQUFLLENBQUM7QUFDNUssWUFBTSxJQUFJLE1BQU0sZ0JBQWdCO0FBQ2xDLFVBQU02RCxJQUFJO0FBQUEsTUFDUixRQUFRLGdCQUFnQjtBQUFBLElBQzFCO0FBQ0EsV0FBTzVILEVBQUUsUUFBUSxnQkFBZ0I0SCxDQUFDLEdBQUcwSCxHQUFHO0FBQUEsTUFDdEMsV0FBVztBQUFBLE1BQ1gsa0JBQWtCdFAsRUFBRTtBQUFBLE1BQ3BCLHVCQUF1QkEsRUFBRTtBQUFBLE1BQ3pCLG9CQUFvQjtBQUFBLE1BQ3BCLGVBQWU7QUFBQSxNQUNmLGlCQUFpQjtBQUFBLElBQ25CLENBQUM7QUFBQSxFQUNILFNBQVMsR0FBRztBQUNWLFVBQU0sSUFBSTtBQUFBLE1BQ1IsUUFBUSxnQkFBZ0I7QUFBQSxJQUMxQjtBQUNBLFVBQU1BLEVBQUUsUUFBUSxnQkFBZ0IsQ0FBQyxHQUFHO0FBQUEsRUFDdEM7QUFDRjtBQUNBLE1BQU0sRUFBRSxPQUFPOFEsSUFBSSxPQUFPLEdBQUcsSUFBSWhLLEVBQUUsZUFBZSxHQUFHaUssS0FBS2xLO0FBQUEsRUFDeEQsT0FBTyxFQUFFLFNBQVMsR0FBRyxlQUFlN0csRUFBRSxNQUFNO0FBQzFDLFVBQU1NLElBQUk7QUFBQSxNQUNSLFdBQVdvTyxFQUFFLEtBQUs7QUFBQSxNQUNsQixhQUFhO0FBQUEsTUFDYixXQUFXO0FBQUEsTUFDWCxXQUFXLFlBQVk7QUFBQSxNQUN2QjtBQUFBLElBQ0YsR0FBR25PLElBQUk2TyxFQUFFLEVBQUUsd0JBQXdCLEVBQUU7QUFDckMsUUFBSSxDQUFDN087QUFDSCxhQUFPRDtBQUNULFFBQUl3USxHQUFHLDBCQUEwQixHQUFHLE1BQU1sQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLG1CQUFtQixDQUFDLGdCQUFnQixnQkFBZ0I7QUFDMUcsYUFBT2tDLEdBQUcsbURBQW1ELEdBQUd4UTtBQUNsRSxRQUFJd1EsR0FBRyxrQkFBa0IsR0FBRyxDQUFDLE1BQU0sZ0JBQWdCLGdCQUFnQjtBQUNqRSxhQUFPQSxHQUFHLHlDQUF5QyxHQUFHeFE7QUFDeEQsUUFBSSxDQUFDQyxFQUFFLFNBQVM7QUFDZCxZQUFNLElBQUksTUFBTSxtREFBbUQ7QUFDckUsVUFBTXdELElBQUksRUFBRSxrQkFBa0JJLElBQUksTUFBTXNKLEVBQUUxSixDQUFDLEdBQUdnTCxJQUFJNUssRUFBRSxTQUFTLFNBQVM2TSxJQUFJLE1BQU0vQyxHQUFHbEssR0FBR0ksRUFBRSxPQUFPNEssR0FBRyxNQUFNLEdBQUdrQyxJQUFJLE9BQU8vSixNQUFNO0FBQzFILFVBQUk7QUFDRixjQUFNZ0ssRUFBRSxrQkFBa0IsSUFBSTtBQUFBLFVBQzVCLFNBQVM7QUFBQSxVQUNULHVCQUF1QjNRO0FBQUEsVUFDdkIsa0JBQWtCOEQsR0FBRyxFQUFFLE9BQU87QUFBQSxVQUM5QixlQUFlckU7QUFBQSxVQUNmLGNBQWM7QUFBQSxZQUNaLEdBQUdrSDtBQUFBLFlBQ0gsZ0JBQWdCOEo7QUFBQSxVQUNsQjtBQUFBLFVBQ0EsWUFBWTtBQUFBLFFBQ2QsQ0FBQztBQUFBLE1BQ0gsU0FBU2xKLEdBQUc7QUFDVixXQUFHLDJCQUEyQkEsQ0FBQyxHQUFHOUgsRUFBRSxJQUFJLGlCQUFpQjhILEtBQUssT0FBTyxTQUFTQSxFQUFFLFlBQVksZUFBZTtBQUFBLE1BQzdHO0FBQUEsSUFDRjtBQUNBLFdBQU87QUFBQSxNQUNMLFdBQVc0RyxFQUFFLEtBQUs7QUFBQSxNQUNsQixhQUFhO0FBQUEsTUFDYixXQUFXO0FBQUEsTUFDWCxXQUFXdUM7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUNGLEdBQUdFLEtBQUt2SztBQUFBLEVBQ04sT0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLElBQ1QsdUJBQXVCNUc7QUFBQSxJQUN2QixrQkFBa0JNO0FBQUEsSUFDbEIsY0FBY0M7QUFBQSxJQUNkLGVBQWVDO0FBQUEsRUFDakIsTUFBTTtBQUNKLFFBQUlrSDtBQUNKLFVBQU01RCxJQUFJc0wsRUFBRSxFQUFFLHdCQUF3QixFQUFFLEdBQUcsRUFBRSx3QkFBd0JyTCxHQUFHLGdCQUFnQkksRUFBRSxJQUFJNUQsR0FBR3dPLElBQUksRUFBRSxrQkFBa0JpQyxJQUFJLE1BQU12RCxFQUFFc0IsQ0FBQyxHQUFHa0MsSUFBSUQsRUFBRSxTQUFTLFNBQVM5SixJQUFJOEgsR0FBRztBQUFBLE1BQ3RLLHdCQUF3QmpMO0FBQUEsTUFDeEIsZ0JBQWdCSTtBQUFBLE1BQ2hCLFNBQVM7QUFBQSxRQUNQLEdBQUc2TTtBQUFBLE1BQ0w7QUFBQSxNQUNBLGVBQWV0SixJQUFJNUQsS0FBSyxPQUFPLFNBQVNBLEVBQUUsYUFBYSxPQUFPLFNBQVM0RCxFQUFFO0FBQUEsSUFDM0UsQ0FBQyxHQUFHSSxJQUFJLElBQUksZ0JBQWdCLEdBQUdaLENBQUMsR0FBR08sSUFBSTtBQUFBLE1BQ3JDLFNBQVNLO0FBQUEsTUFDVCxZQUFZLEVBQUU7QUFBQSxNQUNkLHVCQUF1QjlIO0FBQUEsTUFDdkIsa0JBQWtCTTtBQUFBLE1BQ2xCLGtCQUFrQndELEVBQUU7QUFBQSxNQUNwQixTQUFTa047QUFBQSxNQUNULGFBQWFDO0FBQUEsTUFDYixTQUFTLEVBQUU7QUFBQSxNQUNYLGVBQWV6UTtBQUFBLE1BQ2Ysb0JBQW9CRCxLQUFLLE9BQU8sU0FBU0EsRUFBRTtBQUFBLElBQzdDO0FBQ0EsV0FBTyxFQUFFLDBCQUEwQjtBQUFBLE1BQ2pDLGdCQUFnQlAsRUFBRTtBQUFBLE1BQ2xCLFNBQVMsR0FBR2dSLEdBQUcsQ0FBQyxPQUFPLENBQUM7QUFBQSxNQUN4Qix3QkFBd0JqTjtBQUFBLElBQzFCLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQzRELEdBQUdDLE1BQU07QUFDeEIsWUFBTUMsSUFBSSxNQUFNO0FBQ2QsUUFBQWlKLEdBQUcsMkJBQTJCLEdBQUdsSixFQUFFLElBQUksTUFBTSwyQkFBMkIsQ0FBQztBQUFBLE1BQzNFO0FBQ0EsTUFBQUUsRUFBRSxXQUFXRCxHQUFHQyxFQUFFLHFCQUFxQixPQUFPb0UsTUFBTTtBQUNsRCxZQUFJO0FBQ0YsZ0JBQU15RSxHQUFHekUsR0FBR3pFLENBQUM7QUFBQSxRQUNmLFNBQVMwRSxHQUFHO0FBQ1YsVUFBQXZFLEVBQUV1RSxDQUFDO0FBQUEsUUFDTDtBQUFBLE1BQ0YsR0FBR3JFLEVBQUUsMEJBQTBCLE1BQU07QUFDbkMsY0FBTW9FLElBQUk7QUFBQSxVQUNSLFVBQVUsRUFBRSxHQUFHaEYsRUFBRSxNQUFNO0FBQUEsUUFDekI7QUFDQSxRQUFBWSxFQUFFLCtCQUErQm9FLENBQUM7QUFBQSxNQUNwQyxHQUFHcEUsRUFBRSxzQkFBc0IsT0FBT29FLE1BQU07QUFDdEMsVUFBRSw4QkFBOEI7QUFDaEMsWUFBSTtBQUNGLGdCQUFNQyxJQUFJLE1BQU0wRSxHQUFHM0UsR0FBR3pFLENBQUM7QUFDdkIsVUFBQUUsRUFBRXdFLENBQUM7QUFBQSxRQUNMLFNBQVNBLEdBQUc7QUFDVixVQUFBdkUsRUFBRXVFLENBQUM7QUFBQSxRQUNMO0FBQUEsTUFDRixHQUFHckUsRUFBRSxNQUFNO0FBQUEsSUFDYixDQUFDLEVBQUUsTUFBTSxDQUFDSCxNQUFNO0FBQ2QsWUFBTSxHQUFHLDJCQUEyQkEsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCO0FBQUEsUUFDbkUsT0FBT0E7QUFBQSxNQUNULENBQUMsR0FBR0E7QUFBQSxJQUNOLENBQUM7QUFBQSxFQUNIO0FBQ0YsR0FBR3lKLEtBQUssQ0FBQztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsbUJBQW1CcFI7QUFBQSxFQUNuQixjQUFjTTtBQUFBLEVBQ2QsWUFBWUM7QUFBQSxFQUNaLGdCQUFnQkM7QUFBQSxFQUNoQix3QkFBd0JzRDtBQUFBLEVBQ3hCLFNBQVNDO0FBQ1gsTUFBTTtBQUNKLE1BQUltRCxHQUFHWTtBQUNQLFFBQU0zRCxNQUFNK0MsSUFBSXBELEtBQUssT0FBTyxTQUFTQSxFQUFFLFdBQVcsT0FBTyxTQUFTb0QsRUFBRSxnQkFBZ0IxRyxLQUFLLE9BQU8sU0FBU0EsRUFBRSxlQUFlLEdBQUd1TyxJQUFJLEtBQUssSUFBSTVLLElBQUksS0FBSyxDQUFDLEdBQUc2TSxPQUFPbEosSUFBSWhFLEtBQUssT0FBTyxTQUFTQSxFQUFFLFdBQVcsT0FBTyxTQUFTZ0UsRUFBRSxjQUFjL0QsS0FBSyxPQUFPLFNBQVNBLEVBQUUsYUFBYXZELEVBQUUsVUFBVSxZQUFZLEdBQUd5USxJQUFJO0FBQUEsSUFDclMsWUFBWTtBQUFBLElBQ1osaUJBQWlCO0FBQUEsSUFDakIsdUJBQXVCO0FBQUEsTUFDckI7QUFBQSxRQUNFLE1BQU07QUFBQSxRQUNOLFlBQVk7QUFBQSxVQUNWLG9CQUFvQixDQUFDLFlBQVksZ0JBQWdCO0FBQUEsVUFDakQscUJBQXFCLENBQUMsUUFBUSxZQUFZLFdBQVcsT0FBTyxjQUFjLE1BQU07QUFBQSxVQUNoRix3QkFBd0I7QUFBQSxVQUN4QiwwQkFBMEI7QUFBQSxZQUN4QixRQUFRO0FBQUEsVUFDVjtBQUFBLFVBQ0Esa0JBQWtCO0FBQUEsVUFDbEIsbUJBQW1CO0FBQUEsUUFDckI7QUFBQSxRQUNBLDJCQUEyQjtBQUFBLFVBQ3pCLE1BQU07QUFBQSxVQUNOLFlBQVk7QUFBQSxZQUNWLFNBQVM7QUFBQSxZQUNULG1CQUFtQmpSO0FBQUEsVUFDckI7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBLGVBQWU7QUFBQSxJQUNmLGNBQWM7QUFBQTtBQUFBO0FBQUEsTUFHWixZQUFZTyxLQUFLO0FBQUEsTUFDakIsY0FBY0Q7QUFBQSxJQUNoQjtBQUFBLElBQ0EsaUJBQWlCO0FBQUEsTUFDZixhQUFhO0FBQUEsTUFDYixjQUFjMFE7QUFBQSxNQUNkLGtCQUFrQmxOLEtBQUssUUFBUUEsRUFBRSxVQUFVLGNBQWM7QUFBQSxNQUN6RCxZQUFZaUwsRUFBRSxRQUFRLENBQUM7QUFBQSxJQUN6QjtBQUFBLEVBQ0Y7QUFDQSxTQUFPakwsS0FBSyxRQUFRQSxFQUFFLDBCQUEwQixPQUFPQSxFQUFFLDJCQUEyQixhQUFhLEVBQUUsR0FBR21OLEdBQUcsR0FBR25OLEVBQUUsd0JBQXdCbU4sQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHQSxHQUFHLEdBQUduTixFQUFFLHdCQUF3QixJQUFJbU47QUFDeEwsR0FBRyxLQUFLLE1BQU10QyxHQUFHO0FBQUEsRUFDZixVQUFVO0FBQUEsRUFDVixLQUFLO0FBQUEsRUFDTCxlQUFlLE1BQU07QUFDbkIsUUFBSSxHQUFHM087QUFDUCxXQUFPLENBQUMsR0FBR0EsS0FBSyxJQUFJLE9BQU8sV0FBVyxPQUFPLFNBQVMsRUFBRSxhQUFhLFFBQVFBLEVBQUU7QUFBQSxFQUNqRjtBQUNGLENBQUM7QUFDRCxJQUFJcVIsS0FBSztBQUNULE1BQU0sS0FBSyxPQUFPLE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxTQUFTLGVBQWUsUUFBUUMsS0FBSyxPQUFPLEdBQUd0UixNQUFNO0FBQzNGLFFBQU1NLElBQUksTUFBTSxHQUFHLENBQUM7QUFDcEIsU0FBTytRLE9BQU8sU0FBU0EsS0FBSyxJQUFJLE9BQU8sT0FBTyxTQUFTLElBQUksZUFBZTtBQUFBLElBQ3hFLGFBQWEvUTtBQUFBLElBQ2IsY0FBY04sRUFBRTtBQUFBLEVBQ2xCLENBQUMsSUFBSXFSO0FBQ1AsR0FBR0UsS0FBSyxDQUFDLE1BQU07QUFDYixRQUFNdlIsSUFBSSxFQUFFLHNCQUFzQixLQUFLLENBQUNNLE1BQU1BLEVBQUUsU0FBUywyQkFBMkI7QUFDcEYsU0FBT04sSUFBSWtELEdBQUcsTUFBTWxELENBQUMsSUFBSTtBQUMzQixHQUFHd1IsS0FBSyxDQUFDLEdBQUd4UixNQUFNO0FBQ2hCLE1BQUlRLEdBQUdzRCxHQUFHQyxHQUFHSTtBQUNiLFFBQU03RCxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUdDLEtBQUt1RCxLQUFLdEQsSUFBSVIsRUFBRSxzQkFBc0IsT0FBTyxTQUFTUSxFQUFFLFNBQVMsT0FBTyxTQUFTc0QsRUFBRTtBQUN2RyxNQUFJdkQsR0FBRztBQUNMLFVBQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNNEQsS0FBS0osSUFBSXhELEVBQUUsU0FBUyxPQUFPLFNBQVN3RCxFQUFFLEtBQUssTUFBTSxPQUFPLFNBQVNJLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRSxLQUFLLEdBQUcsS0FBSztBQUMvSCxJQUFBN0QsRUFBRU8sRUFBRSxLQUFLLElBQUlQLEVBQUVPLEVBQUUsS0FBSyxLQUFLYixFQUFFLFNBQVMsOEJBQThCTSxFQUFFTyxFQUFFLE9BQU8sSUFBSVAsRUFBRU8sRUFBRSxPQUFPLEtBQUtOLEVBQUUsZUFBZSxNQUFNRCxFQUFFTyxFQUFFLE9BQU8sSUFBSVAsRUFBRU8sRUFBRSxPQUFPLEtBQUtOLEVBQUUsWUFBWSxJQUFJRCxFQUFFTyxFQUFFLElBQUksSUFBSVAsRUFBRU8sRUFBRSxJQUFJLEtBQUtOLEVBQUUsWUFBWSxJQUFJRCxFQUFFTyxFQUFFLFFBQVEsSUFBSVAsRUFBRU8sRUFBRSxRQUFRLEtBQUtOLEVBQUUsY0FBYyxTQUFTRCxFQUFFTyxFQUFFLEtBQUssSUFBSVAsRUFBRU8sRUFBRSxLQUFLLEtBQUtOLEVBQUUsc0JBQXNCO0FBQ25VLFVBQU0yRyxJQUFJNUcsRUFBRU8sRUFBRSxVQUFVLEtBQUssS0FBSyxJQUFJaUgsSUFBSXhILEVBQUVPLEVBQUUsU0FBUyxLQUFLLEtBQUs7QUFDakUsSUFBQXFHLEtBQUtZLEtBQUt4SCxFQUFFTyxFQUFFLFVBQVUsSUFBSXFHLEdBQUc1RyxFQUFFTyxFQUFFLFNBQVMsSUFBSWlILE1BQU14SCxFQUFFTyxFQUFFLFVBQVUsSUFBSSxlQUFlUCxFQUFFTyxFQUFFLFNBQVMsSUFBSTtBQUFBLEVBQzFHO0FBQ0EsU0FBT1A7QUFDVCxHQUFHLEVBQUUsT0FBT21SLEdBQUcsT0FBT0MsR0FBRyxJQUFJNUssRUFBRSxnQkFBZ0IsR0FBRzZLLEtBQUs5SztBQUFBLEVBQ3JELE9BQU8sRUFBRSxTQUFTLEdBQUcsZUFBZTdHLEVBQUUsTUFBTTtBQUMxQyxRQUFJa0gsR0FBR1k7QUFDUCxVQUFNeEgsSUFBSTtBQUFBLE1BQ1IsV0FBV29PLEVBQUUsS0FBSztBQUFBLE1BQ2xCLGFBQWE7QUFBQSxNQUNiLFdBQVc7QUFBQSxNQUNYLFdBQVcsWUFBWTtBQUFBLE1BQ3ZCO0FBQUEsSUFDRixHQUFHbk8sSUFBSTZPLEVBQUUsRUFBRSx3QkFBd0JpQixFQUFFO0FBQ3JDLFFBQUksQ0FBQzlQO0FBQ0gsYUFBT0Q7QUFDVCxJQUFBbVIsRUFBRSxrQkFBa0JsUixDQUFDO0FBQ3JCLFVBQU0sSUFBSUEsRUFBRTtBQUNaLFFBQUksQ0FBQyxFQUFFO0FBQ0wsYUFBT21SLEdBQUcsbURBQW1ELEdBQUdwUjtBQUNsRSxRQUFJbVIsRUFBRSwyQkFBMkIsR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHM0osS0FBS1osSUFBSSxPQUFPLFdBQVcsT0FBTyxTQUFTQSxFQUFFLGFBQWEsUUFBUVksRUFBRTtBQUNySCxhQUFPNEosR0FBRyxvQ0FBb0MsR0FBR3BSO0FBQ25ELFFBQUksTUFBTSxHQUFHLEVBQUUsT0FBTyxNQUFNLGdCQUFnQixDQUFDLEVBQUU7QUFDN0MsYUFBT29SLEdBQUcsK0RBQStELEdBQUdwUjtBQUM5RSxJQUFBbVIsRUFBRSx5QkFBeUIsT0FBTyxPQUFPLFFBQVE7QUFDakQsUUFBSTtBQUNGLFlBQU1oSyxJQUFJMkosR0FBRztBQUFBLFFBQ1gsU0FBUztBQUFBLFFBQ1QsbUJBQW1CLEVBQUU7QUFBQSxRQUNyQixjQUFjLEVBQUU7QUFBQSxRQUNoQixZQUFZLEVBQUUsMEJBQTBCO0FBQUE7QUFBQSxRQUV4QyxnQkFBZ0I7QUFBQSxVQUNkLFlBQVk7QUFBQSxVQUNaLFVBQVU7QUFBQSxRQUNaO0FBQUEsTUFDRixDQUFDLEdBQUcxSixJQUFJLE1BQU00SixHQUFHLEVBQUUsU0FBUzdKLENBQUMsR0FBRyxFQUFFLFFBQVFFLEVBQUUsSUFBSSxNQUFNRCxFQUFFLGFBQWFELENBQUM7QUFDdEUsVUFBSSxDQUFDRTtBQUNILGVBQU84SixFQUFFLDJDQUEyQyxHQUFHblI7QUFBQSxJQUMzRCxTQUFTbUgsR0FBRztBQUNWLGFBQU9pSyxHQUFHLDBDQUEwQ2pLLENBQUMsR0FBR25IO0FBQUEsSUFDMUQ7QUFDQSxVQUFNeUQsSUFBSSxFQUFFLGtCQUFrQkksSUFBSSxNQUFNc0osRUFBRTFKLENBQUMsR0FBR2dMLElBQUk1SyxFQUFFLFNBQVMsU0FBUzZNLElBQUksTUFBTS9DLEdBQUdsSyxHQUFHSSxFQUFFLE9BQU80SyxHQUFHLE1BQU0sR0FBR2tDLElBQUksT0FBT3hKLE1BQU07QUFDMUgsVUFBSTtBQUNGLFFBQUF5SixFQUFFLG1CQUFtQixJQUFJO0FBQUEsVUFDdkIsU0FBUztBQUFBLFVBQ1QsdUJBQXVCM1E7QUFBQSxVQUN2QixrQkFBa0I4RCxHQUFHLEVBQUUsT0FBTztBQUFBLFVBQzlCLGVBQWVyRTtBQUFBLFVBQ2YsWUFBWTtBQUFBLFVBQ1osY0FBYztBQUFBLFlBQ1osR0FBR3lIO0FBQUEsWUFDSCxnQkFBZ0J1SjtBQUFBLFVBQ2xCO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxTQUFTdEosR0FBRztBQUNWLFFBQUFnSyxHQUFHLDRCQUE0QmhLLENBQUMsR0FBRzFILEVBQUUsSUFBSSxpQkFBaUIwSCxLQUFLLE9BQU8sU0FBU0EsRUFBRSxZQUFZLGVBQWU7QUFBQSxNQUM5RztBQUFBLElBQ0Y7QUFDQSxXQUFPO0FBQUEsTUFDTCxXQUFXZ0gsRUFBRSxLQUFLO0FBQUEsTUFDbEIsYUFBYTtBQUFBLE1BQ2IsV0FBVztBQUFBLE1BQ1gsV0FBV3VDO0FBQUEsSUFDYjtBQUFBLEVBQ0Y7QUFDRixHQUFHVyxLQUFLaEw7QUFBQSxFQUNOLE9BQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxJQUNULHVCQUF1QjVHO0FBQUEsSUFDdkIsa0JBQWtCTTtBQUFBLElBQ2xCLGVBQWVDO0FBQUEsSUFDZixjQUFjQztBQUFBLEVBQ2hCLE1BQU07QUFDSixRQUFJaUgsR0FBR0MsR0FBR0MsR0FBR0MsR0FBR0MsR0FBR3FFLEdBQUdDO0FBQ3RCLElBQUFzRixFQUFFLDZCQUE2QjtBQUMvQixVQUFNM04sSUFBSXNMLEVBQUUsRUFBRSx3QkFBd0JpQixFQUFFLEdBQUcsRUFBRSxnQkFBZ0J0TSxHQUFHLHdCQUF3QkksRUFBRSxJQUFJM0QsR0FBR3VPLElBQUlqTCxFQUFFO0FBQ3ZHLFFBQUksQ0FBQ2lMLEVBQUU7QUFDTCxZQUFNLElBQUksTUFBTSxtREFBbUQ7QUFDckUsVUFBTWlDLElBQUlJLEdBQUc7QUFBQSxNQUNYLFNBQVM7QUFBQSxNQUNULG1CQUFtQnJDLEVBQUU7QUFBQSxNQUNyQixjQUFjQSxFQUFFO0FBQUEsTUFDaEIsWUFBWUEsRUFBRSwwQkFBMEI7QUFBQSxNQUN4QyxnQkFBZ0JoTDtBQUFBLE1BQ2hCLHdCQUF3Qkk7QUFBQSxJQUMxQixDQUFDLEdBQUc4TSxJQUFJLEVBQUUsa0JBQWtCL0osSUFBSSxNQUFNdUcsRUFBRXdELENBQUM7QUFDekMsTUFBRSwyQkFBMkI7QUFBQSxNQUMzQixnQkFBZ0JuTixFQUFFO0FBQUEsTUFDbEIsU0FBUyxHQUFHb0QsR0FBRyxDQUFDLE9BQU8sQ0FBQztBQUFBLE1BQ3hCLHdCQUF3Qi9DO0FBQUEsSUFDMUIsQ0FBQztBQUNELFVBQU0yRCxJQUFJLE1BQU13SixHQUFHLEVBQUUsU0FBU04sQ0FBQztBQUMvQixRQUFJO0FBQ0YsWUFBTWEsSUFBSSxNQUFNL0osRUFBRSxnQkFBZ0JrSixDQUFDO0FBQ25DLE1BQUFTLEVBQUUsMkJBQTJCSSxDQUFDO0FBQzlCLFlBQU1DLEtBQUtOLEdBQUdsUixHQUFHdVIsQ0FBQyxHQUFHRSxLQUFJdkI7QUFBQSxRQUN2QnNCO0FBQUEsUUFDQXZSLEVBQUUsSUFBSTtBQUFBLFFBQ05DLEtBQUssT0FBTyxTQUFTQSxFQUFFO0FBQUEsTUFDekI7QUFDQSxRQUFFLDRCQUE0QjtBQUFBLFFBQzVCLEdBQUd1UjtBQUFBLE1BQ0wsQ0FBQztBQUNELFlBQU0sTUFBTXJLLEtBQUtELElBQUlvSyxFQUFFLHNCQUFzQixPQUFPLFNBQVNwSyxFQUFFLHFCQUFxQixPQUFPLFNBQVNDLEVBQUU7QUFDdEcsVUFBSSxDQUFDO0FBQ0gsY0FBTSxJQUFJLE1BQU0sMkNBQTJDO0FBQzdELFlBQU1zSyxLQUFLLE1BQU10RSxHQUFHdUQsR0FBRztBQUFBLFFBQ3JCLGtCQUFrQmpSLEVBQUU7QUFBQSxRQUNwQix5QkFBeUJBO0FBQUEsUUFDekIsb0JBQW9CK1IsR0FBRWxSLEVBQUUsS0FBSztBQUFBLFFBQzdCLHlCQUF5QmtSLEdBQUVsUixFQUFFLFVBQVU7QUFBQSxRQUN2Qyx3QkFBd0JrUixHQUFFbFIsRUFBRSxTQUFTO0FBQUEsUUFDckMsc0JBQXNCO0FBQUEsVUFDcEIsVUFBVWtSLEdBQUVsUixFQUFFLFFBQVE7QUFBQSxVQUN0QixTQUFTa1IsR0FBRWxSLEVBQUUsT0FBTztBQUFBLFFBQ3RCO0FBQUEsTUFDRixDQUFDLEdBQUdvUixLQUFLVixHQUFHUyxFQUFFO0FBQ2QsTUFBQVAsRUFBRSwyQkFBMkJRLEVBQUU7QUFDL0IsVUFBSUMsS0FBSyxNQUFNckUsRUFBRW9ELEdBQUc7QUFBQSxRQUNsQixjQUFjL0osRUFBRTtBQUFBLFFBQ2hCLDZCQUE2QjtBQUFBLFVBQzNCLGtCQUFrQmxILEVBQUU7QUFBQTtBQUFBLFVBRXBCLHNCQUFzQmlTLE1BQU0sT0FBTyxTQUFTQSxHQUFHO0FBQUEsVUFDL0MsK0JBQStCO0FBQUEsWUFDN0IsTUFBTTtBQUFBLFlBQ04sV0FBVztBQUFBLGNBQ1QsbUJBQW1CO0FBQUEsY0FDbkIseUJBQXlCO0FBQUEsWUFDM0I7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUFBLE1BQ0YsQ0FBQztBQUNELE1BQUFSLEVBQUUsdUNBQXVDUyxFQUFFO0FBQzNDLFVBQUlDLE1BQU12SyxLQUFLRCxJQUFJdUssR0FBRyxvQkFBb0IsT0FBTyxTQUFTdkssRUFBRSxDQUFDLE1BQU0sT0FBTyxTQUFTQyxFQUFFO0FBQ3JGLFlBQU13SyxNQUFNdkssSUFBSXFLLEdBQUcsMEJBQTBCLE9BQU8sU0FBU3JLLEVBQUU7QUFBQSxRQUM3RCxDQUFDd0ssT0FBT0EsR0FBRyxTQUFTO0FBQUEsTUFDdEI7QUFDQSxVQUFJRCxNQUFNQSxHQUFHLGNBQWM7QUFDekIsUUFBQVgsRUFBRSwwQ0FBMENXLEVBQUU7QUFDOUMsY0FBTSxFQUFFLFFBQVFDLEdBQUcsSUFBSSxNQUFNM0MsR0FBRztBQUFBLFVBQzlCLEtBQUswQyxHQUFHO0FBQUEsVUFDUixTQUFTLEVBQUU7QUFBQSxRQUNiLENBQUM7QUFDRCxZQUFJWCxFQUFFLHlDQUF5Q1ksRUFBRSxHQUFHLEdBQUdBLE9BQU90UCxFQUFFO0FBQzlELGdCQUFNLElBQUksTUFBTSw0QkFBNEI7QUFDOUMsWUFBSXNQLE9BQU90UCxFQUFFO0FBQ1gsZ0JBQU0sSUFBSSxNQUFNLHlCQUF5QjtBQUFBLE1BQzdDO0FBQ0EsVUFBSXFQLE1BQU0sQ0FBQ0QsT0FBT0QsS0FBSyxNQUFNckUsRUFBRW9ELEdBQUc7QUFBQSxRQUNoQyxjQUFjL0osRUFBRTtBQUFBLFFBQ2hCLGFBQWFrTCxHQUFHO0FBQUEsUUFDaEIsNkJBQTZCO0FBQUEsVUFDM0Isa0JBQWtCcFMsRUFBRTtBQUFBLFVBQ3BCLHNCQUFzQm9TLEdBQUc7QUFBQSxRQUMzQjtBQUFBLE1BQ0YsQ0FBQyxHQUFHWCxFQUFFLHVDQUF1Q1MsRUFBRSxHQUFHQyxNQUFNaEcsS0FBS0QsSUFBSWdHLEdBQUcsb0JBQW9CLE9BQU8sU0FBU2hHLEVBQUUsQ0FBQyxNQUFNLE9BQU8sU0FBU0MsRUFBRSxLQUFLLENBQUNnRztBQUN2SSxjQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFDbEMsYUFBTzdDLEdBQUc7QUFBQSxRQUNSLFdBQVc7QUFBQSxRQUNYLGtCQUFrQjJCO0FBQUEsUUFDbEIsdUJBQXVCalI7QUFBQSxRQUN2QixvQkFBb0IrUjtBQUFBLFFBQ3BCLGVBQWVHO0FBQUEsUUFDZixpQkFBaUI7QUFBQSxNQUNuQixDQUFDO0FBQUEsSUFDSCxTQUFTTCxHQUFHO0FBQ1YsWUFBTUgsR0FBRyw0QkFBNEJHLENBQUMsR0FBRyxFQUFFLDRCQUE0QjtBQUFBLFFBQ3JFLE9BQU9BO0FBQUEsTUFDVCxDQUFDLEdBQUcsSUFBSSxPQUFPQSxLQUFLLE9BQU8sU0FBU0EsRUFBRSxZQUFZLGVBQWU7QUFBQSxJQUNuRTtBQUFBLEVBQ0Y7QUFDRixHQUFHUyxLQUFLcFQsRUFBSSxPQUFPO0FBQUEsRUFDakIsVUFBVUEsRUFBSSxRQUFRLFdBQVc7QUFBQSxFQUNqQyxnQkFBZ0JBLEVBQUksUUFBUSxlQUFlO0FBQUEsRUFDM0MsVUFBVUEsRUFBSSxPQUFPO0FBQUEsSUFDbkIsc0JBQXNCQSxFQUFJLE9BQU87QUFBQSxJQUNqQyx3QkFBd0JBLEVBQUksT0FBTztBQUFBLEVBQ3JDLENBQUM7QUFDSCxDQUFDLEdBQUdxVCxLQUFLclQsRUFBSSxPQUFPO0FBQUEsRUFDbEIsVUFBVUEsRUFBSSxRQUFRLFlBQVk7QUFBQSxFQUNsQyxnQkFBZ0JBLEVBQUksUUFBUSxlQUFlO0FBQUEsRUFDM0MsVUFBVUEsRUFBSSxPQUFPO0FBQUEsSUFDbkIsc0JBQXNCQSxFQUFJLE9BQU87QUFBQSxJQUNqQyx3QkFBd0JBLEVBQUksT0FBTztBQUFBLElBQ25DLHdCQUF3QkEsRUFBSSxPQUFPLEVBQUUsUUFBUTtBQUFBLEVBQy9DLENBQUM7QUFDSCxDQUFDO0FBQ0QsZUFBZXNULEdBQUcsR0FBR3hTLEdBQUc7QUFDdEIsTUFBSTtBQUNGLFVBQU0sS0FBSyxNQUFNd08sR0FBR3hPLEVBQUUsWUFBWTtBQUFBLE1BQ2hDLHlCQUF5QkEsRUFBRTtBQUFBLE1BQzNCLDZCQUE2QjtBQUFBLFFBQzNCLHVCQUF1QjtBQUFBLFVBQ3JCLGdCQUFnQixFQUFFO0FBQUEsVUFDbEIsb0JBQW9CLE9BQU8sU0FBUztBQUFBLFVBQ3BDLGtCQUFrQkEsRUFBRSxpQkFBaUI7QUFBQSxRQUN2QztBQUFBLE1BQ0Y7QUFBQSxJQUNGLENBQUMsR0FBRyxzQkFBc0JRLElBQUksS0FBSyxPQUFPLFNBQVMsRUFBRTtBQUNyRCxRQUFJLENBQUNBO0FBQ0gsWUFBTSxJQUFJLE1BQU0sNENBQTRDO0FBQzlELElBQUFSLEVBQUUsUUFBUSwyQkFBMkJRLENBQUMsR0FBRyxFQUFFLDBDQUEwQztBQUFBLE1BQ25GLEdBQUdBO0FBQUEsSUFDTCxDQUFDO0FBQUEsRUFDSCxTQUFTRixHQUFHO0FBQ1YsVUFBTU4sRUFBRSxRQUFRLE1BQU0sR0FBR007QUFBQSxFQUMzQjtBQUNGO0FBQ0EsZUFBZW1TLEdBQUcsR0FBR3pTLEdBQUc7QUFDdEIsTUFBSU0sR0FBR0M7QUFDUCxNQUFJO0FBQ0YsVUFBTUMsSUFBSSxFQUFFLFNBQVNzRCxJQUFJLEdBQUc5RCxFQUFFLGtCQUFrQlEsQ0FBQyxHQUFHdUQsSUFBSXlNLEdBQUcxTSxHQUFHOUQsRUFBRSxjQUFjLElBQUksaUJBQWlCO0FBQ25HLE1BQUUsNEJBQTRCO0FBQUEsTUFDNUIsR0FBRytEO0FBQUEsSUFDTCxDQUFDLEdBQUcsTUFBTTJKLEdBQUcxTixFQUFFLFlBQVk7QUFBQSxNQUN6QixrQkFBa0JBLEVBQUUsc0JBQXNCO0FBQUEsTUFDMUMseUJBQXlCQSxFQUFFO0FBQUEsTUFDM0Isb0JBQW9CK0QsRUFBRWxELEVBQUUsS0FBSztBQUFBLE1BQzdCLHlCQUF5QmtELEVBQUVsRCxFQUFFLFVBQVU7QUFBQSxNQUN2Qyx3QkFBd0JrRCxFQUFFbEQsRUFBRSxTQUFTO0FBQUEsTUFDckMsc0JBQXNCO0FBQUEsUUFDcEIsVUFBVWtELEVBQUVsRCxFQUFFLFFBQVE7QUFBQSxRQUN0QixTQUFTa0QsRUFBRWxELEVBQUUsT0FBTztBQUFBLE1BQ3RCO0FBQUEsSUFDRixDQUFDO0FBQ0QsVUFBTSxJQUFJO0FBQUEsTUFDUixnQkFBZ0I7QUFBQSxNQUNoQixXQUFXLE9BQU8sS0FBSyxLQUFLLFVBQVVMLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFBQSxJQUM1RCxHQUFHLElBQUksTUFBTXFOLEVBQUU3TixFQUFFLFlBQVk7QUFBQSxNQUMzQixjQUFjQSxFQUFFLFFBQVE7QUFBQSxNQUN4Qiw2QkFBNkI7QUFBQSxRQUMzQixrQkFBa0JBLEVBQUUsc0JBQXNCO0FBQUEsUUFDMUMsNEJBQTRCO0FBQUEsTUFDOUI7QUFBQSxJQUNGLENBQUM7QUFDRCxRQUFJLEdBQUdPLEtBQUtELElBQUksRUFBRSxvQkFBb0IsT0FBTyxTQUFTQSxFQUFFLENBQUMsTUFBTSxRQUFnQkMsRUFBRTtBQUMvRSxZQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFDbEMsVUFBTTBRLElBQUk7QUFBQSxNQUNSLFFBQVEsZ0JBQWdCO0FBQUEsSUFDMUI7QUFDQSxXQUFPalIsRUFBRSxRQUFRLGdCQUFnQmlSLENBQUMsR0FBRzNCLEdBQUc7QUFBQSxNQUN0QyxXQUFXO0FBQUEsTUFDWCxrQkFBa0J0UCxFQUFFO0FBQUEsTUFDcEIsdUJBQXVCQSxFQUFFO0FBQUEsTUFDekIsb0JBQW9CK0Q7QUFBQSxNQUNwQixlQUFlO0FBQUEsTUFDZixpQkFBaUI7QUFBQSxJQUNuQixDQUFDO0FBQUEsRUFDSCxTQUFTdkQsR0FBRztBQUNWLFVBQU1zRCxJQUFJO0FBQUEsTUFDUixRQUFRLGdCQUFnQjtBQUFBLElBQzFCO0FBQ0EsVUFBTTlELEVBQUUsUUFBUSxnQkFBZ0I4RCxDQUFDLEdBQUd0RDtBQUFBLEVBQ3RDO0FBQ0Y7QUFDQSxNQUFNLEVBQUUsT0FBT2tTLElBQUksT0FBT0MsR0FBRyxJQUFJN0wsRUFBRSxrQkFBa0IsR0FBRzhMLEtBQUsvTDtBQUFBLEVBQzNELE9BQU8sRUFBRSxTQUFTLEdBQUcsZUFBZTdHLEVBQUUsTUFBTTtBQUMxQyxVQUFNTSxJQUFJO0FBQUEsTUFDUixXQUFXb08sRUFBRSxLQUFLO0FBQUEsTUFDbEIsYUFBYTtBQUFBLE1BQ2IsV0FBVztBQUFBLE1BQ1gsV0FBVyxZQUFZO0FBQUEsTUFDdkI7QUFBQSxJQUNGLEdBQUduTyxJQUFJNk8sRUFBRSxFQUFFLHdCQUF3QmtELEVBQUU7QUFDckMsUUFBSSxDQUFDL1I7QUFDSCxhQUFPRDtBQUNULFFBQUlvUyxHQUFHLDBCQUEwQixHQUFHLE1BQU05RCxHQUFHLEdBQUcsQ0FBQyxPQUFPLG1CQUFtQixDQUFDLGdCQUFnQixnQkFBZ0I7QUFDMUcsYUFBTzhELEdBQUcsbURBQW1ELEdBQUdwUztBQUNsRSxRQUFJLENBQUMsTUFBTSxnQkFBZ0IsZ0JBQWdCO0FBQ3pDLGFBQU9vUyxHQUFHLHlDQUF5QyxHQUFHcFM7QUFDeEQsUUFBSSxDQUFDQyxFQUFFLFNBQVM7QUFDZCxZQUFNLElBQUksTUFBTSxtREFBbUQ7QUFDckUsVUFBTXdELElBQUksRUFBRSxrQkFBa0JJLElBQUksTUFBTXNKLEVBQUUxSixDQUFDLEdBQUdnTCxJQUFJNUssRUFBRSxTQUFTLFNBQVM2TSxJQUFJLE1BQU0vQyxHQUFHbEssR0FBR0ksRUFBRSxPQUFPNEssR0FBRyxNQUFNLEdBQUdrQyxJQUFJLE9BQU8vSixNQUFNO0FBQzFILFVBQUk7QUFDRixjQUFNZ0ssRUFBRSxxQkFBcUIsSUFBSTtBQUFBLFVBQy9CLFNBQVM7QUFBQSxVQUNULHVCQUF1QjNRO0FBQUEsVUFDdkIsa0JBQWtCOEQsR0FBRyxFQUFFLE9BQU87QUFBQSxVQUM5QixlQUFlckU7QUFBQSxVQUNmLGNBQWM7QUFBQSxZQUNaLEdBQUdrSDtBQUFBLFlBQ0gsZ0JBQWdCOEo7QUFBQSxVQUNsQjtBQUFBLFVBQ0EsWUFBWTtBQUFBLFFBQ2QsQ0FBQztBQUFBLE1BQ0gsU0FBU2xKLEdBQUc7QUFDVixRQUFBNkssR0FBRywyQkFBMkI3SyxDQUFDLEdBQUcsRUFBRSwyQkFBMkI7QUFBQSxVQUM3RCxPQUFPQTtBQUFBLFFBQ1QsQ0FBQyxHQUFHOUgsRUFBRSxJQUFJLGlCQUFpQjhILEtBQUssT0FBTyxTQUFTQSxFQUFFLFlBQVksZUFBZTtBQUFBLE1BQy9FO0FBQUEsSUFDRjtBQUNBLFdBQU87QUFBQSxNQUNMLFdBQVc0RyxFQUFFLEtBQUs7QUFBQSxNQUNsQixhQUFhO0FBQUEsTUFDYixXQUFXO0FBQUEsTUFDWCxXQUFXdUM7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUNGLEdBQUc0QixLQUFLak07QUFBQSxFQUNOLE9BQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxJQUNULHVCQUF1QjVHO0FBQUEsSUFDdkIsa0JBQWtCTTtBQUFBLElBQ2xCLGNBQWNDO0FBQUEsSUFDZCxlQUFlQztBQUFBLEVBQ2pCLE1BQU07QUFDSixRQUFJa0g7QUFDSixVQUFNLEVBQUUsZ0JBQWdCNUQsR0FBRyx3QkFBd0JDLEVBQUUsSUFBSXhELEdBQUc0RCxJQUFJaUwsRUFBRSxFQUFFLHdCQUF3QmtELEVBQUUsR0FBR3ZELElBQUksRUFBRSxrQkFBa0JpQyxJQUFJLE1BQU12RCxFQUFFc0IsQ0FBQyxHQUFHa0MsSUFBSUQsRUFBRSxTQUFTLFNBQVM5SixJQUFJOEgsR0FBRztBQUFBLE1BQ3RLLHdCQUF3QmpMO0FBQUEsTUFDeEIsZ0JBQWdCRDtBQUFBLE1BQ2hCLFNBQVNrTjtBQUFBLE1BQ1QsZUFBZXRKLElBQUl2RCxLQUFLLE9BQU8sU0FBU0EsRUFBRSxhQUFhLE9BQU8sU0FBU3VELEVBQUU7QUFBQSxJQUMzRSxDQUFDO0FBQ0QsTUFBRSwwQkFBMEI7QUFBQSxNQUMxQixnQkFBZ0IxSCxFQUFFO0FBQUEsTUFDbEIsU0FBU2dSO0FBQUEsTUFDVCx3QkFBd0JqTjtBQUFBLElBQzFCLENBQUM7QUFDRCxVQUFNK0QsSUFBSSxJQUFJLGdCQUFnQixHQUFHWixDQUFDLEdBQUdPLElBQUk7QUFBQSxNQUN2QyxTQUFTSztBQUFBLE1BQ1QsWUFBWSxFQUFFO0FBQUEsTUFDZCx1QkFBdUI5SDtBQUFBLE1BQ3ZCLGtCQUFrQk07QUFBQSxNQUNsQixrQkFBa0JOLEVBQUU7QUFBQSxNQUNwQixTQUFTZ1I7QUFBQSxNQUNULGFBQWFDO0FBQUEsTUFDYixTQUFTLEVBQUU7QUFBQSxNQUNYLGVBQWV6UTtBQUFBLElBQ2pCO0FBQ0EsV0FBTyxJQUFJLFFBQVEsQ0FBQ21ILEdBQUdDLE1BQU07QUFDM0IsTUFBQUUsRUFBRSxXQUFXLE1BQU07QUFDakIsUUFBQTRLLEdBQUcsMkJBQTJCLEdBQUc5SyxFQUFFLElBQUksTUFBTSwyQkFBMkIsQ0FBQztBQUFBLE1BQzNFLEdBQUdFLEVBQUUscUJBQXFCLE9BQU9ELE1BQU07QUFDckMsWUFBSTtBQUNGLGdCQUFNMkssR0FBRzNLLEdBQUdKLENBQUM7QUFBQSxRQUNmLFNBQVN5RSxHQUFHO0FBQ1YsVUFBQXRFLEVBQUVzRSxDQUFDO0FBQUEsUUFDTDtBQUFBLE1BQ0YsR0FBR3BFLEVBQUUsMEJBQTBCLE1BQU07QUFDbkMsY0FBTUQsSUFBSTtBQUFBLFVBQ1IsVUFBVVgsRUFBRTtBQUFBLFFBQ2Q7QUFDQSxRQUFBWSxFQUFFLCtCQUErQkQsQ0FBQztBQUFBLE1BQ3BDLEdBQUdDLEVBQUUsc0JBQXNCLE9BQU9ELE1BQU07QUFDdEMsVUFBRSw4QkFBOEI7QUFDaEMsWUFBSTtBQUNGLGdCQUFNcUUsSUFBSSxNQUFNdUcsR0FBRzVLLEdBQUdKLENBQUM7QUFDdkIsVUFBQUUsRUFBRXVFLENBQUM7QUFBQSxRQUNMLFNBQVNBLEdBQUc7QUFDVixVQUFBdEUsRUFBRXNFLENBQUM7QUFBQSxRQUNMO0FBQUEsTUFDRixHQUFHcEUsRUFBRSxNQUFNO0FBQUEsSUFDYixDQUFDLEVBQUUsTUFBTSxDQUFDSCxNQUFNO0FBQ2QsWUFBTWdMLEdBQUcsMkJBQTJCaEwsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCO0FBQUEsUUFDbkUsT0FBT0E7QUFBQSxNQUNULENBQUMsR0FBR0E7QUFBQSxJQUNOLENBQUM7QUFBQSxFQUNIO0FBQ0YsR0FBRyxFQUFFLE9BQU9tTCxJQUFJLE9BQU9DLEdBQUcsSUFBSWpNLEVBQUUsbUJBQW1CLEdBQUdrTSxLQUFLbk07QUFBQSxFQUN6RCxPQUFPLEVBQUUsU0FBUyxHQUFHLGVBQWU3RyxFQUFFLE1BQU07QUFDMUMsUUFBSWlSLEdBQUcvSjtBQUNQLElBQUE0TCxHQUFHLHFDQUFxQztBQUN4QyxVQUFNeFMsSUFBSTtBQUFBLE1BQ1IsV0FBV29PLEVBQUUsS0FBSztBQUFBLE1BQ2xCLGFBQWE7QUFBQSxNQUNiLFdBQVc7QUFBQSxNQUNYLFdBQVcsWUFBWTtBQUFBLE1BQ3ZCO0FBQUEsSUFDRixHQUFHbk8sSUFBSTZPLEVBQUUsRUFBRSx3QkFBd0JtRCxFQUFFO0FBQ3JDLFFBQUksQ0FBQ2hTO0FBQ0gsYUFBT0Q7QUFDVCxJQUFBd1MsR0FBRyxrQkFBa0J2UyxDQUFDO0FBQ3RCLFVBQU0sSUFBSUEsRUFBRTtBQUNaLFFBQUksQ0FBQyxFQUFFO0FBQ0wsYUFBT3dTLEdBQUcsbURBQW1ELEdBQUd6UztBQUNsRSxRQUFJd1MsR0FBRywyQkFBMkIsR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHNUwsS0FBSytKLElBQUksT0FBTyxXQUFXLE9BQU8sU0FBU0EsRUFBRSxhQUFhLFFBQVEvSixFQUFFO0FBQ3RILGFBQU82TCxHQUFHLG9DQUFvQyxHQUFHelM7QUFDbkQsSUFBQXdTLEdBQUcseUJBQXlCLE9BQU8sT0FBTyxRQUFRO0FBQ2xELFFBQUk7QUFDRixZQUFNaEwsSUFBSXNKLEdBQUc7QUFBQSxRQUNYLFNBQVM7QUFBQSxRQUNULG1CQUFtQixFQUFFO0FBQUEsUUFDckIsY0FBYyxFQUFFO0FBQUEsUUFDaEIsWUFBWSxFQUFFLDBCQUEwQjtBQUFBO0FBQUEsUUFFeEMsZ0JBQWdCO0FBQUEsVUFDZCxZQUFZO0FBQUEsVUFDWixVQUFVO0FBQUEsUUFDWjtBQUFBLE1BQ0YsQ0FBQyxHQUFHM0osSUFBSSxNQUFNNkosR0FBRyxFQUFFLFNBQVN4SixDQUFDLEdBQUcsRUFBRSxRQUFRSixFQUFFLElBQUksTUFBTUQsRUFBRSxhQUFhSyxDQUFDO0FBQ3RFLFVBQUksQ0FBQ0o7QUFDSCxlQUFPb0wsR0FBRywyQ0FBMkMsR0FBR3hTO0FBQUEsSUFDNUQsU0FBU3dILEdBQUc7QUFDVixhQUFPaUwsR0FBRywwQ0FBMENqTCxDQUFDLEdBQUd4SDtBQUFBLElBQzFEO0FBQ0EsVUFBTXdELElBQUksRUFBRSxrQkFBa0JDLElBQUksTUFBTTBKLEVBQUUzSixDQUFDLEdBQUdLLElBQUlKLEVBQUUsU0FBUyxTQUFTZ0wsSUFBSSxNQUFNZCxHQUFHbkssR0FBR0MsRUFBRSxPQUFPSSxHQUFHLE1BQU0sR0FBRzZNLElBQUksT0FBT2xKLE1BQU07QUFDMUgsVUFBSTtBQUNGLFFBQUFvSixFQUFFLHNCQUFzQixJQUFJO0FBQUEsVUFDMUIsU0FBUztBQUFBLFVBQ1QsdUJBQXVCM1E7QUFBQSxVQUN2QixrQkFBa0I4RCxHQUFHLEVBQUUsT0FBTztBQUFBLFVBQzlCLGVBQWVyRTtBQUFBLFVBQ2YsWUFBWTtBQUFBLFVBQ1osY0FBYztBQUFBLFlBQ1osR0FBRzhIO0FBQUEsWUFDSCxnQkFBZ0JpSDtBQUFBLFVBQ2xCO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSCxTQUFTdEgsR0FBRztBQUNWLFFBQUFzTCxHQUFHLDRCQUE0QnRMLENBQUMsR0FBRyxFQUFFLDRCQUE0QjtBQUFBLFVBQy9ELE9BQU9BO0FBQUEsUUFDVCxDQUFDLEdBQUd6SCxFQUFFLElBQUksaUJBQWlCeUgsS0FBSyxPQUFPLFNBQVNBLEVBQUUsWUFBWSxlQUFlO0FBQUEsTUFDL0U7QUFBQSxJQUNGO0FBQ0EsV0FBTztBQUFBLE1BQ0wsV0FBV2lILEVBQUUsS0FBSztBQUFBLE1BQ2xCLGFBQWE7QUFBQSxNQUNiLFdBQVc7QUFBQSxNQUNYLFdBQVdzQztBQUFBLElBQ2I7QUFBQSxFQUNGO0FBQ0YsR0FBR2lDLEtBQUtyTTtBQUFBLEVBQ04sT0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLElBQ1Qsa0JBQWtCNUc7QUFBQSxJQUNsQix1QkFBdUJNO0FBQUEsSUFDdkIsZUFBZUM7QUFBQSxJQUNmLGNBQWNDO0FBQUEsRUFDaEIsTUFBTTtBQUNKLFFBQUlpSCxHQUFHQyxHQUFHQyxHQUFHQztBQUNiLFVBQU0sRUFBRSxnQkFBZ0I5RCxHQUFHLHdCQUF3QkMsRUFBRSxJQUFJdkQsR0FBR3VPLElBQUlLLEVBQUUsRUFBRSx3QkFBd0JtRCxFQUFFLEVBQUUsVUFBVXZCLElBQUlJLEdBQUc7QUFBQSxNQUMvRyxTQUFTO0FBQUEsTUFDVCxtQkFBbUJyQyxFQUFFO0FBQUEsTUFDckIsY0FBY0EsRUFBRTtBQUFBLE1BQ2hCLFlBQVlBLEVBQUUsMEJBQTBCO0FBQUEsTUFDeEMsZ0JBQWdCakw7QUFBQSxNQUNoQix3QkFBd0JDO0FBQUEsSUFDMUIsQ0FBQyxHQUFHa04sSUFBSSxFQUFFLGtCQUFrQi9KLElBQUksTUFBTXVHLEVBQUV3RCxDQUFDO0FBQ3pDLE1BQUUsMkJBQTJCO0FBQUEsTUFDM0IsZ0JBQWdCM1EsRUFBRTtBQUFBLE1BQ2xCLFNBQVM0RztBQUFBLE1BQ1Qsd0JBQXdCbkQ7QUFBQSxJQUMxQixDQUFDO0FBQ0QsVUFBTStELElBQUksTUFBTXdKLEdBQUcsRUFBRSxTQUFTTixDQUFDO0FBQy9CLFFBQUk7QUFDRixZQUFNbkosSUFBSSxNQUFNQyxFQUFFLGdCQUFnQmtKLENBQUM7QUFDbkMsTUFBQThCLEdBQUcsMkJBQTJCakwsQ0FBQztBQUMvQixZQUFNcUUsSUFBSXNGLEdBQUd4UixHQUFHNkgsQ0FBQyxHQUFHc0UsSUFBSXFFLEdBQUd0RSxHQUFHM0wsRUFBRSxJQUFJLGlCQUFpQjtBQUNyRCxRQUFFLDRCQUE0QjtBQUFBLFFBQzVCLEdBQUc0TDtBQUFBLE1BQ0wsQ0FBQztBQUNELFlBQU0wRixLQUFLbkssS0FBS0QsSUFBSUksRUFBRSxzQkFBc0IsT0FBTyxTQUFTSixFQUFFLHFCQUFxQixPQUFPLFNBQVNDLEVBQUU7QUFDckcsVUFBSSxDQUFDbUs7QUFDSCxjQUFNLElBQUksTUFBTSwyQ0FBMkM7QUFDN0QsWUFBTUMsSUFBSyxNQUFNcEUsR0FBR3VELEdBQUc7QUFBQSxRQUNyQixrQkFBa0IzUSxFQUFFO0FBQUEsUUFDcEIseUJBQXlCQTtBQUFBLFFBQ3pCLG9CQUFvQjZMLEVBQUV0TCxFQUFFLEtBQUs7QUFBQSxRQUM3Qix5QkFBeUJzTCxFQUFFdEwsRUFBRSxVQUFVO0FBQUEsUUFDdkMsd0JBQXdCc0wsRUFBRXRMLEVBQUUsU0FBUztBQUFBLFFBQ3JDLHNCQUFzQjtBQUFBLFVBQ3BCLFVBQVVzTCxFQUFFdEwsRUFBRSxRQUFRO0FBQUEsVUFDdEIsU0FBU3NMLEVBQUV0TCxFQUFFLE9BQU87QUFBQSxRQUN0QjtBQUFBLE1BQ0YsQ0FBQztBQUNELE1BQUFpUyxHQUFHLCtCQUErQmhCLENBQUU7QUFDcEMsWUFBTUMsS0FBSSxNQUFNbEUsRUFBRW9ELEdBQUc7QUFBQSxRQUNuQixjQUFjL0osRUFBRTtBQUFBLFFBQ2hCLDZCQUE2QjtBQUFBLFVBQzNCLGtCQUFrQjVHLEVBQUU7QUFBQSxVQUNwQiw0QkFBNEI7QUFBQSxZQUMxQixnQkFBZ0I7QUFBQSxZQUNoQixXQUFXLE9BQU8sS0FBS3VSLENBQUM7QUFBQSxVQUMxQjtBQUFBLFFBQ0Y7QUFBQSxNQUNGLENBQUM7QUFDRCxVQUFJLEdBQUdqSyxLQUFLRCxJQUFJb0ssR0FBRSxvQkFBb0IsT0FBTyxTQUFTcEssRUFBRSxDQUFDLE1BQU0sUUFBZ0JDLEVBQUU7QUFDL0UsY0FBTSxJQUFJLE1BQU0sZ0JBQWdCO0FBQ2xDLGFBQU8wSCxHQUFHO0FBQUEsUUFDUixXQUFXO0FBQUEsUUFDWCxrQkFBa0IyQjtBQUFBLFFBQ2xCLHVCQUF1QjNRO0FBQUEsUUFDdkIsb0JBQW9CNkw7QUFBQSxRQUNwQixlQUFlNEY7QUFBQSxRQUNmLGlCQUFpQjtBQUFBLE1BQ25CLENBQUM7QUFBQSxJQUNILFNBQVNsSyxHQUFHO0FBQ1YsWUFBTWtMLEdBQUcsNEJBQTRCbEwsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCO0FBQUEsUUFDckUsT0FBT0E7QUFBQSxNQUNULENBQUMsR0FBRyxJQUFJLE9BQU9BLEtBQUssT0FBTyxTQUFTQSxFQUFFLFlBQVksZUFBZTtBQUFBLElBQ25FO0FBQUEsRUFDRjtBQUNGLEdBQUcsRUFBRSxPQUFPcUwsSUFBSSxPQUFPQyxHQUFHLElBQUlyTSxFQUFFLFdBQVcsR0FBR3NNLEtBQUtsVSxFQUFJLE9BQU87QUFBQSxFQUM1RCxxQkFBcUJBLEVBQUksT0FBTztBQUFBLEVBQ2hDLG9CQUFvQkEsRUFBSSxPQUFPO0FBQUEsRUFDL0Isb0JBQW9CQSxFQUFJLE9BQU87QUFDakMsQ0FBQyxHQUFHbVUsS0FBSyxDQUFDLE1BQU07QUFDZCxRQUFNclQsSUFBSW9ULEdBQUcsVUFBVSxDQUFDO0FBQ3hCLE1BQUksQ0FBQ3BULEVBQUUsU0FBUztBQUNkLFVBQU1NLElBQUksOEVBQThFQyxJQUFJLDBEQUEwRCxLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZLLFVBQU00UyxHQUFHNVMsQ0FBQyxHQUFHLElBQUksTUFBTUQsQ0FBQztBQUFBLEVBQzFCO0FBQ0EsU0FBT04sRUFBRTtBQUNYLEdBQUdzVCxLQUFLLENBQUMsTUFBTTtBQUNiLE1BQUk7QUFDRixVQUFNdFQsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUUsYUFBYSxJQUFJLFNBQVM7QUFDckQsUUFBSSxDQUFDQTtBQUNILFlBQU0sSUFBSSxNQUFNLDhDQUE4QztBQUNoRSxXQUFPa1QsR0FBRyx3Q0FBd0NsVCxDQUFDLEdBQUcsR0FBR0E7QUFBQSxFQUMzRCxTQUFTQSxHQUFHO0FBQ1YsVUFBTU0sSUFBSTtBQUNWLFVBQU02UyxHQUFHN1MsR0FBRyxrQkFBa0IsQ0FBQztBQUFBLFNBQzFCRixFQUFFSixDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksTUFBTU0sQ0FBQztBQUFBLEVBQzNCO0FBQ0YsR0FBR2lULEtBQUssQ0FBQyxHQUFHdlQsTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLGFBQWEsSUFBSUEsQ0FBQyxHQUFHd1QsS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLFNBQVMsRUFBRSxtQkFBbUIsT0FBTyxRQUFRQyxLQUFLLE9BQU8sR0FBR3pULE1BQU07QUFDM0ksUUFBTU0sSUFBSStTLEdBQUdyVCxDQUFDLEdBQUdPLElBQUksTUFBTW9QLEdBQUcsRUFBRSxLQUFLclAsRUFBRSxtQkFBbUIsR0FBRyxTQUFTLEVBQUUsQ0FBQztBQUN6RSxTQUFPO0FBQUEsSUFDTCxhQUFhO0FBQUEsTUFDWCxVQUFVZ1QsR0FBRy9TLEVBQUUsUUFBUSxFQUFFO0FBQUEsTUFDekIsZ0JBQWdCRCxFQUFFLGtCQUFrQjtBQUFBLE1BQ3BDLGNBQWNBLEVBQUUsa0JBQWtCO0FBQUEsSUFDcEM7QUFBQSxFQUNGO0FBQ0YsR0FBR29ULEtBQUt4VSxFQUFJLEtBQUssQ0FBQyxRQUFRLFFBQVEsV0FBVyxXQUFXLGFBQWEsU0FBUyxDQUFDLEdBQUd5VSxLQUFLelUsRUFBSSxLQUFLO0FBQUEsRUFDOUY7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsQ0FBQyxHQUFHLEVBQUUsT0FBTzBVLElBQUksT0FBT0MsR0FBRyxJQUFJL00sRUFBRSxVQUFVLEdBQUdnTixLQUFLNVUsRUFBSSxPQUFPO0FBQUEsRUFDNUQsaUJBQWlCQSxFQUFJLE9BQU87QUFBQSxFQUM1Qix1QkFBdUJBLEVBQUksT0FBTztBQUFBLEVBQ2xDLHdCQUF3QndVO0FBQUEsRUFDeEIsbUJBQW1CeFUsRUFBSSxPQUFPO0FBQ2hDLENBQUMsR0FBRyxLQUFLLDhFQUE4RTZVLEtBQUssQ0FBQyxNQUFNO0FBQ2pHLFFBQU0vVCxJQUFJOFQsR0FBRyxVQUFVLENBQUM7QUFDeEIsTUFBSSxDQUFDOVQsRUFBRTtBQUNMLFVBQU02VCxHQUFHLHlEQUF5RCxLQUFLLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLE1BQU0sRUFBRTtBQUN0RyxTQUFPN1QsRUFBRTtBQUNYLEdBQUdnVSxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxHQUFHQyxLQUFLLE1BQU0sY0FBYyxVQUFVLG1CQUFtQixPQUFPLFVBQVVDLEtBQUssWUFBWTtBQUNwSCxFQUFBTixHQUFHLGtDQUFrQztBQUNyQyxXQUFTLElBQUksR0FBRyxJQUFJLElBQUk7QUFDdEIsSUFBQUssR0FBRyxLQUFLLE1BQU10USxHQUFHLEdBQUc7QUFDdEIsTUFBSSxDQUFDc1EsR0FBRztBQUNOLFVBQU1KLEdBQUcsK0JBQStCLEdBQUcsSUFBSSxNQUFNLEVBQUU7QUFDekQsU0FBT0QsR0FBRywrQkFBK0IsR0FBRyxPQUFPLFNBQVM7QUFDOUQsR0FBR08sS0FBSyxDQUFDLE1BQU07QUFDYixRQUFNLEVBQUUsU0FBU25VLEdBQUcsUUFBUU0sR0FBRyxhQUFhQyxHQUFHLFdBQVdDLEdBQUcsTUFBTXNELEdBQUcsY0FBY0MsRUFBRSxJQUFJLEdBQUcsSUFBSWlRLEdBQUdoVSxFQUFFLGlCQUFpQixDQUFDO0FBQ3hILFNBQU80VCxHQUFHLDJDQUEyQyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU07QUFDakYsVUFBTSxJQUFJLE1BQU07QUFDZCxNQUFBQSxHQUFHLDRCQUE0QixHQUFHN1AsRUFBRSxvQkFBb0IsU0FBUytELENBQUMsR0FBR2hFLEVBQUUsT0FBTztBQUFBLElBQ2hGLEdBQUcsSUFBSSxDQUFDNEQsTUFBTTtBQUNaLE1BQUFtTSxHQUFHLGtDQUFrQ25NLENBQUMsR0FBRyxFQUFFLEVBQUUsUUFBUTNFLEVBQUUsU0FBUyxTQUFTLEVBQUUsQ0FBQztBQUFBLElBQzlFLEdBQUdtRSxJQUFJLENBQUNRLE1BQU07QUFDWixNQUFBbU0sR0FBRyxnQkFBZ0JuTSxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEzRSxFQUFFLFNBQVMsU0FBUyxFQUFFLENBQUM7QUFBQSxJQUM1RCxHQUFHK0UsSUFBSSxNQUFNO0FBQ1gsUUFBRSxFQUFFLFFBQVEvRSxFQUFFLFdBQVcsU0FBUyxFQUFFLENBQUM7QUFBQSxJQUN2QztBQUNBLElBQUFnQixFQUFFLGlCQUFpQixTQUFTK0QsQ0FBQztBQUM3QixVQUFNTCxJQUFJLENBQUNDLEdBQUdDLEdBQUdDLE1BQU07QUFDckIsTUFBQTlELEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxRQUFRZixFQUFFLFNBQVMsbUJBQW1CMkUsR0FBRyxTQUFTLEVBQUUsQ0FBQztBQUFBLElBQ3ZFO0FBQ0EsSUFBQXdNLEdBQUcsRUFBRTtBQUFBLE1BQ0gsQ0FBQ3hNLE1BQU1BLEVBQUU7QUFBQSxRQUNQLFdBQVcxSCxFQUFFLHFCQUFxQjtBQUFBLFFBQ2xDLGFBQWFBLEVBQUUsc0JBQXNCO0FBQUEsUUFDckMsUUFBUU07QUFBQSxRQUNSLGFBQWFDO0FBQUEsUUFDYixxQkFBcUJrSDtBQUFBLFFBQ3JCLGlCQUFpQjtBQUFBLFFBQ2pCLFNBQVNQO0FBQUEsTUFDWCxDQUFDO0FBQUEsSUFDSCxFQUFFLEtBQUssQ0FBQ1EsTUFBTTtBQUNaLE1BQUFBLEVBQUUsaUJBQWlCLEdBQUcsRUFBRSxxQkFBcUIsS0FBSyxDQUFDLEVBQUUsTUFBTWxILENBQUM7QUFBQSxJQUM5RCxDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0gsR0FBRzRULEtBQUssQ0FBQyxNQUFNO0FBQ2IsUUFBTXBVLElBQUksVUFBVSxhQUFhLFVBQVUsVUFBVSxTQUFTLFVBQVUsVUFBVSxDQUFDLElBQUksVUFBVSxVQUFVTSxJQUFJLEtBQUtOLEdBQUdPLElBQUlvVCxHQUFHLFVBQVVyVCxDQUFDO0FBQ3pJLFNBQU9DLEVBQUUsV0FBV3FULEdBQUcsb0JBQW9CclQsRUFBRSxJQUFJLEVBQUUsR0FBR0EsRUFBRSxTQUFTc1QsR0FBRyw0QkFBNEJ2VCxDQUFDLHdCQUF3QixHQUFHO0FBQzlILEdBQUcrVCxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU8sU0FBUyxFQUFFLGlCQUFpQixPQUFPLFFBQVFDLEtBQUssT0FBTyxHQUFHdFUsR0FBR00sTUFBTTtBQUM3RixRQUFNQyxJQUFJd1QsR0FBRy9ULENBQUMsR0FBR1EsSUFBSSxTQUFTLGNBQWMsS0FBSztBQUNqRCxFQUFBQSxFQUFFLEtBQUs7QUFDUCxRQUFNLEVBQUUsTUFBTXNELEdBQUcsUUFBUUMsR0FBRyxjQUFjLEVBQUUsSUFBSSxHQUFHLG9CQUFvQjtBQUN2RSxFQUFBQSxFQUFFLFlBQVl2RCxDQUFDO0FBQ2YsUUFBTSxJQUFJLE1BQU0yVCxHQUFHO0FBQUEsSUFDakIsU0FBUzVUO0FBQUEsSUFDVCxRQUFRNlQsR0FBRzlULENBQUM7QUFBQSxJQUNaLGFBQWE7QUFBQSxJQUNiLFdBQVdFO0FBQUEsSUFDWCxNQUFNc0Q7QUFBQSxJQUNOLGNBQWM7QUFBQSxFQUNoQixDQUFDO0FBQ0QsTUFBSSxFQUFFLFFBQVEsR0FBRyxFQUFFLFdBQVdmLEVBQUU7QUFDOUIsVUFBTSxJQUFJLE1BQU0seUJBQXlCO0FBQzNDLE1BQUksRUFBRSxXQUFXQSxFQUFFO0FBQ2pCLFVBQU0sSUFBSSxNQUFNLDRCQUE0QjtBQUM5QyxNQUFJLEVBQUUsV0FBV0EsRUFBRSxTQUFTO0FBQzFCLFFBQUksQ0FBQyxFQUFFO0FBQ0wsWUFBTSxJQUFJLE1BQU0sb0VBQW9FO0FBQ3RGLFdBQU82USxHQUFHLDRCQUE0QixHQUFHO0FBQUEsTUFDdkMsYUFBYTtBQUFBLFFBQ1gsb0JBQW9CLEVBQUUsa0JBQWtCO0FBQUEsTUFDMUM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNFLElBQUF2SCxHQUFHLEVBQUUsTUFBTTtBQUNmLEdBQUcsRUFBRSxPQUFPa0ksR0FBRyxPQUFPQyxHQUFHLElBQUkxTixFQUFFLFdBQVcsR0FBRyxFQUFFLE9BQU8yTixHQUFHLElBQUkzTixFQUFFLFdBQVc7QUFDMUU1SCxFQUFJO0FBQUEsRUFDRkEsRUFBSSxPQUFPO0FBQUEsSUFDVCxvQkFBb0JBLEVBQUksT0FBTztBQUFBLEVBQ2pDLENBQUM7QUFDSCxFQUFFLE9BQU8sQ0FBQztBQUNWLE1BQU13VixLQUFLOU47QUFBQSxFQUNULE9BQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxJQUNULHVCQUF1QjVHO0FBQUEsSUFDdkIsa0JBQWtCTTtBQUFBLElBQ2xCLGVBQWVDO0FBQUEsSUFDZixjQUFjQztBQUFBLEVBQ2hCLE1BQU07QUFDSixRQUFJd1E7QUFDSixJQUFBdUQsRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUJ2VSxFQUFFLENBQUM7QUFDN0QsVUFBTThELElBQUksRUFBRSxrQkFBa0JDLElBQUksTUFBTTBKLEVBQUUzSixDQUFDO0FBQzNDLE1BQUUsMEJBQTBCO0FBQUEsTUFDMUIsR0FBRzlEO0FBQUEsTUFDSCxTQUFTK0Q7QUFBQSxJQUNYLENBQUMsR0FBR3dRLEVBQUUsMkNBQTJDeFEsRUFBRSxJQUFJLEdBQUc7QUFDMUQsVUFBTUksSUFBSXFNLEdBQUdsUSxHQUFHQyxFQUFFLElBQUksaUJBQWlCO0FBQ3ZDLE1BQUUsNEJBQTRCO0FBQUEsTUFDNUIsR0FBRzREO0FBQUEsSUFDTCxDQUFDO0FBQ0QsVUFBTTRLLElBQUk7QUFBQSxNQUNSLFlBQVksRUFBRTtBQUFBLE1BQ2QseUJBQXlCL087QUFBQSxNQUN6QixxQkFBcUJtRTtBQUFBLE1BQ3JCLGdCQUFnQjtBQUFBLFFBQ2QsUUFBUSxPQUFPLFNBQVM7QUFBQSxNQUMxQjtBQUFBLE1BQ0Esa0JBQWtCM0QsRUFBRTtBQUFBLElBQ3RCO0FBQ0EsUUFBSTtBQUNGLE1BQUErVCxFQUFFLDJDQUEyQyxFQUFFLGlCQUFpQixHQUFHO0FBQ25FLFlBQU0sSUFBSSxNQUFNckcsR0FBRzFOLEVBQUUsdUJBQXVCO0FBQUEsUUFDMUMsWUFBWSxFQUFFO0FBQUEsTUFDaEIsQ0FBQztBQUNELFVBQUlpUSxHQUFHLEdBQUdsUSxFQUFFLElBQUksaUJBQWlCLEdBQUd3RCxFQUFFLFNBQVMsU0FBUztBQUN0RCxRQUFBd1EsRUFBRSw4Q0FBOEN4USxFQUFFLEtBQUssR0FBRztBQUMxRCxjQUFNbUQsSUFBSSxNQUFNa0gsR0FBR3RLLEdBQUdpTCxDQUFDO0FBQ3ZCLGVBQU93RixFQUFFLDBDQUEwQ3JOLEVBQUUsaUJBQWlCLEdBQUcsR0FBRyxFQUFFLE1BQU0sU0FBUyxRQUFRQSxFQUFFO0FBQUEsTUFDekcsT0FBTztBQUNMLFFBQUFxTixFQUFFLG9FQUFvRSxFQUFFLGlCQUFpQixHQUFHO0FBQzVGLGNBQU1yTixJQUFJLE1BQU1pSCxHQUFHckssR0FBR2lMLENBQUM7QUFDdkIsZUFBT3dGLEVBQUUsb0NBQW9DLEdBQUcsRUFBRSxNQUFNLFlBQVksUUFBUXJOLEVBQUU7QUFBQSxNQUNoRjtBQUFBLElBQ0YsU0FBUyxHQUFHO0FBQ1YsVUFBSSxhQUFhLE1BQU0sRUFBRSxxQkFBcUIsU0FBUyxjQUFjLEdBQUc7QUFDdEUsUUFBQXFOLEVBQUUsdURBQXVELEdBQUdBLEVBQUUsd0NBQXdDLEVBQUUsU0FBUyxPQUFPLEdBQUcsRUFBRSxnQkFBZ0I7QUFBQSxVQUMzSSxHQUFHdlU7QUFBQSxVQUNILEdBQUcsRUFBRSxTQUFTO0FBQUEsUUFDaEIsQ0FBQztBQUNELGNBQU1rSCxJQUFJc00sR0FBRyxFQUFFLFNBQVMsT0FBTztBQUMvQixZQUFJdE0sR0FBRztBQUNMLFVBQUFxTixFQUFFLDREQUE0RDtBQUM5RCxnQkFBTTFNLElBQUksTUFBTTRMLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxPQUFPO0FBQ2hELFVBQUExRSxFQUFFLGVBQWUsU0FBU2xIO0FBQUEsUUFDNUI7QUFDQSxZQUFJcUksR0FBRyxFQUFFLFNBQVMsT0FBTyxHQUFHO0FBQzFCLFVBQUFxRSxFQUFFLGtFQUFrRTtBQUNwRSxnQkFBTTFNLElBQUksTUFBTXVJLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxPQUFPO0FBQ2hELFVBQUFyQixFQUFFLGVBQWUsWUFBWWxIO0FBQUEsUUFDL0I7QUFDQSxZQUFJd00sR0FBRyxFQUFFLFNBQVMsT0FBTyxHQUFHO0FBQzFCLFVBQUFFLEVBQUUsMERBQTBEO0FBQzVELGdCQUFNMU0sSUFBSSxNQUFNeU07QUFBQSxZQUNkaFUsRUFBRU8sRUFBRSxPQUFPO0FBQUEsWUFDWCxFQUFFLFNBQVM7QUFBQSxZQUNYa0QsRUFBRTtBQUFBLFVBQ0o7QUFDQSxVQUFBZ0wsRUFBRSxlQUFlLFFBQVFsSDtBQUFBLFFBQzNCO0FBQ0EsY0FBTSxJQUFJLE1BQU04RixHQUFHN0osR0FBR2lMLENBQUM7QUFDdkIsUUFBQXdGLEVBQUUsMEJBQTBCLENBQUM7QUFDN0IsY0FBTTVNLE1BQU1xSixJQUFJLEVBQUUsU0FBUyxZQUFZLE9BQU8sU0FBU0EsRUFBRSx3QkFBd0IsT0FBTztBQUN4RixRQUFBOUosSUFBSXFOLEVBQUUsaUVBQWlFLElBQUk1TSxLQUFLNE0sRUFBRSx5QkFBeUIsR0FBRyxNQUFNSSxHQUFHLENBQUMsTUFBTUosRUFBRSx5QkFBeUIsR0FBRyxNQUFNSyxHQUFHLEdBQUcsRUFBRSxPQUFPO0FBQ2pMLGNBQU1oTixJQUFJLEVBQUU7QUFDWixZQUFJN0QsRUFBRSxTQUFTLFNBQVM7QUFDdEIsVUFBQXdRLEVBQUUsd0NBQXdDM00sQ0FBQyxHQUFHO0FBQzlDLGdCQUFNQyxJQUFJLE1BQU1nRyxFQUFFL0osR0FBRztBQUFBLFlBQ25CLGNBQWNDLEVBQUU7QUFBQSxZQUNoQixtQkFBbUI2RDtBQUFBLFVBQ3JCLENBQUM7QUFDRCxVQUFBMk0sRUFBRSxrREFBa0QxTSxDQUFDO0FBQ3JELGdCQUFNLElBQUlzSCxHQUFHdEgsQ0FBQztBQUNkLGlCQUFPME0sRUFBRSwwQ0FBMEMsRUFBRSxpQkFBaUIsR0FBRyxHQUFHLEVBQUUsTUFBTSxTQUFTLFFBQVEsRUFBRTtBQUFBLFFBQ3pHLE9BQU87QUFDTCxVQUFBQSxFQUFFLHdDQUF3QzVNLElBQUksV0FBVyxLQUFLLEdBQUc7QUFDakUsZ0JBQU1FLElBQUksTUFBTXNHLEdBQUdySyxHQUFHO0FBQUEsWUFDcEIsR0FBR2lMO0FBQUEsWUFDSCxtQkFBbUJuSDtBQUFBLFlBQ25CLDJCQUEyQkQ7QUFBQSxVQUM3QixDQUFDO0FBQ0QsaUJBQU80TSxFQUFFLG9DQUFvQyxHQUFHLEVBQUUsTUFBTSxZQUFZLFFBQVExTSxFQUFFO0FBQUEsUUFDaEY7QUFBQSxNQUNGO0FBQ0EsWUFBTTJNLEdBQUcsdUNBQXVDLEdBQUdBLEdBQUcsQ0FBQyxHQUFHO0FBQUEsSUFDNUQ7QUFBQSxFQUNGO0FBQ0YsR0FBR0ssS0FBSyxDQUFDLE1BQU07QUFDYixRQUFNN1UsSUFBSSxFQUFFLHNCQUFzQixLQUFLLENBQUNNLE1BQU1BLEVBQUUsU0FBUyxZQUFZO0FBQ3JFLE1BQUksQ0FBQ047QUFDSCxVQUFNLElBQUksTUFBTSw0QkFBNEI7QUFDOUMsU0FBT3NELEdBQUcsTUFBTXRELENBQUM7QUFDbkIsR0FBRzhVLEtBQUssQ0FBQyw2QkFBNkIsT0FBTyxHQUFHQyxLQUFLLENBQUMsTUFBTTtBQUMxRCxRQUFNL1UsSUFBSSxFQUFFLHNCQUFzQixLQUFLLENBQUNNLE1BQU13VSxHQUFHLFNBQVN4VSxFQUFFLElBQUksQ0FBQztBQUNqRSxNQUFJLENBQUNOO0FBQ0gsVUFBTSxJQUFJLE1BQU0sNEJBQTRCO0FBQzlDLFNBQU9pRCxHQUFHLE1BQU1qRCxDQUFDO0FBQ25CLEdBQUc0VSxLQUFLLE9BQU8sR0FBRzVVLE1BQU07QUFDdEIsUUFBTU0sSUFBSXlVLEdBQUcsQ0FBQztBQUNkLE1BQUl6VSxFQUFFLGlCQUFpQixnQkFBZ0I7QUFDckMsSUFBQWlVLEVBQUUsbUNBQW1DLEdBQUcsRUFBRSxjQUFjO0FBQ3hEO0FBQUEsRUFDRjtBQUNBLEVBQUFBLEVBQUUsaUNBQWlDalUsRUFBRSxZQUFZLEdBQUcsR0FBRyxFQUFFLGdCQUFnQjtBQUFBLElBQ3ZFLEdBQUdBO0FBQUEsRUFDTCxDQUFDO0FBQ0QsUUFBTSxFQUFFLFFBQVFDLEVBQUUsSUFBSSxNQUFNbVAsR0FBRyxFQUFFLEtBQUtwUCxFQUFFLGNBQWMsU0FBU04sRUFBRSxDQUFDO0FBQ2xFLE1BQUl1VSxFQUFFLHlDQUF5Q2hVLENBQUMsR0FBRyxHQUFHQSxNQUFNd0MsRUFBRTtBQUM1RCxVQUFNLEVBQUUsZUFBZSxHQUFHLElBQUksTUFBTSw0QkFBNEI7QUFDbEUsTUFBSXhDLE1BQU13QyxFQUFFO0FBQ1YsVUFBTSxFQUFFLGFBQWEsR0FBRyxJQUFJLE1BQU0seUJBQXlCO0FBQy9ELEdBQUc0UixLQUFLLE9BQU8sTUFBTTtBQUNuQixRQUFNM1UsSUFBSTZVLEdBQUcsQ0FBQztBQUNkLElBQUUsdUJBQXVCO0FBQUEsSUFDdkIsR0FBRzdVO0FBQUEsRUFDTCxDQUFDLEdBQUd5VSxHQUFHLDJDQUEyQ3pVLEVBQUUsY0FBYyxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNa0UsR0FBR2xFLENBQUMsR0FBRyxFQUFFLHFCQUFxQixHQUFHeVUsR0FBRywwQ0FBMEM7QUFDaEwsR0FBR08sS0FBSyxHQUFHQyxLQUFLL1YsRUFBSSxPQUFPO0FBQUEsRUFDekIsZ0JBQWdCQSxFQUFJLFFBQVEsTUFBTTtBQUFBLEVBQ2xDLFVBQVVBLEVBQUksUUFBUSxRQUFRO0FBQUEsRUFDOUIsVUFBVUEsRUFBSSxPQUFPO0FBQUEsSUFDbkIsYUFBYUEsRUFBSSxPQUFPO0FBQUEsSUFDeEIsV0FBV0EsRUFBSSxPQUFPO0FBQUEsSUFDdEIsV0FBV0EsRUFBSSxPQUFPO0FBQUEsSUFDdEIsc0JBQXNCQSxFQUFJLE1BQU1BLEVBQUksT0FBTyxDQUFDO0FBQUEsSUFDNUMsYUFBYUEsRUFBSSxPQUFPO0FBQUEsRUFDMUIsQ0FBQztBQUNILENBQUMsR0FBRyxFQUFFLE9BQU9nVyxHQUFHLE9BQU9DLEdBQUcsSUFBSXJPLEVBQUUsYUFBYSxHQUFHc08sS0FBS2xXLEVBQUksT0FBTztBQUFBLEVBQzlELGVBQWV3QjtBQUFBLEVBQ2YsY0FBY0E7QUFBQSxFQUNkLFdBQVdBO0FBQUEsRUFDWCxDQUFDRyxFQUFFLGNBQWMsR0FBR0Y7QUFDdEIsQ0FBQyxHQUFHMFUsS0FBS25XLEVBQUksT0FBTztBQUFBLEVBQ2xCLGVBQWV5QjtBQUFBLEVBQ2YsY0FBY0E7QUFBQSxFQUNkLFdBQVdBO0FBQUEsRUFDWCxDQUFDRSxFQUFFLGNBQWMsR0FBR0Y7QUFDdEIsQ0FBQyxHQUFHMlUsS0FBSyxDQUFDLEdBQUd0VixHQUFHTSxHQUFHQyxNQUFNO0FBQ3ZCLFFBQU1DLElBQUlGLEVBQUUsVUFBVSxDQUFDO0FBQ3ZCLE1BQUksQ0FBQ0UsRUFBRSxTQUFTO0FBQ2QsVUFBTXNELElBQUl0RCxFQUFFLE1BQU0sT0FBTyxHQUFHdUQsSUFBSVYsR0FBR1MsQ0FBQztBQUNwQyxlQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTyxRQUFRQyxDQUFDO0FBQ25DLE1BQUEvRCxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQ1gsVUFBTW1WLEdBQUcsZ0RBQWdEcFIsQ0FBQyxHQUFHLElBQUksTUFBTSw4Q0FBOEM7QUFBQSxFQUN2SDtBQUNBLFNBQU92RCxFQUFFO0FBQ1gsR0FBRytVLEtBQUsxTztBQUFBLEVBQ04sT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNO0FBQ3hCLElBQUFxTyxFQUFFLG1EQUFtRDtBQUNyRCxVQUFNbFYsSUFBSW9QLEVBQUUsRUFBRSx3QkFBd0I2RixFQUFFO0FBQ3hDLElBQUFDLEVBQUUsMEJBQTBCLEtBQUssVUFBVWxWLENBQUMsQ0FBQyxFQUFFLEdBQUdrVixFQUFFLDhCQUE4QjtBQUNsRixVQUFNNVUsSUFBSSxNQUFNbU4sRUFBRSxFQUFFLGdCQUFnQixHQUFHbE4sSUFBSSxNQUFNaU8sR0FBRyxFQUFFLGtCQUFrQjtBQUFBLE1BQ3RFLHlCQUF5QnhPO0FBQUEsSUFDM0IsQ0FBQztBQUNELFFBQUlNLEVBQUUsU0FBUyxXQUFXLENBQUNOLEVBQUUsU0FBUyxxQkFBcUIsU0FBU00sRUFBRSxRQUFRO0FBQzVFLFlBQU07QUFBQSxRQUNKLFlBQVlBLEVBQUUsUUFBUSw4Q0FBOENOLEVBQUUsU0FBUyxvQkFBb0I7QUFBQSxNQUNyRztBQUNGLFFBQUksQ0FBQ08sS0FBSyxDQUFDQSxFQUFFO0FBQ1gsWUFBTSxNQUFNLCtDQUErQztBQUM3RCxVQUFNQyxJQUFJRCxFQUFFO0FBQ1osUUFBSXVEO0FBQ0osSUFBQXhELEVBQUUsU0FBUyxVQUFVd0QsSUFBSWtSLEtBQUtsUixJQUFJeEQsRUFBRSxvQkFBb0JFLEVBQUU7QUFDMUQsVUFBTXVELElBQUlELEdBQUcsSUFBSXRELEVBQUUsc0JBQXNCLElBQUlyQixHQUFHLEdBQUcsSUFBSTtBQUFBLE1BQ3JELGtCQUFrQjRFO0FBQUEsTUFDbEIsaUNBQWlDO0FBQUEsTUFDakMsZUFBZTtBQUFBLElBQ2pCLEdBQUcsSUFBSTtBQUFBLE1BQ0wsUUFBUS9ELEVBQUUsU0FBUztBQUFBLE1BQ25CLFVBQVVBLEVBQUUsU0FBUztBQUFBLE1BQ3JCLFlBQVlBLEVBQUUsU0FBUztBQUFBLE1BQ3ZCLGFBQWFBLEVBQUUsU0FBUztBQUFBLElBQzFCO0FBQ0EsV0FBTztBQUFBLE1BQ0wsYUFBYTtBQUFBLE1BQ2IsYUFBYTtBQUFBLE1BQ2Isc0JBQXNCO0FBQUEsSUFDeEI7QUFBQSxFQUNGO0FBQ0YsR0FBR3dWLEtBQUs1TztBQUFBLEVBQ04sT0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLElBQ1QsdUJBQXVCNUc7QUFBQSxJQUN2QixrQkFBa0JNO0FBQUEsSUFDbEIsZUFBZUM7QUFBQSxJQUNmLGNBQWNDO0FBQUEsRUFDaEIsTUFBTTtBQUNKLElBQUEwVSxFQUFFLHNCQUFzQixHQUFHQSxFQUFFLFdBQVcsQ0FBQyxHQUFHQSxFQUFFLHlCQUF5QmxWLENBQUMsR0FBR2tWLEVBQUUsb0JBQW9CNVUsQ0FBQyxHQUFHNFUsRUFBRSxpQkFBaUIzVSxDQUFDLEdBQUcyVSxFQUFFLGdCQUFnQjFVLENBQUM7QUFDL0ksUUFBSXNEO0FBQ0osSUFBQXRELEtBQUssUUFBUUEsRUFBRSxVQUFVc0QsSUFBSXdSO0FBQUEsTUFDM0JoVjtBQUFBLE1BQ0FDLEVBQUUsSUFBSTtBQUFBLE1BQ042VTtBQUFBLElBQ0YsSUFBSXRSLElBQUl3UjtBQUFBLE1BQ05oVjtBQUFBLE1BQ0FDLEVBQUUsSUFBSTtBQUFBLE1BQ044VTtBQUFBLElBQ0Y7QUFDQSxVQUFNdFIsSUFBSSxFQUFFLGtCQUFrQixJQUFJLE1BQU0wSixFQUFFLEVBQUUsZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLFNBQVMsU0FBUyxJQUFJLE1BQU1DLEdBQUcsRUFBRSxrQkFBa0I7QUFBQSxNQUN0SCx5QkFBeUIxTjtBQUFBLE1BQ3pCLGtCQUFrQkEsRUFBRTtBQUFBLE1BQ3BCLG9CQUFvQjhELEVBQUU7QUFBQSxNQUN0Qix5QkFBeUJBLEVBQUU7QUFBQSxNQUMzQix3QkFBd0JBLEVBQUU7QUFBQSxNQUMxQixvQkFBb0I7QUFBQSxNQUNwQiwwQkFBMEIsSUFBSTtBQUFBO0FBQUEsUUFFNUIsWUFBWSxFQUFFO0FBQUEsUUFDZCw2QkFBNkIsRUFBRTtBQUFBLE1BQ2pDLElBQUk7QUFBQSxJQUNOLENBQUM7QUFDRCxRQUFJLENBQUN0RDtBQUNILFlBQU0sTUFBTSx1REFBdUQ7QUFDckUsVUFBTSxJQUFJLE1BQU1xTixFQUFFOUosR0FBRztBQUFBLE1BQ25CLGNBQWMsRUFBRTtBQUFBLE1BQ2hCLGFBQWF2RCxFQUFFLFVBQVVBLEVBQUUsTUFBTSxjQUFjLGtCQUFrQjtBQUFBLE1BQ2pFLHFCQUFxQixFQUFFLFNBQVMsVUFBVSxFQUFFLHNCQUFzQjtBQUFBLE1BQ2xFLDZCQUE2QjtBQUFBLFFBQzNCLGVBQWVBLEVBQUUsVUFBVUEsRUFBRSxXQUFXO0FBQUEsUUFDeEMsWUFBWUEsRUFBRSxVQUFVQSxFQUFFLFFBQVE7QUFBQSxRQUNsQyxzQkFBc0JBLEVBQUUsVUFBVSxTQUFTQSxFQUFFO0FBQUEsUUFDN0MsaUJBQWlCQSxFQUFFLFVBQVUsU0FBU0EsRUFBRTtBQUFBLFFBQ3hDLGNBQWNBLEVBQUU7QUFBQSxNQUNsQjtBQUFBLElBQ0YsQ0FBQztBQUNELFFBQUkwVSxFQUFFLG1CQUFtQixDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsU0FBUztBQUNqRCxNQUFBQSxFQUFFLHdCQUF3QixHQUFHQSxFQUFFLGtEQUFrRCxDQUFDO0FBQ2xGLFlBQU1oTyxJQUFJaUksR0FBRyxDQUFDO0FBQ2QsYUFBTytGLEVBQUUsMENBQTBDaE8sRUFBRSxpQkFBaUIsR0FBRyxHQUFHLEVBQUUsTUFBTSxTQUFTLFFBQVFBLEVBQUU7QUFBQSxJQUN6RyxPQUFPO0FBQ0wsVUFBSWdPLEVBQUUsbUJBQW1CLEdBQUcsQ0FBQyxFQUFFO0FBQzdCLGNBQU1DLEdBQUcsbURBQW1ELENBQUMsR0FBRyxJQUFJLE1BQU0sZ0VBQWdFO0FBQzVJLGFBQU87QUFBQSxRQUNMLE1BQU07QUFBQSxRQUNOLFFBQVEsRUFBRTtBQUFBLE1BQ1o7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLEdBQUcsRUFBRSxPQUFPTSxJQUFHLE9BQU9DLEdBQUcsSUFBSTVPLEVBQUUsZUFBZSxHQUFHNk8sS0FBS3pXLEVBQUksT0FBTztBQUFBLEVBQy9ELGdCQUFnQkEsRUFBSSxRQUFRLFFBQVE7QUFBQSxFQUNwQyxVQUFVQSxFQUFJLFFBQVEsUUFBUTtBQUNoQyxDQUFDO0FBQ0RBLEVBQUk7QUFBQSxFQUNGQSxFQUFJLE9BQU87QUFBQSxJQUNULG1CQUFtQkEsRUFBSSxPQUFPO0FBQUEsSUFDOUIsY0FBY0EsRUFBSSxPQUFPO0FBQUEsRUFDM0IsQ0FBQztBQUNILEVBQUUsT0FBTyxDQUFDO0FBQ1YsTUFBTTBXLEtBQUtoUDtBQUFBLEVBQ1QsT0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLElBQ1QsdUJBQXVCNUc7QUFBQSxJQUN2QixrQkFBa0JNO0FBQUEsSUFDbEIsZUFBZUM7QUFBQSxJQUNmLGNBQWNDO0FBQUEsRUFDaEIsTUFBTTtBQUNKLFFBQUl1UixHQUFHOEQ7QUFDUCxJQUFBSixHQUFFLCtCQUErQjtBQUNqQyxVQUFNM1IsSUFBSSxFQUFFLGtCQUFrQkMsSUFBSSxNQUFNMEosRUFBRTNKLENBQUM7QUFDM0MsSUFBQTJSLEdBQUUsa0JBQWtCO0FBQ3BCLFVBQU10UixJQUFJd1IsR0FBRyxNQUFNM1YsQ0FBQztBQUNwQixJQUFBeVYsR0FBRSxrQ0FBa0M7QUFDcEMsVUFBTTFHLElBQUl2TyxLQUFLLE9BQU8sU0FBU0EsRUFBRSxVQUFVd1EsSUFBSVI7QUFBQSxNQUM3Q2xRO0FBQUEsTUFDQUMsRUFBRSxJQUFJO0FBQUEsTUFDTndPLEtBQUssT0FBTyxTQUFTQSxFQUFFO0FBQUEsSUFDekIsR0FBR2tDLElBQUk1QixHQUFHMkIsQ0FBQztBQUNYLElBQUF5RSxHQUFFLGtDQUFrQzFSLEVBQUUsSUFBSSxFQUFFO0FBQzVDLFVBQU1tRCxJQUFJL0gsR0FBRyxHQUFHLElBQUk0RSxFQUFFLFNBQVMsU0FBUzBELElBQUk7QUFBQSxNQUMxQyxrQkFBa0J0RCxFQUFFO0FBQUEsTUFDcEIseUJBQXlCQTtBQUFBLE1BQ3pCLG9CQUFvQjtBQUFBLE1BQ3BCLDBCQUEwQixJQUFJO0FBQUE7QUFBQSxRQUU1QixZQUFZSixFQUFFO0FBQUEsUUFDZCw2QkFBNkJBLEVBQUU7QUFBQSxNQUNqQyxJQUFJO0FBQUEsTUFDSiw2QkFBNkI7QUFBQSxRQUMzQiwwQkFBMEIsQ0FBQyxHQUFHZ08sSUFBSXZSLEtBQUssT0FBTyxTQUFTQSxFQUFFLGFBQWEsUUFBUXVSLEVBQUU7QUFBQSxRQUNoRixrQ0FBa0M3SztBQUFBLE1BQ3BDO0FBQUEsTUFDQSxHQUFHK0o7QUFBQSxJQUNMLEdBQUd2SixJQUFJLElBQUksSUFBSSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsU0FBUyxHQUFHQyxJQUFJLEtBQUssS0FBSyxVQUFVRixDQUFDLENBQUMsR0FBR0csSUFBSSxJQUFJLGdCQUFnQjtBQUFBLE1BQ25ILElBQUk3RCxFQUFFO0FBQUEsTUFDTixHQUFHNEQ7QUFBQSxJQUNMLENBQUMsR0FBR0UsSUFBSSxHQUFHSCxDQUFDLElBQUlFLEVBQUUsU0FBUyxDQUFDO0FBQzVCLFNBQUtpTyxJQUFLclYsS0FBSyxPQUFPLFNBQVNBLEVBQUUsYUFBYSxRQUFRcVYsRUFBRztBQUN2RCxZQUFNSixHQUFFLHNDQUFzQyxHQUFHLE9BQU8sU0FBUyxPQUFPNU4sR0FBRyxNQUFNbEUsR0FBRyxLQUFLLEdBQUcsR0FBRyxJQUFJLE1BQU0sc0VBQXNFO0FBQ2pMLElBQUE4UixHQUFFLG1DQUFtQyxHQUFHQSxHQUFFLDBCQUEwQjtBQUNwRSxVQUFNdkosSUFBSSxNQUFNMkQ7QUFBQSxNQUNkO0FBQUEsTUFDQS9MO0FBQUEsTUFDQW9EO0FBQUEsTUFDQVc7QUFBQSxJQUNGO0FBQ0EsSUFBQTROLEdBQUUsc0JBQXNCdkosQ0FBQztBQUN6QixVQUFNQyxLQUFJbUgsR0FBR3BILEVBQUUsSUFBSSxHQUFHMkYsS0FBSTBCLEdBQUdySCxFQUFFLE1BQU0sTUFBTTtBQUMzQyxRQUFJLENBQUMyRjtBQUNILFlBQU02RCxHQUFHLGtEQUFrRHhKLEVBQUUsSUFBSSxHQUFHLElBQUksTUFBTSwrQ0FBK0M7QUFDL0gsSUFBQXVKLEdBQUUsMENBQTBDdEosRUFBQyxFQUFFO0FBQy9DLFVBQU0yRixLQUFLLE1BQU1qRSxFQUFFL0osR0FBRztBQUFBLE1BQ3BCLGNBQWNDLEVBQUU7QUFBQSxNQUNoQixhQUFhb0k7QUFBQSxNQUNiLHFCQUFxQixJQUFJMEYsS0FBSTtBQUFBLElBQy9CLENBQUM7QUFDRCxRQUFJNEQsR0FBRSwrQkFBK0IzRCxFQUFFLEdBQUcvTixFQUFFLFNBQVM7QUFDbkQsYUFBTztBQUFBLFFBQ0wsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLFVBQ04sbUJBQW1CK04sR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFO0FBQUEsUUFDM0M7QUFBQSxNQUNGO0FBQ0YsUUFBSSxDQUFDQSxHQUFHO0FBQ04sWUFBTTRELEdBQUcsbURBQW1ENUQsRUFBRSxHQUFHLElBQUksTUFBTSxnRUFBZ0U7QUFDN0ksV0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sUUFBUUEsR0FBRztBQUFBLElBQ2I7QUFBQSxFQUNGO0FBQ0YsR0FBR2dFLEtBQUssdUJBQXVCLEVBQUUsT0FBT0MsR0FBRyxPQUFPQyxHQUFHLElBQUlsUCxFQUFFLGFBQWEsR0FBR21QLEtBQUsvVyxFQUFJLE9BQU87QUFBQSxFQUN6RixVQUFVQSxFQUFJLFFBQVEsYUFBYTtBQUFBLEVBQ25DLGdCQUFnQkEsRUFBSSxRQUFRLFFBQVE7QUFBQSxFQUNwQyxVQUFVQSxFQUFJLE9BQU87QUFBQSxJQUNuQixXQUFXQSxFQUFJLE9BQU87QUFBQSxFQUN4QixDQUFDO0FBQ0gsQ0FBQyxHQUFHZ1gsS0FBS2hYLEVBQUk7QUFBQSxFQUNYQSxFQUFJLE9BQU87QUFBQSxJQUNULG9CQUFvQkEsRUFBSSxPQUFPO0FBQUEsRUFDakMsQ0FBQztBQUNILEVBQUUsT0FBTyxDQUFDLEdBQUdpWCxLQUFLdFA7QUFBQSxFQUNoQixPQUFPLEVBQUUsU0FBUyxHQUFHLGVBQWU3RyxFQUFFLE1BQU07QUFDMUMsVUFBTU0sSUFBSSxFQUFFLGlCQUFpQjtBQUM3QixJQUFBeVYsRUFBRSxtREFBbUQ7QUFDckQsVUFBTXhWLElBQUk2TyxFQUFFLEVBQUUsd0JBQXdCNkcsRUFBRTtBQUN4QyxJQUFBRixFQUFFLDhCQUE4QjtBQUNoQyxVQUFNdlYsSUFBSSxFQUFFLGtCQUFrQnNELElBQUksTUFBTTJKLEVBQUVqTixDQUFDLEdBQUd1RCxJQUFJRCxFQUFFLFNBQVM7QUFDN0QsSUFBQWlTLEVBQUUsNkJBQTZCO0FBQy9CLFVBQU0sSUFBSSxNQUFNOUgsR0FBR3pOLEdBQUdzRCxFQUFFLE9BQU9DLEdBQUcsTUFBTSxHQUFHLEVBQUUsVUFBVSxHQUFHLFFBQVEsRUFBRSxJQUFJLE1BQU1ILEdBQUdyRCxFQUFFLFNBQVMsV0FBVztBQUFBLE1BQ3JHLE1BQU07QUFBQSxNQUNOLFVBQVUsRUFBRTtBQUFBLE1BQ1osb0JBQW9CO0FBQUEsTUFDcEIsdUJBQXVCO0FBQUEsSUFDekIsQ0FBQztBQUNELElBQUF3VixFQUFFLDhCQUE4QjtBQUNoQyxVQUFNLElBQUksRUFBRSxPQUFPLG1CQUFtQjtBQUFBLE1BQ3BDLGNBQWN6VixLQUFLLE9BQU8sU0FBU0EsRUFBRTtBQUFBLE1BQ3JDLGdCQUFnQjtBQUFBLFFBQ2QsV0FBVztBQUFBLFFBQ1gsVUFBVTtBQUFBLFFBQ1YsV0FBVztBQUFBLFFBQ1gsUUFBUTtBQUFBLE1BQ1Y7QUFBQSxJQUNGLENBQUMsR0FBRzRHLElBQUksTUFBTTtBQUNaLFFBQUUsTUFBTSxJQUFJNE8sRUFBRSxFQUFFO0FBQUEsSUFDbEIsR0FBR2hPLElBQUksTUFBTTtBQUNYLFFBQUUsUUFBUTtBQUFBLElBQ1o7QUFDQSxXQUFPeEgsS0FBSyxRQUFRQSxFQUFFLG1CQUFtQnlWLEVBQUUsNERBQTRELEtBQUtBLEVBQUUsZ0NBQWdDLEdBQUc3TyxFQUFFLElBQUksRUFBRSxHQUFHLFNBQVMsT0FBT08sTUFBTTtBQUNoTCxVQUFJc08sRUFBRSw0QkFBNEIsR0FBR3pWLEtBQUssUUFBUUEsRUFBRSxzQkFBc0IsQ0FBQyxNQUFNQSxFQUFFLG1CQUFtQixHQUFHO0FBQ3ZHLFFBQUF5VixFQUFFLGtEQUFrRDtBQUNwRDtBQUFBLE1BQ0Y7QUFDQSxNQUFBdE8sRUFBRSxRQUFRO0FBQUEsSUFDWixDQUFDLEdBQUcsRUFBRSxHQUFHLFdBQVcsT0FBT0EsTUFBTTtBQUMvQixNQUFBc08sRUFBRSxnQ0FBZ0N0TyxDQUFDO0FBQ25DLFlBQU1DLElBQUksTUFBTSxFQUFFLG9CQUFvQjtBQUFBLFFBQ3BDLFVBQVU7QUFBQSxRQUNWLFFBQVE7QUFBQSxVQUNOLGlCQUFpQkQsRUFBRTtBQUFBLFFBQ3JCO0FBQUEsTUFDRixDQUFDO0FBQ0QsTUFBQUMsRUFBRSxTQUFTc08sR0FBRyxTQUFTdE8sRUFBRSxLQUFLLEdBQUcxSCxFQUFFLElBQUksZ0JBQWdCMEgsRUFBRSxNQUFNLFdBQVcsMkJBQTJCLE1BQU1xTyxFQUFFLGlCQUFpQnJPLEVBQUUsYUFBYSxHQUFHd0osRUFBRSxXQUFXLElBQUk7QUFBQSxRQUMvSixTQUFTO0FBQUEsUUFDVCx1QkFBdUIzUTtBQUFBLFFBQ3ZCLGtCQUFrQjhELEdBQUcsRUFBRSxPQUFPO0FBQUEsUUFDOUIsZUFBZXJFO0FBQUEsUUFDZixjQUFjLEVBQUUsVUFBVTBILEVBQUUsY0FBYztBQUFBLFFBQzFDLFlBQVksRUFBRSxhQUFhLEdBQUc7QUFBQSxNQUNoQyxDQUFDO0FBQUEsSUFDSCxDQUFDLEdBQUc7QUFBQSxNQUNGLGFBQWE7QUFBQSxNQUNiLFlBQVk7QUFBQSxRQUNWLGFBQWFSO0FBQUEsUUFDYixnQkFBZ0JZO0FBQUEsUUFDaEIsc0JBQXNCLFlBQVksTUFBTXNPLEdBQUdOLEVBQUU7QUFBQSxNQUMvQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsR0FBR08sS0FBS3pQO0FBQUEsRUFDTixPQUFPO0FBQUEsSUFDTCxTQUFTO0FBQUEsSUFDVCx1QkFBdUI1RztBQUFBLElBQ3ZCLGtCQUFrQk07QUFBQSxJQUNsQixlQUFlQztBQUFBLElBQ2YsY0FBY0M7QUFBQSxFQUNoQixNQUFNO0FBQ0osSUFBQXVWLEVBQUUsNkJBQTZCO0FBQy9CLFVBQU1qUyxJQUFJLEVBQUU7QUFDWixJQUFBaVMsRUFBRSx1Q0FBdUM7QUFDekMsVUFBTWhTLElBQUl1UyxHQUFHaFcsR0FBR0UsRUFBRSxRQUFRLEdBQUcsSUFBSWdRLEdBQUd6TSxHQUFHeEQsRUFBRSxJQUFJLGlCQUFpQjtBQUM5RCxNQUFFLDRCQUE0QjtBQUFBLE1BQzVCLEdBQUc7QUFBQSxJQUNMLENBQUMsR0FBR3dWLEVBQUUsMEJBQTBCO0FBQ2hDLFVBQU0sSUFBSSxNQUFNckksR0FBRzVKLEdBQUc7QUFBQSxNQUNwQixrQkFBa0I5RCxFQUFFO0FBQUEsTUFDcEIseUJBQXlCQTtBQUFBLE1BQ3pCLHNCQUFzQlEsRUFBRSxTQUFTO0FBQUEsTUFDakMsb0JBQW9CLEVBQUVLLEVBQUUsS0FBSztBQUFBLE1BQzdCLHlCQUF5QixFQUFFQSxFQUFFLFVBQVU7QUFBQSxNQUN2Qyx3QkFBd0IsRUFBRUEsRUFBRSxTQUFTO0FBQUEsTUFDckMsc0JBQXNCO0FBQUEsUUFDcEIsVUFBVSxFQUFFQSxFQUFFLFFBQVE7QUFBQSxRQUN0QixTQUFTLEVBQUVBLEVBQUUsT0FBTztBQUFBLE1BQ3RCO0FBQUEsSUFDRixDQUFDO0FBQ0QsSUFBQWtWLEVBQUUsK0JBQStCLENBQUM7QUFDbEMsVUFBTTlFLElBQUlpRixHQUFHLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsb0JBQW9CaFAsSUFBSSxNQUFNdUcsRUFBRTNKLENBQUM7QUFDaEYsUUFBSW9ELEVBQUUsU0FBUyxTQUFTO0FBQ3RCLE1BQUE2TyxFQUFFLHdCQUF3QjtBQUMxQixZQUFNak8sSUFBSSxNQUFNK0YsRUFBRS9KLEdBQUc7QUFBQSxRQUNuQixjQUFjb0QsRUFBRTtBQUFBLFFBQ2hCLG1CQUFtQitKO0FBQUEsTUFDckIsQ0FBQztBQUNELGFBQU8sRUFBRSxNQUFNLFNBQVMsUUFBUTlCLEdBQUdySCxDQUFDLEVBQUU7QUFBQSxJQUN4QyxPQUFPO0FBQ0wsTUFBQWlPLEVBQUUsbUJBQW1CO0FBQ3JCLFlBQU1qTyxJQUFJO0FBQUEsUUFDUixjQUFjWixFQUFFO0FBQUEsUUFDaEIsZUFBZTtBQUFBLFVBQ2IsZUFBZWxILEVBQUU7QUFBQSxRQUNuQjtBQUFBLFFBQ0EsZ0JBQWdCLEVBQUVhLEVBQUUsS0FBSztBQUFBLFFBQ3pCLG1CQUFtQixFQUFFQSxFQUFFLFFBQVE7QUFBQSxRQUMvQixrQkFBa0IsRUFBRUEsRUFBRSxPQUFPO0FBQUEsUUFDN0IsZ0JBQWdCLEVBQUVBLEVBQUUsY0FBYztBQUFBLFFBQ2xDLFlBQVlxRyxFQUFFO0FBQUEsUUFDZCxtQkFBbUJBLEVBQUU7QUFBQSxRQUNyQixlQUFlO0FBQUEsUUFDZix5QkFBeUJsSDtBQUFBLE1BQzNCO0FBQ0EsYUFBTyxFQUFFLE1BQU0sWUFBWSxRQUFRLE1BQU1xTyxHQUFHdkssR0FBR2dFLENBQUMsRUFBRTtBQUFBLElBQ3BEO0FBQUEsRUFDRjtBQUNGLEdBQUd3TyxLQUFLLENBQUMsR0FBR3RXLE1BQU07QUFDaEIsTUFBSStPLEdBQUdpQyxHQUFHQyxHQUFHL0osR0FBR1k7QUFDaEIsUUFBTXhILElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDQyxHQUFHLEdBQUdDLENBQUMsTUFBTXdRLEtBQUtqQyxJQUFJL08sRUFBRSxnQkFBZ0IsU0FBUyxPQUFPLFNBQVMrTyxFQUFFLEtBQUssTUFBTSxPQUFPLFNBQVNpQyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUMsR0FBR2xOLElBQUl0RCxFQUFFLEtBQUssR0FBRyxLQUFLO0FBQzdKLEVBQUFGLEVBQUVPLEVBQUUsS0FBSyxJQUFJUCxFQUFFTyxFQUFFLEtBQUs7QUFBQSxJQUNwQm9RLElBQUlqUixFQUFFLFNBQVMsT0FBTyxTQUFTaVIsRUFBRSxVQUFValIsRUFBRSxnQkFBZ0IsU0FBUyw4QkFBOEJNLEVBQUVPLEVBQUUsUUFBUSxJQUFJUCxFQUFFTyxFQUFFLFFBQVEsT0FBT3FHLElBQUlsSCxFQUFFLGdCQUFnQixZQUFZLE9BQU8sU0FBU2tILEVBQUUsZ0JBQWdCLFNBQVM1RyxFQUFFTyxFQUFFLE9BQU8sSUFBSVAsRUFBRU8sRUFBRSxPQUFPLE9BQU9pSCxJQUFJOUgsRUFBRSxnQkFBZ0IsWUFBWSxPQUFPLFNBQVM4SCxFQUFFLFlBQVk7QUFDdlQsUUFBTS9ELElBQUl6RCxFQUFFTyxFQUFFLFVBQVUsS0FBS04sS0FBSyxJQUFJNEQsSUFBSTdELEVBQUVPLEVBQUUsU0FBUyxLQUFLaUQsS0FBSztBQUNqRSxTQUFPQyxLQUFLSSxLQUFLN0QsRUFBRU8sRUFBRSxVQUFVLElBQUlrRCxHQUFHekQsRUFBRU8sRUFBRSxTQUFTLElBQUlzRCxNQUFNN0QsRUFBRU8sRUFBRSxVQUFVLElBQUksZUFBZVAsRUFBRU8sRUFBRSxTQUFTLElBQUksS0FBS2tWLEVBQUUsc0JBQXNCelYsQ0FBQyxHQUFHQTtBQUNsSixHQUFHOFYsS0FBSyxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUNwVyxNQUFNO0FBQ2hDLFFBQU1NLElBQUksTUFBTTtBQUNkLFVBQU1DLElBQUksU0FBUyxlQUFlLENBQUM7QUFDbkMsSUFBQUEsSUFBSVAsRUFBRU8sQ0FBQyxJQUFJLHNCQUFzQkQsQ0FBQztBQUFBLEVBQ3BDO0FBQ0EsRUFBQUEsRUFBRTtBQUNKLENBQUMsR0FBRyxFQUFFLE9BQU9pVyxHQUFHLE9BQU9DLEdBQUcsSUFBSTFQLEVBQUUsV0FBVyxHQUFHMlAsS0FBS3ZYLEVBQUksT0FBTztBQUFBLEVBQzVELFVBQVVBLEVBQUksTUFBTSxDQUFDQSxFQUFJLFFBQVEsV0FBVyxHQUFHQSxFQUFJLFFBQVEsWUFBWSxDQUFDLENBQUM7QUFBQSxFQUN6RSxnQkFBZ0JBLEVBQUksUUFBUSxRQUFRO0FBQUEsRUFDcEMsVUFBVUEsRUFBSSxPQUFPO0FBQUEsSUFDbkIsV0FBV0EsRUFBSSxPQUFPO0FBQUEsRUFDeEIsQ0FBQztBQUNILENBQUMsR0FBR3dYLEtBQUs3UDtBQUFBLEVBQ1AsT0FBTyxFQUFFLFNBQVMsR0FBRyxlQUFlN0csRUFBRSxNQUFNO0FBQzFDLElBQUF1VyxFQUFFLGlEQUFpRDtBQUNuRCxVQUFNalcsSUFBSThPLEVBQUUsRUFBRSx3QkFBd0JxSCxFQUFFO0FBQ3hDLElBQUFGLEVBQUUsZ0NBQWdDO0FBQ2xDLFVBQU1oVyxJQUFJLEVBQUUsa0JBQWtCQyxJQUFJLE1BQU1pTixFQUFFbE4sQ0FBQyxHQUFHdUQsSUFBSXRELEVBQUUsU0FBUztBQUM3RCxJQUFBK1YsRUFBRSxnQ0FBZ0M7QUFDbEMsVUFBTXhTLElBQUksTUFBTWtLLEdBQUcxTixHQUFHQyxFQUFFLE9BQU9zRCxHQUFHLE1BQU0sR0FBRyxJQUFJLE1BQU1EO0FBQUEsTUFDbkR2RCxFQUFFLFNBQVM7QUFBQSxNQUNYeUQsRUFBRTtBQUFBLE1BQ0ZBLEVBQUU7QUFBQSxNQUNGRDtBQUFBLElBQ0Y7QUFDQSxJQUFBeVMsRUFBRSw4QkFBOEI7QUFDaEMsVUFBTSxJQUFJLE1BQU0sRUFBRSxlQUFlO0FBQ2pDLFFBQUksTUFBTTtBQUNSLGFBQU9DLEdBQUcsOEJBQThCLEdBQUcsRUFBRSxhQUFhLElBQUksUUFBUSwrQkFBK0I7QUFDdkcsSUFBQUQsRUFBRSw2REFBNkQsQ0FBQztBQUNoRSxVQUFNLElBQUksQ0FBQyxHQUFHclAsTUFBTWdLLEVBQUUsU0FBUyxJQUFJO0FBQUEsTUFDakMsU0FBUztBQUFBLE1BQ1QsdUJBQXVCeUYsR0FBRyxFQUFFLHdCQUF3QixDQUFDO0FBQUEsTUFDckQsa0JBQWtCdFMsR0FBRyxFQUFFLE9BQU87QUFBQSxNQUM5QixlQUFlckU7QUFBQSxNQUNmLGNBQWMsRUFBRSxVQUFVLEdBQUcsd0JBQXdCa0gsS0FBSyxPQUFPLFNBQVNBLEVBQUUsdUJBQXVCO0FBQUEsTUFDbkcsWUFBWTtBQUFBLFFBQ1YsV0FBV3dILEVBQUUsS0FBSztBQUFBLFFBQ2xCLElBQUk7QUFBQSxRQUNKLGFBQWE7QUFBQSxRQUNiLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxVQUFVLFdBQVcsRUFBRSxVQUFVO0FBQUEsUUFDbkUsV0FBVztBQUFBLE1BQ2I7QUFBQSxJQUNGLENBQUM7QUFDRCxXQUFPO0FBQUEsTUFDTCxXQUFXQSxFQUFFLEtBQUs7QUFBQSxNQUNsQixhQUFhO0FBQUEsTUFDYixJQUFJO0FBQUEsTUFDSixvQkFBb0I7QUFBQSxRQUNsQixVQUFVLEVBQUU7QUFBQSxRQUNaLFdBQVcsRUFBRTtBQUFBLE1BQ2Y7QUFBQSxNQUNBLFdBQVc7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUNGLEdBQUdrSSxLQUFLaFE7QUFBQSxFQUNOLE9BQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxJQUNULHVCQUF1QjVHO0FBQUEsSUFDdkIsa0JBQWtCTTtBQUFBLElBQ2xCLGVBQWVDO0FBQUEsSUFDZixjQUFjQztBQUFBLElBQ2QsWUFBWXNEO0FBQUEsRUFDZCxNQUFNO0FBQ0osUUFBSXlTLEVBQUUsMkJBQTJCLEdBQUcvVixFQUFFLGFBQWFSLEVBQUU7QUFDbkQsWUFBTSxJQUFJLE1BQU0sK0JBQStCUSxFQUFFLFFBQVEsU0FBU1IsRUFBRSxRQUFRLEVBQUU7QUFDaEYsVUFBTStELElBQUksRUFBRSxrQkFBa0IsSUFBSUQsRUFBRTtBQUNwQyxRQUFJdEQsS0FBSyxRQUFRQSxFQUFFLHdCQUF3QjtBQUN6QyxZQUFNa0gsSUFBSWxILEVBQUU7QUFDWixNQUFBK1YsRUFBRSw2QkFBNkI3TyxDQUFDO0FBQ2hDLFlBQU1DLElBQUksT0FBT0QsRUFBRSwwQkFBMEIsYUFBYUEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLElBQUlBLEVBQUU7QUFDM0YsTUFBQW1QLEdBQUcsR0FBR25QLEVBQUUsUUFBUUEsRUFBRSxTQUFTQyxHQUFHRCxFQUFFLEtBQUs7QUFBQSxJQUN2QztBQUNBLElBQUE2TyxFQUFFLHNCQUFzQixHQUFHLEVBQUUsS0FBSztBQUNsQyxVQUFNLElBQUksTUFBTXZTLEdBQUcsQ0FBQztBQUNwQixJQUFBdVMsRUFBRSwwQkFBMEIsQ0FBQyxHQUFHQSxFQUFFLHVDQUF1QztBQUN6RSxVQUFNLElBQUlPLEdBQUd4VyxHQUFHLENBQUMsR0FBRyxJQUFJa1EsR0FBRyxHQUFHalEsRUFBRSxJQUFJLGlCQUFpQjtBQUNyRCxNQUFFLDRCQUE0QjtBQUFBLE1BQzVCLEdBQUc7QUFBQSxJQUNMLENBQUMsR0FBR2dXLEVBQUUsZ0RBQWdELENBQUM7QUFDdkQsVUFBTXJQLElBQUksTUFBTTBHLEdBQUc3SixHQUFHO0FBQUEsTUFDcEIsUUFBUTtBQUFBLE1BQ1IsdUJBQXVCL0Q7QUFBQSxJQUN6QixDQUFDLEdBQUc4SCxJQUFJaVAsR0FBRzdQLENBQUM7QUFDWixJQUFBcVAsRUFBRSw4QkFBOEIsR0FBRyxNQUFNdFMsR0FBRzZELEdBQUcsQ0FBQztBQUNoRCxVQUFNTCxJQUFJLE1BQU1nRyxFQUFFMUosQ0FBQztBQUNuQixRQUFJMEQsRUFBRSxTQUFTLFNBQVM7QUFDdEIsTUFBQThPLEVBQUUsc0NBQXNDO0FBQ3hDLFlBQU03TyxJQUFJLE1BQU1tRyxFQUFFOUosR0FBRztBQUFBLFFBQ25CLGNBQWMwRCxFQUFFO0FBQUEsTUFDbEIsQ0FBQztBQUNELGFBQU8sRUFBRSxNQUFNLFNBQVMsUUFBUTBILEdBQUd6SCxDQUFDLEVBQUU7QUFBQSxJQUN4QyxPQUFPO0FBQ0wsTUFBQTZPLEVBQUUsd0JBQXdCO0FBQzFCLFlBQU03TyxJQUFJO0FBQUEsUUFDUixjQUFjRCxFQUFFO0FBQUEsUUFDaEIsZUFBZTtBQUFBLFVBQ2IsZUFBZXpILEVBQUU7QUFBQSxRQUNuQjtBQUFBLFFBQ0EscUJBQXFCLEVBQUVhLEVBQUUsVUFBVTtBQUFBLFFBQ25DLG9CQUFvQixFQUFFQSxFQUFFLFNBQVM7QUFBQSxRQUNqQyxnQkFBZ0IsRUFBRUEsRUFBRSxLQUFLO0FBQUEsUUFDekIsbUJBQW1CLEVBQUVBLEVBQUUsUUFBUTtBQUFBLFFBQy9CLGtCQUFrQixFQUFFQSxFQUFFLE9BQU87QUFBQSxRQUM3QixnQkFBZ0IsRUFBRUEsRUFBRSxjQUFjO0FBQUEsUUFDbEMsWUFBWTRHLEVBQUU7QUFBQSxRQUNkLG1CQUFtQkEsRUFBRTtBQUFBLFFBQ3JCLGVBQWU7QUFBQSxRQUNmLHlCQUF5QnpIO0FBQUEsTUFDM0I7QUFDQSxhQUFPLEVBQUUsTUFBTSxZQUFZLFFBQVEsTUFBTXFPLEdBQUd0SyxHQUFHMkQsQ0FBQyxFQUFFO0FBQUEsSUFDcEQ7QUFBQSxFQUNGO0FBQ0YsR0FBR29QLEtBQUssQ0FBQyxHQUFHOVcsTUFBTTtBQUNoQixNQUFJaVIsR0FBRy9KLEdBQUdZLEdBQUdMO0FBQ2IsUUFBTW5ILElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDQyxHQUFHLEdBQUdDLENBQUMsTUFBTTBHLEtBQUsrSixJQUFJalIsRUFBRSxjQUFjLE9BQU8sU0FBU2lSLEVBQUUsS0FBSyxNQUFNLE9BQU8sU0FBUy9KLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQyxHQUFHcEQsSUFBSXRELEVBQUUsS0FBSyxHQUFHLEtBQUssUUFBUXVELEtBQUswRCxLQUFLSyxJQUFJOUgsRUFBRSxrQkFBa0IsT0FBTyxTQUFTOEgsRUFBRSxvQkFBb0IsT0FBTyxTQUFTTCxFQUFFLFNBQVN0RCxJQUFJbkUsRUFBRTtBQUNuUSxFQUFBTSxFQUFFTyxFQUFFLEtBQUssSUFBSVAsRUFBRU8sRUFBRSxLQUFLLEtBQUtiLEVBQUUsY0FBYyw4QkFBOEJNLEVBQUVPLEVBQUUsUUFBUSxJQUFJUCxFQUFFTyxFQUFFLFFBQVEsTUFBTWtELEtBQUssT0FBTyxTQUFTQSxFQUFFLGlCQUFpQkksS0FBSyxPQUFPLFNBQVNBLEVBQUUsZUFBZSxTQUFTN0QsRUFBRU8sRUFBRSxPQUFPLElBQUlQLEVBQUVPLEVBQUUsT0FBTyxNQUFNa0QsS0FBSyxPQUFPLFNBQVNBLEVBQUUsYUFBYUksS0FBSyxPQUFPLFNBQVNBLEVBQUUsWUFBWTtBQUN6UyxRQUFNNEssSUFBSXpPLEVBQUVPLEVBQUUsVUFBVSxLQUFLTixLQUFLLElBQUl5USxJQUFJMVEsRUFBRU8sRUFBRSxTQUFTLEtBQUtpRCxLQUFLO0FBQ2pFLFNBQU9pTCxLQUFLaUMsS0FBSzFRLEVBQUVPLEVBQUUsVUFBVSxJQUFJa08sR0FBR3pPLEVBQUVPLEVBQUUsU0FBUyxJQUFJbVEsTUFBTTFRLEVBQUVPLEVBQUUsVUFBVSxJQUFJLGVBQWVQLEVBQUVPLEVBQUUsU0FBUyxJQUFJLEtBQUswVixFQUFFLHNCQUFzQmpXLENBQUMsR0FBR0E7QUFDbEosR0FBR3VXLEtBQUssQ0FBQyxHQUFHN1csR0FBR00sR0FBR0MsR0FBR0MsTUFBTTtBQUN6QixJQUFFLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxNQUNMLFFBQVFSLEVBQUU7QUFBQSxNQUNWLE9BQU9RLEtBQUs7QUFBQSxNQUNaLFNBQVNGO0FBQUEsSUFDWDtBQUFBLElBQ0EsVUFBVU4sRUFBRTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBSVosVUFBVU87QUFBQSxFQUNaLENBQUM7QUFDSCxHQUFHd1csS0FBSyxDQUFDLE1BQU07QUFDYixNQUFJLEVBQUUsc0JBQXNCLFdBQVc7QUFDckMsVUFBTSxJQUFJLE1BQU07QUFBQSxlQUNMLEVBQUUsc0JBQXNCLE1BQU0sd0JBQXdCO0FBQ25FLFNBQU94VCxHQUFHLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQzVDLEdBQUdvVCxLQUFLLENBQUMsR0FBRzNXLEdBQUdNLE1BQU07QUFDbkIsUUFBTUMsSUFBSSxFQUFFLE9BQU8sQ0FBQ0MsTUFBTTtBQUN4QixVQUFNc0QsSUFBSXhELE1BQU0sU0FBUyxLQUFLRSxFQUFFLG1CQUFtQkYsR0FBR3lELElBQUl2RCxFQUFFLGFBQWFSO0FBQ3pFLFdBQU84RCxLQUFLQztBQUFBLEVBQ2QsQ0FBQztBQUNELE1BQUl4RCxFQUFFLFdBQVc7QUFDZixVQUFNLFFBQVEsS0FBSyxhQUFhLENBQUMsR0FBRyxJQUFJLE1BQU0sZ0NBQWdDUCxDQUFDLG9CQUFvQk0sQ0FBQyxHQUFHO0FBQ3pHLFNBQU9DLEVBQUUsV0FBVyxNQUFNLFFBQVEsS0FBSyxhQUFhLENBQUMsR0FBRyxRQUFRLEtBQUssMENBQTBDUCxDQUFDLG9CQUFvQk0sQ0FBQyxHQUFHLEdBQUcsRUFBRSwyQkFBMkI7QUFBQSxJQUN0SyxVQUFVTjtBQUFBLElBQ1YsV0FBV007QUFBQSxJQUNYLE1BQU07QUFBQSxFQUNSLENBQUMsSUFBSUMsRUFBRSxDQUFDO0FBQ1YsR0FBRzJRLElBQUk7QUFBQTtBQUFBO0FBQUEsRUFHTCxVQUFVO0FBQUEsSUFDUixNQUFNLFlBQVk7QUFBQSxJQUNsQjtBQUFBLElBQ0EsS0FBS3dEO0FBQUEsRUFDUDtBQUFBO0FBQUEsRUFFQSxVQUFVO0FBQUEsSUFDUixNQUFNZ0M7QUFBQSxJQUNOLEtBQUtFO0FBQUEsRUFDUDtBQUFBLEVBQ0EsWUFBWTtBQUFBLElBQ1YsTUFBTVQ7QUFBQSxJQUNOLEtBQUtFO0FBQUEsRUFDUDtBQUFBO0FBQUEsRUFFQSxjQUFjO0FBQUEsSUFDWixLQUFLVDtBQUFBLEVBQ1A7QUFBQTtBQUFBLEVBRUEsb0JBQW9CO0FBQUEsSUFDbEIsTUFBTWpFO0FBQUEsSUFDTixLQUFLQztBQUFBLEVBQ1A7QUFBQSxFQUNBLG1CQUFtQjtBQUFBLElBQ2pCLE1BQU1iO0FBQUEsSUFDTixLQUFLSTtBQUFBLEVBQ1A7QUFBQTtBQUFBLEVBRUEsWUFBWTtBQUFBLElBQ1YsTUFBTW9FO0FBQUEsSUFDTixLQUFLQztBQUFBLEVBQ1A7QUFBQSxFQUNBLHNCQUFzQjtBQUFBLElBQ3BCLE1BQU01QztBQUFBLElBQ04sS0FBS0M7QUFBQSxFQUNQO0FBQUEsRUFDQSx1QkFBdUI7QUFBQSxJQUNyQixNQUFNRztBQUFBLElBQ04sS0FBS0M7QUFBQSxFQUNQO0FBQUE7QUFBQTtBQUdGLEdBQUcsRUFBRSxPQUFPK0QsSUFBSSxPQUFPQyxHQUFHLElBQUluUSxFQUFFLFlBQVksR0FBR29RLEtBQUssQ0FBQyxHQUFHbFgsTUFBTTtBQUM1RCxRQUFNTSxJQUFJLElBQUk4TCxHQUFHO0FBQ2pCLFNBQU87QUFBQSxJQUNMLFdBQVc5TDtBQUFBLElBQ1gsWUFBWSxPQUFPQyxNQUFNO0FBQ3ZCLFVBQUk7QUFDRixZQUFJRCxFQUFFLFFBQVE7QUFDWixnQkFBTSxJQUFJLE1BQU0seUNBQXlDO0FBQzNELGNBQU1FLElBQUksTUFBTVIsRUFBRU8sQ0FBQztBQUNuQixRQUFBeVcsR0FBRyxLQUFLLENBQUMsMkNBQTJDeFcsQ0FBQyxHQUFHRixFQUFFLElBQUlFLENBQUM7QUFBQSxNQUNqRSxTQUFTQSxHQUFHO0FBQ1YsUUFBQXlXLEdBQUcsTUFBTSxDQUFDLHVDQUF1QzdXLEVBQUVJLENBQUMsR0FBRyxZQUFZQSxDQUFDLEdBQUdGLEVBQUUsTUFBTUUsR0FBR0osRUFBRUksQ0FBQyxDQUFDO0FBQUEsTUFDeEY7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLEdBQUcyVyxLQUFLLE9BQU8sR0FBR25YLEdBQUdNLE1BQU07QUFDekIsUUFBTSxRQUFRLElBQUksT0FBTyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUNDLE1BQU1BLEVBQUUsV0FBVyxFQUFFLFNBQVNQLEdBQUcsZUFBZU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvRixHQUFHOFcsS0FBSyxPQUFPO0FBQUE7QUFBQTtBQUFBLEVBR2IsVUFBVUYsR0FBRyxhQUFhaEcsRUFBRSxTQUFTLElBQUk7QUFBQTtBQUFBLEVBRXpDLFlBQVlnRyxHQUFHLGVBQWVoRyxFQUFFLFdBQVcsSUFBSTtBQUFBO0FBQUEsRUFFL0Msb0JBQW9CZ0csR0FBRyx1QkFBdUJoRyxFQUFFLG1CQUFtQixJQUFJO0FBQUE7QUFBQSxFQUV2RSxtQkFBbUJnRyxHQUFHLHNCQUFzQmhHLEVBQUUsa0JBQWtCLElBQUk7QUFBQTtBQUFBLEVBRXBFLE1BQU1nRyxHQUFHLFFBQVFoRyxFQUFFLFdBQVcsSUFBSTtBQUFBO0FBQUEsRUFFbEMsdUJBQXVCZ0csR0FBRyxxQkFBcUJoRyxFQUFFLHNCQUFzQixJQUFJO0FBQUE7QUFBQSxFQUUzRSxzQkFBc0JnRyxHQUFHLG9CQUFvQmhHLEVBQUUscUJBQXFCLElBQUk7QUFBQTtBQUUxRSxJQUFJLEVBQUUsT0FBT21HLEdBQUcsSUFBSXZRLEVBQUUsZ0JBQWdCLEdBQUd3USxJQUFJcFksRUFBSSxTQUFTLEVBQUUsU0FBUyxHQUFHcVksS0FBS3JZLEVBQUksT0FBTztBQUFBLEVBQ3RGLFNBQVNvWTtBQUFBLEVBQ1QsUUFBUUE7QUFBQSxFQUNSLFVBQVVBO0FBQUEsRUFDVixRQUFRQTtBQUFBLEVBQ1IsYUFBYUE7QUFBQSxFQUNiLG1CQUFtQkE7QUFBQSxFQUNuQixtQkFBbUJBO0FBQUEsRUFDbkIsbUJBQW1CQTtBQUFBLEVBQ25CLDZCQUE2QkE7QUFBQSxFQUM3QixpQkFBaUJBO0FBQUEsRUFDakIsc0JBQXNCQTtBQUN4QixDQUFDLEdBQUdFLEtBQUksTUFBTUEsR0FBRTtBQUFBLEVBQ2QsY0FBYztBQUNaLFNBQUssZUFBZSxDQUFDeFgsTUFBTTtBQUN6QixXQUFLLGFBQWF3WCxHQUFFLHFCQUFxQixHQUFHLE9BQU8sUUFBUXhYLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQ00sR0FBR0MsQ0FBQyxNQUFNO0FBQ2hGLGNBQU1DLElBQUlILEdBQUdDLEdBQUdDLEtBQUtpWCxHQUFFLE1BQU1ILEVBQUU7QUFDL0IsYUFBSyxXQUFXL1csQ0FBQyxJQUFJRTtBQUFBLE1BQ3ZCLENBQUM7QUFBQSxJQUNILEdBQUcsS0FBSyxhQUFhZ1gsR0FBRSxxQkFBcUI7QUFBQSxFQUM5QztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSUEsSUFBSSxNQUFNO0FBQ1IsV0FBTyxFQUFFLEdBQUcsS0FBSyxXQUFXO0FBQUEsRUFDOUI7QUFDRjtBQUNBQSxHQUFFLE9BQU8sTUFBTTtBQUNmLEdBQUdBLEdBQUUsdUJBQXVCLE1BQU07QUFDaEMsUUFBTXhYLElBQUksQ0FBQztBQUNYLFNBQU8sT0FBTyxLQUFLdVgsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNO0FBQ2pELElBQUF2WCxFQUFFLENBQUMsSUFBSXdYLEdBQUU7QUFBQSxFQUNYLENBQUMsR0FBR3hYO0FBQ04sR0FBR3dYLEdBQUUsYUFBYSxDQUFDeFgsTUFBTTtBQUN2QixRQUFNLElBQUksSUFBSXdYLEdBQUU7QUFDaEIsU0FBTyxFQUFFLGFBQWFELEdBQUcsTUFBTXZYLENBQUMsQ0FBQyxHQUFHO0FBQ3RDO0FBQ0EsSUFBSXlYLEtBQUtEO0FBQ1QsTUFBTUUsS0FBSyxvQ0FBb0NDLEtBQUssSUFBSUMsS0FBSyxJQUFJQyxLQUFLLElBQUlDLEtBQUs7QUFDL0UsSUFBSUM7QUFBQSxDQUNILFNBQVMsR0FBRztBQUNYLElBQUUsMEJBQTBCLG1CQUFtQixFQUFFLDZCQUE2QixpQkFBaUIsRUFBRSwyQkFBMkIsc0JBQXNCLEVBQUUscUJBQXFCLGdCQUFnQixFQUFFLHlCQUF5Qix3QkFBd0IsRUFBRSwyQkFBMkIsc0JBQXNCLEVBQUUsb0JBQW9CLGVBQWUsRUFBRSxjQUFjLGdCQUFnQixFQUFFLGFBQWEsY0FBYyxFQUFFLGNBQWM7QUFDblosR0FBR0EsT0FBT0EsS0FBSyxDQUFDLEVBQUU7QUFDbEIsTUFBTUMsV0FBVyxNQUFNO0FBQUEsRUFDckIsWUFBWWhZLEdBQUdNLEdBQUc7QUFDaEIsVUFBTSxHQUFHQSxDQUFDLEtBQUtOLENBQUMsR0FBRyxHQUFHLEtBQUssT0FBTyxhQUFhLEtBQUssT0FBT0E7QUFBQSxFQUM3RDtBQUNGO0FBQ0EsU0FBU2lZLEdBQUcsR0FBRztBQUNiLE1BQUlqWSxJQUFJLEtBQUssTUFBTSxFQUFFLElBQUkyWCxFQUFFO0FBQzNCLFNBQU8zWCxNQUFNMlgsT0FBTzNYLElBQUkyWCxLQUFLLElBQUlELEdBQUcsT0FBTzFYLENBQUM7QUFDOUM7QUFDQSxTQUFTa1ksR0FBRyxHQUFHO0FBQ2IsUUFBTWxZLElBQUltWSxHQUFHLEdBQUc3WCxJQUFJTixNQUFNQSxFQUFFLFVBQVVBLEVBQUUsYUFBYTtBQUNyRCxNQUFJLFFBQVFNLEtBQUssT0FBTyxTQUFTQSxFQUFFLG9CQUFvQjtBQUNyRCxXQUFPLE1BQU07QUFDWCxZQUFNQyxJQUFJLElBQUksV0FBVyxDQUFDO0FBQzFCLGFBQU9ELEVBQUUsZ0JBQWdCQyxDQUFDLEdBQUdBLEVBQUUsQ0FBQyxJQUFJO0FBQUEsSUFDdEM7QUFDRixNQUFJLFFBQVFELEtBQUssT0FBTyxTQUFTQSxFQUFFLGdCQUFnQjtBQUNqRCxXQUFPLE1BQU1BLEVBQUUsWUFBWSxDQUFDLEVBQUUsVUFBVSxJQUFJO0FBQzlDLFFBQU0sSUFBSTBYLEdBQUdELEdBQUcsbUJBQW1CLGdDQUFnQztBQUNyRTtBQUNBLFNBQVNJLEtBQUs7QUFDWixTQUFPQyxHQUFHLElBQUksT0FBTyxPQUFPLFNBQVMsTUFBTSxTQUFTLE9BQU8sU0FBUyxNQUFNLFNBQVMsT0FBTyxhQUFhLE1BQU0sYUFBYTtBQUM1SDtBQUNBLFNBQVNDLEdBQUcsR0FBR3JZLEdBQUc7QUFDaEIsTUFBSU0sSUFBSTtBQUNSLFNBQU8sSUFBSSxHQUFHO0FBQ1osSUFBQUEsSUFBSTJYLEdBQUdqWSxDQUFDLElBQUlNO0FBQ2QsU0FBT0E7QUFDVDtBQUNBLFNBQVNnWSxHQUFHLEdBQUd0WSxJQUFJNlgsSUFBSTtBQUNyQixNQUFJLE1BQU0sQ0FBQztBQUNULFVBQU0sSUFBSUcsR0FBR0QsR0FBRywwQkFBMEIsMEJBQTBCLENBQUMsRUFBRTtBQUN6RSxNQUFJLElBQUlEO0FBQ04sVUFBTSxJQUFJRSxHQUFHRCxHQUFHLHdCQUF3QixvQ0FBb0NELEVBQUUsS0FBSyxDQUFDLEVBQUU7QUFDeEYsTUFBSSxJQUFJO0FBQ04sVUFBTSxJQUFJRSxHQUFHRCxHQUFHLG9CQUFvQiwwQkFBMEIsQ0FBQyxFQUFFO0FBQ25FLE1BQUksT0FBTyxVQUFVLENBQUMsTUFBTTtBQUMxQixVQUFNLElBQUlDLEdBQUdELEdBQUcsMEJBQTBCLDRCQUE0QixDQUFDLEVBQUU7QUFDM0UsTUFBSXpYLEdBQUdDLElBQUk7QUFDWCxXQUFTQyxJQUFJUixHQUFHUSxJQUFJLEdBQUdBO0FBQ3JCLElBQUFGLElBQUksSUFBSXFYLElBQUlwWCxJQUFJbVgsR0FBRyxPQUFPcFgsQ0FBQyxJQUFJQyxHQUFHLEtBQUssSUFBSUQsS0FBS3FYO0FBQ2xELFNBQU9wWDtBQUNUO0FBQ0EsU0FBUzZYLEtBQUs7QUFDWixTQUFPLE9BQU8sb0JBQW9CLE9BQU8sZ0JBQWdCO0FBQzNEO0FBQ0EsU0FBU0csR0FBRyxHQUFHdlksR0FBRztBQUNoQixRQUFNTSxJQUFJNFgsR0FBRyxHQUFHM1gsSUFBSSxLQUFLLElBQUk7QUFDN0IsU0FBTytYLEdBQUcvWCxHQUFHc1gsRUFBRSxJQUFJUSxHQUFHVCxJQUFJdFgsQ0FBQztBQUM3QjtBQUNBLE1BQU1rWSxLQUFLLDZCQUE2QkMsS0FBSyxNQUFNO0FBQ2pELFFBQU0sSUFBSSxTQUFTLE9BQU8sTUFBTSxHQUFHLEVBQUUsS0FBSyxDQUFDblksTUFBTUEsRUFBRSxTQUFTa1ksRUFBRSxDQUFDO0FBQy9ELE1BQUk7QUFDRixXQUFPLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUN2QixRQUFNeFksSUFBSXVZLEdBQUc7QUFDYixTQUFPRyxHQUFHMVksQ0FBQyxHQUFHQTtBQUNoQixHQUFHMFksS0FBSyxDQUFDLE1BQU07QUFDYixRQUFNMVksSUFBb0Isb0JBQUksS0FBSztBQUNuQyxFQUFBQSxFQUFFLFlBQVlBLEVBQUUsWUFBWSxJQUFJLENBQUMsR0FBRyxTQUFTLFNBQVMsR0FBR3dZLEVBQUUsSUFBSSxDQUFDLHFCQUFxQnhZLEVBQUUsWUFBWSxDQUFDO0FBQ3RHO0FBQ0EsU0FBUzJZLEtBQUs7QUFDWixNQUFJO0FBQ0YsVUFBTSxJQUFJak0sRUFBRTtBQUNaLFFBQUksS0FBSyxRQUFRLEVBQUUsUUFBUSxLQUFLLFFBQVEsRUFBRSxpQkFBaUIsU0FBUyxjQUFjLFNBQVM7QUFDekYsYUFBTztBQUNULFVBQU0xTSxJQUFJME0sRUFBRTtBQUNaLFFBQUkxTSxLQUFLLFFBQVFBLEVBQUUsWUFBWSxTQUFTLGNBQWMsU0FBUztBQUM3RCxhQUFPO0FBQ1QsUUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLEtBQUssQ0FBQ08sTUFBTUEsRUFBRSxTQUFTLE9BQU8sQ0FBQyxLQUFLLE1BQU0sS0FBSyxTQUFTLEtBQUssaUJBQWlCLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQ0EsTUFBTUEsRUFBRSxtQkFBbUI7QUFDcEosYUFBTztBQUNULFVBQU1ELElBQUlvTSxFQUFFO0FBQ1osV0FBT3BNLEtBQUssUUFBUUEsRUFBRSxPQUFPQSxLQUFLLFFBQVFBLEVBQUUsVUFBVSxRQUFRLFNBQVMsY0FBYyxjQUFjLElBQUksWUFBWTtBQUFBLEVBQ3JILFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBQ0EsU0FBU3NZLEdBQUcsR0FBRztBQUNiLE1BQUk1WSxHQUFHTSxHQUFHQztBQUNWLE1BQUk7QUFDRixZQUFRLEdBQUc7QUFBQSxNQUNULEtBQUs7QUFDSCxlQUFPO0FBQUEsTUFDVCxLQUFLLFVBQVU7QUFDYixjQUFNQyxJQUFJa00sRUFBRTtBQUNaLGlCQUFTMU0sSUFBSVEsS0FBSyxPQUFPLFNBQVNBLEVBQUUsU0FBUyxPQUFPLFNBQVNSLEVBQUUsY0FBY00sSUFBSUUsS0FBSyxPQUFPLFNBQVNBLEVBQUUsa0JBQWtCLE9BQU8sU0FBU0YsRUFBRSxZQUFZO0FBQUEsTUFDMUo7QUFBQSxNQUNBLEtBQUs7QUFDSCxlQUFPO0FBQUEsTUFDVCxLQUFLO0FBQ0gsZUFBTztBQUFBLE1BQ1QsS0FBSyxXQUFXO0FBQ2QsY0FBTUUsS0FBS0QsSUFBSW1NLEVBQUUsTUFBTSxPQUFPLFNBQVNuTSxFQUFFLFVBQVV1RCxJQUFJdEQsS0FBSyxPQUFPLFNBQVNBLEVBQUUsY0FBYyxjQUFjO0FBQzFHLGVBQU9zRCxJQUFJQSxFQUFFLGFBQWEsWUFBWSxJQUFJO0FBQUEsTUFDNUM7QUFBQSxNQUNBO0FBQ0UsZUFBTztBQUFBLElBQ1g7QUFBQSxFQUNGLFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBQ0EsU0FBUytVLEtBQUs7QUFDWixRQUFNLElBQUlGLEdBQUcsR0FBRzNZLElBQUk0WSxHQUFHLENBQUM7QUFDeEIsU0FBTyxFQUFFLFdBQVcsR0FBRyxTQUFTNVksRUFBRTtBQUNwQztBQUNBLE1BQU04WSxHQUFHO0FBQUEsRUFDUCxZQUFZOVksR0FBR00sR0FBR0MsR0FBR0MsR0FBRztBQUN0QixTQUFLLGdCQUFnQixDQUFDc0QsTUFBTTtBQUMxQixVQUFJLENBQUNBLEVBQUUsUUFBUTtBQUNiLGdCQUFRLEtBQUssdUJBQXVCO0FBQ3BDO0FBQUEsTUFDRjtBQUNBLFVBQUlpVixHQUFHalYsRUFBRSxNQUFNLE1BQU1pVixHQUFHLEtBQUssT0FBTyxLQUFLLE9BQU9qVixFQUFFLFFBQVEsWUFBWUEsRUFBRSxLQUFLLFVBQVUsT0FBT0EsRUFBRSxRQUFRLFlBQVlBLEVBQUUsS0FBSyxVQUFVQSxFQUFFLEtBQUssV0FBVztBQUNySjtBQUNGLFVBQUlDLElBQUk7QUFDUixVQUFJO0FBQ0YsUUFBQUEsSUFBSU8sR0FBRyxLQUFLLE1BQU1SLEVBQUUsSUFBSSxDQUFDO0FBQUEsTUFDM0IsUUFBUTtBQUNOO0FBQUEsTUFDRjtBQUNBLFVBQUksQ0FBQyxLQUFLLGNBQWNDLENBQUMsRUFBRztBQUM1QixZQUFNLEVBQUUsV0FBV2dMLEdBQUcsU0FBU2lDLEVBQUUsSUFBSWpOLEdBQUdrTixJQUFJRCxFQUFFO0FBQzlDLGNBQVFDLEdBQUc7QUFBQSxRQUNULEtBQUs7QUFDSCxlQUFLLGtCQUFrQixjQUFjRCxFQUFFLFNBQVMsR0FBR0EsRUFBRSxNQUFNLE9BQU8sTUFBTTtBQUN4RTtBQUFBLFFBQ0YsS0FBSztBQUNILGVBQUssY0FBYyxJQUFJLFFBQVFqQyxHQUFHaUMsRUFBRSxXQUFXO0FBQy9DO0FBQUEsUUFDRixLQUFLO0FBQ0gsZUFBSyxjQUFjLElBQUksT0FBT2pDLEdBQUdpQyxFQUFFLFdBQVc7QUFDOUM7QUFBQSxRQUNGLEtBQUs7QUFDSCxlQUFLLGNBQWMsSUFBSSxTQUFTakMsR0FBR2lDLEVBQUUsYUFBYUEsRUFBRSxNQUFNO0FBQzFEO0FBQUEsUUFDRixLQUFLO0FBQ0gsZUFBSyxhQUFhakMsQ0FBQyxJQUFJakwsRUFBRSxRQUFRLEtBQUssa0JBQWtCLFlBQVlrTixDQUFDO0FBQ3JFO0FBQUEsUUFDRixLQUFLO0FBQ0gsZUFBSyxrQkFBa0IsZUFBZUEsRUFBRSxPQUFPO0FBQy9DO0FBQUEsUUFDRixLQUFLO0FBQ0gsZUFBSyxjQUFjLElBQUksa0JBQWtCQSxFQUFFLGFBQWFBLEVBQUUsUUFBUWpDLENBQUM7QUFDbkU7QUFBQSxRQUNGO0FBQ0Usa0JBQVEsS0FBSyxnQ0FBZ0NrQyxDQUFDO0FBQUEsTUFDbEQ7QUFBQSxJQUNGLEdBQUcsS0FBSyxnQkFBZ0IsQ0FBQ25OLE1BQU1BLEVBQUUsV0FBVyxLQUFLLFVBQVUsQ0FBQ0EsRUFBRSxhQUFhLFFBQVEsSUFBSSxnQkFBZ0IsS0FBSyxRQUFRQSxFQUFFLE1BQU0sR0FBRyxRQUFRLEtBQUssa0NBQWtDQSxDQUFDLEdBQUcsTUFBTSxLQUFLLE9BQU8sSUFBSUEsRUFBRSxLQUFLLEtBQUssUUFBUSxLQUFLLG9DQUFvQ0EsQ0FBQyxHQUFHLE9BQU8sS0FBSyxPQUFPLElBQUlBLEVBQUUsS0FBSyxHQUFHLEtBQUssS0FBSyxlQUFlLENBQUMsR0FBRyxLQUFLLFNBQXlCLG9CQUFJLElBQUksR0FBRyxLQUFLLFNBQVM5RCxHQUFHLEtBQUssVUFBVU0sR0FBRyxLQUFLLGdCQUFnQkMsR0FBRyxLQUFLLG9CQUFvQkM7QUFBQSxFQUN0YztBQUNGO0FBQ0EsTUFBTXVZLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUU7QUFDN0IsZUFBZUMsR0FBRyxHQUFHaFosR0FBRztBQUN0QixRQUFNLElBQUksTUFBTVosR0FBZTtBQUFBLElBQzdCLFFBQVE7QUFBQSxJQUNSLE9BQU87QUFBQSxJQUNQLGFBQWFZO0FBQUEsRUFDZixDQUFDLEVBQUUsU0FBU1EsSUFBSSxNQUFNK0QsR0FBRyxDQUFDO0FBQzFCLE1BQUksQ0FBQ0MsR0FBRyxHQUFHaEUsQ0FBQztBQUNWLFVBQU0sSUFBSSxNQUFNLG1DQUFtQztBQUNyRCxTQUFPO0FBQ1Q7QUFDQSxNQUFNeVksR0FBRztBQUFBLEVBQ1AsY0FBYztBQUNaLFNBQUssY0FBOEIsb0JBQUksSUFBSTtBQUFBLEVBQzdDO0FBQUEsRUFDQSxjQUFjalosR0FBR00sR0FBRztBQUNsQixTQUFLLFlBQVksSUFBSU4sR0FBR00sQ0FBQztBQUFBLEVBQzNCO0FBQUEsRUFDQSxnQkFBZ0I7QUFDZCxVQUFNTixJQUFJLEtBQUssWUFBWSxPQUFPLEVBQUUsS0FBSyxFQUFFO0FBQzNDLFFBQUksQ0FBQ0E7QUFDSCxZQUFNLElBQUksTUFBTSxzQkFBc0I7QUFDeEMsV0FBT0E7QUFBQSxFQUNUO0FBQUEsRUFDQSxvQkFBb0I7QUFDbEIsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUNGO0FBQ0EsTUFBTWtaLEtBQUssQ0FBQyxHQUFHbFosR0FBR00sTUFBTTtBQUN0QixRQUFNLEVBQUUsVUFBVUMsRUFBRSxJQUFJO0FBQ3hCLEVBQUFBLEVBQUUsVUFBVSxVQUFVLENBQUNDLE1BQU07QUFDM0IsUUFBSUEsRUFBRSxXQUFXO0FBQ2YsWUFBTXNELElBQUl0RCxFQUFFLGFBQWF1RCxJQUFJRCxFQUFFLGVBQWVBLEVBQUUsbUJBQW1CLFVBQVUsSUFBSUEsRUFBRSxlQUFlQSxFQUFFLG1CQUFtQixXQUFXLElBQUk7QUFBQSxRQUNwSSxXQUFXO0FBQUEsVUFDVCxXQUFXO0FBQUEsVUFDWCxhQUFhQztBQUFBLFVBQ2IsV0FBVyxPQUFPLE1BQU07QUFDdEIsWUFBQUEsS0FBS29WLEdBQUcsYUFBYXJWLEdBQUc5RCxHQUFHTSxHQUFHLENBQUM7QUFBQSxVQUNqQztBQUFBLFFBQ0Y7QUFBQSxRQUNBLFlBQVk7QUFBQSxVQUNWLFdBQVc7QUFBQSxVQUNYLGFBQWE7QUFBQSxVQUNiLFdBQVcsT0FBTyxNQUFNO0FBQ3RCLGlCQUFLNlksR0FBRyxjQUFjclYsR0FBRzlELEdBQUdNLEdBQUcsQ0FBQztBQUFBLFVBQ2xDO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFDQSxNQUFBQSxFQUFFLElBQUkscUJBQXFCLENBQUM7QUFBQSxJQUM5QjtBQUFBLEVBQ0YsQ0FBQztBQUNILEdBQUc2WSxLQUFLLENBQUMsR0FBR25aLEdBQUdNLEdBQUdDLEdBQUdDLE1BQU0wUSxFQUFFLFNBQVMsSUFBSTtBQUFBLEVBQ3hDLFNBQVM1UTtBQUFBLEVBQ1QsdUJBQXVCcVcsR0FBR3JXLEVBQUUsd0JBQXdCLENBQUM7QUFBQSxFQUNyRCxrQkFBa0IrRCxHQUFHL0QsRUFBRSxPQUFPO0FBQUEsRUFDOUIsZUFBZUM7QUFBQSxFQUNmLGNBQWMsRUFBRSxVQUFVLEdBQUcsd0JBQXdCQyxLQUFLLE9BQU8sU0FBU0EsRUFBRSx1QkFBdUI7QUFBQSxFQUNuRyxZQUFZUjtBQUNkLENBQUMsR0FBR29aLEtBQUssdUdBQXVHLEVBQUUsT0FBT0MsSUFBRyxPQUFPQyxHQUFFLElBQUl4UyxFQUFFLFNBQVMsR0FBR3lTLEtBQUksTUFBTUEsR0FBRTtBQUFBLEVBQ2pLLFlBQVl2WixHQUFHO0FBQ2IsUUFBSVE7QUFDSixTQUFLLGNBQWMsSUFBSSxLQUFLLGVBQWUsSUFBSTRMLEdBQUcsR0FBRyxLQUFLLGFBQWEsSUFBSUEsR0FBRyxHQUFHLEtBQUssVUFBVSxJQUFJQSxHQUFHLEdBQUcsS0FBSyxZQUFZZ0wsR0FBRyxHQUFHLEtBQUssZ0JBQWdCLFlBQVk7QUFDaEssVUFBSTtBQUNGLGNBQU10VCxJQUFJLEtBQUssY0FBYzVDLEdBQUUsVUFBVTtBQUN6QyxRQUFBNEMsRUFBRSxLQUFLLEtBQUssNEJBQTRCQSxFQUFFLEtBQUssYUFBYSxRQUFRLE9BQU8sT0FBT0EsRUFBRSxLQUFLLE9BQU87QUFBQSxVQUM5RixRQUFRO0FBQUEsVUFDUixRQUFRO0FBQUEsVUFDUixTQUFTO0FBQUEsVUFDVCxPQUFPO0FBQUEsVUFDUCxRQUFRO0FBQUEsVUFDUixVQUFVO0FBQUEsVUFDVixZQUFZO0FBQUEsVUFDWixVQUFVO0FBQUEsVUFDVixlQUFlO0FBQUEsVUFDZixZQUFZO0FBQUEsUUFDZCxDQUFDLEdBQUdBLEVBQUUsTUFBTSxNQUFNLEdBQUd1VixHQUFFLDRCQUE0QixHQUFHQSxHQUFFLDRCQUE0QixHQUFHQSxHQUFFLGlDQUFpQztBQUMxSCxjQUFNdFYsSUFBSSxNQUFNLEtBQUssYUFBYSxZQUFZO0FBQUEsVUFDNUMsWUFBWTtBQUFBLFVBQ1osZUFBZXFWO0FBQUEsUUFDakIsQ0FBQztBQUNELFFBQUFDLEdBQUUsMkJBQTJCLEdBQUdBLEdBQUUsaUNBQWlDO0FBQ25FLGNBQU0sSUFBSSxNQUFNLEtBQUssV0FBVyxZQUFZO0FBQUEsVUFDMUMsWUFBWTtBQUFBLFVBQ1osZUFBZUQ7QUFBQSxRQUNqQixDQUFDO0FBQ0QsUUFBQUMsR0FBRSwyQkFBMkIsR0FBRyxNQUFNNUssR0FBRyxHQUFHLEtBQUssV0FBVyxHQUFHNEssR0FBRSxnREFBZ0Q7QUFDakgsY0FBTSxJQUFJRSxHQUFFO0FBQUEsVUFDVixLQUFLO0FBQUEsVUFDTHhWO0FBQUEsVUFDQTtBQUFBLFVBQ0EsS0FBSyxXQUFXO0FBQUEsUUFDbEI7QUFDQSxhQUFLLFFBQVEsSUFBSSxDQUFDLEdBQUdtVixHQUFHLEtBQUssV0FBVyxHQUFHLEtBQUssYUFBYSxHQUFHRyxHQUFFLDhCQUE4QixHQUFHLE1BQU1sQyxHQUFHLEtBQUssV0FBVyxHQUFHLEtBQUssYUFBYSxHQUFHLEtBQUssY0FBYyxJQUFJLE9BQU9wVCxFQUFFLGtCQUFrQkEsRUFBRSxRQUFRLEdBQUdzVixHQUFFLGdDQUFnQyxHQUFHLEVBQUUsYUFBYTtBQUFBLE1BQ3pRLFNBQVN2VixHQUFHO0FBQ1YsY0FBTUMsSUFBSTNELEVBQUUwRCxDQUFDO0FBQ2IsUUFBQXdWLEdBQUUsaUNBQWlDdlYsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CO0FBQUEsVUFDMUQsT0FBT0E7QUFBQSxRQUNULENBQUMsR0FBRyxLQUFLLGNBQWMsSUFBSSxZQUFZQSxDQUFDO0FBQUEsTUFDMUM7QUFBQSxJQUNGLEdBQUcsS0FBSyxnQkFBZ0IsQ0FBQ0QsTUFBTTtBQUM3QixXQUFLLGVBQWUsU0FBU0EsR0FBRyxLQUFLLHNCQUFzQixPQUFPLE9BQU8sS0FBSyxrQkFBa0IsRUFBRSxRQUFRLENBQUNDLE1BQU07QUFDL0csU0FBQ0EsS0FBS0EsRUFBRSxTQUFTN0MsR0FBRSxlQUFlNkMsRUFBRSxLQUFLLE1BQU0sU0FBU0Q7QUFBQSxNQUMxRCxDQUFDO0FBQUEsSUFDSCxHQUFHLEtBQUssY0FBYyxDQUFDQSxNQUFNO0FBQzNCLFdBQUssYUFBYSxRQUFRLGNBQWMsS0FBSyxhQUFhLElBQUlBLENBQUMsR0FBRyxFQUFFLFlBQVk7QUFBQSxJQUNsRixHQUFHLEtBQUssaUJBQWlCLENBQUNBLE1BQU07QUFDOUIsV0FBSyxhQUFhLFFBQVEsY0FBYyxLQUFLLGFBQWEsTUFBTSxJQUFJLE1BQU1BLENBQUMsR0FBR0EsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCO0FBQUEsUUFDcEcsT0FBT0E7QUFBQSxNQUNULENBQUM7QUFBQSxJQUNILEdBQUcsS0FBSyxnQkFBZ0IsQ0FBQ0EsR0FBR0MsSUFBSSxDQUFDLE1BQU07QUFDckMsVUFBSSxDQUFDLEtBQUssb0JBQW9CLGVBQWU7QUFDM0MsY0FBTSxJQUFJLE1BQU0sZ0RBQWdEO0FBQ2xFLFVBQUksQ0FBQyxLQUFLLE9BQVEsT0FBTSxJQUFJLE1BQU0sOEJBQThCO0FBQ2hFLFlBQU0sSUFBSTVDLEdBQUcsTUFBTTJDLENBQUMsR0FBRyxJQUFJLFNBQVMsY0FBYyxRQUFRLEdBQUcsSUFBSSxLQUFLLGlCQUFpQkMsQ0FBQztBQUN4RixRQUFFLE9BQU8sR0FBRyxDQUFDO0FBQ2IsWUFBTSxJQUFJLElBQUksSUFBSSxXQUFXLEVBQUUsSUFBSSxLQUFLLEtBQUssT0FBTyxPQUFPO0FBQzNELGFBQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsUUFBUSxFQUFFLE1BQU0sUUFBUSxRQUFRLEtBQUssZUFBZSxHQUFHLENBQUM7QUFBQSxJQUMzSCxHQUFHLEtBQUssaUJBQWlCLENBQUNELEdBQUdDLE1BQU07QUFDakMsWUFBTSxJQUFJO0FBQUEsUUFDUixNQUFNRDtBQUFBLFFBQ04sTUFBTUM7QUFBQSxRQUNOLE9BQU8sQ0FBQyxNQUFNO0FBQ1osY0FBSTtBQUNKLFdBQUMsSUFBSSxTQUFTLGNBQWMsQ0FBQyxNQUFNLFFBQVEsRUFBRSxZQUFZQSxDQUFDLEdBQUcsRUFBRSxtQkFBbUI7QUFBQSxZQUNoRixjQUFjRDtBQUFBLFVBQ2hCLENBQUM7QUFBQSxRQUNIO0FBQUEsTUFDRjtBQUNBLGFBQU8sS0FBSyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyx1QkFBdUIsS0FBSyxxQkFBcUI7QUFBQSxRQUNsSCxDQUFDNUMsR0FBRSxJQUFJLEdBQUc7QUFBQSxRQUNWLENBQUNBLEdBQUUsV0FBVyxHQUFHO0FBQUEsUUFDakIsQ0FBQ0EsR0FBRSxXQUFXLEdBQUc7QUFBQSxRQUNqQixDQUFDQSxHQUFFLFFBQVEsR0FBRztBQUFBLFFBQ2QsQ0FBQ0EsR0FBRSxVQUFVLEdBQUc7QUFBQSxNQUNsQixJQUFJLEtBQUssbUJBQW1CNEMsQ0FBQyxJQUFJLEdBQUc7QUFBQSxJQUN0QyxHQUFHLEtBQUssbUJBQW1CLENBQUNBLE1BQU07QUFDaEMsWUFBTUMsSUFBSSxJQUFJLGdCQUFnQjtBQUM5QixhQUFPQSxFQUFFLE9BQU8sV0FBVyxLQUFLLFFBQVEsR0FBR0EsRUFBRSxPQUFPLFVBQVUsS0FBSyxNQUFNLEdBQUdELEVBQUUsVUFBVUMsRUFBRSxPQUFPLFVBQVVLLEdBQUdOLEVBQUUsTUFBTSxDQUFDLEdBQUdDLEVBQUUsT0FBTyxlQUFlLEtBQUssT0FBTyxtQkFBbUIsR0FBR0E7QUFBQSxJQUN0TCxHQUFHLEtBQUssbUJBQW1CLENBQUNELE1BQU07QUFDaEMsTUFBQWtWLEdBQUdsVixFQUFFLElBQUksRUFBRSxLQUFLLENBQUNDLE1BQU07QUFDckIsYUFBSyxrQkFBa0IsY0FBY0QsRUFBRSxNQUFNQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVcsUUFBUSxhQUFhRCxFQUFFLFNBQVM1QyxHQUFFLGNBQWMsS0FBSyxXQUFXLElBQUk2QyxDQUFDO0FBQUEsTUFDekksQ0FBQyxFQUFFLE1BQU0sQ0FBQ0EsTUFBTXVWLEdBQUUseUNBQXlDdlYsQ0FBQyxDQUFDO0FBQUEsSUFDL0QsR0FBRyxLQUFLLGFBQWEsTUFBTSxTQUFTLGNBQWMsS0FBSyxVQUFVLEtBQUssU0FBUyxNQUFNLEtBQUssYUFBYSxDQUFDRCxNQUFNO0FBQzVHLFVBQUksRUFBRSxlQUFlLEVBQUUsR0FBR0EsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLG9CQUFvQixZQUFZLEdBQUc7QUFDdkUsVUFBRSwwQkFBMEI7QUFBQSxVQUMxQixRQUFRO0FBQUEsUUFDVixDQUFDO0FBQ0Q7QUFBQSxNQUNGO0FBQ0EsWUFBTUMsSUFBSSxLQUFLLFFBQVEscUJBQXFCLElBQUk7QUFDaEQsVUFBSSxDQUFDQSxHQUFHO0FBQ04sUUFBQXVWLEdBQUUsK0RBQStEO0FBQ2pFO0FBQUEsTUFDRjtBQUNBLE1BQUFwSSxFQUFFLFNBQVMsSUFBSTtBQUFBLFFBQ2IsU0FBU25OO0FBQUEsUUFDVCx1QkFBdUI0UyxHQUFHNVMsRUFBRSx3QkFBd0IsYUFBYTtBQUFBLFFBQ2pFLGtCQUFrQk0sR0FBR04sRUFBRSxPQUFPO0FBQUEsUUFDOUIsZUFBZSxLQUFLO0FBQUEsUUFDcEIsY0FBYztBQUFBLFVBQ1osdUJBQXVCLEtBQUssa0JBQWtCLGtCQUFrQjtBQUFBLFVBQ2hFLGdCQUFnQkQsS0FBSyxPQUFPLFNBQVNBLEVBQUU7QUFBQSxRQUN6QztBQUFBLFFBQ0EsWUFBWTtBQUFBO0FBQUEsTUFFZCxDQUFDO0FBQUEsSUFDSCxHQUFHLEtBQUssNkJBQTZCLE1BQU07QUFDekMsVUFBSSxDQUFDLEtBQUssb0JBQW9CLDRCQUE0QjtBQUN4RCxlQUFPLENBQUM7QUFDVixVQUFJLENBQUMsS0FBSyxRQUFRLHFCQUFxQixJQUFJLEdBQUc7QUFDNUMsUUFBQXdWLEdBQUUsc0ZBQXNGO0FBQ3hGO0FBQUEsTUFDRjtBQUNBLFlBQU0sSUFBSTtBQUFBLFFBQ1Isb0JBQW9CN1ksRUFBRTtBQUFBLFFBQ3RCLG1CQUFtQkEsRUFBRTtBQUFBLFFBQ3JCLHVCQUF1QkEsRUFBRTtBQUFBLFFBQ3pCLHNCQUFzQkEsRUFBRTtBQUFBLE1BQzFCLEdBQUcwRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQzRLLEdBQUdpQyxDQUFDLE9BQU87QUFBQSxRQUNyRCxNQUFNLEVBQUVqQyxDQUFDLEtBQUtBO0FBQUEsUUFDZCxHQUFHaUMsRUFBRSxVQUFVLHFCQUFxQixJQUFJO0FBQUEsTUFDMUMsRUFBRTtBQUNGLGFBQU8sRUFBRSxpQ0FBaUM7QUFBQSxRQUN4QywyQkFBMkI3TTtBQUFBLE1BQzdCLENBQUMsR0FBR0E7QUFBQSxJQUNOLEdBQUcsS0FBSyxnQkFBZ0IsQ0FBQ0wsR0FBR0MsTUFBTTtBQUNoQyxVQUFJLEVBQUUsdUJBQXVCO0FBQUEsUUFDM0IsUUFBUUQ7QUFBQSxRQUNSLFVBQVVDO0FBQUEsTUFDWixDQUFDLEdBQUcsQ0FBQyxLQUFLLG9CQUFvQixlQUFlLEdBQUc7QUFDOUMsVUFBRSwwQkFBMEI7QUFBQSxVQUMxQixRQUFRO0FBQUEsUUFDVixDQUFDO0FBQ0Q7QUFBQSxNQUNGO0FBQ0EsWUFBTSxJQUFJLEtBQUssUUFBUSxxQkFBcUIsSUFBSTtBQUNoRCxVQUFJLENBQUMsR0FBRztBQUNOLFFBQUF1VixHQUFFLCtEQUErRDtBQUNqRTtBQUFBLE1BQ0Y7QUFDQSxjQUFReFYsR0FBRztBQUFBLFFBQ1QsS0FBS3JELEVBQUU7QUFDTCxpQkFBT3lRLEVBQUUsYUFBYSxJQUFJO0FBQUEsWUFDeEIsU0FBUztBQUFBLFlBQ1QsdUJBQXVCeUYsR0FBRyxFQUFFLHdCQUF3QixVQUFVLFFBQVE7QUFBQSxZQUN0RSxrQkFBa0J0UyxHQUFHLEVBQUUsT0FBTztBQUFBLFlBQzlCLGVBQWUsS0FBSztBQUFBLFlBQ3BCLGNBQWMsRUFBRSxVQUFVTixFQUFFO0FBQUEsWUFDNUIsWUFBWTtBQUFBLFVBQ2QsQ0FBQztBQUFBLFFBQ0gsS0FBS3RELEVBQUUsb0JBQW9CO0FBQ3pCLGdCQUFNLElBQUksS0FBSyxVQUFVLG1CQUFtQixVQUFVLHFCQUFxQixJQUFJO0FBQy9FLGNBQUksQ0FBQyxHQUFHO0FBQ04sWUFBQTZZO0FBQUEsY0FDRTtBQUFBLFlBQ0Y7QUFDQTtBQUFBLFVBQ0Y7QUFDQSxpQkFBTyxFQUFFLFVBQVV2VixDQUFDO0FBQUEsUUFDdEI7QUFBQSxRQUNBLEtBQUt0RCxFQUFFLG1CQUFtQjtBQUN4QixnQkFBTSxJQUFJLEtBQUssVUFBVSxrQkFBa0IsVUFBVSxxQkFBcUIsSUFBSTtBQUM5RSxjQUFJLENBQUMsR0FBRztBQUNOLFlBQUE2WTtBQUFBLGNBQ0U7QUFBQSxZQUNGO0FBQ0E7QUFBQSxVQUNGO0FBQ0EsaUJBQU8sRUFBRSxVQUFVdlYsQ0FBQztBQUFBLFFBQ3RCO0FBQUEsUUFDQSxLQUFLdEQsRUFBRSx1QkFBdUI7QUFDNUIsZ0JBQU0sSUFBSSxLQUFLLFVBQVUsc0JBQXNCLFVBQVUscUJBQXFCLElBQUk7QUFDbEYsY0FBSSxDQUFDLEdBQUc7QUFDTixZQUFBNlk7QUFBQSxjQUNFO0FBQUEsWUFDRjtBQUNBO0FBQUEsVUFDRjtBQUNBLGlCQUFPLEVBQUUsVUFBVXZWLENBQUM7QUFBQSxRQUN0QjtBQUFBLFFBQ0EsS0FBS3RELEVBQUUsc0JBQXNCO0FBQzNCLGdCQUFNLElBQUksS0FBSyxVQUFVLHFCQUFxQixVQUFVLHFCQUFxQixJQUFJO0FBQ2pGLGNBQUksQ0FBQyxHQUFHO0FBQ04sWUFBQTZZO0FBQUEsY0FDRTtBQUFBLFlBQ0Y7QUFDQTtBQUFBLFVBQ0Y7QUFDQSxpQkFBTyxFQUFFLFVBQVV2VixDQUFDO0FBQUEsUUFDdEI7QUFBQSxRQUNBLEtBQUt0RCxFQUFFO0FBQ0wsaUJBQU95USxFQUFFLFdBQVcsSUFBSTtBQUFBLFlBQ3RCLFNBQVM7QUFBQSxZQUNULHVCQUF1QnlGLEdBQUcsRUFBRSx3QkFBd0IsVUFBVSxNQUFNO0FBQUEsWUFDcEUsa0JBQWtCdFMsR0FBRyxFQUFFLE9BQU87QUFBQSxZQUM5QixlQUFlLEtBQUs7QUFBQSxZQUNwQixjQUFjTjtBQUFBLFlBQ2QsWUFBWTtBQUFBLFVBQ2QsQ0FBQztBQUFBLFFBQ0g7QUFDRSxVQUFBc0ksR0FBR3ZJLENBQUM7QUFBQSxNQUNSO0FBQUEsSUFDRixHQUFHLEtBQUssU0FBUyxLQUFLLFlBQVksS0FBSyxVQUFVLE1BQU07QUFDckQsVUFBSUE7QUFDSixVQUFJdVYsR0FBRSw0QkFBNEIsR0FBRyxDQUFDLENBQUMsS0FBSyxvQkFBb0IsU0FBUyxHQUFHO0FBQzFFLGFBQUssY0FBYztBQUNuQixtQkFBV3RWLEtBQUssT0FBTyxPQUFPLEtBQUssc0JBQXNCLENBQUMsQ0FBQztBQUN6RCxVQUFBQSxLQUFLQSxFQUFFLEtBQUssT0FBTztBQUNyQixTQUFDRCxJQUFJNEksRUFBRSxNQUFNLFFBQVE1SSxFQUFFLG9CQUFvQixXQUFXLEtBQUssYUFBYSxjQUFjLEtBQUssS0FBSyxZQUFZLENBQUMsR0FBR3FKLEdBQUcsR0FBRyxLQUFLLHFCQUFxQixNQUFNLE9BQU8sT0FBTyxLQUFLLEVBQUUsZ0JBQWdCO0FBQUEsTUFDN0w7QUFBQSxJQUNGLEdBQUcsS0FBSyxrQkFBa0IsQ0FBQ3JKLE1BQU07QUFDL0IsV0FBSyxjQUFjLGFBQWFBLENBQUM7QUFBQSxJQUNuQyxHQUFHeVYsR0FBRSxrQkFBa0IsSUFBSSxHQUFHLEtBQUssYUFBYSxVQUFVLEtBQUssb0JBQW9CLGVBQWUsS0FBSyxVQUFVdlosRUFBRSxXQUFXLDhCQUE4QixLQUFLLFNBQVMsRUFBRSxHQUFHQSxHQUFHLFNBQVMsS0FBSyxRQUFRLEdBQUcsS0FBSyxnQkFBZ0J5WCxHQUFHLFdBQVd6WCxDQUFDLEdBQUcsS0FBSyxxQkFBcUIsTUFBTSxLQUFLLFNBQVMsYUFBYWIsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLE9BQU8sU0FBUyxRQUFRLEtBQUssYUFBYWEsRUFBRSxjQUFjLFFBQVEsS0FBSyxpQkFBaUIsRUFBRSxRQUFRLE1BQU0sR0FBRyxLQUFLLG9CQUFvQixJQUFJaVosR0FBRyxHQUFHLEtBQUssY0FBY1IsR0FBRyxHQUFHdkwsR0FBRztBQUMvZSxVQUFNLEVBQUUsV0FBVzVNLEdBQUcsU0FBU0MsRUFBRSxJQUFJc1ksR0FBRztBQUN4QyxPQUFHLEtBQUssT0FBTyxFQUFFLEtBQUssQ0FBQy9VLE1BQU07QUFDM0IsVUFBSSxDQUFDNkksR0FBRyxRQUFRLFdBQVc7QUFDekIsY0FBTTVJLElBQUk7QUFBQSxVQUNSLHFCQUFxQixLQUFLLE9BQU87QUFBQSxVQUNqQyxhQUFhLEtBQUs7QUFBQSxVQUNsQixhQUFhRDtBQUFBLFVBQ2IsV0FBV3hEO0FBQUEsVUFDWCxrQkFBa0JDO0FBQUEsVUFDbEIsWUFBWSxLQUFLO0FBQUEsVUFDakIsbUJBQW1CLEtBQUs7QUFBQSxVQUN4QixVQUFVLEtBQUs7QUFBQSxVQUNmLFNBQVMsS0FBSztBQUFBLFFBQ2hCO0FBQ0EsUUFBQW9NLEdBQUcsSUFBSTVJLENBQUM7QUFBQSxNQUNWO0FBQUEsSUFDRixDQUFDLEdBQUcsRUFBRSxXQUFXLEdBQUcsS0FBSyxlQUFlLElBQUkrVSxHQUFHLEtBQUssUUFBUSxLQUFLLFNBQVMsS0FBSyxlQUFlO0FBQUEsTUFDNUYsZUFBZSxLQUFLO0FBQUEsTUFDcEIsYUFBYSxLQUFLO0FBQUEsTUFDbEIsZ0JBQWdCLEtBQUs7QUFBQSxJQUN2QixDQUFDLElBQUl0WSxJQUFJa00sRUFBRSxNQUFNLFFBQVFsTSxFQUFFLGlCQUFpQixXQUFXLEtBQUssYUFBYSxjQUFjLEtBQUssS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLGNBQWM7QUFBQSxFQUN0STtBQUFBLEVBQ0EsSUFBSSxzQkFBc0I7QUFDeEIsV0FBTyxLQUFLLE9BQU87QUFBQSxFQUNyQjtBQUFBLEVBQ0Esb0JBQW9CUixJQUFJLFdBQVc7QUFDakMsVUFBTU0sSUFBSWlaLEdBQUUsWUFBWSxHQUFHaFosSUFBSTtBQUFBLE1BQzdCLFFBQVFQO0FBQUEsTUFDUixZQUFZLEtBQUs7QUFBQSxNQUNqQixnQkFBZ0JNLEtBQUssT0FBTyxTQUFTQSxFQUFFLFdBQVc7QUFBQSxNQUNsRCxhQUFhLEtBQUs7QUFBQSxNQUNsQixlQUFlLEtBQUssT0FBTyxvQkFBb0IsVUFBVSxHQUFHLEVBQUUsSUFBSTtBQUFBLElBQ3BFLEdBQUdFLElBQUk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBTU9SLENBQUM7QUFBQSwwQkFDT08sRUFBRSxVQUFVO0FBQUEsa0NBQ0pBLEVBQUUsYUFBYTtBQUFBLHdCQUN6QkEsRUFBRSxXQUFXO0FBQUEsMEJBQ1hBLEVBQUUsYUFBYTtBQUFBO0FBRXJDLFdBQU8sS0FBSyxlQUFlLENBQUNELEtBQUtBLEVBQUUsV0FBVyxLQUFLLFVBQVVnWixHQUFFOVksQ0FBQyxHQUFHLE1BQU07QUFBQSxFQUMzRTtBQUNGO0FBQ0ErWSxHQUFFLFdBQVdySSxHQUFHcUksR0FBRSxvQkFBb0IsQ0FBQ3ZaLE1BQU07QUFDM0MsTUFBSXVaLEdBQUUsWUFBWTtBQUNoQixVQUFNLElBQUksTUFBTSxnRUFBZ0U7QUFDbEYsU0FBTyxNQUFNdlo7QUFDZixHQUFHdVosR0FBRSxjQUFjLE1BQU0sT0FBTyxPQUFPLE1BQU1BLEdBQUUsc0JBQXNCLENBQUN2WixHQUFHLEdBQUcsR0FBR1EsT0FBTztBQUFBLEVBQ3BGLHFCQUFxQlIsRUFBRTtBQUFBLEVBQ3ZCLFNBQVMsSUFBSSxJQUFJQSxFQUFFLFdBQVdQLEVBQUUsRUFBRTtBQUFBLEVBQ2xDLFNBQVNlO0FBQUEsRUFDVCxtQkFBbUIsRUFBRTtBQUFBLEVBQ3JCLHdCQUF3QixFQUFFO0FBQUEsRUFDMUIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCUixFQUFFLG9CQUFvQixDQUFDO0FBQzNDO0FBQ0EsSUFBSXdaLEtBQUtEO0FBRVQsTUFBTUUsS0FBNEJ2YSxFQUFJLE9BQU87QUFBQSxFQUMzQyxNQUFNQSxFQUFJLE9BQU87QUFBQSxFQUNqQixLQUFLQSxFQUFJLE1BQU1BLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDM0IsS0FBS0EsRUFBSSxPQUFPO0FBQUEsRUFDaEIsS0FBS0EsRUFBSSxPQUFPO0FBQ2xCLENBQUM7QUFDREEsRUFBSSxNQUFNdWEsRUFBeUI7QUFDbkMsTUFBTUMsS0FBZ0J4YSxFQUFJLE9BQU87QUFBQSxFQUMvQixNQUFNQSxFQUFJLE9BQU87QUFBQSxFQUNqQixTQUFTQSxFQUFJLE9BQU87QUFBQSxFQUNwQixNQUFNQSxFQUFJLE1BQU1BLEVBQUksT0FBTyxDQUFDO0FBQzlCLENBQUM7QUFDREEsRUFBSSxNQUFNd2EsRUFBYTtBQUN2QixNQUFNQyxLQUFtQixDQUFDQyxHQUFjQyxHQUFJQyxNQUNuQyxJQUFJQyxNQUFTO0FBQ2xCLE1BQUk7QUFDRixXQUFPRixFQUFHLEdBQUdFLENBQUk7QUFBQSxFQUNuQixTQUFTQyxHQUFPO0FBQ2QsSUFBQUYsRUFBWSxrQ0FBa0NGLENBQVksTUFBTUksQ0FBSztBQUNyRTtBQUFBLEVBQ0Y7QUFDRjtBQUdGLElBQUlDLEtBQWlDLGtCQUFDQyxPQUNwQ0EsRUFBZSxlQUFrQixpQkFDakNBLEVBQWUscUJBQXdCLHdCQUN2Q0EsRUFBZSxvQkFBdUIsdUJBQ3RDQSxFQUFlLHdCQUEyQiwyQkFDMUNBLEVBQWUsdUJBQTBCLDBCQUN6Q0EsRUFBZSxhQUFnQixlQUN4QkEsSUFDTkQsTUFBaUIsQ0FBQyxDQUFDO0FBQ3RCL2EsRUFBSSxXQUFXK2EsRUFBYTtBQUU1QixNQUFNRSxJQUFpQmpiLEVBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBRSxTQUFTLGtCQUFrQixDQUFDLEdBQzFFa2IsSUFBaUJsYixFQUFJLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxHQUM5Q21iLElBQWtCLENBQUNDLE1BQVVwYixFQUFJLFNBQVNvYixFQUFNLFNBQVMsQ0FBQztBQUNoRSxJQUFJQyxLQUE2QixrQkFBQ0MsT0FDaENBLEVBQVcsYUFBZ0IsYUFDM0JBLEVBQVcsWUFBZSxZQUMxQkEsRUFBVyxRQUFXLFNBQ3RCQSxFQUFXLFdBQWMsV0FDekJBLEVBQVcsT0FBVSxRQUNyQkEsRUFBVyxRQUFXLFNBQ3RCQSxFQUFXLFVBQWEsV0FDeEJBLEVBQVcsVUFBYSxXQUN4QkEsRUFBVyxRQUFXLFNBQ3RCQSxFQUFXLGlCQUFvQixpQkFDeEJBLElBQ05ELE1BQWEsQ0FBQyxDQUFDO0FBQ2xCLE1BQU1FLEtBQWdCdmIsRUFBSSxXQUFXcWIsRUFBUztBQUM5QyxJQUFJRyxLQUFvQyxrQkFBQ0MsT0FDdkNBLEVBQWtCLGNBQWlCLGNBQ25DQSxFQUFrQixjQUFpQixjQUNuQ0EsRUFBa0IsV0FBYyxXQUN6QkEsSUFDTkQsTUFBb0IsQ0FBQyxDQUFDO0FBQ3pCLE1BQU1FLEtBQXVCMWIsRUFBSSxXQUFXd2IsRUFBZ0IsR0FDdERHLEtBQWdCM2IsRUFBSSxNQUFNLENBQUN1YixJQUFlRyxFQUFvQixDQUFDO0FBQ3JFLElBQUlFLEtBQW1DLGtCQUFDQyxPQUN0Q0EsRUFBaUIsT0FBVSxRQUMzQkEsRUFBaUIsY0FBaUIsZUFDbENBLEVBQWlCLGNBQWlCLGVBQ2xDQSxFQUFpQixXQUFjLFlBQy9CQSxFQUFpQixhQUFnQixjQUMxQkEsSUFDTkQsTUFBbUIsQ0FBQyxDQUFDO0FBQ3hCNWIsRUFBSSxXQUFXNGIsRUFBZTtBQUM5QixNQUFNRSxLQUEwQjliLEVBQUksT0FBTztBQUFBLEVBQ3pDLFVBQVVBLEVBQUksT0FBTztBQUFBLEVBQ3JCLGdCQUFnQm1iLEVBQWdCbmIsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUM1QyxVQUFVbWIsRUFBZ0JuYixFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxDQUFDO0FBQy9ELENBQUMsR0FDSytiLEtBQXVCL2IsRUFBSSxPQUFPO0FBQUEsRUFDdEMsSUFBSUEsRUFBSSxPQUFPO0FBQ2pCLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxZQUFZa2I7QUFBQSxFQUNaLFFBQVFBO0FBQUEsRUFDUixLQUFLQTtBQUNQLENBQUM7QUFDRGxiLEVBQUksT0FBTztBQUFBLEVBQ1QsaUJBQWlCa2I7QUFBQSxFQUNqQixPQUFPQTtBQUFBLEVBQ1AsWUFBWUE7QUFBQSxFQUNaLFVBQVVBO0FBQUEsRUFDVixZQUFZQTtBQUFBLEVBQ1osUUFBUUE7QUFBQSxFQUNSLFNBQVNBO0FBQUEsRUFDVCxlQUFlQTtBQUFBLEVBQ2YsWUFBWUE7QUFBQSxFQUNaLFVBQVVBO0FBQ1osQ0FBQztBQUNELE1BQU1jLEtBQVloYyxFQUFJLEtBQUs7QUFBQTtBQUFBLEVBRXpCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBLEVBRUE7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUMsR0FDS2ljLEtBQW1CRCxHQUFVLFFBQVEsQ0FBQyxvQkFBb0Isa0JBQWtCLENBQUMsR0FDN0VFLEtBQXNCbGMsRUFBSSxPQUFPLEVBQUUsTUFBTWljLEdBQWlCLENBQUMsR0FDM0RFLEtBQWlCSCxHQUFVLFFBQVEsQ0FBQyxRQUFRLFNBQVMsUUFBUSxDQUFDLEdBQzlESSxLQUFvQnBjLEVBQUksT0FBTztBQUFBLEVBQ25DLE1BQU1tYztBQUFBLEVBQ04sYUFBYVQ7QUFBQSxFQUNiLFFBQVExYixFQUFJLE1BQU1BLEVBQUksT0FBTyxDQUFDLEVBQUUsU0FBUztBQUMzQyxDQUFDLEdBQ0txYyxLQUFpQkwsR0FBVSxRQUFRLENBQUMsY0FBYyxrQkFBa0IsZ0JBQWdCLENBQUMsR0FDckZNLEtBQW9CdGMsRUFBSSxPQUFPO0FBQUEsRUFDbkMsTUFBTXFjO0FBQUEsRUFDTixTQUFTcEI7QUFBQSxFQUNULFNBQVNqYixFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLE9BQU8sQ0FBQyxFQUFFLFNBQVM7QUFDM0QsQ0FBQyxHQUNLdWMsS0FBMkJQLEdBQVUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQ2pFUSxLQUE4QnhjLEVBQUksT0FBTztBQUFBLEVBQzdDLE1BQU11YztBQUFBLEVBQ04sYUFBYVo7QUFBQSxFQUNiLFFBQVEzYixFQUFJLE1BQU1BLEVBQUksT0FBTyxDQUFDO0FBQ2hDLENBQUMsR0FDS3ljLEtBQXFCemMsRUFBSSxPQUFPO0FBQUEsRUFDcEMsTUFBTUEsRUFBSSxRQUFRZ2MsR0FBVSxLQUFLLE1BQU07QUFBQSxFQUN2QyxRQUFRZjtBQUNWLENBQUMsR0FDS3lCLEtBQXFCMWMsRUFBSSxPQUFPO0FBQUEsRUFDcEMsTUFBTUEsRUFBSSxRQUFRZ2MsR0FBVSxLQUFLLE1BQU07QUFBQSxFQUN2QyxXQUFXZjtBQUFBLEVBQ1gsa0JBQWtCamIsRUFBSSxPQUFPO0FBQUEsRUFDN0IsVUFBVWtiO0FBQUEsRUFDVix3QkFBd0JsYixFQUFJLE1BQU04YixFQUF1QjtBQUMzRCxDQUFDLEdBQ0thLEtBQWlDM2MsRUFBSSxPQUFPO0FBQUEsRUFDaEQsTUFBTUEsRUFBSSxRQUFRZ2MsR0FBVSxLQUFLLG9CQUFvQjtBQUFBLEVBQ3JELG9CQUFvQmhjLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDO0FBQUEsRUFDdEQscUJBQXFCQSxFQUFJLElBQUksRUFBRSxTQUFTO0FBQUEsRUFDeEMsaUJBQWlCQSxFQUFJLFNBQVNBLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDLENBQUM7QUFDbkUsQ0FBQyxHQUNLNGMsS0FBbUM1YyxFQUFJLE9BQU87QUFBQSxFQUNsRCxNQUFNQSxFQUFJLFFBQVFnYyxHQUFVLEtBQUssNEJBQTRCO0FBQUEsRUFDN0QsaUJBQWlCaGMsRUFBSSxPQUFPO0FBQzlCLENBQUMsR0FDSzZjLEtBQXFCN2MsRUFBSSxPQUFPO0FBQUEsRUFDbkMsV0FBK0JpYjtBQUFBLEVBQy9CLFVBQTZCQTtBQUFBLEVBQzdCLE9BQXNCQTtBQUFBLEVBQ3RCLFNBQTJCQTtBQUFBLEVBQzNCLFNBQTBCQTtBQUFBLEVBQzFCLGVBQXVDQztBQUMxQyxDQUFDLEdBQ0s0QixLQUFlOWMsRUFBSSxPQUFPO0FBQUEsRUFDN0IsV0FBK0JrYjtBQUFBLEVBQy9CLFVBQTZCQTtBQUFBLEVBQzdCLE9BQXNCRDtBQUFBLEVBQ3RCLFNBQTJCQTtBQUFBLEVBQzNCLFNBQTBCQTtBQUFBLEVBQzFCLGVBQXVDQztBQUFBLEVBQ3ZDLFNBQTBCQTtBQUFBLEVBQzFCLE1BQW9CQTtBQUFBLEVBQ3BCLE9BQXNCQTtBQUN6QixDQUFDLEdBQ0s2QixLQUFrQmYsR0FBVSxRQUFRLENBQUMsWUFBWSxZQUFZLG9CQUFvQixDQUFDLEdBQ2xGZ0IsS0FBcUJoZCxFQUFJLE9BQU87QUFBQSxFQUNwQyxNQUFNK2M7QUFBQSxFQUNOLFdBQVc5QjtBQUFBLEVBQ1gsdUJBQXVCYTtBQUFBLEVBQ3ZCLHFCQUFxQjliLEVBQUksSUFBSSxFQUFFLFNBQVM7QUFBQSxFQUN4QyxzQkFBc0JBLEVBQUksUUFBUSxFQUFFLFNBQVM7QUFBQSxFQUM3QyxnQkFBZ0JrYjtBQUFBLEVBQ2hCLGdCQUFnQkE7QUFDbEIsQ0FBQyxFQUFFLE9BQU8yQixHQUFtQixLQUFLLEdBQzVCSSxLQUE4QmpkLEVBQUksT0FBTztBQUFBLEVBQzdDLE1BQU1BLEVBQUksUUFBUWdjLEdBQVUsS0FBSyxnQkFBZ0I7QUFBQSxFQUNqRCxvQkFBb0JoYyxFQUFJLFFBQVE7QUFDbEMsQ0FBQyxHQUNLa2QsS0FBOEJsZCxFQUFJLE9BQU87QUFBQSxFQUM3QyxNQUFNQSxFQUFJLFFBQVFnYyxHQUFVLEtBQUssZ0JBQWdCO0FBQUEsRUFDakQsYUFBYWhjLEVBQUksTUFBTUEsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUNuQyxpQkFBaUJBLEVBQUksTUFBTUEsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUN2QyxZQUFZQSxFQUFJLE9BQU87QUFDekIsQ0FBQyxHQUNLbWQsS0FBZW5kLEVBQUksbUJBQW1CLFFBQVE7QUFBQSxFQUNsRGtjO0FBQUEsRUFDQUU7QUFBQSxFQUNBRTtBQUFBLEVBQ0FFO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FNO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FQO0FBQUEsRUFDQUM7QUFDRixDQUFDO0FBQ0Q1YyxFQUFJLE9BQU87QUFBQSxFQUNULFNBQVNtZDtBQUFBLEVBQ1QsT0FBT2xDO0FBQUEsRUFDUCxRQUFRQTtBQUFBLEVBQ1IsV0FBV0E7QUFDYixDQUFDO0FBQ0RqYixFQUFJLE9BQU87QUFBQSxFQUNULFlBQVlBLEVBQUksT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSXZCLFVBQVVpYjtBQUNaLENBQUM7QUFDRGpiLEVBQUksS0FBSyxDQUFDLGFBQWEsWUFBWSxDQUFDO0FBQ3BDQSxFQUFJLE9BQU87QUFBQSxFQUNULGNBQWNBLEVBQUksT0FBTztBQUFBLEVBQ3pCLGdCQUFnQkEsRUFBSSxPQUFPLEVBQUUsU0FBUztBQUN4QyxDQUFDO0FBQ0RBLEVBQUksT0FBTztBQUFBLEVBQ1QsY0FBY0EsRUFBSSxPQUFPO0FBQUEsRUFDekIsbUJBQW1CbWIsRUFBZ0JuYixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQy9DLGFBQWFtYixFQUFnQm5iLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDekMscUJBQXFCbWIsRUFBZ0JuYixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ2pELDZCQUE2Qm1iLEVBQWdCbmIsRUFBSSxPQUFPQSxFQUFJLE9BQU8sR0FBR0EsRUFBSSxJQUFJLENBQUMsQ0FBQztBQUNsRixDQUFDO0FBQ0QsTUFBTW9kLEtBQTBCcGQsRUFBSSxPQUFPO0FBQUEsRUFDekMsY0FBY0EsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3BDLGtCQUFrQkEsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3hDLGFBQWFBLEVBQUksT0FBTztBQUFBLEVBQ3hCLGlCQUFpQm1iLEVBQWdCbmIsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQzFELENBQUMsR0FDS3FkLEtBQXVCcmQsRUFBSSxPQUFPO0FBQUEsRUFDdEMsYUFBYUEsRUFBSSxPQUFPO0FBQUEsRUFDeEIsUUFBUUEsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQztBQUNoQyxDQUFDO0FBQ0RBLEVBQUksT0FBTztBQUFBLEVBQ1QsWUFBWUEsRUFBSSxPQUFPO0FBQ3pCLENBQUM7QUFDRCxNQUFNc2QsS0FBNEJ0ZCxFQUFJLE9BQU87QUFBQSxFQUMzQyxTQUFTQSxFQUFJLFFBQVEsRUFBSztBQUFBLEVBQzFCLFlBQVlBLEVBQUksUUFBUSxrQkFBa0I7QUFBQSxFQUMxQyxRQUFRQSxFQUFJLE1BQU1xZCxFQUFvQjtBQUN4QyxDQUFDO0FBQ0RyZCxFQUFJLG1CQUFtQixXQUFXO0FBQUEsRUFDaENBLEVBQUksT0FBTyxFQUFFLFNBQVNBLEVBQUksUUFBUSxFQUFJLEVBQUUsQ0FBQztBQUFBLEVBQ3pDc2Q7QUFDRixDQUFDO0FBQ0R0ZCxFQUFJLE9BQU87QUFBQSxFQUNULFlBQVlBLEVBQUksT0FBTztBQUFBLEVBQ3ZCLHlCQUF5QjhiO0FBQUEsRUFDekIscUJBQXFCZTtBQUFBLEVBQ3JCLDJCQUEyQjdjLEVBQUksUUFBUSxFQUFFLFNBQVM7QUFBQSxFQUNsRCxtQkFBbUJtYixFQUFnQm5iLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDL0MsZ0JBQWdCQSxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQztBQUFBLEVBQ2xELGtCQUFrQm1iLEVBQWdCbmIsRUFBSSxPQUFPLENBQUM7QUFDaEQsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULFlBQVlBLEVBQUksT0FBTztBQUFBLEVBQ3ZCLHlCQUF5QjhiO0FBQUEsRUFDekIscUJBQXFCZTtBQUFBLEVBQ3JCLGdCQUFnQjdjLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDLEVBQUUsU0FBUztBQUFBLEVBQzdELGtCQUFrQm1iLEVBQWdCbmIsRUFBSSxPQUFPLENBQUM7QUFDaEQsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULFFBQVFBLEVBQUksS0FBSztBQUFBLElBQUM7QUFBQSxJQUF5QjtBQUFBLElBQXlCO0FBQUE7QUFBQSxFQUEyQixDQUFDO0FBQUEsRUFDaEcsTUFBTUEsRUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVM7QUFDekMsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULE1BQU1BLEVBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTO0FBQ3pDLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxNQUFNQSxFQUFJLE9BQU87QUFBQSxFQUNqQixjQUFjQSxFQUFJLE9BQU87QUFBQSxFQUN6QixtQkFBbUJBLEVBQUksT0FBTztBQUFBLEVBQzlCLFlBQVlBLEVBQUksT0FBTztBQUFBLEVBQ3ZCLGFBQWFBLEVBQUksT0FBTyxFQUFFLFNBQVM7QUFDckMsQ0FBQztBQUNELE1BQU11ZCxLQUEyQnZkLEVBQUksT0FBTztBQUFBLEVBQzFDLE1BQU1BLEVBQUksT0FBTztBQUFBLEVBQ2pCLGNBQWNtYixFQUFnQm5iLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDMUMsbUJBQW1CbWIsRUFBZ0JuYixFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQy9DLFlBQVltYixFQUFnQm5iLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDeEMsYUFBYW1iLEVBQWdCbmIsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUN6QyxpQkFBaUJtYixFQUFnQm5iLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUNEQSxFQUFJLG1CQUFtQixXQUFXO0FBQUEsRUFDaENBLEVBQUksT0FBTyxFQUFFLFNBQVNBLEVBQUksUUFBUSxFQUFJLEdBQUcsTUFBTUEsRUFBSSxPQUFPLEVBQUUsQ0FBQztBQUFBLEVBQzdEQSxFQUFJLE9BQU8sRUFBRSxTQUFTQSxFQUFJLFFBQVEsRUFBSyxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULGlCQUFpQkEsRUFBSSxNQUFNK2IsRUFBb0I7QUFBQSxFQUMvQyw0QkFBNEJaLEVBQWdCaUMsRUFBdUI7QUFBQSxFQUNuRSx1QkFBdUJqQyxFQUFnQm5iLEVBQUksTUFBTXVkLEVBQXdCLENBQUM7QUFDNUUsQ0FBQztBQUVEdmQsRUFBSSxPQUFPO0FBQUEsRUFDVCxXQUFXQSxFQUFJLE9BQU87QUFBQSxFQUN0QixlQUFlQSxFQUFJLE9BQU87QUFBQSxFQUMxQixjQUFjQSxFQUFJLE9BQU87QUFDM0IsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULE1BQU1BLEVBQUksT0FBTztBQUFBLEVBQ2pCLGVBQWVBLEVBQUksT0FBTztBQUFBLEVBQzFCLFdBQVdBLEVBQUksT0FBTztBQUN4QixDQUFDO0FBRUQsTUFBTXdkLEtBQTZCLENBQUNDLE1BQ1QsS0FBSyxVQUFVQSxDQUFNLEdBSTFDQyxJQUFnQixDQUFDdEMsTUFBVXBiLEVBQUksU0FBU29iLEVBQU0sU0FBUyxDQUFDO0FBQzlEcGIsRUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLFNBQVMsa0JBQWtCLENBQUM7QUFDekRBLEVBQUksT0FBTztBQUFBLEVBQ1QsbUJBQW1CQSxFQUFJLFFBQVEsT0FBTztBQUFBLEVBQ3RDLFNBQVNBLEVBQUksT0FBTztBQUFBLEVBQ3BCLFNBQVNBLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksT0FBTyxDQUFDLEVBQUUsU0FBUztBQUMzRCxDQUFDO0FBQ0RBLEVBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDO0FBQ3ZCLE1BQU0yZCxLQUFnQjNkLEVBQUksT0FBTztBQUFBLEVBQy9CLE1BQU1BLEVBQUksT0FBTztBQUFBLEVBQ2pCLGlCQUFpQjBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzNDLGFBQWEwZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUN2QyxVQUFVMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDcEMsVUFBVUEsRUFBSSxPQUFPO0FBQUEsRUFDckIsb0JBQW9CMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQ2hELENBQUMsR0FDSzRkLEtBQVc1ZCxFQUFJLE9BQU87QUFBQSxFQUMxQixzQkFBc0JBLEVBQUksT0FBTyxFQUFFLElBQUk7QUFBQSxFQUN2QyxtQkFBbUJBLEVBQUksT0FBTyxFQUFFLElBQUk7QUFBQSxFQUNwQyxVQUFVQSxFQUFJLE9BQU87QUFBQSxFQUNyQixhQUFhMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDdkMsVUFBVUEsRUFBSSxPQUFPO0FBQUEsRUFDckIsa0JBQWtCMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDNUMsd0JBQXdCMGQsRUFBYzFkLEVBQUksT0FBTyxFQUFFLElBQUksQ0FBQztBQUFBLEVBQ3hELFVBQVVBLEVBQUksT0FBTyxFQUFFLElBQUk7QUFDN0IsQ0FBQyxHQUNLNmQsS0FBZ0I3ZCxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxHQUNsRDhkLEtBQVE5ZCxFQUFJLE9BQU87QUFBQSxFQUN2QixNQUFNQSxFQUFJLE9BQU87QUFBQSxFQUNqQixVQUFVMGQsRUFBY0csRUFBYTtBQUN2QyxDQUFDLEdBQ0tFLEtBQXdCL2QsRUFBSSxPQUFPO0FBQUEsRUFDdkMsVUFBVUEsRUFBSSxPQUFPO0FBQUEsRUFDckIsZ0JBQWdCMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDMUMsVUFBVTBkLEVBQWMxZCxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxDQUFDO0FBQzdELENBQUMsR0FDS2dlLEtBQTBCaGUsRUFBSSxPQUFPO0FBQUEsRUFDekMsVUFBVUEsRUFBSSxPQUFPO0FBQ3ZCLENBQUMsR0FDS2llLEtBQXNCamUsRUFBSSxPQUFPO0FBQUEsRUFDckMsSUFBSTBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzlCLGtCQUFrQjBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzVDLHdCQUF3QjBkLEVBQWMxZCxFQUFJLE9BQU8sRUFBRSxJQUFJLENBQUM7QUFBQSxFQUN4RCxvQkFBb0JBLEVBQUksTUFBTWdlLEVBQXVCO0FBQUEsRUFDckQsYUFBYU4sRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDdkMsV0FBVzBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUN2QyxDQUFDLEdBQ0trZSxLQUFvQ2xlLEVBQUksT0FBTztBQUFBLEVBQ25ELGFBQWFBLEVBQUksT0FBTztBQUMxQixDQUFDLEdBQ0ttZSxLQUF5Qm5lLEVBQUksT0FBTztBQUFBLEVBQ3hDLGFBQWFBLEVBQUksT0FBTztBQUFBLEVBQ3hCLDBDQUEwQ0EsRUFBSSxPQUFPO0FBQUEsRUFDckQsVUFBVUEsRUFBSSxPQUFPO0FBQUEsRUFDckIsdUJBQXVCQSxFQUFJLE1BQU1rZSxFQUFpQztBQUFBLEVBQ2xFLHNCQUFzQmxlLEVBQUksT0FBTztBQUNuQyxDQUFDLEdBQ0tvZSxLQUFrQnBlLEVBQUksT0FBTztBQUFBLEVBQ2pDLFFBQVEyZDtBQUNWLENBQUMsR0FDS1UsS0FBaUJyZSxFQUFJLE9BQU87QUFBQSxFQUNoQyxVQUFVQSxFQUFJLE9BQU87QUFBQSxFQUNyQixXQUFXQSxFQUFJLE1BQU1vZSxFQUFlO0FBQUEsRUFDcEMsb0JBQW9CVixFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUM5QyxPQUFPQSxFQUFJLE1BQU1tZSxFQUFzQjtBQUFBLEVBQ3ZDLHVCQUF1Qm5lLEVBQUksT0FBTztBQUFBLEVBQ2xDLGlCQUFpQkEsRUFBSSxPQUFPO0FBQUEsRUFDNUIsbUJBQW1CQSxFQUFJLE9BQU87QUFBQSxFQUM5Qiw2QkFBNkJBLEVBQUksTUFBTWtlLEVBQWlDO0FBQzFFLENBQUMsR0FDS0ksS0FBb0N0ZSxFQUFJLE9BQU87QUFBQSxFQUNuRCxTQUFTQSxFQUFJLE1BQU1pZSxFQUFtQjtBQUFBLEVBQ3RDLFVBQVVqZSxFQUFJLE1BQU1xZSxFQUFjO0FBQUEsRUFDbEMsaUJBQWlCWCxFQUFjMWQsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELENBQUMsR0FDS3VlLEtBQTBCdmUsRUFBSSxPQUFPO0FBQUEsRUFDekMsU0FBU3NlO0FBQUEsRUFDVCxvQkFBb0JaLEVBQWNZLEVBQWlDO0FBQUEsRUFDbkUsU0FBU3RlLEVBQUksTUFBTTJkLEVBQWE7QUFDbEMsQ0FBQyxHQUNLYSxLQUE0QnhlLEVBQUksT0FBTztBQUFBLEVBQzNDLFFBQVFBLEVBQUksUUFBUSxNQUFNO0FBQUEsRUFDMUIsUUFBUTBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ2xDLE9BQU9BLEVBQUksT0FBTztBQUFBLEVBQ2xCLE9BQU8wZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUNqQyxZQUFZQSxFQUFJLE1BQU00ZCxFQUFRO0FBQUEsRUFDOUIsc0JBQXNCNWQsRUFBSSxPQUFPLEVBQUUsSUFBSTtBQUFBLEVBQ3ZDLG1CQUFtQkEsRUFBSSxPQUFPLEVBQUUsSUFBSTtBQUFBLEVBQ3BDLE9BQU84ZDtBQUFBLEVBQ1AsY0FBY0osRUFBY2EsRUFBdUI7QUFBQTtBQUFBLEVBRW5ELG1CQUFtQnZlLEVBQUksTUFBTStkLEVBQXFCO0FBQ3BELENBQUMsR0FDS1UsS0FBcUJ6ZSxFQUFJLG1CQUFtQixRQUFRO0FBQUEsRUFDeERBLEVBQUksT0FBTztBQUFBLElBQ1QsTUFBTUEsRUFBSSxRQUFRLE9BQU87QUFBQSxJQUN6QixVQUFVQSxFQUFJLFNBQVNBLEVBQUksVUFBVSxDQUFDO0FBQUEsRUFDeEMsQ0FBQyxFQUFFLE9BQU93ZSxHQUEwQixLQUFLO0FBQUEsRUFDekN4ZSxFQUFJLE9BQU87QUFBQSxJQUNULE1BQU1BLEVBQUksS0FBSyxDQUFDLFdBQVcsY0FBYyxDQUFDO0FBQUEsSUFDMUMsVUFBVUEsRUFBSSxPQUFPO0FBQUEsRUFDdkIsQ0FBQyxFQUFFLE9BQU93ZSxHQUEwQixLQUFLO0FBQzNDLENBQUMsR0FDS0UsS0FBdUIxZSxFQUFJLE9BQU87QUFBQSxFQUN0QyxRQUFRQSxFQUFJLFFBQVEsVUFBVTtBQUNoQyxDQUFDLEdBQ0syZSxLQUFxQjNlLEVBQUksT0FBTztBQUFBLEVBQ3BDLFFBQVFBLEVBQUksUUFBUSxTQUFTO0FBQy9CLENBQUM7QUFDREEsRUFBSSxNQUFNLENBQUN5ZSxJQUFvQkMsSUFBc0JDLEVBQWtCLENBQUM7QUFDeEUzZSxFQUFJLE9BQU87QUFBQSxFQUNULE1BQU1BLEVBQUksT0FBTztBQUFBLEVBQ2pCLE1BQU1BLEVBQUksT0FBTztBQUFBLEVBQ2pCLGVBQWVBLEVBQUksT0FBTztBQUFBLEVBQzFCLGlCQUFpQkEsRUFBSSxPQUFPO0FBQzlCLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxjQUFjQSxFQUFJLE9BQU87QUFBQSxFQUN6QixPQUFPQSxFQUFJLE9BQU87QUFDcEIsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULGNBQWNBLEVBQUksT0FBTztBQUFBLEVBQ3pCLGVBQWVBLEVBQUksSUFBSTtBQUFBO0FBQUEsRUFFdkIscUJBQXFCQSxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDM0Msb0JBQW9CQSxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDMUMsZ0JBQWdCQSxFQUFJLE9BQU87QUFBQSxFQUMzQixtQkFBbUJBLEVBQUksT0FBTztBQUFBLEVBQzlCLGtCQUFrQkEsRUFBSSxPQUFPO0FBQUEsRUFDN0IsWUFBWUEsRUFBSSxNQUFNNGQsRUFBUTtBQUFBLEVBQzlCLG1CQUFtQjVkLEVBQUksT0FBTyxFQUFFLElBQUk7QUFBQSxFQUNwQyxlQUFlQSxFQUFJLFFBQVE7QUFBQSxFQUMzQix5QkFBeUIrZDtBQUFBLEVBQ3pCLGdCQUFnQi9kLEVBQUksT0FBTyxFQUFFLFNBQVM7QUFBQSxFQUN0QywyQkFBMkJBLEVBQUksUUFBUSxFQUFFLFNBQVM7QUFBQSxFQUNsRCxxQkFBcUIwZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUMvQyxrQkFBa0IwZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFDOUMsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULG1CQUFtQkEsRUFBSSxPQUFPO0FBQ2hDLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxJQUFJQSxFQUFJLE9BQU87QUFBQSxFQUNmLFlBQVlBLEVBQUksT0FBTztBQUN6QixDQUFDO0FBQ0QsTUFBTTRlLEtBQTBCNWUsRUFBSSxPQUFPO0FBQUEsRUFDekMsTUFBTUEsRUFBSSxPQUFPO0FBQUEsRUFDakIsS0FBS0EsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQzNCLEtBQUtBLEVBQUksT0FBTztBQUFBLEVBQ2hCLEtBQUtBLEVBQUksT0FBTztBQUNsQixDQUFDO0FBQ0RBLEVBQUksTUFBTTRlLEVBQXVCO0FBQ2pDLE1BQU1DLEtBQW9CN2UsRUFBSSxPQUFPO0FBQUEsRUFDbkMsb0JBQW9CQSxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDMUMsc0JBQXNCQSxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxFQUFFLFNBQVM7QUFBQSxFQUNuRSx5QkFBeUJBLEVBQUksT0FBTyxFQUFFLFNBQVM7QUFBQSxFQUMvQyx3QkFBd0JBLEVBQUksT0FBTyxFQUFFLFNBQVM7QUFDaEQsQ0FBQyxHQUNLOGUsS0FBVzllLEVBQUksT0FBTztBQUFBLEVBQzFCLFVBQVVBLEVBQUksT0FBTztBQUFBLEVBQ3JCLFVBQVVBLEVBQUksT0FBTyxFQUFFLElBQUk7QUFDN0IsQ0FBQyxHQUNLK2UsS0FBVy9lLEVBQUksT0FBTztBQUFBLEVBQzFCLFlBQVlBLEVBQUksTUFBTThlLEVBQVE7QUFBQSxFQUM5QixnQkFBZ0I5ZSxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDdEMsNkJBQTZCQSxFQUFJLE9BQU8sRUFBRSxJQUFJO0FBQ2hELENBQUMsR0FDS2dmLEtBQTRCaGYsRUFBSSxPQUFPO0FBQUEsRUFDM0MsNkJBQTZCMGQsRUFBYzFkLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULGtCQUFrQkEsRUFBSSxPQUFPO0FBQUEsRUFDN0IseUJBQXlCK2Q7QUFBQSxFQUN6QixtQkFBbUIvZCxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDekMsc0JBQXNCQSxFQUFJLE9BQU8sRUFBRSxTQUFTO0FBQUEsRUFDNUMsb0JBQW9CQSxFQUFJLFFBQVEsRUFBRSxTQUFTO0FBQUEsRUFDM0MsMEJBQTBCK2UsR0FBUyxTQUFTO0FBQzlDLENBQUMsRUFBRSxPQUFPRixHQUFrQixLQUFLLEVBQUUsT0FBT0csR0FBMEIsS0FBSztBQUN6RWhmLEVBQUksT0FBTztBQUFBLEVBQ1QsdUJBQXVCQSxFQUFJLE1BQU1BLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDLENBQUM7QUFBQSxFQUNwRSxxQkFBcUIwZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFDakQsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULFFBQVE4YztBQUFBLEVBQ1IsdUJBQXVCaUI7QUFBQSxFQUN2QixrQkFBa0JMLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUM5QyxDQUFDO0FBQ0RBLEVBQUksT0FBTztBQUFBLEVBQ1QsWUFBWUEsRUFBSSxPQUFPO0FBQUEsRUFDdkIscUJBQXFCNmM7QUFBQSxFQUNyQix5QkFBeUJrQjtBQUFBLEVBQ3pCLGdCQUFnQi9kLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDO0FBQUE7QUFBQSxFQUVsRCxrQkFBa0IwZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFDOUMsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULHVCQUF1QkEsRUFBSSxNQUFNQSxFQUFJLE9BQU9BLEVBQUksT0FBTyxHQUFHQSxFQUFJLElBQUksQ0FBQyxDQUFDO0FBQUEsRUFDcEUsVUFBVUEsRUFBSSxPQUFPO0FBQ3ZCLENBQUM7QUFDREEsRUFBSSxPQUFPQSxFQUFJLElBQUksQ0FBQztBQUNwQkEsRUFBSSxPQUFPO0FBQUEsRUFDVCxZQUFZMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDdEMsV0FBVzBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3JDLE9BQU8wZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUNqQyxPQUFPMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDakMsT0FBTzBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ2pDLE1BQU0wZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUNoQyxPQUFPMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDakMsU0FBUzBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ25DLFVBQVUwZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUNwQyxPQUFPMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDakMsZUFBZTBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3pDLGNBQWMwZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUN4QywyQkFBMkIwZCxFQUFjMWQsRUFBSSxRQUFRLENBQUM7QUFDeEQsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULElBQUlBLEVBQUksT0FBTztBQUFBLEVBQ2YsT0FBTzBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ2pDLFlBQVkwZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUN0QyxXQUFXMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQUEsRUFDckMsY0FBYzBkLEVBQWMxZCxFQUFJLE9BQU8sQ0FBQztBQUFBLEVBQ3hDLGVBQWUwZCxFQUFjMWQsRUFBSSxPQUFPLENBQUM7QUFBQSxFQUN6QyxTQUFTMGQsRUFBYzFkLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUNEQSxFQUFJLE9BQU87QUFBQSxFQUNULFNBQVNBLEVBQUksT0FBTztBQUN0QixDQUFDO0FBQ0RBLEVBQUksT0FBTztBQUFBLEVBQ1QsWUFBWUEsRUFBSSxPQUFPO0FBQ3pCLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCx5QkFBeUIrZDtBQUFBLEVBQ3pCLDZCQUE2Qi9kLEVBQUksT0FBT0EsRUFBSSxJQUFJLENBQUMsRUFBRSxTQUFTO0FBQUEsRUFDNUQsa0JBQWtCMGQsRUFBYzFkLEVBQUksT0FBTyxDQUFDO0FBQzlDLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxzQkFBc0IwZCxFQUFjMWQsRUFBSSxPQUFPQSxFQUFJLElBQUksQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxRQUFRQSxFQUFJO0FBQUEsSUFDVkEsRUFBSSxPQUFPO0FBQUEsTUFDVCxZQUFZQSxFQUFJLE9BQU87QUFBQSxNQUN2QixjQUFjQSxFQUFJLE9BQU87QUFBQSxNQUN6QixZQUFZQSxFQUFJLE9BQU9BLEVBQUksSUFBSSxDQUFDLEVBQUUsU0FBUztBQUFBLE1BQzNDLG9CQUFvQkEsRUFBSSxPQUFPQSxFQUFJLElBQUksQ0FBQyxFQUFFLFNBQVM7QUFBQSxJQUNyRCxDQUFDO0FBQUEsRUFDSDtBQUNGLENBQUM7QUFDREEsRUFBSSxJQUFJLEVBQUUsU0FBUztBQUNuQkEsRUFBSSxPQUFPO0FBQUEsRUFDVCxjQUFjQSxFQUFJLE9BQU87QUFDM0IsQ0FBQztBQUNEQSxFQUFJLE9BQU8sQ0FBQyxDQUFDO0FBRWIsU0FBU2lmLEdBQVNDLEdBQVFDLEdBQVc7QUFDbkMsTUFBSUMsSUFBaUIsT0FBTztBQUM1QixFQUFBQSxJQUFpQkEsRUFBZUYsR0FBUUMsQ0FBUyxJQUFJRCxFQUFPLFlBQVlDO0FBQzFFO0FBQ0EsU0FBU0UsR0FBU0gsR0FBUXZFLEdBQUk7QUFDNUIsRUFBSUEsTUFBTyxXQUNUQSxJQUFLdUUsRUFBTztBQUdkLE1BQUlJLElBQW9CLE1BQU07QUFDOUIsRUFBQUEsS0FBcUJBLEVBQWtCSixHQUFRdkUsQ0FBRTtBQUNuRDtBQUVBLElBQUk0RSxLQUFjLDJCQUFZO0FBQzVCLE1BQUlDLElBQWlCLFNBQXVCek4sR0FBR3BKLEdBQUc7QUFDaEQsV0FBQTZXLElBQWlCLE9BQU8sa0JBQWtCO0FBQUEsTUFDeEMsV0FBVyxDQUFDO0FBQUEsSUFDZCxhQUFhLFNBQVMsU0FBVXpOLEdBQUdwSixHQUFHO0FBQ3BDLE1BQUFvSixFQUFFLFlBQVlwSjtBQUFBLElBQ2hCLEtBQUssU0FBVW9KLEdBQUdwSixHQUFHO0FBQ25CLGVBQVNoSCxLQUFLZ0g7QUFDWixRQUFJLE9BQU8sVUFBVSxlQUFlLEtBQUtBLEdBQUdoSCxDQUFDLE1BQUdvUSxFQUFFcFEsQ0FBQyxJQUFJZ0gsRUFBRWhILENBQUM7QUFBQSxJQUU5RCxHQUVPNmQsRUFBZXpOLEdBQUdwSixDQUFDO0FBQUEsRUFDNUI7QUFFQSxTQUFPLFNBQVVvSixHQUFHcEosR0FBRztBQUNyQixRQUFJLE9BQU9BLEtBQU0sY0FBY0EsTUFBTSxLQUFNLE9BQU0sSUFBSSxVQUFVLHlCQUF5QixPQUFPQSxDQUFDLElBQUksK0JBQStCO0FBRW5JLElBQUE2VyxFQUFlek4sR0FBR3BKLENBQUM7QUFFbkIsYUFBUzhXLElBQUs7QUFDWixXQUFLLGNBQWMxTjtBQUFBLElBQ3JCO0FBRUEsSUFBQUEsRUFBRSxZQUFZcEosTUFBTSxPQUFPLE9BQU8sT0FBT0EsQ0FBQyxLQUFLOFcsRUFBRyxZQUFZOVcsRUFBRSxXQUFXLElBQUk4VyxFQUFHO0FBQUEsRUFDcEY7QUFDRixFQUFFO0FBQUEsQ0FFRCxTQUFVQyxHQUFRO0FBQ2pCLEVBQUFILEdBQVlJLEdBQWFELENBQU07QUFFL0IsV0FBU0MsRUFBWUMsR0FBU0MsR0FBUztBQUNyQyxRQUFJQyxJQUFhLEtBQUssYUFFbEJDLElBQVFMLEVBQU8sS0FBSyxNQUFNRSxHQUFTQyxDQUFPLEtBQUs7QUFFbkQsa0JBQU8sZUFBZUUsR0FBTyxRQUFRO0FBQUEsTUFDbkMsT0FBT0QsRUFBVztBQUFBLE1BQ2xCLFlBQVk7QUFBQSxNQUNaLGNBQWM7QUFBQSxJQUNoQixDQUFDLEdBQ0RiLEdBQVNjLEdBQU9ELEVBQVcsU0FBUyxHQUNwQ1QsR0FBU1UsQ0FBSyxHQUNQQTtBQUFBLEVBQ1Q7QUFFQSxTQUFPSjtBQUNULEdBQUcsS0FBSztBQUVSLE1BQU1LLEtBQXVCLENBQUNDLE1BQVc7QUFDdkMsUUFBTUMsSUFBTSxJQUFJckYsTUFBUztBQUN2QixXQUFPLFFBQVcsSUFBSSxHQUFHMWEsR0FBRyxNQUFNLEtBQUssTUFBTSxDQUFDLEdBQUdBLEdBQUcsS0FBSyxLQUFLLEdBQUc4ZixDQUFNLEVBQUUsQ0FBQyxLQUFLLEdBQUdwRixDQUFJO0FBQUEsRUFDeEYsR0FDTXNGLElBQU0sSUFBSXRGLE1BQVM7QUFDdkIsV0FBTyxRQUFXLEtBQUssR0FBRzFhLEdBQUcsSUFBSSxLQUFLLE1BQU0sQ0FBQyxHQUFHQSxHQUFHLEtBQUssS0FBSyxHQUFHOGYsQ0FBTSxFQUFFLENBQUMsS0FBSyxHQUFHcEYsQ0FBSTtBQUFBLEVBQ3ZGO0FBQ0EsU0FBTztBQUFBLElBQ0wsS0FBQXFGO0FBQUEsSUFDQSxLQUFBQztBQUFBLElBQ0EsT0FBT0Q7QUFBQSxJQUNQLE9BQU9DO0FBQUEsRUFDVDtBQUNGO0FBa0JBLElBQUlDLEtBQWdCLFNBQVNyTyxHQUFHcEosR0FBRztBQUNqQyxTQUFBeVgsS0FBZ0IsT0FBTyxrQkFDbEIsRUFBRSxXQUFXLENBQUMsRUFBRSxhQUFhLFNBQVMsU0FBVXJPLEdBQUdwSixHQUFHO0FBQUUsSUFBQW9KLEVBQUUsWUFBWXBKO0FBQUEsRUFBRyxLQUMxRSxTQUFVb0osR0FBR3BKLEdBQUc7QUFBRSxhQUFTaEgsS0FBS2dILEVBQUcsQ0FBSSxPQUFPLFVBQVUsZUFBZSxLQUFLQSxHQUFHaEgsQ0FBQyxNQUFHb1EsRUFBRXBRLENBQUMsSUFBSWdILEVBQUVoSCxDQUFDO0FBQUEsRUFBRyxHQUM3RnllLEdBQWNyTyxHQUFHcEosQ0FBQztBQUMzQjtBQUVBLFNBQVMwWCxHQUFVdE8sR0FBR3BKLEdBQUc7QUFDdkIsTUFBSSxPQUFPQSxLQUFNLGNBQWNBLE1BQU07QUFDakMsVUFBTSxJQUFJLFVBQVUseUJBQXlCLE9BQU9BLENBQUMsSUFBSSwrQkFBK0I7QUFDNUYsRUFBQXlYLEdBQWNyTyxHQUFHcEosQ0FBQztBQUNsQixXQUFTOFcsSUFBSztBQUFFLFNBQUssY0FBYzFOO0FBQUEsRUFBRztBQUN0QyxFQUFBQSxFQUFFLFlBQVlwSixNQUFNLE9BQU8sT0FBTyxPQUFPQSxDQUFDLEtBQUs4VyxFQUFHLFlBQVk5VyxFQUFFLFdBQVcsSUFBSThXLEVBQUc7QUFDcEY7QUFFQSxTQUFTYSxHQUFVQyxHQUFTQyxHQUFZNVksR0FBRzZZLEdBQVc7QUFDcEQsV0FBU0MsRUFBTUMsR0FBTztBQUFFLFdBQU9BLGFBQWlCL1ksSUFBSStZLElBQVEsSUFBSS9ZLEVBQUUsU0FBVWdaLEdBQVM7QUFBRSxNQUFBQSxFQUFRRCxDQUFLO0FBQUEsSUFBRyxDQUFDO0FBQUEsRUFBRztBQUMzRyxTQUFPLEtBQUsvWSxNQUFNQSxJQUFJLFVBQVUsU0FBVWdaLEdBQVNDLEdBQVE7QUFDdkQsYUFBU0MsRUFBVUgsR0FBTztBQUFFLFVBQUk7QUFBRSxRQUFBSSxFQUFLTixFQUFVLEtBQUtFLENBQUssQ0FBQztBQUFBLE1BQUcsU0FBU0ssR0FBRztBQUFFLFFBQUFILEVBQU9HLENBQUM7QUFBQSxNQUFHO0FBQUEsSUFBRTtBQUMxRixhQUFTQyxFQUFTTixHQUFPO0FBQUUsVUFBSTtBQUFFLFFBQUFJLEVBQUtOLEVBQVUsTUFBU0UsQ0FBSyxDQUFDO0FBQUEsTUFBRyxTQUFTSyxHQUFHO0FBQUUsUUFBQUgsRUFBT0csQ0FBQztBQUFBLE1BQUc7QUFBQSxJQUFFO0FBQzdGLGFBQVNELEVBQUtHLEdBQVE7QUFBRSxNQUFBQSxFQUFPLE9BQU9OLEVBQVFNLEVBQU8sS0FBSyxJQUFJUixFQUFNUSxFQUFPLEtBQUssRUFBRSxLQUFLSixHQUFXRyxDQUFRO0FBQUEsSUFBRztBQUM3RyxJQUFBRixHQUFNTixJQUFZQSxFQUFVLE1BQU1GLEdBQVNDLEtBQWMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQUEsRUFDeEUsQ0FBQztBQUNIO0FBRUEsU0FBU1csR0FBWVosR0FBU2EsR0FBTTtBQUNsQyxNQUFJcFosSUFBSSxFQUFFLE9BQU8sR0FBRyxNQUFNLFdBQVc7QUFBRSxRQUFJNUcsRUFBRSxDQUFDLElBQUksRUFBRyxPQUFNQSxFQUFFLENBQUM7QUFBRyxXQUFPQSxFQUFFLENBQUM7QUFBQSxFQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsR0FBR29ILEdBQUdELEdBQUduSCxHQUFHaWdCLElBQUksT0FBTyxRQUFRLE9BQU8sWUFBYSxhQUFhLFdBQVcsUUFBUSxTQUFTO0FBQy9MLFNBQU9BLEVBQUUsT0FBT0MsRUFBSyxDQUFDLEdBQUdELEVBQUUsUUFBV0MsRUFBSyxDQUFDLEdBQUdELEVBQUUsU0FBWUMsRUFBSyxDQUFDLEdBQUcsT0FBTyxVQUFXLGVBQWVELEVBQUUsT0FBTyxRQUFRLElBQUksV0FBVztBQUFFLFdBQU87QUFBQSxFQUFNLElBQUlBO0FBQzFKLFdBQVNDLEVBQUt4Z0IsR0FBRztBQUFFLFdBQU8sU0FBVTRILEdBQUc7QUFBRSxhQUFPcVksRUFBSyxDQUFDamdCLEdBQUc0SCxDQUFDLENBQUM7QUFBQSxJQUFHO0FBQUEsRUFBRztBQUNqRSxXQUFTcVksRUFBS1EsR0FBSTtBQUNkLFFBQUkvWSxFQUFHLE9BQU0sSUFBSSxVQUFVLGlDQUFpQztBQUM1RCxXQUFPNlksTUFBTUEsSUFBSSxHQUFHRSxFQUFHLENBQUMsTUFBTXZaLElBQUksS0FBS0EsSUFBRyxLQUFJO0FBQzFDLFVBQUlRLElBQUksR0FBR0QsTUFBTW5ILElBQUltZ0IsRUFBRyxDQUFDLElBQUksSUFBSWhaLEVBQUUsU0FBWWdaLEVBQUcsQ0FBQyxJQUFJaFosRUFBRSxXQUFjbkgsSUFBSW1ILEVBQUUsV0FBY25ILEVBQUUsS0FBS21ILENBQUMsR0FBRyxLQUFLQSxFQUFFLFNBQVMsRUFBRW5ILElBQUlBLEVBQUUsS0FBS21ILEdBQUdnWixFQUFHLENBQUMsQ0FBQyxHQUFHLEtBQU0sUUFBT25nQjtBQUUzSixjQURJbUgsSUFBSSxHQUFHbkgsTUFBR21nQixJQUFLLENBQUNBLEVBQUcsQ0FBQyxJQUFJLEdBQUduZ0IsRUFBRSxLQUFLLElBQzlCbWdCLEVBQUcsQ0FBQyxHQUFHO0FBQUEsUUFDWCxLQUFLO0FBQUEsUUFBRyxLQUFLO0FBQUcsVUFBQW5nQixJQUFJbWdCO0FBQUk7QUFBQSxRQUN4QixLQUFLO0FBQUcsaUJBQUF2WixFQUFFLFNBQWdCLEVBQUUsT0FBT3VaLEVBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBTTtBQUFBLFFBQ3RELEtBQUs7QUFBRyxVQUFBdlosRUFBRSxTQUFTTyxJQUFJZ1osRUFBRyxDQUFDLEdBQUdBLElBQUssQ0FBQyxDQUFDO0FBQUc7QUFBQSxRQUN4QyxLQUFLO0FBQUcsVUFBQUEsSUFBS3ZaLEVBQUUsSUFBSSxJQUFJLEdBQUdBLEVBQUUsS0FBSyxJQUFJO0FBQUc7QUFBQSxRQUN4QztBQUNJLGNBQU01RyxJQUFJNEcsRUFBRSxNQUFNLEVBQUE1RyxJQUFJQSxFQUFFLFNBQVMsS0FBS0EsRUFBRUEsRUFBRSxTQUFTLENBQUMsT0FBT21nQixFQUFHLENBQUMsTUFBTSxLQUFLQSxFQUFHLENBQUMsTUFBTSxJQUFJO0FBQUUsWUFBQXZaLElBQUk7QUFBRztBQUFBLFVBQVU7QUFDM0csY0FBSXVaLEVBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQ25nQixLQUFNbWdCLEVBQUcsQ0FBQyxJQUFJbmdCLEVBQUUsQ0FBQyxLQUFLbWdCLEVBQUcsQ0FBQyxJQUFJbmdCLEVBQUUsQ0FBQyxJQUFLO0FBQUUsWUFBQTRHLEVBQUUsUUFBUXVaLEVBQUcsQ0FBQztBQUFHO0FBQUEsVUFBTztBQUNyRixjQUFJQSxFQUFHLENBQUMsTUFBTSxLQUFLdlosRUFBRSxRQUFRNUcsRUFBRSxDQUFDLEdBQUc7QUFBRSxZQUFBNEcsRUFBRSxRQUFRNUcsRUFBRSxDQUFDLEdBQUdBLElBQUltZ0I7QUFBSTtBQUFBLFVBQU87QUFDcEUsY0FBSW5nQixLQUFLNEcsRUFBRSxRQUFRNUcsRUFBRSxDQUFDLEdBQUc7QUFBRSxZQUFBNEcsRUFBRSxRQUFRNUcsRUFBRSxDQUFDLEdBQUc0RyxFQUFFLElBQUksS0FBS3VaLENBQUU7QUFBRztBQUFBLFVBQU87QUFDbEUsVUFBSW5nQixFQUFFLENBQUMsS0FBRzRHLEVBQUUsSUFBSSxJQUFJLEdBQ3BCQSxFQUFFLEtBQUssSUFBSTtBQUFHO0FBQUEsTUFDdEI7QUFDQSxNQUFBdVosSUFBS0gsRUFBSyxLQUFLYixHQUFTdlksQ0FBQztBQUFBLElBQzdCLFNBQVNnWixHQUFHO0FBQUUsTUFBQU8sSUFBSyxDQUFDLEdBQUdQLENBQUMsR0FBR3pZLElBQUk7QUFBQSxJQUFHLFVBQUU7QUFBVSxNQUFBQyxJQUFJcEgsSUFBSTtBQUFBLElBQUc7QUFDekQsUUFBSW1nQixFQUFHLENBQUMsSUFBSSxFQUFHLE9BQU1BLEVBQUcsQ0FBQztBQUFHLFdBQU8sRUFBRSxPQUFPQSxFQUFHLENBQUMsSUFBSUEsRUFBRyxDQUFDLElBQUksUUFBUSxNQUFNLEdBQUs7QUFBQSxFQUNuRjtBQUNGO0FBRUEsU0FBU0MsR0FBU0MsR0FBRztBQUNuQixNQUFJbmdCLElBQUksT0FBTyxVQUFXLGNBQWMsT0FBTyxVQUFVc0gsSUFBSXRILEtBQUttZ0IsRUFBRW5nQixDQUFDLEdBQUdzRCxJQUFJO0FBQzVFLE1BQUlnRSxFQUFHLFFBQU9BLEVBQUUsS0FBSzZZLENBQUM7QUFDdEIsTUFBSUEsS0FBSyxPQUFPQSxFQUFFLFVBQVcsU0FBVSxRQUFPO0FBQUEsSUFDMUMsTUFBTSxXQUFZO0FBQ2QsYUFBSUEsS0FBSzdjLEtBQUs2YyxFQUFFLFdBQVFBLElBQUksU0FDckIsRUFBRSxPQUFPQSxLQUFLQSxFQUFFN2MsR0FBRyxHQUFHLE1BQU0sQ0FBQzZjLEVBQUU7QUFBQSxJQUMxQztBQUFBLEVBQ0o7QUFDQSxRQUFNLElBQUksVUFBVW5nQixJQUFJLDRCQUE0QixpQ0FBaUM7QUFDdkY7QUFFQSxTQUFTb2dCLEdBQU9ELEdBQUczZ0IsR0FBRztBQUNwQixNQUFJOEgsSUFBSSxPQUFPLFVBQVcsY0FBYzZZLEVBQUUsT0FBTyxRQUFRO0FBQ3pELE1BQUksQ0FBQzdZLEVBQUcsUUFBTzZZO0FBQ2YsTUFBSTdjLElBQUlnRSxFQUFFLEtBQUs2WSxDQUFDLEdBQUdwZ0IsR0FBR3lCLElBQUssQ0FBQyxHQUFHa2U7QUFDL0IsTUFBSTtBQUNBLFlBQVFsZ0IsTUFBTSxVQUFVQSxNQUFNLE1BQU0sRUFBRU8sSUFBSXVELEVBQUUsS0FBSyxHQUFHLE9BQU0sQ0FBQTlCLEVBQUcsS0FBS3pCLEVBQUUsS0FBSztBQUFBLEVBQzdFLFNBQ095WixHQUFPO0FBQUUsSUFBQWtHLElBQUksRUFBRSxPQUFPbEcsRUFBTTtBQUFBLEVBQUcsVUFDdEM7QUFDSSxRQUFJO0FBQ0EsTUFBSXpaLEtBQUssQ0FBQ0EsRUFBRSxTQUFTdUgsSUFBSWhFLEVBQUUsV0FBWWdFLEVBQUUsS0FBS2hFLENBQUM7QUFBQSxJQUNuRCxVQUNBO0FBQVUsVUFBSW9jLEVBQUcsT0FBTUEsRUFBRTtBQUFBLElBQU87QUFBQSxFQUNwQztBQUNBLFNBQU9sZTtBQUNUO0FBRUEsU0FBUzZlLEdBQWN0YSxHQUFJdWEsR0FBTUMsR0FBTTtBQUNyQyxNQUFJQSxLQUFRLFVBQVUsV0FBVyxFQUFHLFVBQVNqZCxJQUFJLEdBQUdpTCxJQUFJK1IsRUFBSyxRQUFROWUsR0FBSThCLElBQUlpTCxHQUFHakw7QUFDNUUsS0FBSTlCLEtBQU0sRUFBRThCLEtBQUtnZCxRQUNSOWUsTUFBSUEsSUFBSyxNQUFNLFVBQVUsTUFBTSxLQUFLOGUsR0FBTSxHQUFHaGQsQ0FBQyxJQUNuRDlCLEVBQUc4QixDQUFDLElBQUlnZCxFQUFLaGQsQ0FBQztBQUd0QixTQUFPeUMsRUFBRyxPQUFPdkUsS0FBTSxNQUFNLFVBQVUsTUFBTSxLQUFLOGUsQ0FBSSxDQUFDO0FBQ3pEO0FBRUEsU0FBU0UsR0FBUXBaLEdBQUc7QUFDbEIsU0FBTyxnQkFBZ0JvWixNQUFXLEtBQUssSUFBSXBaLEdBQUcsUUFBUSxJQUFJb1osR0FBUXBaLENBQUM7QUFDckU7QUFFQSxTQUFTcVosR0FBaUJ4QixHQUFTQyxHQUFZQyxHQUFXO0FBQ3hELE1BQUksQ0FBQyxPQUFPLGNBQWUsT0FBTSxJQUFJLFVBQVUsc0NBQXNDO0FBQ3JGLE1BQUlZLElBQUlaLEVBQVUsTUFBTUYsR0FBU0MsS0FBYyxDQUFDLENBQUMsR0FBRyxHQUFHak8sSUFBSSxDQUFDO0FBQzVELFNBQU8sSUFBSSxPQUFPLFFBQVEsT0FBTyxpQkFBa0IsYUFBYSxnQkFBZ0IsUUFBUSxTQUFTLEdBQUcrTyxFQUFLLE1BQU0sR0FBR0EsRUFBSyxPQUFPLEdBQUdBLEVBQUssVUFBVVUsQ0FBVyxHQUFHLEVBQUUsT0FBTyxhQUFhLElBQUksV0FBWTtBQUFFLFdBQU87QUFBQSxFQUFNLEdBQUc7QUFDdE4sV0FBU0EsRUFBWXhaLEdBQUc7QUFBRSxXQUFPLFNBQVVFLEdBQUc7QUFBRSxhQUFPLFFBQVEsUUFBUUEsQ0FBQyxFQUFFLEtBQUtGLEdBQUdxWSxDQUFNO0FBQUEsSUFBRztBQUFBLEVBQUc7QUFDOUYsV0FBU1MsRUFBS3hnQixHQUFHMEgsR0FBRztBQUFFLElBQUk2WSxFQUFFdmdCLENBQUMsTUFBSyxFQUFFQSxDQUFDLElBQUksU0FBVTRILEdBQUc7QUFBRSxhQUFPLElBQUksUUFBUSxTQUFVN0QsR0FBRzhELEdBQUc7QUFBRSxRQUFBNEosRUFBRSxLQUFLLENBQUN6UixHQUFHNEgsR0FBRzdELEdBQUc4RCxDQUFDLENBQUMsSUFBSSxLQUFLc1osRUFBT25oQixHQUFHNEgsQ0FBQztBQUFBLE1BQUcsQ0FBQztBQUFBLElBQUcsR0FBT0YsTUFBRyxFQUFFMUgsQ0FBQyxJQUFJMEgsRUFBRSxFQUFFMUgsQ0FBQyxDQUFDO0FBQUEsRUFBSztBQUN2SyxXQUFTbWhCLEVBQU9uaEIsR0FBRzRILEdBQUc7QUFBRSxRQUFJO0FBQUUsTUFBQXFZLEVBQUtNLEVBQUV2Z0IsQ0FBQyxFQUFFNEgsQ0FBQyxDQUFDO0FBQUEsSUFBRyxTQUFTc1ksR0FBRztBQUFFLE1BQUFrQixFQUFPM1AsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHeU8sQ0FBQztBQUFBLElBQUc7QUFBQSxFQUFFO0FBQ2pGLFdBQVNELEVBQUsxZixHQUFHO0FBQUUsSUFBQUEsRUFBRSxpQkFBaUJ5Z0IsS0FBVSxRQUFRLFFBQVF6Z0IsRUFBRSxNQUFNLENBQUMsRUFBRSxLQUFLOGdCLEdBQVN0QixDQUFNLElBQUlxQixFQUFPM1AsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHbFIsQ0FBQztBQUFBLEVBQUc7QUFDdkgsV0FBUzhnQixFQUFReEIsR0FBTztBQUFFLElBQUFzQixFQUFPLFFBQVF0QixDQUFLO0FBQUEsRUFBRztBQUNqRCxXQUFTRSxFQUFPRixHQUFPO0FBQUUsSUFBQXNCLEVBQU8sU0FBU3RCLENBQUs7QUFBQSxFQUFHO0FBQ2pELFdBQVN1QixFQUFPMVosR0FBR0UsR0FBRztBQUFFLElBQUlGLEVBQUVFLENBQUMsR0FBRzZKLEVBQUUsTUFBTSxHQUFHQSxFQUFFLFVBQVEwUCxFQUFPMVAsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHQSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFBQSxFQUFHO0FBQ25GO0FBRUEsU0FBUzZQLEdBQWNYLEdBQUc7QUFDeEIsTUFBSSxDQUFDLE9BQU8sY0FBZSxPQUFNLElBQUksVUFBVSxzQ0FBc0M7QUFDckYsTUFBSTdZLElBQUk2WSxFQUFFLE9BQU8sYUFBYSxHQUFHN2M7QUFDakMsU0FBT2dFLElBQUlBLEVBQUUsS0FBSzZZLENBQUMsS0FBS0EsSUFBSSxPQUFPRCxNQUFhLGFBQWFBLEdBQVNDLENBQUMsSUFBSUEsRUFBRSxPQUFPLFFBQVEsRUFBRSxHQUFHN2MsSUFBSSxDQUFDLEdBQUcwYyxFQUFLLE1BQU0sR0FBR0EsRUFBSyxPQUFPLEdBQUdBLEVBQUssUUFBUSxHQUFHMWMsRUFBRSxPQUFPLGFBQWEsSUFBSSxXQUFZO0FBQUUsV0FBTztBQUFBLEVBQU0sR0FBR0E7QUFDOU0sV0FBUzBjLEVBQUt4Z0IsR0FBRztBQUFFLElBQUE4RCxFQUFFOUQsQ0FBQyxJQUFJMmdCLEVBQUUzZ0IsQ0FBQyxLQUFLLFNBQVU0SCxHQUFHO0FBQUUsYUFBTyxJQUFJLFFBQVEsU0FBVWtZLEdBQVNDLEdBQVE7QUFBRSxRQUFBblksSUFBSStZLEVBQUUzZ0IsQ0FBQyxFQUFFNEgsQ0FBQyxHQUFHd1osRUFBT3RCLEdBQVNDLEdBQVFuWSxFQUFFLE1BQU1BLEVBQUUsS0FBSztBQUFBLE1BQUcsQ0FBQztBQUFBLElBQUc7QUFBQSxFQUFHO0FBQy9KLFdBQVN3WixFQUFPdEIsR0FBU0MsR0FBUTlPLEdBQUdySixHQUFHO0FBQUUsWUFBUSxRQUFRQSxDQUFDLEVBQUUsS0FBSyxTQUFTQSxHQUFHO0FBQUUsTUFBQWtZLEVBQVEsRUFBRSxPQUFPbFksR0FBRyxNQUFNcUosRUFBRSxDQUFDO0FBQUEsSUFBRyxHQUFHOE8sQ0FBTTtBQUFBLEVBQUc7QUFDN0g7QUFPQSxTQUFTd0IsRUFBV0MsR0FBTztBQUN2QixTQUFPLE9BQU9BLEtBQVU7QUFDNUI7QUFFQSxTQUFTQyxHQUFpQkMsR0FBWTtBQUNsQyxNQUFJQyxJQUFTLFNBQVVDLEdBQVU7QUFDN0IsVUFBTSxLQUFLQSxDQUFRLEdBQ25CQSxFQUFTLFFBQVEsSUFBSSxNQUFNLEVBQUU7QUFBQSxFQUNqQyxHQUNJQyxJQUFXSCxFQUFXQyxDQUFNO0FBQ2hDLFNBQUFFLEVBQVMsWUFBWSxPQUFPLE9BQU8sTUFBTSxTQUFTLEdBQ2xEQSxFQUFTLFVBQVUsY0FBY0EsR0FDMUJBO0FBQ1g7QUFFQSxJQUFJQyxLQUFzQkwsR0FBaUIsU0FBVUUsR0FBUTtBQUN6RCxTQUFPLFNBQWlDSSxHQUFRO0FBQzVDLElBQUFKLEVBQU8sSUFBSSxHQUNYLEtBQUssVUFBVUksSUFDVEEsRUFBTyxTQUFTO0FBQUEsSUFBOENBLEVBQU8sSUFBSSxTQUFVQyxHQUFLLEdBQUc7QUFBRSxhQUFPLElBQUksSUFBSSxPQUFPQSxFQUFJLFNBQVM7QUFBQSxJQUFHLENBQUMsRUFBRSxLQUFLO0FBQUEsR0FBTSxJQUNqSixJQUNOLEtBQUssT0FBTyx1QkFDWixLQUFLLFNBQVNEO0FBQUEsRUFDbEI7QUFDSixDQUFDO0FBRUQsU0FBU0UsR0FBVUMsR0FBS0MsR0FBTTtBQUMxQixNQUFJRCxHQUFLO0FBQ0wsUUFBSUUsSUFBUUYsRUFBSSxRQUFRQyxDQUFJO0FBQzVCLFNBQUtDLEtBQVNGLEVBQUksT0FBT0UsR0FBTyxDQUFDO0FBQUEsRUFDckM7QUFDSjtBQUVBLElBQUlDLEtBQWdCLFdBQVk7QUFDNUIsV0FBU0EsRUFBYUMsR0FBaUI7QUFDbkMsU0FBSyxrQkFBa0JBLEdBQ3ZCLEtBQUssU0FBUyxJQUNkLEtBQUssYUFBYSxNQUNsQixLQUFLLGNBQWM7QUFBQSxFQUN2QjtBQUNBLFNBQUFELEVBQWEsVUFBVSxjQUFjLFdBQVk7QUFDN0MsUUFBSUUsR0FBS0MsR0FBSUMsR0FBS0MsR0FDZFg7QUFDSixRQUFJLENBQUMsS0FBSyxRQUFRO0FBQ2QsV0FBSyxTQUFTO0FBQ2QsVUFBSVksSUFBYSxLQUFLO0FBQ3RCLFVBQUlBO0FBRUEsWUFEQSxLQUFLLGFBQWEsTUFDZCxNQUFNLFFBQVFBLENBQVU7QUFDeEIsY0FBSTtBQUNBLHFCQUFTQyxJQUFlQyxHQUFTRixDQUFVLEdBQUdHLElBQWlCRixFQUFhLEtBQUssR0FBRyxDQUFDRSxFQUFlLE1BQU1BLElBQWlCRixFQUFhLEtBQUssR0FBRztBQUM1SSxrQkFBSUcsSUFBV0QsRUFBZTtBQUM5QixjQUFBQyxFQUFTLE9BQU8sSUFBSTtBQUFBLFlBQ3hCO0FBQUEsVUFDSixTQUNPQyxHQUFPO0FBQUUsWUFBQVQsSUFBTSxFQUFFLE9BQU9TLEVBQU07QUFBQSxVQUFHLFVBQ3hDO0FBQ0ksZ0JBQUk7QUFDQSxjQUFJRixLQUFrQixDQUFDQSxFQUFlLFNBQVNOLElBQUtJLEVBQWEsV0FBU0osRUFBRyxLQUFLSSxDQUFZO0FBQUEsWUFDbEcsVUFDQTtBQUFVLGtCQUFJTCxFQUFLLE9BQU1BLEVBQUk7QUFBQSxZQUFPO0FBQUEsVUFDeEM7QUFBQTtBQUdBLFVBQUFJLEVBQVcsT0FBTyxJQUFJO0FBRzlCLFVBQUlNLElBQW1CLEtBQUs7QUFDNUIsVUFBSTFCLEVBQVcwQixDQUFnQjtBQUMzQixZQUFJO0FBQ0EsVUFBQUEsRUFBaUI7QUFBQSxRQUNyQixTQUNPQyxHQUFHO0FBQ04sVUFBQW5CLElBQVNtQixhQUFhcEIsS0FBc0JvQixFQUFFLFNBQVMsQ0FBQ0EsQ0FBQztBQUFBLFFBQzdEO0FBRUosVUFBSUMsSUFBYyxLQUFLO0FBQ3ZCLFVBQUlBLEdBQWE7QUFDYixhQUFLLGNBQWM7QUFDbkIsWUFBSTtBQUNBLG1CQUFTQyxJQUFnQlAsR0FBU00sQ0FBVyxHQUFHRSxJQUFrQkQsRUFBYyxLQUFLLEdBQUcsQ0FBQ0MsRUFBZ0IsTUFBTUEsSUFBa0JELEVBQWMsS0FBSyxHQUFHO0FBQ25KLGdCQUFJRSxJQUFZRCxFQUFnQjtBQUNoQyxnQkFBSTtBQUNBLGNBQUFFLEdBQWNELENBQVM7QUFBQSxZQUMzQixTQUNPdEIsR0FBSztBQUNSLGNBQUFELElBQVNBLEtBQWdELENBQUMsR0FDdERDLGFBQWVGLEtBQ2ZDLElBQVN5QixHQUFjQSxHQUFjLENBQUMsR0FBR0MsR0FBTzFCLENBQU0sQ0FBQyxHQUFHMEIsR0FBT3pCLEVBQUksTUFBTSxDQUFDLElBRzVFRCxFQUFPLEtBQUtDLENBQUc7QUFBQSxZQUV2QjtBQUFBLFVBQ0o7QUFBQSxRQUNKLFNBQ08wQixHQUFPO0FBQUUsVUFBQWpCLElBQU0sRUFBRSxPQUFPaUIsRUFBTTtBQUFBLFFBQUcsVUFDeEM7QUFDSSxjQUFJO0FBQ0EsWUFBSUwsS0FBbUIsQ0FBQ0EsRUFBZ0IsU0FBU1gsSUFBS1UsRUFBYyxXQUFTVixFQUFHLEtBQUtVLENBQWE7QUFBQSxVQUN0RyxVQUNBO0FBQVUsZ0JBQUlYLEVBQUssT0FBTUEsRUFBSTtBQUFBLFVBQU87QUFBQSxRQUN4QztBQUFBLE1BQ0o7QUFDQSxVQUFJVjtBQUNBLGNBQU0sSUFBSUQsR0FBb0JDLENBQU07QUFBQSxJQUU1QztBQUFBLEVBQ0osR0FDQU0sRUFBYSxVQUFVLE1BQU0sU0FBVXNCLEdBQVU7QUFDN0MsUUFBSW5CO0FBQ0osUUFBSW1CLEtBQVlBLE1BQWE7QUFDekIsVUFBSSxLQUFLO0FBQ0wsUUFBQUosR0FBY0ksQ0FBUTtBQUFBLFdBRXJCO0FBQ0QsWUFBSUEsYUFBb0J0QixHQUFjO0FBQ2xDLGNBQUlzQixFQUFTLFVBQVVBLEVBQVMsV0FBVyxJQUFJO0FBQzNDO0FBRUosVUFBQUEsRUFBUyxXQUFXLElBQUk7QUFBQSxRQUM1QjtBQUNBLFNBQUMsS0FBSyxlQUFlbkIsSUFBSyxLQUFLLGlCQUFpQixRQUFRQSxNQUFPLFNBQVNBLElBQUssQ0FBQyxHQUFHLEtBQUttQixDQUFRO0FBQUEsTUFDbEc7QUFBQSxFQUVSLEdBQ0F0QixFQUFhLFVBQVUsYUFBYSxTQUFVdUIsR0FBUTtBQUNsRCxRQUFJakIsSUFBYSxLQUFLO0FBQ3RCLFdBQU9BLE1BQWVpQixLQUFXLE1BQU0sUUFBUWpCLENBQVUsS0FBS0EsRUFBVyxTQUFTaUIsQ0FBTTtBQUFBLEVBQzVGLEdBQ0F2QixFQUFhLFVBQVUsYUFBYSxTQUFVdUIsR0FBUTtBQUNsRCxRQUFJakIsSUFBYSxLQUFLO0FBQ3RCLFNBQUssYUFBYSxNQUFNLFFBQVFBLENBQVUsS0FBS0EsRUFBVyxLQUFLaUIsQ0FBTSxHQUFHakIsS0FBY0EsSUFBYSxDQUFDQSxHQUFZaUIsQ0FBTSxJQUFJQTtBQUFBLEVBQzlILEdBQ0F2QixFQUFhLFVBQVUsZ0JBQWdCLFNBQVV1QixHQUFRO0FBQ3JELFFBQUlqQixJQUFhLEtBQUs7QUFDdEIsSUFBSUEsTUFBZWlCLElBQ2YsS0FBSyxhQUFhLE9BRWIsTUFBTSxRQUFRakIsQ0FBVSxLQUM3QlYsR0FBVVUsR0FBWWlCLENBQU07QUFBQSxFQUVwQyxHQUNBdkIsRUFBYSxVQUFVLFNBQVMsU0FBVXNCLEdBQVU7QUFDaEQsUUFBSVIsSUFBYyxLQUFLO0FBQ3ZCLElBQUFBLEtBQWVsQixHQUFVa0IsR0FBYVEsQ0FBUSxHQUMxQ0EsYUFBb0J0QixLQUNwQnNCLEVBQVMsY0FBYyxJQUFJO0FBQUEsRUFFbkMsR0FDQXRCLEVBQWEsUUFBUyxXQUFZO0FBQzlCLFFBQUl3QixJQUFRLElBQUl4QixFQUFhO0FBQzdCLFdBQUF3QixFQUFNLFNBQVMsSUFDUkE7QUFBQSxFQUNYLEVBQUcsR0FDSXhCO0FBQ1gsRUFBRSxHQUNFeUIsS0FBcUJ6QixHQUFhO0FBQ3RDLFNBQVMwQixHQUFldkMsR0FBTztBQUMzQixTQUFRQSxhQUFpQmEsTUFDcEJiLEtBQVMsWUFBWUEsS0FBU0QsRUFBV0MsRUFBTSxNQUFNLEtBQUtELEVBQVdDLEVBQU0sR0FBRyxLQUFLRCxFQUFXQyxFQUFNLFdBQVc7QUFDeEg7QUFDQSxTQUFTK0IsR0FBY0QsR0FBVztBQUM5QixFQUFJL0IsRUFBVytCLENBQVMsSUFDcEJBLEVBQVUsSUFHVkEsRUFBVSxZQUFZO0FBRTlCO0FBRUEsSUFBSVUsS0FBUztBQUFBLEVBQ1Qsa0JBQWtCO0FBQUEsRUFDbEIsdUJBQXVCO0FBQUEsRUFDdkIsU0FBUztBQUFBLEVBQ1QsdUNBQXVDO0FBQUEsRUFDdkMsMEJBQTBCO0FBQzlCLEdBRUlDLEtBQWtCO0FBQUEsRUFDbEIsWUFBWSxTQUFVQyxHQUFTQyxHQUFTO0FBRXBDLGFBRElDLElBQU8sQ0FBQyxHQUNIQyxJQUFLLEdBQUdBLElBQUssVUFBVSxRQUFRQTtBQUNwQyxNQUFBRCxFQUFLQyxJQUFLLENBQUMsSUFBSSxVQUFVQSxDQUFFO0FBRS9CLFdBQU8sV0FBVyxNQUFNLFFBQVFiLEdBQWMsQ0FBQ1UsR0FBU0MsQ0FBTyxHQUFHVixHQUFPVyxDQUFJLENBQUMsQ0FBQztBQUFBLEVBQ25GO0FBQUEsRUFDQSxjQUFjLFNBQVVFLEdBQVE7QUFDNUIsUUFBSUMsSUFBV04sR0FBZ0I7QUFDL0IsYUFBU00sS0FBYSxPQUE4QixTQUFTQSxFQUFTLGlCQUFpQixjQUFjRCxDQUFNO0FBQUEsRUFDL0c7QUFBQSxFQUNBLFVBQVU7QUFDZDtBQUVBLFNBQVNFLEdBQXFCeEMsR0FBSztBQUMvQixFQUFBaUMsR0FBZ0IsV0FBVyxXQUFZO0FBRS9CLFVBQU1qQztBQUFBLEVBRWQsQ0FBQztBQUNMO0FBRUEsU0FBU3lDLEtBQU87QUFBRTtBQUVsQixTQUFTQyxHQUFhQyxHQUFJO0FBRWxCLEVBQUFBLEVBQUc7QUFFWDtBQUVBLElBQUlDLEtBQWMsU0FBVWpELEdBQVE7QUFDaEMsRUFBQWtELEdBQVVELEdBQVlqRCxDQUFNO0FBQzVCLFdBQVNpRCxFQUFXRSxHQUFhO0FBQzdCLFFBQUlDLElBQVFwRCxFQUFPLEtBQUssSUFBSSxLQUFLO0FBQ2pDLFdBQUFvRCxFQUFNLFlBQVksSUFDZEQsS0FDQUMsRUFBTSxjQUFjRCxHQUNoQmYsR0FBZWUsQ0FBVyxLQUMxQkEsRUFBWSxJQUFJQyxDQUFLLEtBSXpCQSxFQUFNLGNBQWNDLElBRWpCRDtBQUFBLEVBQ1g7QUFDQSxTQUFBSCxFQUFXLFNBQVMsU0FBVUssR0FBTUMsR0FBT0MsR0FBVTtBQUNqRCxXQUFPLElBQUlDLEdBQWVILEdBQU1DLEdBQU9DLENBQVE7QUFBQSxFQUNuRCxHQUNBUCxFQUFXLFVBQVUsT0FBTyxTQUFVcEQsR0FBTztBQUN6QyxJQUFJLEtBQUssYUFFTCxLQUFLLE1BQU1BLENBQUs7QUFBQSxFQUV4QixHQUNBb0QsRUFBVyxVQUFVLFFBQVEsU0FBVTVDLEdBQUs7QUFDeEMsSUFBSSxLQUFLLGNBRUwsS0FBSyxZQUFZLElBQ2pCLEtBQUssT0FBT0EsQ0FBRztBQUFBLEVBRXZCLEdBQ0E0QyxFQUFXLFVBQVUsV0FBVyxXQUFZO0FBQ3hDLElBQUksS0FBSyxjQUVMLEtBQUssWUFBWSxJQUNqQixLQUFLLFVBQVU7QUFBQSxFQUV2QixHQUNBQSxFQUFXLFVBQVUsY0FBYyxXQUFZO0FBQzNDLElBQUssS0FBSyxXQUNOLEtBQUssWUFBWSxJQUNqQmpELEVBQU8sVUFBVSxZQUFZLEtBQUssSUFBSSxHQUN0QyxLQUFLLGNBQWM7QUFBQSxFQUUzQixHQUNBaUQsRUFBVyxVQUFVLFFBQVEsU0FBVXBELEdBQU87QUFDMUMsU0FBSyxZQUFZLEtBQUtBLENBQUs7QUFBQSxFQUMvQixHQUNBb0QsRUFBVyxVQUFVLFNBQVMsU0FBVTVDLEdBQUs7QUFDekMsUUFBSTtBQUNBLFdBQUssWUFBWSxNQUFNQSxDQUFHO0FBQUEsSUFDOUIsVUFDQTtBQUNJLFdBQUssWUFBWTtBQUFBLElBQ3JCO0FBQUEsRUFDSixHQUNBNEMsRUFBVyxVQUFVLFlBQVksV0FBWTtBQUN6QyxRQUFJO0FBQ0EsV0FBSyxZQUFZLFNBQVM7QUFBQSxJQUM5QixVQUNBO0FBQ0ksV0FBSyxZQUFZO0FBQUEsSUFDckI7QUFBQSxFQUNKLEdBQ09BO0FBQ1gsRUFBRXZDLEVBQVksR0FDVmdELEtBQVEsU0FBUyxVQUFVO0FBQy9CLFNBQVNDLEdBQUtDLEdBQUlDLEdBQVM7QUFDdkIsU0FBT0gsR0FBTSxLQUFLRSxHQUFJQyxDQUFPO0FBQ2pDO0FBQ0EsSUFBSUMsS0FBb0IsV0FBWTtBQUNoQyxXQUFTQSxFQUFpQkMsR0FBaUI7QUFDdkMsU0FBSyxrQkFBa0JBO0FBQUEsRUFDM0I7QUFDQSxTQUFBRCxFQUFpQixVQUFVLE9BQU8sU0FBVWpFLEdBQU87QUFDL0MsUUFBSWtFLElBQWtCLEtBQUs7QUFDM0IsUUFBSUEsRUFBZ0I7QUFDaEIsVUFBSTtBQUNBLFFBQUFBLEVBQWdCLEtBQUtsRSxDQUFLO0FBQUEsTUFDOUIsU0FDTzBELEdBQU87QUFDVixRQUFBUyxHQUFxQlQsQ0FBSztBQUFBLE1BQzlCO0FBQUEsRUFFUixHQUNBTyxFQUFpQixVQUFVLFFBQVEsU0FBVXpELEdBQUs7QUFDOUMsUUFBSTBELElBQWtCLEtBQUs7QUFDM0IsUUFBSUEsRUFBZ0I7QUFDaEIsVUFBSTtBQUNBLFFBQUFBLEVBQWdCLE1BQU0xRCxDQUFHO0FBQUEsTUFDN0IsU0FDT2tELEdBQU87QUFDVixRQUFBUyxHQUFxQlQsQ0FBSztBQUFBLE1BQzlCO0FBQUE7QUFHQSxNQUFBUyxHQUFxQjNELENBQUc7QUFBQSxFQUVoQyxHQUNBeUQsRUFBaUIsVUFBVSxXQUFXLFdBQVk7QUFDOUMsUUFBSUMsSUFBa0IsS0FBSztBQUMzQixRQUFJQSxFQUFnQjtBQUNoQixVQUFJO0FBQ0EsUUFBQUEsRUFBZ0IsU0FBUztBQUFBLE1BQzdCLFNBQ09SLEdBQU87QUFDVixRQUFBUyxHQUFxQlQsQ0FBSztBQUFBLE1BQzlCO0FBQUEsRUFFUixHQUNPTztBQUNYLEVBQUUsR0FDRUwsS0FBa0IsU0FBVXpELEdBQVE7QUFDcEMsRUFBQWtELEdBQVVPLEdBQWdCekQsQ0FBTTtBQUNoQyxXQUFTeUQsRUFBZVEsR0FBZ0JWLEdBQU9DLEdBQVU7QUFDckQsUUFBSUosSUFBUXBELEVBQU8sS0FBSyxJQUFJLEtBQUssTUFDN0IrRDtBQUNKLFFBQUluRSxFQUFXcUUsQ0FBYyxLQUFLLENBQUNBO0FBQy9CLE1BQUFGLElBQWtCO0FBQUEsUUFDZCxNQUFPRSxLQUF3RTtBQUFBLFFBQy9FLE9BQU9WLEtBQTZDO0FBQUEsUUFDcEQsVUFBVUMsS0FBc0Q7QUFBQSxNQUNwRTtBQUFBLFNBRUM7QUFDRCxVQUFJVTtBQUNKLE1BQUlkLEtBQVNmLEdBQU8sNEJBQ2hCNkIsSUFBWSxPQUFPLE9BQU9ELENBQWMsR0FDeENDLEVBQVUsY0FBYyxXQUFZO0FBQUUsZUFBT2QsRUFBTSxZQUFZO0FBQUEsTUFBRyxHQUNsRVcsSUFBa0I7QUFBQSxRQUNkLE1BQU1FLEVBQWUsUUFBUU4sR0FBS00sRUFBZSxNQUFNQyxDQUFTO0FBQUEsUUFDaEUsT0FBT0QsRUFBZSxTQUFTTixHQUFLTSxFQUFlLE9BQU9DLENBQVM7QUFBQSxRQUNuRSxVQUFVRCxFQUFlLFlBQVlOLEdBQUtNLEVBQWUsVUFBVUMsQ0FBUztBQUFBLE1BQ2hGLEtBR0FILElBQWtCRTtBQUFBLElBRTFCO0FBQ0EsV0FBQWIsRUFBTSxjQUFjLElBQUlVLEdBQWlCQyxDQUFlLEdBQ2pEWDtBQUFBLEVBQ1g7QUFDQSxTQUFPSztBQUNYLEVBQUVSLEVBQVU7QUFDWixTQUFTZSxHQUFxQlQsR0FBTztBQUU3QixFQUFBVixHQUFxQlUsQ0FBSztBQUVsQztBQUNBLFNBQVNZLEdBQW9COUQsR0FBSztBQUM5QixRQUFNQTtBQUNWO0FBQ0EsSUFBSWdELEtBQWlCO0FBQUEsRUFDakIsUUFBUTtBQUFBLEVBQ1IsTUFBTVA7QUFBQSxFQUNOLE9BQU9xQjtBQUFBLEVBQ1AsVUFBVXJCO0FBQ2QsR0FFSXNCLEtBQWMsV0FBWTtBQUFFLFNBQVEsT0FBTyxVQUFXLGNBQWMsT0FBTyxjQUFlO0FBQWdCLEVBQUc7QUFFakgsU0FBU0MsR0FBU0MsR0FBRztBQUNqQixTQUFPQTtBQUNYO0FBRUEsU0FBU0MsR0FBY0MsR0FBSztBQUN4QixTQUFJQSxFQUFJLFdBQVcsSUFDUkgsS0FFUEcsRUFBSSxXQUFXLElBQ1JBLEVBQUksQ0FBQyxJQUVULFNBQWVDLEdBQU87QUFDekIsV0FBT0QsRUFBSSxPQUFPLFNBQVVFLEdBQU1kLEdBQUk7QUFBRSxhQUFPQSxFQUFHYyxDQUFJO0FBQUEsSUFBRyxHQUFHRCxDQUFLO0FBQUEsRUFDckU7QUFDSjtBQUVBLElBQUlFLEtBQWMsV0FBWTtBQUMxQixXQUFTQSxFQUFXQyxHQUFXO0FBQzNCLElBQUlBLE1BQ0EsS0FBSyxhQUFhQTtBQUFBLEVBRTFCO0FBQ0EsU0FBQUQsRUFBVyxVQUFVLE9BQU8sU0FBVUUsR0FBVTtBQUM1QyxRQUFJVCxJQUFhLElBQUlPLEVBQVc7QUFDaEMsV0FBQVAsRUFBVyxTQUFTLE1BQ3BCQSxFQUFXLFdBQVdTLEdBQ2ZUO0FBQUEsRUFDWCxHQUNBTyxFQUFXLFVBQVUsWUFBWSxTQUFVVixHQUFnQlYsR0FBT0MsR0FBVTtBQUN4RSxRQUFJSixJQUFRLE1BQ1IwQixJQUFhQyxHQUFhZCxDQUFjLElBQUlBLElBQWlCLElBQUlSLEdBQWVRLEdBQWdCVixHQUFPQyxDQUFRO0FBQ25ILFdBQUFULEdBQWEsV0FBWTtBQUNyQixVQUFJbEMsSUFBS3VDLEdBQU95QixJQUFXaEUsRUFBRyxVQUFVbUUsSUFBU25FLEVBQUc7QUFDcEQsTUFBQWlFLEVBQVcsSUFBSUQsSUFFUEEsRUFBUyxLQUFLQyxHQUFZRSxDQUFNLElBQ2xDQSxJQUVNNUIsRUFBTSxXQUFXMEIsQ0FBVSxJQUUzQjFCLEVBQU0sY0FBYzBCLENBQVUsQ0FBQztBQUFBLElBQy9DLENBQUMsR0FDTUE7QUFBQSxFQUNYLEdBQ0FILEVBQVcsVUFBVSxnQkFBZ0IsU0FBVU0sR0FBTTtBQUNqRCxRQUFJO0FBQ0EsYUFBTyxLQUFLLFdBQVdBLENBQUk7QUFBQSxJQUMvQixTQUNPNUUsR0FBSztBQUNSLE1BQUE0RSxFQUFLLE1BQU01RSxDQUFHO0FBQUEsSUFDbEI7QUFBQSxFQUNKLEdBQ0FzRSxFQUFXLFVBQVUsVUFBVSxTQUFVckIsR0FBTTRCLEdBQWE7QUFDeEQsUUFBSTlCLElBQVE7QUFDWixXQUFBOEIsSUFBY0MsR0FBZUQsQ0FBVyxHQUNqQyxJQUFJQSxFQUFZLFNBQVVFLEdBQVNDLEdBQVE7QUFDOUMsVUFBSVAsSUFBYSxJQUFJckIsR0FBZTtBQUFBLFFBQ2hDLE1BQU0sU0FBVTVELEdBQU87QUFDbkIsY0FBSTtBQUNBLFlBQUF5RCxFQUFLekQsQ0FBSztBQUFBLFVBQ2QsU0FDT1EsR0FBSztBQUNSLFlBQUFnRixFQUFPaEYsQ0FBRyxHQUNWeUUsRUFBVyxZQUFZO0FBQUEsVUFDM0I7QUFBQSxRQUNKO0FBQUEsUUFDQSxPQUFPTztBQUFBLFFBQ1AsVUFBVUQ7QUFBQSxNQUNkLENBQUM7QUFDRCxNQUFBaEMsRUFBTSxVQUFVMEIsQ0FBVTtBQUFBLElBQzlCLENBQUM7QUFBQSxFQUNMLEdBQ0FILEVBQVcsVUFBVSxhQUFhLFNBQVVHLEdBQVk7QUFDcEQsUUFBSWpFO0FBQ0osWUFBUUEsSUFBSyxLQUFLLFlBQVksUUFBUUEsTUFBTyxTQUFTLFNBQVNBLEVBQUcsVUFBVWlFLENBQVU7QUFBQSxFQUMxRixHQUNBSCxFQUFXLFVBQVVQLEVBQVUsSUFBSSxXQUFZO0FBQzNDLFdBQU87QUFBQSxFQUNYLEdBQ0FPLEVBQVcsVUFBVSxPQUFPLFdBQVk7QUFFcEMsYUFESVcsSUFBYSxDQUFDLEdBQ1Q1QyxJQUFLLEdBQUdBLElBQUssVUFBVSxRQUFRQTtBQUNwQyxNQUFBNEMsRUFBVzVDLENBQUUsSUFBSSxVQUFVQSxDQUFFO0FBRWpDLFdBQU82QixHQUFjZSxDQUFVLEVBQUUsSUFBSTtBQUFBLEVBQ3pDLEdBQ0FYLEVBQVcsVUFBVSxZQUFZLFNBQVVPLEdBQWE7QUFDcEQsUUFBSTlCLElBQVE7QUFDWixXQUFBOEIsSUFBY0MsR0FBZUQsQ0FBVyxHQUNqQyxJQUFJQSxFQUFZLFNBQVVFLEdBQVNDLEdBQVE7QUFDOUMsVUFBSXhGO0FBQ0osTUFBQXVELEVBQU0sVUFBVSxTQUFVa0IsR0FBRztBQUFFLGVBQVF6RSxJQUFReUU7QUFBQSxNQUFJLEdBQUcsU0FBVWpFLEdBQUs7QUFBRSxlQUFPZ0YsRUFBT2hGLENBQUc7QUFBQSxNQUFHLEdBQUcsV0FBWTtBQUFFLGVBQU8rRSxFQUFRdkYsQ0FBSztBQUFBLE1BQUcsQ0FBQztBQUFBLElBQ3hJLENBQUM7QUFBQSxFQUNMLEdBQ0E4RSxFQUFXLFNBQVMsU0FBVUMsR0FBVztBQUNyQyxXQUFPLElBQUlELEVBQVdDLENBQVM7QUFBQSxFQUNuQyxHQUNPRDtBQUNYLEVBQUU7QUFDRixTQUFTUSxHQUFlRCxHQUFhO0FBQ2pDLE1BQUlyRTtBQUNKLFVBQVFBLElBQUtxRSxLQUErRDdDLEdBQU8sYUFBYSxRQUFReEIsTUFBTyxTQUFTQSxJQUFLO0FBQ2pJO0FBQ0EsU0FBUzBFLEdBQVcxRixHQUFPO0FBQ3ZCLFNBQU9BLEtBQVNELEVBQVdDLEVBQU0sSUFBSSxLQUFLRCxFQUFXQyxFQUFNLEtBQUssS0FBS0QsRUFBV0MsRUFBTSxRQUFRO0FBQ2xHO0FBQ0EsU0FBU2tGLEdBQWFsRixHQUFPO0FBQ3pCLFNBQVFBLEtBQVNBLGFBQWlCb0QsTUFBZ0JzQyxHQUFXMUYsQ0FBSyxLQUFLdUMsR0FBZXZDLENBQUs7QUFDL0Y7QUFFQSxTQUFTMkYsR0FBUVIsR0FBUTtBQUNyQixTQUFPcEYsRUFBV29GLEtBQVcsT0FBNEIsU0FBU0EsRUFBTyxJQUFJO0FBQ2pGO0FBQ0EsU0FBU1MsR0FBUUMsR0FBTTtBQUNuQixTQUFPLFNBQVVWLEdBQVE7QUFDckIsUUFBSVEsR0FBUVIsQ0FBTTtBQUNkLGFBQU9BLEVBQU8sS0FBSyxTQUFVVyxHQUFjO0FBQ3ZDLFlBQUk7QUFDQSxpQkFBT0QsRUFBS0MsR0FBYyxJQUFJO0FBQUEsUUFDbEMsU0FDT3RGLEdBQUs7QUFDUixlQUFLLE1BQU1BLENBQUc7QUFBQSxRQUNsQjtBQUFBLE1BQ0osQ0FBQztBQUVMLFVBQU0sSUFBSSxVQUFVLHdDQUF3QztBQUFBLEVBQ2hFO0FBQ0o7QUFFQSxTQUFTdUYsR0FBeUJ6QyxHQUFhMEMsR0FBUUMsR0FBWUMsR0FBU0MsR0FBWTtBQUNwRixTQUFPLElBQUlDLEdBQW1COUMsR0FBYTBDLEdBQVFDLEdBQVlDLEdBQVNDLENBQVU7QUFDdEY7QUFDQSxJQUFJQyxLQUFzQixTQUFVakcsR0FBUTtBQUN4QyxFQUFBa0QsR0FBVStDLEdBQW9CakcsQ0FBTTtBQUNwQyxXQUFTaUcsRUFBbUI5QyxHQUFhMEMsR0FBUUMsR0FBWUMsR0FBU0MsR0FBWUUsR0FBbUI7QUFDakcsUUFBSTlDLElBQVFwRCxFQUFPLEtBQUssTUFBTW1ELENBQVcsS0FBSztBQUM5QyxXQUFBQyxFQUFNLGFBQWE0QyxHQUNuQjVDLEVBQU0sb0JBQW9COEMsR0FDMUI5QyxFQUFNLFFBQVF5QyxJQUNSLFNBQVVoRyxHQUFPO0FBQ2YsVUFBSTtBQUNBLFFBQUFnRyxFQUFPaEcsQ0FBSztBQUFBLE1BQ2hCLFNBQ09RLEdBQUs7QUFDUixRQUFBOEMsRUFBWSxNQUFNOUMsQ0FBRztBQUFBLE1BQ3pCO0FBQUEsSUFDSixJQUNFTCxFQUFPLFVBQVUsT0FDdkJvRCxFQUFNLFNBQVMyQyxJQUNULFNBQVUxRixHQUFLO0FBQ2IsVUFBSTtBQUNBLFFBQUEwRixFQUFRMUYsQ0FBRztBQUFBLE1BQ2YsU0FDT0EsR0FBSztBQUNSLFFBQUE4QyxFQUFZLE1BQU05QyxDQUFHO0FBQUEsTUFDekIsVUFDQTtBQUNJLGFBQUssWUFBWTtBQUFBLE1BQ3JCO0FBQUEsSUFDSixJQUNFTCxFQUFPLFVBQVUsUUFDdkJvRCxFQUFNLFlBQVkwQyxJQUNaLFdBQVk7QUFDVixVQUFJO0FBQ0EsUUFBQUEsRUFBVztBQUFBLE1BQ2YsU0FDT3pGLEdBQUs7QUFDUixRQUFBOEMsRUFBWSxNQUFNOUMsQ0FBRztBQUFBLE1BQ3pCLFVBQ0E7QUFDSSxhQUFLLFlBQVk7QUFBQSxNQUNyQjtBQUFBLElBQ0osSUFDRUwsRUFBTyxVQUFVLFdBQ2hCb0Q7QUFBQSxFQUNYO0FBQ0EsU0FBQTZDLEVBQW1CLFVBQVUsY0FBYyxXQUFZO0FBQ25ELFFBQUlwRjtBQUNKLFFBQUksQ0FBQyxLQUFLLHFCQUFxQixLQUFLLGtCQUFrQixHQUFHO0FBQ3JELFVBQUlzRixJQUFXLEtBQUs7QUFDcEIsTUFBQW5HLEVBQU8sVUFBVSxZQUFZLEtBQUssSUFBSSxHQUN0QyxDQUFDbUcsT0FBY3RGLElBQUssS0FBSyxnQkFBZ0IsUUFBUUEsTUFBTyxVQUFrQkEsRUFBRyxLQUFLLElBQUk7QUFBQSxJQUMxRjtBQUFBLEVBQ0osR0FDT29GO0FBQ1gsRUFBRWhELEVBQVUsR0FFUm1ELEtBQTBCdEcsR0FBaUIsU0FBVUUsR0FBUTtBQUM3RCxTQUFPLFdBQXVDO0FBQzFDLElBQUFBLEVBQU8sSUFBSSxHQUNYLEtBQUssT0FBTywyQkFDWixLQUFLLFVBQVU7QUFBQSxFQUNuQjtBQUNKLENBQUMsR0FFR3FHLEtBQVcsU0FBVXJHLEdBQVE7QUFDN0IsRUFBQWtELEdBQVVtRCxHQUFTckcsQ0FBTTtBQUN6QixXQUFTcUcsSUFBVTtBQUNmLFFBQUlqRCxJQUFRcEQsRUFBTyxLQUFLLElBQUksS0FBSztBQUNqQyxXQUFBb0QsRUFBTSxTQUFTLElBQ2ZBLEVBQU0sbUJBQW1CLE1BQ3pCQSxFQUFNLFlBQVksQ0FBQyxHQUNuQkEsRUFBTSxZQUFZLElBQ2xCQSxFQUFNLFdBQVcsSUFDakJBLEVBQU0sY0FBYyxNQUNiQTtBQUFBLEVBQ1g7QUFDQSxTQUFBaUQsRUFBUSxVQUFVLE9BQU8sU0FBVXhCLEdBQVU7QUFDekMsUUFBSXlCLElBQVUsSUFBSUMsR0FBaUIsTUFBTSxJQUFJO0FBQzdDLFdBQUFELEVBQVEsV0FBV3pCLEdBQ1p5QjtBQUFBLEVBQ1gsR0FDQUQsRUFBUSxVQUFVLGlCQUFpQixXQUFZO0FBQzNDLFFBQUksS0FBSztBQUNMLFlBQU0sSUFBSUQsR0FBd0I7QUFBQSxFQUUxQyxHQUNBQyxFQUFRLFVBQVUsT0FBTyxTQUFVeEcsR0FBTztBQUN0QyxRQUFJdUQsSUFBUTtBQUNaLElBQUFMLEdBQWEsV0FBWTtBQUNyQixVQUFJbkMsR0FBS0M7QUFFVCxVQURBdUMsRUFBTSxlQUFlLEdBQ2pCLENBQUNBLEVBQU0sV0FBVztBQUNsQixRQUFLQSxFQUFNLHFCQUNQQSxFQUFNLG1CQUFtQixNQUFNLEtBQUtBLEVBQU0sU0FBUztBQUV2RCxZQUFJO0FBQ0EsbUJBQVNyQyxJQUFLRyxHQUFTa0MsRUFBTSxnQkFBZ0IsR0FBR29ELElBQUt6RixFQUFHLEtBQUssR0FBRyxDQUFDeUYsRUFBRyxNQUFNQSxJQUFLekYsRUFBRyxLQUFLLEdBQUc7QUFDdEYsZ0JBQUkwRixJQUFXRCxFQUFHO0FBQ2xCLFlBQUFDLEVBQVMsS0FBSzVHLENBQUs7QUFBQSxVQUN2QjtBQUFBLFFBQ0osU0FDT3dCLEdBQU87QUFBRSxVQUFBVCxJQUFNLEVBQUUsT0FBT1MsRUFBTTtBQUFBLFFBQUcsVUFDeEM7QUFDSSxjQUFJO0FBQ0EsWUFBSW1GLEtBQU0sQ0FBQ0EsRUFBRyxTQUFTM0YsSUFBS0UsRUFBRyxXQUFTRixFQUFHLEtBQUtFLENBQUU7QUFBQSxVQUN0RCxVQUNBO0FBQVUsZ0JBQUlILEVBQUssT0FBTUEsRUFBSTtBQUFBLFVBQU87QUFBQSxRQUN4QztBQUFBLE1BQ0o7QUFBQSxJQUNKLENBQUM7QUFBQSxFQUNMLEdBQ0F5RixFQUFRLFVBQVUsUUFBUSxTQUFVaEcsR0FBSztBQUNyQyxRQUFJK0MsSUFBUTtBQUNaLElBQUFMLEdBQWEsV0FBWTtBQUVyQixVQURBSyxFQUFNLGVBQWUsR0FDakIsQ0FBQ0EsRUFBTSxXQUFXO0FBQ2xCLFFBQUFBLEVBQU0sV0FBV0EsRUFBTSxZQUFZLElBQ25DQSxFQUFNLGNBQWMvQztBQUVwQixpQkFESXFHLElBQVl0RCxFQUFNLFdBQ2ZzRCxFQUFVO0FBQ2IsVUFBQUEsRUFBVSxNQUFNLEVBQUUsTUFBTXJHLENBQUc7QUFBQSxNQUVuQztBQUFBLElBQ0osQ0FBQztBQUFBLEVBQ0wsR0FDQWdHLEVBQVEsVUFBVSxXQUFXLFdBQVk7QUFDckMsUUFBSWpELElBQVE7QUFDWixJQUFBTCxHQUFhLFdBQVk7QUFFckIsVUFEQUssRUFBTSxlQUFlLEdBQ2pCLENBQUNBLEVBQU0sV0FBVztBQUNsQixRQUFBQSxFQUFNLFlBQVk7QUFFbEIsaUJBRElzRCxJQUFZdEQsRUFBTSxXQUNmc0QsRUFBVTtBQUNiLFVBQUFBLEVBQVUsTUFBTSxFQUFFLFNBQVM7QUFBQSxNQUVuQztBQUFBLElBQ0osQ0FBQztBQUFBLEVBQ0wsR0FDQUwsRUFBUSxVQUFVLGNBQWMsV0FBWTtBQUN4QyxTQUFLLFlBQVksS0FBSyxTQUFTLElBQy9CLEtBQUssWUFBWSxLQUFLLG1CQUFtQjtBQUFBLEVBQzdDLEdBQ0EsT0FBTyxlQUFlQSxFQUFRLFdBQVcsWUFBWTtBQUFBLElBQ2pELEtBQUssV0FBWTtBQUNiLFVBQUl4RjtBQUNKLGVBQVNBLElBQUssS0FBSyxlQUFlLFFBQVFBLE1BQU8sU0FBUyxTQUFTQSxFQUFHLFVBQVU7QUFBQSxJQUNwRjtBQUFBLElBQ0EsWUFBWTtBQUFBLElBQ1osY0FBYztBQUFBLEVBQ2xCLENBQUMsR0FDRHdGLEVBQVEsVUFBVSxnQkFBZ0IsU0FBVXZCLEdBQVk7QUFDcEQsZ0JBQUssZUFBZSxHQUNiOUUsRUFBTyxVQUFVLGNBQWMsS0FBSyxNQUFNOEUsQ0FBVTtBQUFBLEVBQy9ELEdBQ0F1QixFQUFRLFVBQVUsYUFBYSxTQUFVdkIsR0FBWTtBQUNqRCxnQkFBSyxlQUFlLEdBQ3BCLEtBQUssd0JBQXdCQSxDQUFVLEdBQ2hDLEtBQUssZ0JBQWdCQSxDQUFVO0FBQUEsRUFDMUMsR0FDQXVCLEVBQVEsVUFBVSxrQkFBa0IsU0FBVXZCLEdBQVk7QUFDdEQsUUFBSTFCLElBQVEsTUFDUnZDLElBQUssTUFBTThGLElBQVc5RixFQUFHLFVBQVUrRixJQUFZL0YsRUFBRyxXQUFXNkYsSUFBWTdGLEVBQUc7QUFDaEYsV0FBSThGLEtBQVlDLElBQ0x6RSxNQUVYLEtBQUssbUJBQW1CLE1BQ3hCdUUsRUFBVSxLQUFLNUIsQ0FBVSxHQUNsQixJQUFJcEUsR0FBYSxXQUFZO0FBQ2hDLE1BQUEwQyxFQUFNLG1CQUFtQixNQUN6QjlDLEdBQVVvRyxHQUFXNUIsQ0FBVTtBQUFBLElBQ25DLENBQUM7QUFBQSxFQUNMLEdBQ0F1QixFQUFRLFVBQVUsMEJBQTBCLFNBQVV2QixHQUFZO0FBQzlELFFBQUlqRSxJQUFLLE1BQU04RixJQUFXOUYsRUFBRyxVQUFVZ0csSUFBY2hHLEVBQUcsYUFBYStGLElBQVkvRixFQUFHO0FBQ3BGLElBQUk4RixJQUNBN0IsRUFBVyxNQUFNK0IsQ0FBVyxJQUV2QkQsS0FDTDlCLEVBQVcsU0FBUztBQUFBLEVBRTVCLEdBQ0F1QixFQUFRLFVBQVUsZUFBZSxXQUFZO0FBQ3pDLFFBQUlqQyxJQUFhLElBQUlPLEdBQVc7QUFDaEMsV0FBQVAsRUFBVyxTQUFTLE1BQ2JBO0FBQUEsRUFDWCxHQUNBaUMsRUFBUSxTQUFTLFNBQVVsRCxHQUFhNkIsR0FBUTtBQUM1QyxXQUFPLElBQUl1QixHQUFpQnBELEdBQWE2QixDQUFNO0FBQUEsRUFDbkQsR0FDT3FCO0FBQ1gsRUFBRTFCLEVBQVUsR0FDUjRCLEtBQW9CLFNBQVV2RyxHQUFRO0FBQ3RDLEVBQUFrRCxHQUFVcUQsR0FBa0J2RyxDQUFNO0FBQ2xDLFdBQVN1RyxFQUFpQnBELEdBQWE2QixHQUFRO0FBQzNDLFFBQUk1QixJQUFRcEQsRUFBTyxLQUFLLElBQUksS0FBSztBQUNqQyxXQUFBb0QsRUFBTSxjQUFjRCxHQUNwQkMsRUFBTSxTQUFTNEIsR0FDUjVCO0FBQUEsRUFDWDtBQUNBLFNBQUFtRCxFQUFpQixVQUFVLE9BQU8sU0FBVTFHLEdBQU87QUFDL0MsUUFBSWdCLEdBQUlFO0FBQ1IsS0FBQ0EsS0FBTUYsSUFBSyxLQUFLLGlCQUFpQixRQUFRQSxNQUFPLFNBQVMsU0FBU0EsRUFBRyxVQUFVLFFBQVFFLE1BQU8sVUFBa0JBLEVBQUcsS0FBS0YsR0FBSWhCLENBQUs7QUFBQSxFQUN0SSxHQUNBMEcsRUFBaUIsVUFBVSxRQUFRLFNBQVVsRyxHQUFLO0FBQzlDLFFBQUlRLEdBQUlFO0FBQ1IsS0FBQ0EsS0FBTUYsSUFBSyxLQUFLLGlCQUFpQixRQUFRQSxNQUFPLFNBQVMsU0FBU0EsRUFBRyxXQUFXLFFBQVFFLE1BQU8sVUFBa0JBLEVBQUcsS0FBS0YsR0FBSVIsQ0FBRztBQUFBLEVBQ3JJLEdBQ0FrRyxFQUFpQixVQUFVLFdBQVcsV0FBWTtBQUM5QyxRQUFJMUYsR0FBSUU7QUFDUixLQUFDQSxLQUFNRixJQUFLLEtBQUssaUJBQWlCLFFBQVFBLE1BQU8sU0FBUyxTQUFTQSxFQUFHLGNBQWMsUUFBUUUsTUFBTyxVQUFrQkEsRUFBRyxLQUFLRixDQUFFO0FBQUEsRUFDbkksR0FDQTBGLEVBQWlCLFVBQVUsYUFBYSxTQUFVekIsR0FBWTtBQUMxRCxRQUFJakUsR0FBSUU7QUFDUixZQUFRQSxLQUFNRixJQUFLLEtBQUssWUFBWSxRQUFRQSxNQUFPLFNBQVMsU0FBU0EsRUFBRyxVQUFVaUUsQ0FBVSxPQUFPLFFBQVEvRCxNQUFPLFNBQVNBLElBQUtvQjtBQUFBLEVBQ3BJLEdBQ09vRTtBQUNYLEVBQUVGLEVBQU8sR0FFTFMsS0FBd0I7QUFBQSxFQUN4QixLQUFLLFdBQVk7QUFDYixXQUFRLEtBQU0sSUFBSTtBQUFBLEVBQ3RCO0FBQUEsRUFDQSxVQUFVO0FBQ2QsR0FFSUMsS0FBVSxTQUFVL0csR0FBUTtBQUM1QixFQUFBa0QsR0FBVTZELEdBQVEvRyxDQUFNO0FBQ3hCLFdBQVMrRyxFQUFPQyxHQUFXQyxHQUFNO0FBQzdCLFdBQU9qSCxFQUFPLEtBQUssSUFBSSxLQUFLO0FBQUEsRUFDaEM7QUFDQSxTQUFBK0csRUFBTyxVQUFVLFdBQVcsU0FBVUcsR0FBT0MsR0FBTztBQUNoRCxXQUFPO0FBQUEsRUFDWCxHQUNPSjtBQUNYLEVBQUVyRyxFQUFZLEdBRVYwRyxLQUFtQjtBQUFBLEVBQ25CLGFBQWEsU0FBVTdFLEdBQVNDLEdBQVM7QUFFckMsYUFESUMsSUFBTyxDQUFDLEdBQ0hDLElBQUssR0FBR0EsSUFBSyxVQUFVLFFBQVFBO0FBQ3BDLE1BQUFELEVBQUtDLElBQUssQ0FBQyxJQUFJLFVBQVVBLENBQUU7QUFFL0IsV0FBTyxZQUFZLE1BQU0sUUFBUWIsR0FBYyxDQUFDVSxHQUFTQyxDQUFPLEdBQUdWLEdBQU9XLENBQUksQ0FBQyxDQUFDO0FBQUEsRUFDcEY7QUFBQSxFQUNBLGVBQWUsU0FBVUUsR0FBUTtBQUM3QixXQUFRLGNBQWVBLENBQU07QUFBQSxFQUNqQztBQUFBLEVBQ0EsVUFBVTtBQUNkLEdBRUkwRSxLQUFlLFNBQVVySCxHQUFRO0FBQ2pDLEVBQUFrRCxHQUFVbUUsR0FBYXJILENBQU07QUFDN0IsV0FBU3FILEVBQVlMLEdBQVdDLEdBQU07QUFDbEMsUUFBSTdELElBQVFwRCxFQUFPLEtBQUssTUFBTWdILEdBQVdDLENBQUksS0FBSztBQUNsRCxXQUFBN0QsRUFBTSxZQUFZNEQsR0FDbEI1RCxFQUFNLE9BQU82RCxHQUNiN0QsRUFBTSxVQUFVLElBQ1RBO0FBQUEsRUFDWDtBQUNBLFNBQUFpRSxFQUFZLFVBQVUsV0FBVyxTQUFVSCxHQUFPQyxHQUFPO0FBQ3JELFFBQUl0RztBQUVKLFFBRElzRyxNQUFVLFdBQVVBLElBQVEsSUFDNUIsS0FBSztBQUNMLGFBQU87QUFFWCxTQUFLLFFBQVFEO0FBQ2IsUUFBSUksSUFBSyxLQUFLLElBQ1ZOLElBQVksS0FBSztBQUNyQixXQUFJTSxLQUFNLFNBQ04sS0FBSyxLQUFLLEtBQUssZUFBZU4sR0FBV00sR0FBSUgsQ0FBSyxJQUV0RCxLQUFLLFVBQVUsSUFDZixLQUFLLFFBQVFBLEdBQ2IsS0FBSyxNQUFNdEcsSUFBSyxLQUFLLFFBQVEsUUFBUUEsTUFBTyxTQUFTQSxJQUFLLEtBQUssZUFBZW1HLEdBQVcsS0FBSyxJQUFJRyxDQUFLLEdBQ2hHO0FBQUEsRUFDWCxHQUNBRSxFQUFZLFVBQVUsaUJBQWlCLFNBQVVMLEdBQVdPLEdBQUtKLEdBQU87QUFDcEUsV0FBSUEsTUFBVSxXQUFVQSxJQUFRLElBQ3pCQyxHQUFpQixZQUFZSixFQUFVLE1BQU0sS0FBS0EsR0FBVyxJQUFJLEdBQUdHLENBQUs7QUFBQSxFQUNwRixHQUNBRSxFQUFZLFVBQVUsaUJBQWlCLFNBQVVHLEdBQVlGLEdBQUlILEdBQU87QUFFcEUsUUFESUEsTUFBVSxXQUFVQSxJQUFRLElBQzVCQSxLQUFTLFFBQVEsS0FBSyxVQUFVQSxLQUFTLEtBQUssWUFBWTtBQUMxRCxhQUFPRztBQUVYLElBQUlBLEtBQU0sUUFDTkYsR0FBaUIsY0FBY0UsQ0FBRTtBQUFBLEVBR3pDLEdBQ0FELEVBQVksVUFBVSxVQUFVLFNBQVVILEdBQU9DLEdBQU87QUFDcEQsUUFBSSxLQUFLO0FBQ0wsYUFBTyxJQUFJLE1BQU0sOEJBQThCO0FBRW5ELFNBQUssVUFBVTtBQUNmLFFBQUk1RCxJQUFRLEtBQUssU0FBUzJELEdBQU9DLENBQUs7QUFDdEMsUUFBSTVEO0FBQ0EsYUFBT0E7QUFFTixJQUFJLEtBQUssWUFBWSxNQUFTLEtBQUssTUFBTSxTQUMxQyxLQUFLLEtBQUssS0FBSyxlQUFlLEtBQUssV0FBVyxLQUFLLElBQUksSUFBSTtBQUFBLEVBRW5FLEdBQ0E4RCxFQUFZLFVBQVUsV0FBVyxTQUFVSCxHQUFPTyxHQUFRO0FBQ3RELFFBQUlDLElBQVUsSUFDVkM7QUFDSixRQUFJO0FBQ0EsV0FBSyxLQUFLVCxDQUFLO0FBQUEsSUFDbkIsU0FDTzNGLEdBQUc7QUFDTixNQUFBbUcsSUFBVSxJQUNWQyxJQUFhcEcsS0FBUSxJQUFJLE1BQU0sb0NBQW9DO0FBQUEsSUFDdkU7QUFDQSxRQUFJbUc7QUFDQSxrQkFBSyxZQUFZLEdBQ1ZDO0FBQUEsRUFFZixHQUNBTixFQUFZLFVBQVUsY0FBYyxXQUFZO0FBQzVDLFFBQUksQ0FBQyxLQUFLLFFBQVE7QUFDZCxVQUFJeEcsSUFBSyxNQUFNeUcsSUFBS3pHLEVBQUcsSUFBSW1HLElBQVluRyxFQUFHLFdBQ3RDK0csSUFBVVosRUFBVTtBQUN4QixXQUFLLE9BQU8sS0FBSyxRQUFRLEtBQUssWUFBWSxNQUMxQyxLQUFLLFVBQVUsSUFDZjFHLEdBQVVzSCxHQUFTLElBQUksR0FDbkJOLEtBQU0sU0FDTixLQUFLLEtBQUssS0FBSyxlQUFlTixHQUFXTSxHQUFJLElBQUksSUFFckQsS0FBSyxRQUFRLE1BQ2J0SCxFQUFPLFVBQVUsWUFBWSxLQUFLLElBQUk7QUFBQSxJQUMxQztBQUFBLEVBQ0osR0FDT3FIO0FBQ1gsRUFBRU4sRUFBTSxHQUVKYyxLQUFhLFdBQVk7QUFDekIsV0FBU0EsRUFBVUMsR0FBcUJDLEdBQUs7QUFDekMsSUFBSUEsTUFBUSxXQUFVQSxJQUFNRixFQUFVLE1BQ3RDLEtBQUssc0JBQXNCQyxHQUMzQixLQUFLLE1BQU1DO0FBQUEsRUFDZjtBQUNBLFNBQUFGLEVBQVUsVUFBVSxXQUFXLFNBQVVaLEdBQU1FLEdBQU9ELEdBQU87QUFDekQsV0FBSUMsTUFBVSxXQUFVQSxJQUFRLElBQ3pCLElBQUksS0FBSyxvQkFBb0IsTUFBTUYsQ0FBSSxFQUFFLFNBQVNDLEdBQU9DLENBQUs7QUFBQSxFQUN6RSxHQUNBVSxFQUFVLE1BQU1mLEdBQXNCLEtBQy9CZTtBQUNYLEVBQUUsR0FFRUcsS0FBa0IsU0FBVWhJLEdBQVE7QUFDcEMsRUFBQWtELEdBQVU4RSxHQUFnQmhJLENBQU07QUFDaEMsV0FBU2dJLEVBQWVDLEdBQWlCRixHQUFLO0FBQzFDLElBQUlBLE1BQVEsV0FBVUEsSUFBTUYsR0FBVTtBQUN0QyxRQUFJekUsSUFBUXBELEVBQU8sS0FBSyxNQUFNaUksR0FBaUJGLENBQUcsS0FBSztBQUN2RCxXQUFBM0UsRUFBTSxVQUFVLENBQUMsR0FDakJBLEVBQU0sVUFBVSxJQUNUQTtBQUFBLEVBQ1g7QUFDQSxTQUFBNEUsRUFBZSxVQUFVLFFBQVEsU0FBVUUsR0FBUTtBQUMvQyxRQUFJTixJQUFVLEtBQUs7QUFDbkIsUUFBSSxLQUFLLFNBQVM7QUFDZCxNQUFBQSxFQUFRLEtBQUtNLENBQU07QUFDbkI7QUFBQSxJQUNKO0FBQ0EsUUFBSTNFO0FBQ0osU0FBSyxVQUFVO0FBQ2Y7QUFDSSxVQUFLQSxJQUFRMkUsRUFBTyxRQUFRQSxFQUFPLE9BQU9BLEVBQU8sS0FBSztBQUNsRDtBQUFBLFdBRUVBLElBQVNOLEVBQVEsTUFBTTtBQUVqQyxRQURBLEtBQUssVUFBVSxJQUNYckUsR0FBTztBQUNQLGFBQVEyRSxJQUFTTixFQUFRLE1BQU07QUFDM0IsUUFBQU0sRUFBTyxZQUFZO0FBRXZCLFlBQU0zRTtBQUFBLElBQ1Y7QUFBQSxFQUNKLEdBQ095RTtBQUNYLEVBQUVILEVBQVMsR0FFUE0sS0FBaUIsSUFBSUgsR0FBZVgsRUFBVyxHQUUvQ2UsS0FBZSxTQUFVOUQsR0FBRztBQUFFLFNBQU9BLEtBQUssT0FBT0EsRUFBRSxVQUFXLFlBQVksT0FBT0EsS0FBTTtBQUFZO0FBRXZHLFNBQVMrRCxHQUFVeEksR0FBTztBQUN0QixTQUFPRCxFQUFXQyxLQUFVLE9BQTJCLFNBQVNBLEVBQU0sSUFBSTtBQUM5RTtBQUVBLFNBQVN5SSxHQUFvQjdELEdBQU87QUFDaEMsU0FBTzdFLEVBQVc2RSxFQUFNTCxFQUFVLENBQUM7QUFDdkM7QUFFQSxTQUFTbUUsR0FBZ0JDLEdBQUs7QUFDMUIsU0FBTyxPQUFPLGlCQUFpQjVJLEVBQVc0SSxLQUFRLE9BQXlCLFNBQVNBLEVBQUksT0FBTyxhQUFhLENBQUM7QUFDakg7QUFFQSxTQUFTQyxHQUFpQ2hFLEdBQU87QUFDN0MsU0FBTyxJQUFJLFVBQVUsbUJBQW1CQSxNQUFVLFFBQVEsT0FBT0EsS0FBVSxXQUFXLHNCQUFzQixNQUFNQSxJQUFRLE9BQU8sMEhBQTBIO0FBQy9QO0FBRUEsU0FBU2lFLEtBQW9CO0FBQ3pCLFNBQUksT0FBTyxVQUFXLGNBQWMsQ0FBQyxPQUFPLFdBQ2pDLGVBRUosT0FBTztBQUNsQjtBQUNBLElBQUlDLEtBQVdELEdBQWtCO0FBRWpDLFNBQVNFLEdBQVduRSxHQUFPO0FBQ3ZCLFNBQU83RSxFQUFXNkUsS0FBVSxPQUEyQixTQUFTQSxFQUFNa0UsRUFBUSxDQUFDO0FBQ25GO0FBRUEsU0FBU0UsR0FBbUNDLEdBQWdCO0FBQ3hELFNBQU9DLEdBQWlCLE1BQU0sV0FBVyxXQUFnRDtBQUNyRixRQUFJQyxHQUFRbkksR0FBSWhCLEdBQU9vSjtBQUN2QixXQUFPQyxHQUFZLE1BQU0sU0FBVW5JLEdBQUk7QUFDbkMsY0FBUUEsRUFBRyxPQUFPO0FBQUEsUUFDZCxLQUFLO0FBQ0QsVUFBQWlJLElBQVNGLEVBQWUsVUFBVSxHQUNsQy9ILEVBQUcsUUFBUTtBQUFBLFFBQ2YsS0FBSztBQUNELFVBQUFBLEVBQUcsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQ3pCQSxFQUFHLFFBQVE7QUFBQSxRQUNmLEtBQUs7QUFDRCxpQkFBTyxDQUFDLEdBQUdvSSxHQUFRSCxFQUFPLEtBQUssQ0FBQyxDQUFDO0FBQUEsUUFDckMsS0FBSztBQUVELGlCQURBbkksSUFBS0UsRUFBRyxLQUFLLEdBQUdsQixJQUFRZ0IsRUFBRyxPQUFPb0ksSUFBT3BJLEVBQUcsTUFDdkNvSSxJQUNFLENBQUMsR0FBR0UsR0FBUSxNQUFNLENBQUMsSUFEUixDQUFDLEdBQUcsQ0FBQztBQUFBLFFBRTNCLEtBQUs7QUFBRyxpQkFBTyxDQUFDLEdBQUdwSSxFQUFHLEtBQUssQ0FBQztBQUFBLFFBQzVCLEtBQUs7QUFBRyxpQkFBTyxDQUFDLEdBQUdvSSxHQUFRdEosQ0FBSyxDQUFDO0FBQUEsUUFDakMsS0FBSztBQUFHLGlCQUFPLENBQUMsR0FBR2tCLEVBQUcsS0FBSyxDQUFDO0FBQUEsUUFDNUIsS0FBSztBQUNELGlCQUFBQSxFQUFHLEtBQUssR0FDRCxDQUFDLEdBQUcsQ0FBQztBQUFBLFFBQ2hCLEtBQUs7QUFBRyxpQkFBTyxDQUFDLEdBQUcsRUFBRTtBQUFBLFFBQ3JCLEtBQUs7QUFDRCxpQkFBQWlJLEVBQU8sWUFBWSxHQUNaLENBQUMsQ0FBQztBQUFBLFFBQ2IsS0FBSztBQUFJLGlCQUFPLENBQUMsQ0FBQztBQUFBLE1BQ3RCO0FBQUEsSUFDSixDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7QUFDQSxTQUFTSSxHQUFxQlosR0FBSztBQUMvQixTQUFPNUksRUFBVzRJLEtBQVEsT0FBeUIsU0FBU0EsRUFBSSxTQUFTO0FBQzdFO0FBRUEsU0FBU2EsR0FBVTVFLEdBQU87QUFDdEIsTUFBSUEsYUFBaUJFO0FBQ2pCLFdBQU9GO0FBRVgsTUFBSUEsS0FBUyxNQUFNO0FBQ2YsUUFBSTZELEdBQW9CN0QsQ0FBSztBQUN6QixhQUFPNkUsR0FBc0I3RSxDQUFLO0FBRXRDLFFBQUkyRCxHQUFZM0QsQ0FBSztBQUNqQixhQUFPOEUsR0FBYzlFLENBQUs7QUFFOUIsUUFBSTRELEdBQVU1RCxDQUFLO0FBQ2YsYUFBTytFLEdBQVkvRSxDQUFLO0FBRTVCLFFBQUk4RCxHQUFnQjlELENBQUs7QUFDckIsYUFBT2dGLEdBQWtCaEYsQ0FBSztBQUVsQyxRQUFJbUUsR0FBV25FLENBQUs7QUFDaEIsYUFBT2lGLEdBQWFqRixDQUFLO0FBRTdCLFFBQUkyRSxHQUFxQjNFLENBQUs7QUFDMUIsYUFBT2tGLEdBQXVCbEYsQ0FBSztBQUFBLEVBRTNDO0FBQ0EsUUFBTWdFLEdBQWlDaEUsQ0FBSztBQUNoRDtBQUNBLFNBQVM2RSxHQUFzQmQsR0FBSztBQUNoQyxTQUFPLElBQUk3RCxHQUFXLFNBQVVHLEdBQVk7QUFDeEMsUUFBSThFLElBQU1wQixFQUFJcEUsRUFBVSxFQUFFO0FBQzFCLFFBQUl4RSxFQUFXZ0ssRUFBSSxTQUFTO0FBQ3hCLGFBQU9BLEVBQUksVUFBVTlFLENBQVU7QUFFbkMsVUFBTSxJQUFJLFVBQVUsZ0VBQWdFO0FBQUEsRUFDeEYsQ0FBQztBQUNMO0FBQ0EsU0FBU3lFLEdBQWNNLEdBQU87QUFDMUIsU0FBTyxJQUFJbEYsR0FBVyxTQUFVRyxHQUFZO0FBQ3hDLGFBQVNnRixJQUFJLEdBQUdBLElBQUlELEVBQU0sVUFBVSxDQUFDL0UsRUFBVyxRQUFRZ0Y7QUFDcEQsTUFBQWhGLEVBQVcsS0FBSytFLEVBQU1DLENBQUMsQ0FBQztBQUU1QixJQUFBaEYsRUFBVyxTQUFTO0FBQUEsRUFDeEIsQ0FBQztBQUNMO0FBQ0EsU0FBUzBFLEdBQVlPLEdBQVM7QUFDMUIsU0FBTyxJQUFJcEYsR0FBVyxTQUFVRyxHQUFZO0FBQ3hDLElBQUFpRixFQUNLLEtBQUssU0FBVWxLLEdBQU87QUFDdkIsTUFBS2lGLEVBQVcsV0FDWkEsRUFBVyxLQUFLakYsQ0FBSyxHQUNyQmlGLEVBQVcsU0FBUztBQUFBLElBRTVCLEdBQUcsU0FBVXpFLEdBQUs7QUFBRSxhQUFPeUUsRUFBVyxNQUFNekUsQ0FBRztBQUFBLElBQUcsQ0FBQyxFQUM5QyxLQUFLLE1BQU13QyxFQUFvQjtBQUFBLEVBQ3hDLENBQUM7QUFDTDtBQUNBLFNBQVM2RyxHQUFhTSxHQUFVO0FBQzVCLFNBQU8sSUFBSXJGLEdBQVcsU0FBVUcsR0FBWTtBQUN4QyxRQUFJbEUsR0FBS0M7QUFDVCxRQUFJO0FBQ0EsZUFBU29KLElBQWEvSSxHQUFTOEksQ0FBUSxHQUFHRSxJQUFlRCxFQUFXLEtBQUssR0FBRyxDQUFDQyxFQUFhLE1BQU1BLElBQWVELEVBQVcsS0FBSyxHQUFHO0FBQzlILFlBQUlwSyxJQUFRcUssRUFBYTtBQUV6QixZQURBcEYsRUFBVyxLQUFLakYsQ0FBSyxHQUNqQmlGLEVBQVc7QUFDWDtBQUFBLE1BRVI7QUFBQSxJQUNKLFNBQ096RCxHQUFPO0FBQUUsTUFBQVQsSUFBTSxFQUFFLE9BQU9TLEVBQU07QUFBQSxJQUFHLFVBQ3hDO0FBQ0ksVUFBSTtBQUNBLFFBQUk2SSxLQUFnQixDQUFDQSxFQUFhLFNBQVNySixJQUFLb0osRUFBVyxXQUFTcEosRUFBRyxLQUFLb0osQ0FBVTtBQUFBLE1BQzFGLFVBQ0E7QUFBVSxZQUFJckosRUFBSyxPQUFNQSxFQUFJO0FBQUEsTUFBTztBQUFBLElBQ3hDO0FBQ0EsSUFBQWtFLEVBQVcsU0FBUztBQUFBLEVBQ3hCLENBQUM7QUFDTDtBQUNBLFNBQVMyRSxHQUFrQlUsR0FBZTtBQUN0QyxTQUFPLElBQUl4RixHQUFXLFNBQVVHLEdBQVk7QUFDeEMsSUFBQXNGLEdBQVFELEdBQWVyRixDQUFVLEVBQUUsTUFBTSxTQUFVekUsR0FBSztBQUFFLGFBQU95RSxFQUFXLE1BQU16RSxDQUFHO0FBQUEsSUFBRyxDQUFDO0FBQUEsRUFDN0YsQ0FBQztBQUNMO0FBQ0EsU0FBU3NKLEdBQXVCYixHQUFnQjtBQUM1QyxTQUFPVyxHQUFrQlosR0FBbUNDLENBQWMsQ0FBQztBQUMvRTtBQUNBLFNBQVNzQixHQUFRRCxHQUFlckYsR0FBWTtBQUN4QyxNQUFJdUYsR0FBaUJDLEdBQ2pCeEosR0FBS0Q7QUFDVCxTQUFPMEosR0FBVSxNQUFNLFFBQVEsUUFBUSxXQUFZO0FBQy9DLFFBQUkxSyxHQUFPa0M7QUFDWCxXQUFPbUgsR0FBWSxNQUFNLFNBQVVuSSxHQUFJO0FBQ25DLGNBQVFBLEVBQUcsT0FBTztBQUFBLFFBQ2QsS0FBSztBQUNELFVBQUFBLEVBQUcsS0FBSyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQzFCc0osSUFBa0JHLEdBQWNMLENBQWEsR0FDN0NwSixFQUFHLFFBQVE7QUFBQSxRQUNmLEtBQUs7QUFBRyxpQkFBTyxDQUFDLEdBQUdzSixFQUFnQixLQUFLLENBQUM7QUFBQSxRQUN6QyxLQUFLO0FBQ0QsY0FBTUMsSUFBb0J2SixFQUFHLEtBQUssR0FBRyxFQUFDdUosRUFBa0IsS0FBTyxRQUFPLENBQUMsR0FBRyxDQUFDO0FBRzNFLGNBRkF6SyxJQUFReUssRUFBa0IsT0FDMUJ4RixFQUFXLEtBQUtqRixDQUFLLEdBQ2pCaUYsRUFBVztBQUNYLG1CQUFPLENBQUMsQ0FBQztBQUViLFVBQUEvRCxFQUFHLFFBQVE7QUFBQSxRQUNmLEtBQUs7QUFBRyxpQkFBTyxDQUFDLEdBQUcsQ0FBQztBQUFBLFFBQ3BCLEtBQUs7QUFBRyxpQkFBTyxDQUFDLEdBQUcsRUFBRTtBQUFBLFFBQ3JCLEtBQUs7QUFDRCxpQkFBQWdCLElBQVFoQixFQUFHLEtBQUssR0FDaEJELElBQU0sRUFBRSxPQUFPaUIsRUFBTSxHQUNkLENBQUMsR0FBRyxFQUFFO0FBQUEsUUFDakIsS0FBSztBQUVELGlCQURBaEIsRUFBRyxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FDbkJ1SixLQUFxQixDQUFDQSxFQUFrQixTQUFTekosSUFBS3dKLEVBQWdCLFVBQ3JFLENBQUMsR0FBR3hKLEVBQUcsS0FBS3dKLENBQWUsQ0FBQyxJQUQwRCxDQUFDLEdBQUcsQ0FBQztBQUFBLFFBRXRHLEtBQUs7QUFDRCxVQUFBdEosRUFBRyxLQUFLLEdBQ1JBLEVBQUcsUUFBUTtBQUFBLFFBQ2YsS0FBSztBQUFHLGlCQUFPLENBQUMsR0FBRyxFQUFFO0FBQUEsUUFDckIsS0FBSztBQUNELGNBQUlELEVBQUssT0FBTUEsRUFBSTtBQUNuQixpQkFBTyxDQUFDLENBQUM7QUFBQSxRQUNiLEtBQUs7QUFBSSxpQkFBTyxDQUFDLENBQUM7QUFBQSxRQUNsQixLQUFLO0FBQ0QsaUJBQUFnRSxFQUFXLFNBQVMsR0FDYixDQUFDLENBQUM7QUFBQSxNQUNqQjtBQUFBLElBQ0osQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUNMO0FBRUEsU0FBUzJGLEdBQWdCQyxHQUFvQjFELEdBQVdDLEdBQU1FLEdBQU93RCxHQUFRO0FBQ3pFLEVBQUl4RCxNQUFVLFdBQVVBLElBQVEsSUFDNUJ3RCxNQUFXLFdBQVVBLElBQVM7QUFDbEMsTUFBSUMsSUFBdUI1RCxFQUFVLFNBQVMsV0FBWTtBQUN0RCxJQUFBQyxFQUFLLEdBQ0QwRCxJQUNBRCxFQUFtQixJQUFJLEtBQUssU0FBUyxNQUFNdkQsQ0FBSyxDQUFDLElBR2pELEtBQUssWUFBWTtBQUFBLEVBRXpCLEdBQUdBLENBQUs7QUFFUixNQURBdUQsRUFBbUIsSUFBSUUsQ0FBb0IsR0FDdkMsQ0FBQ0Q7QUFDRCxXQUFPQztBQUVmO0FBRUEsU0FBU0MsR0FBV0MsR0FBcUI5RCxHQUFXO0FBQ2hELE1BQUkrRCxJQUFlbkwsRUFBV2tMLENBQW1CLElBQUlBLElBQXNCLFdBQVk7QUFBRSxXQUFPQTtBQUFBLEVBQXFCLEdBQ2pIcEYsSUFBTyxTQUFVWixHQUFZO0FBQUUsV0FBT0EsRUFBVyxNQUFNaUcsRUFBYSxDQUFDO0FBQUEsRUFBRztBQUM1RSxTQUFPLElBQUlwRyxHQUFXZSxDQUFJO0FBQzlCO0FBRUEsSUFBSXNGLEtBQWFsTCxHQUFpQixTQUFVRSxHQUFRO0FBQUUsU0FBTyxXQUEwQjtBQUNuRixJQUFBQSxFQUFPLElBQUksR0FDWCxLQUFLLE9BQU8sY0FDWixLQUFLLFVBQVU7QUFBQSxFQUNuQjtBQUFHLENBQUM7QUFFSixTQUFTaUwsR0FBY2pHLEdBQVEzQyxHQUFRO0FBQ25DLFNBQU8sSUFBSSxRQUFRLFNBQVUrQyxHQUFTQyxHQUFRO0FBQzFDLFFBQUk2RixJQUFZLElBQ1pDO0FBQ0osSUFBQW5HLEVBQU8sVUFBVTtBQUFBLE1BQ2IsTUFBTSxTQUFVbkYsR0FBTztBQUNuQixRQUFBc0wsSUFBU3RMLEdBQ1RxTCxJQUFZO0FBQUEsTUFDaEI7QUFBQSxNQUNBLE9BQU83RjtBQUFBLE1BQ1AsVUFBVSxXQUFZO0FBQ2xCLFFBQUk2RixJQUNBOUYsRUFBUStGLENBQU0sSUFHZDlGLEVBQU8sSUFBSTJGLEdBQVcsQ0FBQztBQUFBLE1BRS9CO0FBQUEsSUFDSixDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7QUFFQSxTQUFTSSxHQUFZdkwsR0FBTztBQUN4QixTQUFPQSxhQUFpQixRQUFRLENBQUMsTUFBTUEsQ0FBSztBQUNoRDtBQUVBLElBQUl3TCxLQUFldkwsR0FBaUIsU0FBVUUsR0FBUTtBQUNsRCxTQUFPLFNBQTBCc0wsR0FBTTtBQUNuQyxJQUFJQSxNQUFTLFdBQVVBLElBQU8sT0FDOUJ0TCxFQUFPLElBQUksR0FDWCxLQUFLLFVBQVUsd0JBQ2YsS0FBSyxPQUFPLGdCQUNaLEtBQUssT0FBT3NMO0FBQUEsRUFDaEI7QUFDSixDQUFDO0FBQ0QsU0FBUzlJLEdBQVFILEdBQVFrSixHQUFjO0FBQ25DLE1BQUkxSyxJQUFNdUssR0FBWS9JLENBQU0sSUFBSSxFQUFFLE9BQU9BLEVBQU8sSUFBSSxPQUFPQSxLQUFXLFdBQVcsRUFBRSxNQUFNQSxFQUFPLElBQUlBLEdBQVNtSixJQUFRM0ssRUFBRyxPQUFPNEssSUFBTzVLLEVBQUcsTUFBTUUsSUFBS0YsRUFBRyxNQUFNNkssSUFBUTNLLE1BQU8sU0FBUzRLLEtBQXNCNUssR0FBSXlGLElBQUszRixFQUFHLFdBQVdtRyxJQUFZUixNQUFPLFNBQVMyQixLQUFpQjNCLEdBQUlvRixJQUFLL0ssRUFBRyxNQUFNZ0wsSUFBT0QsTUFBTyxTQUFTLE9BQU9BO0FBQy9ULE1BQUlKLEtBQVMsUUFBUUMsS0FBUTtBQUN6QixVQUFNLElBQUksVUFBVSxzQkFBc0I7QUFFOUMsU0FBT2hHLEdBQVEsU0FBVVQsR0FBUUYsR0FBWTtBQUN6QyxRQUFJZ0gsR0FDQUMsR0FDQUMsSUFBWSxNQUNaQyxJQUFPLEdBQ1BDLElBQWEsU0FBVS9FLEdBQU87QUFDOUIsTUFBQTRFLElBQW9CdEIsR0FBZ0IzRixHQUFZa0MsR0FBVyxXQUFZO0FBQ25FLFlBQUk7QUFDQSxVQUFBOEUsRUFBMkIsWUFBWSxHQUN2Q3pDLEdBQVVxQyxFQUFNO0FBQUEsWUFDWixNQUFNRztBQUFBLFlBQ04sV0FBV0c7QUFBQSxZQUNYLE1BQU1DO0FBQUEsVUFDVixDQUFDLENBQUMsRUFBRSxVQUFVbkgsQ0FBVTtBQUFBLFFBQzVCLFNBQ096RSxHQUFLO0FBQ1IsVUFBQXlFLEVBQVcsTUFBTXpFLENBQUc7QUFBQSxRQUN4QjtBQUFBLE1BQ0osR0FBRzhHLENBQUs7QUFBQSxJQUNaO0FBQ0EsSUFBQTJFLElBQTZCOUcsRUFBTyxVQUFVWSxHQUF5QmQsR0FBWSxTQUFVakYsR0FBTztBQUNoRyxNQUFBa00sS0FBc0IsUUFBZ0RBLEVBQWtCLFlBQVksR0FDcEdFLEtBQ0FuSCxFQUFXLEtBQU1rSCxJQUFZbk0sQ0FBTSxHQUNuQzRMLElBQU8sS0FBS1MsRUFBV1QsQ0FBSTtBQUFBLElBQy9CLEdBQUcsUUFBVyxRQUFXLFdBQVk7QUFDakMsTUFBTU0sS0FBc0IsUUFBZ0RBLEVBQWtCLFVBQzFGQSxLQUFzQixRQUFnREEsRUFBa0IsWUFBWSxHQUV4R0MsSUFBWTtBQUFBLElBQ2hCLENBQUMsQ0FBQyxHQUNGLENBQUNDLEtBQVFDLEVBQVdWLEtBQVMsT0FBUSxPQUFPQSxLQUFVLFdBQVdBLElBQVEsQ0FBQ0EsSUFBUXhFLEVBQVUsSUFBSSxJQUFLeUUsQ0FBSTtBQUFBLEVBQzdHLENBQUM7QUFDTDtBQUNBLFNBQVNFLEdBQW9CTCxHQUFNO0FBQy9CLFFBQU0sSUFBSUQsR0FBYUMsQ0FBSTtBQUMvQjtBQUVBLE1BQU1hLEdBQW9CO0FBQUEsRUFDeEIsY0FBYztBQUNaLFNBQUssTUFBTSxDQUFDdE0sTUFBVTtBQUNwQixVQUFJLEtBQUssU0FBUyxXQUFXO0FBQzNCLGNBQU0sSUFBSSxNQUFNLHdDQUF3QztBQUUxRCxXQUFLLFdBQVcsRUFBRSxRQUFRLFdBQVcsV0FBVyxJQUFNLGFBQWFBLEVBQU0sR0FDekUsS0FBSyxTQUFTLEtBQUtBLENBQUssR0FDeEIsS0FBSyxTQUFTLFNBQVM7QUFBQSxJQUN6QixHQUNBLEtBQUssUUFBUSxDQUFDMEQsR0FBTzZJLE1BQVc7QUFDOUIsVUFBSSxLQUFLLFNBQVMsV0FBVztBQUMzQixjQUFNLElBQUksTUFBTSx3Q0FBd0M7QUFFMUQsV0FBSyxXQUFXLEVBQUUsUUFBUSxTQUFTLFdBQVcsSUFBTyxPQUFBN0ksR0FBTyxRQUFBNkksRUFBTyxHQUNuRSxLQUFLLFNBQVMsTUFBTTdJLENBQUs7QUFBQSxJQUMzQixHQUNBLEtBQUssdUJBQXVCLENBQUM4SSxNQUN2QixLQUFLLFNBQVMsV0FBVyxZQUFrQixLQUFLLFNBQVMsY0FDdERBLEdBRVQsS0FBSyxZQUFZLENBQUN6SSxNQUFPO0FBQ3ZCLFVBQUksS0FBSyxTQUFTLFdBQVcsV0FBVztBQUN0QyxRQUFBQSxFQUFHLEtBQUssUUFBUTtBQUNoQjtBQUFBLE1BQ0Y7QUFDQSxNQUFJLEtBQUssU0FBUyxXQUFXLFdBQzNCQSxFQUFHLEtBQUssUUFBUTtBQUVsQixZQUFNMEksSUFBZSxLQUFLLFNBQVMsVUFBVTtBQUFBLFFBQzNDLE1BQU0sTUFBTTtBQUNWLGNBQUksS0FBSyxTQUFTLFdBQVc7QUFDM0Isa0JBQU0sSUFBSSxNQUFNLDhFQUE4RTtBQUVoRyxVQUFBMUksRUFBRyxLQUFLLFFBQVEsR0FDaEIwSSxFQUFhLFlBQVk7QUFBQSxRQUMzQjtBQUFBLFFBQ0EsT0FBTyxNQUFNO0FBQ1gsY0FBSSxLQUFLLFNBQVMsV0FBVztBQUMzQixrQkFBTSxJQUFJLE1BQU0sK0VBQStFO0FBRWpHLFVBQUExSSxFQUFHLEtBQUssUUFBUTtBQUFBLFFBQ2xCO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxHQUNBLEtBQUssY0FBYyxDQUFDMkksTUFBa0I7QUFDcEMsVUFBSSxLQUFLLFNBQVMsV0FBVyxVQUFXLFFBQU8sUUFBUSxRQUFRLEtBQUssU0FBUyxXQUFXO0FBQ3hGLFVBQUksS0FBSyxTQUFTLFdBQVcsUUFBUyxRQUFPLFFBQVEsT0FBTyxLQUFLLFNBQVMsS0FBSztBQUMvRSxNQUFJLEtBQUssU0FBUyxXQUFXLGFBQVdDLEdBQVksS0FBSyxRQUFRO0FBQ2pFLFlBQU1DLElBQWdCO0FBQUEsUUFDcEIsT0FBT0YsRUFBYyxhQUFhO0FBQUEsUUFDbEMsTUFBTSxNQUFNMUIsR0FBVyxNQUFNLElBQUksTUFBTTBCLEVBQWMsYUFBYSxDQUFDO0FBQUEsTUFDckU7QUFDQSxhQUFPdEIsR0FBYyxLQUFLLFNBQVMsS0FBS3pJLEdBQVFpSyxDQUFhLENBQUMsQ0FBQztBQUFBLElBQ2pFLEdBQ0EsS0FBSyxXQUFXLEVBQUUsUUFBUSxXQUFXLFdBQVcsR0FBTSxHQUN0RCxLQUFLLFdBQVcsSUFBSXBHLEdBQVE7QUFBQSxFQUM5QjtBQUFBLEVBQ0EsSUFBSSxVQUFVO0FBQ1osV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUNGO0FBRUFxRyxFQUFJLEtBQUssQ0FBQyxPQUFPLE9BQU8sTUFBTSxDQUFDO0FBQy9CLE1BQU1DLEtBQWlCO0FBQUEsRUFDckIsTUFBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsS0FBSztBQUNQLEdBQ01DLEtBQWUsQ0FBQ0MsTUFDYkYsR0FBZUUsQ0FBRztBQUczQixTQUFTTCxHQUFZM00sR0FBTztBQUMxQixRQUFNLElBQUksTUFBTSxtQkFBbUJBLENBQUssRUFBRTtBQUM1QztBQUNBLE1BQU1pTixLQUFnQixNQUFNO0FBQzFCLE1BQUksU0FBTyxTQUFXO0FBR3RCLFdBQU87QUFDVCxHQUVNQyxLQUFtQixJQUFJWixHQUFvQixHQUMzQ2EsS0FBb0Isb0JBQ3BCQyxLQUFxQixHQUNyQkMsS0FBYSxHQUNiQyxLQUFvQixLQUNwQixFQUFFLE9BQUFDLEdBQU0sSUFBSUMsR0FBcUIsWUFBWTtBQUNuRCxNQUFNQyxHQUFhO0FBQUEsRUFDakIsY0FBYztBQTM3TWhCLFFBQUF6TSxHQUFBRTtBQTQ3TUksU0FBSyxRQUFRLENBQUMsR0FDZCxLQUFLLGtCQUFrQixJQUN2QixLQUFLLGVBQWUsTUFDcEIsS0FBSyxxQkFBcUIsR0FDMUIsS0FBSyxrQkFBa0IsTUFBTTtBQUMzQixNQUFBcU0sR0FBTSx5Q0FBeUMsR0FDL0MsS0FBSyxzQkFBc0I7QUFBQSxJQUM3QixHQUNBLEtBQUssaUJBQWlCLE1BQU07QUFDMUIsTUFBQUEsR0FBTSwwQ0FBMEMsR0FDaEQsS0FBSyxhQUFhO0FBQUEsSUFDcEIsR0FDQSxLQUFLLHFCQUFxQixJQUMxQnZNLElBQUFpTSxHQUFjLE1BQWQsUUFBQWpNLEVBQWlCLGlCQUFpQixXQUFXLEtBQUssbUJBQ2xERSxJQUFBK0wsR0FBYyxNQUFkLFFBQUEvTCxFQUFpQixpQkFBaUIsVUFBVSxLQUFLO0FBQUEsRUFDbkQ7QUFBQSxFQUNBLFNBQVN3TSxHQUFXQyxHQUFZQyxHQUFtQjtBQUNqRCxVQUFNQyxJQUFRO0FBQUEsTUFDWixXQUFBSDtBQUFBLE1BQ0EsWUFBWUMsS0FBYyxDQUFDO0FBQUEsTUFDM0IsbUJBQW1CQyxLQUFxQixDQUFDO0FBQUEsTUFDekMsT0FBT0UsR0FBRztBQUFBLE1BQ1YsV0FBVyxZQUFZLElBQUk7QUFBQSxNQUMzQixXQUEyQixvQkFBSSxLQUFLLEdBQUcsWUFBWTtBQUFBLE1BQ25ELGNBQWM7QUFBQSxNQUNkLDJCQUEyQixLQUFLLHFCQUFxQixZQUFZLElBQUksSUFBSSxLQUFLLHFCQUFxQjtBQUFBLElBQ3JHO0FBQ0EsU0FBSyxxQkFBcUJELEVBQU0sV0FDaEMsS0FBSyxNQUFNLEtBQUtBLENBQUssR0FDckIsS0FBSyxtQkFBbUIsR0FDeEIsS0FBSyx3QkFBd0I7QUFBQSxFQUMvQjtBQUFBLEVBQ0EsdUJBQXVCO0FBNTlNekIsUUFBQTdNLEdBQUFFO0FBNjlNSSxRQUFJO0FBQ0YsWUFBTTZNLEtBQWM3TSxLQUFBRixJQUFBaU0sR0FBYyxNQUFkLGdCQUFBak0sRUFBaUIsaUJBQWpCLGdCQUFBRSxFQUErQixRQUFRaU07QUFDM0QsTUFBSVksTUFDRixLQUFLLFFBQVEsS0FBSyxNQUFNQSxDQUFXO0FBQUEsSUFFdkMsUUFBZ0I7QUFDZCxXQUFLLFFBQVEsQ0FBQyxHQUNkLEtBQUssbUJBQW1CO0FBQUEsSUFDMUI7QUFBQSxFQUNGO0FBQUEsRUFDQSxxQkFBcUI7QUF2K012QixRQUFBL007QUF3K01JLEtBQUFBLElBQUFpTSxHQUFjLE1BQWQsUUFBQWpNLEVBQWlCLGFBQWEsUUFBUW1NLElBQW1CLEtBQUssVUFBVSxLQUFLLEtBQUs7QUFBQSxFQUNwRjtBQUFBLEVBQ0EsMEJBQTBCO0FBQ3hCLFVBQU1hLElBQWFmLEdBQWM7QUFDakMsSUFBSWUsS0FBYyxVQUFVLFVBQVUsQ0FBQyxLQUFLLG1CQUFtQixLQUFLLE1BQU0sU0FBUyxLQUFLLENBQUMsS0FBSyxpQkFDNUYsS0FBSyxlQUFlQSxFQUFXLFdBQVcsTUFBTTtBQUM5QyxXQUFLLGVBQWUsTUFDcEIsS0FBSyxhQUFhO0FBQUEsSUFDcEIsR0FBR1YsRUFBaUI7QUFBQSxFQUV4QjtBQUFBLEVBQ0Esd0JBQXdCO0FBbi9NMUIsUUFBQXRNO0FBby9NSSxJQUFJLEtBQUssa0JBQ1BBLElBQUFpTSxHQUFjLE1BQWQsUUFBQWpNLEVBQWlCLGFBQWEsS0FBSyxlQUNuQyxLQUFLLGVBQWUsT0FFdEIsS0FBSyxrQkFBa0I7QUFBQSxFQUN6QjtBQUFBLEVBQ0EsZUFBZTtBQUNiLElBQUksQ0FBQyxVQUFVLFVBQVUsS0FBSyxtQkFBbUIsS0FBSyxNQUFNLFdBQVcsTUFHdkUsS0FBSyxrQkFBa0IsSUFDdkIsS0FBSyxVQUFVLEVBQUUsUUFBUSxNQUFNO0FBQzdCLFdBQUssa0JBQWtCLElBQ25CLEtBQUssTUFBTSxTQUFTLEtBQ3RCLEtBQUssd0JBQXdCO0FBQUEsSUFFakMsQ0FBQztBQUFBLEVBQ0g7QUFBQSxFQUNBLE1BQU0sWUFBWTtBQUNoQixRQUFJLEtBQUssTUFBTSxXQUFXLEVBQUc7QUFDN0IsVUFBTWlOLElBQVVmLEdBQWlCLHFCQUFxQixNQUFNO0FBQzVELFFBQUksQ0FBQ2UsR0FBUztBQUNaLE1BQUFWLEdBQU0saURBQWlEO0FBQ3ZEO0FBQUEsSUFDRjtBQUNBLFVBQU1XLElBQVEsS0FBSyxNQUFNLE1BQU0sR0FBR2IsRUFBVTtBQUM1QyxRQUFJO0FBQ0YsWUFBTWMsSUFBZTtBQUFBLFFBQ25CLFFBQVFELEVBQU0sSUFBSSxDQUFDTCxPQUNWO0FBQUEsVUFDTCxZQUFZQSxFQUFNO0FBQUEsVUFDbEIsY0FBY0ksRUFBUTtBQUFBLFVBQ3RCLG9CQUFvQjtBQUFBLFlBQ2xCLEdBQUdBO0FBQUEsWUFDSCxHQUFHSixFQUFNO0FBQUEsVUFDWDtBQUFBLFVBQ0EsWUFBWTtBQUFBLFlBQ1YsT0FBT0EsRUFBTTtBQUFBLFlBQ2IsVUFBVUEsRUFBTTtBQUFBLFlBQ2hCLFdBQVdBLEVBQU07QUFBQSxZQUNqQiwrQkFBK0JBLEVBQU07QUFBQSxZQUNyQyx1QkFBdUJJLEVBQVE7QUFBQSxZQUMvQixHQUFHSixFQUFNO0FBQUEsVUFDWDtBQUFBLFFBQ0YsRUFDRDtBQUFBLE1BQ0gsR0FDTU8sSUFBWXJCLEdBQWFrQixFQUFRLFdBQVcsR0FDNUNJLElBQWdCLElBQUksSUFBSSwyQkFBMkJELENBQVM7QUFRbEUsT0FQaUIsTUFBTSxNQUFNQyxFQUFjLFNBQVMsR0FBRztBQUFBLFFBQ3JELFFBQVE7QUFBQSxRQUNSLFNBQVM7QUFBQSxVQUNQLGdCQUFnQjtBQUFBLFFBQ2xCO0FBQUEsUUFDQSxNQUFNLEtBQUssVUFBVUYsQ0FBWTtBQUFBLE1BQ25DLENBQUMsR0FDWSxNQUNYLEtBQUssUUFBUSxLQUFLLE1BQU0sTUFBTUQsRUFBTSxNQUFNLEdBQzFDLEtBQUssbUJBQW1CLEtBRXhCLEtBQUssa0JBQWtCQSxDQUFLO0FBQUEsSUFFaEMsU0FBU3hLLEdBQU87QUFDZCxNQUFBNkosR0FBTSxnQ0FBZ0M3SixDQUFLLEdBQzNDLEtBQUssa0JBQWtCd0ssQ0FBSztBQUFBLElBQzlCO0FBQUEsRUFDRjtBQUFBLEVBQ0Esa0JBQWtCQSxHQUFPO0FBQ3ZCLElBQUFBLEVBQU0sUUFBUSxDQUFDTCxNQUFVO0FBQ3ZCLE1BQUFBLEVBQU07QUFBQSxJQUNSLENBQUM7QUFDRCxVQUFNUyxJQUFlSixFQUFNLE9BQU8sQ0FBQ0wsTUFBVUEsRUFBTSxlQUFlVCxFQUFrQjtBQUNwRixTQUFLLFFBQVEsS0FBSyxNQUFNLE1BQU1jLEVBQU0sTUFBTSxHQUMxQyxLQUFLLFFBQVEsQ0FBQyxHQUFHSSxHQUFjLEdBQUcsS0FBSyxLQUFLLEdBQzVDLEtBQUssbUJBQW1CO0FBQUEsRUFDMUI7QUFBQSxFQUNBLFVBQVU7QUFoa05aLFFBQUF0TixHQUFBRTtBQWlrTkksS0FBQUYsSUFBQWlNLEdBQWMsTUFBZCxRQUFBak0sRUFBaUIsb0JBQW9CLFdBQVcsS0FBSyxtQkFDckRFLElBQUErTCxHQUFjLE1BQWQsUUFBQS9MLEVBQWlCLG9CQUFvQixVQUFVLEtBQUssaUJBQ3BELEtBQUssc0JBQXNCO0FBQUEsRUFDN0I7QUFDRjtBQUNBLE1BQU1xTixLQUFlLElBQUlkLEdBQWE7QUF0a050QyxJQUFBek07QUFBQSxDQXVrTkFBLEtBQUFpTSxHQUFjLE1BQWQsUUFBQWpNLEdBQWlCLGlCQUFpQixnQkFBZ0IsTUFBTTtBQUN0RCxFQUFBdU4sR0FBYSxhQUFhO0FBQzVCO0FBRUEsTUFBTUMsS0FBbUIzQixFQUFJLEtBQUssQ0FBQyxVQUFVLGFBQWEsZUFBZSxDQUFDO0FBRTdEMkIsR0FBaUIsS0FBSztBQU9uQzNCLEVBQUksT0FBTztBQUFBLEVBQ1QsTUFBTUEsRUFBSSxPQUFPO0FBQUEsSUFDZixnQkFBZ0JBLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDO0FBQUEsSUFDbEQsUUFBUUEsRUFBSSxNQUFNQSxFQUFJLElBQUksQ0FBQztBQUFBLElBQzNCLGFBQWFBLEVBQUksT0FBTztBQUFBLElBQ3hCLGFBQWFBLEVBQUksT0FBT0EsRUFBSSxPQUFPLEdBQUdBLEVBQUksSUFBSSxDQUFDO0FBQUEsRUFDakQsQ0FBQztBQUFBLEVBQ0QsUUFBUUEsRUFBSSxRQUFRLGdDQUFnQztBQUN0RCxDQUFDO0FBRURBLEVBQUksT0FBTztBQUFBLEVBQ1Qsd0JBQXdCQSxFQUFJLE9BQU87QUFBQSxFQUNuQyxrQ0FBa0NBLEVBQUksT0FBTztBQUFBLEVBQzdDLDJCQUEyQkEsRUFBSSxPQUFPO0FBQ3hDLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxVQUFVQSxFQUFJLFFBQVEsV0FBVztBQUFBLEVBQ2pDLGdCQUFnQkEsRUFBSSxRQUFRLFdBQVc7QUFBQSxFQUN2QyxVQUFVQSxFQUFJLE9BQU87QUFBQSxJQUNuQixzQkFBc0JBLEVBQUksT0FBTztBQUFBLElBQ2pDLHdCQUF3QkEsRUFBSSxPQUFPO0FBQUEsRUFDckMsQ0FBQztBQUNILENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxVQUFVQSxFQUFJLFFBQVEsWUFBWTtBQUFBLEVBQ2xDLGdCQUFnQkEsRUFBSSxRQUFRLFdBQVc7QUFBQSxFQUN2QyxVQUFVQSxFQUFJLE9BQU87QUFBQSxJQUNuQixzQkFBc0JBLEVBQUksT0FBTztBQUFBLElBQ2pDLHdCQUF3QkEsRUFBSSxPQUFPO0FBQUEsSUFDbkMsd0JBQXdCQSxFQUFJLE9BQU8sRUFBRSxRQUFRO0FBQUEsRUFDL0MsQ0FBQztBQUNILENBQUM7QUFDRCxNQUFNNEIsS0FBYztBQUFBLEVBQ2xCLGFBQWE7QUFBQSxFQUNiLFdBQVc7QUFBQSxFQUNYLFdBQVcsWUFBWTtBQUFBLEVBQ3ZCO0FBQ0Y7QUFFQTVCLEVBQUksT0FBTztBQUFBLEVBQ1QsVUFBVUEsRUFBSSxRQUFRLFdBQVc7QUFBQSxFQUNqQyxnQkFBZ0JBLEVBQUksUUFBUSxlQUFlO0FBQUEsRUFDM0MsVUFBVUEsRUFBSSxPQUFPO0FBQUEsSUFDbkIsc0JBQXNCQSxFQUFJLE9BQU87QUFBQSxJQUNqQyx3QkFBd0JBLEVBQUksT0FBTztBQUFBLEVBQ3JDLENBQUM7QUFDSCxDQUFDO0FBQ0RBLEVBQUksT0FBTztBQUFBLEVBQ1QsVUFBVUEsRUFBSSxRQUFRLFlBQVk7QUFBQSxFQUNsQyxnQkFBZ0JBLEVBQUksUUFBUSxlQUFlO0FBQUEsRUFDM0MsVUFBVUEsRUFBSSxPQUFPO0FBQUEsSUFDbkIsc0JBQXNCQSxFQUFJLE9BQU87QUFBQSxJQUNqQyx3QkFBd0JBLEVBQUksT0FBTztBQUFBLElBQ25DLHdCQUF3QkEsRUFBSSxPQUFPLEVBQUUsUUFBUTtBQUFBLEVBQy9DLENBQUM7QUFDSCxDQUFDO0FBRURBLEVBQUksT0FBTztBQUFBLEVBQ1QscUJBQXFCQSxFQUFJLE9BQU87QUFBQSxFQUNoQyxvQkFBb0JBLEVBQUksT0FBTztBQUFBLEVBQy9CLG9CQUFvQkEsRUFBSSxPQUFPO0FBQ2pDLENBQUM7QUFFRCxNQUFNNkIsS0FBbUI3QixFQUFJLEtBQUssQ0FBQyxRQUFRLFFBQVEsV0FBVyxXQUFXLGFBQWEsU0FBUyxDQUFDO0FBQ2hHQSxFQUFJLEtBQUs7QUFBQSxFQUNQO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUM7QUFDREEsRUFBSSxPQUFPO0FBQUEsRUFDVCxpQkFBaUJBLEVBQUksT0FBTztBQUFBLEVBQzVCLHVCQUF1QkEsRUFBSSxPQUFPO0FBQUEsRUFDbEMsd0JBQXdCNkI7QUFBQSxFQUN4QixtQkFBbUI3QixFQUFJLE9BQU87QUFDaEMsQ0FBQztBQUVEQSxFQUFJO0FBQUEsRUFDRkEsRUFBSSxPQUFPO0FBQUEsSUFDVCxvQkFBb0JBLEVBQUksT0FBTztBQUFBLEVBQ2pDLENBQUM7QUFDSCxFQUFFLE9BQU8sQ0FBQztBQUVWQSxFQUFJLE9BQU87QUFBQSxFQUNULGdCQUFnQkEsRUFBSSxRQUFRLE1BQU07QUFBQSxFQUNsQyxVQUFVQSxFQUFJLFFBQVEsUUFBUTtBQUFBLEVBQzlCLFVBQVVBLEVBQUksT0FBTztBQUFBLElBQ25CLGFBQWFBLEVBQUksT0FBTztBQUFBLElBQ3hCLFdBQVdBLEVBQUksT0FBTztBQUFBLElBQ3RCLFdBQVdBLEVBQUksT0FBTztBQUFBLElBQ3RCLHNCQUFzQkEsRUFBSSxNQUFNQSxFQUFJLE9BQU8sQ0FBQztBQUFBLElBQzVDLGFBQWFBLEVBQUksT0FBTztBQUFBLEVBQzFCLENBQUM7QUFDSCxDQUFDO0FBQ0QsSUFBSThCLEtBQThCLGtCQUFDQyxPQUNqQ0EsRUFBWSxPQUFVLFFBQ3RCQSxFQUFZLHFCQUF3QixxQkFDcENBLEVBQVksMkJBQThCLDJCQUMxQ0EsRUFBWSx5QkFBNEIseUJBQ3hDQSxFQUFZLGtCQUFxQixrQkFDakNBLEVBQVksb0JBQXVCLG9CQUNuQ0EsRUFBWSxxQkFBd0IscUJBQ3BDQSxFQUFZLG1CQUFzQixtQkFDbENBLEVBQVkscUJBQXdCLHFCQUNwQ0EsRUFBWSxXQUFjLFlBQ25CQSxJQUNORCxNQUFjLENBQUMsQ0FBQztBQUVuQixNQUFNRSxLQUFlO0FBQUEsRUFDbkIsYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUNWO0FBQ0FoQyxFQUFJLE9BQU87QUFBQSxFQUNSLGVBQWtCaUM7QUFBQSxFQUNsQixjQUFpQkE7QUFBQSxFQUNqQixXQUFjQTtBQUFBLEVBQ2YsQ0FBQ0MsR0FBVSxjQUFjLEdBQUdDO0FBQzlCLENBQUM7QUFDRG5DLEVBQUksT0FBTztBQUFBLEVBQ1IsZUFBa0JtQztBQUFBLEVBQ2xCLGNBQWlCQTtBQUFBLEVBQ2pCLFdBQWNBO0FBQUEsRUFDZixDQUFDRCxHQUFVLGNBQWMsR0FBR0M7QUFDOUIsQ0FBQztBQUVEbkMsRUFBSSxPQUFPO0FBQUEsRUFDVCxnQkFBZ0JBLEVBQUksUUFBUSxRQUFRO0FBQUEsRUFDcEMsVUFBVUEsRUFBSSxRQUFRLFFBQVE7QUFDaEMsQ0FBQztBQUNEQSxFQUFJO0FBQUEsRUFDRkEsRUFBSSxPQUFPO0FBQUEsSUFDVCxtQkFBbUJBLEVBQUksT0FBTztBQUFBLElBQzlCLGNBQWNBLEVBQUksT0FBTztBQUFBLEVBQzNCLENBQUM7QUFDSCxFQUFFLE9BQU8sQ0FBQztBQUVWQSxFQUFJLE9BQU87QUFBQSxFQUNULFVBQVVBLEVBQUksUUFBUSxhQUFhO0FBQUEsRUFDbkMsZ0JBQWdCQSxFQUFJLFFBQVEsUUFBUTtBQUFBLEVBQ3BDLFVBQVVBLEVBQUksT0FBTztBQUFBLElBQ25CLFdBQVdBLEVBQUksT0FBTztBQUFBLEVBQ3hCLENBQUM7QUFDSCxDQUFDO0FBQ0RBLEVBQUk7QUFBQSxFQUNGQSxFQUFJLE9BQU87QUFBQSxJQUNULG9CQUFvQkEsRUFBSSxPQUFPO0FBQUEsRUFDakMsQ0FBQztBQUNILEVBQUUsT0FBTyxDQUFDO0FBRVZBLEVBQUksT0FBTztBQUFBLEVBQ1QsVUFBVUEsRUFBSSxNQUFNLENBQUNBLEVBQUksUUFBUSxXQUFXLEdBQUdBLEVBQUksUUFBUSxZQUFZLENBQUMsQ0FBQztBQUFBLEVBQ3pFLGdCQUFnQkEsRUFBSSxRQUFRLFFBQVE7QUFBQSxFQUNwQyxVQUFVQSxFQUFJLE9BQU87QUFBQSxJQUNuQixXQUFXQSxFQUFJLE9BQU87QUFBQSxFQUN4QixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU1vQyxLQUFhO0FBQUEsRUFDakIsV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsV0FBVyxZQUFZO0FBQ3JCLFlBQVE7QUFBQSxNQUNOO0FBQUE7QUFBQTtBQUFBLElBR0Y7QUFBQSxFQUNGO0FBQ0YsR0FFTSxFQUFFLE9BQUFDLEdBQU0sSUFBSTFCLEdBQXFCLGdCQUFnQixHQUNqRDJCLElBQWF0QyxFQUFJLFNBQVMsRUFBRSxTQUFTLEdBQ3JDdUMsS0FBbUJ2QyxFQUFJLE9BQU87QUFBQSxFQUNsQyxTQUFTc0M7QUFBQSxFQUNULFFBQVFBO0FBQUEsRUFDUixVQUFVQTtBQUFBLEVBQ1YsUUFBUUE7QUFBQSxFQUNSLGFBQWFBO0FBQUEsRUFDYixtQkFBbUJBO0FBQUEsRUFDbkIsbUJBQW1CQTtBQUFBLEVBQ25CLG1CQUFtQkE7QUFBQSxFQUNuQiw2QkFBNkJBO0FBQUEsRUFDN0IsaUJBQWlCQTtBQUFBLEVBQ2pCLHNCQUFzQkE7QUFDeEIsQ0FBQyxHQUNLRSxLQUFOLE1BQU1BLEdBQWM7QUFBQSxFQUNsQixjQUFjO0FBSVosU0FBSyxlQUFlLENBQUNDLE1BQWlCO0FBQ3BDLFdBQUssYUFBYUQsR0FBYyxxQkFBcUIsR0FDckQsT0FBTyxRQUFRQyxDQUFZLEVBQUUsUUFBUSxDQUFDLENBQUNDLEdBQUtDLENBQVcsTUFBTTtBQUMzRCxjQUFNQyxJQUFlQyxHQUFpQkgsR0FBS0MsS0FBZUgsR0FBYyxNQUFNSCxFQUFLO0FBQ25GLGFBQUssV0FBV0ssQ0FBRyxJQUFJRTtBQUFBLE1BQ3pCLENBQUM7QUFBQSxJQUNILEdBQ0EsS0FBSyxhQUFhSixHQUFjLHFCQUFxQjtBQUFBLEVBQ3ZEO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUF3QkEsSUFBSSxNQUFNO0FBQ1IsV0FBTyxFQUFFLEdBQUcsS0FBSyxXQUFXO0FBQUEsRUFDOUI7QUFDRjtBQXpCSUEsR0FBSyxPQUFPLE1BQU07QUFDbEIsR0FHQUEsR0FBSyx1QkFBdUIsTUFBTTtBQUNoQyxRQUFNNUssSUFBSSxDQUFDO0FBQ1gsZ0JBQU8sS0FBSzJLLEdBQWlCLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDRyxNQUFRO0FBQzFELElBQUE5SyxFQUFFOEssQ0FBRyxJQUFJRixHQUFjO0FBQUEsRUFDekIsQ0FBQyxHQUNNNUs7QUFDVCxHQUdBNEssR0FBSyxhQUFhLENBQUMxRyxNQUFRO0FBQ3pCLFFBQU12SSxJQUFXLElBQUlpUCxHQUFjO0FBQ25DLFNBQUFqUCxFQUFTLGFBQWFnUCxHQUFpQixNQUFNekcsQ0FBRyxDQUFDLEdBQzFDdkk7QUFDVDtBQWhDSixJQUFNdVAsS0FBTk47QUEwQ0EsTUFBTU8sS0FBMkIsQ0FBQ0MsTUFBVTtBQXAxTjVDLE1BQUE3TztBQXExTkUsUUFBTThPLElBQWdCSCxHQUFjLFdBQVc7QUFBQSxJQUM3QyxTQUFTRSxFQUFNO0FBQUEsSUFDZixRQUFRQSxFQUFNO0FBQUEsSUFDZCxVQUFVQSxFQUFNO0FBQUEsSUFDaEIsUUFBUUEsRUFBTTtBQUFBLElBQ2QsYUFBYUEsRUFBTTtBQUFBLElBQ25CLG1CQUFtQkEsRUFBTTtBQUFBLElBQ3pCLG1CQUFtQkEsRUFBTTtBQUFBLElBQ3pCLG1CQUFtQkEsRUFBTTtBQUFBLElBQ3pCLDZCQUE2QkEsRUFBTTtBQUFBLElBQ25DLGlCQUFpQkEsRUFBTTtBQUFBLElBQ3ZCLHNCQUFzQkEsRUFBTTtBQUFBLEVBQzlCLENBQUM7QUFDRCxTQUFJRSxHQUFHLFlBQVksT0FDakIvTyxJQUFBK08sR0FBRyxZQUFZLE1BQWYsUUFBQS9PLEVBQWtCLGdCQUFnQjhPLEVBQWMsT0FFM0NBLEVBQWM7QUFDdkIsR0FFTUUsS0FBcUIsQ0FBQ0MsTUFBaUM7QUFDM0QsUUFBTSxDQUFDQyxHQUFpQkMsQ0FBa0IsSUFBSUMsR0FBUztBQUFBLElBQ3JELFdBQVduQjtBQUFBLElBQ1gsWUFBWUE7QUFBQSxFQUNkLENBQUMsR0FDS29CLElBQWdDQztBQUFBLElBQ3BDLENBQUNDLE1BQXFCO0FBQ3BCLE1BQUFKLEVBQW1CSSxDQUFnQixHQUNuQ04sS0FBQSxRQUFBQSxFQUErQk07QUFBQSxJQUNqQztBQUFBLElBQ0EsQ0FBQ04sQ0FBNEI7QUFBQSxFQUMvQjtBQUNBLFNBQU8sRUFBRSxpQkFBQUMsR0FBaUIsK0JBQUFHLEVBQThCO0FBQzFELEdBRU1HLEtBQWMsZUFDZEMsS0FBZSxDQUFDWixNQUFVO0FBQzlCLFFBQU0sQ0FBQ2EsR0FBUUMsQ0FBUyxJQUFJUCxHQUFTLEdBQy9CLENBQUNRLEdBQXNCQyxDQUF1QixJQUFJVCxHQUFTLElBQUksR0FDL0QsRUFBRSxpQkFBQUYsR0FBaUIsK0JBQUFHLEVBQThCLElBQUlMLEdBQW1CSCxFQUFNLG9CQUFvQixHQUNsRyxDQUFDaUIsR0FBUUMsQ0FBUyxJQUFJWCxHQUFTLEVBQUssR0FDcEMsQ0FBQ1ksR0FBZ0JDLENBQWlCLElBQUliLEdBQVMsSUFBSSxHQUNuRCxDQUFDYyxHQUFZQyxDQUFhLElBQUlmLEdBQVN2QixFQUFZLEdBQ25ELENBQUN1QyxHQUFXQyxDQUFZLElBQUlqQixHQUFTO0FBQUEsSUFDekMsV0FBVzNCO0FBQUEsSUFDWCxVQUFVQTtBQUFBLEVBQ1osQ0FBQyxHQUNLcUIsSUFBZ0JGLEdBQXlCO0FBQUEsSUFDN0MsR0FBR0M7QUFBQSxJQUNILHNCQUFzQlE7QUFBQSxJQUN0QixRQUFRLENBQUNpQixHQUFrQkMsTUFBYTtBQXQ0TjVDLFVBQUF2UTtBQXU0Tk0sTUFBQStQLEVBQVUsRUFBSSxJQUNkL1AsSUFBQTZPLEVBQU0sV0FBTixRQUFBN08sRUFBQSxLQUFBNk8sR0FBZXlCLEdBQWtCQztBQUFBLElBQ25DO0FBQUEsRUFDRixDQUFDO0FBdURELE1BdERBQyxHQUFVLE1BQU07QUFDZCxRQUFJZCxFQUFRO0FBQ1osVUFBTWUsSUFBTzFCLEdBQUcsWUFBWSxLQUFLLElBQUlBLEdBQUc7QUFBQSxNQUN0QyxxQkFBcUJGLEVBQU07QUFBQSxNQUMzQixZQUFZLElBQUlXLEVBQVc7QUFBQSxNQUMzQixTQUFTWCxFQUFNO0FBQUEsTUFDZixrQkFBa0JBLEVBQU07QUFBQSxNQUN4QixHQUFHQztBQUFBLElBQ0wsQ0FBQztBQUNELElBQUFhLEVBQVVjLENBQUk7QUFDZCxVQUFNelIsSUFBUTBSLEdBQXdCRCxDQUFJO0FBQzFDLFdBQUFaLEVBQXdCN1EsQ0FBSyxHQUM3QnlSLEVBQUssVUFBVSxXQUFXLFVBQVUsVUFBVSxDQUFDRSxNQUFXO0FBQ3hELE1BQUlBLEVBQU8sYUFBYUEsRUFBTyxZQUFZLGVBQ3pDVixFQUFrQlUsRUFBTyxZQUFZLFVBQVU7QUFBQSxJQUVuRCxDQUFDLEdBQ0RGLEVBQUssVUFBVSxLQUFLLFVBQVUsVUFBVSxDQUFDRSxNQUFXO0FBQ2xELE1BQUlBLEVBQU8sYUFBYUEsRUFBTyxZQUFZLGNBQ3pDUixFQUFjO0FBQUEsUUFDWixhQUFhO0FBQUEsUUFDYixXQUFXO0FBQUEsUUFDWCxRQUFRUSxFQUFPLFlBQVk7QUFBQSxRQUMzQixRQUFRQSxFQUFPLFlBQVk7QUFBQSxNQUM3QixDQUFDLElBQ1FBLEVBQU8sYUFBYSxDQUFDQSxFQUFPLFlBQVksZUFDakRSLEVBQWM7QUFBQSxRQUNaLGFBQWE7QUFBQSxRQUNiLFdBQVc7QUFBQSxRQUNYLFFBQVE7QUFBQSxRQUNSLFFBQVE7QUFBQSxNQUNWLENBQUM7QUFBQSxJQUVMLENBQUMsR0FDRE0sRUFBSyxVQUFVLG1CQUFtQixVQUFVLFVBQVUsQ0FBQ0UsTUFBVztBQUNoRSxNQUFJQSxFQUFPLGFBQWFBLEVBQU8sZUFDN0JOLEVBQWEsQ0FBQ3hNLE9BQVU7QUFBQSxRQUN0QixVQUFVQSxFQUFLO0FBQUEsUUFDZixXQUFXOE0sRUFBTztBQUFBLE1BQ3BCLEVBQUU7QUFBQSxJQUVOLENBQUMsR0FDREYsRUFBSyxVQUFVLGtCQUFrQixVQUFVLFVBQVUsQ0FBQ0UsTUFBVztBQUMvRCxNQUFJQSxFQUFPLGFBQWFBLEVBQU8sZUFDN0JOLEVBQWEsQ0FBQ3hNLE9BQVU7QUFBQSxRQUN0QixXQUFXQSxFQUFLO0FBQUEsUUFDaEIsVUFBVThNLEVBQU87QUFBQSxNQUNuQixFQUFFO0FBQUEsSUFFTixDQUFDLEdBQ00sTUFBTTtBQUNYLE1BQUFGLEVBQUssUUFBUTtBQUFBLElBQ2Y7QUFBQSxFQUNGLEdBQUcsQ0FBQyxDQUFDLEdBQ0QsQ0FBQ2Y7QUFDSCxXQUF1QixnQkFBQWtCLEVBQUlDLElBQVUsQ0FBQyxDQUFDO0FBRXpDLFFBQU1DLElBQWdCO0FBQUEsSUFDcEIsUUFBUXBCLEVBQU87QUFBQSxJQUNmLFlBQVlBLEVBQU87QUFBQSxJQUNuQixVQUFVUixFQUFnQjtBQUFBLElBQzFCLFdBQVdBLEVBQWdCO0FBQUEsSUFDM0IsUUFBQVk7QUFBQTtBQUFBLElBRUEsU0FBUztBQUFBLE1BQ1AsUUFBUTtBQUFBLE1BQ1IsV0FBVztBQUFBLE1BQ1gsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLFlBQVlFO0FBQUEsSUFDWixXQUFBSTtBQUFBLElBQ0EsTUFBTUY7QUFBQSxFQUNSO0FBQ0EsU0FBdUIsZ0JBQUFVLEVBQUlDLElBQVUsRUFBRSxVQUFVakIsSUFBdUMsZ0JBQUFnQixFQUFJRyxHQUFnQixVQUFVLEVBQUUsT0FBT25CLEdBQXNCLFVBQTBCLGdCQUFBZ0IsRUFBSSxPQUFPLEVBQUUsSUFBSXBCLElBQWEsV0FBV1gsRUFBTSxXQUFXLFVBQVVBLEVBQU0sU0FBU2lDLENBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFvQixnQkFBQUYsRUFBSUMsSUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlULEdBQ01ILEtBQTBCLENBQUNoQixPQUN4QjtBQUFBLEVBQ0wsUUFBUUEsRUFBTztBQUFBLEVBQ2YsWUFBWUEsRUFBTyxlQUFlO0FBQUEsRUFDbEMsVUFBVUEsRUFBTztBQUFBLEVBQ2pCLHFCQUFxQkEsRUFBTztBQUFBLEVBQzVCLGdCQUFnQkEsRUFBTztBQUFBLEVBQ3ZCLFNBQVNBLEVBQU87QUFDbEIsSUFHSXNCLEtBQWUsQ0FBQ25DLE1BQVU7QUFDOUIsUUFBTSxFQUFFLGFBQUFvQyxHQUFhLFFBQUFDLEVBQU8sSUFBSXJDLEdBQzFCLEVBQUUsUUFBQXNDLEdBQVEsVUFBQUMsR0FBVSxZQUFBQyxHQUFZLHFCQUFBQyxHQUFxQixnQkFBQUMsR0FBZ0IsU0FBQUMsRUFBUSxJQUFJQyxHQUFtQixHQUNwR0MsSUFBVVQsRUFBWSxZQUFZLEdBQ2xDLENBQUNVLEdBQVdDLENBQVksSUFBSXhDLEdBQVMsRUFBSyxHQUMxQ3lDLElBQVlDLEdBQU8sSUFBSSxHQUN2QkMsSUFBZUMsR0FBUSxNQUN0QmQsSUFDRWUsR0FBMkJmLENBQU0sSUFEcEIsSUFFbkIsQ0FBQ0EsQ0FBTSxDQUFDLEdBQ0xnQixJQUFhRixHQUFRLE9BQ2xCO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixPQUFPO0FBQUEsSUFDUCxRQUFRWDtBQUFBLEVBQ1YsSUFDQyxDQUFDQSxDQUFVLENBQUMsR0FDVGMsSUFBY0gsR0FBUSxNQUFNO0FBQ2hDLFFBQUksQ0FBQ1YsS0FBdUIsQ0FBQ0YsRUFBVSxRQUFPO0FBQzlDLFVBQU1nQixJQUFTLElBQUksZ0JBQWdCO0FBQ25DLFdBQUFBLEVBQU8sT0FBTyxXQUFXaEIsQ0FBUSxHQUNqQ2dCLEVBQU8sT0FBTyxVQUFVTCxDQUFZLEdBQ3BDSyxFQUFPLE9BQU8sVUFBVWpCLENBQU0sR0FDOUJpQixFQUFPLE9BQU8sZUFBZWQsQ0FBbUIsR0FDekNjLEVBQU8sU0FBUztBQUFBLEVBQ3pCLEdBQUcsQ0FBQ0wsR0FBY1osR0FBUUMsR0FBVUUsQ0FBbUIsQ0FBQztBQU14RCxNQUxBZCxHQUFVLE1BQU1vQixFQUFhLEVBQUksR0FBRyxDQUFDLENBQUMsR0FDdENwQixHQUFVLE1BQU07QUFDZCxJQUFJLENBQUNxQixFQUFVLFdBQVcsQ0FBQ0YsS0FDM0JKLEVBQWVOLEdBQWFZLEVBQVUsT0FBTztBQUFBLEVBQy9DLEdBQUcsQ0FBQ0YsQ0FBUyxDQUFDLEdBQ1YsQ0FBQ0w7QUFDSCxtQkFBUSxNQUFNLGtEQUFrRCxHQUN6QyxnQkFBQVYsRUFBSSxPQUFPLENBQUMsQ0FBQztBQUV0QyxRQUFNeUIsSUFBTSxJQUFJLElBQUksV0FBV1gsQ0FBTyxhQUFhRixDQUFPO0FBQzFELFNBQUFhLEVBQUksU0FBU0YsR0FDVSxnQkFBQXZCO0FBQUEsSUFDckI7QUFBQSxJQUNBO0FBQUEsTUFDRSxJQUFJLE9BQU9jLENBQU87QUFBQSxNQUNsQixNQUFNLEdBQUdBLENBQU87QUFBQSxNQUNoQixXQUFXO0FBQUEsTUFDWCxLQUFLVyxFQUFJLFNBQVM7QUFBQSxNQUNsQixPQUFPSDtBQUFBLE1BQ1AsS0FBS0w7QUFBQSxJQUNQO0FBQUEsRUFDRjtBQUNGLEdBRU1TLEtBQWlCLENBQUMsRUFBRSxRQUFBcEIsRUFBTyxNQUNSLGdCQUFBTixFQUFJSSxJQUFjLEVBQUUsUUFBQUUsR0FBUSxhQUFhcUIsR0FBZ0IsU0FBUyxDQUFDLEdBR3RGQyxLQUFjLENBQUMsRUFBRSxRQUFBdEIsRUFBTyxNQUNMLGdCQUFBTixFQUFJSSxJQUFjLEVBQUUsUUFBQUUsR0FBUSxhQUFhcUIsR0FBZ0IsS0FBSyxDQUFDLEdBR2xGRSxLQUFvQixDQUFDLEVBQUUsUUFBQXZCLEVBQU8sTUFDWCxnQkFBQU4sRUFBSUksSUFBYyxFQUFFLFFBQUFFLEdBQVEsYUFBYXFCLEdBQWdCLFlBQVksQ0FBQyxHQUd6RkcsS0FBb0IsQ0FBQyxFQUFFLFFBQUF4QixFQUFPLE1BQ1gsZ0JBQUFOLEVBQUlJLElBQWMsRUFBRSxRQUFBRSxHQUFRLGFBQWFxQixHQUFnQixZQUFZLENBQUM7IiwKICAibmFtZXMiOiBbImNyZWF0ZUNvbnRleHQiLCAidXNlQ29udGV4dCIsICJ1c2VTdGF0ZSIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlUmVmIiwgInVzZU1lbW8iLCAianN4IiwgIkZyYWdtZW50IiwgInokMSIsICJ2NCIsICJjb25uZWN0VG9DaGlsZCIsICJNZSIsICJFbGVtZW50c0NvbnRleHQiLCAidXNlT3BlblBheUVsZW1lbnRzIiwgImNvbnRleHQiLCAieHQiLCAiVm4iLCAiR24iLCAiem4iLCAicW4iLCAiWW4iLCAidHQiLCAibiIsICJCbiIsICJIbiIsICJKbiIsICJWIiwgIktuIiwgInQiLCAiciIsICJzIiwgIiQiLCAiSSIsICJDIiwgIk0iLCAicCIsICIkdCIsICJWdCIsICJHdCIsICJ6dCIsICJXIiwgIlpuIiwgIkdlIiwgIlduIiwgIkgiLCAiUW4iLCAiWG4iLCAiZXIiLCAidHIiLCAibnIiLCAicnIiLCAib3IiLCAic3IiLCAiaXIiLCAiYXIiLCAiY3IiLCAibHIiLCAiSWUiLCAidXIiLCAiZHIiLCAicHIiLCAibXIiLCAieXIiLCAiZnIiLCAiX3IiLCAiaXQiLCAiaHIiLCAiZ3IiLCAid3IiLCAiVCIsICJiciIsICJ2ciIsICJxdCIsICJFciIsICJDciIsICJZdCIsICJTciIsICJQciIsICJrciIsICJ6ZSIsICJtdCIsICJhdCIsICJBciIsICJJciIsICJpIiwgImEiLCAiUnIiLCAiVHIiLCAiRnIiLCAiYyIsICJNciIsICJlZSIsICJEciIsICJOciIsICJMciIsICJ3IiwgIk9yIiwgIkJ0IiwgIkh0IiwgIlVyIiwgImpyIiwgImhlIiwgInhyIiwgIiRyIiwgIkp0IiwgIlZyIiwgIkdyIiwgInpyIiwgInl0IiwgIkt0IiwgImZ0IiwgIlp0IiwgInFyIiwgIllyIiwgIld0IiwgIkJyIiwgIkhyIiwgIkpyIiwgIktyIiwgIlpyIiwgIlF0IiwgIldyIiwgIlFyIiwgIlhyIiwgImVvIiwgInRvIiwgIm5vIiwgInJvIiwgIm9vIiwgInNvIiwgInJlIiwgImRlIiwgIlAiLCAibnQiLCAib2UiLCAiaW8iLCAiXyIsICJYdCIsICJmZSIsICJqZSIsICJ4ZSIsICJ5ZSIsICJhbyIsICJ5IiwgImYiLCAiaCIsICJ2IiwgImIiLCAibSIsICJjbyIsICJEIiwgInFlIiwgIldlIiwgIiRlIiwgIlJlIiwgIl90IiwgImVuIiwgInRuIiwgInJuIiwgImh0IiwgIkxlIiwgImN0IiwgIm1vIiwgInJ0IiwgImxvIiwgIlFlIiwgInVvIiwgIkRlIiwgInBvIiwgImx0IiwgInlvIiwgImZvIiwgIm5lIiwgImhvIiwgImd0IiwgIl9vIiwgImdvIiwgIndvIiwgImJvIiwgInZvIiwgIkVvIiwgInNuIiwgInd0IiwgIkNvIiwgIlNvIiwgImJ0IiwgIlBvIiwgInZ0IiwgImtvIiwgIkFvIiwgIklvIiwgIlJvIiwgIlRvIiwgIkZvIiwgIk1vIiwgIkRvIiwgIk5vIiwgIkxvIiwgIk9vIiwgIlVvIiwgImpvIiwgInhvIiwgIiRvIiwgIlZvIiwgImFuIiwgIkdvIiwgInpvIiwgInFvIiwgIllvIiwgIkJvIiwgIkhvIiwgIkpvIiwgIktvIiwgIlpvIiwgIldvIiwgIlFvIiwgIkUiLCAiayIsICJTZSIsICJZZSIsICJFdCIsICJYbyIsICJlcyIsICJYZSIsICJBIiwgIm90IiwgIkN0IiwgInRzIiwgIm5zIiwgInJzIiwgIk5lIiwgIm9zIiwgInNzIiwgImlzIiwgIlV0IiwgIkwiLCAiY3MiLCAiYXMiLCAibHMiLCAiTiIsICJnZSIsICJ1cyIsICJkcyIsICJZIiwgInBzIiwgIm1zIiwgInlzIiwgIndlIiwgImZzIiwgIlN0IiwgIl9zIiwgInV0IiwgInluIiwgImhzIiwgImR0IiwgImdzIiwgIkIiLCAiX24iLCAiaG4iLCAid3MiLCAiYnMiLCAibCIsICJ3biIsICJwYSIsICJ2cyIsICJUZSIsICJKIiwgIkVzIiwgIkJlIiwgIkNzIiwgIlNzIiwgIlBzIiwgIkhlIiwgInZuIiwgImtzIiwgIkFzIiwgIklzIiwgInB0IiwgIlJzIiwgIlRzIiwgIkZzIiwgIk1zIiwgIkRzIiwgIkNuIiwgIlNuIiwgIlBuIiwgInNlIiwgIk5zIiwgIk9lIiwgIkxzIiwgIk9zIiwgIlVzIiwgInZlIiwgImpzIiwgInUiLCAiZCIsICJSIiwgInhzIiwgIkplIiwgImV0IiwgIktlIiwgIiRzIiwgIlJuIiwgInEiLCAibWUiLCAiVnMiLCAiR3MiLCAiTyIsICJ0ZSIsICJ4IiwgIiRuIiwgIkZlIiwgImllIiwgIlplIiwgImFlIiwgImJlIiwgIlRuIiwgIkZuIiwgInpzIiwgInFzIiwgIlVlIiwgIk1uIiwgIllzIiwgIkJzIiwgImxlIiwgIkVlIiwgIkhzIiwgIkpzIiwgIktzIiwgIkRuIiwgIlpzIiwgIldzIiwgIk5uIiwgIlFzIiwgIlhzIiwgImVpIiwgInRpIiwgIm5pIiwgIl9lIiwgIkFlIiwgInJpIiwgIm9pIiwgInNpIiwgIlB0IiwgImlpIiwgImFpIiwgImNpIiwgImxpIiwgInVpIiwgIlMiLCAia3QiLCAiQXQiLCAiZGkiLCAiX2kiLCAiZmkiLCAicGkiLCAibWkiLCAieWkiLCAiaGkiLCAiZ2kiLCAiaiIsICJPbiIsICJ3aSIsICJiaSIsICJJdCIsICJ2aSIsICJFaSIsICJLIiwgIlJ0IiwgIkNpIiwgIlNpIiwgInBlIiwgIlR0IiwgIkYiLCAiUGkiLCAia2kiLCAiQWkiLCAiSWkiLCAiRmkiLCAiUmkiLCAiVGkiLCAiVSIsICJNaSIsICJEaSIsICJOaSIsICJQZSIsICJMaSIsICJVaSIsICJPaSIsICJqaSIsICJ4aSIsICIkaSIsICJjZSIsICJWaSIsICJHaSIsICJ6aSIsICJHIiwgIkZ0IiwgIlEiLCAic3QiLCAiVW4iLCAia2UiLCAicWkiLCAiam4iLCAiTXQiLCAidWUiLCAiQ2UiLCAiWWkiLCAiQmkiLCAiSGkiLCAiWmkiLCAiSmkiLCAiS2kiLCAiV2kiLCAieG4iLCAiUWkiLCAiWGkiLCAiZWEiLCAidGEiLCAibmEiLCAicmEiLCAiRHQiLCAib2EiLCAic2EiLCAiaWEiLCAiTnQiLCAiTHQiLCAiWiIsICJ6IiwgIlgiLCAiT3QiLCAiUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IkMSIsICJab2RGaWVsZEVycm9yIiwgIm1ha2VDYWxsYmFja1NhZmUiLCAiY2FsbGJhY2tOYW1lIiwgImZuIiwgImVycm9yTG9nZ2VyIiwgImFyZ3MiLCAiZXJyb3IiLCAiU3VibWl0TWV0aG9kcyIsICJTdWJtaXRNZXRob2RzMiIsICJSZXF1aXJlZFN0cmluZyIsICJPcHRpb25hbFN0cmluZyIsICJudWxsT3JVbmRlZk9yJDEiLCAielR5cGUiLCAiRmllbGROYW1lIiwgIkZpZWxkTmFtZTIiLCAiRmllbGROYW1lRW51bSIsICJQcml2YXRlRmllbGROYW1lIiwgIlByaXZhdGVGaWVsZE5hbWUyIiwgIlByaXZhdGVGaWVsZE5hbWVFbnVtIiwgIkFsbEZpZWxkTmFtZXMiLCAiRWxlbWVudFR5cGVFbnVtIiwgIkVsZW1lbnRUeXBlRW51bTIiLCAiQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEiLCAiUGF5bWVudE1ldGhvZE1pbmltYWwiLCAiRXZlbnRUeXBlIiwgIkdlbmVyaWNFdmVudFR5cGUiLCAiR2VuZXJpY0V2ZW50UGF5bG9hZCIsICJJbnB1dEV2ZW50VHlwZSIsICJJbnB1dEV2ZW50UGF5bG9hZCIsICJFcnJvckV2ZW50VHlwZSIsICJFcnJvckV2ZW50UGF5bG9hZCIsICJWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUiLCAiVmFsaWRhdGlvbkVycm9yRXZlbnRQYXlsb2FkIiwgIkxheW91dEV2ZW50UGF5bG9hZCIsICJMb2FkZWRFdmVudFBheWxvYWQiLCAiUGF5bWVudEZsb3dTdGFydGVkRXZlbnRQYXlsb2FkIiwgIlNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkIiwgIlJlcXVpcmVkRm9ybUZpZWxkcyIsICJQUkZvcm1GaWVsZHMiLCAiU3VibWl0RXZlbnRUeXBlIiwgIlN1Ym1pdEV2ZW50UGF5bG9hZCIsICJUb2tlbml6ZVN1Y2Nlc3NFdmVudFBheWxvYWQiLCAiQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkIiwgIkV2ZW50UGF5bG9hZCIsICJDaGVja291dFN1Y2Nlc3NSZXNwb25zZSIsICJGaWVsZFZhbGlkYXRpb25FcnJvciIsICJUb2tlbml6ZUNhcmRFcnJvclJlc3BvbnNlIiwgIkNvbW1vbk5leHRBY3Rpb25NZXRhZGF0YSIsICJjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyIsICJzdHlsZXMiLCAibnVsbE9yVW5kZWZPciIsICJDb3Vwb25NaW5pbWFsIiwgIkxpbmVJdGVtIiwgIkJyYW5kU2V0dGluZ3MiLCAiQnJhbmQiLCAiQ2hlY2tvdXRQYXltZW50TWV0aG9kIiwgIlN1YnNjcmlwdGlvbkl0ZW1NaW5pbWFsIiwgIlN1YnNjcmlwdGlvbk1pbmltYWwiLCAiSW52b2ljZUl0ZW1EaXNjb3VudEFtb3VudHNNaW5pbWFsIiwgIkludm9pY2VMaW5lSXRlbU1pbmltYWwiLCAiRGlzY291bnRNaW5pbWFsIiwgIkludm9pY2VNaW5pbWFsIiwgIkNyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCIsICJQcmV2aWV3Q2hlY2tvdXRSZXNwb25zZSIsICJfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uIiwgIlBheW1lbnRGb3JtUHJlZmlsbCIsICJDb21wbGV0ZWRGb3JtUHJlZmlsbCIsICJFeHBpcmVkRm9ybVByZWZpbGwiLCAiUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IiLCAiTmV3Q3VzdG9tZXJGaWVsZHMiLCAiUHJpY2VRdHkiLCAiQ2FydEluZm8iLCAiUHJvY2Vzc29yU3BlY2lmaWNNZXRhZGF0YSIsICJmaXhQcm90byIsICJ0YXJnZXQiLCAicHJvdG90eXBlIiwgInNldFByb3RvdHlwZU9mIiwgImZpeFN0YWNrIiwgImNhcHR1cmVTdGFja1RyYWNlIiwgIl9fZXh0ZW5kcyQxIiwgIl9leHRlbmRTdGF0aWNzIiwgIl9fIiwgIl9zdXBlciIsICJDdXN0b21FcnJvciIsICJtZXNzYWdlIiwgIm9wdGlvbnMiLCAiX25ld1RhcmdldCIsICJfdGhpcyIsICJjcmVhdGVPanNGbG93TG9nZ2VycyIsICJwcmVmaXgiLCAibG9nIiwgImVyciIsICJleHRlbmRTdGF0aWNzIiwgIl9fZXh0ZW5kcyIsICJfX2F3YWl0ZXIiLCAidGhpc0FyZyIsICJfYXJndW1lbnRzIiwgImdlbmVyYXRvciIsICJhZG9wdCIsICJ2YWx1ZSIsICJyZXNvbHZlIiwgInJlamVjdCIsICJmdWxmaWxsZWQiLCAic3RlcCIsICJlIiwgInJlamVjdGVkIiwgInJlc3VsdCIsICJfX2dlbmVyYXRvciIsICJib2R5IiwgImciLCAidmVyYiIsICJvcCIsICJfX3ZhbHVlcyIsICJvIiwgIl9fcmVhZCIsICJfX3NwcmVhZEFycmF5IiwgImZyb20iLCAicGFjayIsICJfX2F3YWl0IiwgIl9fYXN5bmNHZW5lcmF0b3IiLCAiYXdhaXRSZXR1cm4iLCAicmVzdW1lIiwgInNldHRsZSIsICJmdWxmaWxsIiwgIl9fYXN5bmNWYWx1ZXMiLCAiaXNGdW5jdGlvbiIsICJ2YWx1ZSIsICJjcmVhdGVFcnJvckNsYXNzIiwgImNyZWF0ZUltcGwiLCAiX3N1cGVyIiwgImluc3RhbmNlIiwgImN0b3JGdW5jIiwgIlVuc3Vic2NyaXB0aW9uRXJyb3IiLCAiZXJyb3JzIiwgImVyciIsICJhcnJSZW1vdmUiLCAiYXJyIiwgIml0ZW0iLCAiaW5kZXgiLCAiU3Vic2NyaXB0aW9uIiwgImluaXRpYWxUZWFyZG93biIsICJlXzEiLCAiX2EiLCAiZV8yIiwgIl9iIiwgIl9wYXJlbnRhZ2UiLCAiX3BhcmVudGFnZV8xIiwgIl9fdmFsdWVzIiwgIl9wYXJlbnRhZ2VfMV8xIiwgInBhcmVudF8xIiwgImVfMV8xIiwgImluaXRpYWxGaW5hbGl6ZXIiLCAiZSIsICJfZmluYWxpemVycyIsICJfZmluYWxpemVyc18xIiwgIl9maW5hbGl6ZXJzXzFfMSIsICJmaW5hbGl6ZXIiLCAiZXhlY0ZpbmFsaXplciIsICJfX3NwcmVhZEFycmF5IiwgIl9fcmVhZCIsICJlXzJfMSIsICJ0ZWFyZG93biIsICJwYXJlbnQiLCAiZW1wdHkiLCAiRU1QVFlfU1VCU0NSSVBUSU9OIiwgImlzU3Vic2NyaXB0aW9uIiwgImNvbmZpZyIsICJ0aW1lb3V0UHJvdmlkZXIiLCAiaGFuZGxlciIsICJ0aW1lb3V0IiwgImFyZ3MiLCAiX2kiLCAiaGFuZGxlIiwgImRlbGVnYXRlIiwgInJlcG9ydFVuaGFuZGxlZEVycm9yIiwgIm5vb3AiLCAiZXJyb3JDb250ZXh0IiwgImNiIiwgIlN1YnNjcmliZXIiLCAiX19leHRlbmRzIiwgImRlc3RpbmF0aW9uIiwgIl90aGlzIiwgIkVNUFRZX09CU0VSVkVSIiwgIm5leHQiLCAiZXJyb3IiLCAiY29tcGxldGUiLCAiU2FmZVN1YnNjcmliZXIiLCAiX2JpbmQiLCAiYmluZCIsICJmbiIsICJ0aGlzQXJnIiwgIkNvbnN1bWVyT2JzZXJ2ZXIiLCAicGFydGlhbE9ic2VydmVyIiwgImhhbmRsZVVuaGFuZGxlZEVycm9yIiwgIm9ic2VydmVyT3JOZXh0IiwgImNvbnRleHRfMSIsICJkZWZhdWx0RXJyb3JIYW5kbGVyIiwgIm9ic2VydmFibGUiLCAiaWRlbnRpdHkiLCAieCIsICJwaXBlRnJvbUFycmF5IiwgImZucyIsICJpbnB1dCIsICJwcmV2IiwgIk9ic2VydmFibGUiLCAic3Vic2NyaWJlIiwgIm9wZXJhdG9yIiwgInN1YnNjcmliZXIiLCAiaXNTdWJzY3JpYmVyIiwgInNvdXJjZSIsICJzaW5rIiwgInByb21pc2VDdG9yIiwgImdldFByb21pc2VDdG9yIiwgInJlc29sdmUiLCAicmVqZWN0IiwgIm9wZXJhdGlvbnMiLCAiaXNPYnNlcnZlciIsICJoYXNMaWZ0IiwgIm9wZXJhdGUiLCAiaW5pdCIsICJsaWZ0ZWRTb3VyY2UiLCAiY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyIiwgIm9uTmV4dCIsICJvbkNvbXBsZXRlIiwgIm9uRXJyb3IiLCAib25GaW5hbGl6ZSIsICJPcGVyYXRvclN1YnNjcmliZXIiLCAic2hvdWxkVW5zdWJzY3JpYmUiLCAiY2xvc2VkXzEiLCAiT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IiLCAiU3ViamVjdCIsICJzdWJqZWN0IiwgIkFub255bW91c1N1YmplY3QiLCAiX2MiLCAib2JzZXJ2ZXIiLCAib2JzZXJ2ZXJzIiwgImhhc0Vycm9yIiwgImlzU3RvcHBlZCIsICJ0aHJvd25FcnJvciIsICJkYXRlVGltZXN0YW1wUHJvdmlkZXIiLCAiQWN0aW9uIiwgInNjaGVkdWxlciIsICJ3b3JrIiwgInN0YXRlIiwgImRlbGF5IiwgImludGVydmFsUHJvdmlkZXIiLCAiQXN5bmNBY3Rpb24iLCAiaWQiLCAiX2lkIiwgIl9zY2hlZHVsZXIiLCAiX2RlbGF5IiwgImVycm9yZWQiLCAiZXJyb3JWYWx1ZSIsICJhY3Rpb25zIiwgIlNjaGVkdWxlciIsICJzY2hlZHVsZXJBY3Rpb25DdG9yIiwgIm5vdyIsICJBc3luY1NjaGVkdWxlciIsICJTY2hlZHVsZXJBY3Rpb24iLCAiYWN0aW9uIiwgImFzeW5jU2NoZWR1bGVyIiwgImlzQXJyYXlMaWtlIiwgImlzUHJvbWlzZSIsICJpc0ludGVyb3BPYnNlcnZhYmxlIiwgImlzQXN5bmNJdGVyYWJsZSIsICJvYmoiLCAiY3JlYXRlSW52YWxpZE9ic2VydmFibGVUeXBlRXJyb3IiLCAiZ2V0U3ltYm9sSXRlcmF0b3IiLCAiaXRlcmF0b3IiLCAiaXNJdGVyYWJsZSIsICJyZWFkYWJsZVN0cmVhbUxpa2VUb0FzeW5jR2VuZXJhdG9yIiwgInJlYWRhYmxlU3RyZWFtIiwgIl9fYXN5bmNHZW5lcmF0b3IiLCAicmVhZGVyIiwgImRvbmUiLCAiX19nZW5lcmF0b3IiLCAiX19hd2FpdCIsICJpc1JlYWRhYmxlU3RyZWFtTGlrZSIsICJpbm5lckZyb20iLCAiZnJvbUludGVyb3BPYnNlcnZhYmxlIiwgImZyb21BcnJheUxpa2UiLCAiZnJvbVByb21pc2UiLCAiZnJvbUFzeW5jSXRlcmFibGUiLCAiZnJvbUl0ZXJhYmxlIiwgImZyb21SZWFkYWJsZVN0cmVhbUxpa2UiLCAib2JzIiwgImFycmF5IiwgImkiLCAicHJvbWlzZSIsICJpdGVyYWJsZSIsICJpdGVyYWJsZV8xIiwgIml0ZXJhYmxlXzFfMSIsICJhc3luY0l0ZXJhYmxlIiwgInByb2Nlc3MiLCAiYXN5bmNJdGVyYWJsZV8xIiwgImFzeW5jSXRlcmFibGVfMV8xIiwgIl9fYXdhaXRlciIsICJfX2FzeW5jVmFsdWVzIiwgImV4ZWN1dGVTY2hlZHVsZSIsICJwYXJlbnRTdWJzY3JpcHRpb24iLCAicmVwZWF0IiwgInNjaGVkdWxlU3Vic2NyaXB0aW9uIiwgInRocm93RXJyb3IiLCAiZXJyb3JPckVycm9yRmFjdG9yeSIsICJlcnJvckZhY3RvcnkiLCAiRW1wdHlFcnJvciIsICJsYXN0VmFsdWVGcm9tIiwgIl9oYXNWYWx1ZSIsICJfdmFsdWUiLCAiaXNWYWxpZERhdGUiLCAiVGltZW91dEVycm9yIiwgImluZm8iLCAic2NoZWR1bGVyQXJnIiwgImZpcnN0IiwgImVhY2giLCAiX3dpdGgiLCAidGltZW91dEVycm9yRmFjdG9yeSIsICJfZCIsICJtZXRhIiwgIm9yaWdpbmFsU291cmNlU3Vic2NyaXB0aW9uIiwgInRpbWVyU3Vic2NyaXB0aW9uIiwgImxhc3RWYWx1ZSIsICJzZWVuIiwgInN0YXJ0VGltZXIiLCAiTG9hZGVkT25jZVB1Ymxpc2hlciIsICJlcnJNc2ciLCAidmFsdWVJZk5vdExvYWRlZCIsICJzdWJzY3JpcHRpb24iLCAidGltZW91dENvbmZpZyIsICJhc3NlcnROZXZlciIsICJ0aW1lb3V0UGFyYW1zIiwgInokMSIsICJjb25udG9CYXNlVXJscyIsICJnZXRDb25udG9VcmwiLCAiZW52IiwgImdldFdpbmRvd1NhZmUiLCAibWV0cmljc1B1Ymxpc2hlciIsICJNRVRSSUNTX1FVRVVFX0tFWSIsICJNQVhfUkVUUllfQVRURU1QVFMiLCAiQkFUQ0hfU0laRSIsICJCQVRDSF9JTlRFUlZBTF9NUyIsICJsb2dfXyIsICJjcmVhdGVPanNGbG93TG9nZ2VycyIsICJNZXRyaWNzUXVldWUiLCAiZXZlbnROYW1lIiwgInByb3BlcnRpZXMiLCAiY29udGV4dFByb3BlcnRpZXMiLCAiZXZlbnQiLCAidjQiLCAic3RvcmVkUXVldWUiLCAic2FmZVdpbmRvdyIsICJjb250ZXh0IiwgImJhdGNoIiwgImJhdGNoUGF5bG9hZCIsICJjb25udG9VcmwiLCAibWV0cmljc1JvdXRlciIsICJldmVudHNUb0tlZXAiLCAibWV0cmljc1F1ZXVlIiwgIlBheW1lbnRQcm9jZXNzb3IiLCAiQVdYX0xPQURJTkciLCAiQWR5ZW5FbnZpcm9ubWVudCIsICJQYXlJblN0YXRlIiwgIlBheUluU3RhdGUyIiwgIkxPT1BfTE9BRElORyIsICJSZXF1aXJlZFN0cmluZyIsICJGaWVsZE5hbWUiLCAiT3B0aW9uYWxTdHJpbmciLCAiUFJfTE9BRElORyIsICJlcnJfXyIsICJPcHRpb25hbEZuIiwgIlpvZEZvcm1DYWxsYmFja3MiLCAiX0Zvcm1DYWxsYmFja3MiLCAicmF3Q2FsbGJhY2tzIiwgImtleSIsICJyYXdDYWxsYmFjayIsICJzYWZlQ2FsbGJhY2siLCAibWFrZUNhbGxiYWNrU2FmZSIsICJGb3JtQ2FsbGJhY2tzIiwgInVzZVJlYWN0aXZlRm9ybUNhbGxiYWNrcyIsICJwcm9wcyIsICJmb3JtQ2FsbGJhY2tzIiwgIk90IiwgInVzZVBheW1lbnRSZXF1ZXN0cyIsICJvcmlnaW5hbE9uUGF5bWVudFJlcXVlc3RMb2FkIiwgInBheW1lbnRSZXF1ZXN0cyIsICJzZXRQYXltZW50UmVxdWVzdHMiLCAidXNlU3RhdGUiLCAib3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQiLCAidXNlQ2FsbGJhY2siLCAicGF5bWVudFJlcXVlc3RzMiIsICJGT1JNX1RBUkdFVCIsICJFbGVtZW50c0Zvcm0iLCAib3BGb3JtIiwgInNldE9wRm9ybSIsICJlbGVtZW50c0NvbnRleHRWYWx1ZSIsICJzZXRFbGVtZW50c0NvbnRleHRWYWx1ZSIsICJsb2FkZWQiLCAic2V0TG9hZGVkIiwgInN0cmlwZUxpbmtDdHJsIiwgInNldFN0cmlwZUxpbmtDdHJsIiwgImxvb3BDb25maWciLCAic2V0TG9vcENvbmZpZyIsICJhaXJ3YWxsZXgiLCAic2V0QWlyd2FsbGV4IiwgInRvdGFsQW1vdW50QXRvbXMiLCAiY3VycmVuY3kiLCAidXNlRWZmZWN0IiwgImZvcm0iLCAiZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUiLCAicmVzdWx0IiwgImpzeCIsICJGcmFnbWVudCIsICJjaGlsZHJlblByb3BzIiwgIkVsZW1lbnRzQ29udGV4dCIsICJFbGVtZW50RnJhbWUiLCAiZWxlbWVudFR5cGUiLCAic3R5bGVzIiwgImZvcm1JZCIsICJyZWZlcnJlciIsICJmb3JtSGVpZ2h0IiwgImNoZWNrb3V0U2VjdXJlVG9rZW4iLCAicmVnaXN0ZXJJZnJhbWUiLCAiYmFzZVVybCIsICJ1c2VPcGVuUGF5RWxlbWVudHMiLCAic3ViUGF0aCIsICJoYXNMb2FkZWQiLCAic2V0SGFzTG9hZGVkIiwgImlmcmFtZVJlZiIsICJ1c2VSZWYiLCAiZWxlbWVudFN0eWxlIiwgInVzZU1lbW8iLCAiY29udmVydFN0eWxlc1RvUXVlcnlTdHJpbmciLCAiZnJhbWVTdHlsZSIsICJxdWVyeVN0cmluZyIsICJwYXJhbXMiLCAidXJsIiwgIkNhcmRDdmNFbGVtZW50IiwgIkVsZW1lbnRUeXBlRW51bSIsICJDYXJkRWxlbWVudCIsICJDYXJkRXhwaXJ5RWxlbWVudCIsICJDYXJkTnVtYmVyRWxlbWVudCJdCn0K
|
|
6575
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXguanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgeiBhcyB6JDEgfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGNvbm5lY3RUb0NoaWxkIH0gZnJvbSAncGVucGFsJztcbmltcG9ydCBNZSBmcm9tICdjaGFsayc7XG5cbmNvbnN0IEVsZW1lbnRzQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoe1xuICBmb3JtSWQ6IFwiXCIsXG4gIGZvcm1IZWlnaHQ6IFwiXCIsXG4gIHJlZmVycmVyOiB2b2lkIDAsXG4gIGNoZWNrb3V0U2VjdXJlVG9rZW46IHZvaWQgMCxcbiAgcmVnaXN0ZXJJZnJhbWU6ICgpID0+IHtcbiAgfSxcbiAgYmFzZVVybDogXCJcIlxufSk7XG5cbmNvbnN0IHVzZU9wZW5QYXlFbGVtZW50cyA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRWxlbWVudHNDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlT3BlblBheUVsZW1lbnRzIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gT3BlblBheUVsZW1lbnRzUHJvdmlkZXJcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuXG5jb25zdCB4dCA9IFwiaHR0cHM6Ly9jZGUuZ2V0b3BlbnBheS5jb21cIiwgVm4gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pLCBHbiA9IHokMS5hcnJheShWbiksIHpuID0geiQxLm9iamVjdCh7XG4gIGNvZGU6IHokMS5zdHJpbmcoKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBwYXRoOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKVxufSksIHFuID0geiQxLmFycmF5KHpuKSwgWW4gPSB7XG4gIFwiZmFpbGVkIHRvIGZldGNoXCI6IFwiQ29ubmVjdGlvbiBlcnJvcjogcGxlYXNlIGRvdWJsZSBjaGVjayBpZiB5b3UgYXJlIGNvbm5lY3RlZCB0byB0aGUgaW50ZXJuZXQsIHRoZW4gdHJ5IGFnYWluXCJcbn0sIHR0ID0gKGUpID0+IHtcbiAgY29uc3QgbiA9IGUudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gIHJldHVybiBZbltuXSA/PyBlO1xufSwgQm4gPSAoZSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgSlNPTi5wYXJzZShlKSA9PSBcIm9iamVjdFwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gITE7XG4gIH1cbn0sIEhuID0gKGUpID0+IGUubGVuZ3RoID09PSAxID8gdHQoZVswXS5tc2cpIDogYFBsZWFzZSBmaXggdGhlIGZvbGxvd2luZyBlcnJvcnM6XG4ke2UubWFwKCh0KSA9PiBg4oCiICR7dHQodC5tc2cpfWApLmpvaW4oYFxuYCl9YCwgSm4gPSAoZSkgPT4gYEVuY291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZXJyb3JzOlxuJHtlLm1hcCgodCkgPT4gYC0gJHt0LnBhdGguam9pbihcIi9cIil9OiAke3QubWVzc2FnZX1gKS5qb2luKGBcbmApfWAsIFYgPSAoZSkgPT4ge1xuICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKVxuICAgIGlmIChCbihlLm1lc3NhZ2UpKSB7XG4gICAgICBjb25zdCBuID0gSlNPTi5wYXJzZShlLm1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIEduLnNhZmVQYXJzZShuKS5zdWNjZXNzID8gSG4obikgOiBxbi5zYWZlUGFyc2Uobikuc3VjY2VzcyA/IEpuKG4pIDogKGNvbnNvbGUud2FybihgRW5jb3VudGVyZWQgdW5rbm93biBzdHJpbmdpZmllZCBKU09OIG9iamVjdDpcbiR7ZS5tZXNzYWdlfWApLCBlLm1lc3NhZ2UpO1xuICAgIH0gZWxzZVxuICAgICAgcmV0dXJuIHR0KGUubWVzc2FnZSk7XG4gIGlmICh0eXBlb2YgZSA9PSBcIm9iamVjdFwiKVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZSk7XG4gICAgfSBjYXRjaCAobikge1xuICAgICAgcmV0dXJuIG4gKyBcIlwiO1xuICAgIH1cbiAgZWxzZVxuICAgIHJldHVybiBlICsgXCJcIjtcbn0sIEtuID0gKGUsIG4sIHQpID0+ICguLi5yKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG4oLi4ucik7XG4gIH0gY2F0Y2ggKHMpIHtcbiAgICB0KGBbZm9ybV0gRXJyb3IgcnVubmluZyBjYWxsYmFjayAoJHtlfSk6YCwgcyk7XG4gICAgcmV0dXJuO1xuICB9XG59O1xudmFyICQgPSAvKiBAX19QVVJFX18gKi8gKChlKSA9PiAoZS5wb2NreXRQYXlwYWwgPSBcInBvY2t5dC1wYXlwYWxcIiwgZS5haXJ3YWxsZXhHb29nbGVQYXkgPSBcImFpcndhbGxleC1nb29nbGUtcGF5XCIsIGUuYWlyd2FsbGV4QXBwbGVQYXkgPSBcImFpcndhbGxleC1hcHBsZS1wYXlcIiwgZS5hdXRob3JpemVuZXRHb29nbGVQYXkgPSBcImF1dGhvcml6ZW5ldC1nb29nbGUtcGF5XCIsIGUuYXV0aG9yaXplbmV0QXBwbGVQYXkgPSBcImF1dGhvcml6ZW5ldC1hcHBsZS1wYXlcIiwgZS5sb29wQ3J5cHRvID0gXCJsb29wLWNyeXB0b1wiLCBlKSkoJCB8fCB7fSk7XG56JDEubmF0aXZlRW51bSgkKTsgY29uc3QgSSA9IHokMS5zdHJpbmcoKS50cmltKCkubWluKDEsIHsgbWVzc2FnZTogXCJDYW5ub3QgYmUgYmxhbmtcIiB9KSwgQyA9IHokMS5zdHJpbmcoKS50cmltKCkub3B0aW9uYWwoKSwgTSA9IChlKSA9PiB6JDEubnVsbGFibGUoZS5vcHRpb25hbCgpKTtcbnZhciBwID0gLyogQF9fUFVSRV9fICovICgoZSkgPT4gKGUuRklSU1RfTkFNRSA9IFwiZmlyc3ROYW1lXCIsIGUuTEFTVF9OQU1FID0gXCJsYXN0TmFtZVwiLCBlLkVNQUlMID0gXCJlbWFpbFwiLCBlLlpJUF9DT0RFID0gXCJ6aXBDb2RlXCIsIGUuQ0lUWSA9IFwiY2l0eVwiLCBlLlNUQVRFID0gXCJzdGF0ZVwiLCBlLkNPVU5UUlkgPSBcImNvdW50cnlcIiwgZS5BRERSRVNTID0gXCJhZGRyZXNzXCIsIGUuUEhPTkUgPSBcInBob25lXCIsIGUuUFJPTU9USU9OX0NPREUgPSBcInByb21vdGlvbkNvZGVcIiwgZSkpKHAgfHwge30pO1xuY29uc3QgJHQgPSB6JDEubmF0aXZlRW51bShwKTtcbnZhciBWdCA9IC8qIEBfX1BVUkVfXyAqLyAoKGUpID0+IChlLkNBUkRfTlVNQkVSID0gXCJjYXJkTnVtYmVyXCIsIGUuQ0FSRF9FWFBJUlkgPSBcImNhcmRFeHBpcnlcIiwgZS5DQVJEX0NWQyA9IFwiY2FyZEN2Y1wiLCBlKSkoVnQgfHwge30pO1xuY29uc3QgR3QgPSB6JDEubmF0aXZlRW51bShWdCksIHp0ID0geiQxLnVuaW9uKFskdCwgR3RdKTtcbnZhciBXID0gLyogQF9fUFVSRV9fICovICgoZSkgPT4gKGUuQ0FSRCA9IFwiY2FyZFwiLCBlLkNBUkRfTlVNQkVSID0gXCJjYXJkLW51bWJlclwiLCBlLkNBUkRfRVhQSVJZID0gXCJjYXJkLWV4cGlyeVwiLCBlLkNBUkRfQ1ZDID0gXCJjYXJkLWN2Y1wiLCBlLkNERV9CUklER0UgPSBcImNkZS1icmlkZ2VcIiwgZSkpKFcgfHwge30pO1xuY29uc3QgWm4gPSB6JDEubmF0aXZlRW51bShXKSwgR2UgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgcHJvY2Vzc29yX25hbWU6IE0oeiQxLnN0cmluZygpKSxcbiAgbWV0YWRhdGE6IE0oeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KSwgV24gPSB6JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgY2FyZE51bWJlcjogQyxcbiAgZXhwaXJ5OiBDLFxuICBjdmM6IENcbn0pO1xueiQxLm9iamVjdCh7XG4gIGJhY2tncm91bmRDb2xvcjogQyxcbiAgY29sb3I6IEMsXG4gIGZvbnRGYW1pbHk6IEMsXG4gIGZvbnRTaXplOiBDLFxuICBmb250V2VpZ2h0OiBDLFxuICBtYXJnaW46IEMsXG4gIHBhZGRpbmc6IEMsXG4gIGxldHRlclNwYWNpbmc6IEMsXG4gIGxpbmVIZWlnaHQ6IEMsXG4gIGhpZGVJY29uOiBDXG59KTtcbmNvbnN0IEggPSB6JDEuZW51bShbXG4gIC8vIEVsZW1lbnQgLT4gRm9ybVxuICBcIkxBWU9VVFwiLFxuICBcIkxPQURFRFwiLFxuICBcIkJMVVJcIixcbiAgXCJGT0NVU1wiLFxuICBcIkNIQU5HRVwiLFxuICBcIlRPS0VOSVpFX1NUQVJURURcIixcbiAgXCJDSEVDS09VVF9TVEFSVEVEXCIsXG4gIFwiUEFZTUVOVF9GTE9XX1NUQVJURURcIixcbiAgXCJUT0tFTklaRV9TVUNDRVNTXCIsXG4gIFwiQ0hFQ0tPVVRfU1VDQ0VTU1wiLFxuICBcIkxPQURfRVJST1JcIixcbiAgXCJWQUxJREFUSU9OX0VSUk9SXCIsXG4gIFwiVE9LRU5JWkVfRVJST1JcIixcbiAgXCJDSEVDS09VVF9FUlJPUlwiLFxuICBcIlNFVFVQX1BBWU1FTlRfTUVUSE9EX1NVQ0NFU1NcIixcbiAgLy8gRm9ybSAtPiBFbGVtZW50XG4gIFwiVE9LRU5JWkVcIixcbiAgXCJDSEVDS09VVFwiLFxuICBcIlNUQVJUX1BBWU1FTlRfRkxPV1wiXG5dKSwgUW4gPSBILmV4dHJhY3QoW1wiVE9LRU5JWkVfU1RBUlRFRFwiLCBcIkNIRUNLT1VUX1NUQVJURURcIl0pLCBYbiA9IHokMS5vYmplY3QoeyB0eXBlOiBRbiB9KSwgZXIgPSBILmV4dHJhY3QoW1wiQkxVUlwiLCBcIkZPQ1VTXCIsIFwiQ0hBTkdFXCJdKSwgdHIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogZXIsXG4gIGVsZW1lbnRUeXBlOiBHdCxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KSwgbnIgPSBILmV4dHJhY3QoW1wiTE9BRF9FUlJPUlwiLCBcIlRPS0VOSVpFX0VSUk9SXCIsIFwiQ0hFQ0tPVVRfRVJST1JcIl0pLCByciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBucixcbiAgbWVzc2FnZTogSSxcbiAgaGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKVxufSksIG9yID0gSC5leHRyYWN0KFtcIlZBTElEQVRJT05fRVJST1JcIl0pLCBzciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBvcixcbiAgZWxlbWVudFR5cGU6IHp0LFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KSwgaXIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoSC5lbnVtLkxBWU9VVCksXG4gIGhlaWdodDogSVxufSksIGFyID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEguZW51bS5MT0FERUQpLFxuICBzZXNzaW9uSWQ6IEksXG4gIHRvdGFsQW1vdW50QXRvbXM6IHokMS5udW1iZXIoKSxcbiAgY3VycmVuY3k6IEMsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZHM6IHokMS5hcnJheShHZSlcbn0pLCBjciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChILmVudW0uUEFZTUVOVF9GTE9XX1NUQVJURUQpLFxuICBuZXh0QWN0aW9uTWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBwYXltZW50Rmxvd01ldGFkYXRhOiB6JDEuYW55KCkub3B0aW9uYWwoKSxcbiAgc3RhcnRQRk1ldGFkYXRhOiB6JDEub3B0aW9uYWwoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KSwgbHIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoSC5lbnVtLlNFVFVQX1BBWU1FTlRfTUVUSE9EX1NVQ0NFU1MpLFxuICBwYXltZW50TWV0aG9kSWQ6IHokMS5zdHJpbmcoKVxufSksIEllID0geiQxLm9iamVjdCh7XG4gIGZpcnN0TmFtZTogSSxcbiAgbGFzdE5hbWU6IEksXG4gIGVtYWlsOiBJLFxuICB6aXBDb2RlOiBJLFxuICBjb3VudHJ5OiBJLFxuICBwcm9tb3Rpb25Db2RlOiBDXG59KSwgdXIgPSB6JDEub2JqZWN0KHtcbiAgZmlyc3ROYW1lOiBDLFxuICBsYXN0TmFtZTogQyxcbiAgZW1haWw6IEksXG4gIHppcENvZGU6IEksXG4gIGNvdW50cnk6IEksXG4gIHByb21vdGlvbkNvZGU6IEMsXG4gIGFkZHJlc3M6IEMsXG4gIGNpdHk6IEMsXG4gIHN0YXRlOiBDXG59KSwgZHIgPSBILmV4dHJhY3QoW1wiVE9LRU5JWkVcIiwgXCJDSEVDS09VVFwiLCBcIlNUQVJUX1BBWU1FTlRfRkxPV1wiXSksIHByID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IGRyLFxuICBzZXNzaW9uSWQ6IEksXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogR2UsXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBkb05vdFVzZUxlZ2FjeUNDRmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBleGlzdGluZ0NDUE1JZDogQyxcbiAgcGF5bWVudFJvdXRlSWQ6IENcbn0pLmV4dGVuZChJZS5zaGFwZSksIG1yID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEguZW51bS5UT0tFTklaRV9TVUNDRVNTKSxcbiAgaXNSZWFkeUZvckNoZWNrb3V0OiB6JDEuYm9vbGVhbigpXG59KSwgeXIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoSC5lbnVtLkNIRUNLT1VUX1NVQ0NFU1MpLFxuICBpbnZvaWNlVXJsczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIHN1YnNjcmlwdGlvbklkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVySWQ6IHokMS5zdHJpbmcoKVxufSksIGZyID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICBYbixcbiAgdHIsXG4gIHJyLFxuICBzcixcbiAgaXIsXG4gIGFyLFxuICBwcixcbiAgbXIsXG4gIHlyLFxuICBjcixcbiAgbHJcbl0pLCBfciA9IHokMS5vYmplY3Qoe1xuICBwYXlsb2FkOiBmcixcbiAgbm9uY2U6IEksXG4gIGZvcm1JZDogSSxcbiAgZWxlbWVudElkOiBJXG59KTtcbnokMS5vYmplY3Qoe1xuICBhbW91bnRBdG9tOiB6JDEubnVtYmVyKCksXG4gIC8qKlxuICAgKiBUaGUgdGhyZWUtbGV0dGVyIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUgZm9yIHRoZSBwYXltZW50LlxuICAgKi9cbiAgY3VycmVuY3k6IElcbn0pO1xueiQxLmVudW0oW1wiYXBwbGVfcGF5XCIsIFwiZ29vZ2xlX3BheVwiXSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIGV4aXN0aW5nX2NjX3BtX2lkOiBNKHokMS5zdHJpbmcoKSksXG4gIHRoZWlyX3BtX2lkOiBNKHokMS5zdHJpbmcoKSksXG4gIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IE0oeiQxLnN0cmluZygpKSxcbiAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiBNKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBpdCA9IHokMS5vYmplY3Qoe1xuICBpbnZvaWNlX3VybHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBzdWJzY3JpcHRpb25faWRzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJfaWQ6IHokMS5zdHJpbmcoKSxcbiAgcHJvY2Vzc29yc191c2VkOiBNKHokMS5hcnJheSh6JDEuc3RyaW5nKCkpKVxufSksIGhyID0geiQxLm9iamVjdCh7XG4gIGVsZW1lbnRUeXBlOiB6JDEuc3RyaW5nKCksXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBnciA9IHokMS5vYmplY3Qoe1xuICBzdWNjZXNzOiB6JDEubGl0ZXJhbCghMSksXG4gIGVycm9yX3R5cGU6IHokMS5saXRlcmFsKFwidmFsaWRhdGlvbl9lcnJvclwiKSxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoaHIpXG59KSwgd3IgPSB6JDEuZGlzY3JpbWluYXRlZFVuaW9uKFwic3VjY2Vzc1wiLCBbXG4gIHokMS5vYmplY3QoeyBzdWNjZXNzOiB6JDEubGl0ZXJhbCghMCkgfSksXG4gIGdyXG5dKTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBHZSxcbiAgbm9uX2NkZV9mb3JtX2ZpZWxkczogSWUsXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IE0oeiQxLnN0cmluZygpKSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBwYXltZW50X3JvdXRlX2lkOiBNKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IEdlLFxuICBub25fY2RlX2Zvcm1fZmllbGRzOiBJZSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gIHBheW1lbnRfcm91dGVfaWQ6IE0oeiQxLnN0cmluZygpKVxufSk7XG52YXIgVCA9IC8qIEBfX1BVUkVfXyAqLyAoKGUpID0+IChlLlNVQ0NFU1MgPSBcInN1Y2Nlc3NcIiwgZS5GQUlMVVJFID0gXCJmYWlsdXJlXCIsIGUuQ0FOQ0VMTEVEID0gXCJjYW5jZWxsZWRcIiwgZSkpKFQgfHwge30pO1xuY29uc3QgYnIgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXG4gICAgXCJzdWNjZXNzXCIsXG4gICAgXCJmYWlsdXJlXCIsXG4gICAgXCJjYW5jZWxsZWRcIlxuICAgIC8qIENBTkNFTExFRCAqL1xuICBdKSxcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG5jb25zdCB2ciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogeiQxLnN0cmluZygpLFxuICBpbml0aWFsX2ludGVudF9pZDogeiQxLnN0cmluZygpLFxuICBjb25zZW50X2lkOiB6JDEuc3RyaW5nKCksXG4gIHRoZWlyX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSksIHF0ID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgcmVkaXJlY3RfdXJsOiBNKHokMS5zdHJpbmcoKSksXG4gIGluaXRpYWxfaW50ZW50X2lkOiBNKHokMS5zdHJpbmcoKSksXG4gIGNvbnNlbnRfaWQ6IE0oeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IE0oeiQxLnN0cmluZygpKSxcbiAgcGF5bWVudF9zZXNzaW9uOiBNKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSksIEVyID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwoITApLCBocmVmOiB6JDEuc3RyaW5nKCkgfSksXG4gIHokMS5vYmplY3QoeyBwcmVzZW50OiB6JDEubGl0ZXJhbCghMSkgfSlcbl0pLCBDciA9IHokMS5vYmplY3Qoe1xuICBwYXltZW50X21ldGhvZHM6IHokMS5hcnJheShXbiksXG4gIHBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlOiBNKGl0KSxcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiBNKHokMS5hcnJheShxdCkpXG59KSwgWXQgPSAoZSkgPT4ge1xuICBjb25zdCBuID0ge307XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChbdCwgcl0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcyA9ICR0LnBhcnNlKHQpO1xuICAgICAgQXJyYXkuaXNBcnJheShyKSA/IG5bc10gPSByIDogQXJyYXkuaXNBcnJheShyLl9lcnJvcnMpICYmIChuW3NdID0gci5fZXJyb3JzKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0pLCBuO1xufSwgU3IgPSB6JDEub2JqZWN0KHtcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pLCBQciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbn0pLCBrciA9IHtcbiAgdXNkOiBcInVzZFwiLFxuICBicmw6IFwiYnJsXCJcbn0sIHplID0gYXN5bmMgKGUpID0+IHtcbiAgZm9yIChsZXQgdCA9IDA7IHQgPCAxMDsgdCsrKVxuICAgIG10KCkgfHwgYXdhaXQgYXQoNTAwKTtcbiAgaWYgKCFtdCgpKVxuICAgIHRocm93IGNvbnNvbGUubG9nKFwiU3RyaXBlIEpTIG5vdCBmb3VuZC5cIiksIG5ldyBFcnJvcihcIlN0cmlwZSBKUyBub3QgZm91bmQuXCIpO1xuICByZXR1cm4gbmV3IFN0cmlwZShlKTtcbn0sIEFyID0gYXN5bmMgKGUsIG4pID0+IHtcbiAgY29uc3QgdCA9IGF3YWl0IHplKGUpO1xuICByZXR1cm4ge1xuICAgIGVsZW1lbnRzOiB0LmVsZW1lbnRzKG4pLFxuICAgIHN0cmlwZTogdFxuICB9O1xufSwgSXIgPSBhc3luYyAoZSwgbiwgdCwgciwgcykgPT4ge1xuICBjb25zdCBpID0gYXdhaXQgemUoZSksIGEgPSBrclt0LnRvTG93ZXJDYXNlKCkudHJpbSgpXTtcbiAgcmV0dXJuIGkucGF5bWVudFJlcXVlc3Qoe1xuICAgIC8vIFRPRE86IHJlcGxhY2UgdGhpcyB3aXRoIHN0cmlwZSBhY2NvdW50IGNvdW50cnkgYXMgc29vbiBhcyB3ZSBzdXBwb3J0IGl0XG4gICAgY291bnRyeTogXCJVU1wiLFxuICAgIGN1cnJlbmN5OiBhLFxuICAgIHRvdGFsOiB7XG4gICAgICBsYWJlbDogXCJUb3RhbFwiLFxuICAgICAgYW1vdW50OiBuLFxuICAgICAgcGVuZGluZzogclxuICAgIH0sXG4gICAgLy8gcmVxdWVzdFNoaXBwaW5nOiB0cnVlLFxuICAgIHJlcXVlc3RQYXllck5hbWU6ICEwLFxuICAgIHJlcXVlc3RQYXllckVtYWlsOiAhMCxcbiAgICBkaXNhYmxlV2FsbGV0czogW11cbiAgfSk7XG59LCBhdCA9IChlKSA9PiBuZXcgUHJvbWlzZSgobikgPT4ge1xuICBzZXRUaW1lb3V0KG4sIGUpO1xufSksIG10ID0gKCkgPT4gXCJTdHJpcGVcIiBpbiB3aW5kb3csIFJyID0gYXN5bmMgKGUpID0+IG5ldyBQcm9taXNlKChuLCB0KSA9PiB7XG4gIHRyeSB7XG4gICAgZS5vbihcInBheW1lbnRtZXRob2RcIiwgYXN5bmMgKHIpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwicGF5bWVudG1ldGhvZCBFVlQ6OiBcIiwgciksIG4ocik7XG4gICAgfSksIGUub24oXCJ0b2tlblwiLCBhc3luYyAocikgPT4ge1xuICAgICAgY29uc29sZS5sb2coXCJ0b2tlbiBFVlQ6OiBcIiwgcik7XG4gICAgfSksIGUub24oXCJjYW5jZWxcIiwgKCkgPT4ge1xuICAgICAgdChuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCwgcGxlYXNlIGNsaWNrIFN1Ym1pdCBhZ2FpbiB0byBwYXlcIikpO1xuICAgIH0pO1xuICB9IGNhdGNoIChyKSB7XG4gICAgdChyKTtcbiAgfVxufSksIFRyID0gYXN5bmMgKGUsIG4pID0+IHtcbiAgaWYgKCFlLnN0cmlwZV9wayB8fCAhZS5jbGllbnRfc2VjcmV0KVxuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBuZXh0IGFjdGlvbiBtZXRhZGF0YSBmb3JtYXQ6ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCk7XG4gIGNvbnN0IHIgPSBhd2FpdCAoYXdhaXQgemUoZS5zdHJpcGVfcGspKS5jb25maXJtQ2FyZFNldHVwKGUuY2xpZW50X3NlY3JldCwge1xuICAgIHBheW1lbnRfbWV0aG9kOiBuLnBheW1lbnRNZXRob2QuaWRcbiAgfSk7XG4gIGlmIChyLmVycm9yKVxuICAgIHRocm93IG4uY29tcGxldGUoXCJmYWlsXCIpLCBuZXcgRXJyb3IoYFBheW1lbnQgZmFpbGVkOiAke3IuZXJyb3IubWVzc2FnZSA/PyBcInVua25vd25cIn1gKTtcbiAgcmV0dXJuIG4uY29tcGxldGUoXCJzdWNjZXNzXCIpLCByO1xufSwgRnIgPSBhc3luYyAoZSkgPT4ge1xuICB2YXIgcywgaSwgYSwgYztcbiAgY29uc3QgdCA9IGF3YWl0IChhd2FpdCB6ZShlLnN0cmlwZV9waykpLmNvbmZpcm1DYXJkU2V0dXAoZS5jbGllbnRfc2VjcmV0LCB7XG4gICAgcGF5bWVudF9tZXRob2Q6IGUuc3RyaXBlX3BtX2lkXG4gIH0pLCByID0gKHMgPSB0LnNldHVwSW50ZW50KSA9PSBudWxsID8gdm9pZCAwIDogcy5zdGF0dXM7XG4gIGlmIChyID09PSBcInN1Y2NlZWRlZFwiKVxuICAgIGNvbnNvbGUubG9nKFwiWzNEU10gQ09ORklSTUlORyBQTTpcIiwgZS5zdHJpcGVfcG1faWQpLCBjb25zb2xlLmxvZyhcIlszRFNdIFNldHVwIGludGVudCBjcmVhdGVkOlwiLCB0LnNldHVwSW50ZW50KTtcbiAgZWxzZSB0aHJvdyByID09PSBcImNhbmNlbGVkXCIgPyBuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCwgcGxlYXNlIGNsaWNrIFN1Ym1pdCBhZ2FpbiB0byBwYXlcIikgOiBuZXcgRXJyb3IoXG4gICAgYCR7KChpID0gdC5lcnJvcikgPT0gbnVsbCA/IHZvaWQgMCA6IGkubWVzc2FnZSkgPz8gKChjID0gKGEgPSB0LnNldHVwSW50ZW50KSA9PSBudWxsID8gdm9pZCAwIDogYS5sYXN0X3NldHVwX2Vycm9yKSA9PSBudWxsID8gdm9pZCAwIDogYy5tZXNzYWdlKSA/PyBcIlBheW1lbnQgZmFpbGVkLCBwbGVhc2UgY2xpY2sgc3VibWl0IGFnYWluIHRvIHBheS5cIn1gXG4gICk7XG59LCBNciA9IChlKSA9PiBKU09OLnN0cmluZ2lmeShlKSwgZWUgPSAoZSwgbikgPT4gQXJyYXkuZnJvbShlLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbZGF0YS1vcGlkXVwiKSA/PyBbXSkucmVkdWNlKChzLCBpKSA9PiB7XG4gIGNvbnN0IGEgPSBpLmdldEF0dHJpYnV0ZShcImRhdGEtb3BpZFwiKTtcbiAgcmV0dXJuIGEgPyB7IC4uLnMsIFthXTogaS52YWx1ZSB9IDogcztcbn0sIHt9KSwgRHIgPSAoZSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBfci5wYXJzZShlKTtcbiAgfSBjYXRjaCAobikge1xuICAgIHRocm93IGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwYXJzaW5nIGV2ZW50IHBheWxvYWQ6XCIsIGUsIG4pLCBuO1xuICB9XG59LCBOciA9IGFzeW5jIChlKSA9PiB7XG4gIGlmICh0eXBlb2YgZSAhPSBcIm9iamVjdFwiIHx8ICFlKSByZXR1cm4gITE7XG4gIHRyeSB7XG4gICAgY29uc3QgbiA9IHsgdHlwZTogXCJwaW5nXCIgfSwgdCA9IGF3YWl0IGUuc2VuZChuKTtcbiAgICBpZiAodCAhPT0gITApXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICd0cnVlJyBhZnRlciBwaW5nLCBnb3QgJHtKU09OLnN0cmluZ2lmeSh0KX1gKTtcbiAgICByZXR1cm4gITA7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gY29uc29sZS5lcnJvcihcIkludmFsaWQgQ0RFIGNvbm5lY3Rpb24gY2hlY2s6XCIsIG4pLCAhMTtcbiAgfVxufSwgTHIgPSAoZSwgbikgPT4gISFlICYmIG4sIHcgPSAoZSkgPT4geiQxLm51bGxhYmxlKGUub3B0aW9uYWwoKSk7XG56JDEuc3RyaW5nKCkudHJpbSgpLm1pbigxLCB7IG1lc3NhZ2U6IFwiQ2Fubm90IGJlIGJsYW5rXCIgfSk7XG5jb25zdCBPciA9IHokMS5vYmplY3Qoe1xuICBjZGVfcmVzcG9uc2VfdHlwZTogeiQxLmxpdGVyYWwoXCJlcnJvclwiKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbnokMS5lbnVtKFtcInVzZFwiLCBcImJybFwiXSk7XG5jb25zdCBCdCA9IHokMS5vYmplY3Qoe1xuICBuYW1lOiB6JDEuc3RyaW5nKCksXG4gIGFtb3VudF9hdG9tX29mZjogdyh6JDEubnVtYmVyKCkpLFxuICBwZXJjZW50X29mZjogdyh6JDEubnVtYmVyKCkpLFxuICBjdXJyZW5jeTogdyh6JDEuc3RyaW5nKCkpLFxuICBkdXJhdGlvbjogeiQxLnN0cmluZygpLFxuICBkdXJhdGlvbl9pbl9tb250aHM6IHcoeiQxLm51bWJlcigpKVxufSksIEh0ID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9zdWJ0b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGFtb3VudF90b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB3KHokMS5zdHJpbmcoKSksXG4gIHByaWNlX2lkOiB6JDEuc3RyaW5nKCksXG4gIGJpbGxpbmdfaW50ZXJ2YWw6IHcoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbF9jb3VudDogdyh6JDEubnVtYmVyKCkuaW50KCkpLFxuICBxdWFudGl0eTogeiQxLm51bWJlcigpLmludCgpXG59KSwgVXIgPSB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSwganIgPSB6JDEub2JqZWN0KHtcbiAgbmFtZTogeiQxLnN0cmluZygpLFxuICBzZXR0aW5nczogdyhVcilcbn0pLCBoZSA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnN0cmluZygpLFxuICBwcm9jZXNzb3JfbmFtZTogdyh6JDEuc3RyaW5nKCkpLFxuICBtZXRhZGF0YTogdyh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pLCB4ciA9IHokMS5vYmplY3Qoe1xuICBxdWFudGl0eTogeiQxLm51bWJlcigpXG59KSwgJHIgPSB6JDEub2JqZWN0KHtcbiAgaWQ6IHcoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbDogdyh6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsX2NvdW50OiB3KHokMS5udW1iZXIoKS5pbnQoKSksXG4gIHN1YnNjcmlwdGlvbl9pdGVtczogeiQxLmFycmF5KHhyKSxcbiAgdHJpYWxfc3RhcnQ6IHcoeiQxLnN0cmluZygpKSxcbiAgdHJpYWxfZW5kOiB3KHokMS5zdHJpbmcoKSlcbn0pLCBKdCA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfYXRvbTogeiQxLm51bWJlcigpXG59KSwgVnIgPSB6JDEub2JqZWN0KHtcbiAgYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgYW1vdW50X2F0b21fY29uc2lkZXJpbmdfZGlzY291bnRfYXBwbGllZDogeiQxLm51bWJlcigpLFxuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkaXNjb3VudF9hbW91bnRfYXRvbXM6IHokMS5hcnJheShKdCksXG4gIHN1YnNjcmlwdGlvbl9pdGVtX2lkOiB6JDEuc3RyaW5nKClcbn0pLCBHciA9IHokMS5vYmplY3Qoe1xuICBjb3Vwb246IEJ0XG59KSwgenIgPSB6JDEub2JqZWN0KHtcbiAgY3VycmVuY3k6IHokMS5zdHJpbmcoKSxcbiAgZGlzY291bnRzOiB6JDEuYXJyYXkoR3IpLFxuICBob3N0ZWRfaW52b2ljZV91cmw6IHcoeiQxLnN0cmluZygpKSxcbiAgbGluZXM6IHokMS5hcnJheShWciksXG4gIHJlbWFpbmluZ19hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0YXhfYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgdG90YWxfZGlzY291bnRfYW1vdW50X2F0b21zOiB6JDEuYXJyYXkoSnQpXG59KSwgeXQgPSB6JDEub2JqZWN0KHtcbiAgY3JlYXRlZDogeiQxLmFycmF5KCRyKSxcbiAgaW52b2ljZXM6IHokMS5hcnJheSh6ciksXG4gIHByb2Nlc3NvcnNfdXNlZDogdyh6JDEuYXJyYXkoeiQxLnN0cmluZygpKSlcbn0pLCBLdCA9IHokMS5vYmplY3Qoe1xuICBwcmV2aWV3OiB5dCxcbiAgcHJldmlld19wb3N0X3RyaWFsOiB3KHl0KSxcbiAgY291cG9uczogeiQxLmFycmF5KEJ0KVxufSksIGZ0ID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmxpdGVyYWwoXCJvcGVuXCIpLFxuICBsb2NhbGU6IHcoeiQxLnN0cmluZygpKSxcbiAgdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IHcoeiQxLnN0cmluZygpKSxcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KEh0KSxcbiAgYW1vdW50X3N1YnRvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYW1vdW50X3RvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYnJhbmQ6IGpyLFxuICBzdWJzX3ByZXZpZXc6IHcoS3QpLFxuICAvLyBOdWxsIGluIHNldHVwIG1vZGVcbiAgbWV0aG9kc19hdmFpbGFibGU6IHokMS5hcnJheShoZSlcbn0pLCBadCA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJtb2RlXCIsIFtcbiAgeiQxLm9iamVjdCh7XG4gICAgbW9kZTogeiQxLmxpdGVyYWwoXCJzZXR1cFwiKSxcbiAgICBjdXJyZW5jeTogeiQxLm51bGxhYmxlKHokMS51bmRlZmluZWQoKSlcbiAgfSkuZXh0ZW5kKGZ0LnNoYXBlKSxcbiAgeiQxLm9iamVjdCh7XG4gICAgbW9kZTogeiQxLmVudW0oW1wicGF5bWVudFwiLCBcInN1YnNjcmlwdGlvblwiXSksXG4gICAgY3VycmVuY3k6IHokMS5zdHJpbmcoKVxuICB9KS5leHRlbmQoZnQuc2hhcGUpXG5dKSwgcXIgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEubGl0ZXJhbChcImNvbXBsZXRlXCIpXG59KSwgWXIgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEubGl0ZXJhbChcImV4cGlyZWRcIilcbn0pO1xueiQxLnVuaW9uKFtadCwgcXIsIFlyXSk7XG56JDEub2JqZWN0KHtcbiAgbG9nbzogeiQxLnN0cmluZygpLFxuICBpY29uOiB6JDEuc3RyaW5nKCksXG4gIHByaW1hcnlfY29sb3I6IHokMS5zdHJpbmcoKSxcbiAgc2Vjb25kYXJ5X2NvbG9yOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcGF5bWVudF9pbnB1dDogeiQxLmFueSgpLFxuICAvLyBTaG91bGQgZm9sbG93IEFueVBheW1lbnRJbnB1dCBmcm9tIENERVxuICBjdXN0b21lcl9maXJzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfbGFzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfZW1haWw6IHokMS5zdHJpbmcoKSxcbiAgY3VzdG9tZXJfemlwX2NvZGU6IHokMS5zdHJpbmcoKSxcbiAgY3VzdG9tZXJfY291bnRyeTogeiQxLnN0cmluZygpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoSHQpLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBjYW5jZWxfYXRfZW5kOiB6JDEuYm9vbGVhbigpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogaGUsXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZG9fbm90X3VzZV9sZWdhY3lfY2NfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB1c2VfY29uZmlybWVkX3BtX2lkOiB3KHokMS5zdHJpbmcoKSksXG4gIHBheW1lbnRfcm91dGVfaWQ6IHcoeiQxLnN0cmluZygpKVxufSk7XG5jb25zdCBXdCA9IHokMS5vYmplY3Qoe1xuICBwYXltZW50X21ldGhvZF9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpLFxuICByZXR1cm5fdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgQnIgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLmFycmF5KEJyKTtcbmNvbnN0IEhyID0geiQxLm9iamVjdCh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9hZGRyZXNzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KSwgSnIgPSB6JDEub2JqZWN0KHtcbiAgcHJpY2VfaWQ6IHokMS5zdHJpbmcoKSxcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKS5pbnQoKVxufSksIEtyID0geiQxLm9iamVjdCh7XG4gIGxpbmVfaXRlbXM6IHokMS5hcnJheShKciksXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KClcbn0pLCBaciA9IHokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHcoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBwYXltZW50X3Byb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBoZSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0aGVpcl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZV9wYXlfZmlyc3RfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IEtyLm9wdGlvbmFsKClcbn0pLmV4dGVuZChIci5zaGFwZSkuZXh0ZW5kKFpyLnNoYXBlKTtcbmNvbnN0IFF0ID0geiQxLm9iamVjdCh7XG4gIHJlcXVpcmVkX3VzZXJfYWN0aW9uczogeiQxLmFycmF5KHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKSxcbiAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogdyh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBmaWVsZHM6IHVyLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IGhlLFxuICBwYXltZW50X3JvdXRlX2lkOiB3KHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgbm9uX2NkZV9mb3JtX2ZpZWxkczogSWUsXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBoZSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICAvLyBUaGlzIGlzIG9wdGlvbmFsIGluIENERSwgYnV0IG5vdCBpbiBPSlMgbW92aW5nIGZvcndhcmRcbiAgcGF5bWVudF9yb3V0ZV9pZDogdyh6JDEuc3RyaW5nKCkpXG59KTtcbmNvbnN0IFdyID0geiQxLm9iamVjdCh7XG4gIHJlcXVpcmVkX3VzZXJfYWN0aW9uczogeiQxLmFycmF5KHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKSxcbiAgY2NfcG1faWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEucmVjb3JkKHokMS5hbnkoKSk7XG56JDEub2JqZWN0KHtcbiAgZmlyc3RfbmFtZTogdyh6JDEuc3RyaW5nKCkpLFxuICBsYXN0X25hbWU6IHcoeiQxLnN0cmluZygpKSxcbiAgbGluZTE6IHcoeiQxLnN0cmluZygpKSxcbiAgbGluZTI6IHcoeiQxLnN0cmluZygpKSxcbiAgbGluZTM6IHcoeiQxLnN0cmluZygpKSxcbiAgY2l0eTogdyh6JDEuc3RyaW5nKCkpLFxuICBzdGF0ZTogdyh6JDEuc3RyaW5nKCkpLFxuICBjb3VudHJ5OiB3KHokMS5zdHJpbmcoKSksXG4gIHppcF9jb2RlOiB3KHokMS5zdHJpbmcoKSksXG4gIGVtYWlsOiB3KHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfZW1haWw6IHcoeiQxLnN0cmluZygpKSxcbiAgcGhvbmVfbnVtYmVyOiB3KHokMS5zdHJpbmcoKSksXG4gIHVwZGF0ZV9wcm9jZXNzb3JfY3VzdG9tZXI6IHcoeiQxLmJvb2xlYW4oKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIGlkOiB6JDEuc3RyaW5nKCksXG4gIGVtYWlsOiB3KHokMS5zdHJpbmcoKSksXG4gIGZpcnN0X25hbWU6IHcoeiQxLnN0cmluZygpKSxcbiAgbGFzdF9uYW1lOiB3KHokMS5zdHJpbmcoKSksXG4gIHBob25lX251bWJlcjogdyh6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2VtYWlsOiB3KHokMS5zdHJpbmcoKSksXG4gIGFkZHJlc3M6IHcoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBtZXNzYWdlOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgUXIgPSB6JDEub2JqZWN0KHtcbiAgZXJyb3JfY29kZTogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBjaGVja291dF9wYXltZW50X21ldGhvZDogaGUsXG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gIHBheW1lbnRfcm91dGVfaWQ6IHcoeiQxLnN0cmluZygpKVxufSk7XG5jb25zdCBYciA9IHokMS5vYmplY3Qoe1xuICBuZXh0X2FjdGlvbl9tZXRhZGF0YTogdyh6JDEucmVjb3JkKHokMS5hbnkoKSkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBldmVudHM6IHokMS5hcnJheShcbiAgICB6JDEub2JqZWN0KHtcbiAgICAgIGV2ZW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICAgIGRldmljZV90b2tlbjogeiQxLnN0cmluZygpLFxuICAgICAgcHJvcGVydGllczogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gICAgICBjb250ZXh0X3Byb3BlcnRpZXM6IHokMS5yZWNvcmQoeiQxLmFueSgpKS5vcHRpb25hbCgpXG4gICAgfSlcbiAgKVxufSk7XG56JDEuYW55KCkub3B0aW9uYWwoKTtcbnokMS5vYmplY3Qoe1xuICBkZXZpY2VfdG9rZW46IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBlbyA9IHokMS5vYmplY3Qoe30pLCB0byA9IChlKSA9PiBlLnJlZHVjZSgobiwgdCkgPT4gbiArIHQsIDApO1xuZnVuY3Rpb24gbm8oZSwgbikge1xuICB2YXIgdCA9IE9iamVjdC5zZXRQcm90b3R5cGVPZjtcbiAgdCA/IHQoZSwgbikgOiBlLl9fcHJvdG9fXyA9IG47XG59XG5mdW5jdGlvbiBybyhlLCBuKSB7XG4gIG4gPT09IHZvaWQgMCAmJiAobiA9IGUuY29uc3RydWN0b3IpO1xuICB2YXIgdCA9IEVycm9yLmNhcHR1cmVTdGFja1RyYWNlO1xuICB0ICYmIHQoZSwgbik7XG59XG52YXIgb28gPSAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7XG4gIHZhciBlID0gZnVuY3Rpb24odCwgcikge1xuICAgIHJldHVybiBlID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24ocywgaSkge1xuICAgICAgcy5fX3Byb3RvX18gPSBpO1xuICAgIH0gfHwgZnVuY3Rpb24ocywgaSkge1xuICAgICAgZm9yICh2YXIgYSBpbiBpKVxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSwgYSkgJiYgKHNbYV0gPSBpW2FdKTtcbiAgICB9LCBlKHQsIHIpO1xuICB9O1xuICByZXR1cm4gZnVuY3Rpb24obiwgdCkge1xuICAgIGlmICh0eXBlb2YgdCAhPSBcImZ1bmN0aW9uXCIgJiYgdCAhPT0gbnVsbCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcodCkgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIGUobiwgdCk7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBuO1xuICAgIH1cbiAgICBuLnByb3RvdHlwZSA9IHQgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKHQpIDogKHIucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyByKCkpO1xuICB9O1xufSgpLCBzbyA9IGZ1bmN0aW9uKGUpIHtcbiAgb28obiwgZSk7XG4gIGZ1bmN0aW9uIG4odCwgcikge1xuICAgIHZhciBzID0gdGhpcy5jb25zdHJ1Y3RvciwgaSA9IGUuY2FsbCh0aGlzLCB0LCByKSB8fCB0aGlzO1xuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoaSwgXCJuYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBzLm5hbWUsXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgbm8oaSwgcy5wcm90b3R5cGUpLCBybyhpKSwgaTtcbiAgfVxuICByZXR1cm4gbjtcbn0oRXJyb3IpO1xuY29uc3QgcmUgPSAoZSkgPT4gYXN5bmMgKG4pID0+IHtcbiAgdmFyIHQsIHI7XG4gIHRyeSB7XG4gICAgKHIgPSAodCA9IG4uZm9ybUNhbGxiYWNrcy5nZXQpLm9uQ2hlY2tvdXRTdGFydGVkKSA9PSBudWxsIHx8IHIuY2FsbCh0KSwgZyhcImNoZWNrb3V0X3N0YXJ0ZWRcIiwge1xuICAgICAgY3BtOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZFxuICAgIH0pO1xuICAgIGNvbnN0IHMgPSBhd2FpdCBlKG4pO1xuICAgIGlmIChnKFwiY2hlY2tvdXRfc3VjY2Vzc1wiLCB7XG4gICAgICBjcG06IG4uY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgLi4uc1xuICAgIH0pLCBzLm1vZGUgPT09IFwic2V0dXBcIilcbiAgICAgIG4uZm9ybUNhbGxiYWNrcy5nZXQub25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzKHMucmVzdWx0LnBheW1lbnRfbWV0aG9kX2lkKTtcbiAgICBlbHNlIGlmIChzLm1vZGUgPT09IFwiY2hlY2tvdXRcIilcbiAgICAgIG4uZm9ybUNhbGxiYWNrcy5nZXQub25DaGVja291dFN1Y2Nlc3MoXG4gICAgICAgIHMucmVzdWx0Lmludm9pY2VfdXJscyxcbiAgICAgICAgcy5yZXN1bHQuc3Vic2NyaXB0aW9uX2lkcyxcbiAgICAgICAgcy5yZXN1bHQuY3VzdG9tZXJfaWQsXG4gICAgICAgIHMucmVzdWx0LnByb2Nlc3NvcnNfdXNlZCA/PyBbXVxuICAgICAgKTtcbiAgICBlbHNlXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBtb2RlOiAke3N9YCk7XG4gIH0gY2F0Y2ggKHMpIHtcbiAgICBjb25zdCBpID0gVihzKSwgYSA9IGF3YWl0IGZuKG4uY29udGV4dC5hbnlDZGVDb25uZWN0aW9uLCBpKTtcbiAgICBuLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQ2hlY2tvdXRFcnJvcihpLCBhKSwgZyhcImNoZWNrb3V0X2Vycm9yXCIsIHsgY3BtOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZCwgZXJyb3JNZXNzYWdlOiBpLCBlcnJvckNvZGU6IGEgfSk7XG4gIH1cbn0sIGRlID0gKGUpID0+IGFzeW5jIChuKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGUobik7XG4gIH0gY2F0Y2ggKHQpIHtcbiAgICBjb25zdCB7IGVycl9fOiByIH0gPSBQKFwiaW5pdC1lcnJvci1jYXRjaGVyXCIpLCBzID0gVih0KSwgaSA9IGF3YWl0IGZuKG4uY29udGV4dC5hbnlDZGVDb25uZWN0aW9uLCBzKTtcbiAgICByZXR1cm4gcihpLCBzLCB0KSwgZyhcImluaXRfZmxvd19lcnJvclwiLCB7IGVycm9yTWVzc2FnZTogcywgZXJyb3JDb2RlOiBpIH0pLCB7IGlzQXZhaWxhYmxlOiAhMSwgcmVhc29uOiBzLCBlcnJvckNvZGU6IGksIGlzTG9hZGluZzogITEgfTtcbiAgfVxufSwgUCA9IChlKSA9PiB7XG4gIGNvbnN0IG4gPSAoLi4ucikgPT4ge1xuICAgIHdpbmRvdy5jb25zb2xlLmxvZyhgJHtNZS5ncmVlbi5ib2xkKFwib2pzL1wiKX0ke01lLmJvbGQuZ3JheShgJHtlfWApfVx0YCwgLi4ucik7XG4gIH0sIHQgPSAoLi4ucikgPT4ge1xuICAgIHdpbmRvdy5jb25zb2xlLndhcm4oYCR7TWUucmVkLmJvbGQoXCJvanMvXCIpfSR7TWUuYm9sZC5ncmF5KGAke2V9YCl9XHRgLCAuLi5yKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBsb2c6IG4sXG4gICAgZXJyOiB0LFxuICAgIGxvZ19fOiBuLFxuICAgIGVycl9fOiB0XG4gIH07XG59O1xudmFyIG50ID0gZnVuY3Rpb24oZSwgbikge1xuICByZXR1cm4gbnQgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbih0LCByKSB7XG4gICAgdC5fX3Byb3RvX18gPSByO1xuICB9IHx8IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICBmb3IgKHZhciBzIGluIHIpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLCBzKSAmJiAodFtzXSA9IHJbc10pO1xuICB9LCBudChlLCBuKTtcbn07XG5mdW5jdGlvbiBvZShlLCBuKSB7XG4gIGlmICh0eXBlb2YgbiAhPSBcImZ1bmN0aW9uXCIgJiYgbiAhPT0gbnVsbClcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhuKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIG50KGUsIG4pO1xuICBmdW5jdGlvbiB0KCkge1xuICAgIHRoaXMuY29uc3RydWN0b3IgPSBlO1xuICB9XG4gIGUucHJvdG90eXBlID0gbiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUobikgOiAodC5wcm90b3R5cGUgPSBuLnByb3RvdHlwZSwgbmV3IHQoKSk7XG59XG5mdW5jdGlvbiBpbyhlLCBuLCB0LCByKSB7XG4gIGZ1bmN0aW9uIHMoaSkge1xuICAgIHJldHVybiBpIGluc3RhbmNlb2YgdCA/IGkgOiBuZXcgdChmdW5jdGlvbihhKSB7XG4gICAgICBhKGkpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKHQgfHwgKHQgPSBQcm9taXNlKSkoZnVuY3Rpb24oaSwgYSkge1xuICAgIGZ1bmN0aW9uIGMoZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShyLm5leHQoZCkpO1xuICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICBhKF8pO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBsKGQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUoci50aHJvdyhkKSk7XG4gICAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgIGEoXyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUoZCkge1xuICAgICAgZC5kb25lID8gaShkLnZhbHVlKSA6IHMoZC52YWx1ZSkudGhlbihjLCBsKTtcbiAgICB9XG4gICAgdSgociA9IHIuYXBwbHkoZSwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFh0KGUsIG4pIHtcbiAgdmFyIHQgPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHtcbiAgICBpZiAoaVswXSAmIDEpIHRocm93IGlbMV07XG4gICAgcmV0dXJuIGlbMV07XG4gIH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIHIsIHMsIGksIGEgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT0gXCJmdW5jdGlvblwiID8gSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSk7XG4gIHJldHVybiBhLm5leHQgPSBjKDApLCBhLnRocm93ID0gYygxKSwgYS5yZXR1cm4gPSBjKDIpLCB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiAoYVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBhO1xuICBmdW5jdGlvbiBjKHUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZCkge1xuICAgICAgcmV0dXJuIGwoW3UsIGRdKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGwodSkge1xuICAgIGlmIChyKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICBmb3IgKDsgYSAmJiAoYSA9IDAsIHVbMF0gJiYgKHQgPSAwKSksIHQ7ICkgdHJ5IHtcbiAgICAgIGlmIChyID0gMSwgcyAmJiAoaSA9IHVbMF0gJiAyID8gcy5yZXR1cm4gOiB1WzBdID8gcy50aHJvdyB8fCAoKGkgPSBzLnJldHVybikgJiYgaS5jYWxsKHMpLCAwKSA6IHMubmV4dCkgJiYgIShpID0gaS5jYWxsKHMsIHVbMV0pKS5kb25lKSByZXR1cm4gaTtcbiAgICAgIHN3aXRjaCAocyA9IDAsIGkgJiYgKHUgPSBbdVswXSAmIDIsIGkudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiB0LmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICB0LmxhYmVsKyssIHMgPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IHQub3BzLnBvcCgpLCB0LnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGkgPSB0LnRyeXMsICEoaSA9IGkubGVuZ3RoID4gMCAmJiBpW2kubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICB0ID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIWkgfHwgdVsxXSA+IGlbMF0gJiYgdVsxXSA8IGlbM10pKSB7XG4gICAgICAgICAgICB0LmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiB0LmxhYmVsIDwgaVsxXSkge1xuICAgICAgICAgICAgdC5sYWJlbCA9IGlbMV0sIGkgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpICYmIHQubGFiZWwgPCBpWzJdKSB7XG4gICAgICAgICAgICB0LmxhYmVsID0gaVsyXSwgdC5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpWzJdICYmIHQub3BzLnBvcCgpLCB0LnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gbi5jYWxsKGUsIHQpO1xuICAgIH0gY2F0Y2ggKGQpIHtcbiAgICAgIHUgPSBbNiwgZF0sIHMgPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICByID0gaSA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6ICEwIH07XG4gIH1cbn1cbmZ1bmN0aW9uIGZlKGUpIHtcbiAgdmFyIG4gPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHQgPSBuICYmIGVbbl0sIHIgPSAwO1xuICBpZiAodCkgcmV0dXJuIHQuY2FsbChlKTtcbiAgaWYgKGUgJiYgdHlwZW9mIGUubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZSAmJiByID49IGUubGVuZ3RoICYmIChlID0gdm9pZCAwKSwgeyB2YWx1ZTogZSAmJiBlW3IrK10sIGRvbmU6ICFlIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKG4gPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5mdW5jdGlvbiBqZShlLCBuKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgciA9IHQuY2FsbChlKSwgcywgaSA9IFtdLCBhO1xuICB0cnkge1xuICAgIGZvciAoOyAobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEocyA9IHIubmV4dCgpKS5kb25lOyApIGkucHVzaChzLnZhbHVlKTtcbiAgfSBjYXRjaCAoYykge1xuICAgIGEgPSB7IGVycm9yOiBjIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIHMgJiYgIXMuZG9uZSAmJiAodCA9IHIucmV0dXJuKSAmJiB0LmNhbGwocik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChhKSB0aHJvdyBhLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn1cbmZ1bmN0aW9uIHhlKGUsIG4sIHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIHIgPSAwLCBzID0gbi5sZW5ndGgsIGk7IHIgPCBzOyByKyspXG4gICAgKGkgfHwgIShyIGluIG4pKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4sIDAsIHIpKSwgaVtyXSA9IG5bcl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSk7XG59XG5mdW5jdGlvbiB5ZShlKSB7XG4gIHJldHVybiB0aGlzIGluc3RhbmNlb2YgeWUgPyAodGhpcy52ID0gZSwgdGhpcykgOiBuZXcgeWUoZSk7XG59XG5mdW5jdGlvbiBhbyhlLCBuLCB0KSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciByID0gdC5hcHBseShlLCBuIHx8IFtdKSwgcywgaSA9IFtdO1xuICByZXR1cm4gcyA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBBc3luY0l0ZXJhdG9yID09IFwiZnVuY3Rpb25cIiA/IEFzeW5jSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSksIGMoXCJuZXh0XCIpLCBjKFwidGhyb3dcIiksIGMoXCJyZXR1cm5cIiwgYSksIHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIHM7XG4gIGZ1bmN0aW9uIGEoeSkge1xuICAgIHJldHVybiBmdW5jdGlvbihmKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGYpLnRoZW4oeSwgXyk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBjKHksIGYpIHtcbiAgICByW3ldICYmIChzW3ldID0gZnVuY3Rpb24oaCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHYsIGIpIHtcbiAgICAgICAgaS5wdXNoKFt5LCBoLCB2LCBiXSkgPiAxIHx8IGwoeSwgaCk7XG4gICAgICB9KTtcbiAgICB9LCBmICYmIChzW3ldID0gZihzW3ldKSkpO1xuICB9XG4gIGZ1bmN0aW9uIGwoeSwgZikge1xuICAgIHRyeSB7XG4gICAgICB1KHJbeV0oZikpO1xuICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgIG0oaVswXVszXSwgaCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHUoeSkge1xuICAgIHkudmFsdWUgaW5zdGFuY2VvZiB5ZSA/IFByb21pc2UucmVzb2x2ZSh5LnZhbHVlLnYpLnRoZW4oZCwgXykgOiBtKGlbMF1bMl0sIHkpO1xuICB9XG4gIGZ1bmN0aW9uIGQoeSkge1xuICAgIGwoXCJuZXh0XCIsIHkpO1xuICB9XG4gIGZ1bmN0aW9uIF8oeSkge1xuICAgIGwoXCJ0aHJvd1wiLCB5KTtcbiAgfVxuICBmdW5jdGlvbiBtKHksIGYpIHtcbiAgICB5KGYpLCBpLnNoaWZ0KCksIGkubGVuZ3RoICYmIGwoaVswXVswXSwgaVswXVsxXSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNvKGUpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIG4gPSBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgdDtcbiAgcmV0dXJuIG4gPyBuLmNhbGwoZSkgOiAoZSA9IHR5cGVvZiBmZSA9PSBcImZ1bmN0aW9uXCIgPyBmZShlKSA6IGVbU3ltYm9sLml0ZXJhdG9yXSgpLCB0ID0ge30sIHIoXCJuZXh0XCIpLCByKFwidGhyb3dcIiksIHIoXCJyZXR1cm5cIiksIHRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIHQpO1xuICBmdW5jdGlvbiByKGkpIHtcbiAgICB0W2ldID0gZVtpXSAmJiBmdW5jdGlvbihhKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oYywgbCkge1xuICAgICAgICBhID0gZVtpXShhKSwgcyhjLCBsLCBhLmRvbmUsIGEudmFsdWUpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuICBmdW5jdGlvbiBzKGksIGEsIGMsIGwpIHtcbiAgICBQcm9taXNlLnJlc29sdmUobCkudGhlbihmdW5jdGlvbih1KSB7XG4gICAgICBpKHsgdmFsdWU6IHUsIGRvbmU6IGMgfSk7XG4gICAgfSwgYSk7XG4gIH1cbn1cbmZ1bmN0aW9uIEQoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gcWUoZSkge1xuICB2YXIgbiA9IGZ1bmN0aW9uKHIpIHtcbiAgICBFcnJvci5jYWxsKHIpLCByLnN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7XG4gIH0sIHQgPSBlKG4pO1xuICByZXR1cm4gdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSksIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gdCwgdDtcbn1cbnZhciBXZSA9IHFlKGZ1bmN0aW9uKGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBlKHRoaXMpLCB0aGlzLm1lc3NhZ2UgPSB0ID8gdC5sZW5ndGggKyBgIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XG5gICsgdC5tYXAoZnVuY3Rpb24ociwgcykge1xuICAgICAgcmV0dXJuIHMgKyAxICsgXCIpIFwiICsgci50b1N0cmluZygpO1xuICAgIH0pLmpvaW4oYFxuICBgKSA6IFwiXCIsIHRoaXMubmFtZSA9IFwiVW5zdWJzY3JpcHRpb25FcnJvclwiLCB0aGlzLmVycm9ycyA9IHQ7XG4gIH07XG59KTtcbmZ1bmN0aW9uICRlKGUsIG4pIHtcbiAgaWYgKGUpIHtcbiAgICB2YXIgdCA9IGUuaW5kZXhPZihuKTtcbiAgICAwIDw9IHQgJiYgZS5zcGxpY2UodCwgMSk7XG4gIH1cbn1cbnZhciBSZSA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBlKG4pIHtcbiAgICB0aGlzLmluaXRpYWxUZWFyZG93biA9IG4sIHRoaXMuY2xvc2VkID0gITEsIHRoaXMuX3BhcmVudGFnZSA9IG51bGwsIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICB9XG4gIHJldHVybiBlLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBuLCB0LCByLCBzLCBpO1xuICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgIHRoaXMuY2xvc2VkID0gITA7XG4gICAgICB2YXIgYSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgIGlmIChhKVxuICAgICAgICBpZiAodGhpcy5fcGFyZW50YWdlID0gbnVsbCwgQXJyYXkuaXNBcnJheShhKSlcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgYyA9IGZlKGEpLCBsID0gYy5uZXh0KCk7ICFsLmRvbmU7IGwgPSBjLm5leHQoKSkge1xuICAgICAgICAgICAgICB2YXIgdSA9IGwudmFsdWU7XG4gICAgICAgICAgICAgIHUucmVtb3ZlKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgICAgICAgIG4gPSB7IGVycm9yOiBoIH07XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGwgJiYgIWwuZG9uZSAmJiAodCA9IGMucmV0dXJuKSAmJiB0LmNhbGwoYyk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBpZiAobikgdGhyb3cgbi5lcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhLnJlbW92ZSh0aGlzKTtcbiAgICAgIHZhciBkID0gdGhpcy5pbml0aWFsVGVhcmRvd247XG4gICAgICBpZiAoRChkKSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBkKCk7XG4gICAgICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgICAgICBpID0gaCBpbnN0YW5jZW9mIFdlID8gaC5lcnJvcnMgOiBbaF07XG4gICAgICAgIH1cbiAgICAgIHZhciBfID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgIGlmIChfKSB7XG4gICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAodmFyIG0gPSBmZShfKSwgeSA9IG0ubmV4dCgpOyAheS5kb25lOyB5ID0gbS5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciBmID0geS52YWx1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIF90KGYpO1xuICAgICAgICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICAgICAgICBpID0gaSA/PyBbXSwgaCBpbnN0YW5jZW9mIFdlID8gaSA9IHhlKHhlKFtdLCBqZShpKSksIGplKGguZXJyb3JzKSkgOiBpLnB1c2goaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChoKSB7XG4gICAgICAgICAgciA9IHsgZXJyb3I6IGggfTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgeSAmJiAheS5kb25lICYmIChzID0gbS5yZXR1cm4pICYmIHMuY2FsbChtKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaSlcbiAgICAgICAgdGhyb3cgbmV3IFdlKGkpO1xuICAgIH1cbiAgfSwgZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0O1xuICAgIGlmIChuICYmIG4gIT09IHRoaXMpXG4gICAgICBpZiAodGhpcy5jbG9zZWQpXG4gICAgICAgIF90KG4pO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChuIGluc3RhbmNlb2YgZSkge1xuICAgICAgICAgIGlmIChuLmNsb3NlZCB8fCBuLl9oYXNQYXJlbnQodGhpcykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgbi5fYWRkUGFyZW50KHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgICh0aGlzLl9maW5hbGl6ZXJzID0gKHQgPSB0aGlzLl9maW5hbGl6ZXJzKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogW10pLnB1c2gobik7XG4gICAgICB9XG4gIH0sIGUucHJvdG90eXBlLl9oYXNQYXJlbnQgPSBmdW5jdGlvbihuKSB7XG4gICAgdmFyIHQgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgcmV0dXJuIHQgPT09IG4gfHwgQXJyYXkuaXNBcnJheSh0KSAmJiB0LmluY2x1ZGVzKG4pO1xuICB9LCBlLnByb3RvdHlwZS5fYWRkUGFyZW50ID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gdGhpcy5fcGFyZW50YWdlO1xuICAgIHRoaXMuX3BhcmVudGFnZSA9IEFycmF5LmlzQXJyYXkodCkgPyAodC5wdXNoKG4pLCB0KSA6IHQgPyBbdCwgbl0gOiBuO1xuICB9LCBlLnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50ID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gdGhpcy5fcGFyZW50YWdlO1xuICAgIHQgPT09IG4gPyB0aGlzLl9wYXJlbnRhZ2UgPSBudWxsIDogQXJyYXkuaXNBcnJheSh0KSAmJiAkZSh0LCBuKTtcbiAgfSwgZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gdGhpcy5fZmluYWxpemVycztcbiAgICB0ICYmICRlKHQsIG4pLCBuIGluc3RhbmNlb2YgZSAmJiBuLl9yZW1vdmVQYXJlbnQodGhpcyk7XG4gIH0sIGUuRU1QVFkgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbiA9IG5ldyBlKCk7XG4gICAgcmV0dXJuIG4uY2xvc2VkID0gITAsIG47XG4gIH0oKSwgZTtcbn0oKSwgZW4gPSBSZS5FTVBUWTtcbmZ1bmN0aW9uIHRuKGUpIHtcbiAgcmV0dXJuIGUgaW5zdGFuY2VvZiBSZSB8fCBlICYmIFwiY2xvc2VkXCIgaW4gZSAmJiBEKGUucmVtb3ZlKSAmJiBEKGUuYWRkKSAmJiBEKGUudW5zdWJzY3JpYmUpO1xufVxuZnVuY3Rpb24gX3QoZSkge1xuICBEKGUpID8gZSgpIDogZS51bnN1YnNjcmliZSgpO1xufVxudmFyIG5uID0ge1xuICBvblVuaGFuZGxlZEVycm9yOiBudWxsLFxuICBvblN0b3BwZWROb3RpZmljYXRpb246IG51bGwsXG4gIFByb21pc2U6IHZvaWQgMCxcbiAgdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZzogITEsXG4gIHVzZURlcHJlY2F0ZWROZXh0Q29udGV4dDogITFcbn0sIHJuID0ge1xuICBzZXRUaW1lb3V0OiBmdW5jdGlvbihlLCBuKSB7XG4gICAgZm9yICh2YXIgdCA9IFtdLCByID0gMjsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKylcbiAgICAgIHRbciAtIDJdID0gYXJndW1lbnRzW3JdO1xuICAgIHJldHVybiBzZXRUaW1lb3V0LmFwcGx5KHZvaWQgMCwgeGUoW2UsIG5dLCBqZSh0KSkpO1xuICB9LFxuICBjbGVhclRpbWVvdXQ6IGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gKGNsZWFyVGltZW91dCkoZSk7XG4gIH0sXG4gIGRlbGVnYXRlOiB2b2lkIDBcbn07XG5mdW5jdGlvbiBvbihlKSB7XG4gIHJuLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgdGhyb3cgZTtcbiAgfSk7XG59XG5mdW5jdGlvbiBodCgpIHtcbn1cbmZ1bmN0aW9uIExlKGUpIHtcbiAgZSgpO1xufVxudmFyIGN0ID0gZnVuY3Rpb24oZSkge1xuICBvZShuLCBlKTtcbiAgZnVuY3Rpb24gbih0KSB7XG4gICAgdmFyIHIgPSBlLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gci5pc1N0b3BwZWQgPSAhMSwgdCA/IChyLmRlc3RpbmF0aW9uID0gdCwgdG4odCkgJiYgdC5hZGQocikpIDogci5kZXN0aW5hdGlvbiA9IG1vLCByO1xuICB9XG4gIHJldHVybiBuLmNyZWF0ZSA9IGZ1bmN0aW9uKHQsIHIsIHMpIHtcbiAgICByZXR1cm4gbmV3IHJ0KHQsIHIsIHMpO1xuICB9LCBuLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24odCkge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8IHRoaXMuX25leHQodCk7XG4gIH0sIG4ucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24odCkge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8ICh0aGlzLmlzU3RvcHBlZCA9ICEwLCB0aGlzLl9lcnJvcih0KSk7XG4gIH0sIG4ucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pc1N0b3BwZWQgfHwgKHRoaXMuaXNTdG9wcGVkID0gITAsIHRoaXMuX2NvbXBsZXRlKCkpO1xuICB9LCBuLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY2xvc2VkIHx8ICh0aGlzLmlzU3RvcHBlZCA9ICEwLCBlLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpLCB0aGlzLmRlc3RpbmF0aW9uID0gbnVsbCk7XG4gIH0sIG4ucHJvdG90eXBlLl9uZXh0ID0gZnVuY3Rpb24odCkge1xuICAgIHRoaXMuZGVzdGluYXRpb24ubmV4dCh0KTtcbiAgfSwgbi5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24odCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9LCBuLnByb3RvdHlwZS5fY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9LCBuO1xufShSZSksIGxvID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ7XG5mdW5jdGlvbiBRZShlLCBuKSB7XG4gIHJldHVybiBsby5jYWxsKGUsIG4pO1xufVxudmFyIHVvID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIGUobikge1xuICAgIHRoaXMucGFydGlhbE9ic2VydmVyID0gbjtcbiAgfVxuICByZXR1cm4gZS5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdCA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgIGlmICh0Lm5leHQpXG4gICAgICB0cnkge1xuICAgICAgICB0Lm5leHQobik7XG4gICAgICB9IGNhdGNoIChyKSB7XG4gICAgICAgIERlKHIpO1xuICAgICAgfVxuICB9LCBlLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdCA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgIGlmICh0LmVycm9yKVxuICAgICAgdHJ5IHtcbiAgICAgICAgdC5lcnJvcihuKTtcbiAgICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgICAgRGUocik7XG4gICAgICB9XG4gICAgZWxzZVxuICAgICAgRGUobik7XG4gIH0sIGUucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIG4gPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICBpZiAobi5jb21wbGV0ZSlcbiAgICAgIHRyeSB7XG4gICAgICAgIG4uY29tcGxldGUoKTtcbiAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgRGUodCk7XG4gICAgICB9XG4gIH0sIGU7XG59KCksIHJ0ID0gZnVuY3Rpb24oZSkge1xuICBvZShuLCBlKTtcbiAgZnVuY3Rpb24gbih0LCByLCBzKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodGhpcykgfHwgdGhpcywgYTtcbiAgICBpZiAoRCh0KSB8fCAhdClcbiAgICAgIGEgPSB7XG4gICAgICAgIG5leHQ6IHQgPz8gdm9pZCAwLFxuICAgICAgICBlcnJvcjogciA/PyB2b2lkIDAsXG4gICAgICAgIGNvbXBsZXRlOiBzID8/IHZvaWQgMFxuICAgICAgfTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBjO1xuICAgICAgaSAmJiBubi51c2VEZXByZWNhdGVkTmV4dENvbnRleHQgPyAoYyA9IE9iamVjdC5jcmVhdGUodCksIGMudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGkudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0sIGEgPSB7XG4gICAgICAgIG5leHQ6IHQubmV4dCAmJiBRZSh0Lm5leHQsIGMpLFxuICAgICAgICBlcnJvcjogdC5lcnJvciAmJiBRZSh0LmVycm9yLCBjKSxcbiAgICAgICAgY29tcGxldGU6IHQuY29tcGxldGUgJiYgUWUodC5jb21wbGV0ZSwgYylcbiAgICAgIH0pIDogYSA9IHQ7XG4gICAgfVxuICAgIHJldHVybiBpLmRlc3RpbmF0aW9uID0gbmV3IHVvKGEpLCBpO1xuICB9XG4gIHJldHVybiBuO1xufShjdCk7XG5mdW5jdGlvbiBEZShlKSB7XG4gIG9uKGUpO1xufVxuZnVuY3Rpb24gcG8oZSkge1xuICB0aHJvdyBlO1xufVxudmFyIG1vID0ge1xuICBjbG9zZWQ6ICEwLFxuICBuZXh0OiBodCxcbiAgZXJyb3I6IHBvLFxuICBjb21wbGV0ZTogaHRcbn0sIGx0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wub2JzZXJ2YWJsZSB8fCBcIkBAb2JzZXJ2YWJsZVwiO1xufSgpO1xuZnVuY3Rpb24geW8oZSkge1xuICByZXR1cm4gZTtcbn1cbmZ1bmN0aW9uIGZvKGUpIHtcbiAgcmV0dXJuIGUubGVuZ3RoID09PSAwID8geW8gOiBlLmxlbmd0aCA9PT0gMSA/IGVbMF0gOiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKHIsIHMpIHtcbiAgICAgIHJldHVybiBzKHIpO1xuICAgIH0sIHQpO1xuICB9O1xufVxudmFyIG5lID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIGUobikge1xuICAgIG4gJiYgKHRoaXMuX3N1YnNjcmliZSA9IG4pO1xuICB9XG4gIHJldHVybiBlLnByb3RvdHlwZS5saWZ0ID0gZnVuY3Rpb24obikge1xuICAgIHZhciB0ID0gbmV3IGUoKTtcbiAgICByZXR1cm4gdC5zb3VyY2UgPSB0aGlzLCB0Lm9wZXJhdG9yID0gbiwgdDtcbiAgfSwgZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24obiwgdCwgcikge1xuICAgIHZhciBzID0gdGhpcywgaSA9IGhvKG4pID8gbiA6IG5ldyBydChuLCB0LCByKTtcbiAgICByZXR1cm4gTGUoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYSA9IHMsIGMgPSBhLm9wZXJhdG9yLCBsID0gYS5zb3VyY2U7XG4gICAgICBpLmFkZChjID8gYy5jYWxsKGksIGwpIDogbCA/IHMuX3N1YnNjcmliZShpKSA6IHMuX3RyeVN1YnNjcmliZShpKSk7XG4gICAgfSksIGk7XG4gIH0sIGUucHJvdG90eXBlLl90cnlTdWJzY3JpYmUgPSBmdW5jdGlvbihuKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLl9zdWJzY3JpYmUobik7XG4gICAgfSBjYXRjaCAodCkge1xuICAgICAgbi5lcnJvcih0KTtcbiAgICB9XG4gIH0sIGUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihuLCB0KSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIHJldHVybiB0ID0gZ3QodCksIG5ldyB0KGZ1bmN0aW9uKHMsIGkpIHtcbiAgICAgIHZhciBhID0gbmV3IHJ0KHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24oYykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuKGMpO1xuICAgICAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgICAgIGkobCksIGEudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBpLFxuICAgICAgICBjb21wbGV0ZTogc1xuICAgICAgfSk7XG4gICAgICByLnN1YnNjcmliZShhKTtcbiAgICB9KTtcbiAgfSwgZS5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdDtcbiAgICByZXR1cm4gKHQgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdC5zdWJzY3JpYmUobik7XG4gIH0sIGUucHJvdG90eXBlW2x0XSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCBlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgbiA9IFtdLCB0ID0gMDsgdCA8IGFyZ3VtZW50cy5sZW5ndGg7IHQrKylcbiAgICAgIG5bdF0gPSBhcmd1bWVudHNbdF07XG4gICAgcmV0dXJuIGZvKG4pKHRoaXMpO1xuICB9LCBlLnByb3RvdHlwZS50b1Byb21pc2UgPSBmdW5jdGlvbihuKSB7XG4gICAgdmFyIHQgPSB0aGlzO1xuICAgIHJldHVybiBuID0gZ3QobiksIG5ldyBuKGZ1bmN0aW9uKHIsIHMpIHtcbiAgICAgIHZhciBpO1xuICAgICAgdC5zdWJzY3JpYmUoZnVuY3Rpb24oYSkge1xuICAgICAgICByZXR1cm4gaSA9IGE7XG4gICAgICB9LCBmdW5jdGlvbihhKSB7XG4gICAgICAgIHJldHVybiBzKGEpO1xuICAgICAgfSwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByKGkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIGUuY3JlYXRlID0gZnVuY3Rpb24obikge1xuICAgIHJldHVybiBuZXcgZShuKTtcbiAgfSwgZTtcbn0oKTtcbmZ1bmN0aW9uIGd0KGUpIHtcbiAgdmFyIG47XG4gIHJldHVybiAobiA9IGUgPz8gbm4uUHJvbWlzZSkgIT09IG51bGwgJiYgbiAhPT0gdm9pZCAwID8gbiA6IFByb21pc2U7XG59XG5mdW5jdGlvbiBfbyhlKSB7XG4gIHJldHVybiBlICYmIEQoZS5uZXh0KSAmJiBEKGUuZXJyb3IpICYmIEQoZS5jb21wbGV0ZSk7XG59XG5mdW5jdGlvbiBobyhlKSB7XG4gIHJldHVybiBlICYmIGUgaW5zdGFuY2VvZiBjdCB8fCBfbyhlKSAmJiB0bihlKTtcbn1cbmZ1bmN0aW9uIGdvKGUpIHtcbiAgcmV0dXJuIEQoZSA9PSBudWxsID8gdm9pZCAwIDogZS5saWZ0KTtcbn1cbmZ1bmN0aW9uIHdvKGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG4pIHtcbiAgICBpZiAoZ28obikpXG4gICAgICByZXR1cm4gbi5saWZ0KGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZSh0LCB0aGlzKTtcbiAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgIHRoaXMuZXJyb3Iocik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmFibGUgdG8gbGlmdCB1bmtub3duIE9ic2VydmFibGUgdHlwZVwiKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGJvKGUsIG4sIHQsIHIsIHMpIHtcbiAgcmV0dXJuIG5ldyB2byhlLCBuLCB0LCByLCBzKTtcbn1cbnZhciB2byA9IGZ1bmN0aW9uKGUpIHtcbiAgb2UobiwgZSk7XG4gIGZ1bmN0aW9uIG4odCwgciwgcywgaSwgYSwgYykge1xuICAgIHZhciBsID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgcmV0dXJuIGwub25GaW5hbGl6ZSA9IGEsIGwuc2hvdWxkVW5zdWJzY3JpYmUgPSBjLCBsLl9uZXh0ID0gciA/IGZ1bmN0aW9uKHUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHIodSk7XG4gICAgICB9IGNhdGNoIChkKSB7XG4gICAgICAgIHQuZXJyb3IoZCk7XG4gICAgICB9XG4gICAgfSA6IGUucHJvdG90eXBlLl9uZXh0LCBsLl9lcnJvciA9IGkgPyBmdW5jdGlvbih1KSB7XG4gICAgICB0cnkge1xuICAgICAgICBpKHUpO1xuICAgICAgfSBjYXRjaCAoZCkge1xuICAgICAgICB0LmVycm9yKGQpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0gOiBlLnByb3RvdHlwZS5fZXJyb3IsIGwuX2NvbXBsZXRlID0gcyA/IGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcygpO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICB0LmVycm9yKHUpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0gOiBlLnByb3RvdHlwZS5fY29tcGxldGUsIGw7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHQ7XG4gICAgaWYgKCF0aGlzLnNob3VsZFVuc3Vic2NyaWJlIHx8IHRoaXMuc2hvdWxkVW5zdWJzY3JpYmUoKSkge1xuICAgICAgdmFyIHIgPSB0aGlzLmNsb3NlZDtcbiAgICAgIGUucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyksICFyICYmICgodCA9IHRoaXMub25GaW5hbGl6ZSkgPT09IG51bGwgfHwgdCA9PT0gdm9pZCAwIHx8IHQuY2FsbCh0aGlzKSk7XG4gICAgfVxuICB9LCBuO1xufShjdCksIEVvID0gcWUoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZSh0aGlzKSwgdGhpcy5uYW1lID0gXCJPYmplY3RVbnN1YnNjcmliZWRFcnJvclwiLCB0aGlzLm1lc3NhZ2UgPSBcIm9iamVjdCB1bnN1YnNjcmliZWRcIjtcbiAgfTtcbn0pLCBzbiA9IGZ1bmN0aW9uKGUpIHtcbiAgb2UobiwgZSk7XG4gIGZ1bmN0aW9uIG4oKSB7XG4gICAgdmFyIHQgPSBlLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gdC5jbG9zZWQgPSAhMSwgdC5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbCwgdC5vYnNlcnZlcnMgPSBbXSwgdC5pc1N0b3BwZWQgPSAhMSwgdC5oYXNFcnJvciA9ICExLCB0LnRocm93bkVycm9yID0gbnVsbCwgdDtcbiAgfVxuICByZXR1cm4gbi5wcm90b3R5cGUubGlmdCA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciA9IG5ldyB3dCh0aGlzLCB0aGlzKTtcbiAgICByZXR1cm4gci5vcGVyYXRvciA9IHQsIHI7XG4gIH0sIG4ucHJvdG90eXBlLl90aHJvd0lmQ2xvc2VkID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKVxuICAgICAgdGhyb3cgbmV3IEVvKCk7XG4gIH0sIG4ucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIExlKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHMsIGk7XG4gICAgICBpZiAoci5fdGhyb3dJZkNsb3NlZCgpLCAhci5pc1N0b3BwZWQpIHtcbiAgICAgICAgci5jdXJyZW50T2JzZXJ2ZXJzIHx8IChyLmN1cnJlbnRPYnNlcnZlcnMgPSBBcnJheS5mcm9tKHIub2JzZXJ2ZXJzKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZm9yICh2YXIgYSA9IGZlKHIuY3VycmVudE9ic2VydmVycyksIGMgPSBhLm5leHQoKTsgIWMuZG9uZTsgYyA9IGEubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgbCA9IGMudmFsdWU7XG4gICAgICAgICAgICBsLm5leHQodCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgICAgcyA9IHsgZXJyb3I6IHUgfTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYyAmJiAhYy5kb25lICYmIChpID0gYS5yZXR1cm4pICYmIGkuY2FsbChhKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKHMpIHRocm93IHMuZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIG4ucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcztcbiAgICBMZShmdW5jdGlvbigpIHtcbiAgICAgIGlmIChyLl90aHJvd0lmQ2xvc2VkKCksICFyLmlzU3RvcHBlZCkge1xuICAgICAgICByLmhhc0Vycm9yID0gci5pc1N0b3BwZWQgPSAhMCwgci50aHJvd25FcnJvciA9IHQ7XG4gICAgICAgIGZvciAodmFyIHMgPSByLm9ic2VydmVyczsgcy5sZW5ndGg7IClcbiAgICAgICAgICBzLnNoaWZ0KCkuZXJyb3IodCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIG4ucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHQgPSB0aGlzO1xuICAgIExlKGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHQuX3Rocm93SWZDbG9zZWQoKSwgIXQuaXNTdG9wcGVkKSB7XG4gICAgICAgIHQuaXNTdG9wcGVkID0gITA7XG4gICAgICAgIGZvciAodmFyIHIgPSB0Lm9ic2VydmVyczsgci5sZW5ndGg7IClcbiAgICAgICAgICByLnNoaWZ0KCkuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmlzU3RvcHBlZCA9IHRoaXMuY2xvc2VkID0gITAsIHRoaXMub2JzZXJ2ZXJzID0gdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgfSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCBcIm9ic2VydmVkXCIsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHQ7XG4gICAgICByZXR1cm4gKCh0ID0gdGhpcy5vYnNlcnZlcnMpID09PSBudWxsIHx8IHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHQubGVuZ3RoKSA+IDA7XG4gICAgfSxcbiAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICBjb25maWd1cmFibGU6ICEwXG4gIH0pLCBuLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksIGUucHJvdG90eXBlLl90cnlTdWJzY3JpYmUuY2FsbCh0aGlzLCB0KTtcbiAgfSwgbi5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLCB0aGlzLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzKHQpLCB0aGlzLl9pbm5lclN1YnNjcmliZSh0KTtcbiAgfSwgbi5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcywgcyA9IHRoaXMsIGkgPSBzLmhhc0Vycm9yLCBhID0gcy5pc1N0b3BwZWQsIGMgPSBzLm9ic2VydmVycztcbiAgICByZXR1cm4gaSB8fCBhID8gZW4gOiAodGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbCwgYy5wdXNoKHQpLCBuZXcgUmUoZnVuY3Rpb24oKSB7XG4gICAgICByLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsLCAkZShjLCB0KTtcbiAgICB9KSk7XG4gIH0sIG4ucHJvdG90eXBlLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcywgcyA9IHIuaGFzRXJyb3IsIGkgPSByLnRocm93bkVycm9yLCBhID0gci5pc1N0b3BwZWQ7XG4gICAgcyA/IHQuZXJyb3IoaSkgOiBhICYmIHQuY29tcGxldGUoKTtcbiAgfSwgbi5wcm90b3R5cGUuYXNPYnNlcnZhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHQgPSBuZXcgbmUoKTtcbiAgICByZXR1cm4gdC5zb3VyY2UgPSB0aGlzLCB0O1xuICB9LCBuLmNyZWF0ZSA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICByZXR1cm4gbmV3IHd0KHQsIHIpO1xuICB9LCBuO1xufShuZSksIHd0ID0gZnVuY3Rpb24oZSkge1xuICBvZShuLCBlKTtcbiAgZnVuY3Rpb24gbih0LCByKSB7XG4gICAgdmFyIHMgPSBlLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gcy5kZXN0aW5hdGlvbiA9IHQsIHMuc291cmNlID0gciwgcztcbiAgfVxuICByZXR1cm4gbi5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciwgcztcbiAgICAocyA9IChyID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogci5uZXh0KSA9PT0gbnVsbCB8fCBzID09PSB2b2lkIDAgfHwgcy5jYWxsKHIsIHQpO1xuICB9LCBuLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciwgcztcbiAgICAocyA9IChyID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwID8gdm9pZCAwIDogci5lcnJvcikgPT09IG51bGwgfHwgcyA9PT0gdm9pZCAwIHx8IHMuY2FsbChyLCB0KTtcbiAgfSwgbi5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdCwgcjtcbiAgICAociA9ICh0ID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdC5jb21wbGV0ZSkgPT09IG51bGwgfHwgciA9PT0gdm9pZCAwIHx8IHIuY2FsbCh0KTtcbiAgfSwgbi5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciwgcztcbiAgICByZXR1cm4gKHMgPSAociA9IHRoaXMuc291cmNlKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLnN1YnNjcmliZSh0KSkgIT09IG51bGwgJiYgcyAhPT0gdm9pZCAwID8gcyA6IGVuO1xuICB9LCBuO1xufShzbiksIENvID0ge1xuICBub3c6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBEYXRlLm5vdygpO1xuICB9LFxuICBkZWxlZ2F0ZTogdm9pZCAwXG59LCBTbyA9IGZ1bmN0aW9uKGUpIHtcbiAgb2UobiwgZSk7XG4gIGZ1bmN0aW9uIG4odCwgcikge1xuICAgIHJldHVybiBlLmNhbGwodGhpcykgfHwgdGhpcztcbiAgfVxuICByZXR1cm4gbi5wcm90b3R5cGUuc2NoZWR1bGUgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIG47XG59KFJlKSwgYnQgPSB7XG4gIHNldEludGVydmFsOiBmdW5jdGlvbihlLCBuKSB7XG4gICAgZm9yICh2YXIgdCA9IFtdLCByID0gMjsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKylcbiAgICAgIHRbciAtIDJdID0gYXJndW1lbnRzW3JdO1xuICAgIHJldHVybiBzZXRJbnRlcnZhbC5hcHBseSh2b2lkIDAsIHhlKFtlLCBuXSwgamUodCkpKTtcbiAgfSxcbiAgY2xlYXJJbnRlcnZhbDogZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiBjbGVhckludGVydmFsKGUpO1xuICB9LFxuICBkZWxlZ2F0ZTogdm9pZCAwXG59LCBQbyA9IGZ1bmN0aW9uKGUpIHtcbiAgb2UobiwgZSk7XG4gIGZ1bmN0aW9uIG4odCwgcikge1xuICAgIHZhciBzID0gZS5jYWxsKHRoaXMsIHQsIHIpIHx8IHRoaXM7XG4gICAgcmV0dXJuIHMuc2NoZWR1bGVyID0gdCwgcy53b3JrID0gciwgcy5wZW5kaW5nID0gITEsIHM7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24odCwgcikge1xuICAgIHZhciBzO1xuICAgIGlmIChyID09PSB2b2lkIDAgJiYgKHIgPSAwKSwgdGhpcy5jbG9zZWQpXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB0aGlzLnN0YXRlID0gdDtcbiAgICB2YXIgaSA9IHRoaXMuaWQsIGEgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICByZXR1cm4gaSAhPSBudWxsICYmICh0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZChhLCBpLCByKSksIHRoaXMucGVuZGluZyA9ICEwLCB0aGlzLmRlbGF5ID0gciwgdGhpcy5pZCA9IChzID0gdGhpcy5pZCkgIT09IG51bGwgJiYgcyAhPT0gdm9pZCAwID8gcyA6IHRoaXMucmVxdWVzdEFzeW5jSWQoYSwgdGhpcy5pZCwgciksIHRoaXM7XG4gIH0sIG4ucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkID0gZnVuY3Rpb24odCwgciwgcykge1xuICAgIHJldHVybiBzID09PSB2b2lkIDAgJiYgKHMgPSAwKSwgYnQuc2V0SW50ZXJ2YWwodC5mbHVzaC5iaW5kKHQsIHRoaXMpLCBzKTtcbiAgfSwgbi5wcm90b3R5cGUucmVjeWNsZUFzeW5jSWQgPSBmdW5jdGlvbih0LCByLCBzKSB7XG4gICAgaWYgKHMgPT09IHZvaWQgMCAmJiAocyA9IDApLCBzICE9IG51bGwgJiYgdGhpcy5kZWxheSA9PT0gcyAmJiB0aGlzLnBlbmRpbmcgPT09ICExKVxuICAgICAgcmV0dXJuIHI7XG4gICAgciAhPSBudWxsICYmIGJ0LmNsZWFySW50ZXJ2YWwocik7XG4gIH0sIG4ucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKVxuICAgICAgcmV0dXJuIG5ldyBFcnJvcihcImV4ZWN1dGluZyBhIGNhbmNlbGxlZCBhY3Rpb25cIik7XG4gICAgdGhpcy5wZW5kaW5nID0gITE7XG4gICAgdmFyIHMgPSB0aGlzLl9leGVjdXRlKHQsIHIpO1xuICAgIGlmIChzKVxuICAgICAgcmV0dXJuIHM7XG4gICAgdGhpcy5wZW5kaW5nID09PSAhMSAmJiB0aGlzLmlkICE9IG51bGwgJiYgKHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHRoaXMuc2NoZWR1bGVyLCB0aGlzLmlkLCBudWxsKSk7XG4gIH0sIG4ucHJvdG90eXBlLl9leGVjdXRlID0gZnVuY3Rpb24odCwgcikge1xuICAgIHZhciBzID0gITEsIGk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMud29yayh0KTtcbiAgICB9IGNhdGNoIChhKSB7XG4gICAgICBzID0gITAsIGkgPSBhIHx8IG5ldyBFcnJvcihcIlNjaGVkdWxlZCBhY3Rpb24gdGhyZXcgZmFsc3kgZXJyb3JcIik7XG4gICAgfVxuICAgIGlmIChzKVxuICAgICAgcmV0dXJuIHRoaXMudW5zdWJzY3JpYmUoKSwgaTtcbiAgfSwgbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICB2YXIgdCA9IHRoaXMsIHIgPSB0LmlkLCBzID0gdC5zY2hlZHVsZXIsIGkgPSBzLmFjdGlvbnM7XG4gICAgICB0aGlzLndvcmsgPSB0aGlzLnN0YXRlID0gdGhpcy5zY2hlZHVsZXIgPSBudWxsLCB0aGlzLnBlbmRpbmcgPSAhMSwgJGUoaSwgdGhpcyksIHIgIT0gbnVsbCAmJiAodGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQocywgciwgbnVsbCkpLCB0aGlzLmRlbGF5ID0gbnVsbCwgZS5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICB9XG4gIH0sIG47XG59KFNvKSwgdnQgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gZShuLCB0KSB7XG4gICAgdCA9PT0gdm9pZCAwICYmICh0ID0gZS5ub3cpLCB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSBuLCB0aGlzLm5vdyA9IHQ7XG4gIH1cbiAgcmV0dXJuIGUucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24obiwgdCwgcikge1xuICAgIHJldHVybiB0ID09PSB2b2lkIDAgJiYgKHQgPSAwKSwgbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLCBuKS5zY2hlZHVsZShyLCB0KTtcbiAgfSwgZS5ub3cgPSBDby5ub3csIGU7XG59KCksIGtvID0gZnVuY3Rpb24oZSkge1xuICBvZShuLCBlKTtcbiAgZnVuY3Rpb24gbih0LCByKSB7XG4gICAgciA9PT0gdm9pZCAwICYmIChyID0gdnQubm93KTtcbiAgICB2YXIgcyA9IGUuY2FsbCh0aGlzLCB0LCByKSB8fCB0aGlzO1xuICAgIHJldHVybiBzLmFjdGlvbnMgPSBbXSwgcy5fYWN0aXZlID0gITEsIHM7XG4gIH1cbiAgcmV0dXJuIG4ucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcy5hY3Rpb25zO1xuICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgIHIucHVzaCh0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHM7XG4gICAgdGhpcy5fYWN0aXZlID0gITA7XG4gICAgZG9cbiAgICAgIGlmIChzID0gdC5leGVjdXRlKHQuc3RhdGUsIHQuZGVsYXkpKVxuICAgICAgICBicmVhaztcbiAgICB3aGlsZSAodCA9IHIuc2hpZnQoKSk7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZSA9ICExLCBzKSB7XG4gICAgICBmb3IgKDsgdCA9IHIuc2hpZnQoKTsgKVxuICAgICAgICB0LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aHJvdyBzO1xuICAgIH1cbiAgfSwgbjtcbn0odnQpLCBBbyA9IG5ldyBrbyhQbyksIElvID0gZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIiAmJiB0eXBlb2YgZSAhPSBcImZ1bmN0aW9uXCI7XG59O1xuZnVuY3Rpb24gUm8oZSkge1xuICByZXR1cm4gRChlID09IG51bGwgPyB2b2lkIDAgOiBlLnRoZW4pO1xufVxuZnVuY3Rpb24gVG8oZSkge1xuICByZXR1cm4gRChlW2x0XSk7XG59XG5mdW5jdGlvbiBGbyhlKSB7XG4gIHJldHVybiBTeW1ib2wuYXN5bmNJdGVyYXRvciAmJiBEKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKTtcbn1cbmZ1bmN0aW9uIE1vKGUpIHtcbiAgcmV0dXJuIG5ldyBUeXBlRXJyb3IoXCJZb3UgcHJvdmlkZWQgXCIgKyAoZSAhPT0gbnVsbCAmJiB0eXBlb2YgZSA9PSBcIm9iamVjdFwiID8gXCJhbiBpbnZhbGlkIG9iamVjdFwiIDogXCInXCIgKyBlICsgXCInXCIpICsgXCIgd2hlcmUgYSBzdHJlYW0gd2FzIGV4cGVjdGVkLiBZb3UgY2FuIHByb3ZpZGUgYW4gT2JzZXJ2YWJsZSwgUHJvbWlzZSwgUmVhZGFibGVTdHJlYW0sIEFycmF5LCBBc3luY0l0ZXJhYmxlLCBvciBJdGVyYWJsZS5cIik7XG59XG5mdW5jdGlvbiBEbygpIHtcbiAgcmV0dXJuIHR5cGVvZiBTeW1ib2wgIT0gXCJmdW5jdGlvblwiIHx8ICFTeW1ib2wuaXRlcmF0b3IgPyBcIkBAaXRlcmF0b3JcIiA6IFN5bWJvbC5pdGVyYXRvcjtcbn1cbnZhciBObyA9IERvKCk7XG5mdW5jdGlvbiBMbyhlKSB7XG4gIHJldHVybiBEKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGVbTm9dKTtcbn1cbmZ1bmN0aW9uIE9vKGUpIHtcbiAgcmV0dXJuIGFvKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHQsIHIsIHMsIGk7XG4gICAgcmV0dXJuIFh0KHRoaXMsIGZ1bmN0aW9uKGEpIHtcbiAgICAgIHN3aXRjaCAoYS5sYWJlbCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgdCA9IGUuZ2V0UmVhZGVyKCksIGEubGFiZWwgPSAxO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgYS50cnlzLnB1c2goWzEsICwgOSwgMTBdKSwgYS5sYWJlbCA9IDI7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICByZXR1cm4gWzQsIHllKHQucmVhZCgpKV07XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gciA9IGEuc2VudCgpLCBzID0gci52YWx1ZSwgaSA9IHIuZG9uZSwgaSA/IFs0LCB5ZSh2b2lkIDApXSA6IFszLCA1XTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBbMiwgYS5zZW50KCldO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgcmV0dXJuIFs0LCB5ZShzKV07XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICByZXR1cm4gWzQsIGEuc2VudCgpXTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHJldHVybiBhLnNlbnQoKSwgWzMsIDJdO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMF07XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICByZXR1cm4gdC5yZWxlYXNlTG9jaygpLCBbN107XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBVbyhlKSB7XG4gIHJldHVybiBEKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGUuZ2V0UmVhZGVyKTtcbn1cbmZ1bmN0aW9uIGpvKGUpIHtcbiAgaWYgKGUgaW5zdGFuY2VvZiBuZSlcbiAgICByZXR1cm4gZTtcbiAgaWYgKGUgIT0gbnVsbCkge1xuICAgIGlmIChUbyhlKSlcbiAgICAgIHJldHVybiB4byhlKTtcbiAgICBpZiAoSW8oZSkpXG4gICAgICByZXR1cm4gJG8oZSk7XG4gICAgaWYgKFJvKGUpKVxuICAgICAgcmV0dXJuIFZvKGUpO1xuICAgIGlmIChGbyhlKSlcbiAgICAgIHJldHVybiBhbihlKTtcbiAgICBpZiAoTG8oZSkpXG4gICAgICByZXR1cm4gR28oZSk7XG4gICAgaWYgKFVvKGUpKVxuICAgICAgcmV0dXJuIHpvKGUpO1xuICB9XG4gIHRocm93IE1vKGUpO1xufVxuZnVuY3Rpb24geG8oZSkge1xuICByZXR1cm4gbmV3IG5lKGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdCA9IGVbbHRdKCk7XG4gICAgaWYgKEQodC5zdWJzY3JpYmUpKVxuICAgICAgcmV0dXJuIHQuc3Vic2NyaWJlKG4pO1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcm92aWRlZCBvYmplY3QgZG9lcyBub3QgY29ycmVjdGx5IGltcGxlbWVudCBTeW1ib2wub2JzZXJ2YWJsZVwiKTtcbiAgfSk7XG59XG5mdW5jdGlvbiAkbyhlKSB7XG4gIHJldHVybiBuZXcgbmUoZnVuY3Rpb24obikge1xuICAgIGZvciAodmFyIHQgPSAwOyB0IDwgZS5sZW5ndGggJiYgIW4uY2xvc2VkOyB0KyspXG4gICAgICBuLm5leHQoZVt0XSk7XG4gICAgbi5jb21wbGV0ZSgpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFZvKGUpIHtcbiAgcmV0dXJuIG5ldyBuZShmdW5jdGlvbihuKSB7XG4gICAgZS50aGVuKGZ1bmN0aW9uKHQpIHtcbiAgICAgIG4uY2xvc2VkIHx8IChuLm5leHQodCksIG4uY29tcGxldGUoKSk7XG4gICAgfSwgZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIG4uZXJyb3IodCk7XG4gICAgfSkudGhlbihudWxsLCBvbik7XG4gIH0pO1xufVxuZnVuY3Rpb24gR28oZSkge1xuICByZXR1cm4gbmV3IG5lKGZ1bmN0aW9uKG4pIHtcbiAgICB2YXIgdCwgcjtcbiAgICB0cnkge1xuICAgICAgZm9yICh2YXIgcyA9IGZlKGUpLCBpID0gcy5uZXh0KCk7ICFpLmRvbmU7IGkgPSBzLm5leHQoKSkge1xuICAgICAgICB2YXIgYSA9IGkudmFsdWU7XG4gICAgICAgIGlmIChuLm5leHQoYSksIG4uY2xvc2VkKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChjKSB7XG4gICAgICB0ID0geyBlcnJvcjogYyB9O1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpICYmICFpLmRvbmUgJiYgKHIgPSBzLnJldHVybikgJiYgci5jYWxsKHMpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKHQpIHRocm93IHQuZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICAgIG4uY29tcGxldGUoKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBhbihlKSB7XG4gIHJldHVybiBuZXcgbmUoZnVuY3Rpb24obikge1xuICAgIHFvKGUsIG4pLmNhdGNoKGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiBuLmVycm9yKHQpO1xuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHpvKGUpIHtcbiAgcmV0dXJuIGFuKE9vKGUpKTtcbn1cbmZ1bmN0aW9uIHFvKGUsIG4pIHtcbiAgdmFyIHQsIHIsIHMsIGk7XG4gIHJldHVybiBpbyh0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGEsIGM7XG4gICAgcmV0dXJuIFh0KHRoaXMsIGZ1bmN0aW9uKGwpIHtcbiAgICAgIHN3aXRjaCAobC5sYWJlbCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgbC50cnlzLnB1c2goWzAsIDUsIDYsIDExXSksIHQgPSBjbyhlKSwgbC5sYWJlbCA9IDE7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICByZXR1cm4gWzQsIHQubmV4dCgpXTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmIChyID0gbC5zZW50KCksICEhci5kb25lKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgIGlmIChhID0gci52YWx1ZSwgbi5uZXh0KGEpLCBuLmNsb3NlZClcbiAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgbC5sYWJlbCA9IDM7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gWzMsIDFdO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMV07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByZXR1cm4gYyA9IGwuc2VudCgpLCBzID0geyBlcnJvcjogYyB9LCBbMywgMTFdO1xuICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgcmV0dXJuIGwudHJ5cy5wdXNoKFs2LCAsIDksIDEwXSksIHIgJiYgIXIuZG9uZSAmJiAoaSA9IHQucmV0dXJuKSA/IFs0LCBpLmNhbGwodCldIDogWzMsIDhdO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgbC5zZW50KCksIGwubGFiZWwgPSA4O1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMF07XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBpZiAocykgdGhyb3cgcy5lcnJvcjtcbiAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIHJldHVybiBbN107XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgcmV0dXJuIG4uY29tcGxldGUoKSwgWzJdO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFlvKGUsIG4sIHQsIHIsIHMpIHtcbiAgciA9PT0gdm9pZCAwICYmIChyID0gMCksIHMgPT09IHZvaWQgMCAmJiAocyA9ICExKTtcbiAgdmFyIGkgPSBuLnNjaGVkdWxlKGZ1bmN0aW9uKCkge1xuICAgIHQoKSwgcyA/IGUuYWRkKHRoaXMuc2NoZWR1bGUobnVsbCwgcikpIDogdGhpcy51bnN1YnNjcmliZSgpO1xuICB9LCByKTtcbiAgaWYgKGUuYWRkKGkpLCAhcylcbiAgICByZXR1cm4gaTtcbn1cbmZ1bmN0aW9uIEJvKGUsIG4pIHtcbiAgdmFyIHQgPSBEKGUpID8gZSA6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBlO1xuICB9LCByID0gZnVuY3Rpb24ocykge1xuICAgIHJldHVybiBzLmVycm9yKHQoKSk7XG4gIH07XG4gIHJldHVybiBuZXcgbmUocik7XG59XG52YXIgSG8gPSBxZShmdW5jdGlvbihlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBlKHRoaXMpLCB0aGlzLm5hbWUgPSBcIkVtcHR5RXJyb3JcIiwgdGhpcy5tZXNzYWdlID0gXCJubyBlbGVtZW50cyBpbiBzZXF1ZW5jZVwiO1xuICB9O1xufSk7XG5mdW5jdGlvbiBKbyhlLCBuKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LCByKSB7XG4gICAgdmFyIHMgPSAhMSwgaTtcbiAgICBlLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBmdW5jdGlvbihhKSB7XG4gICAgICAgIGkgPSBhLCBzID0gITA7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IHIsXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHMgPyB0KGkpIDogcihuZXcgSG8oKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gS28oZSkge1xuICByZXR1cm4gZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGUpO1xufVxudmFyIFpvID0gcWUoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHQgPT09IHZvaWQgMCAmJiAodCA9IG51bGwpLCBlKHRoaXMpLCB0aGlzLm1lc3NhZ2UgPSBcIlRpbWVvdXQgaGFzIG9jY3VycmVkXCIsIHRoaXMubmFtZSA9IFwiVGltZW91dEVycm9yXCIsIHRoaXMuaW5mbyA9IHQ7XG4gIH07XG59KTtcbmZ1bmN0aW9uIFdvKGUsIG4pIHtcbiAgdmFyIHQgPSBLbyhlKSA/IHsgZmlyc3Q6IGUgfSA6IHR5cGVvZiBlID09IFwibnVtYmVyXCIgPyB7IGVhY2g6IGUgfSA6IGUsIHIgPSB0LmZpcnN0LCBzID0gdC5lYWNoLCBpID0gdC53aXRoLCBhID0gaSA9PT0gdm9pZCAwID8gUW8gOiBpLCBjID0gdC5zY2hlZHVsZXIsIGwgPSBjID09PSB2b2lkIDAgPyBBbyA6IGMsIHUgPSB0Lm1ldGEsIGQgPSB1ID09PSB2b2lkIDAgPyBudWxsIDogdTtcbiAgaWYgKHIgPT0gbnVsbCAmJiBzID09IG51bGwpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk5vIHRpbWVvdXQgcHJvdmlkZWQuXCIpO1xuICByZXR1cm4gd28oZnVuY3Rpb24oXywgbSkge1xuICAgIHZhciB5LCBmLCBoID0gbnVsbCwgdiA9IDAsIGIgPSBmdW5jdGlvbihFKSB7XG4gICAgICBmID0gWW8obSwgbCwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgeS51bnN1YnNjcmliZSgpLCBqbyhhKHtcbiAgICAgICAgICAgIG1ldGE6IGQsXG4gICAgICAgICAgICBsYXN0VmFsdWU6IGgsXG4gICAgICAgICAgICBzZWVuOiB2XG4gICAgICAgICAgfSkpLnN1YnNjcmliZShtKTtcbiAgICAgICAgfSBjYXRjaCAoaykge1xuICAgICAgICAgIG0uZXJyb3Ioayk7XG4gICAgICAgIH1cbiAgICAgIH0sIEUpO1xuICAgIH07XG4gICAgeSA9IF8uc3Vic2NyaWJlKGJvKG0sIGZ1bmN0aW9uKEUpIHtcbiAgICAgIGYgPT0gbnVsbCB8fCBmLnVuc3Vic2NyaWJlKCksIHYrKywgbS5uZXh0KGggPSBFKSwgcyA+IDAgJiYgYihzKTtcbiAgICB9LCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24oKSB7XG4gICAgICBmICE9IG51bGwgJiYgZi5jbG9zZWQgfHwgZiA9PSBudWxsIHx8IGYudW5zdWJzY3JpYmUoKSwgaCA9IG51bGw7XG4gICAgfSkpLCAhdiAmJiBiKHIgIT0gbnVsbCA/IHR5cGVvZiByID09IFwibnVtYmVyXCIgPyByIDogK3IgLSBsLm5vdygpIDogcyk7XG4gIH0pO1xufVxuZnVuY3Rpb24gUW8oZSkge1xuICB0aHJvdyBuZXcgWm8oZSk7XG59XG5jbGFzcyBTZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0ID0gKG4pID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcInN1Y2Nlc3NcIiwgaXNTdWNjZXNzOiAhMCwgbG9hZGVkVmFsdWU6IG4gfSwgdGhpcy5fc3ViamVjdC5uZXh0KG4pLCB0aGlzLl9zdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgfSwgdGhpcy50aHJvdyA9IChuLCB0KSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2FkZWRPbmNlIGlzIGFscmVhZHkgaW4gc3VjY2VzcyBzdGF0ZVwiKTtcbiAgICAgIHRoaXMuX2N1cnJlbnQgPSB7IHN0YXR1czogXCJlcnJvclwiLCBpc1N1Y2Nlc3M6ICExLCBlcnJvcjogbiwgZXJyTXNnOiB0IH0sIHRoaXMuX3N1YmplY3QuZXJyb3Iobik7XG4gICAgfSwgdGhpcy5nZXRWYWx1ZUlmTG9hZGVkRWxzZSA9IChuKSA9PiB0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIgPyB0aGlzLl9jdXJyZW50LmxvYWRlZFZhbHVlIDogbiwgdGhpcy5zdWJzY3JpYmUgPSAobikgPT4ge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICBuKHRoaXMuX2N1cnJlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJlcnJvclwiICYmIG4odGhpcy5fY3VycmVudCk7XG4gICAgICBjb25zdCB0ID0gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcInN1Y2Nlc3NcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGUgKG5leHQpOiBwbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSBfY3VycmVudCBiZWZvcmUgdGhlIHN1YmplY3RcIik7XG4gICAgICAgICAgbih0aGlzLl9jdXJyZW50KSwgdC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyAhPT0gXCJlcnJvclwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZSAoZXJyb3IpOiBwbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSBfY3VycmVudCBiZWZvcmUgdGhlIHN1YmplY3RcIik7XG4gICAgICAgICAgbih0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgdGhpcy53YWl0Rm9yTG9hZCA9IChuKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2N1cnJlbnQubG9hZGVkVmFsdWUpO1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcImVycm9yXCIpIHJldHVybiBQcm9taXNlLnJlamVjdCh0aGlzLl9jdXJyZW50LmVycm9yKTtcbiAgICAgIHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcImluaXRpYWxcIiAmJiBZZSh0aGlzLl9jdXJyZW50KTtcbiAgICAgIGNvbnN0IHQgPSB7XG4gICAgICAgIGZpcnN0OiBuLnRpbWVvdXRTZWMgKiAxZTMsXG4gICAgICAgIHdpdGg6ICgpID0+IEJvKCgpID0+IG5ldyBFcnJvcihuLnRpbWVvdXRFcnJNc2cpKVxuICAgICAgfTtcbiAgICAgIHJldHVybiBKbyh0aGlzLl9zdWJqZWN0LnBpcGUoV28odCkpKTtcbiAgICB9LCB0aGlzLl9jdXJyZW50ID0geyBzdGF0dXM6IFwiaW5pdGlhbFwiLCBpc1N1Y2Nlc3M6ICExIH0sIHRoaXMuX3N1YmplY3QgPSBuZXcgc24oKTtcbiAgfVxuICBnZXQgY3VycmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudDtcbiAgfVxufVxuY29uc3QgRXQgPSB6JDEuZW51bShbXCJkZXZcIiwgXCJzdGdcIiwgXCJwcm9kXCJdKSwgWG8gPSB7XG4gIHByb2Q6IFwiaHR0cHM6Ly9jb25udG8uZ2V0b3BlbnBheS5jb21cIixcbiAgc3RnOiBcImh0dHBzOi8vY29ubnRvLm9wZW5wYXlzdGFnaW5nLmNvbVwiLFxuICBkZXY6IFwiaHR0cDovL2xvY2FsaG9zdDo4MDAwXCJcbn0sIGVzID0gKGUpID0+IFhvW2VdLCBYZSA9IHt9LCBjbiA9IGFzeW5jIChlKSA9PiB7XG4gIGlmIChYZVtlXSlcbiAgICByZXR1cm4gWGVbZV07XG4gIHRyeSB7XG4gICAgY29uc3QgbiA9IGF3YWl0IGZldGNoKG5ldyBVUkwoXCIvaGVhbHRoL2Vudmlyb25tZW50XCIsIGUpKS50aGVuKChyKSA9PiByLmpzb24oKSksIHQgPSBFdC5wYXJzZShuLmVudmlyb25tZW50KTtcbiAgICByZXR1cm4gWGVbZV0gPSB0LCB0O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gRXQuVmFsdWVzLnByb2Q7XG4gIH1cbn07XG5mdW5jdGlvbiBZZShlKSB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIGNhc2U6ICR7ZX1gKTtcbn1cbmNvbnN0IGxuID0gKGUsIG4pID0+IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhlKS5maWx0ZXIoKFt0XSkgPT4gIW4uaW5jbHVkZXModCkpKSwgQSA9ICgpID0+IHtcbiAgaWYgKCEodHlwZW9mIHdpbmRvdyA+IFwidVwiKSlcbiAgICByZXR1cm4gd2luZG93O1xufSwgb3QgPSBuZXcgU2UoKSwgQ3QgPSBcIm9wX21ldHJpY3NfcXVldWVcIiwgdHMgPSAzLCBucyA9IDMsIHJzID0gMWUzLCB7IGxvZ19fOiBOZSB9ID0gUChcIm9wLW1ldHJpY3NcIik7XG5jbGFzcyBvcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHZhciBuLCB0O1xuICAgIHRoaXMucXVldWUgPSBbXSwgdGhpcy5wcm9jZXNzaW5nUXVldWUgPSAhMSwgdGhpcy5iYXRjaFRpbWVvdXQgPSBudWxsLCB0aGlzLmxhc3RFdmVudFRpbWVzdGFtcCA9IDAsIHRoaXMub2ZmbGluZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgTmUoXCJOZXR3b3JrIG9mZmxpbmUsIG1ldHJpY3Mgd2lsbCBiZSBxdWV1ZWRcIiksIHRoaXMuY2FuY2VsQmF0Y2hQcm9jZXNzaW5nKCk7XG4gICAgfSwgdGhpcy5vbmxpbmVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgIE5lKFwiTmV0d29yayBvbmxpbmUsIHByb2Nlc3NpbmcgbWV0cmljcyBxdWV1ZVwiKSwgdGhpcy5wcm9jZXNzUXVldWUoKTtcbiAgICB9LCB0aGlzLmxvYWRRdWV1ZUZyb21TdG9yYWdlKCksIChuID0gQSgpKSA9PSBudWxsIHx8IG4uYWRkRXZlbnRMaXN0ZW5lcihcIm9mZmxpbmVcIiwgdGhpcy5vZmZsaW5lTGlzdGVuZXIpLCAodCA9IEEoKSkgPT0gbnVsbCB8fCB0LmFkZEV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIiwgdGhpcy5vbmxpbmVMaXN0ZW5lcik7XG4gIH1cbiAgYWRkRXZlbnQobiwgdCwgcikge1xuICAgIGNvbnN0IHMgPSB7XG4gICAgICBldmVudE5hbWU6IG4sXG4gICAgICBwcm9wZXJ0aWVzOiB0IHx8IHt9LFxuICAgICAgY29udGV4dFByb3BlcnRpZXM6IHIgfHwge30sXG4gICAgICBub25jZTogdjQoKSxcbiAgICAgIHRpbWVzdGFtcDogcGVyZm9ybWFuY2Uubm93KCksXG4gICAgICBkYXRldGltZTogKC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpKS50b0lTT1N0cmluZygpLFxuICAgICAgYXR0ZW1wdENvdW50OiAwLFxuICAgICAgdGltZURpZmZGcm9tUHJldmlvdXNFdmVudDogdGhpcy5sYXN0RXZlbnRUaW1lc3RhbXAgPyBwZXJmb3JtYW5jZS5ub3coKSAtIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wIDogMFxuICAgIH07XG4gICAgdGhpcy5sYXN0RXZlbnRUaW1lc3RhbXAgPSBzLnRpbWVzdGFtcCwgdGhpcy5xdWV1ZS5wdXNoKHMpLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpLCB0aGlzLnNjaGVkdWxlQmF0Y2hQcm9jZXNzaW5nKCk7XG4gIH1cbiAgbG9hZFF1ZXVlRnJvbVN0b3JhZ2UoKSB7XG4gICAgdmFyIG4sIHQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHIgPSAodCA9IChuID0gQSgpKSA9PSBudWxsID8gdm9pZCAwIDogbi5sb2NhbFN0b3JhZ2UpID09IG51bGwgPyB2b2lkIDAgOiB0LmdldEl0ZW0oQ3QpO1xuICAgICAgciAmJiAodGhpcy5xdWV1ZSA9IEpTT04ucGFyc2UocikpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5xdWV1ZSA9IFtdLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpO1xuICAgIH1cbiAgfVxuICBzYXZlUXVldWVUb1N0b3JhZ2UoKSB7XG4gICAgdmFyIG47XG4gICAgKG4gPSBBKCkpID09IG51bGwgfHwgbi5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShDdCwgSlNPTi5zdHJpbmdpZnkodGhpcy5xdWV1ZSkpO1xuICB9XG4gIHNjaGVkdWxlQmF0Y2hQcm9jZXNzaW5nKCkge1xuICAgIGNvbnN0IG4gPSBBKCk7XG4gICAgbiAmJiBuYXZpZ2F0b3Iub25MaW5lICYmICF0aGlzLnByb2Nlc3NpbmdRdWV1ZSAmJiB0aGlzLnF1ZXVlLmxlbmd0aCA+IDAgJiYgIXRoaXMuYmF0Y2hUaW1lb3V0ICYmICh0aGlzLmJhdGNoVGltZW91dCA9IG4uc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmJhdGNoVGltZW91dCA9IG51bGwsIHRoaXMucHJvY2Vzc1F1ZXVlKCk7XG4gICAgfSwgcnMpKTtcbiAgfVxuICBjYW5jZWxCYXRjaFByb2Nlc3NpbmcoKSB7XG4gICAgdmFyIG47XG4gICAgdGhpcy5iYXRjaFRpbWVvdXQgJiYgKChuID0gQSgpKSA9PSBudWxsIHx8IG4uY2xlYXJUaW1lb3V0KHRoaXMuYmF0Y2hUaW1lb3V0KSwgdGhpcy5iYXRjaFRpbWVvdXQgPSBudWxsKSwgdGhpcy5wcm9jZXNzaW5nUXVldWUgPSAhMTtcbiAgfVxuICBwcm9jZXNzUXVldWUoKSB7XG4gICAgIW5hdmlnYXRvci5vbkxpbmUgfHwgdGhpcy5wcm9jZXNzaW5nUXVldWUgfHwgdGhpcy5xdWV1ZS5sZW5ndGggPT09IDAgfHwgKHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gITAsIHRoaXMuc2VuZEJhdGNoKCkuZmluYWxseSgoKSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9ICExLCB0aGlzLnF1ZXVlLmxlbmd0aCA+IDAgJiYgdGhpcy5zY2hlZHVsZUJhdGNoUHJvY2Vzc2luZygpO1xuICAgIH0pKTtcbiAgfVxuICBhc3luYyBzZW5kQmF0Y2goKSB7XG4gICAgaWYgKHRoaXMucXVldWUubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgbiA9IG90LmdldFZhbHVlSWZMb2FkZWRFbHNlKHZvaWQgMCk7XG4gICAgaWYgKCFuKSB7XG4gICAgICBOZShcIk1ldHJpY3MgY29udGV4dCBub3QgYXZhaWxhYmxlLCB3aWxsIHJldHJ5IGxhdGVyXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0ID0gdGhpcy5xdWV1ZS5zbGljZSgwLCBucyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHIgPSB7XG4gICAgICAgIGV2ZW50czogdC5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgZXZlbnRfbmFtZTogYy5ldmVudE5hbWUsXG4gICAgICAgICAgZGV2aWNlX3Rva2VuOiBuLmRldmljZVRva2VuLFxuICAgICAgICAgIGNvbnRleHRfcHJvcGVydGllczoge1xuICAgICAgICAgICAgLi4ubixcbiAgICAgICAgICAgIC4uLmMuY29udGV4dFByb3BlcnRpZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG5vbmNlOiBjLm5vbmNlLFxuICAgICAgICAgICAgZGF0ZXRpbWU6IGMuZGF0ZXRpbWUsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IGMudGltZXN0YW1wLFxuICAgICAgICAgICAgdGltZV9kaWZmX2Zyb21fcHJldmlvdXNfZXZlbnQ6IGMudGltZURpZmZGcm9tUHJldmlvdXNFdmVudCxcbiAgICAgICAgICAgIGNoZWNrb3V0X3NlY3VyZV90b2tlbjogbi5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgICAgLi4uYy5wcm9wZXJ0aWVzXG4gICAgICAgICAgfVxuICAgICAgICB9KSlcbiAgICAgIH0sIHMgPSBlcyhuLmVudmlyb25tZW50KSwgaSA9IG5ldyBVUkwoXCIvbWV0cmljcy9wdWJsaWMvY2FwdHVyZVwiLCBzKTtcbiAgICAgIChhd2FpdCBmZXRjaChpLnRvU3RyaW5nKCksIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHIpXG4gICAgICB9KSkub2sgPyAodGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuc2xpY2UodC5sZW5ndGgpLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpKSA6IHRoaXMuaGFuZGxlRmFpbGVkQmF0Y2godCk7XG4gICAgfSBjYXRjaCAocikge1xuICAgICAgTmUoXCJFcnJvciBzZW5kaW5nIG1ldHJpY3MgYmF0Y2g6XCIsIHIpLCB0aGlzLmhhbmRsZUZhaWxlZEJhdGNoKHQpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVGYWlsZWRCYXRjaChuKSB7XG4gICAgbi5mb3JFYWNoKChyKSA9PiB7XG4gICAgICByLmF0dGVtcHRDb3VudCsrO1xuICAgIH0pO1xuICAgIGNvbnN0IHQgPSBuLmZpbHRlcigocikgPT4gci5hdHRlbXB0Q291bnQgPCB0cyk7XG4gICAgdGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuc2xpY2Uobi5sZW5ndGgpLCB0aGlzLnF1ZXVlID0gWy4uLnQsIC4uLnRoaXMucXVldWVdLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpO1xuICB9XG4gIGNsZWFudXAoKSB7XG4gICAgdmFyIG4sIHQ7XG4gICAgKG4gPSBBKCkpID09IG51bGwgfHwgbi5yZW1vdmVFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCB0aGlzLm9mZmxpbmVMaXN0ZW5lciksICh0ID0gQSgpKSA9PSBudWxsIHx8IHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCB0aGlzLm9ubGluZUxpc3RlbmVyKSwgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgfVxufVxuY29uc3QgdW4gPSBuZXcgb3MoKSwgZyA9IChlLCBuLCB0KSA9PiB7XG4gIHVuLmFkZEV2ZW50KGUsIG4sIHQpO1xufSwgZG4gPSAoZSkgPT4ge1xuICBjb25zdCBuID0gVihlLnJlYXNvbik7XG4gIGcoXCJ1bmhhbmRsZWRfcmVqZWN0aW9uX2Vycm9yXCIsIHtcbiAgICBlcnJvcl9tZXNzYWdlOiBuLFxuICAgIGVycm9yX25hbWU6IGUucmVhc29uXG4gIH0pO1xufSwgcG4gPSAoZSkgPT4ge1xuICB2YXIgdCwgcjtcbiAgY29uc3QgbiA9IFYoZS5lcnJvcik7XG4gIGcoXCJ1bmNhdWdodF9lcnJvclwiLCB7XG4gICAgZXJyb3JfbWVzc2FnZTogbixcbiAgICBlcnJvcl9uYW1lOiAodCA9IGUuZXJyb3IpID09IG51bGwgPyB2b2lkIDAgOiB0Lm5hbWUsXG4gICAgZXJyb3Jfc3RhY2s6IChyID0gZS5lcnJvcikgPT0gbnVsbCA/IHZvaWQgMCA6IHIuc3RhY2ssXG4gICAgZmlsZV9uYW1lOiBlLmZpbGVuYW1lLFxuICAgIGxpbmVfbnVtYmVyOiBlLmxpbmVubyxcbiAgICBjb2x1bW5fbnVtYmVyOiBlLmNvbG5vXG4gIH0pO1xufSwgc3MgPSAoKSA9PiB7XG4gIHZhciBlLCBuO1xuICAoZSA9IEEoKSkgPT0gbnVsbCB8fCBlLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBwbiksIChuID0gQSgpKSA9PSBudWxsIHx8IG4uYWRkRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLCBkbik7XG59LCBpcyA9ICgpID0+IHtcbiAgdmFyIGUsIG47XG4gIChlID0gQSgpKSA9PSBudWxsIHx8IGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHBuKSwgKG4gPSBBKCkpID09IG51bGwgfHwgbi5yZW1vdmVFdmVudExpc3RlbmVyKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIsIGRuKTtcbn07XG52YXIgVXQ7XG4oVXQgPSBBKCkpID09IG51bGwgfHwgVXQuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCAoKSA9PiB7XG4gIHVuLnByb2Nlc3NRdWV1ZSgpO1xufSk7XG5jbGFzcyBtbiBleHRlbmRzIHNvIHtcbiAgY29uc3RydWN0b3Iobikge1xuICAgIGNvbnN0IHQgPSBgJHtuLm1lc3NhZ2V9YDtcbiAgICBzdXBlcih0KSwgdGhpcy5yZXNwb25zZSA9IG47XG4gIH1cbiAgZ2V0IG9yaWdpbmFsRXJyb3JNZXNzYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlLm1lc3NhZ2U7XG4gIH1cbn1cbmNvbnN0IEwgPSBhc3luYyAoZSwgbiwgdCwgcikgPT4ge1xuICByICYmIGcociwge1xuICAgIC4uLm5cbiAgfSk7XG4gIGNvbnN0IHMgPSBhd2FpdCBlLnNlbmQobik7XG4gIGlmIChjcyhzKSlcbiAgICB0aHJvdyBuZXcgbW4ocyk7XG4gIGlmICghYXMocywgdCkpIHtcbiAgICBjb25zdCBpID0gdC5zYWZlUGFyc2Uocyk7XG4gICAgdGhyb3cgaS5zdWNjZXNzID8gbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZVwiKSA6IChjb25zb2xlLmVycm9yKFwiT0pTIHF1ZXJ5QXBpIGdvdCBhIHNjaGVtYSBlcnJvci4gRXhwZWN0ZWQgc2NoZW1hOlwiLCB0LCBcIkFjdHVhbDpcIiwgcyksIGkuZXJyb3IpO1xuICB9XG4gIHJldHVybiByICYmIGcociwge1xuICAgIC4uLnNcbiAgfSksIHM7XG59LCBhcyA9IChlLCBuKSA9PiBuLnNhZmVQYXJzZShlKS5zdWNjZXNzLCBjcyA9IChlKSA9PiBPci5zYWZlUGFyc2UoZSkuc3VjY2VzcywgbHMgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChlLCB7IHR5cGU6IFwiZ2V0X2NoZWNrb3V0X3ByZXZpZXdcIiwgcGF5bG9hZDogbiB9LCBLdCksIE4gPSBhc3luYyAoZSkgPT4gYXdhaXQgTChlLCB7IHR5cGU6IFwiZ2V0X3ByZWZpbGxcIiwgcGF5bG9hZDoge30gfSwgWnQpLCBnZSA9IGFzeW5jIChlLCBuKSA9PiBhd2FpdCBMKFxuICBlLFxuICB7IHR5cGU6IFwidjJfc3RhcnRfcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IG4gfSxcbiAgUXQsXG4gIFwic3RhcnRfcGF5bWVudF9mbG93XCJcbiksIHVzID0gYXN5bmMgKGUsIG4pID0+IGF3YWl0IEwoXG4gIGUsXG4gIHsgdHlwZTogXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX2NjXCIsIHBheWxvYWQ6IG4gfSxcbiAgV3IsXG4gIFwic3RhcnRfcGF5bWVudF9mbG93X2Zvcl9jY1wiXG4pLCBkcyA9IGFzeW5jIChlLCBuKSA9PiB7XG4gIGcoXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX3ByXCIsIHtcbiAgICAuLi5uXG4gIH0pO1xuICBjb25zdCB0ID0gYXdhaXQgTChlLCB7IHR5cGU6IFwic3RhcnRfcGF5bWVudF9mbG93X2Zvcl9wclwiLCBwYXlsb2FkOiBuIH0sIFF0KTtcbiAgcmV0dXJuIGcoXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX3ByX3Jlc3VsdFwiLCB7XG4gICAgLi4udFxuICB9KSwgdDtcbn0sIFkgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChcbiAgZSxcbiAgeyB0eXBlOiBcImNvbmZpcm1fcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IG4gfSxcbiAgQ3IsXG4gIFwiY29uZmlybV9wYXltZW50X2Zsb3dcIlxuKSwgcHMgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChcbiAgZSxcbiAgeyB0eXBlOiBcImZpbmFsaXplX3NldHVwX3BheW1lbnRfbWV0aG9kXCIsIHBheWxvYWQ6IG4gfSxcbiAgV3QsXG4gIFwiZmluYWxpemVfc2V0dXBfcGF5bWVudF9tZXRob2RcIlxuKSwgbXMgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChcbiAgZSxcbiAgeyB0eXBlOiBcImNoZWNrX2lmX3BvcHVwX3dpbmRvd192ZXJpZmllZFwiLCBwYXlsb2FkOiBuIH0sXG4gIEVyLFxuICBcImNoZWNrX2lmX3BvcHVwX3dpbmRvd192ZXJpZmllZFwiXG4pLCB5cyA9IGFzeW5jIChlLCBuLCB0KSA9PiB7XG4gIGNvbnN0IHIgPSBhd2FpdCBscyhlLCB7XG4gICAgc2VjdXJlX3Rva2VuOiBuLFxuICAgIHByb21vdGlvbl9jb2RlOiB0XG4gIH0pLCBzID0gbmV3IFNldChyLnByZXZpZXcuaW52b2ljZXMubWFwKChjKSA9PiBjLmN1cnJlbmN5KSk7XG4gIGlmIChzLnNpemUgIT09IDEpXG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBleGFjdGx5IG9uZSBjdXJyZW5jeSwgZ290ICR7cy5zaXplfWApO1xuICBjb25zdCBpID0gcy52YWx1ZXMoKS5uZXh0KCkudmFsdWUgPz8gXCJ1c2RcIiwgYSA9IHRvKHIucHJldmlldy5pbnZvaWNlcy5tYXAoKGMpID0+IGMucmVtYWluaW5nX2Ftb3VudF9hdG9tKSk7XG4gIHJldHVybiB7XG4gICAgY3VycmVuY3k6IGksXG4gICAgYW1vdW50QXRvbTogYVxuICB9O1xufSwgd2UgPSBhc3luYyAoZSwgbiwgdCwgcikgPT4ge1xuICBpZiAodClcbiAgICByZXR1cm4geyBhbW91bnRBdG9tOiAwLCBjdXJyZW5jeTogXCJ1c2RcIiB9O1xuICB7XG4gICAgciA9IHIgfHwgdm9pZCAwO1xuICAgIGNvbnN0IHMgPSBhd2FpdCB5cyhlLCBuLCByKTtcbiAgICByZXR1cm4geyBhbW91bnRBdG9tOiBzLmFtb3VudEF0b20sIGN1cnJlbmN5OiBzLmN1cnJlbmN5IH07XG4gIH1cbn0sIGZzID0gYXN5bmMgKGUsIG4pID0+IHtcbiAgaWYgKGUuc2l6ZSA9PT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBDREUgY29ubmVjdGlvbnMgZm91bmRcIik7XG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBBcnJheS5mcm9tKGUudmFsdWVzKCkpLm1hcChcbiAgICAgIChyKSA9PiBMKHIsIHsgdHlwZTogXCJ0b2tlbml6ZV9jYXJkXCIsIHBheWxvYWQ6IG4gfSwgd3IpXG4gICAgKVxuICApO1xufSwgU3QgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChcbiAgZSxcbiAgeyB0eXBlOiBcImNoZWNrb3V0X2NhcmRfZWxlbWVudHNcIiwgcGF5bG9hZDogbiB9LFxuICBpdCxcbiAgXCJjaGVja291dF9jYXJkX2VsZW1lbnRzXCJcbiksIF9zID0gYXN5bmMgKGUsIG4pID0+IGF3YWl0IEwoZSwgeyB0eXBlOiBcInNldHVwX3BheW1lbnRfbWV0aG9kXCIsIHBheWxvYWQ6IG4gfSwgV3QsIFwic2V0dXBfY2hlY2tvdXRcIiksIHV0ID0gYXN5bmMgKGUsIG4pID0+IGF3YWl0IEwoZSwgeyB0eXBlOiBcImNoZWNrb3V0XCIsIHBheWxvYWQ6IG4gfSwgaXQsIFwicGVyZm9ybV9jaGVja291dFwiKSwgeW4gPSAxZTMsIGhzID0gYXN5bmMgKGUsIG4pID0+IHtcbiAgY29uc29sZS5sb2cobik7XG4gIGNvbnN0IHIgPSBhd2FpdCBjb25uZWN0VG9DaGlsZCh7XG4gICAgaWZyYW1lOiBlLFxuICAgIGRlYnVnOiAhMCxcbiAgICB0aW1lb3V0OiB5bixcbiAgICBjaGlsZE9yaWdpbjogXCIqXCJcbiAgICAvLyBUT0RPOiB1c2Ugd2l0aCBwcm9wZXIgY2hpbGRPcmlnaW5cbiAgfSkucHJvbWlzZSwgcyA9IGF3YWl0IEwociwgeyB0eXBlOiBcInBpbmctM2RzLXN0YXR1c1wiIH0sIGJyKTtcbiAgcmV0dXJuIGNvbnNvbGUubG9nKFwi8J+foiBDREUgY29ubmVjdGlvbiBzdWNjZXNzZnVsISBTdG9wcGluZyBwb2xsaW5nLi4uIFJlc3VsdDpcIiwgcyksIHM7XG59LCBkdCA9IGFzeW5jIChlLCBuKSA9PiBhd2FpdCBMKFxuICBlLFxuICB7IHR5cGU6IFwicHJlcGFyZV9wYXltZW50X2Zsb3dcIiwgcGF5bG9hZDogbiB9LFxuICBYcixcbiAgXCJwcmVwYXJlX3BheW1lbnRfZmxvd1wiXG4pLCBmbiA9IGFzeW5jIChlLCBuKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChhd2FpdCBMKFxuICAgICAgZSxcbiAgICAgIHsgdHlwZTogXCJnZXRfc3RhbmRhcmRpemVkX2Vycm9yX2NvZGVcIiwgcGF5bG9hZDogeyBtZXNzYWdlOiBuIH0gfSxcbiAgICAgIFFyXG4gICAgKSkuZXJyb3JfY29kZTtcbiAgfSBjYXRjaCAodCkge1xuICAgIHJldHVybiBjb25zb2xlLmVycm9yKFwiW2NkZS1jbGllbnRdIEVycm9yIGR1cmluZyBnZXRTdGFuZGFyZGl6ZWRFcnJvckNvZGU6XCIsIFYodCkpLCBcIlBBWU1FTlRfRkFJTEVEX0dFTkVSSUNcIjtcbiAgfVxufSwgZ3MgPSBhc3luYyAoZSwgbikgPT4gYXdhaXQgTChcbiAgZSxcbiAgeyB0eXBlOiBcInNldF91c2VyX2RldmljZV90b2tlblwiLCBwYXlsb2FkOiB7IGRldmljZV90b2tlbjogbiB9IH0sXG4gIGVvXG4pLCBCID0geiQxLmVudW0oW1wic3RyaXBlXCIsIFwiYWlyd2FsbGV4XCIsIFwiYXV0aG9yaXplX25ldFwiXSk7XG5CLkVudW0uc3RyaXBlO1xuY29uc3QgX24gPSAoe1xuICBzY3JpcHRJZDogZSxcbiAgc3JjOiBuLFxuICBjaGVja0xvYWRlZEZuOiB0XG59KSA9PiB7XG4gIGNvbnN0IHIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocywgaSkgPT4ge1xuICAgIGxldCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICBhLnNyYyA9IG4sIGEuaWQgPSBlLCBhLmFzeW5jID0gITA7XG4gICAgY29uc3QgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO1xuICAgIHQoKSA/IHMoKSA6IGMgPyBhID0gYyA6IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSksIGEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgIFwibG9hZFwiLFxuICAgICAgKCkgPT4ge1xuICAgICAgICByLmFib3J0KCksIHMoKTtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogci5zaWduYWwgfVxuICAgICksIGEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgIFwiZXJyb3JcIixcbiAgICAgICgpID0+IHtcbiAgICAgICAgci5hYm9ydCgpLCBpKFwiRmFpbGVkIHRvIGxvYWQgdGhlIHNjcmlwdFwiKTtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogci5zaWduYWwgfVxuICAgICk7XG4gIH0pO1xufSwgaG4gPSAoKSA9PiBfbih7XG4gIHNjcmlwdElkOiBcIl9fb3BfaW50ZXJuYWxfYXBwbGVfcGF5X3Nka1wiLFxuICBzcmM6IFwiaHR0cHM6Ly9hcHBsZXBheS5jZG4tYXBwbGUuY29tL2pzYXBpLzEubGF0ZXN0L2FwcGxlLXBheS1zZGsuanNcIixcbiAgY2hlY2tMb2FkZWRGbjogKCkgPT4gISF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uIHx8ICEhd2luZG93LkFwcGxlUGF5U0RLXG59KSwgZ24gPSAoZSwgbikgPT4ge1xuICBjb25zdCB0ID0gbi50b2tlbi5wYXltZW50TWV0aG9kLmJpbGxpbmdDb250YWN0LCByID0gbi5iaWxsaW5nQ29udGFjdCwgcyA9IG4uc2hpcHBpbmdDb250YWN0LCBpID0geyAuLi5lIH07XG4gIGlmICh0IHx8IHIgfHwgcykge1xuICAgIGlbcC5FTUFJTF0gPSBpW3AuRU1BSUxdIHx8ICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LmVtYWlsQWRkcmVzcykgfHwgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZW1haWxBZGRyZXNzKSB8fCAocyA9PSBudWxsID8gdm9pZCAwIDogcy5lbWFpbEFkZHJlc3MpIHx8IFwib3BfdW5maWxsZWRAZW1haWwuY29tXCIsIGlbcC5DT1VOVFJZXSA9IGlbcC5DT1VOVFJZXSB8fCAodCA9PSBudWxsID8gdm9pZCAwIDogdC5jb3VudHJ5Q29kZSkgfHwgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuY291bnRyeUNvZGUpIHx8IChzID09IG51bGwgPyB2b2lkIDAgOiBzLmNvdW50cnlDb2RlKSB8fCBcIlVTXCIsIGlbcC5aSVBfQ09ERV0gPSBpW3AuWklQX0NPREVdIHx8ICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LnBvc3RhbENvZGUpIHx8IChyID09IG51bGwgPyB2b2lkIDAgOiByLnBvc3RhbENvZGUpIHx8IChzID09IG51bGwgPyB2b2lkIDAgOiBzLnBvc3RhbENvZGUpIHx8IFwiMDAwMDBcIjtcbiAgICBjb25zdCBhID0gaVtwLkZJUlNUX05BTUVdIHx8ICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LmdpdmVuTmFtZSkgfHwgKHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuZ2l2ZW5OYW1lKSB8fCAocyA9PSBudWxsID8gdm9pZCAwIDogcy5naXZlbk5hbWUpIHx8IFwiXCIsIGMgPSBpW3AuTEFTVF9OQU1FXSB8fCAodCA9PSBudWxsID8gdm9pZCAwIDogdC5mYW1pbHlOYW1lKSB8fCAociA9PSBudWxsID8gdm9pZCAwIDogci5mYW1pbHlOYW1lKSB8fCAocyA9PSBudWxsID8gdm9pZCAwIDogcy5mYW1pbHlOYW1lKSB8fCBcIlwiO1xuICAgIGEgfHwgYyA/IChpW3AuRklSU1RfTkFNRV0gPSBhLCBpW3AuTEFTVF9OQU1FXSA9IGMpIDogKGlbcC5GSVJTVF9OQU1FXSA9IFwiX09QX1VOS05PV05cIiwgaVtwLkxBU1RfTkFNRV0gPSBcIlwiKTtcbiAgfVxuICByZXR1cm4gaTtcbn07XG56JDEub2JqZWN0KHtcbiAgZGF0YTogeiQxLm9iamVjdCh7XG4gICAgbWVzc2FnZUhlYWRlcnM6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICAgIGVycm9yczogeiQxLmFycmF5KHokMS5hbnkoKSksXG4gICAgbWVzc2FnZVR5cGU6IHokMS5zdHJpbmcoKSxcbiAgICBtZXNzYWdlQm9keTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSlcbiAgfSksXG4gIG9yaWdpbjogeiQxLmxpdGVyYWwoXCJodHRwczovL2FwcGxlcGF5LmNkbi1hcHBsZS5jb21cIilcbn0pO1xuY29uc3Qgd3MgPSAoe1xuICB0b3RhbDogZSxcbiAgcHJlZmlsbDogblxufSkgPT4ge1xuICB2YXIgcjtcbiAgaWYgKG4ubW9kZSA9PT0gXCJzZXR1cFwiKVxuICAgIHJldHVybiB7XG4gICAgICBwYXltZW50RGVzY3JpcHRpb246IFwiU2V0dXAgcmVjdXJyaW5nIHBheW1lbnRcIixcbiAgICAgIHJlZ3VsYXJCaWxsaW5nOiB7XG4gICAgICAgIGFtb3VudDogZS5hbW91bnQsXG4gICAgICAgIGxhYmVsOiBcIlNldHVwIHJlY3VycmluZyBwYXltZW50XCIsXG4gICAgICAgIHBheW1lbnRUaW1pbmc6IFwicmVjdXJyaW5nXCIsXG4gICAgICAgIHR5cGU6IFwiZmluYWxcIlxuICAgICAgfSxcbiAgICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIGJpbGxpbmcgcG9ydGFsIHVybFxuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vcGFzc2tpdC9wa3JlY3VycmluZ3BheW1lbnRyZXF1ZXN0L21hbmFnZW1lbnR1cmwjRGlzY3Vzc2lvblxuICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSB1c2VkIHdoZW4gdXNlciByZW1vdmUgYSBjYXJkIGZyb20gdGhlaXIgQXBwbGVQYXkgd2FsbGV0LlxuICAgICAgLy8gQ3VycmVudHkgc2V0IHRvIGNoZWNrb3V0IHNlc3Npb24gdXJsIHRvIHNhdGlzZnkgQXBwbGVQYXkgdHlwZXNcbiAgICAgIG1hbmFnZW1lbnRVUkw6IG5ldyBVUkwoYC9wYXkvJHtuLnRva2VufWAsIHh0KS50b1N0cmluZygpXG4gICAgfTtcbiAgY29uc3QgdCA9IChyID0gbi5saW5lX2l0ZW1zKSA9PSBudWxsID8gdm9pZCAwIDogclswXTtcbiAgaWYgKHQpXG4gICAgcmV0dXJuIHtcbiAgICAgIHBheW1lbnREZXNjcmlwdGlvbjogKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuZGVzY3JpcHRpb24pID8/IFwiXCIsXG4gICAgICByZWd1bGFyQmlsbGluZzoge1xuICAgICAgICBhbW91bnQ6IGUuYW1vdW50LFxuICAgICAgICBsYWJlbDogKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuZGVzY3JpcHRpb24pID8/IFwiXCIsXG4gICAgICAgIHJlY3VycmluZ1BheW1lbnRJbnRlcnZhbFVuaXQ6IHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuYmlsbGluZ19pbnRlcnZhbCxcbiAgICAgICAgcmVjdXJyaW5nUGF5bWVudEludGVydmFsQ291bnQ6ICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LmJpbGxpbmdfaW50ZXJ2YWxfY291bnQpID8/IHZvaWQgMCxcbiAgICAgICAgcGF5bWVudFRpbWluZzogXCJyZWN1cnJpbmdcIixcbiAgICAgICAgdHlwZTogXCJmaW5hbFwiXG4gICAgICB9LFxuICAgICAgbWFuYWdlbWVudFVSTDogYGh0dHBzOi8vY2RlLmdldG9wZW5wYXkuY29tL3BheS8ke24udG9rZW59YFxuICAgIH07XG59LCBicyA9ICh7XG4gIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGUsXG4gIGluaXRpYWxQcmV2aWV3OiBuLFxuICBwcmVmaWxsOiB0LFxuICBkZWZhdWx0TGFiZWw6IHIgPSBcIlRvdGFsXCJcbn0pID0+IHtcbiAgdmFyIGMsIGw7XG4gIGNvbnN0IHMgPSAoKChjID0gZSA9PSBudWxsID8gdm9pZCAwIDogZS5hbW91bnQpID09IG51bGwgPyB2b2lkIDAgOiBjLmN1cnJlbmN5KSA/PyAodCA9PSBudWxsID8gdm9pZCAwIDogdC5jdXJyZW5jeSkgPz8gbi5jdXJyZW5jeSkudG9VcHBlckNhc2UoKSwgYSA9ICgoKChsID0gZSA9PSBudWxsID8gdm9pZCAwIDogZS5hbW91bnQpID09IG51bGwgPyB2b2lkIDAgOiBsLmFtb3VudEF0b20pID8/IChuID09IG51bGwgPyB2b2lkIDAgOiBuLmFtb3VudEF0b20pID8/IDApIC8gMTAwKS50b0ZpeGVkKDIpO1xuICByZXR1cm4ge1xuICAgIGN1cnJlbmN5Q29kZTogcyxcbiAgICB0b3RhbDoge1xuICAgICAgbGFiZWw6IChlID09IG51bGwgPyB2b2lkIDAgOiBlLmxhYmVsKSA/PyByID8/IFwiVG90YWxcIixcbiAgICAgIHR5cGU6IGUgIT0gbnVsbCAmJiBlLnBlbmRpbmcgPyBcInBlbmRpbmdcIiA6IFwiZmluYWxcIixcbiAgICAgIGFtb3VudDogYVxuICAgIH1cbiAgfTtcbn0sIHduID0gKHtcbiAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogZSxcbiAgaW5pdGlhbFByZXZpZXc6IG4sXG4gIHByZWZpbGw6IHQsXG4gIGRlZmF1bHRMYWJlbDogclxufSkgPT4ge1xuICBjb25zdCB7IGN1cnJlbmN5Q29kZTogcywgdG90YWw6IGkgfSA9IGJzKHtcbiAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBlLFxuICAgIGluaXRpYWxQcmV2aWV3OiBuLFxuICAgIHByZWZpbGw6IHQsXG4gICAgZGVmYXVsdExhYmVsOiByXG4gIH0pO1xuICBsZXQgYSA9IHtcbiAgICBjb3VudHJ5Q29kZTogXCJVU1wiLFxuICAgIGN1cnJlbmN5Q29kZTogcyxcbiAgICByZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzOiBbXCJlbWFpbFwiLCBcInBvc3RhbEFkZHJlc3NcIiwgXCJuYW1lXCJdLFxuICAgIHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOiBbXCJlbWFpbFwiXSxcbiAgICBzdXBwb3J0ZWROZXR3b3JrczogW1widmlzYVwiLCBcIm1hc3RlckNhcmRcIiwgXCJhbWV4XCIsIFwiZGlzY292ZXJcIl0sXG4gICAgbWVyY2hhbnRDYXBhYmlsaXRpZXM6IFtcbiAgICAgIFwic3VwcG9ydHMzRFNcIixcbiAgICAgIFwic3VwcG9ydHNDcmVkaXRcIixcbiAgICAgIFwic3VwcG9ydHNEZWJpdFwiLFxuICAgICAgXCJzdXBwb3J0c0VNVlwiXG4gICAgXSxcbiAgICB0b3RhbDogaSxcbiAgICByZWN1cnJpbmdQYXltZW50UmVxdWVzdDogd3Moe1xuICAgICAgdG90YWw6IGksXG4gICAgICBwcmVmaWxsOiB0XG4gICAgfSlcbiAgfTtcbiAgcmV0dXJuIGUgIT0gbnVsbCAmJiBlLmFwcGxlUGF5UGF5bWVudFJlcXVlc3QgJiYgKHR5cGVvZiBlLmFwcGxlUGF5UGF5bWVudFJlcXVlc3QgPT0gXCJmdW5jdGlvblwiID8gYSA9IHtcbiAgICAuLi5hLFxuICAgIC4uLmUuYXBwbGVQYXlQYXltZW50UmVxdWVzdChhKVxuICB9IDogYSA9IHsgLi4uYSwgLi4uZS5hcHBsZVBheVBheW1lbnRSZXF1ZXN0IH0pLCBhO1xufSwgeyBsb2dfXzogcGEsIGVycl9fOiB2cyB9ID0gUChcImNvbW1vblwiKSwgVGUgPSAoZSkgPT4ge1xuICBpZiAoZS5wYXltZW50X21ldGhvZHMubGVuZ3RoICE9PSAxKVxuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZXhhY3RseSBvbmUgcGF5bWVudCBtZXRob2QsIGdvdCAke2UucGF5bWVudF9tZXRob2RzLmxlbmd0aH1gKTtcbiAgcmV0dXJuIHsgcGF5bWVudF9tZXRob2RfaWQ6IGUucGF5bWVudF9tZXRob2RzWzBdLmlkIH07XG59LCBKID0gKGUsIG4pID0+IHtcbiAgY29uc3QgdCA9IGUuZmluZCgocikgPT4gbi5zYWZlUGFyc2Uocikuc3VjY2Vzcyk7XG4gIGlmICghdClcbiAgICB0aHJvdyB2cyhcIk5vIENQTXMgZm91bmQgZm9yIG1vZGVsLiBBbGwgbW9kZWxzOlwiLCBlKSwgbmV3IEVycm9yKFwiTm8gQ1BNcyBmb3VuZCBmb3IgbW9kZWxcIik7XG4gIHJldHVybiBuLnBhcnNlKHQpO1xufSwgRXMgPSAoZSkgPT4gKHtcbiAgbmV3X2N1c3RvbWVyX2VtYWlsOiBlLmVtYWlsLFxuICBuZXdfY3VzdG9tZXJfYWRkcmVzczoge1xuICAgIHppcF9jb2RlOiBlLnppcENvZGUsXG4gICAgY291bnRyeTogZS5jb3VudHJ5XG4gIH0sXG4gIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiBlLmZpcnN0TmFtZSxcbiAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogZS5sYXN0TmFtZVxufSksIEJlID0gYXN5bmMgKGUpID0+IHtcbiAgY29uc3QgeyBsb2dfXzogbiB9ID0gUChlLmxvZ1ByZWZpeCksIHQgPSBhd2FpdCBOKGUuYW55Q2RlQ29ubmVjdGlvbiksIHIgPSBUZShlLmNvbmZpcm1SZXN1bHQpO1xuICBpZiAodC5tb2RlID09PSBcInNldHVwXCIpXG4gICAgcmV0dXJuIG4oXCJTZXR0aW5nIHVwIHBheW1lbnQgbWV0aG9kLi4uXCIpLCB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBhd2FpdCBwcyhlLmFueUNkZUNvbm5lY3Rpb24sIHtcbiAgICAgIHNlY3VyZV90b2tlbjogdC50b2tlbixcbiAgICAgIHBtX2lkOiByLnBheW1lbnRfbWV0aG9kX2lkXG4gICAgfSkgfTtcbiAge1xuICAgIG4oXCJEb2luZyBjaGVja291dC4uLlwiKTtcbiAgICBjb25zdCBzID0ge1xuICAgICAgc2VjdXJlX3Rva2VuOiB0LnRva2VuLFxuICAgICAgcGF5bWVudF9pbnB1dDoge1xuICAgICAgICBwcm92aWRlcl90eXBlOiBlLmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlclxuICAgICAgfSxcbiAgICAgIGN1c3RvbWVyX2VtYWlsOiBlLnJlcXVpcmVkRm9ybUZpZWxkc1twLkVNQUlMXSxcbiAgICAgIGN1c3RvbWVyX3ppcF9jb2RlOiBlLnJlcXVpcmVkRm9ybUZpZWxkc1twLlpJUF9DT0RFXSxcbiAgICAgIGN1c3RvbWVyX2NvdW50cnk6IGUucmVxdWlyZWRGb3JtRmllbGRzW3AuQ09VTlRSWV0sXG4gICAgICBwcm9tb3Rpb25fY29kZTogZS5yZXF1aXJlZEZvcm1GaWVsZHNbcC5QUk9NT1RJT05fQ09ERV0sXG4gICAgICBsaW5lX2l0ZW1zOiB0LmxpbmVfaXRlbXMsXG4gICAgICB0b3RhbF9hbW91bnRfYXRvbTogdC5hbW91bnRfdG90YWxfYXRvbSxcbiAgICAgIGNhbmNlbF9hdF9lbmQ6ICExLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IGUuY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgdXNlX2NvbmZpcm1lZF9wbV9pZDogci5wYXltZW50X21ldGhvZF9pZFxuICAgIH07XG4gICAgcmV0dXJuIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IGF3YWl0IHV0KGUuYW55Q2RlQ29ubmVjdGlvbiwgcykgfTtcbiAgfVxufSwgQ3MgPSBcIkBrZXlmcmFtZXMgZmFkZUluezAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUoLjkpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUoMSl9fS5vdmVybGF5e3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3otaW5kZXg6MjE0NzQ4MzY0OCFpbXBvcnRhbnQ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6IzAwMDAwMDgwfS5jb250YWluZXJ7bWF4LXdpZHRoOjUwMHB4O21heC1oZWlnaHQ6NjAwcHg7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7cG9zaXRpb246cmVsYXRpdmU7YW5pbWF0aW9uOmZhZGVJbiAuM3MgZWFzZS1vdXR9LmZyYW1lLCNhZHllbi1jb250YWluZXIsI2FkeWVuLWNvbnRhaW5lcj4qe21heC13aWR0aDo1MDBweDttYXgtaGVpZ2h0OjYwMHB4O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyOm5vbmV9LmNhbmNlbC1idXR0b257cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtmb250LXNpemU6MXJlbTtjb2xvcjojZmZmO2N1cnNvcjpwb2ludGVyO3RvcDotMS41cmVtO3BhZGRpbmc6MDtyaWdodDowfVwiLCBibiA9IChlKSA9PiB7XG4gIGNvbnN0IG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGVtcGxhdGVcIik7XG4gIG4uaW5uZXJIVE1MID0gYFxuICAgIDxzdHlsZT5cbiAgICAgICR7Q3N9XG4gICAgPC9zdHlsZT5cbiAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICA8aWZyYW1lIHNyYz1cIiR7ZX1cIiBjbGFzcz1cImZyYW1lXCIgaWQ9XCJ0aHJlZS1kcy1pZnJhbWVcIiB0aXRsZT1cIjNEIFNlY3VyZSB2ZXJpZmljYXRpb25cIiBhbGxvdz1cInBheW1lbnRcIj48L2lmcmFtZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgO1xuICBjb25zdCB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSwgciA9IHQuYXR0YWNoU2hhZG93KHsgbW9kZTogXCJvcGVuXCIgfSk7XG4gIHIuYXBwZW5kQ2hpbGQobi5jb250ZW50LmNsb25lTm9kZSghMCkpO1xuICBjb25zdCBzID0gci5xdWVyeVNlbGVjdG9yKFwiI3RocmVlLWRzLWlmcmFtZVwiKSwgaSA9IHIucXVlcnlTZWxlY3RvcihcIi5jYW5jZWwtYnV0dG9uXCIpO1xuICByZXR1cm4gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KSwgeyBob3N0OiB0LCBpZnJhbWU6IHMsIGNhbmNlbEJ1dHRvbjogaSB9O1xufTtcbmZ1bmN0aW9uIFNzKGUsIG4sIHQpIHtcbiAgY29uc3QgciA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaSA9IGF3YWl0IGhzKGUsIHQpO1xuICAgICAgaSAmJiAoY2xlYXJJbnRlcnZhbChzKSwgbihpKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgfVxuICB9O1xuICByKCk7XG4gIGNvbnN0IHMgPSBzZXRJbnRlcnZhbChyLCB5bik7XG4gIHJldHVybiBzO1xufVxuZnVuY3Rpb24gUHMoe1xuICBlbGVtZW50czogZSxcbiAgcG9sbGluZ0ludGVydmFsOiBuLFxuICByZXNvbHZlOiB0XG59KSB7XG4gIGNvbnN0IHIgPSAoKSA9PiB7XG4gICAgY2xlYXJJbnRlcnZhbChuKSwgZS5ob3N0LnJlbW92ZSgpLCB0KHsgc3RhdHVzOiBULkNBTkNFTExFRCB9KTtcbiAgfTtcbiAgcmV0dXJuIGUuY2FuY2VsQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByKSwgKCkgPT4ge1xuICAgIGUuY2FuY2VsQnV0dG9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCByKTtcbiAgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIEhlKGUpIHtcbiAgY29uc3QgeyB1cmw6IG4sIGJhc2VVcmw6IHQgfSA9IGUsIHIgPSBibihuKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChzKSA9PiB7XG4gICAgY29uc3QgaSA9IChsKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgci5ob3N0LnJlbW92ZSgpO1xuICAgICAgfSwgMWUzKSwgcyhsKSwgYyA9PSBudWxsIHx8IGMoKTtcbiAgICB9LCBhID0gU3Moci5pZnJhbWUsIGksIG5ldyBVUkwodCkub3JpZ2luKSwgYyA9IFBzKHtcbiAgICAgIGVsZW1lbnRzOiByLFxuICAgICAgcG9sbGluZ0ludGVydmFsOiBhLFxuICAgICAgcmVzb2x2ZTogc1xuICAgIH0pO1xuICB9KTtcbn1cbmNvbnN0IHZuID0gYXN5bmMgKGUpID0+IHtcbiAgY29uc3QgbiA9IGF3YWl0IEhlKGUpO1xuICBpZiAobi5zdGF0dXMgPT09IFQuQ0FOQ0VMTEVEKVxuICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gY2FuY2VsbGVkXCIpO1xuICBpZiAobi5zdGF0dXMgPT09IFQuRkFJTFVSRSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgcmV0dXJuIG4uc3RhdHVzICE9PSBULlNVQ0NFU1MgJiYgWWUobi5zdGF0dXMpLCB7XG4gICAgaHJlZjogbi5ocmVmXG4gIH07XG59LCBrcyA9IChlLCBuKSA9PiB7XG4gIGNvbnN0IHQgPSB3aW5kb3cub3BlbihuLCBcIl9ibGFua1wiKTtcbiAgaWYgKCF0KVxuICAgIHRocm93IG5ldyBFcnJvcihgJHtlfSBwb3B1cCB3aW5kb3cgYmxvY2tlZC4gUGxlYXNlIGFsbG93IHBvcHVwcyBmb3IgdGhpcyBzaXRlLmApO1xuICByZXR1cm4gdDtcbn0sIEFzID0gYXN5bmMgKGUsIG4sIHQsIHIpID0+IHtcbiAgY29uc3QgeyBlcnJfXzogcyB9ID0gUChcInBvcHVwLXZlcmlmeVwiKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChpLCBhKSA9PiB7XG4gICAgY29uc3QgYyA9IGtzKGUsIHIpLCBsID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdSA9IGF3YWl0IG1zKG4sIHQpO1xuICAgICAgICBpZiAodS5wcmVzZW50KVxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwobCksIGMuY2xvc2UoKSwgaSh7IGhyZWY6IHUuaHJlZiB9KTtcbiAgICAgICAgZWxzZSBpZiAoYy5jbG9zZWQpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2V9IHBheW1lbnQgY2FuY2VsbGVkYCk7XG4gICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgIHMoVih1KSksIGNsZWFySW50ZXJ2YWwobCksIGEoVih1KSk7XG4gICAgICB9XG4gICAgfSwgMWUzKTtcbiAgfSk7XG59LCB7IGxvZ19fOiBJcywgZXJyX186IHB0IH0gPSBQKFwiYWlyd2FsbGV4LWNjXCIpLCBScyA9IHokMS5vYmplY3Qoe1xuICBcIm9wLWFpcndhbGxleC0zZHMtdXJsXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1haXJ3YWxsZXgtaW5pdGlhbC1pbnRlbnQtaWRcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFpcndhbGxleC1jb25zZW50LWlkXCI6IHokMS5zdHJpbmcoKVxufSksIFRzID0gKGUpID0+IHtcbiAgY29uc3QgbiA9IFJzLnNhZmVQYXJzZShlKTtcbiAgaWYgKCFuLnN1Y2Nlc3MpIHtcbiAgICBjb25zdCB0ID0gXCJVbmFibGUgdG8gcHJvY2VzcyB5b3VyIGNyZWRpdCBjYXJkLiBQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlLlwiLCByID0gYEFpcndhbGxleCAzRFMgaXMgcmVxdWlyZWQgYnV0IGhlYWRlcnMgYXJlIG1hbGZvcm1lZC4gR290OiAke0pTT04uc3RyaW5naWZ5KGUpfWA7XG4gICAgdGhyb3cgcHQociksIG5ldyBFcnJvcih0KTtcbiAgfVxuICByZXR1cm4gbi5kYXRhO1xufSwgRnMgPSAoZSkgPT4gKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGVbXCJvcC1haXJ3YWxsZXgtM2RzLXVybFwiXSkgIT09IHZvaWQgMCwgTXMgPSAoZSkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IG4gPSBuZXcgVVJMKGUgPz8gXCJcIikuc2VhcmNoUGFyYW1zLmdldChcInBheW1lbnRfaW50ZW50X2lkXCIpO1xuICAgIGlmICghbilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGludGVudCBJRCBmb3VuZCBpbiBBaXJ3YWxsZXggM0RTIHZlcmlmaWNhdGlvbiByZXN1bHRcIik7XG4gICAgcmV0dXJuIElzKGBBaXJ3YWxsZXggM0RTIHZlcmlmaWNhdGlvbiBzdWNjZXNzLiBbSW50ZW50IElEOiAke259XWApLCBuO1xuICB9IGNhdGNoIChuKSB7XG4gICAgY29uc3QgdCA9IFwiRXJyb3IgdmVyaWZ5aW5nIEFpcndhbGxleCAzRFMgdmVyaWZpY2F0aW9uIHJlc3VsdC5cIjtcbiAgICB0aHJvdyBwdCh0LCBgUmVzdWx0aW5nIFVSTDogJHtlfS5cbkVycm9yOiAke1Yobil9YCksIG5ldyBFcnJvcih0KTtcbiAgfVxufSwgRHMgPSBhc3luYyAoZSwgbikgPT4ge1xuICBjb25zdCB0ID0gVHMobiksIHIgPSBhd2FpdCB2bih7IHVybDogdFtcIm9wLWFpcndhbGxleC0zZHMtdXJsXCJdLCBiYXNlVXJsOiBlIH0pLCBzID0gTXMoci5ocmVmID8/IFwiXCIpLCBpID0gdFtcIm9wLWFpcndhbGxleC1pbml0aWFsLWludGVudC1pZFwiXTtcbiAgaWYgKGkgIT09IHMpIHtcbiAgICBjb25zdCBjID0gXCJVbmFibGUgdG8gcHJvY2VzcyB5b3VyIGNyZWRpdCBjYXJkLiBQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlLlwiLCBsID0gYEludGVudCBJRCBmcm9tIGNhbGxiYWNrICgke3N9KSBkb2VzIG5vdCBtYXRjaCB0aGUgaW5pdGlhbCBpbnRlbnQgSUQgKCR7aX0pLmA7XG4gICAgdGhyb3cgcHQobCksIG5ldyBFcnJvcihjKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICBpbml0aWFsX2ludGVudF9pZDogcyxcbiAgICAgIGNvbnNlbnRfaWQ6IHRbXCJvcC1haXJ3YWxsZXgtY29uc2VudC1pZFwiXVxuICAgIH1cbiAgfTtcbn0sIEVuID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWlyd2FsbGV4XCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgcHJvY2Vzc29yX2FjY291bnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9uYW1lOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBDbiA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICBnb29nbGVfcGF5X21lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpXG4gIH0pXG59KSwgeyBsb2dfXzogU24sIGVycl9fOiBQbiB9ID0gUChcImNvbW1vbi1jY1wiKSwgc2UgPSAoZSwgbiwgdCkgPT4ge1xuICBpZiAodCkge1xuICAgIFNuKGBSZWNlaXZlZCBkZWZhdWx0IGZpZWxkIHZhbHVlczogJHtKU09OLnN0cmluZ2lmeSh0KX1gKTtcbiAgICBmb3IgKGNvbnN0IFtzLCBpXSBvZiBPYmplY3QuZW50cmllcyh0KSlcbiAgICAgIGVbc10gfHwgKGVbc10gPSBpKTtcbiAgfVxuICBjb25zdCByID0gSWUuc2FmZVBhcnNlKGUpO1xuICBpZiAoIXIuc3VjY2Vzcykge1xuICAgIGNvbnN0IHMgPSByLmVycm9yLmZvcm1hdCgpLCBpID0gWXQocyk7XG4gICAgZm9yIChjb25zdCBbYSwgY10gb2YgT2JqZWN0LmVudHJpZXMoaSkpXG4gICAgICBuKGEsIGMsIGEpO1xuICAgIHRocm93IFBuKFwiR290IHZhbGlkYXRpb24gZXJyb3JzIGluIG5vbi1DREUgZm9ybSBmaWVsZHNcIiwgaSksIG5ldyBFcnJvcihcIkdvdCB2YWxpZGF0aW9uIGVycm9ycyBpbiBub24tQ0RFIGZvcm0gZmllbGRzXCIpO1xuICB9XG4gIHJldHVybiByLmRhdGE7XG59LCBOcyA9IChlLCBuKSA9PiB7XG4gIGZvciAoY29uc3QgdCBvZiBlKVxuICAgIGlmICh0LnN1Y2Nlc3MgPT09ICExKVxuICAgICAgdGhyb3cgdC5lcnJvcnMuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICBjb25zdCBzID0genQuc2FmZVBhcnNlKHIuZWxlbWVudFR5cGUpO1xuICAgICAgICBpZiAoIXMuc3VjY2VzcylcbiAgICAgICAgICBQbihgVW5rbm93biBmaWVsZCBuYW1lIGluIG9uVmFsaWRhdGlvbkVycm9yOiAke3IuZWxlbWVudFR5cGV9LiBFcnJvciBvYmplY3Q6YCwgcik7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGkgPSBzLmRhdGE7XG4gICAgICAgICAgbihpLCByLmVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgIH0pLCBTbihgRXJyb3IgdG9rZW5pemluZyBjYXJkOiBnb3QgdmFsaWRhdGlvbiBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkodC5lcnJvcnMpfWApLCBuZXcgRXJyb3IoXCJHb3QgdmFsaWRhdGlvbiBlcnJvcnMgd2hpbGUgdG9rZW5pemluZyBjYXJkXCIpO1xufSwgeyBsb2dfXzogT2UgfSA9IFAoXCJhd3gtYXBwbGUtcGF5XCIpO1xuYXN5bmMgZnVuY3Rpb24gTHMoZSwgbikge1xuICB0cnkge1xuICAgIGNvbnN0IHIgPSAoYXdhaXQgZHQobi5jb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgYWlyd2FsbGV4X3BheW1lbnRfc2Vzc2lvbjoge1xuICAgICAgICAgIHZhbGlkYXRpb25fdXJsOiBlLnZhbGlkYXRpb25VUkwsXG4gICAgICAgICAgaW5pdGlhdGl2ZV9jb250ZXh0OiB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsXG4gICAgICAgICAgdGhlaXJfYWNjb3VudF9pZDogbi5wcm9jZXNzb3JBY2NvdW50LnByb2Nlc3Nvcl9hY2NvdW50X2lkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSkubmV4dF9hY3Rpb25fbWV0YWRhdGEsIHMgPSByID09IG51bGwgPyB2b2lkIDAgOiByLmFwcGxlX3BheV9zZXNzaW9uO1xuICAgIGlmICghcylcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHNlc3Npb24gZGF0YSByZWNlaXZlZCBmcm9tIHBheW1lbnQgZmxvd1wiKTtcbiAgICBuLnNlc3Npb24uY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24ocyksIGcoXCJhcHBsZV9wYXlfY29tcGxldGVfbWVyY2hhbnRfdmFsaWRhdGlvblwiLCB7XG4gICAgICAuLi5zXG4gICAgfSk7XG4gIH0gY2F0Y2ggKHQpIHtcbiAgICB0aHJvdyBuLnNlc3Npb24uYWJvcnQoKSwgdDtcbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gT3MoZSwgbikge1xuICBpZiAoIWUucmVkaXJlY3RfdXJsKVxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZFwiKTtcbiAgT2UoXCIzRFMgUmVxdWlyZWQsIHN0YXJ0aW5nIHZlcmlmaWNhdGlvbi4uLlwiLCBlKTtcbiAgY29uc3QgeyBzdGF0dXM6IHQgfSA9IGF3YWl0IEhlKHtcbiAgICB1cmw6IGUucmVkaXJlY3RfdXJsLFxuICAgIGJhc2VVcmw6IG4uYmFzZVVybFxuICB9KTtcbiAgaWYgKE9lKGDilbAgM0RTIHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQgW1N0YXR1czogJHt0fV1gKSwgdCA9PT0gVC5DQU5DRUxMRUQpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gIGlmICh0ID09PSBULkZBSUxVUkUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gIGNvbnN0IHIgPSBhd2FpdCBZKG4uY29ubmVjdGlvbiwge1xuICAgIHNlY3VyZV90b2tlbjogbi5wcmVmaWxsLnRva2VuLFxuICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgdGhlaXJfcG1faWQ6IGUudGhlaXJfcG1faWQsXG4gICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogZS5jb25zZW50X2lkLFxuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXJcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gT2UoXCJbMm5kXSBDb25maXJtIHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCByKSwgcjtcbn1cbmFzeW5jIGZ1bmN0aW9uIFVzKGUsIG4pIHtcbiAgdmFyIHQsIHIsIHMsIGksIGE7XG4gIHRyeSB7XG4gICAgY29uc3QgYyA9IGUucGF5bWVudCwgbCA9IGduKG4ubm9uQ2RlRm9ybUlucHV0cywgYyksIHUgPSBzZShcbiAgICAgIGwsXG4gICAgICBuLmZvcm1DYWxsYmFja3MuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgbi5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICApO1xuICAgIGcoXCJiaWxsaW5nX2RldGFpbHNfcmVjZWl2ZWRcIiwge1xuICAgICAgLi4udVxuICAgIH0pO1xuICAgIGNvbnN0IG0gPSAoYXdhaXQgZ2Uobi5jb25uZWN0aW9uLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlcixcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIG5ld19jdXN0b21lcl9lbWFpbDogdVtwLkVNQUlMXSxcbiAgICAgIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiB1W3AuRklSU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiB1W3AuTEFTVF9OQU1FXSxcbiAgICAgIG5ld19jdXN0b21lcl9hZGRyZXNzOiB7XG4gICAgICAgIHppcF9jb2RlOiB1W3AuWklQX0NPREVdLFxuICAgICAgICBjb3VudHJ5OiB1W3AuQ09VTlRSWV1cbiAgICAgIH1cbiAgICB9KSkucmVxdWlyZWRfdXNlcl9hY3Rpb25zWzBdLmNvbnNlbnRfaWQ7XG4gICAgaWYgKCFtKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gY29uc2VudCBJRCByZWNlaXZlZCBmcm9tIHBheW1lbnQgZmxvd1wiKTtcbiAgICBsZXQgeSA9IGF3YWl0IFkobi5jb25uZWN0aW9uLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IG4ucHJlZmlsbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiBuLmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlcixcbiAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IG0sXG4gICAgICAgIGFpcndhbGxleF9wYXltZW50X21ldGhvZF9kYXRhOiB7XG4gICAgICAgICAgdHlwZTogXCJhcHBsZXBheVwiLFxuICAgICAgICAgIGFwcGxlcGF5OiB7XG4gICAgICAgICAgICBwYXltZW50X2RhdGFfdHlwZTogXCJlbmNyeXB0ZWRfcGF5bWVudF90b2tlblwiLFxuICAgICAgICAgICAgZW5jcnlwdGVkX3BheW1lbnRfdG9rZW46IEpTT04uc3RyaW5naWZ5KGMudG9rZW4pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2UoXCJbMXN0XSBDb25maXJtIHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCB5KTtcbiAgICBsZXQgZiA9IChyID0gKHQgPSB5LnBheW1lbnRfbWV0aG9kcykgPT0gbnVsbCA/IHZvaWQgMCA6IHRbMF0pID09IG51bGwgPyB2b2lkIDAgOiByLmlkO1xuICAgIGNvbnN0IGggPSAocyA9IHkucmVxdWlyZWRfdXNlcl9hY3Rpb25zKSA9PSBudWxsID8gdm9pZCAwIDogcy5maW5kKFxuICAgICAgKGIpID0+IGIudHlwZSA9PT0gXCJhaXJ3YWxsZXhfcGF5bWVudF9jb25zZW50XCJcbiAgICApO1xuICAgIGlmIChoICE9IG51bGwgJiYgaC5yZWRpcmVjdF91cmwgJiYgaC5jb25zZW50X2lkICYmIGgudGhlaXJfcG1faWQgJiYgKHkgPSBhd2FpdCBPcyhoLCBuKSwgZiA9IChhID0gKGkgPSB5LnBheW1lbnRfbWV0aG9kcykgPT0gbnVsbCA/IHZvaWQgMCA6IGlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBhLmlkKSwgIWYpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBQTSBJRCBmb3VuZFwiKTtcbiAgICBjb25zdCB2ID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX1NVQ0NFU1NcbiAgICB9O1xuICAgIHJldHVybiBuLnNlc3Npb24uY29tcGxldGVQYXltZW50KHYpLCBCZSh7XG4gICAgICBsb2dQcmVmaXg6IFwiYXd4LWFwcGxlcGF5XCIsXG4gICAgICBhbnlDZGVDb25uZWN0aW9uOiBuLmNvbm5lY3Rpb24sXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4uY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiB1LFxuICAgICAgY29uZmlybVJlc3VsdDogeSxcbiAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICB9KTtcbiAgfSBjYXRjaCAoYykge1xuICAgIGNvbnN0IGwgPSB7XG4gICAgICBzdGF0dXM6IEFwcGxlUGF5U2Vzc2lvbi5TVEFUVVNfRkFJTFVSRVxuICAgIH07XG4gICAgdGhyb3cgbi5zZXNzaW9uLmNvbXBsZXRlUGF5bWVudChsKSwgYztcbiAgfVxufVxuY29uc3QgeyBsb2dfXzogdmUsIGVycl9fOiBrbiB9ID0gUChcImF3eC1hcHBsZS1wYXlcIiksIGpzID0gZGUoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIGNvbnN0IHQgPSB7XG4gICAgICBwcm9jZXNzb3I6IEIuRW51bS5haXJ3YWxsZXgsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBFbik7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIHQ7XG4gICAgaWYgKHZlKFwiTG9hZGluZyBBcHBsZSBQYXkgc2NyaXB0XCIpLCBhd2FpdCBobigpLCAhd2luZG93LkFwcGxlUGF5U2Vzc2lvbiB8fCAhQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50cygpKVxuICAgICAgcmV0dXJuIHZlKFwiQXBwbGUgUGF5IGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBkZXZpY2UvYnJvd3NlclwiKSwgdDtcbiAgICBpZiAodmUoXCJBcHBsZSBQYXkgTG9hZGVkXCIpLCAhYXdhaXQgQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50cygpKVxuICAgICAgcmV0dXJuIHZlKFwiTm8gYWN0aXZlIGNhcmRzIGF2YWlsYWJsZSBmb3IgQXBwbGUgUGF5XCIpLCB0O1xuICAgIGlmICghci5tZXRhZGF0YS5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIik7XG4gICAgY29uc3QgYSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgYyA9IGF3YWl0IE4oYSksIGwgPSBjLm1vZGUgPT09IFwic2V0dXBcIiwgdSA9IGF3YWl0IHdlKGEsIGMudG9rZW4sIGwsIHZvaWQgMCksIGQgPSBhc3luYyAoXykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgUi5haXJ3YWxsZXhBcHBsZVBheS5ydW4oe1xuICAgICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiByLFxuICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGVlKGUuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLl8sXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAobSkge1xuICAgICAgICBrbihcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIG0pLCBuLmdldC5vbkNoZWNrb3V0RXJyb3IoKG0gPT0gbnVsbCA/IHZvaWQgMCA6IG0ubWVzc2FnZSkgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogQi5FbnVtLmFpcndhbGxleCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGRcbiAgICB9O1xuICB9XG4pLCB4cyA9IHJlKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHQsXG4gICAgY3VzdG9tUGFyYW1zOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IHNcbiAgfSkgPT4ge1xuICAgIHZhciBmO1xuICAgIGNvbnN0IGkgPSBKKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgRW4pLCB7IG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGEsIGluaXRpYWxQcmV2aWV3OiBjIH0gPSByLCBsID0gZS5hbnlDZGVDb25uZWN0aW9uLCB1ID0gYXdhaXQgTihsKSwgZCA9IHUubW9kZSA9PT0gXCJzZXR1cFwiLCBfID0gd24oe1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogYSxcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBjLFxuICAgICAgcHJlZmlsbDoge1xuICAgICAgICAuLi51XG4gICAgICB9LFxuICAgICAgZGVmYXVsdExhYmVsOiAoZiA9IGkgPT0gbnVsbCA/IHZvaWQgMCA6IGkubWV0YWRhdGEpID09IG51bGwgPyB2b2lkIDAgOiBmLnByb2Nlc3Nvcl9hY2NvdW50X25hbWVcbiAgICB9KSwgbSA9IG5ldyBBcHBsZVBheVNlc3Npb24oMywgXyksIHkgPSB7XG4gICAgICBzZXNzaW9uOiBtLFxuICAgICAgY29ubmVjdGlvbjogZS5hbnlDZGVDb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICAgIHByb2Nlc3NvckFjY291bnQ6IGkubWV0YWRhdGEsXG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgaXNTZXR1cE1vZGU6IGQsXG4gICAgICBiYXNlVXJsOiBlLmJhc2VVcmwsXG4gICAgICBmb3JtQ2FsbGJhY2tzOiBzLFxuICAgICAgZGVmYXVsdEZpZWxkVmFsdWVzOiByID09IG51bGwgPyB2b2lkIDAgOiByLmRlZmF1bHRGaWVsZFZhbHVlc1xuICAgIH07XG4gICAgcmV0dXJuIGcoXCJhcHBsZV9wYXlfZmxvd19zdGFydGVkXCIsIHtcbiAgICAgIHByb2Nlc3Nvcl9uYW1lOiBuLnByb2Nlc3Nvcl9uYW1lLFxuICAgICAgcHJlZmlsbDogbG4odSwgW1wiYnJhbmRcIl0pLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogYVxuICAgIH0pLCBuZXcgUHJvbWlzZSgoaCwgdikgPT4ge1xuICAgICAgY29uc3QgYiA9ICgpID0+IHtcbiAgICAgICAgdmUoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpLCB2KG5ldyBFcnJvcihcIlBheW1lbnQgY2FuY2VsbGVkIGJ5IHVzZXJcIikpO1xuICAgICAgfTtcbiAgICAgIG0ub25jYW5jZWwgPSBiLCBtLm9udmFsaWRhdGVtZXJjaGFudCA9IGFzeW5jIChFKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgTHMoRSwgeSk7XG4gICAgICAgIH0gY2F0Y2ggKGspIHtcbiAgICAgICAgICB2KGspO1xuICAgICAgICB9XG4gICAgICB9LCBtLm9ucGF5bWVudG1ldGhvZHNlbGVjdGVkID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBFID0ge1xuICAgICAgICAgIG5ld1RvdGFsOiB7IC4uLl8udG90YWwgfVxuICAgICAgICB9O1xuICAgICAgICBtLmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihFKTtcbiAgICAgIH0sIG0ub25wYXltZW50YXV0aG9yaXplZCA9IGFzeW5jIChFKSA9PiB7XG4gICAgICAgIGcoXCJhcHBsZV9wYXlfcGF5bWVudF9hdXRob3JpemVkXCIpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGsgPSBhd2FpdCBVcyhFLCB5KTtcbiAgICAgICAgICBoKGspO1xuICAgICAgICB9IGNhdGNoIChrKSB7XG4gICAgICAgICAgdihrKTtcbiAgICAgICAgfVxuICAgICAgfSwgbS5iZWdpbigpO1xuICAgIH0pLmNhdGNoKChoKSA9PiB7XG4gICAgICB0aHJvdyBrbihcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIGgpLCBnKFwiYXBwbGVfcGF5X3BheW1lbnRfZXJyb3JcIiwge1xuICAgICAgICBlcnJvcjogaFxuICAgICAgfSksIGg7XG4gICAgfSk7XG4gIH1cbiksIEplID0gKHtcbiAgZ2F0ZXdheTogZSxcbiAgZ2F0ZXdheU1lcmNoYW50SWQ6IG4sXG4gIG1lcmNoYW50TmFtZTogdCxcbiAgbWVyY2hhbnRJZDogcixcbiAgaW5pdGlhbFByZXZpZXc6IHMsXG4gIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGksXG4gIHByZWZpbGw6IGFcbn0pID0+IHtcbiAgdmFyIF8sIG07XG4gIGNvbnN0IGMgPSAoKF8gPSBpID09IG51bGwgPyB2b2lkIDAgOiBpLmFtb3VudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF8uYW1vdW50QXRvbSkgPz8gKHMgPT0gbnVsbCA/IHZvaWQgMCA6IHMuYW1vdW50QXRvbSkgPz8gMCwgbCA9IE1hdGgubWF4KGMgLyAxMDAsIDApLCB1ID0gKCgobSA9IGkgPT0gbnVsbCA/IHZvaWQgMCA6IGkuYW1vdW50KSA9PSBudWxsID8gdm9pZCAwIDogbS5jdXJyZW5jeSkgPz8gKGEgPT0gbnVsbCA/IHZvaWQgMCA6IGEuY3VycmVuY3kpID8/IHMuY3VycmVuY3kpLnRvVXBwZXJDYXNlKCksIGQgPSB7XG4gICAgYXBpVmVyc2lvbjogMixcbiAgICBhcGlWZXJzaW9uTWlub3I6IDAsXG4gICAgYWxsb3dlZFBheW1lbnRNZXRob2RzOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiQ0FSRFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgYWxsb3dlZEF1dGhNZXRob2RzOiBbXCJQQU5fT05MWVwiLCBcIkNSWVBUT0dSQU1fM0RTXCJdLFxuICAgICAgICAgIGFsbG93ZWRDYXJkTmV0d29ya3M6IFtcIkFNRVhcIiwgXCJESVNDT1ZFUlwiLCBcIklOVEVSQUNcIiwgXCJKQ0JcIiwgXCJNQVNURVJDQVJEXCIsIFwiVklTQVwiXSxcbiAgICAgICAgICBiaWxsaW5nQWRkcmVzc1JlcXVpcmVkOiAhMCxcbiAgICAgICAgICBiaWxsaW5nQWRkcmVzc1BhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIGZvcm1hdDogXCJGVUxMXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFsbG93Q3JlZGl0Q2FyZHM6ICEwLFxuICAgICAgICAgIGFsbG93UHJlcGFpZENhcmRzOiAhMFxuICAgICAgICB9LFxuICAgICAgICB0b2tlbml6YXRpb25TcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgICAgdHlwZTogXCJQQVlNRU5UX0dBVEVXQVlcIixcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBnYXRld2F5OiBlLFxuICAgICAgICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IG5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGVtYWlsUmVxdWlyZWQ6ICEwLFxuICAgIG1lcmNoYW50SW5mbzoge1xuICAgICAgLy8gUFJPRCBlbnYgd2lsbCBuZWVkIHRoaXNcbiAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3BheS9hcGkvd2ViL3JlZmVyZW5jZS9yZXF1ZXN0LW9iamVjdHMjTWVyY2hhbnRJbmZvXG4gICAgICBtZXJjaGFudElkOiByID8/IFwiXCIsXG4gICAgICBtZXJjaGFudE5hbWU6IHRcbiAgICB9LFxuICAgIHRyYW5zYWN0aW9uSW5mbzoge1xuICAgICAgY291bnRyeUNvZGU6IFwiVVNcIixcbiAgICAgIGN1cnJlbmN5Q29kZTogdSxcbiAgICAgIHRvdGFsUHJpY2VTdGF0dXM6IGkgIT0gbnVsbCAmJiBpLnBlbmRpbmcgPyBcIkVTVElNQVRFRFwiIDogXCJGSU5BTFwiLFxuICAgICAgdG90YWxQcmljZTogbC50b0ZpeGVkKDIpXG4gICAgfVxuICB9O1xuICByZXR1cm4gaSAhPSBudWxsICYmIGkuZ29vZ2xlUGF5UGF5bWVudFJlcXVlc3QgPyB0eXBlb2YgaS5nb29nbGVQYXlQYXltZW50UmVxdWVzdCA9PSBcImZ1bmN0aW9uXCIgPyB7IC4uLmQsIC4uLmkuZ29vZ2xlUGF5UGF5bWVudFJlcXVlc3QoZCkgfSA6IHsgLi4uZCwgLi4uaS5nb29nbGVQYXlQYXltZW50UmVxdWVzdCB9IDogZDtcbn0sIEFuID0gKCkgPT4gX24oe1xuICBzY3JpcHRJZDogXCJfX29wX2ludGVybmFsX2dvb2dsZV9wYXlfc2RrXCIsXG4gIHNyYzogXCJodHRwczovL3BheS5nb29nbGUuY29tL2dwL3AvanMvcGF5LmpzXCIsXG4gIGNoZWNrTG9hZGVkRm46ICgpID0+IHtcbiAgICB2YXIgZSwgbjtcbiAgICByZXR1cm4gISEoKG4gPSAoZSA9IHdpbmRvdy5nb29nbGUpID09IG51bGwgPyB2b2lkIDAgOiBlLnBheW1lbnRzKSAhPSBudWxsICYmIG4uYXBpKTtcbiAgfVxufSk7XG5sZXQgZXQgPSBudWxsO1xuY29uc3QgSW4gPSBhc3luYyAoZSkgPT4gYXdhaXQgY24oZSkgPT09IFwicHJvZFwiID8gXCJQUk9EVUNUSU9OXCIgOiBcIlRFU1RcIiwgS2UgPSBhc3luYyAoZSwgbikgPT4ge1xuICBjb25zdCB0ID0gYXdhaXQgSW4oZSk7XG4gIHJldHVybiBldCA9PT0gbnVsbCAmJiAoZXQgPSBuZXcgd2luZG93Lmdvb2dsZS5wYXltZW50cy5hcGkuUGF5bWVudHNDbGllbnQoe1xuICAgIGVudmlyb25tZW50OiB0LFxuICAgIG1lcmNoYW50SW5mbzogbi5tZXJjaGFudEluZm9cbiAgfSkpLCBldDtcbn0sICRzID0gKGUpID0+IHtcbiAgY29uc3QgbiA9IGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmZpbmQoKHQpID0+IHQudHlwZSA9PT0gXCJhaXJ3YWxsZXhfcGF5bWVudF9jb25zZW50XCIpO1xuICByZXR1cm4gbiA/IHF0LnBhcnNlKG4pIDogbnVsbDtcbn0sIFJuID0gKGUsIG4pID0+IHtcbiAgdmFyIHMsIGksIGEsIGM7XG4gIGNvbnN0IHQgPSB7IC4uLmUgfSwgciA9IChpID0gKHMgPSBuLnBheW1lbnRNZXRob2REYXRhKSA9PSBudWxsID8gdm9pZCAwIDogcy5pbmZvKSA9PSBudWxsID8gdm9pZCAwIDogaS5iaWxsaW5nQWRkcmVzcztcbiAgaWYgKHIpIHtcbiAgICBjb25zdCBbbCwgLi4udV0gPSAoKGMgPSAoYSA9IHIubmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IGEudHJpbSgpKSA9PSBudWxsID8gdm9pZCAwIDogYy5zcGxpdCgvXFxzKy8pKSA/PyBbXSwgZCA9IHUuam9pbihcIiBcIikgfHwgdm9pZCAwO1xuICAgIHRbcC5FTUFJTF0gPSB0W3AuRU1BSUxdIHx8IG4uZW1haWwgfHwgXCJvcF91bmZpbGxlZEBnZXRvcGVucGF5LmNvbVwiLCB0W3AuQ09VTlRSWV0gPSB0W3AuQ09VTlRSWV0gfHwgci5jb3VudHJ5Q29kZSB8fCBcIlVTXCIsIHRbcC5BRERSRVNTXSA9IHRbcC5BRERSRVNTXSB8fCByLmFkZHJlc3MxIHx8IFwiXCIsIHRbcC5DSVRZXSA9IHRbcC5DSVRZXSB8fCByLmxvY2FsaXR5IHx8IFwiXCIsIHRbcC5aSVBfQ09ERV0gPSB0W3AuWklQX0NPREVdIHx8IHIucG9zdGFsQ29kZSB8fCBcIjAwMDAwXCIsIHRbcC5TVEFURV0gPSB0W3AuU1RBVEVdIHx8IHIuYWRtaW5pc3RyYXRpdmVBcmVhIHx8IFwiXCI7XG4gICAgY29uc3QgXyA9IHRbcC5GSVJTVF9OQU1FXSB8fCBsIHx8IFwiXCIsIG0gPSB0W3AuTEFTVF9OQU1FXSB8fCBkIHx8IFwiXCI7XG4gICAgXyB8fCBtID8gKHRbcC5GSVJTVF9OQU1FXSA9IF8sIHRbcC5MQVNUX05BTUVdID0gbSkgOiAodFtwLkZJUlNUX05BTUVdID0gXCJfT1BfVU5LTk9XTlwiLCB0W3AuTEFTVF9OQU1FXSA9IFwiXCIpO1xuICB9XG4gIHJldHVybiB0O1xufSwgeyBsb2dfXzogcSwgZXJyX186IG1lIH0gPSBQKFwiYXd4LWdvb2dsZS1wYXlcIiksIFZzID0gZGUoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIHZhciBfLCBtO1xuICAgIGNvbnN0IHQgPSB7XG4gICAgICBwcm9jZXNzb3I6IEIuRW51bS5haXJ3YWxsZXgsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBDbik7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIHQ7XG4gICAgcShcIkdvb2dsZSBQYXkgQ1BNXCIsIHIpO1xuICAgIGNvbnN0IHMgPSByLm1ldGFkYXRhO1xuICAgIGlmICghcy5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHJldHVybiBtZShcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIiksIHQ7XG4gICAgaWYgKHEoXCJMb2FkaW5nIEdvb2dsZSBQYXkgc2NyaXB0XCIpLCBhd2FpdCBBbigpLCAhKChtID0gKF8gPSB3aW5kb3cuZ29vZ2xlKSA9PSBudWxsID8gdm9pZCAwIDogXy5wYXltZW50cykgIT0gbnVsbCAmJiBtLmFwaSkpXG4gICAgICByZXR1cm4gbWUoXCJHb29nbGUgUGF5IFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCB0O1xuICAgIGlmIChhd2FpdCBJbihlLmJhc2VVcmwpID09PSBcIlBST0RVQ1RJT05cIiAmJiAhcy5nb29nbGVfcGF5X21lcmNoYW50X2lkKVxuICAgICAgcmV0dXJuIG1lKFwiR29vZ2xlIFBheSBtZXJjaGFudCBJRCBpcyByZXF1aXJlZCBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudFwiKSwgdDtcbiAgICBxKFwiR29vZ2xlIFBheSBTREsgbG9hZGVkXCIsIHdpbmRvdy5nb29nbGUucGF5bWVudHMpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB5ID0gSmUoe1xuICAgICAgICBnYXRld2F5OiBcImFpcndhbGxleFwiLFxuICAgICAgICBnYXRld2F5TWVyY2hhbnRJZDogcy5wcm9jZXNzb3JfYWNjb3VudF9pZCxcbiAgICAgICAgbWVyY2hhbnROYW1lOiBzLnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICAgIG1lcmNoYW50SWQ6IHMuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgICAvLyBUaGlzIGlzIGZvciBpbml0aWFsIHBheW1lbnQgcmVxdWVzdCB0byBjaGVjayBhdmFpbGFiaWxpdHkuIEFjdHVhbCBgaW5pdGlhbFByZXZpZXdgIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSBVSSBpcyBzaG93blxuICAgICAgICBpbml0aWFsUHJldmlldzoge1xuICAgICAgICAgIGFtb3VudEF0b206IDAsXG4gICAgICAgICAgY3VycmVuY3k6IFwiVVNEXCJcbiAgICAgICAgfVxuICAgICAgfSksIGYgPSBhd2FpdCBLZShlLmJhc2VVcmwsIHkpLCB7IHJlc3VsdDogaCB9ID0gYXdhaXQgZi5pc1JlYWR5VG9QYXkoeSk7XG4gICAgICBpZiAoIWgpXG4gICAgICAgIHJldHVybiBxKFwiR29vZ2xlIFBheSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXJcIiksIHQ7XG4gICAgfSBjYXRjaCAoeSkge1xuICAgICAgcmV0dXJuIG1lKFwiRXJyb3IgY2hlY2tpbmcgR29vZ2xlIFBheSBhdmFpbGFiaWxpdHlcIiwgeSksIHQ7XG4gICAgfVxuICAgIGNvbnN0IGEgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGMgPSBhd2FpdCBOKGEpLCBsID0gYy5tb2RlID09PSBcInNldHVwXCIsIHUgPSBhd2FpdCB3ZShhLCBjLnRva2VuLCBsLCB2b2lkIDApLCBkID0gYXN5bmMgKHkpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFIuYWlyd2FsbGV4R29vZ2xlUGF5LnJ1bih7XG4gICAgICAgICAgY29udGV4dDogZSxcbiAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogZWUoZS5mb3JtRGl2KSxcbiAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMCxcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLnksXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChmKSB7XG4gICAgICAgIG1lKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIGYpLCBuLmdldC5vbkNoZWNrb3V0RXJyb3IoKGYgPT0gbnVsbCA/IHZvaWQgMCA6IGYubWVzc2FnZSkgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogQi5FbnVtLmFpcndhbGxleCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGRcbiAgICB9O1xuICB9XG4pLCBHcyA9IHJlKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHQsXG4gICAgZm9ybUNhbGxiYWNrczogcixcbiAgICBjdXN0b21QYXJhbXM6IHNcbiAgfSkgPT4ge1xuICAgIHZhciB5LCBmLCBoLCB2LCBiLCBFLCBrO1xuICAgIHEoXCJTdGFydGluZyBHb29nbGUgUGF5IGZsb3cuLi5cIik7XG4gICAgY29uc3QgaSA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBDbiksIHsgaW5pdGlhbFByZXZpZXc6IGEsIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGMgfSA9IHMsIGwgPSBpLm1ldGFkYXRhO1xuICAgIGlmICghbC5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIik7XG4gICAgY29uc3QgdSA9IEplKHtcbiAgICAgIGdhdGV3YXk6IFwiYWlyd2FsbGV4XCIsXG4gICAgICBnYXRld2F5TWVyY2hhbnRJZDogbC5wcm9jZXNzb3JfYWNjb3VudF9pZCxcbiAgICAgIG1lcmNoYW50TmFtZTogbC5wcm9jZXNzb3JfYWNjb3VudF9uYW1lLFxuICAgICAgbWVyY2hhbnRJZDogbC5nb29nbGVfcGF5X21lcmNoYW50X2lkID8/IFwiXCIsXG4gICAgICBpbml0aWFsUHJldmlldzogYSxcbiAgICAgIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGNcbiAgICB9KSwgZCA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgXyA9IGF3YWl0IE4oZCk7XG4gICAgZyhcImdvb2dsZV9wYXlfZmxvd19zdGFydGVkXCIsIHtcbiAgICAgIHByb2Nlc3Nvcl9uYW1lOiBpLnByb2Nlc3Nvcl9uYW1lLFxuICAgICAgcHJlZmlsbDogbG4oXywgW1wiYnJhbmRcIl0pLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogY1xuICAgIH0pO1xuICAgIGNvbnN0IG0gPSBhd2FpdCBLZShlLmJhc2VVcmwsIHUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBPID0gYXdhaXQgbS5sb2FkUGF5bWVudERhdGEodSk7XG4gICAgICBxKFwiR29vZ2xlIFBheSBQYXltZW50IGRhdGFcIiwgTyk7XG4gICAgICBjb25zdCB0ZSA9IFJuKHQsIE8pLCB4ID0gc2UoXG4gICAgICAgIHRlLFxuICAgICAgICByLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgICAgcyA9PSBudWxsID8gdm9pZCAwIDogcy5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICAgICk7XG4gICAgICBnKFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgICAgLi4ueFxuICAgICAgfSk7XG4gICAgICBjb25zdCBwZSA9IChmID0gKHkgPSBPLnBheW1lbnRNZXRob2REYXRhKSA9PSBudWxsID8gdm9pZCAwIDogeS50b2tlbml6YXRpb25EYXRhKSA9PSBudWxsID8gdm9pZCAwIDogZi50b2tlbjtcbiAgICAgIGlmICghcGUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHBheW1lbnQgdG9rZW4gcmVjZWl2ZWQgZnJvbSBHb29nbGUgUGF5XCIpO1xuICAgICAgY29uc3QgJG4gPSBhd2FpdCBnZShkLCB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IG4ucHJvdmlkZXIsXG4gICAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuLFxuICAgICAgICBuZXdfY3VzdG9tZXJfZW1haWw6IHhbcC5FTUFJTF0sXG4gICAgICAgIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiB4W3AuRklSU1RfTkFNRV0sXG4gICAgICAgIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHhbcC5MQVNUX05BTUVdLFxuICAgICAgICBuZXdfY3VzdG9tZXJfYWRkcmVzczoge1xuICAgICAgICAgIHppcF9jb2RlOiB4W3AuWklQX0NPREVdLFxuICAgICAgICAgIGNvdW50cnk6IHhbcC5DT1VOVFJZXVxuICAgICAgICB9XG4gICAgICB9KSwgRmUgPSAkcygkbik7XG4gICAgICBxKFwiU3RhcnQgZmxvdyBuZXh0IGFjdGlvbnNcIiwgRmUpO1xuICAgICAgbGV0IGllID0gYXdhaXQgWShkLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogXy50b2tlbixcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5wcm92aWRlcixcbiAgICAgICAgICAvLyBHb29nbGVQYXkncyBlbmNyeXB0ZWRfcGF5bWVudF90b2tlbiBwcm92aWRlZCB0byB2ZXJpZnkgdGhlIGNvbnNlbnQgZmlyc3RcbiAgICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogRmUgPT0gbnVsbCA/IHZvaWQgMCA6IEZlLmNvbnNlbnRfaWQsXG4gICAgICAgICAgYWlyd2FsbGV4X3BheW1lbnRfbWV0aG9kX2RhdGE6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiZ29vZ2xlcGF5XCIsXG4gICAgICAgICAgICBnb29nbGVwYXk6IHtcbiAgICAgICAgICAgICAgcGF5bWVudF9kYXRhX3R5cGU6IFwiZW5jcnlwdGVkX3BheW1lbnRfdG9rZW5cIixcbiAgICAgICAgICAgICAgZW5jcnlwdGVkX3BheW1lbnRfdG9rZW46IHBlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHEoXCJbMXN0XSBDb25maXJtIHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCBpZSk7XG4gICAgICBsZXQgWmUgPSAodiA9IChoID0gaWUucGF5bWVudF9tZXRob2RzKSA9PSBudWxsID8gdm9pZCAwIDogaFswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IHYuaWQ7XG4gICAgICBjb25zdCBhZSA9IChiID0gaWUucmVxdWlyZWRfdXNlcl9hY3Rpb25zKSA9PSBudWxsID8gdm9pZCAwIDogYi5maW5kKFxuICAgICAgICAoYmUpID0+IGJlLnR5cGUgPT09IFwiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiXG4gICAgICApO1xuICAgICAgaWYgKGFlICYmIGFlLnJlZGlyZWN0X3VybCkge1xuICAgICAgICBxKFwiM0RTIFJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIiwgYWUpO1xuICAgICAgICBjb25zdCB7IHN0YXR1czogYmUgfSA9IGF3YWl0IEhlKHtcbiAgICAgICAgICB1cmw6IGFlLnJlZGlyZWN0X3VybCxcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChxKGDilbAgM0RTIHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQgW1N0YXR1czogJHtiZX1dYCksIGJlID09PSBULkNBTkNFTExFRClcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgICAgaWYgKGJlID09PSBULkZBSUxVUkUpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gICAgICB9XG4gICAgICBpZiAoYWUgJiYgIVplICYmIChpZSA9IGF3YWl0IFkoZCwge1xuICAgICAgICBzZWN1cmVfdG9rZW46IF8udG9rZW4sXG4gICAgICAgIHRoZWlyX3BtX2lkOiBhZS50aGVpcl9wbV9pZCxcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5wcm92aWRlcixcbiAgICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogYWUuY29uc2VudF9pZFxuICAgICAgICB9XG4gICAgICB9KSwgcShcIlsybmRdIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIGllKSwgWmUgPSAoayA9IChFID0gaWUucGF5bWVudF9tZXRob2RzKSA9PSBudWxsID8gdm9pZCAwIDogRVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IGsuaWQpLCAhWmUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIFBNIElEIGZvdW5kXCIpO1xuICAgICAgcmV0dXJuIEJlKHtcbiAgICAgICAgbG9nUHJlZml4OiBcImF3eC1nb29nbGVwYXlcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogZCxcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IHgsXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IGllLFxuICAgICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChPKSB7XG4gICAgICB0aHJvdyBtZShcIkdvb2dsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBPKSwgZyhcImdvb2dsZV9wYXlfcGF5bWVudF9lcnJvclwiLCB7XG4gICAgICAgIGVycm9yOiBPXG4gICAgICB9KSwgbmV3IEVycm9yKChPID09IG51bGwgPyB2b2lkIDAgOiBPLm1lc3NhZ2UpID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICB9XG4gIH1cbiksIFRuID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgRm4gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pO1xuYXN5bmMgZnVuY3Rpb24genMoZSwgbikge1xuICB0cnkge1xuICAgIGNvbnN0IHIgPSAoYXdhaXQgZHQobi5jb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgYXBwbGVfcGF5bWVudF9zZXNzaW9uOiB7XG4gICAgICAgICAgdmFsaWRhdGlvbl91cmw6IGUudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICBpbml0aWF0aXZlX2NvbnRleHQ6IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgICAgICB0aGVpcl9hY2NvdW50X2lkOiBuLnByb2Nlc3NvckFjY291bnQucHJvY2Vzc29yX2FjY291bnRfaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKS5uZXh0X2FjdGlvbl9tZXRhZGF0YSwgcyA9IHIgPT0gbnVsbCA/IHZvaWQgMCA6IHIuYXBwbGVfcGF5X3Nlc3Npb247XG4gICAgaWYgKCFzKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc2Vzc2lvbiBkYXRhIHJlY2VpdmVkIGZyb20gcGF5bWVudCBmbG93XCIpO1xuICAgIG4uc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihzKSwgZyhcImFwcGxlX3BheV9jb21wbGV0ZV9tZXJjaGFudF92YWxpZGF0aW9uXCIsIHtcbiAgICAgIC4uLnNcbiAgICB9KTtcbiAgfSBjYXRjaCAodCkge1xuICAgIHRocm93IG4uc2Vzc2lvbi5hYm9ydCgpLCB0O1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBxcyhlLCBuKSB7XG4gIHZhciB0LCByO1xuICB0cnkge1xuICAgIGNvbnN0IHMgPSBlLnBheW1lbnQsIGkgPSBnbihuLm5vbkNkZUZvcm1JbnB1dHMsIHMpLCBhID0gc2UoaSwgbi5mb3JtQ2FsbGJhY2tzLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgZyhcImJpbGxpbmdfZGV0YWlsc19yZWNlaXZlZFwiLCB7XG4gICAgICAuLi5hXG4gICAgfSksIGF3YWl0IGdlKG4uY29ubmVjdGlvbiwge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBuZXdfY3VzdG9tZXJfZW1haWw6IGFbcC5FTUFJTF0sXG4gICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogYVtwLkZJUlNUX05BTUVdLFxuICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogYVtwLkxBU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfYWRkcmVzczoge1xuICAgICAgICB6aXBfY29kZTogYVtwLlpJUF9DT0RFXSxcbiAgICAgICAgY291bnRyeTogYVtwLkNPVU5UUlldXG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgYyA9IHtcbiAgICAgIGRhdGFEZXNjcmlwdG9yOiBcIkNPTU1PTi5BUFBMRS5JTkFQUC5QQVlNRU5UXCIsXG4gICAgICBkYXRhVmFsdWU6IHdpbmRvdy5idG9hKEpTT04uc3RyaW5naWZ5KHMudG9rZW4ucGF5bWVudERhdGEpKVxuICAgIH0sIGwgPSBhd2FpdCBZKG4uY29ubmVjdGlvbiwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBuLnByZWZpbGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICAgIG1vYmlsZV93YWxsZXRfcGF5bWVudF9kYXRhOiBjXG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCEoKHIgPSAodCA9IGwucGF5bWVudF9tZXRob2RzKSA9PSBudWxsID8gdm9pZCAwIDogdFswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IHIuaWQpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gUE0gSUQgZm91bmRcIik7XG4gICAgY29uc3QgZCA9IHtcbiAgICAgIHN0YXR1czogQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19TVUNDRVNTXG4gICAgfTtcbiAgICByZXR1cm4gbi5zZXNzaW9uLmNvbXBsZXRlUGF5bWVudChkKSwgQmUoe1xuICAgICAgbG9nUHJlZml4OiBcImF1dGhuZXQtYXBwbGVwYXlcIixcbiAgICAgIGFueUNkZUNvbm5lY3Rpb246IG4uY29ubmVjdGlvbixcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbi5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IGEsXG4gICAgICBjb25maXJtUmVzdWx0OiBsLFxuICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgIH0pO1xuICB9IGNhdGNoIChzKSB7XG4gICAgY29uc3QgaSA9IHtcbiAgICAgIHN0YXR1czogQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFXG4gICAgfTtcbiAgICB0aHJvdyBuLnNlc3Npb24uY29tcGxldGVQYXltZW50KGkpLCBzO1xuICB9XG59XG5jb25zdCB7IGxvZ19fOiBVZSwgZXJyX186IE1uIH0gPSBQKFwiYXV0aG5ldC1hcHBsZXBheVwiKSwgWXMgPSBkZShcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgZm9ybUNhbGxiYWNrczogbiB9KSA9PiB7XG4gICAgY29uc3QgdCA9IHtcbiAgICAgIHByb2Nlc3NvcjogQi5FbnVtLmF1dGhvcml6ZV9uZXQsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBUbik7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIHQ7XG4gICAgaWYgKFVlKFwiTG9hZGluZyBBcHBsZSBQYXkgc2NyaXB0XCIpLCBhd2FpdCBobigpLCAhd2luZG93LkFwcGxlUGF5U2Vzc2lvbiB8fCAhQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50cygpKVxuICAgICAgcmV0dXJuIFVlKFwiQXBwbGUgUGF5IGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBkZXZpY2UvYnJvd3NlclwiKSwgdDtcbiAgICBpZiAoIWF3YWl0IEFwcGxlUGF5U2Vzc2lvbi5jYW5NYWtlUGF5bWVudHMoKSlcbiAgICAgIHJldHVybiBVZShcIk5vIGFjdGl2ZSBjYXJkcyBhdmFpbGFibGUgZm9yIEFwcGxlIFBheVwiKSwgdDtcbiAgICBpZiAoIXIubWV0YWRhdGEucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpO1xuICAgIGNvbnN0IGEgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGMgPSBhd2FpdCBOKGEpLCBsID0gYy5tb2RlID09PSBcInNldHVwXCIsIHUgPSBhd2FpdCB3ZShhLCBjLnRva2VuLCBsLCB2b2lkIDApLCBkID0gYXN5bmMgKF8pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFIuYXV0aG9yaXplTmV0QXBwbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBlZShlLmZvcm1EaXYpLFxuICAgICAgICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5fLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKG0pIHtcbiAgICAgICAgTW4oXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBtKSwgZyhcImFwcGxlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgICBlcnJvcjogbVxuICAgICAgICB9KSwgbi5nZXQub25DaGVja291dEVycm9yKChtID09IG51bGwgPyB2b2lkIDAgOiBtLm1lc3NhZ2UpID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IEIuRW51bS5hdXRob3JpemVfbmV0LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogZFxuICAgIH07XG4gIH1cbiksIEJzID0gcmUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICBjdXN0b21QYXJhbXM6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogc1xuICB9KSA9PiB7XG4gICAgdmFyIGY7XG4gICAgY29uc3QgeyBpbml0aWFsUHJldmlldzogaSwgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogYSB9ID0gciwgYyA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBUbiksIGwgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHUgPSBhd2FpdCBOKGwpLCBkID0gdS5tb2RlID09PSBcInNldHVwXCIsIF8gPSB3bih7XG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBhLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IGksXG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgZGVmYXVsdExhYmVsOiAoZiA9IGMgPT0gbnVsbCA/IHZvaWQgMCA6IGMubWV0YWRhdGEpID09IG51bGwgPyB2b2lkIDAgOiBmLnByb2Nlc3Nvcl9hY2NvdW50X25hbWVcbiAgICB9KTtcbiAgICBnKFwiYXBwbGVfcGF5X2Zsb3dfc3RhcnRlZFwiLCB7XG4gICAgICBwcm9jZXNzb3JfbmFtZTogbi5wcm9jZXNzb3JfbmFtZSxcbiAgICAgIHByZWZpbGw6IHUsXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBhXG4gICAgfSk7XG4gICAgY29uc3QgbSA9IG5ldyBBcHBsZVBheVNlc3Npb24oMywgXyksIHkgPSB7XG4gICAgICBzZXNzaW9uOiBtLFxuICAgICAgY29ubmVjdGlvbjogZS5hbnlDZGVDb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICAgIHByb2Nlc3NvckFjY291bnQ6IG4ubWV0YWRhdGEsXG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgaXNTZXR1cE1vZGU6IGQsXG4gICAgICBiYXNlVXJsOiBlLmJhc2VVcmwsXG4gICAgICBmb3JtQ2FsbGJhY2tzOiBzXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKGgsIHYpID0+IHtcbiAgICAgIG0ub25jYW5jZWwgPSAoKSA9PiB7XG4gICAgICAgIFVlKFwiUGF5bWVudCBjYW5jZWxsZWQgYnkgdXNlclwiKSwgdihuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpKTtcbiAgICAgIH0sIG0ub252YWxpZGF0ZW1lcmNoYW50ID0gYXN5bmMgKGIpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB6cyhiLCB5KTtcbiAgICAgICAgfSBjYXRjaCAoRSkge1xuICAgICAgICAgIHYoRSk7XG4gICAgICAgIH1cbiAgICAgIH0sIG0ub25wYXltZW50bWV0aG9kc2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGIgPSB7XG4gICAgICAgICAgbmV3VG90YWw6IF8udG90YWxcbiAgICAgICAgfTtcbiAgICAgICAgbS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oYik7XG4gICAgICB9LCBtLm9ucGF5bWVudGF1dGhvcml6ZWQgPSBhc3luYyAoYikgPT4ge1xuICAgICAgICBnKFwiYXBwbGVfcGF5X3BheW1lbnRfYXV0aG9yaXplZFwiKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBFID0gYXdhaXQgcXMoYiwgeSk7XG4gICAgICAgICAgaChFKTtcbiAgICAgICAgfSBjYXRjaCAoRSkge1xuICAgICAgICAgIHYoRSk7XG4gICAgICAgIH1cbiAgICAgIH0sIG0uYmVnaW4oKTtcbiAgICB9KS5jYXRjaCgoaCkgPT4ge1xuICAgICAgdGhyb3cgTW4oXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBoKSwgZyhcImFwcGxlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IGhcbiAgICAgIH0pLCBoO1xuICAgIH0pO1xuICB9XG4pLCB7IGxvZ19fOiBsZSwgZXJyX186IEVlIH0gPSBQKFwiYXV0aG5ldC1nb29nbGVwYXlcIiksIEhzID0gZGUoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIHZhciBkLCBfO1xuICAgIGxlKFwiSW5pdGlhbGl6aW5nIEF1dGhuZXQgR29vZ2xlUGF5IGZsb3dcIik7XG4gICAgY29uc3QgdCA9IHtcbiAgICAgIHByb2Nlc3NvcjogQi5FbnVtLmF1dGhvcml6ZV9uZXQsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgciA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBGbik7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIHQ7XG4gICAgbGUoXCJHb29nbGUgUGF5IENQTVwiLCByKTtcbiAgICBjb25zdCBzID0gci5tZXRhZGF0YTtcbiAgICBpZiAoIXMucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICByZXR1cm4gRWUoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpLCB0O1xuICAgIGlmIChsZShcIkxvYWRpbmcgR29vZ2xlIFBheSBzY3JpcHRcIiksIGF3YWl0IEFuKCksICEoKF8gPSAoZCA9IHdpbmRvdy5nb29nbGUpID09IG51bGwgPyB2b2lkIDAgOiBkLnBheW1lbnRzKSAhPSBudWxsICYmIF8uYXBpKSlcbiAgICAgIHJldHVybiBFZShcIkdvb2dsZSBQYXkgU0RLIG5vdCBsb2FkZWQgcHJvcGVybHlcIiksIHQ7XG4gICAgbGUoXCJHb29nbGUgUGF5IFNESyBsb2FkZWRcIiwgd2luZG93Lmdvb2dsZS5wYXltZW50cyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG0gPSBKZSh7XG4gICAgICAgIGdhdGV3YXk6IFwiYXV0aG9yaXplbmV0XCIsXG4gICAgICAgIGdhdGV3YXlNZXJjaGFudElkOiBzLnByb2Nlc3Nvcl9hY2NvdW50X2lkLFxuICAgICAgICBtZXJjaGFudE5hbWU6IHMucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgICAgbWVyY2hhbnRJZDogcy5nb29nbGVfcGF5X21lcmNoYW50X2lkID8/IFwiXCIsXG4gICAgICAgIC8vIFRoaXMgaXMgZm9yIGluaXRpYWwgcGF5bWVudCByZXF1ZXN0IHRvIGNoZWNrIGF2YWlsYWJpbGl0eS4gQWN0dWFsIGBpbml0aWFsUHJldmlld2Agd2lsbCBiZSB1c2VkIHdoZW4gdGhlIFVJIGlzIHNob3duXG4gICAgICAgIGluaXRpYWxQcmV2aWV3OiB7XG4gICAgICAgICAgYW1vdW50QXRvbTogMCxcbiAgICAgICAgICBjdXJyZW5jeTogXCJVU0RcIlxuICAgICAgICB9XG4gICAgICB9KSwgeSA9IGF3YWl0IEtlKGUuYmFzZVVybCwgbSksIHsgcmVzdWx0OiBmIH0gPSBhd2FpdCB5LmlzUmVhZHlUb1BheShtKTtcbiAgICAgIGlmICghZilcbiAgICAgICAgcmV0dXJuIGxlKFwiR29vZ2xlIFBheSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXJcIiksIHQ7XG4gICAgfSBjYXRjaCAobSkge1xuICAgICAgcmV0dXJuIEVlKFwiRXJyb3IgY2hlY2tpbmcgR29vZ2xlIFBheSBhdmFpbGFiaWxpdHlcIiwgbSksIHQ7XG4gICAgfVxuICAgIGNvbnN0IGkgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGEgPSBhd2FpdCBOKGkpLCBjID0gYS5tb2RlID09PSBcInNldHVwXCIsIGwgPSBhd2FpdCB3ZShpLCBhLnRva2VuLCBjLCB2b2lkIDApLCB1ID0gYXN5bmMgKG0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFIuYXV0aG9yaXplTmV0R29vZ2xlUGF5LnJ1bih7XG4gICAgICAgICAgY29udGV4dDogZSxcbiAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogZWUoZS5mb3JtRGl2KSxcbiAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMCxcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLm0sXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogbFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoICh5KSB7XG4gICAgICAgIEVlKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIHkpLCBnKFwiZ29vZ2xlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgICBlcnJvcjogeVxuICAgICAgICB9KSwgbi5nZXQub25DaGVja291dEVycm9yKCh5ID09IG51bGwgPyB2b2lkIDAgOiB5Lm1lc3NhZ2UpID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IEIuRW51bS5hdXRob3JpemVfbmV0LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogdVxuICAgIH07XG4gIH1cbiksIEpzID0gcmUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBub25DZGVGb3JtSW5wdXRzOiBuLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogc1xuICB9KSA9PiB7XG4gICAgdmFyIHksIGYsIGgsIHY7XG4gICAgY29uc3QgeyBpbml0aWFsUHJldmlldzogaSwgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogYSB9ID0gcywgbCA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBGbikubWV0YWRhdGEsIHUgPSBKZSh7XG4gICAgICBnYXRld2F5OiBcImF1dGhvcml6ZW5ldFwiLFxuICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IGwucHJvY2Vzc29yX2FjY291bnRfaWQsXG4gICAgICBtZXJjaGFudE5hbWU6IGwucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgIG1lcmNoYW50SWQ6IGwuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IGksXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBhXG4gICAgfSksIGQgPSBlLmFueUNkZUNvbm5lY3Rpb24sIF8gPSBhd2FpdCBOKGQpO1xuICAgIGcoXCJnb29nbGVfcGF5X2Zsb3dfc3RhcnRlZFwiLCB7XG4gICAgICBwcm9jZXNzb3JfbmFtZTogdC5wcm9jZXNzb3JfbmFtZSxcbiAgICAgIHByZWZpbGw6IF8sXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBhXG4gICAgfSk7XG4gICAgY29uc3QgbSA9IGF3YWl0IEtlKGUuYmFzZVVybCwgdSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGIgPSBhd2FpdCBtLmxvYWRQYXltZW50RGF0YSh1KTtcbiAgICAgIGxlKFwiR29vZ2xlIFBheSBQYXltZW50IGRhdGFcIiwgYik7XG4gICAgICBjb25zdCBFID0gUm4obiwgYiksIGsgPSBzZShFLCByLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgICBnKFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgICAgLi4ua1xuICAgICAgfSk7XG4gICAgICBjb25zdCBPID0gKGYgPSAoeSA9IGIucGF5bWVudE1ldGhvZERhdGEpID09IG51bGwgPyB2b2lkIDAgOiB5LnRva2VuaXphdGlvbkRhdGEpID09IG51bGwgPyB2b2lkIDAgOiBmLnRva2VuO1xuICAgICAgaWYgKCFPKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBwYXltZW50IHRva2VuIHJlY2VpdmVkIGZyb20gR29vZ2xlIFBheVwiKTtcbiAgICAgIGNvbnN0IHRlID0gYXdhaXQgZ2UoZCwge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdCxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2VtYWlsOiBrW3AuRU1BSUxdLFxuICAgICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZToga1twLkZJUlNUX05BTUVdLFxuICAgICAgICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiBrW3AuTEFTVF9OQU1FXSxcbiAgICAgICAgbmV3X2N1c3RvbWVyX2FkZHJlc3M6IHtcbiAgICAgICAgICB6aXBfY29kZToga1twLlpJUF9DT0RFXSxcbiAgICAgICAgICBjb3VudHJ5OiBrW3AuQ09VTlRSWV1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsZShcIlN0YXJ0IHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCB0ZSk7XG4gICAgICBjb25zdCB4ID0gYXdhaXQgWShkLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogXy50b2tlbixcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgICBtb2JpbGVfd2FsbGV0X3BheW1lbnRfZGF0YToge1xuICAgICAgICAgICAgZGF0YURlc2NyaXB0b3I6IFwiQ09NTU9OLkdPT0dMRS5JTkFQUC5QQVlNRU5UXCIsXG4gICAgICAgICAgICBkYXRhVmFsdWU6IHdpbmRvdy5idG9hKE8pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghKCh2ID0gKGggPSB4LnBheW1lbnRfbWV0aG9kcykgPT0gbnVsbCA/IHZvaWQgMCA6IGhbMF0pID09IG51bGwgPyB2b2lkIDAgOiB2LmlkKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gUE0gSUQgZm91bmRcIik7XG4gICAgICByZXR1cm4gQmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwiYXV0aG5ldC1nb29nbGVwYXlcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogZCxcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IGssXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IHgsXG4gICAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGIpIHtcbiAgICAgIHRocm93IEVlKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIGIpLCBnKFwiZ29vZ2xlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IGJcbiAgICAgIH0pLCBuZXcgRXJyb3IoKGIgPT0gbnVsbCA/IHZvaWQgMCA6IGIubWVzc2FnZSkgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogS3MsIGVycl9fOiBEbiB9ID0gUChcInBvY2t5dC1jY1wiKSwgWnMgPSB6JDEub2JqZWN0KHtcbiAgXCJvcC1wb2NreXQtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXR4bi1ub1wiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXJlZi1ub1wiOiB6JDEuc3RyaW5nKClcbn0pLCBXcyA9IChlKSA9PiB7XG4gIGNvbnN0IG4gPSBacy5zYWZlUGFyc2UoZSk7XG4gIGlmICghbi5zdWNjZXNzKSB7XG4gICAgY29uc3QgdCA9IFwiVW5hYmxlIHRvIHByb2Nlc3MgeW91ciBjcmVkaXQgY2FyZC4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgciA9IGBQb2NreXQgM0RTIGlzIHJlcXVpcmVkIGJ1dCBoZWFkZXJzIGFyZSBtYWxmb3JtZWQuIEdvdDogJHtKU09OLnN0cmluZ2lmeShlKX1gO1xuICAgIHRocm93IERuKHIpLCBuZXcgRXJyb3IodCk7XG4gIH1cbiAgcmV0dXJuIG4uZGF0YTtcbn0sIE5uID0gKGUpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBuID0gbmV3IFVSTChlID8/IFwiXCIpLnNlYXJjaFBhcmFtcy5nZXQoXCJ2YXVsdElkXCIpO1xuICAgIGlmICghbilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHZhdWx0IElEIGZvdW5kIGluIDNEUyB2ZXJpZmljYXRpb24gcmVzdWx0XCIpO1xuICAgIHJldHVybiBLcyhgM0RTIHZlcmlmaWNhdGlvbiBzdWNjZXNzLiBbVmF1bHQgSUQ6ICR7bn1dYCksIG47XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICBjb25zdCB0ID0gXCJFcnJvciB2ZXJpZnlpbmcgM0RTIHZlcmlmaWNhdGlvbiByZXN1bHQuXCI7XG4gICAgdGhyb3cgRG4odCwgYFJlc3VsdGluZyBVUkw6ICR7ZX0uXG5FcnJvcjogJHtWKG4pfWApLCBuZXcgRXJyb3IodCk7XG4gIH1cbn0sIFFzID0gKGUsIG4pID0+IG5ldyBVUkwoZSkuc2VhcmNoUGFyYW1zLmdldChuKSwgWHMgPSAoZSkgPT4gKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGVbXCJvcC1wb2NreXQtM2RzLXVybFwiXSkgIT09IHZvaWQgMCwgZWkgPSBhc3luYyAoZSwgbikgPT4ge1xuICBjb25zdCB0ID0gV3MobiksIHIgPSBhd2FpdCB2bih7IHVybDogdFtcIm9wLXBvY2t5dC0zZHMtdXJsXCJdLCBiYXNlVXJsOiBlIH0pO1xuICByZXR1cm4ge1xuICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICB2YXVsdF9pZDogTm4oci5ocmVmID8/IFwiXCIpLFxuICAgICAgdHJhbnNhY3Rpb25fbm86IHRbXCJvcC1wb2NreXQtdHhuLW5vXCJdLFxuICAgICAgcmVmZXJlbmNlX25vOiB0W1wib3AtcG9ja3l0LXJlZi1ub1wiXVxuICAgIH1cbiAgfTtcbn0sIHRpID0geiQxLmVudW0oW1widGVzdFwiLCBcImxpdmVcIiwgXCJsaXZlLXVzXCIsIFwibGl2ZS1pblwiLCBcImxpdmUtYXBzZVwiLCBcImxpdmUtYXVcIl0pLCBuaSA9IHokMS5lbnVtKFtcbiAgXCJhclwiLFxuICBcImJnLUJHXCIsXG4gIFwiY2EtRVNcIixcbiAgXCJjcy1DWlwiLFxuICBcImRhLURLXCIsXG4gIFwiZGUtREVcIixcbiAgXCJlbC1HUlwiLFxuICBcImVuLVVTXCIsXG4gIFwiZXMtRVNcIixcbiAgXCJldC1FRVwiLFxuICBcImZpLUZJXCIsXG4gIFwiZnItRlJcIixcbiAgXCJoci1IUlwiLFxuICBcImh1LUhVXCIsXG4gIFwiaXMtSVNcIixcbiAgXCJpdC1JVFwiLFxuICBcImphLUpQXCIsXG4gIFwia28tS1JcIixcbiAgXCJsdC1MVFwiLFxuICBcImx2LUxWXCIsXG4gIFwibmwtTkxcIixcbiAgXCJuby1OT1wiLFxuICBcInBsLVBMXCIsXG4gIFwicHQtQlJcIixcbiAgXCJwdC1QVFwiLFxuICBcInJvLVJPXCIsXG4gIFwicnUtUlVcIixcbiAgXCJzay1TS1wiLFxuICBcInNsLVNJXCIsXG4gIFwic3YtU0VcIixcbiAgXCJ6aC1DTlwiLFxuICBcInpoLVRXXCJcbl0pLCB7IGxvZ19fOiBfZSwgZXJyX186IEFlIH0gPSBQKFwiYWR5ZW4tY2NcIiksIHJpID0geiQxLm9iamVjdCh7XG4gIFwib3AtYWNjb3VudC1pZFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWR5ZW4tY2xpZW50LWtleVwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWR5ZW4tZW52aXJvbm1lbnRcIjogdGksXG4gIFwib3AtYWR5ZW4tYWN0aW9uXCI6IHokMS5zdHJpbmcoKVxufSksIExuID0gXCJVbmFibGUgdG8gcHJvY2VzcyB5b3VyIGNyZWRpdCBjYXJkLiBQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlLlwiLCBvaSA9IChlKSA9PiB7XG4gIGNvbnN0IG4gPSByaS5zYWZlUGFyc2UoZSk7XG4gIGlmICghbi5zdWNjZXNzKVxuICAgIHRocm93IEFlKGBBZHllbiAzRFMgaXMgcmVxdWlyZWQgYnV0IGhlYWRlcnMgYXJlIG1hbGZvcm1lZC4gR290OiAke0pTT04uc3RyaW5naWZ5KGUpfWApLCBuZXcgRXJyb3IoTG4pO1xuICByZXR1cm4gbi5kYXRhO1xufSwgc2kgPSAoZSkgPT4gSlNPTi5wYXJzZShlKSwgUHQgPSAoKSA9PiBcIkFkeWVuV2ViXCIgaW4gd2luZG93ICYmIFwiQWR5ZW5DaGVja291dFwiIGluIHdpbmRvdy5BZHllbldlYiwgaWkgPSBhc3luYyAoKSA9PiB7XG4gIF9lKFwiV2FpdGluZyBmb3IgQWR5ZW4gU0RLIHRvIGxvYWQuLi5cIik7XG4gIGZvciAobGV0IGUgPSAwOyBlIDwgMTA7IGUrKylcbiAgICBQdCgpIHx8IGF3YWl0IGF0KDUwMCk7XG4gIGlmICghUHQoKSlcbiAgICB0aHJvdyBBZShcIkFkeWVuIFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCBuZXcgRXJyb3IoTG4pO1xuICByZXR1cm4gX2UoXCJBZHllbiBTREsgbG9hZGVkIHN1Y2Nlc3NmdWxseVwiKSwgd2luZG93LkFkeWVuV2ViLkFkeWVuQ2hlY2tvdXQ7XG59LCBhaSA9IChlKSA9PiB7XG4gIGNvbnN0IHsgaGVhZGVyczogbiwgbG9jYWxlOiB0LCBjb3VudHJ5Q29kZTogciwgY29tcG9uZW50OiBzLCBob3N0OiBpLCBjYW5jZWxCdXR0b246IGEgfSA9IGUsIGMgPSBzaShuW1wib3AtYWR5ZW4tYWN0aW9uXCJdKTtcbiAgcmV0dXJuIF9lKGBSdW5uaW5nIEFkeWVuIDNEUyBmbG93IGZvciBhY3Rpb24gdHlwZTogJHtjLnR5cGV9YCksIG5ldyBQcm9taXNlKChsKSA9PiB7XG4gICAgY29uc3QgdSA9ICgpID0+IHtcbiAgICAgIF9lKFwiQ2xlYW5pbmcgdXAgQWR5ZW4gM0RTIGZsb3dcIiksIGEucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG0pLCBpLnJlbW92ZSgpO1xuICAgIH0sIGQgPSAoZikgPT4ge1xuICAgICAgQWUoXCJBdXRoZW50aWNhdGlvbiBmYWlsZWQuIFJlc3VsdDpcIiwgZiksIGwoeyBzdGF0dXM6IFQuRkFJTFVSRSwgY2xlYW51cDogdSB9KTtcbiAgICB9LCBfID0gKGYpID0+IHtcbiAgICAgIEFlKFwiQWR5ZW4gZXJyb3I6XCIsIGYpLCBsKHsgc3RhdHVzOiBULkZBSUxVUkUsIGNsZWFudXA6IHUgfSk7XG4gICAgfSwgbSA9ICgpID0+IHtcbiAgICAgIGwoeyBzdGF0dXM6IFQuQ0FOQ0VMTEVELCBjbGVhbnVwOiB1IH0pO1xuICAgIH07XG4gICAgYS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgbSk7XG4gICAgY29uc3QgeSA9IChmLCBoLCB2KSA9PiB7XG4gICAgICBpLnJlbW92ZSgpLCBsKHsgc3RhdHVzOiBULlNVQ0NFU1MsIGFkZGl0aW9uYWxEZXRhaWxzOiBmLCBjbGVhbnVwOiB1IH0pO1xuICAgIH07XG4gICAgaWkoKS50aGVuKFxuICAgICAgKGYpID0+IGYoe1xuICAgICAgICBjbGllbnRLZXk6IG5bXCJvcC1hZHllbi1jbGllbnQta2V5XCJdLFxuICAgICAgICBlbnZpcm9ubWVudDogbltcIm9wLWFkeWVuLWVudmlyb25tZW50XCJdLFxuICAgICAgICBsb2NhbGU6IHQsXG4gICAgICAgIGNvdW50cnlDb2RlOiByLFxuICAgICAgICBvbkFkZGl0aW9uYWxEZXRhaWxzOiB5LFxuICAgICAgICBvblBheW1lbnRGYWlsZWQ6IGQsXG4gICAgICAgIG9uRXJyb3I6IF9cbiAgICAgIH0pXG4gICAgKS50aGVuKChmKSA9PiB7XG4gICAgICBmLmNyZWF0ZUZyb21BY3Rpb24oYywgeyBjaGFsbGVuZ2VXaW5kb3dTaXplOiBcIjAzXCIgfSkubW91bnQocyk7XG4gICAgfSk7XG4gIH0pO1xufSwgY2kgPSAoZSkgPT4ge1xuICBjb25zdCBuID0gbmF2aWdhdG9yLmxhbmd1YWdlcyAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aCA/IG5hdmlnYXRvci5sYW5ndWFnZXNbMF0gOiBuYXZpZ2F0b3IubGFuZ3VhZ2UsIHQgPSBlID8/IG4sIHIgPSBuaS5zYWZlUGFyc2UodCk7XG4gIHJldHVybiByLnN1Y2Nlc3MgPyAoX2UoYFJlc29sdmVkIGxvY2FsZTogJHtyLmRhdGF9YCksIHIuZGF0YSkgOiAoQWUoYFJlc29sdmVkIGludmFsaWQgbG9jYWxlOiAke3R9LiBEZWZhdWx0aW5nIHRvIGVuLVVTLmApLCBcImVuLVVTXCIpO1xufSwgbGkgPSAoZSkgPT4gKGUgPT0gbnVsbCA/IHZvaWQgMCA6IGVbXCJvcC1hZHllbi1hY3Rpb25cIl0pICE9PSB2b2lkIDAsIHVpID0gYXN5bmMgKGUsIG4sIHQpID0+IHtcbiAgY29uc3QgciA9IG9pKG4pLCBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgcy5pZCA9IFwiYWR5ZW4tY29udGFpbmVyXCI7XG4gIGNvbnN0IHsgaG9zdDogaSwgaWZyYW1lOiBhLCBjYW5jZWxCdXR0b246IGMgfSA9IGJuKFwiaHR0cDovL2V4YW1wbGUuY29tXCIpO1xuICBhLnJlcGxhY2VXaXRoKHMpO1xuICBjb25zdCBsID0gYXdhaXQgYWkoe1xuICAgIGhlYWRlcnM6IHIsXG4gICAgbG9jYWxlOiBjaSh0KSxcbiAgICBjb3VudHJ5Q29kZTogZSxcbiAgICBjb21wb25lbnQ6IHMsXG4gICAgaG9zdDogaSxcbiAgICBjYW5jZWxCdXR0b246IGNcbiAgfSk7XG4gIGlmIChsLmNsZWFudXAoKSwgbC5zdGF0dXMgPT09IFQuRkFJTFVSRSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgaWYgKGwuc3RhdHVzID09PSBULkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKGwuc3RhdHVzID09PSBULlNVQ0NFU1MpIHtcbiAgICBpZiAoIWwuYWRkaXRpb25hbERldGFpbHMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIHN1Y2NlZWRlZCBidXQgbm8gYWRkaXRpb25hbCBkZXRhaWxzIHdlcmUgcmV0dXJuZWRcIik7XG4gICAgcmV0dXJuIF9lKFwiM0RTIHZlcmlmaWNhdGlvbiBzdWNjZWVkZWRcIiksIHtcbiAgICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICAgIGFkZGl0aW9uYWxfZGV0YWlsczogbC5hZGRpdGlvbmFsRGV0YWlscy5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlXG4gICAgWWUobC5zdGF0dXMpO1xufSwgeyBsb2dfXzogUywgZXJyX186IGt0IH0gPSBQKFwiY29tbW9uLWNjXCIpLCB7IGxvZ19fOiBBdCB9ID0gUChcInN0cmlwZS1jY1wiKTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuY29uc3QgZGkgPSByZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiB0LFxuICAgIGZvcm1DYWxsYmFja3M6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBzXG4gIH0pID0+IHtcbiAgICB2YXIgdTtcbiAgICBTKFwi4pScIFJ1bm5pbmcgY29tbW9uIENDIGZsb3cuLi5cIiwgeyBjaGVja291dFBheW1lbnRNZXRob2Q6IG4gfSk7XG4gICAgY29uc3QgaSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgYSA9IGF3YWl0IE4oaSk7XG4gICAgZyhcImNvbW1vbl9jY19mbG93X3N0YXJ0ZWRcIiwge1xuICAgICAgLi4ubixcbiAgICAgIHByZWZpbGw6IGFcbiAgICB9KSwgUyhg4pScIFZhbGlkYXRpbmcgbm9uLUNERSBmb3JtIGZpZWxkcyBbTW9kZTogJHthLm1vZGV9XWApO1xuICAgIGNvbnN0IGMgPSBzZSh0LCByLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgZyhcImJpbGxpbmdfZGV0YWlsc19yZWNlaXZlZFwiLCB7XG4gICAgICAuLi5jXG4gICAgfSk7XG4gICAgY29uc3QgbCA9IHtcbiAgICAgIHNlc3Npb25faWQ6IGUuZWxlbWVudHNTZXNzaW9uSWQsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbixcbiAgICAgIG5vbl9jZGVfZm9ybV9maWVsZHM6IGMsXG4gICAgICBleHRyYV9tZXRhZGF0YToge1xuICAgICAgICBvcmlnaW46IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cbiAgICAgIH0sXG4gICAgICBwYXltZW50X3JvdXRlX2lkOiBzLnBheW1lbnRSb3V0ZUlkXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgUyhg4pScIFRva2VuaXppbmcgY2FyZCBpbmZvIGluIENERSBbU2Vzc2lvbjogJHtlLmVsZW1lbnRzU2Vzc2lvbklkfV1gKTtcbiAgICAgIGNvbnN0IGQgPSBhd2FpdCBmcyhzLmN1cnJlbnRDZGVDb25uZWN0aW9ucywge1xuICAgICAgICBzZXNzaW9uX2lkOiBlLmVsZW1lbnRzU2Vzc2lvbklkXG4gICAgICB9KTtcbiAgICAgIGlmIChOcyhkLCByLmdldC5vblZhbGlkYXRpb25FcnJvciksIGEubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICAgIFMoYOKUnCBTZXR0aW5nIHVwIHBheW1lbnQgbWV0aG9kIGluIENERSBbVG9rZW46ICR7YS50b2tlbn1dYCk7XG4gICAgICAgIGNvbnN0IF8gPSBhd2FpdCBfcyhpLCBsKTtcbiAgICAgICAgcmV0dXJuIFMoYOKVsCBTZXR1cCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IFtQTSBJRDogJHtfLnBheW1lbnRfbWV0aG9kX2lkfV1gKSwgeyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogXyB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUyhg4pScIEluaXRpYWwgY2hlY2tvdXQgZmxvdy4gQ2hlY2tpbmcgb3V0IGNhcmQgaW5mbyBpbiBDREUgW1Nlc3Npb246ICR7ZS5lbGVtZW50c1Nlc3Npb25JZH1dYCk7XG4gICAgICAgIGNvbnN0IF8gPSBhd2FpdCBTdChpLCBsKTtcbiAgICAgICAgcmV0dXJuIFMoXCLilbAgQ2hlY2tvdXQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5cIiksIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IF8gfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChkKSB7XG4gICAgICBpZiAoZCBpbnN0YW5jZW9mIG1uICYmIGQub3JpZ2luYWxFcnJvck1lc3NhZ2UuaW5jbHVkZXMoXCIzRFNfUkVRVUlSRURcIikpIHtcbiAgICAgICAgUyhcIuKUnCBDYXJkIHJlcXVpcmVzIDNEUywgc3RhcnRpbmcgbm9uLWxlZ2FjeSBwYXltZW50IGZsb3dcIiksIFMoXCJSZWNlaXZlZCAzRFMgZXJyb3IgcmVzcG9uc2UgaGVhZGVyczpcIiwgZC5yZXNwb25zZS5oZWFkZXJzKSwgZyhcIjNkc19yZXF1aXJlZFwiLCB7XG4gICAgICAgICAgLi4ubixcbiAgICAgICAgICAuLi5kLnJlc3BvbnNlLmhlYWRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IF8gPSBYcyhkLnJlc3BvbnNlLmhlYWRlcnMpO1xuICAgICAgICBpZiAoXykge1xuICAgICAgICAgIFMoXCLilJwgUG9ja3l0IDNEUyBjYXNlIGRldGVjdGVkLiBHb2luZyB0aHJvdWdoIFBvY2t5dCAzRFMgZmxvdy5cIik7XG4gICAgICAgICAgY29uc3QgYiA9IGF3YWl0IGVpKGUuYmFzZVVybCwgZC5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgICBsLmV4dHJhX21ldGFkYXRhLnBvY2t5dCA9IGI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEZzKGQucmVzcG9uc2UuaGVhZGVycykpIHtcbiAgICAgICAgICBTKFwi4pScIEFpcndhbGxleCAzRFMgY2FzZSBkZXRlY3RlZC4gR29pbmcgdGhyb3VnaCBBaXJ3YWxsZXggM0RTIGZsb3cuXCIpO1xuICAgICAgICAgIGNvbnN0IGIgPSBhd2FpdCBEcyhlLmJhc2VVcmwsIGQucmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICAgICAgbC5leHRyYV9tZXRhZGF0YS5haXJ3YWxsZXggPSBiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaShkLnJlc3BvbnNlLmhlYWRlcnMpKSB7XG4gICAgICAgICAgUyhcIuKUnCBBZHllbiAzRFMgY2FzZSBkZXRlY3RlZC4gR29pbmcgdGhyb3VnaCBBZHllbiAzRFMgZmxvdy5cIik7XG4gICAgICAgICAgY29uc3QgYiA9IGF3YWl0IHVpKFxuICAgICAgICAgICAgdFtwLkNPVU5UUlldLFxuICAgICAgICAgICAgZC5yZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgICAgYS5sb2NhbGVcbiAgICAgICAgICApO1xuICAgICAgICAgIGwuZXh0cmFfbWV0YWRhdGEuYWR5ZW4gPSBiO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGYgPSBhd2FpdCB1cyhpLCBsKTtcbiAgICAgICAgUyhcIuKUnCBQYXltZW50IGZsb3cgcmVzdWx0OlwiLCBmKTtcbiAgICAgICAgY29uc3QgaCA9ICgodSA9IGQucmVzcG9uc2UuaGVhZGVycykgPT0gbnVsbCA/IHZvaWQgMCA6IHVbXCJvcC1zaG91bGQtdXNlLW5ldy1mbG93XCJdKSAhPT0gXCJ0cnVlXCI7XG4gICAgICAgIF8gPyBTKFwi4pScIFByZS1zdGFydCAzRFMgaXMgc3VjY2Vzc2Z1bCwgb3RoZXIgM0RTIGZsb3dzIHdpbGwgYmUgc2tpcHBlZC5cIikgOiBoID8gKFMoXCLilJwgVXNpbmcgc3RyaXBlIDNEUyBmbG93XCIpLCBhd2FpdCBfaShmKSkgOiAoUyhcIuKUnCBVc2luZyBjb21tb24gM0RTIGZsb3dcIiksIGF3YWl0IGZpKGYsIGUuYmFzZVVybCkpO1xuICAgICAgICBjb25zdCB2ID0gZi5jY19wbV9pZDtcbiAgICAgICAgaWYgKGEubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICAgICAgUyhg4pScIENvbmZpcm1pbmcgcGF5bWVudCBmbG93IFtjY19wbV9pZDogJHt2fV1gKTtcbiAgICAgICAgICBjb25zdCBiID0gYXdhaXQgWShpLCB7XG4gICAgICAgICAgICBzZWN1cmVfdG9rZW46IGEudG9rZW4sXG4gICAgICAgICAgICBleGlzdGluZ19jY19wbV9pZDogdlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIFMoXCLilJwgQ29uZmlybSBwYXltZW50IGZsb3cgcmVzdWx0IHJlY2VpdmVkIFJlc3VsdDpcIiwgYik7XG4gICAgICAgICAgY29uc3QgRSA9IFRlKGIpO1xuICAgICAgICAgIHJldHVybiBTKGDilbAgU2V0dXAgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBbUE0gSUQ6ICR7RS5wYXltZW50X21ldGhvZF9pZH1dYCksIHsgbW9kZTogXCJzZXR1cFwiLCByZXN1bHQ6IEUgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBTKGDilJwgQ2hlY2tpbmcgb3V0IGFmdGVyIDNEUyBmbG93IFtGbG93OiAke2ggPyBcImxlZ2FjeVwiIDogXCJuZXdcIn1dYCk7XG4gICAgICAgICAgY29uc3QgYiA9IGF3YWl0IFN0KGksIHtcbiAgICAgICAgICAgIC4uLmwsXG4gICAgICAgICAgICBleGlzdGluZ19jY19wbV9pZDogdixcbiAgICAgICAgICAgIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IGhcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gUyhcIuKVsCBDaGVja291dCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LlwiKSwgeyBtb2RlOiBcImNoZWNrb3V0XCIsIHJlc3VsdDogYiB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aHJvdyBrdChcIuKVsCBFcnJvciBjaGVja2luZyBvdXQgY2FyZCBpbmZvIGluIENERVwiKSwga3QoZCksIGQ7XG4gICAgfVxuICB9XG4pLCBwaSA9IChlKSA9PiB7XG4gIGNvbnN0IG4gPSBlLnJlcXVpcmVkX3VzZXJfYWN0aW9ucy5maW5kKCh0KSA9PiB0LnR5cGUgPT09IFwic3RyaXBlXzNkc1wiKTtcbiAgaWYgKCFuKVxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHN0cmlwZSAzRFMgYWN0aW9uIGZvdW5kXCIpO1xuICByZXR1cm4gU3IucGFyc2Uobik7XG59LCBtaSA9IFtcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIiwgXCJhZHllblwiXSwgeWkgPSAoZSkgPT4ge1xuICBjb25zdCBuID0gZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMuZmluZCgodCkgPT4gbWkuaW5jbHVkZXModC50eXBlKSk7XG4gIGlmICghbilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb21tb24gM0RTIGFjdGlvbiBmb3VuZFwiKTtcbiAgcmV0dXJuIHZyLnBhcnNlKG4pO1xufSwgZmkgPSBhc3luYyAoZSwgbikgPT4ge1xuICBjb25zdCB0ID0geWkoZSk7XG4gIGlmICh0LnJlZGlyZWN0X3VybCA9PT0gXCIzRFNfQ09NUExFVEVcIikge1xuICAgIFMoXCLilJwgM0RTIGZsb3cgY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiKSwgZyhcIjNkc19jb21wbGV0ZVwiKTtcbiAgICByZXR1cm47XG4gIH1cbiAgUyhg4pScIFVzaW5nIGNvbW1vbiAzRFMgZmxvdyBbVVJMOiAke3QucmVkaXJlY3RfdXJsfV1gKSwgZyhcIjNkc19yZWRpcmVjdFwiLCB7XG4gICAgLi4udFxuICB9KTtcbiAgY29uc3QgeyBzdGF0dXM6IHIgfSA9IGF3YWl0IEhlKHsgdXJsOiB0LnJlZGlyZWN0X3VybCwgYmFzZVVybDogbiB9KTtcbiAgaWYgKFMoYOKVsCAzRFMgdmVyaWZpY2F0aW9uIGNvbXBsZXRlZCBbU3RhdHVzOiAke3J9XWApLCByID09PSBULkNBTkNFTExFRClcbiAgICB0aHJvdyBnKFwiM2RzX2NhbmNlbGxlZFwiKSwgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gIGlmIChyID09PSBULkZBSUxVUkUpXG4gICAgdGhyb3cgZyhcIjNkc19mYWlsdXJlXCIpLCBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbn0sIF9pID0gYXN5bmMgKGUpID0+IHtcbiAgY29uc3QgbiA9IHBpKGUpO1xuICBnKFwiM2RzX3N0cmlwZV9yZWRpcmVjdFwiLCB7XG4gICAgLi4ublxuICB9KSwgQXQoYOKUnCBVc2luZyBzdHJpcGUgM0RTIGZsb3cgW0NsaWVudCBTZWNyZXQ6ICR7bi5jbGllbnRfc2VjcmV0LnN1YnN0cmluZygwLCA4KX0uLi5dYCksIGF3YWl0IEZyKG4pLCBnKFwiM2RzX3N0cmlwZV9jb21wbGV0ZVwiKSwgQXQoXCLilbAgU3RyaXBlIDNEUyBmbG93IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIik7XG59LCBoaSA9IDEsIGdpID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImxvb3BcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImNyeXB0b1wiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgZW50aXR5X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgYXBpX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gICAgc3VwcG9ydGVkX2N1cnJlbmNpZXM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICAgIGVudmlyb25tZW50OiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCB7IGxvZ19fOiBqLCBlcnJfXzogT24gfSA9IFAoXCJsb29wLWNyeXB0b1wiKSwgd2kgPSB6JDEub2JqZWN0KHtcbiAgbG9vcEZpcnN0TmFtZTogSSxcbiAgbG9vcExhc3ROYW1lOiBJLFxuICBsb29wRW1haWw6IEksXG4gIFtwLlBST01PVElPTl9DT0RFXTogQ1xufSksIGJpID0geiQxLm9iamVjdCh7XG4gIGxvb3BGaXJzdE5hbWU6IEMsXG4gIGxvb3BMYXN0TmFtZTogQyxcbiAgbG9vcEVtYWlsOiBDLFxuICBbcC5QUk9NT1RJT05fQ09ERV06IENcbn0pLCBJdCA9IChlLCBuLCB0LCByKSA9PiB7XG4gIGNvbnN0IHMgPSB0LnNhZmVQYXJzZShlKTtcbiAgaWYgKCFzLnN1Y2Nlc3MpIHtcbiAgICBjb25zdCBpID0gcy5lcnJvci5mb3JtYXQoKSwgYSA9IFl0KGkpO1xuICAgIGZvciAoY29uc3QgW2MsIGxdIG9mIE9iamVjdC5lbnRyaWVzKGEpKVxuICAgICAgbihjLCBsLCBjKTtcbiAgICB0aHJvdyBPbihcIkdvdCB2YWxpZGF0aW9uIGVycm9ycyBpbiBub24tQ0RFIGZvcm0gZmllbGRzXCIsIGEpLCBuZXcgRXJyb3IoXCJHb3QgdmFsaWRhdGlvbiBlcnJvcnMgaW4gbm9uLUNERSBmb3JtIGZpZWxkc1wiKTtcbiAgfVxuICByZXR1cm4gcy5kYXRhO1xufSwgdmkgPSBkZShcbiAgYXN5bmMgKHsgY29udGV4dDogZSB9KSA9PiB7XG4gICAgaihcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgTG9vcCBDcnlwdG8uLi5cIik7XG4gICAgY29uc3QgbiA9IEooZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBnaSk7XG4gICAgaihgY2hlY2tvdXRQYXltZW50TWV0aG9kOiAke0pTT04uc3RyaW5naWZ5KG4pfWApLCBqKFwiU3RhcnRpbmcgTG9vcCBDcnlwdG8gZmxvdy4uLlwiKTtcbiAgICBjb25zdCB0ID0gYXdhaXQgTihlLmFueUNkZUNvbm5lY3Rpb24pLCByID0gYXdhaXQgZHQoZS5hbnlDZGVDb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogblxuICAgIH0pO1xuICAgIGlmICh0Lm1vZGUgIT09IFwic2V0dXBcIiAmJiAhbi5tZXRhZGF0YS5zdXBwb3J0ZWRfY3VycmVuY2llcy5pbmNsdWRlcyh0LmN1cnJlbmN5KSlcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgQ3VycmVuY3kgJHt0LmN1cnJlbmN5fSBub3QgZW5hYmxlZCBmb3IgTG9vcC4gRW5hYmxlZCBjdXJyZW5jaWVzOiAke24ubWV0YWRhdGEuc3VwcG9ydGVkX2N1cnJlbmNpZXN9YFxuICAgICAgKTtcbiAgICBpZiAoIXIgfHwgIXIubmV4dF9hY3Rpb25fbWV0YWRhdGEpXG4gICAgICB0aHJvdyBFcnJvcihcIkZhaWxlZCB0byBmZXRjaCBuZWNlc3Nhcnkgc2V0dXAgZGF0YSBmb3IgTG9vcFwiKTtcbiAgICBjb25zdCBzID0gci5uZXh0X2FjdGlvbl9tZXRhZGF0YTtcbiAgICBsZXQgaTtcbiAgICB0Lm1vZGUgPT09IFwic2V0dXBcIiA/IGkgPSBoaSA6IGkgPSB0LmFtb3VudF90b3RhbF9hdG9tICogcy50b2tlbl9wcmljZTtcbiAgICBjb25zdCBhID0gaSwgYyA9IHMuYXV0aG9yaXphdGlvbl9hbW91bnQsIGwgPSB2NCgpLCB1ID0ge1xuICAgICAgcGF5bWVudFVzZEFtb3VudDogYSxcbiAgICAgIHN1Z2dlc3RlZEF1dGhvcml6YXRpb25Vc2RBbW91bnQ6IGMsXG4gICAgICBjdXN0b21lclJlZklkOiBsXG4gICAgfSwgZCA9IHtcbiAgICAgIGFwaUtleTogbi5tZXRhZGF0YS5hcGlfdG9rZW4sXG4gICAgICBlbnRpdHlJZDogbi5tZXRhZGF0YS5lbnRpdHlfaWQsXG4gICAgICBtZXJjaGFudElkOiBuLm1ldGFkYXRhLm1lcmNoYW50X2lkLFxuICAgICAgZW52aXJvbm1lbnQ6IG4ubWV0YWRhdGEuZW52aXJvbm1lbnRcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICB3aWRnZXRQcm9wczogdSxcbiAgICAgIGluaXRMb29wQ29ubmVjdFByb3BzOiBkXG4gICAgfTtcbiAgfVxuKSwgRWkgPSByZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiB0LFxuICAgIGZvcm1DYWxsYmFja3M6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBzXG4gIH0pID0+IHtcbiAgICBqKFwiUnVubmluZyBMb29wIGZsb3cuLi5cIiksIGooXCJjb250ZXh0XCIsIGUpLCBqKFwiY2hlY2tvdXRQYXltZW50TWV0aG9kXCIsIG4pLCBqKFwibm9uQ2RlRm9ybUlucHV0c1wiLCB0KSwgaihcImZsb3dDYWxsYmFja3NcIiwgciksIGooXCJjdXN0b21QYXJhbXNcIiwgcyk7XG4gICAgbGV0IGk7XG4gICAgcyAhPSBudWxsICYmIHMuc3VjY2VzcyA/IGkgPSBJdChcbiAgICAgIHQsXG4gICAgICByLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIHdpXG4gICAgKSA6IGkgPSBJdChcbiAgICAgIHQsXG4gICAgICByLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIGJpXG4gICAgKTtcbiAgICBjb25zdCBhID0gZS5hbnlDZGVDb25uZWN0aW9uLCBjID0gYXdhaXQgTihlLmFueUNkZUNvbm5lY3Rpb24pLCBsID0gYy5tb2RlICE9PSBcInNldHVwXCIsIHUgPSBhd2FpdCBnZShlLmFueUNkZUNvbm5lY3Rpb24sIHtcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuLFxuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5wcm92aWRlcixcbiAgICAgIG5ld19jdXN0b21lcl9lbWFpbDogaS5sb29wRW1haWwsXG4gICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogaS5sb29wRmlyc3ROYW1lLFxuICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogaS5sb29wTGFzdE5hbWUsXG4gICAgICB1c2VfcGF5X2ZpcnN0X2Zsb3c6IGwsXG4gICAgICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IGwgPyB7XG4gICAgICAgIC8vIFRPRE8gYWRkIGNvdXBvbiBhbmQgY2FydCBhZGp1c3RlZCBsaW5lIGl0ZW1zIGxhdGVyXG4gICAgICAgIGxpbmVfaXRlbXM6IGMubGluZV9pdGVtcyxcbiAgICAgICAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiBjLmFtb3VudF90b3RhbF9hdG9tXG4gICAgICB9IDogdm9pZCAwXG4gICAgfSk7XG4gICAgaWYgKCFzKVxuICAgICAgdGhyb3cgRXJyb3IoXCJDaGVja291dCBmYWlsZWQuIEZhaWxlZCB0byBwcm9wZXJseSBzdWJtaXQgZm9ybSBkYXRhLlwiKTtcbiAgICBjb25zdCBkID0gYXdhaXQgWShhLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGMudG9rZW4sXG4gICAgICB0aGVpcl9wbV9pZDogcy5zdWNjZXNzID8gcy5wYXlpbi5wYXltZW50TWV0aG9kLnBheW1lbnRNZXRob2RJZCA6IHZvaWQgMCxcbiAgICAgIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IGMubW9kZSAhPT0gXCJzZXR1cFwiID8gdS5jaGVja291dF9hdHRlbXB0X2lkIDogdm9pZCAwLFxuICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgIGxvb3BfY3VzdG9tZXI6IHMuc3VjY2VzcyA/IHMuY3VzdG9tZXIgOiB2b2lkIDAsXG4gICAgICAgIGxvb3BfcGF5aW46IHMuc3VjY2VzcyA/IHMucGF5aW4gOiB2b2lkIDAsXG4gICAgICAgIGxvb3BfZmFpbHVyZV9kZXRhaWxzOiBzLnN1Y2Nlc3MgPyB2b2lkIDAgOiBzLmZhaWx1cmVEZXRhaWxzLFxuICAgICAgICBsb29wX2RlYnVnX2luZm86IHMuc3VjY2VzcyA/IHZvaWQgMCA6IHMuZGVidWdJbmZvLFxuICAgICAgICBsb29wX3N1Y2Nlc3M6IHMuc3VjY2Vzc1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChqKGBDb25maXJtIHJlc3VsdDogJHtkfWApLCBjLm1vZGUgPT09IFwic2V0dXBcIikge1xuICAgICAgaihcIkRvaW5nIHBheW1lbnQgc2V0dXAuLi5cIiksIGooXCLilJwgQ29uZmlybSBwYXltZW50IGZsb3cgcmVzdWx0IHJlY2VpdmVkIFJlc3VsdDpcIiwgZCk7XG4gICAgICBjb25zdCBfID0gVGUoZCk7XG4gICAgICByZXR1cm4gaihg4pWwIFNldHVwIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgW1BNIElEOiAke18ucGF5bWVudF9tZXRob2RfaWR9XWApLCB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBfIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChqKFwiRG9pbmcgY2hlY2tvdXQuLi5cIiksICFkLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlKVxuICAgICAgICB0aHJvdyBPbihcIkNoZWNrb3V0IGZhaWxlZCwgbm8gcGF5LWZpcnN0IHN1Y2Nlc3MgcmVzcG9uc2U6XCIsIGQpLCBuZXcgRXJyb3IoXCJDaGVja291dCBmYWlsZWQsIHBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIHBheW1lbnQgbWV0aG9kLlwiKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1vZGU6IFwiY2hlY2tvdXRcIixcbiAgICAgICAgcmVzdWx0OiBkLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogSywgZXJyX186IFJ0IH0gPSBQKFwicG9ja3l0LXBheXBhbFwiKSwgQ2kgPSB6JDEub2JqZWN0KHtcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwicG9ja3l0XCIpLFxuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJwYXlwYWxcIilcbn0pO1xueiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBwYXlwYWxfaWZyYW1lX3VybDogeiQxLnN0cmluZygpLFxuICAgIHZlcmlmeV90b2tlbjogeiQxLnN0cmluZygpXG4gIH0pXG4pLmxlbmd0aCgxKTtcbmNvbnN0IFNpID0gcmUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogc1xuICB9KSA9PiB7XG4gICAgdmFyIHgsIHBlO1xuICAgIEsoXCJSdW5uaW5nIFBvY2t5dCBQYXlwYWwgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gZS5hbnlDZGVDb25uZWN0aW9uLCBhID0gYXdhaXQgTihpKTtcbiAgICBLKFwiVmVyaWZ5aW5nIENQTS4uLlwiKTtcbiAgICBjb25zdCBjID0gQ2kucGFyc2Uobik7XG4gICAgSyhcIuKUnCBWYWxpZGF0aW5nIG5vbi1DREUgZm9ybSBmaWVsZHNcIik7XG4gICAgY29uc3QgbCA9IHMgPT0gbnVsbCA/IHZvaWQgMCA6IHMuc2V0dGluZ3MsIHUgPSBzZShcbiAgICAgIHQsXG4gICAgICByLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIGwgPT0gbnVsbCA/IHZvaWQgMCA6IGwuZGVmYXVsdEZpZWxkVmFsdWVzXG4gICAgKSwgZCA9IEVzKHUpO1xuICAgIEsoYFN0YXJ0aW5nIHBheW1lbnQgZmxvdy4uLiBNb2RlOiAke2EubW9kZX1gKTtcbiAgICBjb25zdCBfID0gdjQoKSwgbSA9IGEubW9kZSAhPT0gXCJzZXR1cFwiLCB5ID0ge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogYy5wcm92aWRlcixcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBjLFxuICAgICAgdXNlX3BheV9maXJzdF9mbG93OiBtLFxuICAgICAgcGF5X2ZpcnN0X2Zsb3dfY2FydF9pbmZvOiBtID8ge1xuICAgICAgICAvLyBUT0RPIGFkZCBjb3Vwb24gYW5kIGNhcnQgYWRqdXN0ZWQgbGluZSBpdGVtcyBsYXRlclxuICAgICAgICBsaW5lX2l0ZW1zOiBhLmxpbmVfaXRlbXMsXG4gICAgICAgIGRpc3BsYXllZF90b3RhbF9hbW91bnRfYXRvbTogYS5hbW91bnRfdG90YWxfYXRvbVxuICAgICAgfSA6IHZvaWQgMCxcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICB1c2VfcGF5cGFsX3JlZGlyZWN0X2Zsb3c6ICEhKCh4ID0gcyA9PSBudWxsID8gdm9pZCAwIDogcy5zZXR0aW5ncykgIT0gbnVsbCAmJiB4LnVzZVJlZGlyZWN0RmxvdyksXG4gICAgICAgIGZyb250ZW5kX3Rva2VuX2Zvcl9yZWRpcmVjdF9mbG93OiBfXG4gICAgICB9LFxuICAgICAgLi4uZFxuICAgIH0sIGYgPSBuZXcgVVJMKFwiL2FwcC9wcmUtYWN0aW9uL3N0YXJ0L1wiLCBlLmJhc2VVcmwpLnRvU3RyaW5nKCksIGggPSBidG9hKEpTT04uc3RyaW5naWZ5KHkpKSwgdiA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgc3Q6IGEudG9rZW4sXG4gICAgICByOiBoXG4gICAgfSksIGIgPSBgJHtmfT8ke3YudG9TdHJpbmcoKX1gO1xuICAgIGlmICgocGUgPSBzID09IG51bGwgPyB2b2lkIDAgOiBzLnNldHRpbmdzKSAhPSBudWxsICYmIHBlLnVzZVJlZGlyZWN0RmxvdylcbiAgICAgIHRocm93IEsoXCJTdGFydGluZyByZWRpcmVjdCBtb2RlIGZvciBQYXlQYWwuLi5cIiksIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYiwgYXdhaXQgYXQoMjAgKiAxZTMpLCBuZXcgRXJyb3IoXCJQYXlwYWwgZmxvdyB0aW1lZCBvdXQsIHBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIHBheW1lbnQgbWV0aG9kLlwiKTtcbiAgICBLKFwiU3RhcnRpbmcgcG9wdXAgbW9kZSBmb3IgUGF5UGFsLi4uXCIpLCBLKFwiT3BlbmluZyBwYXlwYWwgaWZyYW1lLi4uXCIpO1xuICAgIGNvbnN0IEUgPSBhd2FpdCBBcyhcbiAgICAgIFwiUGF5UGFsXCIsXG4gICAgICBpLFxuICAgICAgXyxcbiAgICAgIGJcbiAgICApO1xuICAgIEsoXCJQYXlwYWwgZmxvdyByZXN1bHRcIiwgRSk7XG4gICAgY29uc3QgayA9IE5uKEUuaHJlZiksIE8gPSBRcyhFLmhyZWYsIFwiY2F0dFwiKTtcbiAgICBpZiAoIU8pXG4gICAgICB0aHJvdyBSdChcIkNoZWNrb3V0IGF0dGVtcHQgSUQgbm90IGZvdW5kIGluIHJlZGlyZWN0IFVSTDpcIiwgRS5ocmVmKSwgbmV3IEVycm9yKFwiQ2hlY2tvdXQgYXR0ZW1wdCBJRCBub3QgZm91bmQgaW4gcmVkaXJlY3QgVVJMXCIpO1xuICAgIEsoYENvbmZpcm1pbmcgcGF5bWVudCBmbG93IHVzaW5nIHZhdWx0IElEICR7a31gKTtcbiAgICBjb25zdCB0ZSA9IGF3YWl0IFkoaSwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBhLnRva2VuLFxuICAgICAgdGhlaXJfcG1faWQ6IGssXG4gICAgICBjaGVja291dF9hdHRlbXB0X2lkOiBtID8gTyA6IHZvaWQgMFxuICAgIH0pO1xuICAgIGlmIChLKFwiQ29uZmlybSBwYXltZW50IGZsb3cgcmVzdWx0XCIsIHRlKSwgYS5tb2RlID09PSBcInNldHVwXCIpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBcInNldHVwXCIsXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIHBheW1lbnRfbWV0aG9kX2lkOiB0ZS5wYXltZW50X21ldGhvZHNbMF0uaWRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICBpZiAoIXRlLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlKVxuICAgICAgdGhyb3cgUnQoXCJDaGVja291dCBmYWlsZWQsIG5vIHBheS1maXJzdCBzdWNjZXNzIHJlc3BvbnNlOlwiLCB0ZSksIG5ldyBFcnJvcihcIkNoZWNrb3V0IGZhaWxlZCwgcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGFub3RoZXIgcGF5bWVudCBtZXRob2QuXCIpO1xuICAgIHJldHVybiB7XG4gICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICByZXN1bHQ6IHRlLnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlXG4gICAgfTtcbiAgfVxuKSwgVHQgPSBcIm9qcy1zdHJpcGUtbGluay1idG5cIiwgeyBsb2dfXzogRiwgZXJyX186IFBpIH0gPSBQKFwic3RyaXBlLWxpbmtcIiksIGtpID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcInN0cmlwZV9saW5rXCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJzdHJpcGVcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBzdHJpcGVfcGs6IHokMS5zdHJpbmcoKVxuICB9KVxufSksIEFpID0geiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBvdXJfZXhpc3RpbmdfcG1faWQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSksIElpID0gZGUoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IG4gfSkgPT4ge1xuICAgIGNvbnN0IHQgPSBlLmN1c3RvbUluaXRQYXJhbXMuc3RyaXBlTGluaztcbiAgICBGKFwiQ2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBDUE1zIGZvciBTdHJpcGUgTGluay4uLlwiKTtcbiAgICBjb25zdCByID0gSihlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIGtpKTtcbiAgICBGKFwiU3RhcnRpbmcgc3RyaXBlIGxpbmsgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBpID0gYXdhaXQgTihzKSwgYSA9IGkubW9kZSA9PT0gXCJzZXR1cFwiO1xuICAgIEYoXCJDcmVhdGluZyBzdHJpcGUgZWxlbWVudHMuLi5cIik7XG4gICAgY29uc3QgYyA9IGF3YWl0IHdlKHMsIGkudG9rZW4sIGEsIHZvaWQgMCksIHsgZWxlbWVudHM6IGwsIHN0cmlwZTogdSB9ID0gYXdhaXQgQXIoci5tZXRhZGF0YS5zdHJpcGVfcGssIHtcbiAgICAgIG1vZGU6IFwic2V0dXBcIixcbiAgICAgIGN1cnJlbmN5OiBjLmN1cnJlbmN5LFxuICAgICAgc2V0dXBfZnV0dXJlX3VzYWdlOiBcIm9mZl9zZXNzaW9uXCIsXG4gICAgICBwYXltZW50TWV0aG9kQ3JlYXRpb246IFwibWFudWFsXCJcbiAgICB9KTtcbiAgICBGKFwiQ3JlYXRpbmcgZXhwcmVzcyBjaGVja291dC4uLlwiKTtcbiAgICBjb25zdCBkID0gbC5jcmVhdGUoXCJleHByZXNzQ2hlY2tvdXRcIiwge1xuICAgICAgYnV0dG9uSGVpZ2h0OiB0ID09IG51bGwgPyB2b2lkIDAgOiB0LmJ1dHRvbkhlaWdodCxcbiAgICAgIHBheW1lbnRNZXRob2RzOiB7XG4gICAgICAgIGFtYXpvblBheTogXCJuZXZlclwiLFxuICAgICAgICBhcHBsZVBheTogXCJuZXZlclwiLFxuICAgICAgICBnb29nbGVQYXk6IFwibmV2ZXJcIixcbiAgICAgICAgcGF5cGFsOiBcIm5ldmVyXCJcbiAgICAgIH1cbiAgICB9KSwgXyA9ICgpID0+IHtcbiAgICAgIGQubW91bnQoYCMke1R0fWApO1xuICAgIH0sIG0gPSAoKSA9PiB7XG4gICAgICBkLnVubW91bnQoKTtcbiAgICB9O1xuICAgIHJldHVybiB0ICE9IG51bGwgJiYgdC5kb05vdE1vdW50T25Jbml0ID8gRihcIk5PVCBtb3VudGluZyBzdHJpcGUgbGluayBidXR0b24gKGRvTm90TW91bnRPbkluaXQgaXMgdHJ1ZSlcIikgOiAoRihcIk1vdW50aW5nIHN0cmlwZSBsaW5rIGJ1dHRvbi4uLlwiKSwgXygpKSwgZC5vbihcImNsaWNrXCIsIGFzeW5jICh5KSA9PiB7XG4gICAgICBpZiAoRihcIlN0cmlwZSBMaW5rIGJ1dHRvbiBjbGlja2VkXCIpLCB0ICE9IG51bGwgJiYgdC5vdmVycmlkZUxpbmtTdWJtaXQgJiYgIWF3YWl0IHQub3ZlcnJpZGVMaW5rU3VibWl0KCkpIHtcbiAgICAgICAgRihcIlN0cmlwZSBMaW5rIHN1Ym1pdCBhYm9ydGVkIGJ5IG92ZXJyaWRlTGlua1N1Ym1pdFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgeS5yZXNvbHZlKCk7XG4gICAgfSksIGQub24oXCJjb25maXJtXCIsIGFzeW5jICh5KSA9PiB7XG4gICAgICBGKFwiU3RyaXBlIExpbmsgd2luZG93IGNvbmZpcm1lZFwiLCB5KTtcbiAgICAgIGNvbnN0IGYgPSBhd2FpdCB1LmNyZWF0ZVBheW1lbnRNZXRob2Qoe1xuICAgICAgICBlbGVtZW50czogbCxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgYmlsbGluZ19kZXRhaWxzOiB5LmJpbGxpbmdEZXRhaWxzXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZi5lcnJvciA/IChQaShcImVycm9yXCIsIGYuZXJyb3IpLCBuLmdldC5vbkNoZWNrb3V0RXJyb3IoZi5lcnJvci5tZXNzYWdlID8/IFwiU3RyaXBlIExpbmsgdW5rbm93biBlcnJvclwiKSkgOiAoRihcInBheW1lbnRNZXRob2RcIiwgZi5wYXltZW50TWV0aG9kKSwgUi5zdHJpcGVMaW5rLnJ1bih7XG4gICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogZWUoZS5mb3JtRGl2KSxcbiAgICAgICAgZm9ybUNhbGxiYWNrczogbixcbiAgICAgICAgY3VzdG9tUGFyYW1zOiB7IHN0cmlwZVBNOiBmLnBheW1lbnRNZXRob2QgfSxcbiAgICAgICAgaW5pdFJlc3VsdDogeyBpc0F2YWlsYWJsZTogITAgfVxuICAgICAgfSkpO1xuICAgIH0pLCB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBjb250cm9sbGVyOiB7XG4gICAgICAgIG1vdW50QnV0dG9uOiBfLFxuICAgICAgICBkaXNtb3VudEJ1dHRvbjogbSxcbiAgICAgICAgd2FpdEZvckJ1dHRvblRvTW91bnQ6IGFzeW5jICgpID0+IGF3YWl0IEZpKFR0KVxuICAgICAgfVxuICAgIH07XG4gIH1cbiksIFJpID0gcmUoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICBmb3JtQ2FsbGJhY2tzOiByLFxuICAgIGN1c3RvbVBhcmFtczogc1xuICB9KSA9PiB7XG4gICAgRihcIlJ1bm5pbmcgU3RyaXBlIExpbmsgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gZS5hbnlDZGVDb25uZWN0aW9uO1xuICAgIEYoXCJNZXJnaW5nIFBNIGZpZWxkcyB3aXRoIGZvcm0gZmllbGRzLi4uXCIpO1xuICAgIGNvbnN0IGEgPSBUaSh0LCBzLnN0cmlwZVBNKSwgYyA9IHNlKGEsIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKTtcbiAgICBnKFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgIC4uLmNcbiAgICB9KSwgRihcIlN0YXJ0aW5nIHBheW1lbnQgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBsID0gYXdhaXQgZ2UoaSwge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogbi5wcm92aWRlcixcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBuLFxuICAgICAgdGhlaXJfZXhpc3RpbmdfcG1faWQ6IHMuc3RyaXBlUE0uaWQsXG4gICAgICBuZXdfY3VzdG9tZXJfZW1haWw6IGNbcC5FTUFJTF0sXG4gICAgICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogY1twLkZJUlNUX05BTUVdLFxuICAgICAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogY1twLkxBU1RfTkFNRV0sXG4gICAgICBuZXdfY3VzdG9tZXJfYWRkcmVzczoge1xuICAgICAgICB6aXBfY29kZTogY1twLlpJUF9DT0RFXSxcbiAgICAgICAgY291bnRyeTogY1twLkNPVU5UUlldXG4gICAgICB9XG4gICAgfSk7XG4gICAgRihcIlN0YXJ0IHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCBsKTtcbiAgICBjb25zdCBkID0gQWkucGFyc2UobC5yZXF1aXJlZF91c2VyX2FjdGlvbnMpWzBdLm91cl9leGlzdGluZ19wbV9pZCwgXyA9IGF3YWl0IE4oaSk7XG4gICAgaWYgKF8ubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICBGKFwiRG9pbmcgcGF5bWVudCBzZXR1cC4uLlwiKTtcbiAgICAgIGNvbnN0IG0gPSBhd2FpdCBZKGksIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBfLnRva2VuLFxuICAgICAgICBleGlzdGluZ19jY19wbV9pZDogZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogVGUobSkgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgRihcIkRvaW5nIGNoZWNrb3V0Li4uXCIpO1xuICAgICAgY29uc3QgbSA9IHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBfLnRva2VuLFxuICAgICAgICBwYXltZW50X2lucHV0OiB7XG4gICAgICAgICAgcHJvdmlkZXJfdHlwZTogbi5wcm92aWRlclxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21lcl9lbWFpbDogY1twLkVNQUlMXSxcbiAgICAgICAgY3VzdG9tZXJfemlwX2NvZGU6IGNbcC5aSVBfQ09ERV0sXG4gICAgICAgIGN1c3RvbWVyX2NvdW50cnk6IGNbcC5DT1VOVFJZXSxcbiAgICAgICAgcHJvbW90aW9uX2NvZGU6IGNbcC5QUk9NT1RJT05fQ09ERV0sXG4gICAgICAgIGxpbmVfaXRlbXM6IF8ubGluZV9pdGVtcyxcbiAgICAgICAgdG90YWxfYW1vdW50X2F0b206IF8uYW1vdW50X3RvdGFsX2F0b20sXG4gICAgICAgIGNhbmNlbF9hdF9lbmQ6ICExLFxuICAgICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogblxuICAgICAgfTtcbiAgICAgIHJldHVybiB7IG1vZGU6IFwiY2hlY2tvdXRcIiwgcmVzdWx0OiBhd2FpdCB1dChpLCBtKSB9O1xuICAgIH1cbiAgfVxuKSwgVGkgPSAoZSwgbikgPT4ge1xuICB2YXIgbCwgdSwgZCwgXywgbTtcbiAgY29uc3QgdCA9IHsgLi4uZSB9LCBbciwgLi4uc10gPSAoKHUgPSAobCA9IG4uYmlsbGluZ19kZXRhaWxzLm5hbWUpID09IG51bGwgPyB2b2lkIDAgOiBsLnRyaW0oKSkgPT0gbnVsbCA/IHZvaWQgMCA6IHUuc3BsaXQoL1xccysvKSkgPz8gW10sIGkgPSBzLmpvaW4oXCIgXCIpIHx8IHZvaWQgMDtcbiAgdFtwLkVNQUlMXSA9IHRbcC5FTUFJTF0gfHwgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgKChkID0gbi5saW5rKSA9PSBudWxsID8gdm9pZCAwIDogZC5lbWFpbCkgfHwgbi5iaWxsaW5nX2RldGFpbHMuZW1haWwgfHwgXCJvcF91bmZpbGxlZEBnZXRvcGVucGF5LmNvbVwiLCB0W3AuWklQX0NPREVdID0gdFtwLlpJUF9DT0RFXSB8fCAoKF8gPSBuLmJpbGxpbmdfZGV0YWlscy5hZGRyZXNzKSA9PSBudWxsID8gdm9pZCAwIDogXy5wb3N0YWxfY29kZSkgfHwgXCIwMDAwMFwiLCB0W3AuQ09VTlRSWV0gPSB0W3AuQ09VTlRSWV0gfHwgKChtID0gbi5iaWxsaW5nX2RldGFpbHMuYWRkcmVzcykgPT0gbnVsbCA/IHZvaWQgMCA6IG0uY291bnRyeSkgfHwgXCJVU1wiO1xuICBjb25zdCBhID0gdFtwLkZJUlNUX05BTUVdIHx8IHIgfHwgXCJcIiwgYyA9IHRbcC5MQVNUX05BTUVdIHx8IGkgfHwgXCJcIjtcbiAgcmV0dXJuIGEgfHwgYyA/ICh0W3AuRklSU1RfTkFNRV0gPSBhLCB0W3AuTEFTVF9OQU1FXSA9IGMpIDogKHRbcC5GSVJTVF9OQU1FXSA9IFwiX09QX1VOS05PV05cIiwgdFtwLkxBU1RfTkFNRV0gPSBcIlwiKSwgRihcIkZpbmFsIGZvcm0gaW5wdXRzOlwiLCB0KSwgdDtcbn0sIEZpID0gKGUpID0+IG5ldyBQcm9taXNlKChuKSA9PiB7XG4gIGNvbnN0IHQgPSAoKSA9PiB7XG4gICAgY29uc3QgciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO1xuICAgIHIgPyBuKHIpIDogcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpO1xuICB9O1xuICB0KCk7XG59KSwgeyBsb2dfXzogVSwgZXJyX186IE1pIH0gPSBQKFwic3RyaXBlLXByXCIpLCBEaSA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnVuaW9uKFt6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSwgeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpXSksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgTmkgPSBkZShcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgZm9ybUNhbGxiYWNrczogbiB9KSA9PiB7XG4gICAgVShcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgU3RyaXBlIFBSLi4uXCIpO1xuICAgIGNvbnN0IHQgPSBKKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgRGkpO1xuICAgIFUoXCJJbml0aWFsaXppbmcgU3RyaXBlIFBSIGZsb3cuLi5cIik7XG4gICAgY29uc3QgciA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgcyA9IGF3YWl0IE4ociksIGkgPSBzLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICBVKFwiR2V0dGluZyBpbml0aWFsIHByZXZpZXcgYW1vdW50XCIpO1xuICAgIGNvbnN0IGEgPSBhd2FpdCB3ZShyLCBzLnRva2VuLCBpLCB2b2lkIDApLCBjID0gYXdhaXQgSXIoXG4gICAgICB0Lm1ldGFkYXRhLnN0cmlwZV9wayxcbiAgICAgIGEuYW1vdW50QXRvbSxcbiAgICAgIGEuY3VycmVuY3ksXG4gICAgICBpXG4gICAgKTtcbiAgICBVKFwiQ2hlY2tpbmcgaWYgY2FuIG1ha2UgcGF5bWVudFwiKTtcbiAgICBjb25zdCBsID0gYXdhaXQgYy5jYW5NYWtlUGF5bWVudCgpO1xuICAgIGlmIChsID09PSBudWxsKVxuICAgICAgcmV0dXJuIE1pKFwiY2FuTWFrZVBheW1lbnQgcmV0dXJuZWQgbnVsbFwiKSwgeyBpc0F2YWlsYWJsZTogITEsIHJlYXNvbjogXCJjYW5NYWtlUGF5bWVudCByZXR1cm5lZCBudWxsXCIgfTtcbiAgICBVKFwiU3RyaXBlIFBSIGZsb3cgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LiBDYW4gbWFrZSBwYXltZW50XCIsIGwpO1xuICAgIGNvbnN0IHUgPSAoZCwgXykgPT4gUi5zdHJpcGVQUi5ydW4oe1xuICAgICAgY29udGV4dDogZSxcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogUGUoZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBkKSxcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGVlKGUuZm9ybURpdiksXG4gICAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgICAgY3VzdG9tUGFyYW1zOiB7IHByb3ZpZGVyOiBkLCBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBfID09IG51bGwgPyB2b2lkIDAgOiBfLm92ZXJyaWRlUGF5bWVudFJlcXVlc3QgfSxcbiAgICAgIGluaXRSZXN1bHQ6IHtcbiAgICAgICAgcHJvY2Vzc29yOiBCLkVudW0uc3RyaXBlLFxuICAgICAgICBwcjogYyxcbiAgICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgICBhdmFpbGFibGVQcm92aWRlcnM6IHsgYXBwbGVQYXk6IGwuYXBwbGVQYXksIGdvb2dsZVBheTogbC5nb29nbGVQYXkgfSxcbiAgICAgICAgc3RhcnRGbG93OiB1XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogQi5FbnVtLnN0cmlwZSxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIHByOiBjLFxuICAgICAgYXZhaWxhYmxlUHJvdmlkZXJzOiB7XG4gICAgICAgIGFwcGxlUGF5OiBsLmFwcGxlUGF5LFxuICAgICAgICBnb29nbGVQYXk6IGwuZ29vZ2xlUGF5XG4gICAgICB9LFxuICAgICAgc3RhcnRGbG93OiB1XG4gICAgfTtcbiAgfVxuKSwgTGkgPSByZShcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICBub25DZGVGb3JtSW5wdXRzOiB0LFxuICAgIGZvcm1DYWxsYmFja3M6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBzLFxuICAgIGluaXRSZXN1bHQ6IGlcbiAgfSkgPT4ge1xuICAgIGlmIChVKFwiUnVubmluZyBTdHJpcGUgUFIgZmxvdy4uLlwiKSwgcy5wcm92aWRlciAhPT0gbi5wcm92aWRlcilcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlkZXIgbWlzbWF0Y2guIEV4cGVjdGVkICR7cy5wcm92aWRlcn0sIGdvdCAke24ucHJvdmlkZXJ9YCk7XG4gICAgY29uc3QgYSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgYyA9IGkucHI7XG4gICAgaWYgKHMgIT0gbnVsbCAmJiBzLm92ZXJyaWRlUGF5bWVudFJlcXVlc3QpIHtcbiAgICAgIGNvbnN0IGYgPSBzLm92ZXJyaWRlUGF5bWVudFJlcXVlc3Q7XG4gICAgICBVKFwiT3ZlcnJpZGluZyBQUiBhbW91bnQgd2l0aFwiLCBmKTtcbiAgICAgIGNvbnN0IGggPSB0eXBlb2YgZi5hcHBsZVBheVBheW1lbnRSZXF1ZXN0ID09IFwiZnVuY3Rpb25cIiA/IGYuYXBwbGVQYXlQYXltZW50UmVxdWVzdCh7fSkgOiBmLmFwcGxlUGF5UGF5bWVudFJlcXVlc3Q7XG4gICAgICBVaShjLCBmLmFtb3VudCwgZi5wZW5kaW5nLCBoLCBmLmxhYmVsKTtcbiAgICB9XG4gICAgVShcIlNob3dpbmcgUFIgZGlhbG9nLi4uXCIpLCBjLnNob3coKTtcbiAgICBjb25zdCBsID0gYXdhaXQgUnIoYyk7XG4gICAgVShcIlN0cmlwZSBQTSBhZGRlZCBldmVudDpcIiwgbCksIFUoXCJNZXJnaW5nIFBNIGZpZWxkcyB3aXRoIGZvcm0gZmllbGRzLi4uXCIpO1xuICAgIGNvbnN0IHUgPSBPaSh0LCBsKSwgZCA9IHNlKHUsIHIuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKTtcbiAgICBnKFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgIC4uLmRcbiAgICB9KSwgVShcIlBSIGRpYWxvZyBmaW5pc2hlZC4gU3RhcnRpbmcgcGF5bWVudCBmbG93Li4uXCIsIGQpO1xuICAgIGNvbnN0IF8gPSBhd2FpdCBkcyhhLCB7XG4gICAgICBmaWVsZHM6IGQsXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG5cbiAgICB9KSwgbSA9IGppKF8pO1xuICAgIFUoXCJDb25maXJtaW5nIFBSIHdpdGggU3RyaXBlLi4uXCIpLCBhd2FpdCBUcihtLCBsKTtcbiAgICBjb25zdCB5ID0gYXdhaXQgTihhKTtcbiAgICBpZiAoeS5tb2RlID09PSBcInNldHVwXCIpIHtcbiAgICAgIFUoXCJDb25maXJtaW5nIHBheW1lbnQgZmxvdyBmb3Igc2V0dXAuLi5cIik7XG4gICAgICBjb25zdCBmID0gYXdhaXQgWShhLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogeS50b2tlblxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogVGUoZikgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgVShcIlBlcmZvcm1pbmcgY2hlY2tvdXQuLi5cIik7XG4gICAgICBjb25zdCBmID0ge1xuICAgICAgICBzZWN1cmVfdG9rZW46IHkudG9rZW4sXG4gICAgICAgIHBheW1lbnRfaW5wdXQ6IHtcbiAgICAgICAgICBwcm92aWRlcl90eXBlOiBuLnByb3ZpZGVyXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbWVyX2ZpcnN0X25hbWU6IGRbcC5GSVJTVF9OQU1FXSxcbiAgICAgICAgY3VzdG9tZXJfbGFzdF9uYW1lOiBkW3AuTEFTVF9OQU1FXSxcbiAgICAgICAgY3VzdG9tZXJfZW1haWw6IGRbcC5FTUFJTF0sXG4gICAgICAgIGN1c3RvbWVyX3ppcF9jb2RlOiBkW3AuWklQX0NPREVdLFxuICAgICAgICBjdXN0b21lcl9jb3VudHJ5OiBkW3AuQ09VTlRSWV0sXG4gICAgICAgIHByb21vdGlvbl9jb2RlOiBkW3AuUFJPTU9USU9OX0NPREVdLFxuICAgICAgICBsaW5lX2l0ZW1zOiB5LmxpbmVfaXRlbXMsXG4gICAgICAgIHRvdGFsX2Ftb3VudF9hdG9tOiB5LmFtb3VudF90b3RhbF9hdG9tLFxuICAgICAgICBjYW5jZWxfYXRfZW5kOiAhMSxcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IG5cbiAgICAgIH07XG4gICAgICByZXR1cm4geyBtb2RlOiBcImNoZWNrb3V0XCIsIHJlc3VsdDogYXdhaXQgdXQoYSwgZikgfTtcbiAgICB9XG4gIH1cbiksIE9pID0gKGUsIG4pID0+IHtcbiAgdmFyIGQsIF8sIG0sIHk7XG4gIGNvbnN0IHQgPSB7IC4uLmUgfSwgW3IsIC4uLnNdID0gKChfID0gKGQgPSBuLnBheWVyTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IGQudHJpbSgpKSA9PSBudWxsID8gdm9pZCAwIDogXy5zcGxpdCgvXFxzKy8pKSA/PyBbXSwgaSA9IHMuam9pbihcIiBcIikgfHwgdm9pZCAwLCBhID0gKHkgPSAobSA9IG4ucGF5bWVudE1ldGhvZCkgPT0gbnVsbCA/IHZvaWQgMCA6IG0uYmlsbGluZ19kZXRhaWxzKSA9PSBudWxsID8gdm9pZCAwIDogeS5hZGRyZXNzLCBjID0gbi5zaGlwcGluZ0FkZHJlc3M7XG4gIHRbcC5FTUFJTF0gPSB0W3AuRU1BSUxdIHx8IG4ucGF5ZXJFbWFpbCB8fCBcIm9wX3VuZmlsbGVkQGdldG9wZW5wYXkuY29tXCIsIHRbcC5aSVBfQ09ERV0gPSB0W3AuWklQX0NPREVdIHx8IChhID09IG51bGwgPyB2b2lkIDAgOiBhLnBvc3RhbF9jb2RlKSB8fCAoYyA9PSBudWxsID8gdm9pZCAwIDogYy5wb3N0YWxDb2RlKSB8fCBcIjAwMDAwXCIsIHRbcC5DT1VOVFJZXSA9IHRbcC5DT1VOVFJZXSB8fCAoYSA9PSBudWxsID8gdm9pZCAwIDogYS5jb3VudHJ5KSB8fCAoYyA9PSBudWxsID8gdm9pZCAwIDogYy5jb3VudHJ5KSB8fCBcIlVTXCI7XG4gIGNvbnN0IGwgPSB0W3AuRklSU1RfTkFNRV0gfHwgciB8fCBcIlwiLCB1ID0gdFtwLkxBU1RfTkFNRV0gfHwgaSB8fCBcIlwiO1xuICByZXR1cm4gbCB8fCB1ID8gKHRbcC5GSVJTVF9OQU1FXSA9IGwsIHRbcC5MQVNUX05BTUVdID0gdSkgOiAodFtwLkZJUlNUX05BTUVdID0gXCJfT1BfVU5LTk9XTlwiLCB0W3AuTEFTVF9OQU1FXSA9IFwiXCIpLCBVKFwiRmluYWwgZm9ybSBpbnB1dHM6XCIsIHQpLCB0O1xufSwgVWkgPSAoZSwgbiwgdCwgciwgcykgPT4ge1xuICBlLnVwZGF0ZSh7XG4gICAgdG90YWw6IHtcbiAgICAgIGFtb3VudDogbi5hbW91bnRBdG9tLFxuICAgICAgbGFiZWw6IHMgPz8gXCJUb3RhbFwiLFxuICAgICAgcGVuZGluZzogdFxuICAgIH0sXG4gICAgY3VycmVuY3k6IG4uY3VycmVuY3ksXG4gICAgLy8gU3RyaXBlJ3MgYXBwbGVQYXkgb3B0aW9uIG9ubHkgc3VwcG9ydHMgJ3JlY3VycmluZ1BheW1lbnRSZXF1ZXN0JyB8ICdkZWZlcnJlZFBheW1lbnRSZXF1ZXN0JyB8ICdhdXRvbWF0aWNSZWxvYWRQYXltZW50UmVxdWVzdCcgb2YgbmF0aXZlIEFwcGxlUGF5IHBheW1lbnQgcmVxdWVzdFxuICAgIC8vIFdlJ3JlIGFjY2VwdGluZyBuYXRpdmUgUGF5bWVudCBSZXF1ZXN0IGhlcmUgZm9yIG1vcmUgY29tbW9uIHR5cGluZy5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gc3RyaXBlIGRvIG5vdCBleHBlY3QgYWRkaXRpb25hbCBmaWVsZHNcbiAgICBhcHBsZVBheTogclxuICB9KTtcbn0sIGppID0gKGUpID0+IHtcbiAgaWYgKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIG9jY3VycmVkLlxuRGV0YWlsczogZ290ICR7ZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMubGVuZ3RofSByZXF1aXJlZCB1c2VyIGFjdGlvbnNgKTtcbiAgcmV0dXJuIFByLnBhcnNlKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zWzBdKTtcbn0sIFBlID0gKGUsIG4sIHQpID0+IHtcbiAgY29uc3QgciA9IGUuZmlsdGVyKChzKSA9PiB7XG4gICAgY29uc3QgaSA9IHQgPT09IHZvaWQgMCA/ICEwIDogcy5wcm9jZXNzb3JfbmFtZSA9PT0gdCwgYSA9IHMucHJvdmlkZXIgPT09IG47XG4gICAgcmV0dXJuIGkgJiYgYTtcbiAgfSk7XG4gIGlmIChyLmxlbmd0aCA9PT0gMClcbiAgICB0aHJvdyBjb25zb2xlLndhcm4oXCJDUE1zIGxpc3RcIiwgZSksIG5ldyBFcnJvcihgTm8gQ1BNcyBmb3VuZCB3aXRoIHByb3ZpZGVyICcke259JyBhbmQgcHJvY2Vzc29yICcke3R9J2ApO1xuICByZXR1cm4gci5sZW5ndGggIT09IDEgJiYgKGNvbnNvbGUud2FybihcIkNQTXMgbGlzdFwiLCBlKSwgY29uc29sZS53YXJuKGBNb3JlIHRoYW4gb25lIENQTSBmb3VuZCB3aXRoIHByb3ZpZGVyICcke259JyBhbmQgcHJvY2Vzc29yICcke3R9J2ApLCBnKFwibW9yZV90aGFuX29uZV9jcG1fZm91bmRcIiwge1xuICAgIHByb3ZpZGVyOiBuLFxuICAgIHByb2Nlc3NvcjogdCxcbiAgICBjcG1zOiBlXG4gIH0pKSwgclswXTtcbn0sIFIgPSB7XG4gIC8vIOKciyBOb3RlOiBGb3IgZmxvd3MgdGhhdCByZXF1aXJlIGluaXRpYWxpemF0aW9uLCBwbGVhc2UgYWRkIHRoZW0gdG8gYGluaXQtZmxvd3MudHNgXG4gIC8vIENvbW1vblxuICBjb21tb25DQzoge1xuICAgIGluaXQ6IGFzeW5jICgpID0+IHtcbiAgICB9LFxuICAgIHJ1bjogZGlcbiAgfSxcbiAgLy8gU3RyaXBlXG4gIHN0cmlwZVBSOiB7XG4gICAgaW5pdDogTmksXG4gICAgcnVuOiBMaVxuICB9LFxuICBzdHJpcGVMaW5rOiB7XG4gICAgaW5pdDogSWksXG4gICAgcnVuOiBSaVxuICB9LFxuICAvLyBQb2NreXRcbiAgcG9ja3l0UGF5cGFsOiB7XG4gICAgcnVuOiBTaVxuICB9LFxuICAvLyBBaXJ3YWxsZXhcbiAgYWlyd2FsbGV4R29vZ2xlUGF5OiB7XG4gICAgaW5pdDogVnMsXG4gICAgcnVuOiBHc1xuICB9LFxuICBhaXJ3YWxsZXhBcHBsZVBheToge1xuICAgIGluaXQ6IGpzLFxuICAgIHJ1bjogeHNcbiAgfSxcbiAgLy8gTG9vcFxuICBsb29wQ3J5cHRvOiB7XG4gICAgaW5pdDogdmksXG4gICAgcnVuOiBFaVxuICB9LFxuICBhdXRob3JpemVOZXRBcHBsZVBheToge1xuICAgIGluaXQ6IFlzLFxuICAgIHJ1bjogQnNcbiAgfSxcbiAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiB7XG4gICAgaW5pdDogSHMsXG4gICAgcnVuOiBKc1xuICB9XG4gIC8vIPCfkYkgQWRkIG1vcmUgZmxvd3MgaGVyZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxufSwgeyBsb2dfXzogeGksIGVycl9fOiAkaSB9ID0gUChcImluaXQtZmxvd3NcIiksIGNlID0gKGUsIG4pID0+IHtcbiAgY29uc3QgdCA9IG5ldyBTZSgpO1xuICByZXR1cm4ge1xuICAgIHB1Ymxpc2hlcjogdCxcbiAgICBpbml0aWFsaXplOiBhc3luYyAocikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHQuY3VycmVudC5pc1N1Y2Nlc3MpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBmbG93IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQuXCIpO1xuICAgICAgICBjb25zdCBzID0gYXdhaXQgbihyKTtcbiAgICAgICAgeGkoYOKclCAke2V9IGZsb3cgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LiBSZXN1bHQ6YCwgcyksIHQuc2V0KHMpO1xuICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICAkaShg8J2ZrSAke2V9IGZsb3cgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiBFcnJvcjpgLCBWKHMpLCBcIkRldGFpbHM6XCIsIHMpLCB0LnRocm93KHMsIFYocykpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn0sIFZpID0gYXN5bmMgKGUsIG4sIHQpID0+IHtcbiAgYXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LnZhbHVlcyhlKS5tYXAoKHIpID0+IHIuaW5pdGlhbGl6ZSh7IGNvbnRleHQ6IG4sIGZvcm1DYWxsYmFja3M6IHQgfSkpKTtcbn0sIEdpID0gKCkgPT4gKHtcbiAgLy8g8J+SoSBBZGQgbmV3IGluaXQgZmxvd3MgaGVyZVxuICAvLyBTdHJpcGUgUFJcbiAgc3RyaXBlUFI6IGNlKFwiU3RyaXBlIFBSXCIsIFIuc3RyaXBlUFIuaW5pdCksXG4gIC8vIFN0cmlwZSBMaW5rXG4gIHN0cmlwZUxpbms6IGNlKFwiU3RyaXBlIExpbmtcIiwgUi5zdHJpcGVMaW5rLmluaXQpLFxuICAvLyBBaXJ3YWxsZXggR29vZ2xlUGF5XG4gIGFpcndhbGxleEdvb2dsZVBheTogY2UoXCJBaXJ3YWxsZXggR29vZ2xlUGF5XCIsIFIuYWlyd2FsbGV4R29vZ2xlUGF5LmluaXQpLFxuICAvLyBBaXJ3YWxsZXggQXBwbGVQYXlcbiAgYWlyd2FsbGV4QXBwbGVQYXk6IGNlKFwiQWlyd2FsbGV4IEFwcGxlUGF5XCIsIFIuYWlyd2FsbGV4QXBwbGVQYXkuaW5pdCksXG4gIC8vIExvb3BcbiAgbG9vcDogY2UoXCJMb29wXCIsIFIubG9vcENyeXB0by5pbml0KSxcbiAgLy8gQXV0aG5ldCBHb29nbGVQYXlcbiAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiBjZShcIkF1dGhuZXQgR29vZ2xlUGF5XCIsIFIuYXV0aG9yaXplTmV0R29vZ2xlUGF5LmluaXQpLFxuICAvLyBBdXRobmV0IEFwcGxlUGF5XG4gIGF1dGhvcml6ZU5ldEFwcGxlUGF5OiBjZShcIkF1dGhuZXQgQXBwbGVQYXlcIiwgUi5hdXRob3JpemVOZXRBcHBsZVBheS5pbml0KVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxufSksIHsgZXJyX186IHppIH0gPSBQKFwiZm9ybS1jYWxsYmFja3NcIiksIEcgPSB6JDEuZnVuY3Rpb24oKS5vcHRpb25hbCgpLCBGdCA9IHokMS5vYmplY3Qoe1xuICBvbkZvY3VzOiBHLFxuICBvbkJsdXI6IEcsXG4gIG9uQ2hhbmdlOiBHLFxuICBvbkxvYWQ6IEcsXG4gIG9uTG9hZEVycm9yOiBHLFxuICBvblZhbGlkYXRpb25FcnJvcjogRyxcbiAgb25DaGVja291dFN0YXJ0ZWQ6IEcsXG4gIG9uQ2hlY2tvdXRTdWNjZXNzOiBHLFxuICBvblNldHVwUGF5bWVudE1ldGhvZFN1Y2Nlc3M6IEcsXG4gIG9uQ2hlY2tvdXRFcnJvcjogRyxcbiAgb25QYXltZW50UmVxdWVzdExvYWQ6IEdcbn0pLCBRID0gY2xhc3MgUSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0Q2FsbGJhY2tzID0gKG4pID0+IHtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IFEuY3JlYXRlRW1wdHlDYWxsYmFja3MoKSwgT2JqZWN0LmVudHJpZXMobikuZm9yRWFjaCgoW3QsIHJdKSA9PiB7XG4gICAgICAgIGNvbnN0IHMgPSBLbih0LCByID8/IFEuTk9PUCwgemkpO1xuICAgICAgICB0aGlzLl9jYWxsYmFja3NbdF0gPSBzO1xuICAgICAgfSk7XG4gICAgfSwgdGhpcy5fY2FsbGJhY2tzID0gUS5jcmVhdGVFbXB0eUNhbGxiYWNrcygpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVhZC1vbmx5IHZlcnNpb24gb2YgdGhlIGNhbGxiYWNrcyBvYmplY3QuXG4gICAqL1xuICBnZXQgZ2V0KCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX2NhbGxiYWNrcyB9O1xuICB9XG59O1xuUS5OT09QID0gKCkgPT4ge1xufSwgUS5jcmVhdGVFbXB0eUNhbGxiYWNrcyA9ICgpID0+IHtcbiAgY29uc3QgbiA9IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMoRnQua2V5b2YoKS5lbnVtKS5mb3JFYWNoKCh0KSA9PiB7XG4gICAgblt0XSA9IFEuTk9PUDtcbiAgfSksIG47XG59LCBRLmZyb21PYmplY3QgPSAobikgPT4ge1xuICBjb25zdCB0ID0gbmV3IFEoKTtcbiAgcmV0dXJuIHQuc2V0Q2FsbGJhY2tzKEZ0LnBhcnNlKG4pKSwgdDtcbn07XG5sZXQgc3QgPSBRO1xuY29uc3QgVW4gPSBcIjAxMjM0NTY3ODlBQkNERUZHSEpLTU5QUVJTVFZXWFlaXCIsIGtlID0gMzIsIHFpID0gMTYsIGpuID0gMTAsIE10ID0gMjgxNDc0OTc2NzEwNjU1O1xudmFyIHVlO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZS5CYXNlMzJJbmNvcnJlY3RFbmNvZGluZyA9IFwiQjMyX0VOQ19JTlZBTElEXCIsIGUuRGVjb2RlVGltZUludmFsaWRDaGFyYWN0ZXIgPSBcIkRFQ19USU1FX0NIQVJcIiwgZS5EZWNvZGVUaW1lVmFsdWVNYWxmb3JtZWQgPSBcIkRFQ19USU1FX01BTEZPUk1FRFwiLCBlLkVuY29kZVRpbWVOZWdhdGl2ZSA9IFwiRU5DX1RJTUVfTkVHXCIsIGUuRW5jb2RlVGltZVNpemVFeGNlZWRlZCA9IFwiRU5DX1RJTUVfU0laRV9FWENFRURcIiwgZS5FbmNvZGVUaW1lVmFsdWVNYWxmb3JtZWQgPSBcIkVOQ19USU1FX01BTEZPUk1FRFwiLCBlLlBSTkdEZXRlY3RGYWlsdXJlID0gXCJQUk5HX0RFVEVDVFwiLCBlLlVMSURJbnZhbGlkID0gXCJVTElEX0lOVkFMSURcIiwgZS5VbmV4cGVjdGVkID0gXCJVTkVYUEVDVEVEXCIsIGUuVVVJREludmFsaWQgPSBcIlVVSURfSU5WQUxJRFwiO1xufSkodWUgfHwgKHVlID0ge30pKTtcbmNsYXNzIENlIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuLCB0KSB7XG4gICAgc3VwZXIoYCR7dH0gKCR7bn0pYCksIHRoaXMubmFtZSA9IFwiVUxJREVycm9yXCIsIHRoaXMuY29kZSA9IG47XG4gIH1cbn1cbmZ1bmN0aW9uIFlpKGUpIHtcbiAgbGV0IG4gPSBNYXRoLmZsb29yKGUoKSAqIGtlKTtcbiAgcmV0dXJuIG4gPT09IGtlICYmIChuID0ga2UgLSAxKSwgVW4uY2hhckF0KG4pO1xufVxuZnVuY3Rpb24gQmkoZSkge1xuICBjb25zdCBuID0gSGkoKSwgdCA9IG4gJiYgKG4uY3J5cHRvIHx8IG4ubXNDcnlwdG8pIHx8IG51bGw7XG4gIGlmICh0eXBlb2YgKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuZ2V0UmFuZG9tVmFsdWVzKSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IHIgPSBuZXcgVWludDhBcnJheSgxKTtcbiAgICAgIHJldHVybiB0LmdldFJhbmRvbVZhbHVlcyhyKSwgclswXSAvIDI1NTtcbiAgICB9O1xuICBpZiAodHlwZW9mICh0ID09IG51bGwgPyB2b2lkIDAgOiB0LnJhbmRvbUJ5dGVzKSA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuICgpID0+IHQucmFuZG9tQnl0ZXMoMSkucmVhZFVJbnQ4KCkgLyAyNTU7XG4gIHRocm93IG5ldyBDZSh1ZS5QUk5HRGV0ZWN0RmFpbHVyZSwgXCJGYWlsZWQgdG8gZmluZCBhIHJlbGlhYmxlIFBSTkdcIik7XG59XG5mdW5jdGlvbiBIaSgpIHtcbiAgcmV0dXJuIFppKCkgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyA8IFwidVwiID8gd2luZG93IDogdHlwZW9mIGdsb2JhbCA8IFwidVwiID8gZ2xvYmFsIDogdHlwZW9mIGdsb2JhbFRoaXMgPCBcInVcIiA/IGdsb2JhbFRoaXMgOiBudWxsO1xufVxuZnVuY3Rpb24gSmkoZSwgbikge1xuICBsZXQgdCA9IFwiXCI7XG4gIGZvciAoOyBlID4gMDsgZS0tKVxuICAgIHQgPSBZaShuKSArIHQ7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gS2koZSwgbiA9IGpuKSB7XG4gIGlmIChpc05hTihlKSlcbiAgICB0aHJvdyBuZXcgQ2UodWUuRW5jb2RlVGltZVZhbHVlTWFsZm9ybWVkLCBgVGltZSBtdXN0IGJlIGEgbnVtYmVyOiAke2V9YCk7XG4gIGlmIChlID4gTXQpXG4gICAgdGhyb3cgbmV3IENlKHVlLkVuY29kZVRpbWVTaXplRXhjZWVkZWQsIGBDYW5ub3QgZW5jb2RlIGEgdGltZSBsYXJnZXIgdGhhbiAke010fTogJHtlfWApO1xuICBpZiAoZSA8IDApXG4gICAgdGhyb3cgbmV3IENlKHVlLkVuY29kZVRpbWVOZWdhdGl2ZSwgYFRpbWUgbXVzdCBiZSBwb3NpdGl2ZTogJHtlfWApO1xuICBpZiAoTnVtYmVyLmlzSW50ZWdlcihlKSA9PT0gITEpXG4gICAgdGhyb3cgbmV3IENlKHVlLkVuY29kZVRpbWVWYWx1ZU1hbGZvcm1lZCwgYFRpbWUgbXVzdCBiZSBhbiBpbnRlZ2VyOiAke2V9YCk7XG4gIGxldCB0LCByID0gXCJcIjtcbiAgZm9yIChsZXQgcyA9IG47IHMgPiAwOyBzLS0pXG4gICAgdCA9IGUgJSBrZSwgciA9IFVuLmNoYXJBdCh0KSArIHIsIGUgPSAoZSAtIHQpIC8ga2U7XG4gIHJldHVybiByO1xufVxuZnVuY3Rpb24gWmkoKSB7XG4gIHJldHVybiB0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUgPCBcInVcIiAmJiBzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGU7XG59XG5mdW5jdGlvbiBXaShlLCBuKSB7XG4gIGNvbnN0IHQgPSBCaSgpLCByID0gRGF0ZS5ub3coKTtcbiAgcmV0dXJuIEtpKHIsIGpuKSArIEppKHFpLCB0KTtcbn1cbmNvbnN0IHhuID0gXCJvcF9hbmFseXRpY3NfZGV2aWNlX3Rva2VuXCIsIFFpID0gKCkgPT4ge1xuICBjb25zdCBlID0gZG9jdW1lbnQuY29va2llLnNwbGl0KFwiO1wiKS5maW5kKCh0KSA9PiB0LmluY2x1ZGVzKHhuKSk7XG4gIGlmIChlKVxuICAgIHJldHVybiBlLnNwbGl0KFwiPVwiKVsxXTtcbiAgY29uc3QgbiA9IFdpKCk7XG4gIHJldHVybiBYaShuKSwgbjtcbn0sIFhpID0gKGUpID0+IHtcbiAgY29uc3QgbiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpO1xuICBuLnNldEZ1bGxZZWFyKG4uZ2V0RnVsbFllYXIoKSArIDEpLCBkb2N1bWVudC5jb29raWUgPSBgJHt4bn09JHtlfTsgcGF0aD0vOyBleHBpcmVzPSR7bi50b1VUQ1N0cmluZygpfWA7XG59O1xuZnVuY3Rpb24gZWEoKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgZSA9IEEoKTtcbiAgICBpZiAoZSAhPSBudWxsICYmIGUubmV4dCB8fCBlICE9IG51bGwgJiYgZS5fX05FWFRfREFUQV9fIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjX19uZXh0XCIpKVxuICAgICAgcmV0dXJuIFwibmV4dGpzXCI7XG4gICAgY29uc3QgbiA9IEEoKTtcbiAgICBpZiAobiAhPSBudWxsICYmIG4uX19OVVhUX18gfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNfX251eHRcIikpXG4gICAgICByZXR1cm4gXCJudXh0XCI7XG4gICAgaWYgKE9iamVjdC5rZXlzKGRvY3VtZW50KS5maW5kKChyKSA9PiByLmluY2x1ZGVzKFwicmVhY3RcIikpIHx8IEFycmF5LmZyb20oZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKFwiYm9keSA+ICpcIikpLmZpbmQoKHIpID0+IHIuX3JlYWN0Um9vdENvbnRhaW5lcikpXG4gICAgICByZXR1cm4gXCJyZWFjdFwiO1xuICAgIGNvbnN0IHQgPSBBKCk7XG4gICAgcmV0dXJuIHQgIT0gbnVsbCAmJiB0LlZ1ZSB8fCB0ICE9IG51bGwgJiYgdC5fX1ZVRV9fID8gXCJ2dWVcIiA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbbmctdmVyc2lvbl1cIikgPyBcImFuZ3VsYXJcIiA6IFwidmFuaWxsYVwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gIH1cbn1cbmZ1bmN0aW9uIHRhKGUpIHtcbiAgdmFyIG4sIHQsIHI7XG4gIHRyeSB7XG4gICAgc3dpdGNoIChlKSB7XG4gICAgICBjYXNlIFwicmVhY3RcIjpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlIFwibmV4dGpzXCI6IHtcbiAgICAgICAgY29uc3QgcyA9IEEoKTtcbiAgICAgICAgcmV0dXJuICgobiA9IHMgPT0gbnVsbCA/IHZvaWQgMCA6IHMubmV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IG4udmVyc2lvbikgfHwgKCh0ID0gcyA9PSBudWxsID8gdm9pZCAwIDogcy5fX05FWFRfREFUQV9fKSA9PSBudWxsID8gdm9pZCAwIDogdC5idWlsZElkKSB8fCBudWxsO1xuICAgICAgfVxuICAgICAgY2FzZSBcIm51eHRcIjpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlIFwidnVlXCI6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgY2FzZSBcImFuZ3VsYXJcIjoge1xuICAgICAgICBjb25zdCBzID0gKHIgPSBBKCkpID09IG51bGwgPyB2b2lkIDAgOiByLmRvY3VtZW50LCBpID0gcyA9PSBudWxsID8gdm9pZCAwIDogcy5xdWVyeVNlbGVjdG9yKFwiW25nLXZlcnNpb25dXCIpO1xuICAgICAgICByZXR1cm4gaSA/IGkuZ2V0QXR0cmlidXRlKFwibmctdmVyc2lvblwiKSA6IG51bGw7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5mdW5jdGlvbiBuYSgpIHtcbiAgY29uc3QgZSA9IGVhKCksIG4gPSB0YShlKTtcbiAgcmV0dXJuIHsgZnJhbWV3b3JrOiBlLCB2ZXJzaW9uOiBuIH07XG59XG5jbGFzcyByYSB7XG4gIGNvbnN0cnVjdG9yKG4sIHQsIHIsIHMpIHtcbiAgICB0aGlzLmhhbmRsZU1lc3NhZ2UgPSAoaSkgPT4ge1xuICAgICAgaWYgKCFpLnNvdXJjZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJbT0pTXSBObyBzb3VyY2UgZm91bmRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChEdChpLm9yaWdpbikgIT09IER0KHRoaXMuYmFzZVVybCkgfHwgdHlwZW9mIGkuZGF0YSA9PSBcIm9iamVjdFwiICYmIGkuZGF0YS5wZW5wYWwgfHwgdHlwZW9mIGkuZGF0YSA9PSBcIm9iamVjdFwiICYmIGkuZGF0YS5zb3VyY2UgJiYgaS5kYXRhLnNvdXJjZSA9PT0gXCJyZWFjdC1kZXZ0b29scy1icmlkZ2VcIilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IGEgPSBudWxsO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYSA9IERyKEpTT04ucGFyc2UoaS5kYXRhKSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlRXZlbnQoYSkpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgZWxlbWVudElkOiBsLCBwYXlsb2FkOiB1IH0gPSBhLCBkID0gdS50eXBlO1xuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgIGNhc2UgXCJMQVlPVVRcIjpcbiAgICAgICAgICB0aGlzLmludGVybmFsQ2FsbGJhY2tzLnNldEZvcm1IZWlnaHQodS5oZWlnaHQgPyBgJHt1LmhlaWdodH1weGAgOiBcIjEwMCVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJGT0NVU1wiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25Gb2N1cyhsLCB1LmVsZW1lbnRUeXBlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkJMVVJcIjpcbiAgICAgICAgICB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQmx1cihsLCB1LmVsZW1lbnRUeXBlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkNIQU5HRVwiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25DaGFuZ2UobCwgdS5lbGVtZW50VHlwZSwgdS5lcnJvcnMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTE9BREVEXCI6XG4gICAgICAgICAgdGhpcy5ldmVudFRhcmdldHNbbF0gPSBpLnNvdXJjZSwgdGhpcy5pbnRlcm5hbENhbGxiYWNrcy5vbkNkZUxvYWRlZCh1KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkxPQURfRVJST1JcIjpcbiAgICAgICAgICB0aGlzLmludGVybmFsQ2FsbGJhY2tzLm9uQ2RlTG9hZEVycm9yKHUubWVzc2FnZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJWQUxJREFUSU9OX0VSUk9SXCI6XG4gICAgICAgICAgdGhpcy5mb3JtQ2FsbGJhY2tzLmdldC5vblZhbGlkYXRpb25FcnJvcih1LmVsZW1lbnRUeXBlLCB1LmVycm9ycywgbCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW2Zvcm1dIFVuaGFuZGxlZCBldmVudCB0eXBlOlwiLCBkKTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLnZhbGlkYXRlRXZlbnQgPSAoaSkgPT4gaS5mb3JtSWQgIT09IHRoaXMuZm9ybUlkIHx8ICFpLmVsZW1lbnRJZCA/IChjb25zb2xlLmxvZyhcIltPSlNdIGZvcm1JZFwiLCB0aGlzLmZvcm1JZCwgaS5mb3JtSWQpLCBjb25zb2xlLndhcm4oXCJbZm9ybV0gSWdub3JpbmcgdW5rbm93biBldmVudDpcIiwgaSksICExKSA6IHRoaXMubm9uY2VzLmhhcyhpLm5vbmNlKSA/IChjb25zb2xlLndhcm4oXCJbZm9ybV0gSWdub3JpbmcgZHVwbGljYXRlIGV2ZW50OlwiLCBpKSwgITEpIDogKHRoaXMubm9uY2VzLmFkZChpLm5vbmNlKSwgITApLCB0aGlzLmV2ZW50VGFyZ2V0cyA9IHt9LCB0aGlzLm5vbmNlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksIHRoaXMuZm9ybUlkID0gbiwgdGhpcy5iYXNlVXJsID0gdCwgdGhpcy5mb3JtQ2FsbGJhY2tzID0gciwgdGhpcy5pbnRlcm5hbENhbGxiYWNrcyA9IHM7XG4gIH1cbn1cbmNvbnN0IER0ID0gKGUpID0+IG5ldyBVUkwoZSkub3JpZ2luO1xuYXN5bmMgZnVuY3Rpb24gb2EoZSwgbikge1xuICBjb25zdCByID0gYXdhaXQgY29ubmVjdFRvQ2hpbGQoe1xuICAgIGlmcmFtZTogZSxcbiAgICBkZWJ1ZzogITEsXG4gICAgY2hpbGRPcmlnaW46IG5cbiAgfSkucHJvbWlzZSwgcyA9IGF3YWl0IE5yKHIpO1xuICBpZiAoIUxyKHIsIHMpKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkdvdCBpbnZhbGlkIENERSBjb25uZWN0aW9uIG9iamVjdFwiKTtcbiAgcmV0dXJuIHI7XG59XG5jbGFzcyBzYSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICB9XG4gIGFkZENvbm5lY3Rpb24obiwgdCkge1xuICAgIHRoaXMuY29ubmVjdGlvbnMuc2V0KG4sIHQpO1xuICB9XG4gIGdldENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3QgbiA9IHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgIGlmICghbilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbm5lY3Rpb24gbm90IGZvdW5kXCIpO1xuICAgIHJldHVybiBuO1xuICB9XG4gIGdldEFsbENvbm5lY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zO1xuICB9XG59XG5jb25zdCBpYSA9IChlLCBuLCB0KSA9PiB7XG4gIGNvbnN0IHsgc3RyaXBlUFI6IHIgfSA9IGU7XG4gIHIucHVibGlzaGVyLnN1YnNjcmliZSgocykgPT4ge1xuICAgIGlmIChzLmlzU3VjY2Vzcykge1xuICAgICAgY29uc3QgaSA9IHMubG9hZGVkVmFsdWUsIGEgPSBpLmlzQXZhaWxhYmxlICYmIGkuYXZhaWxhYmxlUHJvdmlkZXJzLmFwcGxlUGF5LCBjID0gaS5pc0F2YWlsYWJsZSAmJiBpLmF2YWlsYWJsZVByb3ZpZGVycy5nb29nbGVQYXksIGwgPSB7XG4gICAgICAgIGFwcGxlX3BheToge1xuICAgICAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICAgICAgaXNBdmFpbGFibGU6IGEsXG4gICAgICAgICAgc3RhcnRGbG93OiBhc3luYyAodSkgPT4ge1xuICAgICAgICAgICAgYSAmJiBOdChcImFwcGxlX3BheVwiLCBpLCBuLCB0LCB1KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdvb2dsZV9wYXk6IHtcbiAgICAgICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgICAgIGlzQXZhaWxhYmxlOiBjLFxuICAgICAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKHUpID0+IHtcbiAgICAgICAgICAgIGMgJiYgTnQoXCJnb29nbGVfcGF5XCIsIGksIG4sIHQsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHQuZ2V0Lm9uUGF5bWVudFJlcXVlc3RMb2FkKGwpO1xuICAgIH1cbiAgfSk7XG59LCBOdCA9IChlLCBuLCB0LCByLCBzKSA9PiBSLnN0cmlwZVBSLnJ1bih7XG4gIGNvbnRleHQ6IHQsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogUGUodC5jaGVja291dFBheW1lbnRNZXRob2RzLCBlKSxcbiAgbm9uQ2RlRm9ybUlucHV0czogZWUodC5mb3JtRGl2KSxcbiAgZm9ybUNhbGxiYWNrczogcixcbiAgY3VzdG9tUGFyYW1zOiB7IHByb3ZpZGVyOiBlLCBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzID09IG51bGwgPyB2b2lkIDAgOiBzLm92ZXJyaWRlUGF5bWVudFJlcXVlc3QgfSxcbiAgaW5pdFJlc3VsdDogblxufSksIEx0ID0gXCJUaGUgc2VjdXJlIGZvcm0gZmFpbGVkIHRvIGxvYWQgcHJvcGVybHkuIFBsZWFzZSBjaGVjayB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24sIG9yIHRyeSBhZ2FpbiBsYXRlci5cIiwgeyBsb2dfXzogWiwgZXJyX186IHogfSA9IFAoXCJvcC1mb3JtXCIpLCBYID0gY2xhc3MgWCB7XG4gIGNvbnN0cnVjdG9yKG4pIHtcbiAgICB2YXIgcztcbiAgICB0aGlzLmlzRGVzdHJveWVkID0gITEsIHRoaXMuY2RlTG9hZEV2ZW50ID0gbmV3IFNlKCksIHRoaXMuYW55Q2RlQ29ubiA9IG5ldyBTZSgpLCB0aGlzLmNvbnRleHQgPSBuZXcgU2UoKSwgdGhpcy5pbml0Rmxvd3MgPSBHaSgpLCB0aGlzLnN0YXJ0Rm9ybUluaXQgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpID0gdGhpcy5jcmVhdGVFbGVtZW50KFcuQ0RFX0JSSURHRSk7XG4gICAgICAgIGkubm9kZS5pZCA9IFwiX19vcF9pbnRlcm5hbF9jZGVfYnJpZGdlXCIsIGkubm9kZS5hcmlhSGlkZGVuID0gXCJ0cnVlXCIsIE9iamVjdC5hc3NpZ24oaS5ub2RlLnN0eWxlLCB7XG4gICAgICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgICAgICBtYXJnaW46IFwiMHB4XCIsXG4gICAgICAgICAgcGFkZGluZzogXCIwcHhcIixcbiAgICAgICAgICB3aWR0aDogXCIxcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiMXB4XCIsXG4gICAgICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgdmlzaWJpbGl0eTogXCJoaWRkZW5cIixcbiAgICAgICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgICAgICAgIHBvaW50ZXJFdmVudHM6IFwibm9uZVwiLFxuICAgICAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiXG4gICAgICAgIH0pLCBpLm1vdW50KFwiYm9keVwiKSwgWihcIkNERSBicmlkZ2UgZWxlbWVudCBtb3VudGVkXCIpLCBaKFwiSW5pdGlhbGl6aW5nIE9wZW5QYXkgZm9ybTpcIiksIFooXCLilJwgV2FpdGluZyBmb3IgQ0RFIGxvYWQgZXZlbnQuLi5cIik7XG4gICAgICAgIGNvbnN0IGEgPSBhd2FpdCB0aGlzLmNkZUxvYWRFdmVudC53YWl0Rm9yTG9hZCh7XG4gICAgICAgICAgdGltZW91dFNlYzogMTIwLFxuICAgICAgICAgIHRpbWVvdXRFcnJNc2c6IEx0XG4gICAgICAgIH0pO1xuICAgICAgICBaKFwi4pScIENERSBsb2FkIGV2ZW50IHJlY2VpdmVkXCIpLCBaKFwi4pScIFdhaXRpbmcgZm9yIENERSBjb25uZWN0aW9uLi4uXCIpO1xuICAgICAgICBjb25zdCBjID0gYXdhaXQgdGhpcy5hbnlDZGVDb25uLndhaXRGb3JMb2FkKHtcbiAgICAgICAgICB0aW1lb3V0U2VjOiAxMjAsXG4gICAgICAgICAgdGltZW91dEVyck1zZzogTHRcbiAgICAgICAgfSk7XG4gICAgICAgIFooXCLilJwgQ0RFIGNvbm5lY3Rpb24gcmVjZWl2ZWRcIiksIGF3YWl0IGdzKGMsIHRoaXMuZGV2aWNlVG9rZW4pLCBaKFwi4pScIENyZWF0aW5nIE9KUyBjb250ZXh0LCBzZXR0aW5nIHVwIGhhbmRsZXJzLi4uXCIpO1xuICAgICAgICBjb25zdCBsID0gWC5idWlsZE9qc0Zsb3dDb250ZXh0KFxuICAgICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICAgIGEsXG4gICAgICAgICAgYyxcbiAgICAgICAgICB0aGlzLmdldEZvcm1EaXYoKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvbnRleHQuc2V0KGwpLCBpYSh0aGlzLmluaXRGbG93cywgbCwgdGhpcy5mb3JtQ2FsbGJhY2tzKSwgWihcIuKUnCBTdGFydGluZyBPSlMgaW5pdCBmbG93cy4uLlwiKSwgYXdhaXQgVmkodGhpcy5pbml0Rmxvd3MsIGwsIHRoaXMuZm9ybUNhbGxiYWNrcyksIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25Mb2FkKGEudG90YWxBbW91bnRBdG9tcywgYS5jdXJyZW5jeSksIFooXCLilbAgRG9uZSBpbml0aWFsaXppbmcgT0pTIGZsb3dzLlwiKSwgZyhcImZvcm1fbG9hZGVkXCIpO1xuICAgICAgfSBjYXRjaCAoaSkge1xuICAgICAgICBjb25zdCBhID0gVihpKTtcbiAgICAgICAgeihcIuKVsCBFcnJvciBpbml0aWFsaXppbmcgT1AgZm9ybTpcIiwgYSksIGcoXCJmb3JtX2luaXRfZXJyb3JcIiwge1xuICAgICAgICAgIGVycm9yOiBhXG4gICAgICAgIH0pLCB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uTG9hZEVycm9yKGEpO1xuICAgICAgfVxuICAgIH0sIHRoaXMuc2V0Rm9ybUhlaWdodCA9IChpKSA9PiB7XG4gICAgICB0aGlzLmZvcm1Qcm9wZXJ0aWVzLmhlaWdodCA9IGksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzICYmIE9iamVjdC52YWx1ZXModGhpcy5yZWdpc3RlcmVkRWxlbWVudHMpLmZvckVhY2goKGEpID0+IHtcbiAgICAgICAgIWEgfHwgYS50eXBlID09PSBXLkNERV9CUklER0UgfHwgKGEubm9kZS5zdHlsZS5oZWlnaHQgPSBpKTtcbiAgICAgIH0pO1xuICAgIH0sIHRoaXMub25DZGVMb2FkZWQgPSAoaSkgPT4ge1xuICAgICAgdGhpcy5jZGVMb2FkRXZlbnQuY3VycmVudC5pc1N1Y2Nlc3MgfHwgKHRoaXMuY2RlTG9hZEV2ZW50LnNldChpKSwgZyhcImNkZV9sb2FkZWRcIikpO1xuICAgIH0sIHRoaXMub25DZGVMb2FkRXJyb3IgPSAoaSkgPT4ge1xuICAgICAgdGhpcy5jZGVMb2FkRXZlbnQuY3VycmVudC5pc1N1Y2Nlc3MgfHwgKHRoaXMuY2RlTG9hZEV2ZW50LnRocm93KG5ldyBFcnJvcihpKSwgaSksIGcoXCJjZGVfbG9hZF9lcnJvclwiLCB7XG4gICAgICAgIGVycm9yOiBpXG4gICAgICB9KSk7XG4gICAgfSwgdGhpcy5jcmVhdGVFbGVtZW50ID0gKGksIGEgPSB7fSkgPT4ge1xuICAgICAgaWYgKHRoaXMuY2hlY2tWYWxpZEZvcm1JbnN0YW5jZShcImNyZWF0ZUVsZW1lbnRcIiksICF0aGlzLmNvbmZpZykgdGhyb3cgbmV3IEVycm9yKFwiT3BlblBheSBmb3JtIG5vdCBpbml0aWFsaXplZFwiKTtcbiAgICAgIGNvbnN0IGMgPSBabi5wYXJzZShpKSwgbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIiksIHUgPSB0aGlzLmJ1aWxkUXVlcnlTdHJpbmcoYSk7XG4gICAgICBsLm5hbWUgPSBgJHtjfS1lbGVtZW50YDtcbiAgICAgIGNvbnN0IGQgPSBuZXcgVVJMKGAvYXBwL3YxLyR7bC5uYW1lfS9gLCB0aGlzLmNvbmZpZy5iYXNlVXJsKTtcbiAgICAgIHJldHVybiBkLnNlYXJjaCA9IHUudG9TdHJpbmcoKSwgbC5zcmMgPSBkLmhyZWYsIGwuc3R5bGUuYm9yZGVyID0gXCJub25lXCIsIGwuc3R5bGUud2lkdGggPSBcIjEwMCVcIiwgdGhpcy5yZWdpc3RlcklmcmFtZShjLCBsKTtcbiAgICB9LCB0aGlzLnJlZ2lzdGVySWZyYW1lID0gKGksIGEpID0+IHtcbiAgICAgIGNvbnN0IGMgPSB7XG4gICAgICAgIHR5cGU6IGksXG4gICAgICAgIG5vZGU6IGEsXG4gICAgICAgIG1vdW50OiAobCkgPT4ge1xuICAgICAgICAgIHZhciB1O1xuICAgICAgICAgICh1ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihsKSkgPT0gbnVsbCB8fCB1LmFwcGVuZENoaWxkKGEpLCBnKFwiZWxlbWVudF9tb3VudGVkXCIsIHtcbiAgICAgICAgICAgIGVsZW1lbnRfdHlwZTogaVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdFRvRWxlbWVudCh7IHR5cGU6IGMudHlwZSwgbm9kZTogYy5ub2RlIH0pLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyB8fCAodGhpcy5yZWdpc3RlcmVkRWxlbWVudHMgPSB7XG4gICAgICAgIFtXLkNBUkRdOiB2b2lkIDAsXG4gICAgICAgIFtXLkNBUkRfTlVNQkVSXTogdm9pZCAwLFxuICAgICAgICBbVy5DQVJEX0VYUElSWV06IHZvaWQgMCxcbiAgICAgICAgW1cuQ0FSRF9DVkNdOiB2b2lkIDAsXG4gICAgICAgIFtXLkNERV9CUklER0VdOiB2b2lkIDBcbiAgICAgIH0pLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50c1tpXSA9IGMsIGM7XG4gICAgfSwgdGhpcy5idWlsZFF1ZXJ5U3RyaW5nID0gKGkpID0+IHtcbiAgICAgIGNvbnN0IGEgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICByZXR1cm4gYS5hcHBlbmQoXCJyZWZlcmVyXCIsIHRoaXMucmVmZXJyZXIpLCBhLmFwcGVuZChcImZvcm1JZFwiLCB0aGlzLmZvcm1JZCksIGkuc3R5bGVzICYmIGEuYXBwZW5kKFwic3R5bGVzXCIsIE1yKGkuc3R5bGVzKSksIGEuYXBwZW5kKFwic2VjdXJlVG9rZW5cIiwgdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbiksIGE7XG4gICAgfSwgdGhpcy5jb25uZWN0VG9FbGVtZW50ID0gKGkpID0+IHtcbiAgICAgIG9hKGkubm9kZSkudGhlbigoYSkgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25NYW5hZ2VyLmFkZENvbm5lY3Rpb24oaS50eXBlLCBhKSwgIXRoaXMuYW55Q2RlQ29ubi5jdXJyZW50LmlzU3VjY2VzcyAmJiBpLnR5cGUgPT09IFcuQ0RFX0JSSURHRSAmJiB0aGlzLmFueUNkZUNvbm4uc2V0KGEpO1xuICAgICAgfSkuY2F0Y2goKGEpID0+IHooXCJbRk9STV0gRXJyb3IgY29ubmVjdGluZyB0byBDREUgaWZyYW1lXCIsIGEpKTtcbiAgICB9LCB0aGlzLmdldEZvcm1EaXYgPSAoKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZm9ybVRhcmdldCkgPz8gZG9jdW1lbnQuYm9keSwgdGhpcy5zdWJtaXRDYXJkID0gKGkpID0+IHtcbiAgICAgIGcoXCJzdWJtaXRfY2FyZFwiLCB7IC4uLmkgfSksIHRoaXMuY2hlY2tWYWxpZEZvcm1JbnN0YW5jZShcInN1Ym1pdENhcmRcIik7XG4gICAgICBjb25zdCBhID0gdGhpcy5jb250ZXh0LmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgaWYgKCFhKSB7XG4gICAgICAgIHooXCJQbGVhc2Ugd2FpdCBmb3IgdGhlIGZvcm0gdG8gZmluaXNoIGxvYWRpbmcgYmVmb3JlIHN1Ym1pdHRpbmcuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBSLmNvbW1vbkNDLnJ1bih7XG4gICAgICAgIGNvbnRleHQ6IGEsXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogUGUoYS5jaGVja291dFBheW1lbnRNZXRob2RzLCBcImNyZWRpdF9jYXJkXCIpLFxuICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBlZShhLmZvcm1EaXYpLFxuICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0aGlzLmZvcm1DYWxsYmFja3MsXG4gICAgICAgIGN1c3RvbVBhcmFtczoge1xuICAgICAgICAgIGN1cnJlbnRDZGVDb25uZWN0aW9uczogdGhpcy5jb25uZWN0aW9uTWFuYWdlci5nZXRBbGxDb25uZWN0aW9ucygpLFxuICAgICAgICAgIHBheW1lbnRSb3V0ZUlkOiBpID09IG51bGwgPyB2b2lkIDAgOiBpLnBheW1lbnRSb3V0ZUlkXG4gICAgICAgIH0sXG4gICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICAvLyBUaGlzIGZsb3cgcmVxdWlyZXMgbm8gaW5pdGlhbGl6YXRpb25cbiAgICAgIH0pO1xuICAgIH0sIHRoaXMuZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jaGVja1ZhbGlkRm9ybUluc3RhbmNlKFwiZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHNcIiksICF0aGlzLmNvbnRleHQuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCkpIHtcbiAgICAgICAgeihcIlBsZWFzZSB3YWl0IGZvciB0aGUgZm9ybSB0byBmaW5pc2ggbG9hZGluZyBiZWZvcmUgZ2V0dGluZyBhdmFpbGFibGUgcGF5bWVudCBtZXRob2RzLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgYSA9IHtcbiAgICAgICAgYWlyd2FsbGV4R29vZ2xlUGF5OiAkLmFpcndhbGxleEdvb2dsZVBheSxcbiAgICAgICAgYWlyd2FsbGV4QXBwbGVQYXk6ICQuYWlyd2FsbGV4QXBwbGVQYXksXG4gICAgICAgIGF1dGhvcml6ZU5ldEdvb2dsZVBheTogJC5hdXRob3JpemVuZXRHb29nbGVQYXksXG4gICAgICAgIGF1dGhvcml6ZU5ldEFwcGxlUGF5OiAkLmF1dGhvcml6ZW5ldEFwcGxlUGF5XG4gICAgICB9LCBjID0gT2JqZWN0LmVudHJpZXModGhpcy5pbml0Rmxvd3MpLm1hcCgoW2wsIHVdKSA9PiAoe1xuICAgICAgICBuYW1lOiBhW2xdID8/IGwsXG4gICAgICAgIC4uLnUucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gZyhcImdldF9hdmFpbGFibGVfcGF5bWVudF9tZXRob2RzXCIsIHtcbiAgICAgICAgYXZhaWxhYmxlX3BheW1lbnRfbWV0aG9kczogY1xuICAgICAgfSksIGM7XG4gICAgfSwgdGhpcy5nZW5lcmFsU3VibWl0ID0gKGksIGEpID0+IHtcbiAgICAgIGcoXCJnZW5lcmFsX2Zvcm1fc3VibWl0XCIsIHtcbiAgICAgICAgbWV0aG9kOiBpLFxuICAgICAgICBzZXR0aW5nczogYVxuICAgICAgfSksIHRoaXMuY2hlY2tWYWxpZEZvcm1JbnN0YW5jZShcImdlbmVyYWxTdWJtaXRcIik7XG4gICAgICBjb25zdCBjID0gdGhpcy5jb250ZXh0LmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgaWYgKCFjKSB7XG4gICAgICAgIHooXCJQbGVhc2Ugd2FpdCBmb3IgdGhlIGZvcm0gdG8gZmluaXNoIGxvYWRpbmcgYmVmb3JlIHN1Ym1pdHRpbmcuXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKGkpIHtcbiAgICAgICAgY2FzZSAkLnBvY2t5dFBheXBhbDpcbiAgICAgICAgICByZXR1cm4gUi5wb2NreXRQYXlwYWwucnVuKHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGMsXG4gICAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IFBlKGMuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgXCJwYXlwYWxcIiwgXCJwb2NreXRcIiksXG4gICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBlZShjLmZvcm1EaXYpLFxuICAgICAgICAgICAgZm9ybUNhbGxiYWNrczogdGhpcy5mb3JtQ2FsbGJhY2tzLFxuICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiB7IHNldHRpbmdzOiBhIH0sXG4gICAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgY2FzZSAkLmFpcndhbGxleEdvb2dsZVBheToge1xuICAgICAgICAgIGNvbnN0IGwgPSB0aGlzLmluaXRGbG93cy5haXJ3YWxsZXhHb29nbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgIGlmICghbCkge1xuICAgICAgICAgICAgeihcbiAgICAgICAgICAgICAgXCJhaXJ3YWxsZXgtZ29vZ2xlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGwuc3RhcnRGbG93KGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5haXJ3YWxsZXhBcHBsZVBheToge1xuICAgICAgICAgIGNvbnN0IGwgPSB0aGlzLmluaXRGbG93cy5haXJ3YWxsZXhBcHBsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgaWYgKCFsKSB7XG4gICAgICAgICAgICB6KFxuICAgICAgICAgICAgICBcImFpcndhbGxleC1hcHBsZS1wYXkgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgdXNpbmcgJ2dldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzKCknXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBsLnN0YXJ0RmxvdyhhKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuYXV0aG9yaXplbmV0R29vZ2xlUGF5OiB7XG4gICAgICAgICAgY29uc3QgbCA9IHRoaXMuaW5pdEZsb3dzLmF1dGhvcml6ZU5ldEdvb2dsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgaWYgKCFsKSB7XG4gICAgICAgICAgICB6KFxuICAgICAgICAgICAgICBcImF1dGhvcml6ZS1uZXQtZ29vZ2xlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGwuc3RhcnRGbG93KGEpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5hdXRob3JpemVuZXRBcHBsZVBheToge1xuICAgICAgICAgIGNvbnN0IGwgPSB0aGlzLmluaXRGbG93cy5hdXRob3JpemVOZXRBcHBsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgaWYgKCFsKSB7XG4gICAgICAgICAgICB6KFxuICAgICAgICAgICAgICBcImF1dGhvcml6ZS1uZXQtYXBwbGUtcGF5IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IHVzaW5nICdnZXRBdmFpbGFibGVQYXltZW50TWV0aG9kcygpJ1wiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbC5zdGFydEZsb3coYSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLmxvb3BDcnlwdG86XG4gICAgICAgICAgcmV0dXJuIFIubG9vcENyeXB0by5ydW4oe1xuICAgICAgICAgICAgY29udGV4dDogYyxcbiAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogUGUoYy5jaGVja291dFBheW1lbnRNZXRob2RzLCBcImNyeXB0b1wiLCBcImxvb3BcIiksXG4gICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBlZShjLmZvcm1EaXYpLFxuICAgICAgICAgICAgZm9ybUNhbGxiYWNrczogdGhpcy5mb3JtQ2FsbGJhY2tzLFxuICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBhLFxuICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgWWUoaSk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5zdWJtaXQgPSB0aGlzLnN1Ym1pdENhcmQsIHRoaXMuZGVzdHJveSA9ICgpID0+IHtcbiAgICAgIHZhciBpO1xuICAgICAgWihcIkRlc3Ryb3lpbmcgT3BlblBheSBmb3JtLi4uXCIpLCB0aGlzLmNoZWNrVmFsaWRGb3JtSW5zdGFuY2UoXCJkZXN0cm95XCIpLCB0aGlzLmlzRGVzdHJveWVkID0gITA7XG4gICAgICBmb3IgKGNvbnN0IGEgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyA/PyB7fSkpXG4gICAgICAgIGEgJiYgYS5ub2RlLnJlbW92ZSgpO1xuICAgICAgKGkgPSBBKCkpID09IG51bGwgfHwgaS5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmV2ZW50SGFuZGxlci5oYW5kbGVNZXNzYWdlLmJpbmQodGhpcy5ldmVudEhhbmRsZXIpKSwgaXMoKSwgdGhpcy5yZWdpc3RlcmVkRWxlbWVudHMgPSBudWxsLCBkZWxldGUgd2luZG93Lm9qcywgZyhcImZvcm1fZGVzdHJveWVkXCIpO1xuICAgIH0sIHRoaXMudXBkYXRlQ2FsbGJhY2tzID0gKGkpID0+IHtcbiAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5zZXRDYWxsYmFja3MoaSk7XG4gICAgfSwgWC5hc3NpZ25Bc1NpbmdsZXRvbih0aGlzKSwgdGhpcy5vanNWZXJzaW9uID0gXCIwLjIuMzZcIiwgdGhpcy5vanNSZWxlYXNlVmVyc2lvbiA9IFwibG9jYWxfYnVpbGRcIiwgdGhpcy5iYXNlVXJsID0gbi5iYXNlVXJsID8/IFwiaHR0cHM6Ly9jZGUuZ2V0b3BlbnBheS5jb21cIiwgdGhpcy5jb25maWcgPSB7IC4uLm4sIGJhc2VVcmw6IHRoaXMuYmFzZVVybCB9LCB0aGlzLmZvcm1DYWxsYmFja3MgPSBzdC5mcm9tT2JqZWN0KG4pLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyA9IG51bGwsIHRoaXMuZm9ybUlkID0gYG9wanMtZm9ybS0ke3Y0KCl9YCwgdGhpcy5yZWZlcnJlciA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sIHRoaXMuZm9ybVRhcmdldCA9IG4uZm9ybVRhcmdldCA/PyBcImJvZHlcIiwgdGhpcy5mb3JtUHJvcGVydGllcyA9IHsgaGVpZ2h0OiBcIjFweFwiIH0sIHRoaXMuY29ubmVjdGlvbk1hbmFnZXIgPSBuZXcgc2EoKSwgdGhpcy5kZXZpY2VUb2tlbiA9IFFpKCksIHNzKCk7XG4gICAgY29uc3QgeyBmcmFtZXdvcms6IHQsIHZlcnNpb246IHIgfSA9IG5hKCk7XG4gICAgY24odGhpcy5iYXNlVXJsKS50aGVuKChpKSA9PiB7XG4gICAgICBpZiAoIW90LmN1cnJlbnQuaXNTdWNjZXNzKSB7XG4gICAgICAgIGNvbnN0IGEgPSB7XG4gICAgICAgICAgY2hlY2tvdXRTZWN1cmVUb2tlbjogdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgICBkZXZpY2VUb2tlbjogdGhpcy5kZXZpY2VUb2tlbixcbiAgICAgICAgICBlbnZpcm9ubWVudDogaSxcbiAgICAgICAgICBmcmFtZXdvcms6IHQsXG4gICAgICAgICAgZnJhbWV3b3JrVmVyc2lvbjogcixcbiAgICAgICAgICBvanNWZXJzaW9uOiB0aGlzLm9qc1ZlcnNpb24sXG4gICAgICAgICAgb2pzUmVsZWFzZVZlcnNpb246IHRoaXMub2pzUmVsZWFzZVZlcnNpb24sXG4gICAgICAgICAgcmVmZXJyZXI6IHRoaXMucmVmZXJyZXIsXG4gICAgICAgICAgYmFzZVVybDogdGhpcy5iYXNlVXJsXG4gICAgICAgIH07XG4gICAgICAgIG90LnNldChhKTtcbiAgICAgIH1cbiAgICB9KSwgZyhcImZvcm1faW5pdFwiKSwgdGhpcy5ldmVudEhhbmRsZXIgPSBuZXcgcmEodGhpcy5mb3JtSWQsIHRoaXMuYmFzZVVybCwgdGhpcy5mb3JtQ2FsbGJhY2tzLCB7XG4gICAgICBzZXRGb3JtSGVpZ2h0OiB0aGlzLnNldEZvcm1IZWlnaHQsXG4gICAgICBvbkNkZUxvYWRlZDogdGhpcy5vbkNkZUxvYWRlZCxcbiAgICAgIG9uQ2RlTG9hZEVycm9yOiB0aGlzLm9uQ2RlTG9hZEVycm9yXG4gICAgfSksIChzID0gQSgpKSA9PSBudWxsIHx8IHMuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5ldmVudEhhbmRsZXIuaGFuZGxlTWVzc2FnZS5iaW5kKHRoaXMuZXZlbnRIYW5kbGVyKSksIHRoaXMuc3RhcnRGb3JtSW5pdCgpO1xuICB9XG4gIGdldCBjaGVja291dFNlY3VyZVRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jaGVja291dFNlY3VyZVRva2VuO1xuICB9XG4gIGNoZWNrVmFsaWRGb3JtSW5zdGFuY2UobiA9IFwidW5rbm93blwiKSB7XG4gICAgY29uc3QgdCA9IFguZ2V0SW5zdGFuY2UoKSwgciA9IHtcbiAgICAgIGNhbGxlcjogbixcbiAgICAgIHRoaXNGb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgY3VycmVudEZvcm1JZDogKHQgPT0gbnVsbCA/IHZvaWQgMCA6IHQuZm9ybUlkKSB8fCBcIm5vLWN1cnJlbnQtaW5zdGFuY2VcIixcbiAgICAgIGlzRGVzdHJveWVkOiB0aGlzLmlzRGVzdHJveWVkLFxuICAgICAgY2hlY2tvdXRUb2tlbjogdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbi5zdWJzdHJpbmcoMCwgMTApICsgXCIuLi5cIlxuICAgIH0sIHMgPSBgXG4gICAgICBbV2FybmluZ10gSW52YWxpZCBmb3JtIGluc3RhbmNlIGRldGVjdGVkLlxuICAgICAgSXQgbG9va3MgbGlrZSB5b3UgYXJlIHN0aWxsIHVzaW5nIGFuIG9sZCBpbnN0YW5jZSB0aGF0IGhhcyBiZWVuIGRlc3Ryb3llZC5cbiAgICAgIFBsZWFzZSBtYWtlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgbGF0ZXN0IGluc3RhbmNlIG9mIHRoZSBmb3JtIGFuZCBjbGVhbnVwIGV2ZW50IGxpc3RlbmVycy5cbiAgICAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICAgRGVidWcgSW5mbzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgLSBjYWxsZXI6ICR7bn1cbiAgICAgIC0gY2FsbGVyX2Zvcm1faWQ6ICR7ci50aGlzRm9ybUlkfVxuICAgICAgLSBjdXJyZW50X2FjdGl2ZV9mb3JtX2lkOiAke3IuY3VycmVudEZvcm1JZH1cbiAgICAgIC0gaXNfZGVzdHJveWVkOiAke3IuaXNEZXN0cm95ZWR9XG4gICAgICAtIGNoZWNrb3V0X3Rva2VuOiAke3IuY2hlY2tvdXRUb2tlbn1cbiAgICBgO1xuICAgIHJldHVybiB0aGlzLmlzRGVzdHJveWVkID8gKHoocyksIGcoXCJvdXRkYXRlZF9mb3JtX2luc3RhbmNlXCIsIHsgZXJyb3I6IHMgfSksICExKSA6ICF0IHx8IHQuZm9ybUlkICE9PSB0aGlzLmZvcm1JZCA/ICh6KHMpLCBnKFwib3V0ZGF0ZWRfZm9ybV9pbnN0YW5jZVwiLCB7IGVycm9yOiBzIH0pLCAhMSkgOiAhMDtcbiAgfVxufTtcblgub2pzRmxvd3MgPSBSLCBYLmFzc2lnbkFzU2luZ2xldG9uID0gKG4pID0+IHtcbiAgaWYgKFguZ2V0SW5zdGFuY2UoKSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJPcGVuUGF5IGluc3RhbmNlIGFscmVhZHkgZXhpc3RzLiBPbmx5IG9uZSBpbnN0YW5jZSBpcyBhbGxvd2VkLlwiKTtcbiAgd2luZG93Lm9qcyA9IG47XG59LCBYLmdldEluc3RhbmNlID0gKCkgPT4gd2luZG93Lm9qcyA/PyBudWxsLCBYLmJ1aWxkT2pzRmxvd0NvbnRleHQgPSAobiwgdCwgciwgcykgPT4gKHtcbiAgY2hlY2tvdXRTZWN1cmVUb2tlbjogbi5jaGVja291dFNlY3VyZVRva2VuLFxuICBiYXNlVXJsOiBuZXcgVVJMKG4uYmFzZVVybCA/PyB4dCkub3JpZ2luLFxuICBmb3JtRGl2OiBzLFxuICBlbGVtZW50c1Nlc3Npb25JZDogdC5zZXNzaW9uSWQsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZHM6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kcyxcbiAgYW55Q2RlQ29ubmVjdGlvbjogcixcbiAgY3VzdG9tSW5pdFBhcmFtczogbi5jdXN0b21Jbml0UGFyYW1zID8/IHt9XG59KTtcbmxldCBPdCA9IFg7XG5cbmNvbnN0IFB5ZGFudGljVmFsaWRhdGlvbkVycm9yJDEgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLmFycmF5KFB5ZGFudGljVmFsaWRhdGlvbkVycm9yJDEpO1xuY29uc3QgWm9kRmllbGRFcnJvciA9IHokMS5vYmplY3Qoe1xuICBjb2RlOiB6JDEuc3RyaW5nKCksXG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKSxcbiAgcGF0aDogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLmFycmF5KFpvZEZpZWxkRXJyb3IpO1xuY29uc3QgbWFrZUNhbGxiYWNrU2FmZSA9IChjYWxsYmFja05hbWUsIGZuLCBlcnJvckxvZ2dlcikgPT4ge1xuICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZuKC4uLmFyZ3MpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBlcnJvckxvZ2dlcihgW2Zvcm1dIEVycm9yIHJ1bm5pbmcgY2FsbGJhY2sgKCR7Y2FsbGJhY2tOYW1lfSk6YCwgZXJyb3IpO1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgU3VibWl0TWV0aG9kcyA9IC8qIEBfX1BVUkVfXyAqLyAoKFN1Ym1pdE1ldGhvZHMyKSA9PiB7XG4gIFN1Ym1pdE1ldGhvZHMyW1wicG9ja3l0UGF5cGFsXCJdID0gXCJwb2NreXQtcGF5cGFsXCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWlyd2FsbGV4R29vZ2xlUGF5XCJdID0gXCJhaXJ3YWxsZXgtZ29vZ2xlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImFpcndhbGxleEFwcGxlUGF5XCJdID0gXCJhaXJ3YWxsZXgtYXBwbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYXV0aG9yaXplbmV0R29vZ2xlUGF5XCJdID0gXCJhdXRob3JpemVuZXQtZ29vZ2xlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImF1dGhvcml6ZW5ldEFwcGxlUGF5XCJdID0gXCJhdXRob3JpemVuZXQtYXBwbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wibG9vcENyeXB0b1wiXSA9IFwibG9vcC1jcnlwdG9cIjtcbiAgcmV0dXJuIFN1Ym1pdE1ldGhvZHMyO1xufSkoU3VibWl0TWV0aG9kcyB8fCB7fSk7XG56JDEubmF0aXZlRW51bShTdWJtaXRNZXRob2RzKTtcblxuY29uc3QgUmVxdWlyZWRTdHJpbmcgPSB6JDEuc3RyaW5nKCkudHJpbSgpLm1pbigxLCB7IG1lc3NhZ2U6IGBDYW5ub3QgYmUgYmxhbmtgIH0pO1xuY29uc3QgT3B0aW9uYWxTdHJpbmcgPSB6JDEuc3RyaW5nKCkudHJpbSgpLm9wdGlvbmFsKCk7XG5jb25zdCBudWxsT3JVbmRlZk9yJDEgPSAoelR5cGUpID0+IHokMS5udWxsYWJsZSh6VHlwZS5vcHRpb25hbCgpKTtcbnZhciBGaWVsZE5hbWUgPSAvKiBAX19QVVJFX18gKi8gKChGaWVsZE5hbWUyKSA9PiB7XG4gIEZpZWxkTmFtZTJbXCJGSVJTVF9OQU1FXCJdID0gXCJmaXJzdE5hbWVcIjtcbiAgRmllbGROYW1lMltcIkxBU1RfTkFNRVwiXSA9IFwibGFzdE5hbWVcIjtcbiAgRmllbGROYW1lMltcIkVNQUlMXCJdID0gXCJlbWFpbFwiO1xuICBGaWVsZE5hbWUyW1wiWklQX0NPREVcIl0gPSBcInppcENvZGVcIjtcbiAgRmllbGROYW1lMltcIkNJVFlcIl0gPSBcImNpdHlcIjtcbiAgRmllbGROYW1lMltcIlNUQVRFXCJdID0gXCJzdGF0ZVwiO1xuICBGaWVsZE5hbWUyW1wiQ09VTlRSWVwiXSA9IFwiY291bnRyeVwiO1xuICBGaWVsZE5hbWUyW1wiQUREUkVTU1wiXSA9IFwiYWRkcmVzc1wiO1xuICBGaWVsZE5hbWUyW1wiUEhPTkVcIl0gPSBcInBob25lXCI7XG4gIEZpZWxkTmFtZTJbXCJQUk9NT1RJT05fQ09ERVwiXSA9IFwicHJvbW90aW9uQ29kZVwiO1xuICByZXR1cm4gRmllbGROYW1lMjtcbn0pKEZpZWxkTmFtZSB8fCB7fSk7XG5jb25zdCBGaWVsZE5hbWVFbnVtID0geiQxLm5hdGl2ZUVudW0oRmllbGROYW1lKTtcbnZhciBQcml2YXRlRmllbGROYW1lID0gLyogQF9fUFVSRV9fICovICgoUHJpdmF0ZUZpZWxkTmFtZTIpID0+IHtcbiAgUHJpdmF0ZUZpZWxkTmFtZTJbXCJDQVJEX05VTUJFUlwiXSA9IFwiY2FyZE51bWJlclwiO1xuICBQcml2YXRlRmllbGROYW1lMltcIkNBUkRfRVhQSVJZXCJdID0gXCJjYXJkRXhwaXJ5XCI7XG4gIFByaXZhdGVGaWVsZE5hbWUyW1wiQ0FSRF9DVkNcIl0gPSBcImNhcmRDdmNcIjtcbiAgcmV0dXJuIFByaXZhdGVGaWVsZE5hbWUyO1xufSkoUHJpdmF0ZUZpZWxkTmFtZSB8fCB7fSk7XG5jb25zdCBQcml2YXRlRmllbGROYW1lRW51bSA9IHokMS5uYXRpdmVFbnVtKFByaXZhdGVGaWVsZE5hbWUpO1xuY29uc3QgQWxsRmllbGROYW1lcyA9IHokMS51bmlvbihbRmllbGROYW1lRW51bSwgUHJpdmF0ZUZpZWxkTmFtZUVudW1dKTtcbnZhciBFbGVtZW50VHlwZUVudW0gPSAvKiBAX19QVVJFX18gKi8gKChFbGVtZW50VHlwZUVudW0yKSA9PiB7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEXCJdID0gXCJjYXJkXCI7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEX05VTUJFUlwiXSA9IFwiY2FyZC1udW1iZXJcIjtcbiAgRWxlbWVudFR5cGVFbnVtMltcIkNBUkRfRVhQSVJZXCJdID0gXCJjYXJkLWV4cGlyeVwiO1xuICBFbGVtZW50VHlwZUVudW0yW1wiQ0FSRF9DVkNcIl0gPSBcImNhcmQtY3ZjXCI7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDREVfQlJJREdFXCJdID0gXCJjZGUtYnJpZGdlXCI7XG4gIHJldHVybiBFbGVtZW50VHlwZUVudW0yO1xufSkoRWxlbWVudFR5cGVFbnVtIHx8IHt9KTtcbnokMS5uYXRpdmVFbnVtKEVsZW1lbnRUeXBlRW51bSk7XG5jb25zdCBDaGVja291dFBheW1lbnRNZXRob2QkMSA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnN0cmluZygpLFxuICBwcm9jZXNzb3JfbmFtZTogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIG1ldGFkYXRhOiBudWxsT3JVbmRlZk9yJDEoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbmNvbnN0IFBheW1lbnRNZXRob2RNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGlkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGNhcmROdW1iZXI6IE9wdGlvbmFsU3RyaW5nLFxuICBleHBpcnk6IE9wdGlvbmFsU3RyaW5nLFxuICBjdmM6IE9wdGlvbmFsU3RyaW5nXG59KTtcbnokMS5vYmplY3Qoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IE9wdGlvbmFsU3RyaW5nLFxuICBjb2xvcjogT3B0aW9uYWxTdHJpbmcsXG4gIGZvbnRGYW1pbHk6IE9wdGlvbmFsU3RyaW5nLFxuICBmb250U2l6ZTogT3B0aW9uYWxTdHJpbmcsXG4gIGZvbnRXZWlnaHQ6IE9wdGlvbmFsU3RyaW5nLFxuICBtYXJnaW46IE9wdGlvbmFsU3RyaW5nLFxuICBwYWRkaW5nOiBPcHRpb25hbFN0cmluZyxcbiAgbGV0dGVyU3BhY2luZzogT3B0aW9uYWxTdHJpbmcsXG4gIGxpbmVIZWlnaHQ6IE9wdGlvbmFsU3RyaW5nLFxuICBoaWRlSWNvbjogT3B0aW9uYWxTdHJpbmdcbn0pO1xuY29uc3QgRXZlbnRUeXBlID0geiQxLmVudW0oW1xuICAvLyBFbGVtZW50IC0+IEZvcm1cbiAgXCJMQVlPVVRcIixcbiAgXCJMT0FERURcIixcbiAgXCJCTFVSXCIsXG4gIFwiRk9DVVNcIixcbiAgXCJDSEFOR0VcIixcbiAgXCJUT0tFTklaRV9TVEFSVEVEXCIsXG4gIFwiQ0hFQ0tPVVRfU1RBUlRFRFwiLFxuICBcIlBBWU1FTlRfRkxPV19TVEFSVEVEXCIsXG4gIFwiVE9LRU5JWkVfU1VDQ0VTU1wiLFxuICBcIkNIRUNLT1VUX1NVQ0NFU1NcIixcbiAgXCJMT0FEX0VSUk9SXCIsXG4gIFwiVkFMSURBVElPTl9FUlJPUlwiLFxuICBcIlRPS0VOSVpFX0VSUk9SXCIsXG4gIFwiQ0hFQ0tPVVRfRVJST1JcIixcbiAgXCJTRVRVUF9QQVlNRU5UX01FVEhPRF9TVUNDRVNTXCIsXG4gIC8vIEZvcm0gLT4gRWxlbWVudFxuICBcIlRPS0VOSVpFXCIsXG4gIFwiQ0hFQ0tPVVRcIixcbiAgXCJTVEFSVF9QQVlNRU5UX0ZMT1dcIlxuXSk7XG5jb25zdCBHZW5lcmljRXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiVE9LRU5JWkVfU1RBUlRFRFwiLCBcIkNIRUNLT1VUX1NUQVJURURcIl0pO1xuY29uc3QgR2VuZXJpY0V2ZW50UGF5bG9hZCA9IHokMS5vYmplY3QoeyB0eXBlOiBHZW5lcmljRXZlbnRUeXBlIH0pO1xuY29uc3QgSW5wdXRFdmVudFR5cGUgPSBFdmVudFR5cGUuZXh0cmFjdChbXCJCTFVSXCIsIFwiRk9DVVNcIiwgXCJDSEFOR0VcIl0pO1xuY29uc3QgSW5wdXRFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogSW5wdXRFdmVudFR5cGUsXG4gIGVsZW1lbnRUeXBlOiBQcml2YXRlRmllbGROYW1lRW51bSxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IEVycm9yRXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiTE9BRF9FUlJPUlwiLCBcIlRPS0VOSVpFX0VSUk9SXCIsIFwiQ0hFQ0tPVVRfRVJST1JcIl0pO1xuY29uc3QgRXJyb3JFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogRXJyb3JFdmVudFR5cGUsXG4gIG1lc3NhZ2U6IFJlcXVpcmVkU3RyaW5nLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IFZhbGlkYXRpb25FcnJvckV2ZW50VHlwZSA9IEV2ZW50VHlwZS5leHRyYWN0KFtcIlZBTElEQVRJT05fRVJST1JcIl0pO1xuY29uc3QgVmFsaWRhdGlvbkVycm9yRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IFZhbGlkYXRpb25FcnJvckV2ZW50VHlwZSxcbiAgZWxlbWVudFR5cGU6IEFsbEZpZWxkTmFtZXMsXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgTGF5b3V0RXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLkxBWU9VVCksXG4gIGhlaWdodDogUmVxdWlyZWRTdHJpbmdcbn0pO1xuY29uc3QgTG9hZGVkRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLkxPQURFRCksXG4gIHNlc3Npb25JZDogUmVxdWlyZWRTdHJpbmcsXG4gIHRvdGFsQW1vdW50QXRvbXM6IHokMS5udW1iZXIoKSxcbiAgY3VycmVuY3k6IE9wdGlvbmFsU3RyaW5nLFxuICBjaGVja291dFBheW1lbnRNZXRob2RzOiB6JDEuYXJyYXkoQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEpXG59KTtcbmNvbnN0IFBheW1lbnRGbG93U3RhcnRlZEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5QQVlNRU5UX0ZMT1dfU1RBUlRFRCksXG4gIG5leHRBY3Rpb25NZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBzdGFydFBGTWV0YWRhdGE6IHokMS5vcHRpb25hbCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgU2V0dXBDaGVja291dFN1Y2Nlc3NFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uU0VUVVBfUEFZTUVOVF9NRVRIT0RfU1VDQ0VTUyksXG4gIHBheW1lbnRNZXRob2RJZDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IFJlcXVpcmVkRm9ybUZpZWxkcyA9IHokMS5vYmplY3Qoe1xuICBbXCJmaXJzdE5hbWVcIiAvKiBGSVJTVF9OQU1FICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImxhc3ROYW1lXCIgLyogTEFTVF9OQU1FICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImVtYWlsXCIgLyogRU1BSUwgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wiemlwQ29kZVwiIC8qIFpJUF9DT0RFICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImNvdW50cnlcIiAvKiBDT1VOVFJZICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcInByb21vdGlvbkNvZGVcIiAvKiBQUk9NT1RJT05fQ09ERSAqL106IE9wdGlvbmFsU3RyaW5nXG59KTtcbmNvbnN0IFBSRm9ybUZpZWxkcyA9IHokMS5vYmplY3Qoe1xuICBbXCJmaXJzdE5hbWVcIiAvKiBGSVJTVF9OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImxhc3ROYW1lXCIgLyogTEFTVF9OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImVtYWlsXCIgLyogRU1BSUwgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wiemlwQ29kZVwiIC8qIFpJUF9DT0RFICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImNvdW50cnlcIiAvKiBDT1VOVFJZICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcInByb21vdGlvbkNvZGVcIiAvKiBQUk9NT1RJT05fQ09ERSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJhZGRyZXNzXCIgLyogQUREUkVTUyAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJjaXR5XCIgLyogQ0lUWSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzdGF0ZVwiIC8qIFNUQVRFICovXTogT3B0aW9uYWxTdHJpbmdcbn0pO1xuY29uc3QgU3VibWl0RXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiVE9LRU5JWkVcIiwgXCJDSEVDS09VVFwiLCBcIlNUQVJUX1BBWU1FTlRfRkxPV1wiXSk7XG5jb25zdCBTdWJtaXRFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogU3VibWl0RXZlbnRUeXBlLFxuICBzZXNzaW9uSWQ6IFJlcXVpcmVkU3RyaW5nLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxLFxuICBwYXltZW50Rmxvd01ldGFkYXRhOiB6JDEuYW55KCkub3B0aW9uYWwoKSxcbiAgZG9Ob3RVc2VMZWdhY3lDQ0Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdDQ1BNSWQ6IE9wdGlvbmFsU3RyaW5nLFxuICBwYXltZW50Um91dGVJZDogT3B0aW9uYWxTdHJpbmdcbn0pLmV4dGVuZChSZXF1aXJlZEZvcm1GaWVsZHMuc2hhcGUpO1xuY29uc3QgVG9rZW5pemVTdWNjZXNzRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLlRPS0VOSVpFX1NVQ0NFU1MpLFxuICBpc1JlYWR5Rm9yQ2hlY2tvdXQ6IHokMS5ib29sZWFuKClcbn0pO1xuY29uc3QgQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLkNIRUNLT1VUX1NVQ0NFU1MpLFxuICBpbnZvaWNlVXJsczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIHN1YnNjcmlwdGlvbklkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVySWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBFdmVudFBheWxvYWQgPSB6JDEuZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIEdlbmVyaWNFdmVudFBheWxvYWQsXG4gIElucHV0RXZlbnRQYXlsb2FkLFxuICBFcnJvckV2ZW50UGF5bG9hZCxcbiAgVmFsaWRhdGlvbkVycm9yRXZlbnRQYXlsb2FkLFxuICBMYXlvdXRFdmVudFBheWxvYWQsXG4gIExvYWRlZEV2ZW50UGF5bG9hZCxcbiAgU3VibWl0RXZlbnRQYXlsb2FkLFxuICBUb2tlbml6ZVN1Y2Nlc3NFdmVudFBheWxvYWQsXG4gIENoZWNrb3V0U3VjY2Vzc0V2ZW50UGF5bG9hZCxcbiAgUGF5bWVudEZsb3dTdGFydGVkRXZlbnRQYXlsb2FkLFxuICBTZXR1cENoZWNrb3V0U3VjY2Vzc0V2ZW50UGF5bG9hZFxuXSk7XG56JDEub2JqZWN0KHtcbiAgcGF5bG9hZDogRXZlbnRQYXlsb2FkLFxuICBub25jZTogUmVxdWlyZWRTdHJpbmcsXG4gIGZvcm1JZDogUmVxdWlyZWRTdHJpbmcsXG4gIGVsZW1lbnRJZDogUmVxdWlyZWRTdHJpbmdcbn0pO1xueiQxLm9iamVjdCh7XG4gIGFtb3VudEF0b206IHokMS5udW1iZXIoKSxcbiAgLyoqXG4gICAqIFRoZSB0aHJlZS1sZXR0ZXIgSVNPIDQyMTcgY3VycmVuY3kgY29kZSBmb3IgdGhlIHBheW1lbnQuXG4gICAqL1xuICBjdXJyZW5jeTogUmVxdWlyZWRTdHJpbmdcbn0pO1xueiQxLmVudW0oW1wiYXBwbGVfcGF5XCIsIFwiZ29vZ2xlX3BheVwiXSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIHByb21vdGlvbl9jb2RlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIGV4aXN0aW5nX2NjX3BtX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBjaGVja291dF9hdHRlbXB0X2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiBudWxsT3JVbmRlZk9yJDEoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbmNvbnN0IENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlID0geiQxLm9iamVjdCh7XG4gIGludm9pY2VfdXJsczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIHN1YnNjcmlwdGlvbl9pZHM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBjdXN0b21lcl9pZDogeiQxLnN0cmluZygpLFxuICBwcm9jZXNzb3JzX3VzZWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuYXJyYXkoeiQxLnN0cmluZygpKSlcbn0pO1xuY29uc3QgRmllbGRWYWxpZGF0aW9uRXJyb3IgPSB6JDEub2JqZWN0KHtcbiAgZWxlbWVudFR5cGU6IHokMS5zdHJpbmcoKSxcbiAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IFRva2VuaXplQ2FyZEVycm9yUmVzcG9uc2UgPSB6JDEub2JqZWN0KHtcbiAgc3VjY2VzczogeiQxLmxpdGVyYWwoZmFsc2UpLFxuICBlcnJvcl90eXBlOiB6JDEubGl0ZXJhbChcInZhbGlkYXRpb25fZXJyb3JcIiksXG4gIGVycm9yczogeiQxLmFycmF5KEZpZWxkVmFsaWRhdGlvbkVycm9yKVxufSk7XG56JDEuZGlzY3JpbWluYXRlZFVuaW9uKFwic3VjY2Vzc1wiLCBbXG4gIHokMS5vYmplY3QoeyBzdWNjZXNzOiB6JDEubGl0ZXJhbCh0cnVlKSB9KSxcbiAgVG9rZW5pemVDYXJkRXJyb3JSZXNwb25zZVxuXSk7XG56JDEub2JqZWN0KHtcbiAgc2Vzc2lvbl9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEsXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFJlcXVpcmVkRm9ybUZpZWxkcyxcbiAgZG9fbm90X3VzZV9sZWdhY3lfY2NfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBleGlzdGluZ19jY19wbV9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSxcbiAgcGF5bWVudF9yb3V0ZV9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxLFxuICBub25fY2RlX2Zvcm1fZmllbGRzOiBSZXF1aXJlZEZvcm1GaWVsZHMsXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXCJzdWNjZXNzXCIgLyogU1VDQ0VTUyAqLywgXCJmYWlsdXJlXCIgLyogRkFJTFVSRSAqLywgXCJjYW5jZWxsZWRcIiAvKiBDQU5DRUxMRUQgKi9dKSxcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICByZWRpcmVjdF91cmw6IHokMS5zdHJpbmcoKSxcbiAgaW5pdGlhbF9pbnRlbnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgY29uc2VudF9pZDogeiQxLnN0cmluZygpLFxuICB0aGVpcl9wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuY29uc3QgQ29tbW9uTmV4dEFjdGlvbk1ldGFkYXRhID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgcmVkaXJlY3RfdXJsOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgaW5pdGlhbF9pbnRlbnRfaWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBjb25zZW50X2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3Nlc3Npb246IG51bGxPclVuZGVmT3IkMSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwodHJ1ZSksIGhyZWY6IHokMS5zdHJpbmcoKSB9KSxcbiAgeiQxLm9iamVjdCh7IHByZXNlbnQ6IHokMS5saXRlcmFsKGZhbHNlKSB9KVxuXSk7XG56JDEub2JqZWN0KHtcbiAgcGF5bWVudF9tZXRob2RzOiB6JDEuYXJyYXkoUGF5bWVudE1ldGhvZE1pbmltYWwpLFxuICBwYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZTogbnVsbE9yVW5kZWZPciQxKENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlKSxcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiBudWxsT3JVbmRlZk9yJDEoeiQxLmFycmF5KENvbW1vbk5leHRBY3Rpb25NZXRhZGF0YSkpXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHN0cmlwZV9wazogeiQxLnN0cmluZygpLFxuICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKCksXG4gIHN0cmlwZV9wbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbn0pO1xuXG5jb25zdCBjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyA9IChzdHlsZXMpID0+IHtcbiAgY29uc3Qgc2VyaWFsaXplZFN0eWxlcyA9IEpTT04uc3RyaW5naWZ5KHN0eWxlcyk7XG4gIHJldHVybiBzZXJpYWxpemVkU3R5bGVzO1xufTtcblxuY29uc3QgbnVsbE9yVW5kZWZPciA9ICh6VHlwZSkgPT4geiQxLm51bGxhYmxlKHpUeXBlLm9wdGlvbmFsKCkpO1xueiQxLnN0cmluZygpLnRyaW0oKS5taW4oMSwgeyBtZXNzYWdlOiBgQ2Fubm90IGJlIGJsYW5rYCB9KTtcbnokMS5vYmplY3Qoe1xuICBjZGVfcmVzcG9uc2VfdHlwZTogeiQxLmxpdGVyYWwoXCJlcnJvclwiKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbnokMS5lbnVtKFtcInVzZFwiLCBcImJybFwiXSk7XG5jb25zdCBDb3Vwb25NaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgYW1vdW50X2F0b21fb2ZmOiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKSksXG4gIHBlcmNlbnRfb2ZmOiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKSksXG4gIGN1cnJlbmN5OiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGR1cmF0aW9uOiB6JDEuc3RyaW5nKCksXG4gIGR1cmF0aW9uX2luX21vbnRoczogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkpXG59KTtcbmNvbnN0IExpbmVJdGVtID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9zdWJ0b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGFtb3VudF90b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHByaWNlX2lkOiB6JDEuc3RyaW5nKCksXG4gIGJpbGxpbmdfaW50ZXJ2YWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbF9jb3VudDogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkuaW50KCkpLFxuICBxdWFudGl0eTogeiQxLm51bWJlcigpLmludCgpXG59KTtcbmNvbnN0IEJyYW5kU2V0dGluZ3MgPSB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKTtcbmNvbnN0IEJyYW5kID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgc2V0dGluZ3M6IG51bGxPclVuZGVmT3IoQnJhbmRTZXR0aW5ncylcbn0pO1xuY29uc3QgQ2hlY2tvdXRQYXltZW50TWV0aG9kID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIHByb2Nlc3Nvcl9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIG1ldGFkYXRhOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBTdWJzY3JpcHRpb25JdGVtTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBxdWFudGl0eTogeiQxLm51bWJlcigpXG59KTtcbmNvbnN0IFN1YnNjcmlwdGlvbk1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgaWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsX2NvdW50OiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKS5pbnQoKSksXG4gIHN1YnNjcmlwdGlvbl9pdGVtczogeiQxLmFycmF5KFN1YnNjcmlwdGlvbkl0ZW1NaW5pbWFsKSxcbiAgdHJpYWxfc3RhcnQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdHJpYWxfZW5kOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgSW52b2ljZUl0ZW1EaXNjb3VudEFtb3VudHNNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9hdG9tOiB6JDEubnVtYmVyKClcbn0pO1xuY29uc3QgSW52b2ljZUxpbmVJdGVtTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICBhbW91bnRfYXRvbV9jb25zaWRlcmluZ19kaXNjb3VudF9hcHBsaWVkOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRpc2NvdW50X2Ftb3VudF9hdG9tczogeiQxLmFycmF5KEludm9pY2VJdGVtRGlzY291bnRBbW91bnRzTWluaW1hbCksXG4gIHN1YnNjcmlwdGlvbl9pdGVtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgRGlzY291bnRNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGNvdXBvbjogQ291cG9uTWluaW1hbFxufSk7XG5jb25zdCBJbnZvaWNlTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkaXNjb3VudHM6IHokMS5hcnJheShEaXNjb3VudE1pbmltYWwpLFxuICBob3N0ZWRfaW52b2ljZV91cmw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGluZXM6IHokMS5hcnJheShJbnZvaWNlTGluZUl0ZW1NaW5pbWFsKSxcbiAgcmVtYWluaW5nX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRheF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9kaXNjb3VudF9hbW91bnRfYXRvbXM6IHokMS5hcnJheShJbnZvaWNlSXRlbURpc2NvdW50QW1vdW50c01pbmltYWwpXG59KTtcbmNvbnN0IENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjcmVhdGVkOiB6JDEuYXJyYXkoU3Vic2NyaXB0aW9uTWluaW1hbCksXG4gIGludm9pY2VzOiB6JDEuYXJyYXkoSW52b2ljZU1pbmltYWwpLFxuICBwcm9jZXNzb3JzX3VzZWQ6IG51bGxPclVuZGVmT3IoeiQxLmFycmF5KHokMS5zdHJpbmcoKSkpXG59KTtcbmNvbnN0IFByZXZpZXdDaGVja291dFJlc3BvbnNlID0geiQxLm9iamVjdCh7XG4gIHByZXZpZXc6IENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCxcbiAgcHJldmlld19wb3N0X3RyaWFsOiBudWxsT3JVbmRlZk9yKENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCksXG4gIGNvdXBvbnM6IHokMS5hcnJheShDb3Vwb25NaW5pbWFsKVxufSk7XG5jb25zdCBfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmxpdGVyYWwoXCJvcGVuXCIpLFxuICBsb2NhbGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KExpbmVJdGVtKSxcbiAgYW1vdW50X3N1YnRvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYW1vdW50X3RvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYnJhbmQ6IEJyYW5kLFxuICBzdWJzX3ByZXZpZXc6IG51bGxPclVuZGVmT3IoUHJldmlld0NoZWNrb3V0UmVzcG9uc2UpLFxuICAvLyBOdWxsIGluIHNldHVwIG1vZGVcbiAgbWV0aG9kc19hdmFpbGFibGU6IHokMS5hcnJheShDaGVja291dFBheW1lbnRNZXRob2QpXG59KTtcbmNvbnN0IFBheW1lbnRGb3JtUHJlZmlsbCA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJtb2RlXCIsIFtcbiAgeiQxLm9iamVjdCh7XG4gICAgbW9kZTogeiQxLmxpdGVyYWwoXCJzZXR1cFwiKSxcbiAgICBjdXJyZW5jeTogeiQxLm51bGxhYmxlKHokMS51bmRlZmluZWQoKSlcbiAgfSkuZXh0ZW5kKF9QYXltZW50Rm9ybVByZWZpbGxDb21tb24uc2hhcGUpLFxuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEuZW51bShbXCJwYXltZW50XCIsIFwic3Vic2NyaXB0aW9uXCJdKSxcbiAgICBjdXJyZW5jeTogeiQxLnN0cmluZygpXG4gIH0pLmV4dGVuZChfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uLnNoYXBlKVxuXSk7XG5jb25zdCBDb21wbGV0ZWRGb3JtUHJlZmlsbCA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiY29tcGxldGVcIilcbn0pO1xuY29uc3QgRXhwaXJlZEZvcm1QcmVmaWxsID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmxpdGVyYWwoXCJleHBpcmVkXCIpXG59KTtcbnokMS51bmlvbihbUGF5bWVudEZvcm1QcmVmaWxsLCBDb21wbGV0ZWRGb3JtUHJlZmlsbCwgRXhwaXJlZEZvcm1QcmVmaWxsXSk7XG56JDEub2JqZWN0KHtcbiAgbG9nbzogeiQxLnN0cmluZygpLFxuICBpY29uOiB6JDEuc3RyaW5nKCksXG4gIHByaW1hcnlfY29sb3I6IHokMS5zdHJpbmcoKSxcbiAgc2Vjb25kYXJ5X2NvbG9yOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwbV9pZDogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcGF5bWVudF9pbnB1dDogeiQxLmFueSgpLFxuICAvLyBTaG91bGQgZm9sbG93IEFueVBheW1lbnRJbnB1dCBmcm9tIENERVxuICBjdXN0b21lcl9maXJzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfbGFzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfZW1haWw6IHokMS5zdHJpbmcoKSxcbiAgY3VzdG9tZXJfemlwX2NvZGU6IHokMS5zdHJpbmcoKSxcbiAgY3VzdG9tZXJfY291bnRyeTogeiQxLnN0cmluZygpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoTGluZUl0ZW0pLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBjYW5jZWxfYXRfZW5kOiB6JDEuYm9vbGVhbigpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdXNlX2NvbmZpcm1lZF9wbV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHBheW1lbnRfbWV0aG9kX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGlkOiB6JDEuc3RyaW5nKCksXG4gIHJldHVybl91cmw6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBQeWRhbnRpY1ZhbGlkYXRpb25FcnJvciA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGxvYzogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIG1zZzogeiQxLnN0cmluZygpLFxuICB1cmw6IHokMS5zdHJpbmcoKVxufSk7XG56JDEuYXJyYXkoUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IpO1xuY29uc3QgTmV3Q3VzdG9tZXJGaWVsZHMgPSB6JDEub2JqZWN0KHtcbiAgbmV3X2N1c3RvbWVyX2VtYWlsOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbmV3X2N1c3RvbWVyX2FkZHJlc3M6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9maXJzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuY29uc3QgUHJpY2VRdHkgPSB6JDEub2JqZWN0KHtcbiAgcHJpY2VfaWQ6IHokMS5zdHJpbmcoKSxcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKS5pbnQoKVxufSk7XG5jb25zdCBDYXJ0SW5mbyA9IHokMS5vYmplY3Qoe1xuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoUHJpY2VRdHkpLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRpc3BsYXllZF90b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLmludCgpXG59KTtcbmNvbnN0IFByb2Nlc3NvclNwZWNpZmljTWV0YWRhdGEgPSB6JDEub2JqZWN0KHtcbiAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgcGF5bWVudF9wcm92aWRlcjogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBleGlzdGluZ19jY19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRoZWlyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdXNlX3BheV9maXJzdF9mbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogQ2FydEluZm8ub3B0aW9uYWwoKVxufSkuZXh0ZW5kKE5ld0N1c3RvbWVyRmllbGRzLnNoYXBlKS5leHRlbmQoUHJvY2Vzc29yU3BlY2lmaWNNZXRhZGF0YS5zaGFwZSk7XG56JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjaGVja291dF9hdHRlbXB0X2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIGZpZWxkczogUFJGb3JtRmllbGRzLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgcGF5bWVudF9yb3V0ZV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFJlcXVpcmVkRm9ybUZpZWxkcyxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICAvLyBUaGlzIGlzIG9wdGlvbmFsIGluIENERSwgYnV0IG5vdCBpbiBPSlMgbW92aW5nIGZvcndhcmRcbiAgcGF5bWVudF9yb3V0ZV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICByZXF1aXJlZF91c2VyX2FjdGlvbnM6IHokMS5hcnJheSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSksXG4gIGNjX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLnJlY29yZCh6JDEuYW55KCkpO1xueiQxLm9iamVjdCh7XG4gIGZpcnN0X25hbWU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGFzdF9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmUxOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmUyOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxpbmUzOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGNpdHk6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgc3RhdGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgY291bnRyeTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICB6aXBfY29kZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBlbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2VtYWlsOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHBob25lX251bWJlcjogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICB1cGRhdGVfcHJvY2Vzc29yX2N1c3RvbWVyOiBudWxsT3JVbmRlZk9yKHokMS5ib29sZWFuKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBpZDogeiQxLnN0cmluZygpLFxuICBlbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBmaXJzdF9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxhc3RfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwaG9uZV9udW1iZXI6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19lbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBhZGRyZXNzOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBlcnJvcl9jb2RlOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBDaGVja291dFBheW1lbnRNZXRob2QsXG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gIHBheW1lbnRfcm91dGVfaWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgbmV4dF9hY3Rpb25fbWV0YWRhdGE6IG51bGxPclVuZGVmT3IoeiQxLnJlY29yZCh6JDEuYW55KCkpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgZXZlbnRzOiB6JDEuYXJyYXkoXG4gICAgeiQxLm9iamVjdCh7XG4gICAgICBldmVudF9uYW1lOiB6JDEuc3RyaW5nKCksXG4gICAgICBkZXZpY2VfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgICAgIHByb3BlcnRpZXM6IHokMS5yZWNvcmQoeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICAgICAgY29udGV4dF9wcm9wZXJ0aWVzOiB6JDEucmVjb3JkKHokMS5hbnkoKSkub3B0aW9uYWwoKVxuICAgIH0pXG4gIClcbn0pO1xueiQxLmFueSgpLm9wdGlvbmFsKCk7XG56JDEub2JqZWN0KHtcbiAgZGV2aWNlX3Rva2VuOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7fSk7XG5cbmZ1bmN0aW9uIGZpeFByb3RvKHRhcmdldCwgcHJvdG90eXBlKSB7XG4gIHZhciBzZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZjtcbiAgc2V0UHJvdG90eXBlT2YgPyBzZXRQcm90b3R5cGVPZih0YXJnZXQsIHByb3RvdHlwZSkgOiB0YXJnZXQuX19wcm90b19fID0gcHJvdG90eXBlO1xufVxuZnVuY3Rpb24gZml4U3RhY2sodGFyZ2V0LCBmbikge1xuICBpZiAoZm4gPT09IHZvaWQgMCkge1xuICAgIGZuID0gdGFyZ2V0LmNvbnN0cnVjdG9yO1xuICB9XG5cbiAgdmFyIGNhcHR1cmVTdGFja1RyYWNlID0gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U7XG4gIGNhcHR1cmVTdGFja1RyYWNlICYmIGNhcHR1cmVTdGFja1RyYWNlKHRhcmdldCwgZm4pO1xufVxuXG52YXIgX19leHRlbmRzJDEgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uIGV4dGVuZFN0YXRpY3MoZCwgYikge1xuICAgIF9leHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IHtcbiAgICAgIF9fcHJvdG9fXzogW11cbiAgICB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGQuX19wcm90b19fID0gYjtcbiAgICB9IHx8IGZ1bmN0aW9uIChkLCBiKSB7XG4gICAgICBmb3IgKHZhciBwIGluIGIpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG5cbiAgICBfZXh0ZW5kU3RhdGljcyhkLCBiKTtcblxuICAgIGZ1bmN0aW9uIF9fKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7XG4gICAgfVxuXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICB9O1xufSgpO1xuXG4oZnVuY3Rpb24gKF9zdXBlcikge1xuICBfX2V4dGVuZHMkMShDdXN0b21FcnJvciwgX3N1cGVyKTtcblxuICBmdW5jdGlvbiBDdXN0b21FcnJvcihtZXNzYWdlLCBvcHRpb25zKSB7XG4gICAgdmFyIF9uZXdUYXJnZXQgPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbWVzc2FnZSwgb3B0aW9ucykgfHwgdGhpcztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfdGhpcywgJ25hbWUnLCB7XG4gICAgICB2YWx1ZTogX25ld1RhcmdldC5uYW1lLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBmaXhQcm90byhfdGhpcywgX25ld1RhcmdldC5wcm90b3R5cGUpO1xuICAgIGZpeFN0YWNrKF90aGlzKTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICByZXR1cm4gQ3VzdG9tRXJyb3I7XG59KShFcnJvcik7XG5cbmNvbnN0IGNyZWF0ZU9qc0Zsb3dMb2dnZXJzID0gKHByZWZpeCkgPT4ge1xuICBjb25zdCBsb2cgPSAoLi4uYXJncykgPT4ge1xuICAgIHdpbmRvd1tcImNvbnNvbGVcIl0ubG9nKGAke01lLmdyZWVuLmJvbGQoXCJvanMvXCIpfSR7TWUuYm9sZC5ncmF5KGAke3ByZWZpeH1gKX1cdGAsIC4uLmFyZ3MpO1xuICB9O1xuICBjb25zdCBlcnIgPSAoLi4uYXJncykgPT4ge1xuICAgIHdpbmRvd1tcImNvbnNvbGVcIl0ud2FybihgJHtNZS5yZWQuYm9sZChcIm9qcy9cIil9JHtNZS5ib2xkLmdyYXkoYCR7cHJlZml4fWApfVx0YCwgLi4uYXJncyk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgbG9nLFxuICAgIGVycixcbiAgICBsb2dfXzogbG9nLFxuICAgIGVycl9fOiBlcnJcbiAgfTtcbn07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxuXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cblxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCwgSXRlcmF0b3IgKi9cblxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XG4gIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcbiAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XG4gIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xufTtcblxuZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcbiAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbn1cblxuZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XG4gIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGcgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT09IFwiZnVuY3Rpb25cIiA/IEl0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpO1xuICByZXR1cm4gZy5uZXh0ID0gdmVyYigwKSwgZ1tcInRocm93XCJdID0gdmVyYigxKSwgZ1tcInJldHVyblwiXSA9IHZlcmIoMiksIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XG4gICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XG4gIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cblxuZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcbiAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIW0pIHJldHVybiBvO1xuICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgdHJ5IHtcbiAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICB9XG4gIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICB9XG4gICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgfVxuICByZXR1cm4gYXI7XG59XG5cbmZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcbiAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgIH1cbiAgfVxuICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn1cblxuZnVuY3Rpb24gX19hd2FpdCh2KSB7XG4gIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xufVxuXG5mdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xuICByZXR1cm4gaSA9IE9iamVjdC5jcmVhdGUoKHR5cGVvZiBBc3luY0l0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBBc3luY0l0ZXJhdG9yIDogT2JqZWN0KS5wcm90b3R5cGUpLCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIsIGF3YWl0UmV0dXJuKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xuICBmdW5jdGlvbiBhd2FpdFJldHVybihmKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZiwgcmVqZWN0KTsgfTsgfVxuICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaWYgKGdbbl0pIHsgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgaWYgKGYpIGlbbl0gPSBmKGlbbl0pOyB9IH1cbiAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxuICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cbiAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XG4gIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cbn1cblxuZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XG4gIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG4gIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XG4gIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcbiAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxuICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XG59XG5cbnR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xuICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGUubmFtZSA9IFwiU3VwcHJlc3NlZEVycm9yXCIsIGUuZXJyb3IgPSBlcnJvciwgZS5zdXBwcmVzc2VkID0gc3VwcHJlc3NlZCwgZTtcbn07XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFcnJvckNsYXNzKGNyZWF0ZUltcGwpIHtcbiAgICB2YXIgX3N1cGVyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gICAgICAgIEVycm9yLmNhbGwoaW5zdGFuY2UpO1xuICAgICAgICBpbnN0YW5jZS5zdGFjayA9IG5ldyBFcnJvcigpLnN0YWNrO1xuICAgIH07XG4gICAgdmFyIGN0b3JGdW5jID0gY3JlYXRlSW1wbChfc3VwZXIpO1xuICAgIGN0b3JGdW5jLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbiAgICBjdG9yRnVuYy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yRnVuYztcbiAgICByZXR1cm4gY3RvckZ1bmM7XG59XG5cbnZhciBVbnN1YnNjcmlwdGlvbkVycm9yID0gY3JlYXRlRXJyb3JDbGFzcyhmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIFVuc3Vic2NyaXB0aW9uRXJyb3JJbXBsKGVycm9ycykge1xuICAgICAgICBfc3VwZXIodGhpcyk7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IGVycm9yc1xuICAgICAgICAgICAgPyBlcnJvcnMubGVuZ3RoICsgXCIgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcXG5cIiArIGVycm9ycy5tYXAoZnVuY3Rpb24gKGVyciwgaSkgeyByZXR1cm4gaSArIDEgKyBcIikgXCIgKyBlcnIudG9TdHJpbmcoKTsgfSkuam9pbignXFxuICAnKVxuICAgICAgICAgICAgOiAnJztcbiAgICAgICAgdGhpcy5uYW1lID0gJ1Vuc3Vic2NyaXB0aW9uRXJyb3InO1xuICAgICAgICB0aGlzLmVycm9ycyA9IGVycm9ycztcbiAgICB9O1xufSk7XG5cbmZ1bmN0aW9uIGFyclJlbW92ZShhcnIsIGl0ZW0pIHtcbiAgICBpZiAoYXJyKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAwIDw9IGluZGV4ICYmIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbn1cblxudmFyIFN1YnNjcmlwdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3Vic2NyaXB0aW9uKGluaXRpYWxUZWFyZG93bikge1xuICAgICAgICB0aGlzLmluaXRpYWxUZWFyZG93biA9IGluaXRpYWxUZWFyZG93bjtcbiAgICAgICAgdGhpcy5jbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZmluYWxpemVycyA9IG51bGw7XG4gICAgfVxuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iO1xuICAgICAgICB2YXIgZXJyb3JzO1xuICAgICAgICBpZiAoIXRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgX3BhcmVudGFnZSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgICAgICAgIGlmIChfcGFyZW50YWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfcGFyZW50YWdlKSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX3BhcmVudGFnZV8xID0gX192YWx1ZXMoX3BhcmVudGFnZSksIF9wYXJlbnRhZ2VfMV8xID0gX3BhcmVudGFnZV8xLm5leHQoKTsgIV9wYXJlbnRhZ2VfMV8xLmRvbmU7IF9wYXJlbnRhZ2VfMV8xID0gX3BhcmVudGFnZV8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJlbnRfMSA9IF9wYXJlbnRhZ2VfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudF8xLnJlbW92ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9wYXJlbnRhZ2VfMV8xICYmICFfcGFyZW50YWdlXzFfMS5kb25lICYmIChfYSA9IF9wYXJlbnRhZ2VfMS5yZXR1cm4pKSBfYS5jYWxsKF9wYXJlbnRhZ2VfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF9wYXJlbnRhZ2UucmVtb3ZlKHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpbml0aWFsRmluYWxpemVyID0gdGhpcy5pbml0aWFsVGVhcmRvd247XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihpbml0aWFsRmluYWxpemVyKSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxGaW5hbGl6ZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZSBpbnN0YW5jZW9mIFVuc3Vic2NyaXB0aW9uRXJyb3IgPyBlLmVycm9ycyA6IFtlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2ZpbmFsaXplcnMgPSB0aGlzLl9maW5hbGl6ZXJzO1xuICAgICAgICAgICAgaWYgKF9maW5hbGl6ZXJzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmluYWxpemVycyA9IG51bGw7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2ZpbmFsaXplcnNfMSA9IF9fdmFsdWVzKF9maW5hbGl6ZXJzKSwgX2ZpbmFsaXplcnNfMV8xID0gX2ZpbmFsaXplcnNfMS5uZXh0KCk7ICFfZmluYWxpemVyc18xXzEuZG9uZTsgX2ZpbmFsaXplcnNfMV8xID0gX2ZpbmFsaXplcnNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaW5hbGl6ZXIgPSBfZmluYWxpemVyc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNGaW5hbGl6ZXIoZmluYWxpemVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnJvcnMgIT09IG51bGwgJiYgZXJyb3JzICE9PSB2b2lkIDAgPyBlcnJvcnMgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVW5zdWJzY3JpcHRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChlcnJvcnMpKSwgX19yZWFkKGVyci5lcnJvcnMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2ZpbmFsaXplcnNfMV8xICYmICFfZmluYWxpemVyc18xXzEuZG9uZSAmJiAoX2IgPSBfZmluYWxpemVyc18xLnJldHVybikpIF9iLmNhbGwoX2ZpbmFsaXplcnNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdWJzY3JpcHRpb25FcnJvcihlcnJvcnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh0ZWFyZG93bikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh0ZWFyZG93biAmJiB0ZWFyZG93biAhPT0gdGhpcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgZXhlY0ZpbmFsaXplcih0ZWFyZG93bik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGVhcmRvd24gaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlYXJkb3duLmNsb3NlZCB8fCB0ZWFyZG93bi5faGFzUGFyZW50KHRoaXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGVhcmRvd24uX2FkZFBhcmVudCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKHRoaXMuX2ZpbmFsaXplcnMgPSAoX2EgPSB0aGlzLl9maW5hbGl6ZXJzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBbXSkucHVzaCh0ZWFyZG93bik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX2hhc1BhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIHJldHVybiBfcGFyZW50YWdlID09PSBwYXJlbnQgfHwgKEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkgJiYgX3BhcmVudGFnZS5pbmNsdWRlcyhwYXJlbnQpKTtcbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX2FkZFBhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkgPyAoX3BhcmVudGFnZS5wdXNoKHBhcmVudCksIF9wYXJlbnRhZ2UpIDogX3BhcmVudGFnZSA/IFtfcGFyZW50YWdlLCBwYXJlbnRdIDogcGFyZW50O1xuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50ID0gZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICB2YXIgX3BhcmVudGFnZSA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICAgICAgaWYgKF9wYXJlbnRhZ2UgPT09IHBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50YWdlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpKSB7XG4gICAgICAgICAgICBhcnJSZW1vdmUoX3BhcmVudGFnZSwgcGFyZW50KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAodGVhcmRvd24pIHtcbiAgICAgICAgdmFyIF9maW5hbGl6ZXJzID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgICAgX2ZpbmFsaXplcnMgJiYgYXJyUmVtb3ZlKF9maW5hbGl6ZXJzLCB0ZWFyZG93bik7XG4gICAgICAgIGlmICh0ZWFyZG93biBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGVhcmRvd24uX3JlbW92ZVBhcmVudCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLkVNUFRZID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVtcHR5ID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICBlbXB0eS5jbG9zZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZW1wdHk7XG4gICAgfSkoKTtcbiAgICByZXR1cm4gU3Vic2NyaXB0aW9uO1xufSgpKTtcbnZhciBFTVBUWV9TVUJTQ1JJUFRJT04gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5mdW5jdGlvbiBpc1N1YnNjcmlwdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiAodmFsdWUgaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24gfHxcbiAgICAgICAgKHZhbHVlICYmICdjbG9zZWQnIGluIHZhbHVlICYmIGlzRnVuY3Rpb24odmFsdWUucmVtb3ZlKSAmJiBpc0Z1bmN0aW9uKHZhbHVlLmFkZCkgJiYgaXNGdW5jdGlvbih2YWx1ZS51bnN1YnNjcmliZSkpKTtcbn1cbmZ1bmN0aW9uIGV4ZWNGaW5hbGl6ZXIoZmluYWxpemVyKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oZmluYWxpemVyKSkge1xuICAgICAgICBmaW5hbGl6ZXIoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZpbmFsaXplci51bnN1YnNjcmliZSgpO1xuICAgIH1cbn1cblxudmFyIGNvbmZpZyA9IHtcbiAgICBvblVuaGFuZGxlZEVycm9yOiBudWxsLFxuICAgIG9uU3RvcHBlZE5vdGlmaWNhdGlvbjogbnVsbCxcbiAgICBQcm9taXNlOiB1bmRlZmluZWQsXG4gICAgdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZzogZmFsc2UsXG4gICAgdXNlRGVwcmVjYXRlZE5leHRDb250ZXh0OiBmYWxzZSxcbn07XG5cbnZhciB0aW1lb3V0UHJvdmlkZXIgPSB7XG4gICAgc2V0VGltZW91dDogZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQuYXBwbHkodm9pZCAwLCBfX3NwcmVhZEFycmF5KFtoYW5kbGVyLCB0aW1lb3V0XSwgX19yZWFkKGFyZ3MpKSk7XG4gICAgfSxcbiAgICBjbGVhclRpbWVvdXQ6IGZ1bmN0aW9uIChoYW5kbGUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gdGltZW91dFByb3ZpZGVyLmRlbGVnYXRlO1xuICAgICAgICByZXR1cm4gKChkZWxlZ2F0ZSA9PT0gbnVsbCB8fCBkZWxlZ2F0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVsZWdhdGUuY2xlYXJUaW1lb3V0KSB8fCBjbGVhclRpbWVvdXQpKGhhbmRsZSk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcblxuZnVuY3Rpb24gcmVwb3J0VW5oYW5kbGVkRXJyb3IoZXJyKSB7XG4gICAgdGltZW91dFByb3ZpZGVyLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICB7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gbm9vcCgpIHsgfVxuXG5mdW5jdGlvbiBlcnJvckNvbnRleHQoY2IpIHtcbiAgICB7XG4gICAgICAgIGNiKCk7XG4gICAgfVxufVxuXG52YXIgU3Vic2NyaWJlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFN1YnNjcmliZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3Vic2NyaWJlcihkZXN0aW5hdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5pc1N0b3BwZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uKSB7XG4gICAgICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICAgICAgaWYgKGlzU3Vic2NyaXB0aW9uKGRlc3RpbmF0aW9uKSkge1xuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmFkZChfdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IEVNUFRZX09CU0VSVkVSO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgU3Vic2NyaWJlci5jcmVhdGUgPSBmdW5jdGlvbiAobmV4dCwgZXJyb3IsIGNvbXBsZXRlKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2FmZVN1YnNjcmliZXIobmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9wcGVkKSA7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbmV4dCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICBpZiAodGhpcy5pc1N0b3BwZWQpIDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdG9wcGVkKSA7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5fbmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLm5leHQodmFsdWUpO1xuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5fY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBTdWJzY3JpYmVyO1xufShTdWJzY3JpcHRpb24pKTtcbnZhciBfYmluZCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kO1xuZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICAgIHJldHVybiBfYmluZC5jYWxsKGZuLCB0aGlzQXJnKTtcbn1cbnZhciBDb25zdW1lck9ic2VydmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb25zdW1lck9ic2VydmVyKHBhcnRpYWxPYnNlcnZlcikge1xuICAgICAgICB0aGlzLnBhcnRpYWxPYnNlcnZlciA9IHBhcnRpYWxPYnNlcnZlcjtcbiAgICB9XG4gICAgQ29uc3VtZXJPYnNlcnZlci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChwYXJ0aWFsT2JzZXJ2ZXIubmV4dCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbnN1bWVyT2JzZXJ2ZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChwYXJ0aWFsT2JzZXJ2ZXIuZXJyb3IpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyLmVycm9yKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDb25zdW1lck9ic2VydmVyLnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxPYnNlcnZlciA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgICAgICBpZiAocGFydGlhbE9ic2VydmVyLmNvbXBsZXRlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQ29uc3VtZXJPYnNlcnZlcjtcbn0oKSk7XG52YXIgU2FmZVN1YnNjcmliZXIgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTYWZlU3Vic2NyaWJlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTYWZlU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCwgZXJyb3IsIGNvbXBsZXRlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIHZhciBwYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKG9ic2VydmVyT3JOZXh0KSB8fCAhb2JzZXJ2ZXJPck5leHQpIHtcbiAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlciA9IHtcbiAgICAgICAgICAgICAgICBuZXh0OiAob2JzZXJ2ZXJPck5leHQgIT09IG51bGwgJiYgb2JzZXJ2ZXJPck5leHQgIT09IHZvaWQgMCA/IG9ic2VydmVyT3JOZXh0IDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IgIT09IG51bGwgJiYgZXJyb3IgIT09IHZvaWQgMCA/IGVycm9yIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBjb21wbGV0ZSAhPT0gbnVsbCAmJiBjb21wbGV0ZSAhPT0gdm9pZCAwID8gY29tcGxldGUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGNvbnRleHRfMTtcbiAgICAgICAgICAgIGlmIChfdGhpcyAmJiBjb25maWcudXNlRGVwcmVjYXRlZE5leHRDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgY29udGV4dF8xID0gT2JqZWN0LmNyZWF0ZShvYnNlcnZlck9yTmV4dCk7XG4gICAgICAgICAgICAgICAgY29udGV4dF8xLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMudW5zdWJzY3JpYmUoKTsgfTtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IG9ic2VydmVyT3JOZXh0Lm5leHQgJiYgYmluZChvYnNlcnZlck9yTmV4dC5uZXh0LCBjb250ZXh0XzEpLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogb2JzZXJ2ZXJPck5leHQuZXJyb3IgJiYgYmluZChvYnNlcnZlck9yTmV4dC5lcnJvciwgY29udGV4dF8xKSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IG9ic2VydmVyT3JOZXh0LmNvbXBsZXRlICYmIGJpbmQob2JzZXJ2ZXJPck5leHQuY29tcGxldGUsIGNvbnRleHRfMSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlciA9IG9ic2VydmVyT3JOZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIF90aGlzLmRlc3RpbmF0aW9uID0gbmV3IENvbnN1bWVyT2JzZXJ2ZXIocGFydGlhbE9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gU2FmZVN1YnNjcmliZXI7XG59KFN1YnNjcmliZXIpKTtcbmZ1bmN0aW9uIGhhbmRsZVVuaGFuZGxlZEVycm9yKGVycm9yKSB7XG4gICAge1xuICAgICAgICByZXBvcnRVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgfVxufVxuZnVuY3Rpb24gZGVmYXVsdEVycm9ySGFuZGxlcihlcnIpIHtcbiAgICB0aHJvdyBlcnI7XG59XG52YXIgRU1QVFlfT0JTRVJWRVIgPSB7XG4gICAgY2xvc2VkOiB0cnVlLFxuICAgIG5leHQ6IG5vb3AsXG4gICAgZXJyb3I6IGRlZmF1bHRFcnJvckhhbmRsZXIsXG4gICAgY29tcGxldGU6IG5vb3AsXG59O1xuXG52YXIgb2JzZXJ2YWJsZSA9IChmdW5jdGlvbiAoKSB7IHJldHVybiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wub2JzZXJ2YWJsZSkgfHwgJ0BAb2JzZXJ2YWJsZSc7IH0pKCk7XG5cbmZ1bmN0aW9uIGlkZW50aXR5KHgpIHtcbiAgICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gcGlwZUZyb21BcnJheShmbnMpIHtcbiAgICBpZiAoZm5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gaWRlbnRpdHk7XG4gICAgfVxuICAgIGlmIChmbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBmbnNbMF07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiBwaXBlZChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZm5zLnJlZHVjZShmdW5jdGlvbiAocHJldiwgZm4pIHsgcmV0dXJuIGZuKHByZXYpOyB9LCBpbnB1dCk7XG4gICAgfTtcbn1cblxudmFyIE9ic2VydmFibGUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE9ic2VydmFibGUoc3Vic2NyaWJlKSB7XG4gICAgICAgIGlmIChzdWJzY3JpYmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZSA9IHN1YnNjcmliZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5saWZ0ID0gZnVuY3Rpb24gKG9wZXJhdG9yKSB7XG4gICAgICAgIHZhciBvYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGUoKTtcbiAgICAgICAgb2JzZXJ2YWJsZS5zb3VyY2UgPSB0aGlzO1xuICAgICAgICBvYnNlcnZhYmxlLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gKG9ic2VydmVyT3JOZXh0LCBlcnJvciwgY29tcGxldGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHN1YnNjcmliZXIgPSBpc1N1YnNjcmliZXIob2JzZXJ2ZXJPck5leHQpID8gb2JzZXJ2ZXJPck5leHQgOiBuZXcgU2FmZVN1YnNjcmliZXIob2JzZXJ2ZXJPck5leHQsIGVycm9yLCBjb21wbGV0ZSk7XG4gICAgICAgIGVycm9yQ29udGV4dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBfdGhpcywgb3BlcmF0b3IgPSBfYS5vcGVyYXRvciwgc291cmNlID0gX2Euc291cmNlO1xuICAgICAgICAgICAgc3Vic2NyaWJlci5hZGQob3BlcmF0b3JcbiAgICAgICAgICAgICAgICA/XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yLmNhbGwoc3Vic2NyaWJlciwgc291cmNlKVxuICAgICAgICAgICAgICAgIDogc291cmNlXG4gICAgICAgICAgICAgICAgICAgID9cbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9zdWJzY3JpYmUoc3Vic2NyaWJlcilcbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3RyeVN1YnNjcmliZShzdWJzY3JpYmVyKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3Vic2NyaWJlcjtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLl90cnlTdWJzY3JpYmUgPSBmdW5jdGlvbiAoc2luaykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnNjcmliZShzaW5rKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBzaW5rLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiAobmV4dCwgcHJvbWlzZUN0b3IpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcHJvbWlzZUN0b3IgPSBnZXRQcm9taXNlQ3Rvcihwcm9taXNlQ3Rvcik7XG4gICAgICAgIHJldHVybiBuZXcgcHJvbWlzZUN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHN1YnNjcmliZXIgPSBuZXcgU2FmZVN1YnNjcmliZXIoe1xuICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICAgICAgICAgICAgY29tcGxldGU6IHJlc29sdmUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5zb3VyY2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdWJzY3JpYmUoc3Vic2NyaWJlcik7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZVtvYnNlcnZhYmxlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb3BlcmF0aW9ucyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgb3BlcmF0aW9uc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwaXBlRnJvbUFycmF5KG9wZXJhdGlvbnMpKHRoaXMpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUudG9Qcm9taXNlID0gZnVuY3Rpb24gKHByb21pc2VDdG9yKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHByb21pc2VDdG9yID0gZ2V0UHJvbWlzZUN0b3IocHJvbWlzZUN0b3IpO1xuICAgICAgICByZXR1cm4gbmV3IHByb21pc2VDdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZTtcbiAgICAgICAgICAgIF90aGlzLnN1YnNjcmliZShmdW5jdGlvbiAoeCkgeyByZXR1cm4gKHZhbHVlID0geCk7IH0sIGZ1bmN0aW9uIChlcnIpIHsgcmV0dXJuIHJlamVjdChlcnIpOyB9LCBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKHZhbHVlKTsgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5jcmVhdGUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlKSB7XG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShzdWJzY3JpYmUpO1xuICAgIH07XG4gICAgcmV0dXJuIE9ic2VydmFibGU7XG59KCkpO1xuZnVuY3Rpb24gZ2V0UHJvbWlzZUN0b3IocHJvbWlzZUN0b3IpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IHByb21pc2VDdG9yICE9PSBudWxsICYmIHByb21pc2VDdG9yICE9PSB2b2lkIDAgPyBwcm9taXNlQ3RvciA6IGNvbmZpZy5Qcm9taXNlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBQcm9taXNlO1xufVxuZnVuY3Rpb24gaXNPYnNlcnZlcih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiBpc0Z1bmN0aW9uKHZhbHVlLm5leHQpICYmIGlzRnVuY3Rpb24odmFsdWUuZXJyb3IpICYmIGlzRnVuY3Rpb24odmFsdWUuY29tcGxldGUpO1xufVxuZnVuY3Rpb24gaXNTdWJzY3JpYmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIFN1YnNjcmliZXIpIHx8IChpc09ic2VydmVyKHZhbHVlKSAmJiBpc1N1YnNjcmlwdGlvbih2YWx1ZSkpO1xufVxuXG5mdW5jdGlvbiBoYXNMaWZ0KHNvdXJjZSkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKHNvdXJjZSA9PT0gbnVsbCB8fCBzb3VyY2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNvdXJjZS5saWZ0KTtcbn1cbmZ1bmN0aW9uIG9wZXJhdGUoaW5pdCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNMaWZ0KHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UubGlmdChmdW5jdGlvbiAobGlmdGVkU291cmNlKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluaXQobGlmdGVkU291cmNlLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGUnKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPcGVyYXRvclN1YnNjcmliZXIoZGVzdGluYXRpb24sIG9uTmV4dCwgb25Db21wbGV0ZSwgb25FcnJvciwgb25GaW5hbGl6ZSkge1xuICAgIHJldHVybiBuZXcgT3BlcmF0b3JTdWJzY3JpYmVyKGRlc3RpbmF0aW9uLCBvbk5leHQsIG9uQ29tcGxldGUsIG9uRXJyb3IsIG9uRmluYWxpemUpO1xufVxudmFyIE9wZXJhdG9yU3Vic2NyaWJlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE9wZXJhdG9yU3Vic2NyaWJlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBPcGVyYXRvclN1YnNjcmliZXIoZGVzdGluYXRpb24sIG9uTmV4dCwgb25Db21wbGV0ZSwgb25FcnJvciwgb25GaW5hbGl6ZSwgc2hvdWxkVW5zdWJzY3JpYmUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGVzdGluYXRpb24pIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm9uRmluYWxpemUgPSBvbkZpbmFsaXplO1xuICAgICAgICBfdGhpcy5zaG91bGRVbnN1YnNjcmliZSA9IHNob3VsZFVuc3Vic2NyaWJlO1xuICAgICAgICBfdGhpcy5fbmV4dCA9IG9uTmV4dFxuICAgICAgICAgICAgPyBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbk5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBfc3VwZXIucHJvdG90eXBlLl9uZXh0O1xuICAgICAgICBfdGhpcy5fZXJyb3IgPSBvbkVycm9yXG4gICAgICAgICAgICA/IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IF9zdXBlci5wcm90b3R5cGUuX2Vycm9yO1xuICAgICAgICBfdGhpcy5fY29tcGxldGUgPSBvbkNvbXBsZXRlXG4gICAgICAgICAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IF9zdXBlci5wcm90b3R5cGUuX2NvbXBsZXRlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9wZXJhdG9yU3Vic2NyaWJlci5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZFVuc3Vic2NyaWJlIHx8IHRoaXMuc2hvdWxkVW5zdWJzY3JpYmUoKSkge1xuICAgICAgICAgICAgdmFyIGNsb3NlZF8xID0gdGhpcy5jbG9zZWQ7XG4gICAgICAgICAgICBfc3VwZXIucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAhY2xvc2VkXzEgJiYgKChfYSA9IHRoaXMub25GaW5hbGl6ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwodGhpcykpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gT3BlcmF0b3JTdWJzY3JpYmVyO1xufShTdWJzY3JpYmVyKSk7XG5cbnZhciBPYmplY3RVbnN1YnNjcmliZWRFcnJvciA9IGNyZWF0ZUVycm9yQ2xhc3MoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIHJldHVybiBmdW5jdGlvbiBPYmplY3RVbnN1YnNjcmliZWRFcnJvckltcGwoKSB7XG4gICAgICAgIF9zdXBlcih0aGlzKTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ09iamVjdFVuc3Vic2NyaWJlZEVycm9yJztcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gJ29iamVjdCB1bnN1YnNjcmliZWQnO1xuICAgIH07XG59KTtcblxudmFyIFN1YmplY3QgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhTdWJqZWN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFN1YmplY3QoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmNsb3NlZCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICAgICAgX3RoaXMub2JzZXJ2ZXJzID0gW107XG4gICAgICAgIF90aGlzLmlzU3RvcHBlZCA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgICBfdGhpcy50aHJvd25FcnJvciA9IG51bGw7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgU3ViamVjdC5wcm90b3R5cGUubGlmdCA9IGZ1bmN0aW9uIChvcGVyYXRvcikge1xuICAgICAgICB2YXIgc3ViamVjdCA9IG5ldyBBbm9ueW1vdXNTdWJqZWN0KHRoaXMsIHRoaXMpO1xuICAgICAgICBzdWJqZWN0Lm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgICAgIHJldHVybiBzdWJqZWN0O1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX3Rocm93SWZDbG9zZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE9iamVjdFVuc3Vic2NyaWJlZEVycm9yKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICAgICAgX3RoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgICAgIGlmICghX3RoaXMuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBBcnJheS5mcm9tKF90aGlzLm9ic2VydmVycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMoX3RoaXMuY3VycmVudE9ic2VydmVycyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYnNlcnZlciA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBlcnJvckNvbnRleHQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgICAgIGlmICghX3RoaXMuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGFzRXJyb3IgPSBfdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIF90aGlzLnRocm93bkVycm9yID0gZXJyO1xuICAgICAgICAgICAgICAgIHZhciBvYnNlcnZlcnMgPSBfdGhpcy5vYnNlcnZlcnM7XG4gICAgICAgICAgICAgICAgd2hpbGUgKG9ic2VydmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJzLnNoaWZ0KCkuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGVycm9yQ29udGV4dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHZhciBvYnNlcnZlcnMgPSBfdGhpcy5vYnNlcnZlcnM7XG4gICAgICAgICAgICAgICAgd2hpbGUgKG9ic2VydmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJzLnNoaWZ0KCkuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9ic2VydmVycyA9IHRoaXMuY3VycmVudE9ic2VydmVycyA9IG51bGw7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3ViamVjdC5wcm90b3R5cGUsIFwib2JzZXJ2ZWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAoKF9hID0gdGhpcy5vYnNlcnZlcnMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGgpID4gMDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIFN1YmplY3QucHJvdG90eXBlLl90cnlTdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB0aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgIHJldHVybiBfc3VwZXIucHJvdG90eXBlLl90cnlTdWJzY3JpYmUuY2FsbCh0aGlzLCBzdWJzY3JpYmVyKTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB0aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgIHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMoc3Vic2NyaWJlcik7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbm5lclN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLl9pbm5lclN1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGhhc0Vycm9yID0gX2EuaGFzRXJyb3IsIGlzU3RvcHBlZCA9IF9hLmlzU3RvcHBlZCwgb2JzZXJ2ZXJzID0gX2Eub2JzZXJ2ZXJzO1xuICAgICAgICBpZiAoaGFzRXJyb3IgfHwgaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFlfU1VCU0NSSVBUSU9OO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudE9ic2VydmVycyA9IG51bGw7XG4gICAgICAgIG9ic2VydmVycy5wdXNoKHN1YnNjcmliZXIpO1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICAgICAgICAgIGFyclJlbW92ZShvYnNlcnZlcnMsIHN1YnNjcmliZXIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgaGFzRXJyb3IgPSBfYS5oYXNFcnJvciwgdGhyb3duRXJyb3IgPSBfYS50aHJvd25FcnJvciwgaXNTdG9wcGVkID0gX2EuaXNTdG9wcGVkO1xuICAgICAgICBpZiAoaGFzRXJyb3IpIHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IodGhyb3duRXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzU3RvcHBlZCkge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5hc09ic2VydmFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBvYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGUoKTtcbiAgICAgICAgb2JzZXJ2YWJsZS5zb3VyY2UgPSB0aGlzO1xuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICB9O1xuICAgIFN1YmplY3QuY3JlYXRlID0gZnVuY3Rpb24gKGRlc3RpbmF0aW9uLCBzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBbm9ueW1vdXNTdWJqZWN0KGRlc3RpbmF0aW9uLCBzb3VyY2UpO1xuICAgIH07XG4gICAgcmV0dXJuIFN1YmplY3Q7XG59KE9ic2VydmFibGUpKTtcbnZhciBBbm9ueW1vdXNTdWJqZWN0ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQW5vbnltb3VzU3ViamVjdCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBbm9ueW1vdXNTdWJqZWN0KGRlc3RpbmF0aW9uLCBzb3VyY2UpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcbiAgICAgICAgX3RoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFub255bW91c1N1YmplY3QucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9iID0gKF9hID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5leHQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB2YWx1ZSk7XG4gICAgfTtcbiAgICBBbm9ueW1vdXNTdWJqZWN0LnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9iID0gKF9hID0gdGhpcy5kZXN0aW5hdGlvbikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVycm9yKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSwgZXJyKTtcbiAgICB9O1xuICAgIEFub255bW91c1N1YmplY3QucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29tcGxldGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTtcbiAgICB9O1xuICAgIEFub255bW91c1N1YmplY3QucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gdGhpcy5zb3VyY2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdWJzY3JpYmUoc3Vic2NyaWJlcikpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IEVNUFRZX1NVQlNDUklQVElPTjtcbiAgICB9O1xuICAgIHJldHVybiBBbm9ueW1vdXNTdWJqZWN0O1xufShTdWJqZWN0KSk7XG5cbnZhciBkYXRlVGltZXN0YW1wUHJvdmlkZXIgPSB7XG4gICAgbm93OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoRGF0ZSkubm93KCk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcblxudmFyIEFjdGlvbiA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFjdGlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBY3Rpb24oc2NoZWR1bGVyLCB3b3JrKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBY3Rpb24ucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24gKHN0YXRlLCBkZWxheSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBBY3Rpb247XG59KFN1YnNjcmlwdGlvbikpO1xuXG52YXIgaW50ZXJ2YWxQcm92aWRlciA9IHtcbiAgICBzZXRJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldEludGVydmFsLmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgIH0sXG4gICAgY2xlYXJJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICByZXR1cm4gKGNsZWFySW50ZXJ2YWwpKGhhbmRsZSk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcblxudmFyIEFzeW5jQWN0aW9uID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXN5bmNBY3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXN5bmNBY3Rpb24oc2NoZWR1bGVyLCB3b3JrKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHNjaGVkdWxlciwgd29yaykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyO1xuICAgICAgICBfdGhpcy53b3JrID0gd29yaztcbiAgICAgICAgX3RoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uIChzdGF0ZSwgZGVsYXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZGVsYXkgPT09IHZvaWQgMCkgeyBkZWxheSA9IDA7IH1cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgICAgIHZhciBpZCA9IHRoaXMuaWQ7XG4gICAgICAgIHZhciBzY2hlZHVsZXIgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHNjaGVkdWxlciwgaWQsIGRlbGF5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgICAgIHRoaXMuaWQgPSAoX2EgPSB0aGlzLmlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLnJlcXVlc3RBc3luY0lkKHNjaGVkdWxlciwgdGhpcy5pZCwgZGVsYXkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZCA9IGZ1bmN0aW9uIChzY2hlZHVsZXIsIF9pZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBpbnRlcnZhbFByb3ZpZGVyLnNldEludGVydmFsKHNjaGVkdWxlci5mbHVzaC5iaW5kKHNjaGVkdWxlciwgdGhpcyksIGRlbGF5KTtcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZCA9IGZ1bmN0aW9uIChfc2NoZWR1bGVyLCBpZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIGlmIChkZWxheSAhPSBudWxsICYmIHRoaXMuZGVsYXkgPT09IGRlbGF5ICYmIHRoaXMucGVuZGluZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW50ZXJ2YWxQcm92aWRlci5jbGVhckludGVydmFsKGlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgQXN5bmNBY3Rpb24ucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoc3RhdGUsIGRlbGF5KSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcignZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICB2YXIgZXJyb3IgPSB0aGlzLl9leGVjdXRlKHN0YXRlLCBkZWxheSk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGVuZGluZyA9PT0gZmFsc2UgJiYgdGhpcy5pZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlciwgdGhpcy5pZCwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5fZXhlY3V0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgX2RlbGF5KSB7XG4gICAgICAgIHZhciBlcnJvcmVkID0gZmFsc2U7XG4gICAgICAgIHZhciBlcnJvclZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy53b3JrKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZXJyb3JlZCA9IHRydWU7XG4gICAgICAgICAgICBlcnJvclZhbHVlID0gZSA/IGUgOiBuZXcgRXJyb3IoJ1NjaGVkdWxlZCBhY3Rpb24gdGhyZXcgZmFsc3kgZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JlZCkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgaWQgPSBfYS5pZCwgc2NoZWR1bGVyID0gX2Euc2NoZWR1bGVyO1xuICAgICAgICAgICAgdmFyIGFjdGlvbnMgPSBzY2hlZHVsZXIuYWN0aW9ucztcbiAgICAgICAgICAgIHRoaXMud29yayA9IHRoaXMuc3RhdGUgPSB0aGlzLnNjaGVkdWxlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGFyclJlbW92ZShhY3Rpb25zLCB0aGlzKTtcbiAgICAgICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQoc2NoZWR1bGVyLCBpZCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRlbGF5ID0gbnVsbDtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEFzeW5jQWN0aW9uO1xufShBY3Rpb24pKTtcblxudmFyIFNjaGVkdWxlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2NoZWR1bGVyKHNjaGVkdWxlckFjdGlvbkN0b3IsIG5vdykge1xuICAgICAgICBpZiAobm93ID09PSB2b2lkIDApIHsgbm93ID0gU2NoZWR1bGVyLm5vdzsgfVxuICAgICAgICB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSBzY2hlZHVsZXJBY3Rpb25DdG9yO1xuICAgICAgICB0aGlzLm5vdyA9IG5vdztcbiAgICB9XG4gICAgU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uICh3b3JrLCBkZWxheSwgc3RhdGUpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBuZXcgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yKHRoaXMsIHdvcmspLnNjaGVkdWxlKHN0YXRlLCBkZWxheSk7XG4gICAgfTtcbiAgICBTY2hlZHVsZXIubm93ID0gZGF0ZVRpbWVzdGFtcFByb3ZpZGVyLm5vdztcbiAgICByZXR1cm4gU2NoZWR1bGVyO1xufSgpKTtcblxudmFyIEFzeW5jU2NoZWR1bGVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXN5bmNTY2hlZHVsZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXN5bmNTY2hlZHVsZXIoU2NoZWR1bGVyQWN0aW9uLCBub3cpIHtcbiAgICAgICAgaWYgKG5vdyA9PT0gdm9pZCAwKSB7IG5vdyA9IFNjaGVkdWxlci5ub3c7IH1cbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgU2NoZWR1bGVyQWN0aW9uLCBub3cpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmFjdGlvbnMgPSBbXTtcbiAgICAgICAgX3RoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFzeW5jU2NoZWR1bGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgdmFyIGFjdGlvbnMgPSB0aGlzLmFjdGlvbnM7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJvcjtcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKChlcnJvciA9IGFjdGlvbi5leGVjdXRlKGFjdGlvbi5zdGF0ZSwgYWN0aW9uLmRlbGF5KSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoKGFjdGlvbiA9IGFjdGlvbnMuc2hpZnQoKSkpO1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICB3aGlsZSAoKGFjdGlvbiA9IGFjdGlvbnMuc2hpZnQoKSkpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQXN5bmNTY2hlZHVsZXI7XG59KFNjaGVkdWxlcikpO1xuXG52YXIgYXN5bmNTY2hlZHVsZXIgPSBuZXcgQXN5bmNTY2hlZHVsZXIoQXN5bmNBY3Rpb24pO1xuXG52YXIgaXNBcnJheUxpa2UgPSAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggJiYgdHlwZW9mIHgubGVuZ3RoID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgeCAhPT0gJ2Z1bmN0aW9uJzsgfSk7XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSh2YWx1ZSkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWx1ZS50aGVuKTtcbn1cblxuZnVuY3Rpb24gaXNJbnRlcm9wT2JzZXJ2YWJsZShpbnB1dCkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKGlucHV0W29ic2VydmFibGVdKTtcbn1cblxuZnVuY3Rpb24gaXNBc3luY0l0ZXJhYmxlKG9iaikge1xuICAgIHJldHVybiBTeW1ib2wuYXN5bmNJdGVyYXRvciAmJiBpc0Z1bmN0aW9uKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9ialtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVJbnZhbGlkT2JzZXJ2YWJsZVR5cGVFcnJvcihpbnB1dCkge1xuICAgIHJldHVybiBuZXcgVHlwZUVycm9yKFwiWW91IHByb3ZpZGVkIFwiICsgKGlucHV0ICE9PSBudWxsICYmIHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgPyAnYW4gaW52YWxpZCBvYmplY3QnIDogXCInXCIgKyBpbnB1dCArIFwiJ1wiKSArIFwiIHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21pc2UsIFJlYWRhYmxlU3RyZWFtLCBBcnJheSwgQXN5bmNJdGVyYWJsZSwgb3IgSXRlcmFibGUuXCIpO1xufVxuXG5mdW5jdGlvbiBnZXRTeW1ib2xJdGVyYXRvcigpIHtcbiAgICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7XG4gICAgICAgIHJldHVybiAnQEBpdGVyYXRvcic7XG4gICAgfVxuICAgIHJldHVybiBTeW1ib2wuaXRlcmF0b3I7XG59XG52YXIgaXRlcmF0b3IgPSBnZXRTeW1ib2xJdGVyYXRvcigpO1xuXG5mdW5jdGlvbiBpc0l0ZXJhYmxlKGlucHV0KSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oaW5wdXQgPT09IG51bGwgfHwgaW5wdXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGlucHV0W2l0ZXJhdG9yXSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtTGlrZVRvQXN5bmNHZW5lcmF0b3IocmVhZGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gX19hc3luY0dlbmVyYXRvcih0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtTGlrZVRvQXN5bmNHZW5lcmF0b3JfMSgpIHtcbiAgICAgICAgdmFyIHJlYWRlciwgX2EsIHZhbHVlLCBkb25lO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICByZWFkZXIgPSByZWFkYWJsZVN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFsxLCAsIDksIDEwXSk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMjtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgX19hd2FpdChyZWFkZXIucmVhZCgpKV07XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBfYSA9IF9iLnNlbnQoKSwgdmFsdWUgPSBfYS52YWx1ZSwgZG9uZSA9IF9hLmRvbmU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZG9uZSkgcmV0dXJuIFszLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBfX2F3YWl0KHZvaWQgMCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyLCBfYi5zZW50KCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFs0LCBfX2F3YWl0KHZhbHVlKV07XG4gICAgICAgICAgICAgICAgY2FzZSA2OiByZXR1cm4gWzQsIF9iLnNlbnQoKV07XG4gICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMl07XG4gICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzMsIDEwXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICAgICAgICAgIGNhc2UgMTA6IHJldHVybiBbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxpa2Uob2JqKSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24ob2JqID09PSBudWxsIHx8IG9iaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb2JqLmdldFJlYWRlcik7XG59XG5cbmZ1bmN0aW9uIGlubmVyRnJvbShpbnB1dCkge1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoaXNJbnRlcm9wT2JzZXJ2YWJsZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tSW50ZXJvcE9ic2VydmFibGUoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FycmF5TGlrZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcm9taXNlKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21Qcm9taXNlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBc3luY0l0ZXJhYmxlKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21Bc3luY0l0ZXJhYmxlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNJdGVyYWJsZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tSXRlcmFibGUoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1JlYWRhYmxlU3RyZWFtTGlrZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tUmVhZGFibGVTdHJlYW1MaWtlKGlucHV0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBjcmVhdGVJbnZhbGlkT2JzZXJ2YWJsZVR5cGVFcnJvcihpbnB1dCk7XG59XG5mdW5jdGlvbiBmcm9tSW50ZXJvcE9ic2VydmFibGUob2JqKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBvYnMgPSBvYmpbb2JzZXJ2YWJsZV0oKTtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob2JzLnN1YnNjcmliZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnMuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlJyk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBmcm9tQXJyYXlMaWtlKGFycmF5KSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoICYmICFzdWJzY3JpYmVyLmNsb3NlZDsgaSsrKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoYXJyYXlbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21Qcm9taXNlKHByb21pc2UpIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgcHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIXN1YnNjcmliZXIuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHsgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZXJyKTsgfSlcbiAgICAgICAgICAgIC50aGVuKG51bGwsIHJlcG9ydFVuaGFuZGxlZEVycm9yKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21JdGVyYWJsZShpdGVyYWJsZSkge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGl0ZXJhYmxlXzEgPSBfX3ZhbHVlcyhpdGVyYWJsZSksIGl0ZXJhYmxlXzFfMSA9IGl0ZXJhYmxlXzEubmV4dCgpOyAhaXRlcmFibGVfMV8xLmRvbmU7IGl0ZXJhYmxlXzFfMSA9IGl0ZXJhYmxlXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gaXRlcmFibGVfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHN1YnNjcmliZXIuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYWJsZV8xXzEgJiYgIWl0ZXJhYmxlXzFfMS5kb25lICYmIChfYSA9IGl0ZXJhYmxlXzEucmV0dXJuKSkgX2EuY2FsbChpdGVyYWJsZV8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBmcm9tQXN5bmNJdGVyYWJsZShhc3luY0l0ZXJhYmxlKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHByb2Nlc3MoYXN5bmNJdGVyYWJsZSwgc3Vic2NyaWJlcikuY2F0Y2goZnVuY3Rpb24gKGVycikgeyByZXR1cm4gc3Vic2NyaWJlci5lcnJvcihlcnIpOyB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21SZWFkYWJsZVN0cmVhbUxpa2UocmVhZGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gZnJvbUFzeW5jSXRlcmFibGUocmVhZGFibGVTdHJlYW1MaWtlVG9Bc3luY0dlbmVyYXRvcihyZWFkYWJsZVN0cmVhbSkpO1xufVxuZnVuY3Rpb24gcHJvY2Vzcyhhc3luY0l0ZXJhYmxlLCBzdWJzY3JpYmVyKSB7XG4gICAgdmFyIGFzeW5jSXRlcmFibGVfMSwgYXN5bmNJdGVyYWJsZV8xXzE7XG4gICAgdmFyIGVfMiwgX2E7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUsIGVfMl8xO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBfYi50cnlzLnB1c2goWzAsIDUsIDYsIDExXSk7XG4gICAgICAgICAgICAgICAgICAgIGFzeW5jSXRlcmFibGVfMSA9IF9fYXN5bmNWYWx1ZXMoYXN5bmNJdGVyYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBbNCwgYXN5bmNJdGVyYWJsZV8xLm5leHQoKV07XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIShhc3luY0l0ZXJhYmxlXzFfMSA9IF9iLnNlbnQoKSwgIWFzeW5jSXRlcmFibGVfMV8xLmRvbmUpKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzeW5jSXRlcmFibGVfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic2NyaWJlci5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAzO1xuICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFszLCAxXTtcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgZV8yXzEgPSBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFs2LCAsIDksIDEwXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGFzeW5jSXRlcmFibGVfMV8xICYmICFhc3luY0l0ZXJhYmxlXzFfMS5kb25lICYmIChfYSA9IGFzeW5jSXRlcmFibGVfMS5yZXR1cm4pKSkgcmV0dXJuIFszLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBfYS5jYWxsKGFzeW5jSXRlcmFibGVfMSldO1xuICAgICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDg7XG4gICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzMsIDEwXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs3XTtcbiAgICAgICAgICAgICAgICBjYXNlIDEwOiByZXR1cm4gWzddO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVTY2hlZHVsZShwYXJlbnRTdWJzY3JpcHRpb24sIHNjaGVkdWxlciwgd29yaywgZGVsYXksIHJlcGVhdCkge1xuICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgIGlmIChyZXBlYXQgPT09IHZvaWQgMCkgeyByZXBlYXQgPSBmYWxzZTsgfVxuICAgIHZhciBzY2hlZHVsZVN1YnNjcmlwdGlvbiA9IHNjaGVkdWxlci5zY2hlZHVsZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdvcmsoKTtcbiAgICAgICAgaWYgKHJlcGVhdCkge1xuICAgICAgICAgICAgcGFyZW50U3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNjaGVkdWxlKG51bGwsIGRlbGF5KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9LCBkZWxheSk7XG4gICAgcGFyZW50U3Vic2NyaXB0aW9uLmFkZChzY2hlZHVsZVN1YnNjcmlwdGlvbik7XG4gICAgaWYgKCFyZXBlYXQpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVkdWxlU3Vic2NyaXB0aW9uO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdGhyb3dFcnJvcihlcnJvck9yRXJyb3JGYWN0b3J5LCBzY2hlZHVsZXIpIHtcbiAgICB2YXIgZXJyb3JGYWN0b3J5ID0gaXNGdW5jdGlvbihlcnJvck9yRXJyb3JGYWN0b3J5KSA/IGVycm9yT3JFcnJvckZhY3RvcnkgOiBmdW5jdGlvbiAoKSB7IHJldHVybiBlcnJvck9yRXJyb3JGYWN0b3J5OyB9O1xuICAgIHZhciBpbml0ID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHsgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZXJyb3JGYWN0b3J5KCkpOyB9O1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShpbml0KTtcbn1cblxudmFyIEVtcHR5RXJyb3IgPSBjcmVhdGVFcnJvckNsYXNzKGZ1bmN0aW9uIChfc3VwZXIpIHsgcmV0dXJuIGZ1bmN0aW9uIEVtcHR5RXJyb3JJbXBsKCkge1xuICAgIF9zdXBlcih0aGlzKTtcbiAgICB0aGlzLm5hbWUgPSAnRW1wdHlFcnJvcic7XG4gICAgdGhpcy5tZXNzYWdlID0gJ25vIGVsZW1lbnRzIGluIHNlcXVlbmNlJztcbn07IH0pO1xuXG5mdW5jdGlvbiBsYXN0VmFsdWVGcm9tKHNvdXJjZSwgY29uZmlnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgdmFyIF9oYXNWYWx1ZSA9IGZhbHNlO1xuICAgICAgICB2YXIgX3ZhbHVlO1xuICAgICAgICBzb3VyY2Uuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIF92YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIF9oYXNWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6IHJlamVjdCxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKF9oYXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKF92YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVtcHR5RXJyb3IoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWREYXRlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4odmFsdWUpO1xufVxuXG52YXIgVGltZW91dEVycm9yID0gY3JlYXRlRXJyb3JDbGFzcyhmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIFRpbWVvdXRFcnJvckltcGwoaW5mbykge1xuICAgICAgICBpZiAoaW5mbyA9PT0gdm9pZCAwKSB7IGluZm8gPSBudWxsOyB9XG4gICAgICAgIF9zdXBlcih0aGlzKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gJ1RpbWVvdXQgaGFzIG9jY3VycmVkJztcbiAgICAgICAgdGhpcy5uYW1lID0gJ1RpbWVvdXRFcnJvcic7XG4gICAgICAgIHRoaXMuaW5mbyA9IGluZm87XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gdGltZW91dChjb25maWcsIHNjaGVkdWxlckFyZykge1xuICAgIHZhciBfYSA9IChpc1ZhbGlkRGF0ZShjb25maWcpID8geyBmaXJzdDogY29uZmlnIH0gOiB0eXBlb2YgY29uZmlnID09PSAnbnVtYmVyJyA/IHsgZWFjaDogY29uZmlnIH0gOiBjb25maWcpLCBmaXJzdCA9IF9hLmZpcnN0LCBlYWNoID0gX2EuZWFjaCwgX2IgPSBfYS53aXRoLCBfd2l0aCA9IF9iID09PSB2b2lkIDAgPyB0aW1lb3V0RXJyb3JGYWN0b3J5IDogX2IsIF9jID0gX2Euc2NoZWR1bGVyLCBzY2hlZHVsZXIgPSBfYyA9PT0gdm9pZCAwID8gYXN5bmNTY2hlZHVsZXIgOiBfYywgX2QgPSBfYS5tZXRhLCBtZXRhID0gX2QgPT09IHZvaWQgMCA/IG51bGwgOiBfZDtcbiAgICBpZiAoZmlyc3QgPT0gbnVsbCAmJiBlYWNoID09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gdGltZW91dCBwcm92aWRlZC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wZXJhdGUoZnVuY3Rpb24gKHNvdXJjZSwgc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgb3JpZ2luYWxTb3VyY2VTdWJzY3JpcHRpb247XG4gICAgICAgIHZhciB0aW1lclN1YnNjcmlwdGlvbjtcbiAgICAgICAgdmFyIGxhc3RWYWx1ZSA9IG51bGw7XG4gICAgICAgIHZhciBzZWVuID0gMDtcbiAgICAgICAgdmFyIHN0YXJ0VGltZXIgPSBmdW5jdGlvbiAoZGVsYXkpIHtcbiAgICAgICAgICAgIHRpbWVyU3Vic2NyaXB0aW9uID0gZXhlY3V0ZVNjaGVkdWxlKHN1YnNjcmliZXIsIHNjaGVkdWxlciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsU291cmNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlubmVyRnJvbShfd2l0aCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhOiBtZXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlOiBsYXN0VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWVuOiBzZWVuLFxuICAgICAgICAgICAgICAgICAgICB9KSkuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBkZWxheSk7XG4gICAgICAgIH07XG4gICAgICAgIG9yaWdpbmFsU291cmNlU3Vic2NyaXB0aW9uID0gc291cmNlLnN1YnNjcmliZShjcmVhdGVPcGVyYXRvclN1YnNjcmliZXIoc3Vic2NyaWJlciwgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB0aW1lclN1YnNjcmlwdGlvbiA9PT0gbnVsbCB8fCB0aW1lclN1YnNjcmlwdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHNlZW4rKztcbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCgobGFzdFZhbHVlID0gdmFsdWUpKTtcbiAgICAgICAgICAgIGVhY2ggPiAwICYmIHN0YXJ0VGltZXIoZWFjaCk7XG4gICAgICAgIH0sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoISh0aW1lclN1YnNjcmlwdGlvbiA9PT0gbnVsbCB8fCB0aW1lclN1YnNjcmlwdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGltZXJTdWJzY3JpcHRpb24uY2xvc2VkKSkge1xuICAgICAgICAgICAgICAgIHRpbWVyU3Vic2NyaXB0aW9uID09PSBudWxsIHx8IHRpbWVyU3Vic2NyaXB0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFzdFZhbHVlID0gbnVsbDtcbiAgICAgICAgfSkpO1xuICAgICAgICAhc2VlbiAmJiBzdGFydFRpbWVyKGZpcnN0ICE9IG51bGwgPyAodHlwZW9mIGZpcnN0ID09PSAnbnVtYmVyJyA/IGZpcnN0IDogK2ZpcnN0IC0gc2NoZWR1bGVyLm5vdygpKSA6IGVhY2gpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gdGltZW91dEVycm9yRmFjdG9yeShpbmZvKSB7XG4gICAgdGhyb3cgbmV3IFRpbWVvdXRFcnJvcihpbmZvKTtcbn1cblxuY2xhc3MgTG9hZGVkT25jZVB1Ymxpc2hlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0ID0gKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcInN1Y2Nlc3NcIiwgaXNTdWNjZXNzOiB0cnVlLCBsb2FkZWRWYWx1ZTogdmFsdWUgfTtcbiAgICAgIHRoaXMuX3N1YmplY3QubmV4dCh2YWx1ZSk7XG4gICAgICB0aGlzLl9zdWJqZWN0LmNvbXBsZXRlKCk7XG4gICAgfTtcbiAgICB0aGlzLnRocm93ID0gKGVycm9yLCBlcnJNc2cpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTG9hZGVkT25jZSBpcyBhbHJlYWR5IGluIHN1Y2Nlc3Mgc3RhdGVcIik7XG4gICAgICB9XG4gICAgICB0aGlzLl9jdXJyZW50ID0geyBzdGF0dXM6IFwiZXJyb3JcIiwgaXNTdWNjZXNzOiBmYWxzZSwgZXJyb3IsIGVyck1zZyB9O1xuICAgICAgdGhpcy5fc3ViamVjdC5lcnJvcihlcnJvcik7XG4gICAgfTtcbiAgICB0aGlzLmdldFZhbHVlSWZMb2FkZWRFbHNlID0gKHZhbHVlSWZOb3RMb2FkZWQpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHJldHVybiB0aGlzLl9jdXJyZW50LmxvYWRlZFZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlSWZOb3RMb2FkZWQ7XG4gICAgfTtcbiAgICB0aGlzLnN1YnNjcmliZSA9IChmbikgPT4ge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICBmbih0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgZm4odGhpcy5fY3VycmVudCk7XG4gICAgICB9XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0YXRlIChuZXh0KTogcGxlYXNlIG1ha2Ugc3VyZSB0byB1cGRhdGUgX2N1cnJlbnQgYmVmb3JlIHRoZSBzdWJqZWN0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbih0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwiZXJyb3JcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZSAoZXJyb3IpOiBwbGVhc2UgbWFrZSBzdXJlIHRvIHVwZGF0ZSBfY3VycmVudCBiZWZvcmUgdGhlIHN1YmplY3RcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZuKHRoaXMuX2N1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHRoaXMud2FpdEZvckxvYWQgPSAodGltZW91dENvbmZpZykgPT4ge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIikgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9jdXJyZW50LmxvYWRlZFZhbHVlKTtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJlcnJvclwiKSByZXR1cm4gUHJvbWlzZS5yZWplY3QodGhpcy5fY3VycmVudC5lcnJvcik7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwiaW5pdGlhbFwiKSBhc3NlcnROZXZlcih0aGlzLl9jdXJyZW50KTtcbiAgICAgIGNvbnN0IHRpbWVvdXRQYXJhbXMgPSB7XG4gICAgICAgIGZpcnN0OiB0aW1lb3V0Q29uZmlnLnRpbWVvdXRTZWMgKiAxZTMsXG4gICAgICAgIHdpdGg6ICgpID0+IHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKHRpbWVvdXRDb25maWcudGltZW91dEVyck1zZykpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5fc3ViamVjdC5waXBlKHRpbWVvdXQodGltZW91dFBhcmFtcykpKTtcbiAgICB9O1xuICAgIHRoaXMuX2N1cnJlbnQgPSB7IHN0YXR1czogXCJpbml0aWFsXCIsIGlzU3VjY2VzczogZmFsc2UgfTtcbiAgICB0aGlzLl9zdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcbiAgfVxuICBnZXQgY3VycmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudDtcbiAgfVxufVxuXG56JDEuZW51bShbXCJkZXZcIiwgXCJzdGdcIiwgXCJwcm9kXCJdKTtcbmNvbnN0IGNvbm50b0Jhc2VVcmxzID0ge1xuICBwcm9kOiBcImh0dHBzOi8vY29ubnRvLmdldG9wZW5wYXkuY29tXCIsXG4gIHN0ZzogXCJodHRwczovL2Nvbm50by5vcGVucGF5c3RhZ2luZy5jb21cIixcbiAgZGV2OiBcImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMFwiXG59O1xuY29uc3QgZ2V0Q29ubnRvVXJsID0gKGVudikgPT4ge1xuICByZXR1cm4gY29ubnRvQmFzZVVybHNbZW52XTtcbn07XG5cbmZ1bmN0aW9uIGFzc2VydE5ldmVyKHZhbHVlKSB7XG4gIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIGNhc2U6ICR7dmFsdWV9YCk7XG59XG5jb25zdCBnZXRXaW5kb3dTYWZlID0gKCkgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIHdpbmRvdztcbn07XG5cbmNvbnN0IG1ldHJpY3NQdWJsaXNoZXIgPSBuZXcgTG9hZGVkT25jZVB1Ymxpc2hlcigpO1xuY29uc3QgTUVUUklDU19RVUVVRV9LRVkgPSBcIm9wX21ldHJpY3NfcXVldWVcIjtcbmNvbnN0IE1BWF9SRVRSWV9BVFRFTVBUUyA9IDM7XG5jb25zdCBCQVRDSF9TSVpFID0gMztcbmNvbnN0IEJBVENIX0lOVEVSVkFMX01TID0gMWUzO1xuY29uc3QgeyBsb2dfXyB9ID0gY3JlYXRlT2pzRmxvd0xvZ2dlcnMoXCJvcC1tZXRyaWNzXCIpO1xuY2xhc3MgTWV0cmljc1F1ZXVlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5xdWV1ZSA9IFtdO1xuICAgIHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gZmFsc2U7XG4gICAgdGhpcy5iYXRjaFRpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID0gMDtcbiAgICB0aGlzLm9mZmxpbmVMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgIGxvZ19fKFwiTmV0d29yayBvZmZsaW5lLCBtZXRyaWNzIHdpbGwgYmUgcXVldWVkXCIpO1xuICAgICAgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICB9O1xuICAgIHRoaXMub25saW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBsb2dfXyhcIk5ldHdvcmsgb25saW5lLCBwcm9jZXNzaW5nIG1ldHJpY3MgcXVldWVcIik7XG4gICAgICB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgIH07XG4gICAgdGhpcy5sb2FkUXVldWVGcm9tU3RvcmFnZSgpO1xuICAgIGdldFdpbmRvd1NhZmUoKT8uYWRkRXZlbnRMaXN0ZW5lcihcIm9mZmxpbmVcIiwgdGhpcy5vZmZsaW5lTGlzdGVuZXIpO1xuICAgIGdldFdpbmRvd1NhZmUoKT8uYWRkRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCB0aGlzLm9ubGluZUxpc3RlbmVyKTtcbiAgfVxuICBhZGRFdmVudChldmVudE5hbWUsIHByb3BlcnRpZXMsIGNvbnRleHRQcm9wZXJ0aWVzKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudE5hbWUsXG4gICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzIHx8IHt9LFxuICAgICAgY29udGV4dFByb3BlcnRpZXM6IGNvbnRleHRQcm9wZXJ0aWVzIHx8IHt9LFxuICAgICAgbm9uY2U6IHY0KCksXG4gICAgICB0aW1lc3RhbXA6IHBlcmZvcm1hbmNlLm5vdygpLFxuICAgICAgZGF0ZXRpbWU6ICgvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkudG9JU09TdHJpbmcoKSxcbiAgICAgIGF0dGVtcHRDb3VudDogMCxcbiAgICAgIHRpbWVEaWZmRnJvbVByZXZpb3VzRXZlbnQ6IHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID8gcGVyZm9ybWFuY2Uubm93KCkgLSB0aGlzLmxhc3RFdmVudFRpbWVzdGFtcCA6IDBcbiAgICB9O1xuICAgIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID0gZXZlbnQudGltZXN0YW1wO1xuICAgIHRoaXMucXVldWUucHVzaChldmVudCk7XG4gICAgdGhpcy5zYXZlUXVldWVUb1N0b3JhZ2UoKTtcbiAgICB0aGlzLnNjaGVkdWxlQmF0Y2hQcm9jZXNzaW5nKCk7XG4gIH1cbiAgbG9hZFF1ZXVlRnJvbVN0b3JhZ2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZFF1ZXVlID0gZ2V0V2luZG93U2FmZSgpPy5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oTUVUUklDU19RVUVVRV9LRVkpO1xuICAgICAgaWYgKHN0b3JlZFF1ZXVlKSB7XG4gICAgICAgIHRoaXMucXVldWUgPSBKU09OLnBhcnNlKHN0b3JlZFF1ZXVlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5xdWV1ZSA9IFtdO1xuICAgICAgdGhpcy5zYXZlUXVldWVUb1N0b3JhZ2UoKTtcbiAgICB9XG4gIH1cbiAgc2F2ZVF1ZXVlVG9TdG9yYWdlKCkge1xuICAgIGdldFdpbmRvd1NhZmUoKT8ubG9jYWxTdG9yYWdlLnNldEl0ZW0oTUVUUklDU19RVUVVRV9LRVksIEpTT04uc3RyaW5naWZ5KHRoaXMucXVldWUpKTtcbiAgfVxuICBzY2hlZHVsZUJhdGNoUHJvY2Vzc2luZygpIHtcbiAgICBjb25zdCBzYWZlV2luZG93ID0gZ2V0V2luZG93U2FmZSgpO1xuICAgIGlmIChzYWZlV2luZG93ICYmIG5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMucHJvY2Vzc2luZ1F1ZXVlICYmIHRoaXMucXVldWUubGVuZ3RoID4gMCAmJiAhdGhpcy5iYXRjaFRpbWVvdXQpIHtcbiAgICAgIHRoaXMuYmF0Y2hUaW1lb3V0ID0gc2FmZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5iYXRjaFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgICAgfSwgQkFUQ0hfSU5URVJWQUxfTVMpO1xuICAgIH1cbiAgfVxuICBjYW5jZWxCYXRjaFByb2Nlc3NpbmcoKSB7XG4gICAgaWYgKHRoaXMuYmF0Y2hUaW1lb3V0KSB7XG4gICAgICBnZXRXaW5kb3dTYWZlKCk/LmNsZWFyVGltZW91dCh0aGlzLmJhdGNoVGltZW91dCk7XG4gICAgICB0aGlzLmJhdGNoVGltZW91dCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gZmFsc2U7XG4gIH1cbiAgcHJvY2Vzc1F1ZXVlKCkge1xuICAgIGlmICghbmF2aWdhdG9yLm9uTGluZSB8fCB0aGlzLnByb2Nlc3NpbmdRdWV1ZSB8fCB0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9IHRydWU7XG4gICAgdGhpcy5zZW5kQmF0Y2goKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5xdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBhc3luYyBzZW5kQmF0Y2goKSB7XG4gICAgaWYgKHRoaXMucXVldWUubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgY29udGV4dCA9IG1ldHJpY3NQdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2Uodm9pZCAwKTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIGxvZ19fKFwiTWV0cmljcyBjb250ZXh0IG5vdCBhdmFpbGFibGUsIHdpbGwgcmV0cnkgbGF0ZXJcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGJhdGNoID0gdGhpcy5xdWV1ZS5zbGljZSgwLCBCQVRDSF9TSVpFKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmF0Y2hQYXlsb2FkID0ge1xuICAgICAgICBldmVudHM6IGJhdGNoLm1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXZlbnRfbmFtZTogZXZlbnQuZXZlbnROYW1lLFxuICAgICAgICAgICAgZGV2aWNlX3Rva2VuOiBjb250ZXh0LmRldmljZVRva2VuLFxuICAgICAgICAgICAgY29udGV4dF9wcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIC4uLmNvbnRleHQsXG4gICAgICAgICAgICAgIC4uLmV2ZW50LmNvbnRleHRQcm9wZXJ0aWVzXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgICBub25jZTogZXZlbnQubm9uY2UsXG4gICAgICAgICAgICAgIGRhdGV0aW1lOiBldmVudC5kYXRldGltZSxcbiAgICAgICAgICAgICAgdGltZXN0YW1wOiBldmVudC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgIHRpbWVfZGlmZl9mcm9tX3ByZXZpb3VzX2V2ZW50OiBldmVudC50aW1lRGlmZkZyb21QcmV2aW91c0V2ZW50LFxuICAgICAgICAgICAgICBjaGVja291dF9zZWN1cmVfdG9rZW46IGNvbnRleHQuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgICAgICAgLi4uZXZlbnQucHJvcGVydGllc1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgICAgY29uc3QgY29ubnRvVXJsID0gZ2V0Q29ubnRvVXJsKGNvbnRleHQuZW52aXJvbm1lbnQpO1xuICAgICAgY29uc3QgbWV0cmljc1JvdXRlciA9IG5ldyBVUkwoXCIvbWV0cmljcy9wdWJsaWMvY2FwdHVyZVwiLCBjb25udG9VcmwpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChtZXRyaWNzUm91dGVyLnRvU3RyaW5nKCksIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJhdGNoUGF5bG9hZClcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRoaXMucXVldWUgPSB0aGlzLnF1ZXVlLnNsaWNlKGJhdGNoLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuc2F2ZVF1ZXVlVG9TdG9yYWdlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhhbmRsZUZhaWxlZEJhdGNoKGJhdGNoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nX18oXCJFcnJvciBzZW5kaW5nIG1ldHJpY3MgYmF0Y2g6XCIsIGVycm9yKTtcbiAgICAgIHRoaXMuaGFuZGxlRmFpbGVkQmF0Y2goYmF0Y2gpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVGYWlsZWRCYXRjaChiYXRjaCkge1xuICAgIGJhdGNoLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICBldmVudC5hdHRlbXB0Q291bnQrKztcbiAgICB9KTtcbiAgICBjb25zdCBldmVudHNUb0tlZXAgPSBiYXRjaC5maWx0ZXIoKGV2ZW50KSA9PiBldmVudC5hdHRlbXB0Q291bnQgPCBNQVhfUkVUUllfQVRURU1QVFMpO1xuICAgIHRoaXMucXVldWUgPSB0aGlzLnF1ZXVlLnNsaWNlKGJhdGNoLmxlbmd0aCk7XG4gICAgdGhpcy5xdWV1ZSA9IFsuLi5ldmVudHNUb0tlZXAsIC4uLnRoaXMucXVldWVdO1xuICAgIHRoaXMuc2F2ZVF1ZXVlVG9TdG9yYWdlKCk7XG4gIH1cbiAgY2xlYW51cCgpIHtcbiAgICBnZXRXaW5kb3dTYWZlKCk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJvZmZsaW5lXCIsIHRoaXMub2ZmbGluZUxpc3RlbmVyKTtcbiAgICBnZXRXaW5kb3dTYWZlKCk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIiwgdGhpcy5vbmxpbmVMaXN0ZW5lcik7XG4gICAgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgfVxufVxuY29uc3QgbWV0cmljc1F1ZXVlID0gbmV3IE1ldHJpY3NRdWV1ZSgpO1xuZ2V0V2luZG93U2FmZSgpPy5hZGRFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsICgpID0+IHtcbiAgbWV0cmljc1F1ZXVlLnByb2Nlc3NRdWV1ZSgpO1xufSk7XG5cbmNvbnN0IFBheW1lbnRQcm9jZXNzb3IgPSB6JDEuZW51bShbXCJzdHJpcGVcIiwgXCJhaXJ3YWxsZXhcIiwgXCJhdXRob3JpemVfbmV0XCJdKTtcbih7XG4gIHByb2Nlc3NvcjogUGF5bWVudFByb2Nlc3Nvci5FbnVtLnN0cmlwZSxcbiAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICBpc0xvYWRpbmc6IHRydWUsXG4gIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICB9XG59KTtcblxueiQxLm9iamVjdCh7XG4gIGRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lc3NhZ2VIZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSxcbiAgICBlcnJvcnM6IHokMS5hcnJheSh6JDEuYW55KCkpLFxuICAgIG1lc3NhZ2VUeXBlOiB6JDEuc3RyaW5nKCksXG4gICAgbWVzc2FnZUJvZHk6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpXG4gIH0pLFxuICBvcmlnaW46IHokMS5saXRlcmFsKFwiaHR0cHM6Ly9hcHBsZXBheS5jZG4tYXBwbGUuY29tXCIpXG59KTtcblxueiQxLm9iamVjdCh7XG4gIFwib3AtYWlyd2FsbGV4LTNkcy11cmxcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFpcndhbGxleC1pbml0aWFsLWludGVudC1pZFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWlyd2FsbGV4LWNvbnNlbnQtaWRcIjogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJhcHBsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImFpcndhbGxleFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICBnb29nbGVfcGF5X21lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpXG4gIH0pXG59KTtcbmNvbnN0IEFXWF9MT0FESU5HID0ge1xuICBpc0F2YWlsYWJsZTogZmFsc2UsXG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gIH1cbn07XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJhcHBsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImF1dGhvcml6ZV9uZXRcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSk7XG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pO1xuXG56JDEub2JqZWN0KHtcbiAgXCJvcC1wb2NreXQtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXR4bi1ub1wiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXJlZi1ub1wiOiB6JDEuc3RyaW5nKClcbn0pO1xuXG5jb25zdCBBZHllbkVudmlyb25tZW50ID0geiQxLmVudW0oW1widGVzdFwiLCBcImxpdmVcIiwgXCJsaXZlLXVzXCIsIFwibGl2ZS1pblwiLCBcImxpdmUtYXBzZVwiLCBcImxpdmUtYXVcIl0pO1xueiQxLmVudW0oW1xuICBcImFyXCIsXG4gIFwiYmctQkdcIixcbiAgXCJjYS1FU1wiLFxuICBcImNzLUNaXCIsXG4gIFwiZGEtREtcIixcbiAgXCJkZS1ERVwiLFxuICBcImVsLUdSXCIsXG4gIFwiZW4tVVNcIixcbiAgXCJlcy1FU1wiLFxuICBcImV0LUVFXCIsXG4gIFwiZmktRklcIixcbiAgXCJmci1GUlwiLFxuICBcImhyLUhSXCIsXG4gIFwiaHUtSFVcIixcbiAgXCJpcy1JU1wiLFxuICBcIml0LUlUXCIsXG4gIFwiamEtSlBcIixcbiAgXCJrby1LUlwiLFxuICBcImx0LUxUXCIsXG4gIFwibHYtTFZcIixcbiAgXCJubC1OTFwiLFxuICBcIm5vLU5PXCIsXG4gIFwicGwtUExcIixcbiAgXCJwdC1CUlwiLFxuICBcInB0LVBUXCIsXG4gIFwicm8tUk9cIixcbiAgXCJydS1SVVwiLFxuICBcInNrLVNLXCIsXG4gIFwic2wtU0lcIixcbiAgXCJzdi1TRVwiLFxuICBcInpoLUNOXCIsXG4gIFwiemgtVFdcIlxuXSk7XG56JDEub2JqZWN0KHtcbiAgXCJvcC1hY2NvdW50LWlkXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1hZHllbi1jbGllbnQta2V5XCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1hZHllbi1lbnZpcm9ubWVudFwiOiBBZHllbkVudmlyb25tZW50LFxuICBcIm9wLWFkeWVuLWFjdGlvblwiOiB6JDEuc3RyaW5nKClcbn0pO1xuXG56JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIG91cl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpXG4gIH0pXG4pLmxlbmd0aCgxKTtcblxueiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImxvb3BcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImNyeXB0b1wiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgZW50aXR5X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgYXBpX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gICAgc3VwcG9ydGVkX2N1cnJlbmNpZXM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICAgIGVudmlyb25tZW50OiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xudmFyIFBheUluU3RhdGUgPSAvKiBAX19QVVJFX18gKi8gKChQYXlJblN0YXRlMikgPT4ge1xuICBQYXlJblN0YXRlMltcIklETEVcIl0gPSBcImlkbGVcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDT05GSVJNSU5HX0JBTEFOQ0VcIl0gPSBcImNvbmZpcm1pbmdCYWxhbmNlXCI7XG4gIFBheUluU3RhdGUyW1wiQ09ORklSTUlOR19BVVRIT1JJWkFUSU9OXCJdID0gXCJjb25maXJtaW5nQXV0aG9yaXphdGlvblwiO1xuICBQYXlJblN0YXRlMltcIlVQREFUSU5HX0FVVEhPUklaQVRJT05cIl0gPSBcInVwZGF0aW5nQXV0aG9yaXphdGlvblwiO1xuICBQYXlJblN0YXRlMltcIlNJR05JTkdfTUVTU0FHRVwiXSA9IFwic2lnbmluZ01lc3NhZ2VcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDUkVBVElOR19DVVNUT01FUlwiXSA9IFwiY3JlYXRpbmdDdXN0b21lclwiO1xuICBQYXlJblN0YXRlMltcIlBST0NFU1NJTkdfUEFZTUVOVFwiXSA9IFwicHJvY2Vzc2luZ1BheW1lbnRcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDUkVBVElOR19QQVlNRU5UXCJdID0gXCJjcmVhdGluZ1BheW1lbnRcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDT05GSVJNSU5HX1BBWU1FTlRcIl0gPSBcImNvbmZpcm1pbmdQYXltZW50XCI7XG4gIFBheUluU3RhdGUyW1wiQ09NUExFVEVcIl0gPSBcImNvbXBsZXRlXCI7XG4gIHJldHVybiBQYXlJblN0YXRlMjtcbn0pKFBheUluU3RhdGUgfHwge30pO1xuXG5jb25zdCBMT09QX0xPQURJTkcgPSB7XG4gIGlzQXZhaWxhYmxlOiBmYWxzZSxcbiAgaXNMb2FkaW5nOiB0cnVlLFxuICBjb25maWc6IG51bGwsXG4gIHdpZGdldDogbnVsbFxufTtcbnokMS5vYmplY3Qoe1xuICBbXCJsb29wRmlyc3ROYW1lXCJdOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wibG9vcExhc3ROYW1lXCJdOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wibG9vcEVtYWlsXCJdOiBSZXF1aXJlZFN0cmluZyxcbiAgW0ZpZWxkTmFtZS5QUk9NT1RJT05fQ09ERV06IE9wdGlvbmFsU3RyaW5nXG59KTtcbnokMS5vYmplY3Qoe1xuICBbXCJsb29wRmlyc3ROYW1lXCJdOiBPcHRpb25hbFN0cmluZyxcbiAgW1wibG9vcExhc3ROYW1lXCJdOiBPcHRpb25hbFN0cmluZyxcbiAgW1wibG9vcEVtYWlsXCJdOiBPcHRpb25hbFN0cmluZyxcbiAgW0ZpZWxkTmFtZS5QUk9NT1RJT05fQ09ERV06IE9wdGlvbmFsU3RyaW5nXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInBvY2t5dFwiKSxcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwicGF5cGFsXCIpXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgcGF5cGFsX2lmcmFtZV91cmw6IHokMS5zdHJpbmcoKSxcbiAgICB2ZXJpZnlfdG9rZW46IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJzdHJpcGVfbGlua1wiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xueiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBvdXJfZXhpc3RpbmdfcG1faWQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnVuaW9uKFt6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSwgeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpXSksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcblxuY29uc3QgUFJfTE9BRElORyA9IHtcbiAgaXNMb2FkaW5nOiB0cnVlLFxuICBpc0F2YWlsYWJsZTogZmFsc2UsXG4gIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGBzdGFydEZsb3cgdHJpZ2dlcmVkIHdoaWxlIHBheW1lbnQgcmVxdWVzdCBpcyBzdGlsbCBub3QgcmVhZHkuIFxuICAgICAgWW91IGNhbiBjaGVjayB0aGUgXCIuaXNMb2FkaW5nXCIgcGFyYW0gdG8ga25vdyB3aGVuIGEgcGF5bWVudCByZXF1ZXN0IGlzIHN0aWxsIGxvYWRpbmcsIFxuICAgICAgYW5kIFwiLmlzQXZhaWxhYmxlXCIgdG8ga25vdyBpZiBhIHBheW1lbnQgcmVxdWVzdCBpcyBhdmFpbGFibGUuYFxuICAgICk7XG4gIH1cbn07XG5cbmNvbnN0IHsgZXJyX18gfSA9IGNyZWF0ZU9qc0Zsb3dMb2dnZXJzKFwiZm9ybS1jYWxsYmFja3NcIik7XG5jb25zdCBPcHRpb25hbEZuID0geiQxLmZ1bmN0aW9uKCkub3B0aW9uYWwoKTtcbmNvbnN0IFpvZEZvcm1DYWxsYmFja3MgPSB6JDEub2JqZWN0KHtcbiAgb25Gb2N1czogT3B0aW9uYWxGbixcbiAgb25CbHVyOiBPcHRpb25hbEZuLFxuICBvbkNoYW5nZTogT3B0aW9uYWxGbixcbiAgb25Mb2FkOiBPcHRpb25hbEZuLFxuICBvbkxvYWRFcnJvcjogT3B0aW9uYWxGbixcbiAgb25WYWxpZGF0aW9uRXJyb3I6IE9wdGlvbmFsRm4sXG4gIG9uQ2hlY2tvdXRTdGFydGVkOiBPcHRpb25hbEZuLFxuICBvbkNoZWNrb3V0U3VjY2VzczogT3B0aW9uYWxGbixcbiAgb25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzOiBPcHRpb25hbEZuLFxuICBvbkNoZWNrb3V0RXJyb3I6IE9wdGlvbmFsRm4sXG4gIG9uUGF5bWVudFJlcXVlc3RMb2FkOiBPcHRpb25hbEZuXG59KTtcbmNsYXNzIEZvcm1DYWxsYmFja3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvKipcbiAgICAgKiBTZXRzIEFMTCBmb3JtIGNhbGxiYWNrcy4gTm90ZSB0aGF0IGFsbCBvbGQgY2FsbGJhY2tzIGFyZSByZW1vdmVkLlxuICAgICAqL1xuICAgIHRoaXMuc2V0Q2FsbGJhY2tzID0gKHJhd0NhbGxiYWNrcykgPT4ge1xuICAgICAgdGhpcy5fY2FsbGJhY2tzID0gRm9ybUNhbGxiYWNrcy5jcmVhdGVFbXB0eUNhbGxiYWNrcygpO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmF3Q2FsbGJhY2tzKS5mb3JFYWNoKChba2V5LCByYXdDYWxsYmFja10pID0+IHtcbiAgICAgICAgY29uc3Qgc2FmZUNhbGxiYWNrID0gbWFrZUNhbGxiYWNrU2FmZShrZXksIHJhd0NhbGxiYWNrID8/IEZvcm1DYWxsYmFja3MuTk9PUCwgZXJyX18pO1xuICAgICAgICB0aGlzLl9jYWxsYmFja3Nba2V5XSA9IHNhZmVDYWxsYmFjaztcbiAgICAgIH0pO1xuICAgIH07XG4gICAgdGhpcy5fY2FsbGJhY2tzID0gRm9ybUNhbGxiYWNrcy5jcmVhdGVFbXB0eUNhbGxiYWNrcygpO1xuICB9XG4gIHN0YXRpYyB7XG4gICAgdGhpcy5OT09QID0gKCkgPT4ge1xuICAgIH07XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLmNyZWF0ZUVtcHR5Q2FsbGJhY2tzID0gKCkgPT4ge1xuICAgICAgY29uc3QgeCA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoWm9kRm9ybUNhbGxiYWNrcy5rZXlvZigpLmVudW0pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB4W2tleV0gPSBGb3JtQ2FsbGJhY2tzLk5PT1A7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB4O1xuICAgIH07XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLmZyb21PYmplY3QgPSAob2JqKSA9PiB7XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBGb3JtQ2FsbGJhY2tzKCk7XG4gICAgICBpbnN0YW5jZS5zZXRDYWxsYmFja3MoWm9kRm9ybUNhbGxiYWNrcy5wYXJzZShvYmopKTtcbiAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVhZC1vbmx5IHZlcnNpb24gb2YgdGhlIGNhbGxiYWNrcyBvYmplY3QuXG4gICAqL1xuICBnZXQgZ2V0KCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX2NhbGxiYWNrcyB9O1xuICB9XG59XG5cbmNvbnN0IHVzZVJlYWN0aXZlRm9ybUNhbGxiYWNrcyA9IChwcm9wcykgPT4ge1xuICBjb25zdCBmb3JtQ2FsbGJhY2tzID0gRm9ybUNhbGxiYWNrcy5mcm9tT2JqZWN0KHtcbiAgICBvbkZvY3VzOiBwcm9wcy5vbkZvY3VzLFxuICAgIG9uQmx1cjogcHJvcHMub25CbHVyLFxuICAgIG9uQ2hhbmdlOiBwcm9wcy5vbkNoYW5nZSxcbiAgICBvbkxvYWQ6IHByb3BzLm9uTG9hZCxcbiAgICBvbkxvYWRFcnJvcjogcHJvcHMub25Mb2FkRXJyb3IsXG4gICAgb25WYWxpZGF0aW9uRXJyb3I6IHByb3BzLm9uVmFsaWRhdGlvbkVycm9yLFxuICAgIG9uQ2hlY2tvdXRTdGFydGVkOiBwcm9wcy5vbkNoZWNrb3V0U3RhcnRlZCxcbiAgICBvbkNoZWNrb3V0U3VjY2VzczogcHJvcHMub25DaGVja291dFN1Y2Nlc3MsXG4gICAgb25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzOiBwcm9wcy5vblNldHVwUGF5bWVudE1ldGhvZFN1Y2Nlc3MsXG4gICAgb25DaGVja291dEVycm9yOiBwcm9wcy5vbkNoZWNrb3V0RXJyb3IsXG4gICAgb25QYXltZW50UmVxdWVzdExvYWQ6IHByb3BzLm9uUGF5bWVudFJlcXVlc3RMb2FkXG4gIH0pO1xuICBpZiAoT3QuZ2V0SW5zdGFuY2UoKSkge1xuICAgIE90LmdldEluc3RhbmNlKCk/LnVwZGF0ZUNhbGxiYWNrcyhmb3JtQ2FsbGJhY2tzLmdldCk7XG4gIH1cbiAgcmV0dXJuIGZvcm1DYWxsYmFja3MuZ2V0O1xufTtcblxuY29uc3QgdXNlUGF5bWVudFJlcXVlc3RzID0gKG9yaWdpbmFsT25QYXltZW50UmVxdWVzdExvYWQpID0+IHtcbiAgY29uc3QgW3BheW1lbnRSZXF1ZXN0cywgc2V0UGF5bWVudFJlcXVlc3RzXSA9IHVzZVN0YXRlKHtcbiAgICBhcHBsZV9wYXk6IFBSX0xPQURJTkcsXG4gICAgZ29vZ2xlX3BheTogUFJfTE9BRElOR1xuICB9KTtcbiAgY29uc3Qgb3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQgPSB1c2VDYWxsYmFjayhcbiAgICAocGF5bWVudFJlcXVlc3RzMikgPT4ge1xuICAgICAgc2V0UGF5bWVudFJlcXVlc3RzKHBheW1lbnRSZXF1ZXN0czIpO1xuICAgICAgb3JpZ2luYWxPblBheW1lbnRSZXF1ZXN0TG9hZD8uKHBheW1lbnRSZXF1ZXN0czIpO1xuICAgIH0sXG4gICAgW29yaWdpbmFsT25QYXltZW50UmVxdWVzdExvYWRdXG4gICk7XG4gIHJldHVybiB7IHBheW1lbnRSZXF1ZXN0cywgb3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQgfTtcbn07XG5cbmNvbnN0IEZPUk1fVEFSR0VUID0gXCJvcF9vanNfZm9ybVwiO1xuY29uc3QgRWxlbWVudHNGb3JtID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcEZvcm0sIHNldE9wRm9ybV0gPSB1c2VTdGF0ZSgpO1xuICBjb25zdCBbZWxlbWVudHNDb250ZXh0VmFsdWUsIHNldEVsZW1lbnRzQ29udGV4dFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCB7IHBheW1lbnRSZXF1ZXN0cywgb3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQgfSA9IHVzZVBheW1lbnRSZXF1ZXN0cyhwcm9wcy5vblBheW1lbnRSZXF1ZXN0TG9hZCk7XG4gIGNvbnN0IFtsb2FkZWQsIHNldExvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzdHJpcGVMaW5rQ3RybCwgc2V0U3RyaXBlTGlua0N0cmxdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtsb29wQ29uZmlnLCBzZXRMb29wQ29uZmlnXSA9IHVzZVN0YXRlKExPT1BfTE9BRElORyk7XG4gIGNvbnN0IFthaXJ3YWxsZXgsIHNldEFpcndhbGxleF0gPSB1c2VTdGF0ZSh7XG4gICAgZ29vZ2xlUGF5OiBBV1hfTE9BRElORyxcbiAgICBhcHBsZVBheTogQVdYX0xPQURJTkdcbiAgfSk7XG4gIGNvbnN0IGZvcm1DYWxsYmFja3MgPSB1c2VSZWFjdGl2ZUZvcm1DYWxsYmFja3Moe1xuICAgIC4uLnByb3BzLFxuICAgIG9uUGF5bWVudFJlcXVlc3RMb2FkOiBvdmVycmlkZW5PblBheW1lbnRSZXF1ZXN0TG9hZCxcbiAgICBvbkxvYWQ6ICh0b3RhbEFtb3VudEF0b21zLCBjdXJyZW5jeSkgPT4ge1xuICAgICAgc2V0TG9hZGVkKHRydWUpO1xuICAgICAgcHJvcHMub25Mb2FkPy4odG90YWxBbW91bnRBdG9tcywgY3VycmVuY3kpO1xuICAgIH1cbiAgfSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9wRm9ybSkgcmV0dXJuO1xuICAgIGNvbnN0IGZvcm0gPSBPdC5nZXRJbnN0YW5jZSgpID8/IG5ldyBPdCh7XG4gICAgICBjaGVja291dFNlY3VyZVRva2VuOiBwcm9wcy5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgZm9ybVRhcmdldDogYCMke0ZPUk1fVEFSR0VUfWAsXG4gICAgICBiYXNlVXJsOiBwcm9wcy5iYXNlVXJsLFxuICAgICAgY3VzdG9tSW5pdFBhcmFtczogcHJvcHMuY3VzdG9tSW5pdFBhcmFtcyxcbiAgICAgIC4uLmZvcm1DYWxsYmFja3NcbiAgICB9KTtcbiAgICBzZXRPcEZvcm0oZm9ybSk7XG4gICAgY29uc3QgdmFsdWUgPSBnZXRFbGVtZW50c0NvbnRleHRWYWx1ZShmb3JtKTtcbiAgICBzZXRFbGVtZW50c0NvbnRleHRWYWx1ZSh2YWx1ZSk7XG4gICAgZm9ybS5pbml0Rmxvd3Muc3RyaXBlTGluay5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZS5pc0F2YWlsYWJsZSkge1xuICAgICAgICBzZXRTdHJpcGVMaW5rQ3RybChyZXN1bHQubG9hZGVkVmFsdWUuY29udHJvbGxlcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZm9ybS5pbml0Rmxvd3MubG9vcC5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZS5pc0F2YWlsYWJsZSkge1xuICAgICAgICBzZXRMb29wQ29uZmlnKHtcbiAgICAgICAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIHdpZGdldDogcmVzdWx0LmxvYWRlZFZhbHVlLndpZGdldFByb3BzLFxuICAgICAgICAgIGNvbmZpZzogcmVzdWx0LmxvYWRlZFZhbHVlLmluaXRMb29wQ29ubmVjdFByb3BzXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmICFyZXN1bHQubG9hZGVkVmFsdWUuaXNBdmFpbGFibGUpIHtcbiAgICAgICAgc2V0TG9vcENvbmZpZyh7XG4gICAgICAgICAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgd2lkZ2V0OiBudWxsLFxuICAgICAgICAgIGNvbmZpZzogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmb3JtLmluaXRGbG93cy5haXJ3YWxsZXhHb29nbGVQYXkucHVibGlzaGVyLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcyAmJiByZXN1bHQubG9hZGVkVmFsdWUpIHtcbiAgICAgICAgc2V0QWlyd2FsbGV4KChwcmV2KSA9PiAoe1xuICAgICAgICAgIGFwcGxlUGF5OiBwcmV2LmFwcGxlUGF5LFxuICAgICAgICAgIGdvb2dsZVBheTogcmVzdWx0LmxvYWRlZFZhbHVlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmb3JtLmluaXRGbG93cy5haXJ3YWxsZXhBcHBsZVBheS5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZSkge1xuICAgICAgICBzZXRBaXJ3YWxsZXgoKHByZXYpID0+ICh7XG4gICAgICAgICAgZ29vZ2xlUGF5OiBwcmV2Lmdvb2dsZVBheSxcbiAgICAgICAgICBhcHBsZVBheTogcmVzdWx0LmxvYWRlZFZhbHVlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZm9ybS5kZXN0cm95KCk7XG4gICAgfTtcbiAgfSwgW10pO1xuICBpZiAoIW9wRm9ybSkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7fSk7XG4gIH1cbiAgY29uc3QgY2hpbGRyZW5Qcm9wcyA9IHtcbiAgICBzdWJtaXQ6IG9wRm9ybS5zdWJtaXRDYXJkLFxuICAgIHN1Ym1pdFdpdGg6IG9wRm9ybS5nZW5lcmFsU3VibWl0LFxuICAgIGFwcGxlUGF5OiBwYXltZW50UmVxdWVzdHMuYXBwbGVfcGF5LFxuICAgIGdvb2dsZVBheTogcGF5bWVudFJlcXVlc3RzLmdvb2dsZV9wYXksXG4gICAgbG9hZGVkLFxuICAgIC8vIERpc2FibGUgZHluYW1pYyBwcmV2aWV3cyBmZWF0dXJlIGZvciBub3dcbiAgICBwcmV2aWV3OiB7XG4gICAgICBhbW91bnQ6IG51bGwsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZXJyb3I6IG51bGxcbiAgICB9LFxuICAgIHN0cmlwZUxpbms6IHN0cmlwZUxpbmtDdHJsLFxuICAgIGFpcndhbGxleCxcbiAgICBsb29wOiBsb29wQ29uZmlnXG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7IGNoaWxkcmVuOiBlbGVtZW50c0NvbnRleHRWYWx1ZSA/IC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudHNDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBlbGVtZW50c0NvbnRleHRWYWx1ZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBpZDogRk9STV9UQVJHRVQsIGNsYXNzTmFtZTogcHJvcHMuY2xhc3NOYW1lLCBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW4oY2hpbGRyZW5Qcm9wcykgfSkgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7fSkgfSk7XG59O1xuY29uc3QgZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUgPSAob3BGb3JtKSA9PiB7XG4gIHJldHVybiB7XG4gICAgZm9ybUlkOiBvcEZvcm0uZm9ybUlkLFxuICAgIGZvcm1IZWlnaHQ6IG9wRm9ybS5mb3JtUHJvcGVydGllcy5oZWlnaHQsXG4gICAgcmVmZXJyZXI6IG9wRm9ybS5yZWZlcnJlcixcbiAgICBjaGVja291dFNlY3VyZVRva2VuOiBvcEZvcm0uY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICByZWdpc3RlcklmcmFtZTogb3BGb3JtLnJlZ2lzdGVySWZyYW1lLFxuICAgIGJhc2VVcmw6IG9wRm9ybS5iYXNlVXJsXG4gIH07XG59O1xuXG5jb25zdCBFbGVtZW50RnJhbWUgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBlbGVtZW50VHlwZSwgc3R5bGVzIH0gPSBwcm9wcztcbiAgY29uc3QgeyBmb3JtSWQsIHJlZmVycmVyLCBmb3JtSGVpZ2h0LCBjaGVja291dFNlY3VyZVRva2VuLCByZWdpc3RlcklmcmFtZSwgYmFzZVVybCB9ID0gdXNlT3BlblBheUVsZW1lbnRzKCk7XG4gIGNvbnN0IHN1YlBhdGggPSBlbGVtZW50VHlwZS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBbaGFzTG9hZGVkLCBzZXRIYXNMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpZnJhbWVSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGVsZW1lbnRTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc3R5bGVzKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gY29udmVydFN0eWxlc1RvUXVlcnlTdHJpbmcoc3R5bGVzKTtcbiAgfSwgW3N0eWxlc10pO1xuICBjb25zdCBmcmFtZVN0eWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBoZWlnaHQ6IGZvcm1IZWlnaHRcbiAgICB9O1xuICB9LCBbZm9ybUhlaWdodF0pO1xuICBjb25zdCBxdWVyeVN0cmluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghY2hlY2tvdXRTZWN1cmVUb2tlbiB8fCAhcmVmZXJyZXIpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBwYXJhbXMuYXBwZW5kKFwicmVmZXJlclwiLCByZWZlcnJlcik7XG4gICAgcGFyYW1zLmFwcGVuZChcInN0eWxlc1wiLCBlbGVtZW50U3R5bGUpO1xuICAgIHBhcmFtcy5hcHBlbmQoXCJmb3JtSWRcIiwgZm9ybUlkKTtcbiAgICBwYXJhbXMuYXBwZW5kKFwic2VjdXJlVG9rZW5cIiwgY2hlY2tvdXRTZWN1cmVUb2tlbik7XG4gICAgcmV0dXJuIHBhcmFtcy50b1N0cmluZygpO1xuICB9LCBbZWxlbWVudFN0eWxlLCBmb3JtSWQsIHJlZmVycmVyLCBjaGVja291dFNlY3VyZVRva2VuXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRIYXNMb2FkZWQodHJ1ZSksIFtdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlmcmFtZVJlZi5jdXJyZW50IHx8ICFoYXNMb2FkZWQpIHJldHVybjtcbiAgICByZWdpc3RlcklmcmFtZShlbGVtZW50VHlwZSwgaWZyYW1lUmVmLmN1cnJlbnQpO1xuICB9LCBbaGFzTG9hZGVkXSk7XG4gIGlmICghY2hlY2tvdXRTZWN1cmVUb2tlbikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJbZm9ybV0gQ2Fubm90IHJlbmRlciBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgZnJhbWVcIik7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwge30pO1xuICB9XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoYC9hcHAvdjEvJHtzdWJQYXRofS1lbGVtZW50L2AsIGJhc2VVcmwpO1xuICB1cmwuc2VhcmNoID0gcXVlcnlTdHJpbmc7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFwiaWZyYW1lXCIsXG4gICAge1xuICAgICAgaWQ6IGBvanMtJHtzdWJQYXRofS1lbGVtZW50YCxcbiAgICAgIG5hbWU6IGAke3N1YlBhdGh9LWVsZW1lbnRgLFxuICAgICAgY2xhc3NOYW1lOiBcIm9qcy1pZnJhbWVcIixcbiAgICAgIHNyYzogdXJsLnRvU3RyaW5nKCksXG4gICAgICBzdHlsZTogZnJhbWVTdHlsZSxcbiAgICAgIHJlZjogaWZyYW1lUmVmXG4gICAgfVxuICApO1xufTtcblxuY29uc3QgQ2FyZEN2Y0VsZW1lbnQgPSAoeyBzdHlsZXMgfSkgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChFbGVtZW50RnJhbWUsIHsgc3R5bGVzLCBlbGVtZW50VHlwZTogRWxlbWVudFR5cGVFbnVtLkNBUkRfQ1ZDIH0pO1xufTtcblxuY29uc3QgQ2FyZEVsZW1lbnQgPSAoeyBzdHlsZXMgfSkgPT4ge1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChFbGVtZW50RnJhbWUsIHsgc3R5bGVzLCBlbGVtZW50VHlwZTogRWxlbWVudFR5cGVFbnVtLkNBUkQgfSk7XG59O1xuXG5jb25zdCBDYXJkRXhwaXJ5RWxlbWVudCA9ICh7IHN0eWxlcyB9KSA9PiB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEVsZW1lbnRGcmFtZSwgeyBzdHlsZXMsIGVsZW1lbnRUeXBlOiBFbGVtZW50VHlwZUVudW0uQ0FSRF9FWFBJUlkgfSk7XG59O1xuXG5jb25zdCBDYXJkTnVtYmVyRWxlbWVudCA9ICh7IHN0eWxlcyB9KSA9PiB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEVsZW1lbnRGcmFtZSwgeyBzdHlsZXMsIGVsZW1lbnRUeXBlOiBFbGVtZW50VHlwZUVudW0uQ0FSRF9OVU1CRVIgfSk7XG59O1xuXG5leHBvcnQgeyBDYXJkQ3ZjRWxlbWVudCwgQ2FyZEVsZW1lbnQsIENhcmRFeHBpcnlFbGVtZW50LCBDYXJkTnVtYmVyRWxlbWVudCwgRWxlbWVudHNGb3JtLCBGaWVsZE5hbWUsIFBheUluU3RhdGUsIHVzZU9wZW5QYXlFbGVtZW50cyB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsaUJBQUFBLElBQWUsY0FBQUMsSUFBWSxZQUFBQyxJQUFVLGVBQUFDLElBQWEsYUFBQUMsSUFBVyxVQUFBQyxJQUFRLFdBQUFDLFVBQWU7QUFDN0YsU0FBUyxPQUFBQyxHQUFLLFlBQUFDLFVBQWdCO0FBQzlCLFNBQVMsS0FBS0MsU0FBVztBQUN6QixTQUFTLE1BQUFDLFVBQVU7QUFDbkIsU0FBUyxrQkFBQUMsVUFBc0I7QUFDL0IsT0FBT0MsUUFBUTtBQUVmLE1BQU1DLEtBQWtCYixHQUFjO0FBQUEsRUFDcEMsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUFB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OiBbImNyZWF0ZUNvbnRleHQiLCAidXNlQ29udGV4dCIsICJ1c2VTdGF0ZSIsICJ1c2VDYWxsYmFjayIsICJ1c2VFZmZlY3QiLCAidXNlUmVmIiwgInVzZU1lbW8iLCAianN4IiwgIkZyYWdtZW50IiwgInokMSIsICJ2NCIsICJjb25uZWN0VG9DaGlsZCIsICJNZSIsICJFbGVtZW50c0NvbnRleHQiLCAidXNlT3BlblBheUVsZW1lbnRzIiwgImNvbnRleHQiLCAieHQiLCAiVm4iLCAiR24iLCAiem4iLCAicW4iLCAiWW4iLCAidHQiLCAibiIsICJCbiIsICJIbiIsICJKbiIsICJWIiwgIktuIiwgInQiLCAiciIsICJzIiwgIiQiLCAiSSIsICJDIiwgIk0iLCAicCIsICIkdCIsICJWdCIsICJHdCIsICJ6dCIsICJXIiwgIlpuIiwgIkdlIiwgIlduIiwgIkgiLCAiUW4iLCAiWG4iLCAiZXIiLCAidHIiLCAibnIiLCAicnIiLCAib3IiLCAic3IiLCAiaXIiLCAiYXIiLCAiY3IiLCAibHIiLCAiSWUiLCAidXIiLCAiZHIiLCAicHIiLCAibXIiLCAieXIiLCAiZnIiLCAiX3IiLCAiaXQiLCAiaHIiLCAiZ3IiLCAid3IiLCAiVCIsICJiciIsICJ2ciIsICJxdCIsICJFciIsICJDciIsICJZdCIsICJTciIsICJQciIsICJrciIsICJ6ZSIsICJtdCIsICJhdCIsICJBciIsICJJciIsICJpIiwgImEiLCAiUnIiLCAiVHIiLCAiRnIiLCAiYyIsICJNciIsICJlZSIsICJEciIsICJOciIsICJMciIsICJ3IiwgIk9yIiwgIkJ0IiwgIkh0IiwgIlVyIiwgImpyIiwgImhlIiwgInhyIiwgIiRyIiwgIkp0IiwgIlZyIiwgIkdyIiwgInpyIiwgInl0IiwgIkt0IiwgImZ0IiwgIlp0IiwgInFyIiwgIllyIiwgIld0IiwgIkJyIiwgIkhyIiwgIkpyIiwgIktyIiwgIlpyIiwgIlF0IiwgIldyIiwgIlFyIiwgIlhyIiwgImVvIiwgInRvIiwgIm5vIiwgInJvIiwgIm9vIiwgInNvIiwgInJlIiwgImRlIiwgIlAiLCAibnQiLCAib2UiLCAiaW8iLCAiXyIsICJYdCIsICJmZSIsICJqZSIsICJ4ZSIsICJ5ZSIsICJhbyIsICJ5IiwgImYiLCAiaCIsICJ2IiwgImIiLCAibSIsICJjbyIsICJEIiwgInFlIiwgIldlIiwgIiRlIiwgIlJlIiwgIl90IiwgImVuIiwgInRuIiwgInJuIiwgImh0IiwgIkxlIiwgImN0IiwgIm1vIiwgInJ0IiwgImxvIiwgIlFlIiwgInVvIiwgIkRlIiwgInBvIiwgImx0IiwgInlvIiwgImZvIiwgIm5lIiwgImhvIiwgImd0IiwgIl9vIiwgImdvIiwgIndvIiwgImJvIiwgInZvIiwgIkVvIiwgInNuIiwgInd0IiwgIkNvIiwgIlNvIiwgImJ0IiwgIlBvIiwgInZ0IiwgImtvIiwgIkFvIiwgIklvIiwgIlJvIiwgIlRvIiwgIkZvIiwgIk1vIiwgIkRvIiwgIk5vIiwgIkxvIiwgIk9vIiwgIlVvIiwgImpvIiwgInhvIiwgIiRvIiwgIlZvIiwgImFuIiwgIkdvIiwgInpvIiwgInFvIiwgIllvIiwgIkJvIiwgIkhvIiwgIkpvIiwgIktvIiwgIlpvIiwgIldvIiwgIlFvIiwgIkUiLCAiayIsICJTZSIsICJZZSIsICJFdCIsICJYbyIsICJlcyIsICJYZSIsICJBIiwgIm90IiwgIkN0IiwgInRzIiwgIm5zIiwgInJzIiwgIk5lIiwgIm9zIiwgInNzIiwgImlzIiwgIlV0IiwgIkwiLCAiY3MiLCAiYXMiLCAibHMiLCAiTiIsICJnZSIsICJ1cyIsICJkcyIsICJZIiwgInBzIiwgIm1zIiwgInlzIiwgIndlIiwgImZzIiwgIlN0IiwgIl9zIiwgInV0IiwgInluIiwgImhzIiwgImR0IiwgImdzIiwgIkIiLCAiX24iLCAiaG4iLCAid3MiLCAiYnMiLCAibCIsICJ3biIsICJwYSIsICJ2cyIsICJUZSIsICJKIiwgIkVzIiwgIkJlIiwgIkNzIiwgIlNzIiwgIlBzIiwgIkhlIiwgInZuIiwgImtzIiwgIkFzIiwgIklzIiwgInB0IiwgIlJzIiwgIlRzIiwgIkZzIiwgIk1zIiwgIkRzIiwgIkNuIiwgIlNuIiwgIlBuIiwgInNlIiwgIk5zIiwgIk9lIiwgIkxzIiwgIk9zIiwgIlVzIiwgInZlIiwgImpzIiwgInUiLCAiZCIsICJSIiwgInhzIiwgIkplIiwgImV0IiwgIktlIiwgIiRzIiwgIlJuIiwgInEiLCAibWUiLCAiVnMiLCAiR3MiLCAiTyIsICJ0ZSIsICJ4IiwgIiRuIiwgIkZlIiwgImllIiwgIlplIiwgImFlIiwgImJlIiwgIlRuIiwgIkZuIiwgInpzIiwgInFzIiwgIlVlIiwgIk1uIiwgIllzIiwgIkJzIiwgImxlIiwgIkVlIiwgIkhzIiwgIkpzIiwgIktzIiwgIkRuIiwgIlpzIiwgIldzIiwgIk5uIiwgIlFzIiwgIlhzIiwgImVpIiwgInRpIiwgIm5pIiwgIl9lIiwgIkFlIiwgInJpIiwgIm9pIiwgInNpIiwgIlB0IiwgImlpIiwgImFpIiwgImNpIiwgImxpIiwgInVpIiwgIlMiLCAia3QiLCAiQXQiLCAiZGkiLCAiX2kiLCAiZmkiLCAicGkiLCAibWkiLCAieWkiLCAiaGkiLCAiZ2kiLCAiaiIsICJPbiIsICJ3aSIsICJiaSIsICJJdCIsICJ2aSIsICJFaSIsICJLIiwgIlJ0IiwgIkNpIiwgIlNpIiwgInBlIiwgIlR0IiwgIkYiLCAiUGkiLCAia2kiLCAiQWkiLCAiSWkiLCAiRmkiLCAiUmkiLCAiVGkiLCAiVSIsICJNaSIsICJEaSIsICJOaSIsICJQZSIsICJMaSIsICJVaSIsICJPaSIsICJqaSIsICJ4aSIsICIkaSIsICJjZSIsICJWaSIsICJHaSIsICJ6aSIsICJHIiwgIkZ0IiwgIlEiLCAic3QiLCAiVW4iLCAia2UiLCAicWkiLCAiam4iLCAiTXQiLCAidWUiLCAiQ2UiLCAiWWkiLCAiQmkiLCAiSGkiLCAiWmkiLCAiSmkiLCAiS2kiLCAiV2kiLCAieG4iLCAiUWkiLCAiWGkiLCAiZWEiLCAidGEiLCAibmEiLCAicmEiLCAiRHQiLCAib2EiLCAic2EiLCAiaWEiLCAiTnQiLCAiTHQiLCAiWiIsICJ6IiwgIlgiLCAiT3QiLCAiUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IkMSIsICJab2RGaWVsZEVycm9yIiwgIm1ha2VDYWxsYmFja1NhZmUiLCAiY2FsbGJhY2tOYW1lIiwgImZuIiwgImVycm9yTG9nZ2VyIiwgImFyZ3MiLCAiZXJyb3IiLCAiU3VibWl0TWV0aG9kcyIsICJTdWJtaXRNZXRob2RzMiIsICJSZXF1aXJlZFN0cmluZyIsICJPcHRpb25hbFN0cmluZyIsICJudWxsT3JVbmRlZk9yJDEiLCAielR5cGUiLCAiRmllbGROYW1lIiwgIkZpZWxkTmFtZTIiLCAiRmllbGROYW1lRW51bSIsICJQcml2YXRlRmllbGROYW1lIiwgIlByaXZhdGVGaWVsZE5hbWUyIiwgIlByaXZhdGVGaWVsZE5hbWVFbnVtIiwgIkFsbEZpZWxkTmFtZXMiLCAiRWxlbWVudFR5cGVFbnVtIiwgIkVsZW1lbnRUeXBlRW51bTIiLCAiQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEiLCAiUGF5bWVudE1ldGhvZE1pbmltYWwiLCAiRXZlbnRUeXBlIiwgIkdlbmVyaWNFdmVudFR5cGUiLCAiR2VuZXJpY0V2ZW50UGF5bG9hZCIsICJJbnB1dEV2ZW50VHlwZSIsICJJbnB1dEV2ZW50UGF5bG9hZCIsICJFcnJvckV2ZW50VHlwZSIsICJFcnJvckV2ZW50UGF5bG9hZCIsICJWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUiLCAiVmFsaWRhdGlvbkVycm9yRXZlbnRQYXlsb2FkIiwgIkxheW91dEV2ZW50UGF5bG9hZCIsICJMb2FkZWRFdmVudFBheWxvYWQiLCAiUGF5bWVudEZsb3dTdGFydGVkRXZlbnRQYXlsb2FkIiwgIlNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkIiwgIlJlcXVpcmVkRm9ybUZpZWxkcyIsICJQUkZvcm1GaWVsZHMiLCAiU3VibWl0RXZlbnRUeXBlIiwgIlN1Ym1pdEV2ZW50UGF5bG9hZCIsICJUb2tlbml6ZVN1Y2Nlc3NFdmVudFBheWxvYWQiLCAiQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkIiwgIkV2ZW50UGF5bG9hZCIsICJDaGVja291dFN1Y2Nlc3NSZXNwb25zZSIsICJGaWVsZFZhbGlkYXRpb25FcnJvciIsICJUb2tlbml6ZUNhcmRFcnJvclJlc3BvbnNlIiwgIkNvbW1vbk5leHRBY3Rpb25NZXRhZGF0YSIsICJjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyIsICJzdHlsZXMiLCAibnVsbE9yVW5kZWZPciIsICJDb3Vwb25NaW5pbWFsIiwgIkxpbmVJdGVtIiwgIkJyYW5kU2V0dGluZ3MiLCAiQnJhbmQiLCAiQ2hlY2tvdXRQYXltZW50TWV0aG9kIiwgIlN1YnNjcmlwdGlvbkl0ZW1NaW5pbWFsIiwgIlN1YnNjcmlwdGlvbk1pbmltYWwiLCAiSW52b2ljZUl0ZW1EaXNjb3VudEFtb3VudHNNaW5pbWFsIiwgIkludm9pY2VMaW5lSXRlbU1pbmltYWwiLCAiRGlzY291bnRNaW5pbWFsIiwgIkludm9pY2VNaW5pbWFsIiwgIkNyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCIsICJQcmV2aWV3Q2hlY2tvdXRSZXNwb25zZSIsICJfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uIiwgIlBheW1lbnRGb3JtUHJlZmlsbCIsICJDb21wbGV0ZWRGb3JtUHJlZmlsbCIsICJFeHBpcmVkRm9ybVByZWZpbGwiLCAiUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IiLCAiTmV3Q3VzdG9tZXJGaWVsZHMiLCAiUHJpY2VRdHkiLCAiQ2FydEluZm8iLCAiUHJvY2Vzc29yU3BlY2lmaWNNZXRhZGF0YSIsICJmaXhQcm90byIsICJ0YXJnZXQiLCAicHJvdG90eXBlIiwgInNldFByb3RvdHlwZU9mIiwgImZpeFN0YWNrIiwgImNhcHR1cmVTdGFja1RyYWNlIiwgIl9fZXh0ZW5kcyQxIiwgIl9leHRlbmRTdGF0aWNzIiwgIl9fIiwgIl9zdXBlciIsICJDdXN0b21FcnJvciIsICJtZXNzYWdlIiwgIm9wdGlvbnMiLCAiX25ld1RhcmdldCIsICJfdGhpcyIsICJjcmVhdGVPanNGbG93TG9nZ2VycyIsICJwcmVmaXgiLCAibG9nIiwgImVyciIsICJleHRlbmRTdGF0aWNzIiwgIl9fZXh0ZW5kcyIsICJfX2F3YWl0ZXIiLCAidGhpc0FyZyIsICJfYXJndW1lbnRzIiwgImdlbmVyYXRvciIsICJhZG9wdCIsICJ2YWx1ZSIsICJyZXNvbHZlIiwgInJlamVjdCIsICJmdWxmaWxsZWQiLCAic3RlcCIsICJlIiwgInJlamVjdGVkIiwgInJlc3VsdCIsICJfX2dlbmVyYXRvciIsICJib2R5IiwgImciLCAidmVyYiIsICJvcCIsICJfX3ZhbHVlcyIsICJvIiwgIl9fcmVhZCIsICJfX3NwcmVhZEFycmF5IiwgImZyb20iLCAicGFjayIsICJfX2F3YWl0IiwgIl9fYXN5bmNHZW5lcmF0b3IiLCAiYXdhaXRSZXR1cm4iLCAicmVzdW1lIiwgInNldHRsZSIsICJmdWxmaWxsIiwgIl9fYXN5bmNWYWx1ZXMiLCAiaXNGdW5jdGlvbiIsICJ2YWx1ZSIsICJjcmVhdGVFcnJvckNsYXNzIiwgImNyZWF0ZUltcGwiLCAiX3N1cGVyIiwgImluc3RhbmNlIiwgImN0b3JGdW5jIiwgIlVuc3Vic2NyaXB0aW9uRXJyb3IiLCAiZXJyb3JzIiwgImVyciIsICJhcnJSZW1vdmUiLCAiYXJyIiwgIml0ZW0iLCAiaW5kZXgiLCAiU3Vic2NyaXB0aW9uIiwgImluaXRpYWxUZWFyZG93biIsICJlXzEiLCAiX2EiLCAiZV8yIiwgIl9iIiwgIl9wYXJlbnRhZ2UiLCAiX3BhcmVudGFnZV8xIiwgIl9fdmFsdWVzIiwgIl9wYXJlbnRhZ2VfMV8xIiwgInBhcmVudF8xIiwgImVfMV8xIiwgImluaXRpYWxGaW5hbGl6ZXIiLCAiZSIsICJfZmluYWxpemVycyIsICJfZmluYWxpemVyc18xIiwgIl9maW5hbGl6ZXJzXzFfMSIsICJmaW5hbGl6ZXIiLCAiZXhlY0ZpbmFsaXplciIsICJfX3NwcmVhZEFycmF5IiwgIl9fcmVhZCIsICJlXzJfMSIsICJ0ZWFyZG93biIsICJwYXJlbnQiLCAiZW1wdHkiLCAiRU1QVFlfU1VCU0NSSVBUSU9OIiwgImlzU3Vic2NyaXB0aW9uIiwgImNvbmZpZyIsICJ0aW1lb3V0UHJvdmlkZXIiLCAiaGFuZGxlciIsICJ0aW1lb3V0IiwgImFyZ3MiLCAiX2kiLCAiaGFuZGxlIiwgImRlbGVnYXRlIiwgInJlcG9ydFVuaGFuZGxlZEVycm9yIiwgIm5vb3AiLCAiZXJyb3JDb250ZXh0IiwgImNiIiwgIlN1YnNjcmliZXIiLCAiX19leHRlbmRzIiwgImRlc3RpbmF0aW9uIiwgIl90aGlzIiwgIkVNUFRZX09CU0VSVkVSIiwgIm5leHQiLCAiZXJyb3IiLCAiY29tcGxldGUiLCAiU2FmZVN1YnNjcmliZXIiLCAiX2JpbmQiLCAiYmluZCIsICJmbiIsICJ0aGlzQXJnIiwgIkNvbnN1bWVyT2JzZXJ2ZXIiLCAicGFydGlhbE9ic2VydmVyIiwgImhhbmRsZVVuaGFuZGxlZEVycm9yIiwgIm9ic2VydmVyT3JOZXh0IiwgImNvbnRleHRfMSIsICJkZWZhdWx0RXJyb3JIYW5kbGVyIiwgIm9ic2VydmFibGUiLCAiaWRlbnRpdHkiLCAieCIsICJwaXBlRnJvbUFycmF5IiwgImZucyIsICJpbnB1dCIsICJwcmV2IiwgIk9ic2VydmFibGUiLCAic3Vic2NyaWJlIiwgIm9wZXJhdG9yIiwgInN1YnNjcmliZXIiLCAiaXNTdWJzY3JpYmVyIiwgInNvdXJjZSIsICJzaW5rIiwgInByb21pc2VDdG9yIiwgImdldFByb21pc2VDdG9yIiwgInJlc29sdmUiLCAicmVqZWN0IiwgIm9wZXJhdGlvbnMiLCAiaXNPYnNlcnZlciIsICJoYXNMaWZ0IiwgIm9wZXJhdGUiLCAiaW5pdCIsICJsaWZ0ZWRTb3VyY2UiLCAiY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyIiwgIm9uTmV4dCIsICJvbkNvbXBsZXRlIiwgIm9uRXJyb3IiLCAib25GaW5hbGl6ZSIsICJPcGVyYXRvclN1YnNjcmliZXIiLCAic2hvdWxkVW5zdWJzY3JpYmUiLCAiY2xvc2VkXzEiLCAiT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IiLCAiU3ViamVjdCIsICJzdWJqZWN0IiwgIkFub255bW91c1N1YmplY3QiLCAiX2MiLCAib2JzZXJ2ZXIiLCAib2JzZXJ2ZXJzIiwgImhhc0Vycm9yIiwgImlzU3RvcHBlZCIsICJ0aHJvd25FcnJvciIsICJkYXRlVGltZXN0YW1wUHJvdmlkZXIiLCAiQWN0aW9uIiwgInNjaGVkdWxlciIsICJ3b3JrIiwgInN0YXRlIiwgImRlbGF5IiwgImludGVydmFsUHJvdmlkZXIiLCAiQXN5bmNBY3Rpb24iLCAiaWQiLCAiX2lkIiwgIl9zY2hlZHVsZXIiLCAiX2RlbGF5IiwgImVycm9yZWQiLCAiZXJyb3JWYWx1ZSIsICJhY3Rpb25zIiwgIlNjaGVkdWxlciIsICJzY2hlZHVsZXJBY3Rpb25DdG9yIiwgIm5vdyIsICJBc3luY1NjaGVkdWxlciIsICJTY2hlZHVsZXJBY3Rpb24iLCAiYWN0aW9uIiwgImFzeW5jU2NoZWR1bGVyIiwgImlzQXJyYXlMaWtlIiwgImlzUHJvbWlzZSIsICJpc0ludGVyb3BPYnNlcnZhYmxlIiwgImlzQXN5bmNJdGVyYWJsZSIsICJvYmoiLCAiY3JlYXRlSW52YWxpZE9ic2VydmFibGVUeXBlRXJyb3IiLCAiZ2V0U3ltYm9sSXRlcmF0b3IiLCAiaXRlcmF0b3IiLCAiaXNJdGVyYWJsZSIsICJyZWFkYWJsZVN0cmVhbUxpa2VUb0FzeW5jR2VuZXJhdG9yIiwgInJlYWRhYmxlU3RyZWFtIiwgIl9fYXN5bmNHZW5lcmF0b3IiLCAicmVhZGVyIiwgImRvbmUiLCAiX19nZW5lcmF0b3IiLCAiX19hd2FpdCIsICJpc1JlYWRhYmxlU3RyZWFtTGlrZSIsICJpbm5lckZyb20iLCAiZnJvbUludGVyb3BPYnNlcnZhYmxlIiwgImZyb21BcnJheUxpa2UiLCAiZnJvbVByb21pc2UiLCAiZnJvbUFzeW5jSXRlcmFibGUiLCAiZnJvbUl0ZXJhYmxlIiwgImZyb21SZWFkYWJsZVN0cmVhbUxpa2UiLCAib2JzIiwgImFycmF5IiwgImkiLCAicHJvbWlzZSIsICJpdGVyYWJsZSIsICJpdGVyYWJsZV8xIiwgIml0ZXJhYmxlXzFfMSIsICJhc3luY0l0ZXJhYmxlIiwgInByb2Nlc3MiLCAiYXN5bmNJdGVyYWJsZV8xIiwgImFzeW5jSXRlcmFibGVfMV8xIiwgIl9fYXdhaXRlciIsICJfX2FzeW5jVmFsdWVzIiwgImV4ZWN1dGVTY2hlZHVsZSIsICJwYXJlbnRTdWJzY3JpcHRpb24iLCAicmVwZWF0IiwgInNjaGVkdWxlU3Vic2NyaXB0aW9uIiwgInRocm93RXJyb3IiLCAiZXJyb3JPckVycm9yRmFjdG9yeSIsICJlcnJvckZhY3RvcnkiLCAiRW1wdHlFcnJvciIsICJsYXN0VmFsdWVGcm9tIiwgIl9oYXNWYWx1ZSIsICJfdmFsdWUiLCAiaXNWYWxpZERhdGUiLCAiVGltZW91dEVycm9yIiwgImluZm8iLCAic2NoZWR1bGVyQXJnIiwgImZpcnN0IiwgImVhY2giLCAiX3dpdGgiLCAidGltZW91dEVycm9yRmFjdG9yeSIsICJfZCIsICJtZXRhIiwgIm9yaWdpbmFsU291cmNlU3Vic2NyaXB0aW9uIiwgInRpbWVyU3Vic2NyaXB0aW9uIiwgImxhc3RWYWx1ZSIsICJzZWVuIiwgInN0YXJ0VGltZXIiLCAiTG9hZGVkT25jZVB1Ymxpc2hlciIsICJlcnJNc2ciLCAidmFsdWVJZk5vdExvYWRlZCIsICJzdWJzY3JpcHRpb24iLCAidGltZW91dENvbmZpZyIsICJhc3NlcnROZXZlciIsICJ0aW1lb3V0UGFyYW1zIiwgInokMSIsICJjb25udG9CYXNlVXJscyIsICJnZXRDb25udG9VcmwiLCAiZW52IiwgImdldFdpbmRvd1NhZmUiLCAibWV0cmljc1B1Ymxpc2hlciIsICJNRVRSSUNTX1FVRVVFX0tFWSIsICJNQVhfUkVUUllfQVRURU1QVFMiLCAiQkFUQ0hfU0laRSIsICJCQVRDSF9JTlRFUlZBTF9NUyIsICJsb2dfXyIsICJjcmVhdGVPanNGbG93TG9nZ2VycyIsICJNZXRyaWNzUXVldWUiLCAiZXZlbnROYW1lIiwgInByb3BlcnRpZXMiLCAiY29udGV4dFByb3BlcnRpZXMiLCAiZXZlbnQiLCAidjQiLCAic3RvcmVkUXVldWUiLCAic2FmZVdpbmRvdyIsICJjb250ZXh0IiwgImJhdGNoIiwgImJhdGNoUGF5bG9hZCIsICJjb25udG9VcmwiLCAibWV0cmljc1JvdXRlciIsICJldmVudHNUb0tlZXAiLCAibWV0cmljc1F1ZXVlIiwgIlBheW1lbnRQcm9jZXNzb3IiLCAiQVdYX0xPQURJTkciLCAiQWR5ZW5FbnZpcm9ubWVudCIsICJQYXlJblN0YXRlIiwgIlBheUluU3RhdGUyIiwgIkxPT1BfTE9BRElORyIsICJSZXF1aXJlZFN0cmluZyIsICJGaWVsZE5hbWUiLCAiT3B0aW9uYWxTdHJpbmciLCAiUFJfTE9BRElORyIsICJlcnJfXyIsICJPcHRpb25hbEZuIiwgIlpvZEZvcm1DYWxsYmFja3MiLCAiX0Zvcm1DYWxsYmFja3MiLCAicmF3Q2FsbGJhY2tzIiwgImtleSIsICJyYXdDYWxsYmFjayIsICJzYWZlQ2FsbGJhY2siLCAibWFrZUNhbGxiYWNrU2FmZSIsICJGb3JtQ2FsbGJhY2tzIiwgInVzZVJlYWN0aXZlRm9ybUNhbGxiYWNrcyIsICJwcm9wcyIsICJmb3JtQ2FsbGJhY2tzIiwgIk90IiwgInVzZVBheW1lbnRSZXF1ZXN0cyIsICJvcmlnaW5hbE9uUGF5bWVudFJlcXVlc3RMb2FkIiwgInBheW1lbnRSZXF1ZXN0cyIsICJzZXRQYXltZW50UmVxdWVzdHMiLCAidXNlU3RhdGUiLCAib3ZlcnJpZGVuT25QYXltZW50UmVxdWVzdExvYWQiLCAidXNlQ2FsbGJhY2siLCAicGF5bWVudFJlcXVlc3RzMiIsICJGT1JNX1RBUkdFVCIsICJFbGVtZW50c0Zvcm0iLCAib3BGb3JtIiwgInNldE9wRm9ybSIsICJlbGVtZW50c0NvbnRleHRWYWx1ZSIsICJzZXRFbGVtZW50c0NvbnRleHRWYWx1ZSIsICJsb2FkZWQiLCAic2V0TG9hZGVkIiwgInN0cmlwZUxpbmtDdHJsIiwgInNldFN0cmlwZUxpbmtDdHJsIiwgImxvb3BDb25maWciLCAic2V0TG9vcENvbmZpZyIsICJhaXJ3YWxsZXgiLCAic2V0QWlyd2FsbGV4IiwgInRvdGFsQW1vdW50QXRvbXMiLCAiY3VycmVuY3kiLCAidXNlRWZmZWN0IiwgImZvcm0iLCAiZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUiLCAicmVzdWx0IiwgImpzeCIsICJGcmFnbWVudCIsICJjaGlsZHJlblByb3BzIiwgIkVsZW1lbnRzQ29udGV4dCIsICJFbGVtZW50RnJhbWUiLCAiZWxlbWVudFR5cGUiLCAic3R5bGVzIiwgImZvcm1JZCIsICJyZWZlcnJlciIsICJmb3JtSGVpZ2h0IiwgImNoZWNrb3V0U2VjdXJlVG9rZW4iLCAicmVnaXN0ZXJJZnJhbWUiLCAiYmFzZVVybCIsICJ1c2VPcGVuUGF5RWxlbWVudHMiLCAic3ViUGF0aCIsICJoYXNMb2FkZWQiLCAic2V0SGFzTG9hZGVkIiwgImlmcmFtZVJlZiIsICJ1c2VSZWYiLCAiZWxlbWVudFN0eWxlIiwgInVzZU1lbW8iLCAiY29udmVydFN0eWxlc1RvUXVlcnlTdHJpbmciLCAiZnJhbWVTdHlsZSIsICJxdWVyeVN0cmluZyIsICJwYXJhbXMiLCAidXJsIiwgIkNhcmRDdmNFbGVtZW50IiwgIkVsZW1lbnRUeXBlRW51bSIsICJDYXJkRWxlbWVudCIsICJDYXJkRXhwaXJ5RWxlbWVudCIsICJDYXJkTnVtYmVyRWxlbWVudCJdCn0K
|