@getopenpay/openpay-js-react 0.5.23 → 0.5.24
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/{Resource-BbfG5a66-AsShFT98.js → Resource-CkzRJFLK-DrakBOKi.js} +2 -2
- package/dist/{SimpleSpanProcessor-CM5q0wHj-BUlcI57c.js → SimpleSpanProcessor-CsKZmetr-7bolxekP.js} +7 -7
- package/dist/{detect-resources-CqCsW7xK-D-A1RnMC.js → detect-resources-Cbn1yeTm-BS8VwG8h.js} +6 -6
- package/dist/{diag-api-CzvVkila-BrhzjnZo.js → diag-api-DVkGgAmn-D-PvTcQE.js} +2 -2
- package/dist/{index-DiQUcavU-CTpyKgg0.js → index-B7CxIjD1-BxxbzKMR.js} +2 -2
- package/dist/{index-DO_cRFos-9GpEKj1u.js → index-BZhfdKBi-BNPQ0llZ.js} +2 -2
- package/dist/{index-CAC6iGLl-GNRrVLti.js → index-CSfMP6Kj-CtSF2v5c.js} +3 -3
- package/dist/{index-yMEqd4rV-BpvH7s66.js → index-ClnmWL0z-_K3B0iCN.js} +6 -6
- package/dist/{index-C7uVnZyY-BxTdT04B.js → index-CpNtjsp5-DvlNE7zh.js} +2 -2
- package/dist/{index-B1xIzTiC-DC3EC9tu.js → index-Cu_OtSzC-DnSePhWJ.js} +2 -2
- package/dist/{index-PXmAdiu6-BeK_Uj20.js → index-DCDsdYNg-OdVBUxEC.js} +5 -5
- package/dist/{index-1MTQ4FgH-B2lX4f9K.js → index-DRervXie-DX5FnDIf.js} +5 -5
- package/dist/{index-BYmX4ebO-Do0n25K0.js → index-FGM34aTH-O91OdbMB.js} +5 -5
- package/dist/{index-Cbd85L3O.js → index-vQf5w_NB.js} +17 -16
- package/dist/index.js +1 -1
- package/dist/{metrics-api-BxqY655w-COVx69tp.js → metrics-api-BLX8s64K-BhfsXJTs.js} +2 -2
- package/dist/{suppress-tracing-DuaWLOzf-CoqbmMhO.js → suppress-tracing-e5fAQV2c-CzUqEsrg.js} +2 -2
- package/dist/{url-SJ3UQ3b--zB9uxhpV.js → url-F6qLqPpe-B-2pUcwP.js} +2 -2
- package/dist/{utils-Cy3ixT1N-DMy2xkU0.js → utils-CN4slj5M-fMxML58J.js} +4 -4
- package/dist/{utils-CxI8q2_2-DM13a7Dc.js → utils-DDVteQnH-ByupavEF.js} +2 -2
- package/package.json +3 -3
|
@@ -6109,19 +6109,20 @@ const bp = ({
|
|
|
6109
6109
|
managementURL: new URL(`/pay/${t.token}`, ia).toString()
|
|
6110
6110
|
};
|
|
6111
6111
|
const r = t.line_items?.[0];
|
|
6112
|
-
if (r)
|
|
6113
|
-
|
|
6114
|
-
|
|
6115
|
-
|
|
6116
|
-
|
|
6117
|
-
|
|
6118
|
-
|
|
6119
|
-
|
|
6120
|
-
|
|
6121
|
-
|
|
6122
|
-
|
|
6123
|
-
|
|
6124
|
-
}
|
|
6112
|
+
if (!r) return;
|
|
6113
|
+
const o = r?.billing_interval === "week" ? "day" : r?.billing_interval, a = r?.billing_interval_count ? r?.billing_interval === "week" ? r?.billing_interval_count * 7 : r?.billing_interval_count : void 0;
|
|
6114
|
+
return {
|
|
6115
|
+
paymentDescription: r?.description ?? "",
|
|
6116
|
+
regularBilling: {
|
|
6117
|
+
amount: e.amount,
|
|
6118
|
+
label: r?.description ?? "",
|
|
6119
|
+
recurringPaymentIntervalUnit: o,
|
|
6120
|
+
recurringPaymentIntervalCount: a,
|
|
6121
|
+
paymentTiming: "recurring",
|
|
6122
|
+
type: "final"
|
|
6123
|
+
},
|
|
6124
|
+
managementURL: `https://cde.getopenpay.com/pay/${t.token}`
|
|
6125
|
+
};
|
|
6125
6126
|
}, Cr = ({
|
|
6126
6127
|
overridePaymentRequest: e,
|
|
6127
6128
|
initialPreview: t,
|
|
@@ -9311,7 +9312,7 @@ let no;
|
|
|
9311
9312
|
const gf = async (e, t) => {
|
|
9312
9313
|
if (typeof window > "u")
|
|
9313
9314
|
return;
|
|
9314
|
-
const r = await import("./index-
|
|
9315
|
+
const r = await import("./index-DCDsdYNg-OdVBUxEC.js"), { ConsoleSpanExporter: o, SimpleSpanProcessor: a, WebTracerProvider: i } = r, s = await import("./index-ClnmWL0z-_K3B0iCN.js"), { FetchInstrumentation: c } = s, l = await import("./index-Cu_OtSzC-DnSePhWJ.js"), { ZoneContextManager: u } = l, d = await import("./index-DRervXie-DX5FnDIf.js"), { registerInstrumentations: h } = d, _ = await import("./index-CpNtjsp5-DvlNE7zh.js"), { Resource: p } = _, f = await import("./detect-resources-Cbn1yeTm-BS8VwG8h.js").then((ft) => ft.d), { detectResourcesSync: y } = f, w = await import("./index-B7CxIjD1-BxxbzKMR.js"), { OTLPTraceExporter: g } = w, v = await import("./index-CSfMP6Kj-CtSF2v5c.js"), { B3Propagator: C, B3InjectEncoding: A } = v, x = await import("./index-BZhfdKBi-BNPQ0llZ.js"), { BatchSpanProcessor: j } = x;
|
|
9315
9316
|
Fr(`Initializing tracer with version ${e} and baseUrl ${t}`);
|
|
9316
9317
|
const me = wf(t);
|
|
9317
9318
|
Fr(`Using collector URL ${me}`);
|
|
@@ -9924,7 +9925,7 @@ const Pf = (e, t, r) => {
|
|
|
9924
9925
|
W()?.removeEventListener("message", this.eventHandler.handleMessage.bind(this.eventHandler)), Vu(), this.registeredElements = null, delete window.ojs, b("form_destroyed");
|
|
9925
9926
|
}, this.updateCallbacks = (a) => {
|
|
9926
9927
|
this.formCallbacks.setCallbacks(a);
|
|
9927
|
-
}, Wt.assignAsSingleton(this), this.ojsVersion = "0.5.
|
|
9928
|
+
}, Wt.assignAsSingleton(this), this.ojsVersion = "0.5.24", this.ojsReleaseVersion = "local_build", this.baseUrl = t.baseUrl ?? "https://cde.getopenpay.com", this.config = { ...t, baseUrl: this.baseUrl }, this.formCallbacks = af.fromObject(t), this.registeredElements = null, this.formId = `opjs-form-${Ke()}`, this.referrer = window.location.origin, this.formTarget = t.formTarget ?? "body", this.formProperties = { height: "1px" }, this.connectionManager = new Ef(), this.deviceToken = ua(), qu();
|
|
9928
9929
|
const { framework: r, version: o } = lf();
|
|
9929
9930
|
zo(this.baseUrl).then((a) => {
|
|
9930
9931
|
if (!Br.current.isSuccess) {
|
|
@@ -10127,4 +10128,4 @@ export {
|
|
|
10127
10128
|
et as x,
|
|
10128
10129
|
ld as y
|
|
10129
10130
|
};
|
|
10130
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDA3fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNvbm5lY3RUb0NoaWxkIH0gZnJvbSAncGVucGFsJztcbmltcG9ydCB7IHogYXMgeiQxIH0gZnJvbSAnem9kJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsganN4LCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZVN0YXRlLCB1c2VSZWYsIHVzZU1lbW8sIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuZnVuY3Rpb24gZml4UHJvdG8odGFyZ2V0LCBwcm90b3R5cGUpIHtcbiAgdmFyIHNldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mO1xuICBzZXRQcm90b3R5cGVPZiA/IHNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG90eXBlKSA6IHRhcmdldC5fX3Byb3RvX18gPSBwcm90b3R5cGU7XG59XG5mdW5jdGlvbiBmaXhTdGFjayh0YXJnZXQsIGZuKSB7XG4gIGlmIChmbiA9PT0gdm9pZCAwKSB7XG4gICAgZm4gPSB0YXJnZXQuY29uc3RydWN0b3I7XG4gIH1cblxuICB2YXIgY2FwdHVyZVN0YWNrVHJhY2UgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcbiAgY2FwdHVyZVN0YWNrVHJhY2UgJiYgY2FwdHVyZVN0YWNrVHJhY2UodGFyZ2V0LCBmbik7XG59XG5cbnZhciBfX2V4dGVuZHMkMSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbihmdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyQxKEN1c3RvbUVycm9yLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIEN1c3RvbUVycm9yKG1lc3NhZ2UsIG9wdGlvbnMpIHtcbiAgICB2YXIgX25ld1RhcmdldCA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBtZXNzYWdlLCBvcHRpb25zKSB8fCB0aGlzO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF90aGlzLCAnbmFtZScsIHtcbiAgICAgIHZhbHVlOiBfbmV3VGFyZ2V0Lm5hbWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGZpeFByb3RvKF90aGlzLCBfbmV3VGFyZ2V0LnByb3RvdHlwZSk7XG4gICAgZml4U3RhY2soX3RoaXMpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHJldHVybiBDdXN0b21FcnJvcjtcbn0pKEVycm9yKTtcblxuY29uc3QgUmVxdWlyZWRTdHJpbmcgPSB6JDEuc3RyaW5nKCkudHJpbSgpLm1pbigxLCB7IG1lc3NhZ2U6IGBQbGVhc2UgZmlsbCBpbiB0aGlzIGZpZWxkYCB9KTtcbmNvbnN0IE9wdGlvbmFsU3RyaW5nID0geiQxLnN0cmluZygpLnRyaW0oKS5vcHRpb25hbCgpO1xuY29uc3QgbnVsbE9yVW5kZWZPciQxID0gKHpUeXBlKSA9PiB6JDEubnVsbGFibGUoelR5cGUub3B0aW9uYWwoKSk7XG52YXIgRmllbGROYW1lID0gLyogQF9fUFVSRV9fICovICgoRmllbGROYW1lMikgPT4ge1xuICBGaWVsZE5hbWUyW1wiRklSU1RfTkFNRVwiXSA9IFwiZmlyc3ROYW1lXCI7XG4gIEZpZWxkTmFtZTJbXCJMQVNUX05BTUVcIl0gPSBcImxhc3ROYW1lXCI7XG4gIEZpZWxkTmFtZTJbXCJQSE9ORVwiXSA9IFwicGhvbmVcIjtcbiAgRmllbGROYW1lMltcIkVNQUlMXCJdID0gXCJlbWFpbFwiO1xuICBGaWVsZE5hbWUyW1wiTElORTFcIl0gPSBcImxpbmUxXCI7XG4gIEZpZWxkTmFtZTJbXCJMSU5FMlwiXSA9IFwibGluZTJcIjtcbiAgRmllbGROYW1lMltcIkxJTkUzXCJdID0gXCJsaW5lM1wiO1xuICBGaWVsZE5hbWUyW1wiQ0lUWVwiXSA9IFwiY2l0eVwiO1xuICBGaWVsZE5hbWUyW1wiU1RBVEVcIl0gPSBcInN0YXRlXCI7XG4gIEZpZWxkTmFtZTJbXCJDT1VOVFJZXCJdID0gXCJjb3VudHJ5XCI7XG4gIEZpZWxkTmFtZTJbXCJaSVBfQ09ERVwiXSA9IFwiemlwQ29kZVwiO1xuICBGaWVsZE5hbWUyW1wiU0hJUFBJTkdfTElORTFcIl0gPSBcInNoaXBwaW5nQWRkcmVzc0xpbmUxXCI7XG4gIEZpZWxkTmFtZTJbXCJTSElQUElOR19MSU5FMlwiXSA9IFwic2hpcHBpbmdBZGRyZXNzTGluZTJcIjtcbiAgRmllbGROYW1lMltcIlNISVBQSU5HX0xJTkUzXCJdID0gXCJzaGlwcGluZ0FkZHJlc3NMaW5lM1wiO1xuICBGaWVsZE5hbWUyW1wiU0hJUFBJTkdfQ0lUWVwiXSA9IFwic2hpcHBpbmdBZGRyZXNzQ2l0eVwiO1xuICBGaWVsZE5hbWUyW1wiU0hJUFBJTkdfU1RBVEVcIl0gPSBcInNoaXBwaW5nQWRkcmVzc1N0YXRlXCI7XG4gIEZpZWxkTmFtZTJbXCJTSElQUElOR19DT1VOVFJZXCJdID0gXCJzaGlwcGluZ0FkZHJlc3NDb3VudHJ5XCI7XG4gIEZpZWxkTmFtZTJbXCJTSElQUElOR19aSVBfQ09ERVwiXSA9IFwic2hpcHBpbmdBZGRyZXNzWmlwQ29kZVwiO1xuICBGaWVsZE5hbWUyW1wiSVNfU0hJUFBJTkdfU0FNRV9BU19CSUxMSU5HXCJdID0gXCJpc1NoaXBwaW5nU2FtZUFzQmlsbGluZ1wiO1xuICBGaWVsZE5hbWUyW1wiUFJPTU9USU9OX0NPREVcIl0gPSBcInByb21vdGlvbkNvZGVcIjtcbiAgRmllbGROYW1lMltcIklTX0JVU0lORVNTX1BVUkNIQVNFXCJdID0gXCJpc0J1c2luZXNzUHVyY2hhc2VcIjtcbiAgRmllbGROYW1lMltcIkJVU0lORVNTX05BTUVcIl0gPSBcImJ1c2luZXNzTmFtZVwiO1xuICBGaWVsZE5hbWUyW1wiVEFYX0lEXCJdID0gXCJ0YXhJZFwiO1xuICBGaWVsZE5hbWUyW1wiVEFYX0lEX1RZUEVcIl0gPSBcInRheElkVHlwZVwiO1xuICByZXR1cm4gRmllbGROYW1lMjtcbn0pKEZpZWxkTmFtZSB8fCB7fSk7XG5jb25zdCBGaWVsZE5hbWVFbnVtID0geiQxLm5hdGl2ZUVudW0oRmllbGROYW1lKTtcbnZhciBQcml2YXRlRmllbGROYW1lID0gLyogQF9fUFVSRV9fICovICgoUHJpdmF0ZUZpZWxkTmFtZTIpID0+IHtcbiAgUHJpdmF0ZUZpZWxkTmFtZTJbXCJDQVJEX05VTUJFUlwiXSA9IFwiY2FyZE51bWJlclwiO1xuICBQcml2YXRlRmllbGROYW1lMltcIkNBUkRfRVhQSVJZXCJdID0gXCJjYXJkRXhwaXJ5XCI7XG4gIFByaXZhdGVGaWVsZE5hbWUyW1wiQ0FSRF9DVkNcIl0gPSBcImNhcmRDdmNcIjtcbiAgcmV0dXJuIFByaXZhdGVGaWVsZE5hbWUyO1xufSkoUHJpdmF0ZUZpZWxkTmFtZSB8fCB7fSk7XG5jb25zdCBQcml2YXRlRmllbGROYW1lRW51bSA9IHokMS5uYXRpdmVFbnVtKFByaXZhdGVGaWVsZE5hbWUpO1xuY29uc3QgQWxsRmllbGROYW1lcyA9IHokMS51bmlvbihbRmllbGROYW1lRW51bSwgUHJpdmF0ZUZpZWxkTmFtZUVudW1dKTtcbnZhciBFbGVtZW50VHlwZUVudW0gPSAvKiBAX19QVVJFX18gKi8gKChFbGVtZW50VHlwZUVudW0yKSA9PiB7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEXCJdID0gXCJjYXJkXCI7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEX05VTUJFUlwiXSA9IFwiY2FyZC1udW1iZXJcIjtcbiAgRWxlbWVudFR5cGVFbnVtMltcIkNBUkRfRVhQSVJZXCJdID0gXCJjYXJkLWV4cGlyeVwiO1xuICBFbGVtZW50VHlwZUVudW0yW1wiQ0FSRF9DVkNcIl0gPSBcImNhcmQtY3ZjXCI7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDREVfQlJJREdFXCJdID0gXCJjZGUtYnJpZGdlXCI7XG4gIHJldHVybiBFbGVtZW50VHlwZUVudW0yO1xufSkoRWxlbWVudFR5cGVFbnVtIHx8IHt9KTtcbnokMS5lbnVtKFtcImNhcmRcIiwgXCJjYXJkLW51bWJlclwiLCBcImNhcmQtZXhwaXJ5XCIsIFwiY2FyZC1jdmNcIiwgXCJjZGUtYnJpZGdlXCJdKTtcbmNvbnN0IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIHByb2Nlc3Nvcl9uYW1lOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgbWV0YWRhdGE6IG51bGxPclVuZGVmT3IkMSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgUGF5bWVudE1ldGhvZE1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBCYXNlRWxlbWVudHNTdHlsZSA9IHokMS5vYmplY3Qoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IE9wdGlvbmFsU3RyaW5nLFxuICBjb2xvcjogT3B0aW9uYWxTdHJpbmcsXG4gIGZvbnRGYW1pbHk6IE9wdGlvbmFsU3RyaW5nLFxuICBmb250U2l6ZTogT3B0aW9uYWxTdHJpbmcsXG4gIGZvbnRXZWlnaHQ6IE9wdGlvbmFsU3RyaW5nLFxuICBtYXJnaW46IE9wdGlvbmFsU3RyaW5nLFxuICBwYWRkaW5nOiBPcHRpb25hbFN0cmluZyxcbiAgbGV0dGVyU3BhY2luZzogT3B0aW9uYWxTdHJpbmcsXG4gIGxpbmVIZWlnaHQ6IE9wdGlvbmFsU3RyaW5nLFxuICBoaWRlSWNvbjogT3B0aW9uYWxTdHJpbmcsXG4gIHBsYWNlaG9sZGVyU3R5bGU6IHokMS5vYmplY3Qoe1xuICAgIGNvbG9yOiBPcHRpb25hbFN0cmluZyxcbiAgICBmb250U2l6ZTogT3B0aW9uYWxTdHJpbmcsXG4gICAgZm9udFdlaWdodDogT3B0aW9uYWxTdHJpbmcsXG4gICAgZm9udEZhbWlseTogT3B0aW9uYWxTdHJpbmcsXG4gICAgbGV0dGVyU3BhY2luZzogT3B0aW9uYWxTdHJpbmcsXG4gICAgbGluZUhlaWdodDogT3B0aW9uYWxTdHJpbmdcbiAgfSkub3B0aW9uYWwoKVxufSk7XG5CYXNlRWxlbWVudHNTdHlsZS5leHRlbmQoe1xuICBkaXNhYmxlQXV0b0ZpbGw6IE9wdGlvbmFsU3RyaW5nLFxuICBwbGFjZWhvbGRlcjogeiQxLm9iamVjdCh7XG4gICAgY2FyZE51bWJlcjogT3B0aW9uYWxTdHJpbmcsXG4gICAgZXhwaXJ5OiBPcHRpb25hbFN0cmluZyxcbiAgICBjdmM6IE9wdGlvbmFsU3RyaW5nXG4gIH0pLm9wdGlvbmFsKClcbn0pO1xuQmFzZUVsZW1lbnRzU3R5bGUuZXh0ZW5kKHtcbiAgZGlzYWJsZUF1dG9GaWxsOiBPcHRpb25hbFN0cmluZyxcbiAgcGxhY2Vob2xkZXI6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAvKipcbiAgICogVGhlIGNhcmQgaWNvbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGNhcmQgbnVtYmVyIGlucHV0IGZpZWxkXG4gICAqIEl0IHdvbid0IGFmZmVjdCBhZnRlciB0aGUgaWNvbiBjaGFuZ2VkIHRvIGNhcmQgYnJhbmQgYWZ0ZXIgdGhlIHVzZXIgaW5wdXQgdGhlIGNhcmQgbnVtYmVyXG4gICAqL1xuICBpY29uOiB6JDEub2JqZWN0KHtcbiAgICBjb2xvcjogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbiAgfSkub3B0aW9uYWwoKVxufSk7XG5CYXNlRWxlbWVudHNTdHlsZS5leHRlbmQoe1xuICBkaXNhYmxlQXV0b0ZpbGw6IE9wdGlvbmFsU3RyaW5nLFxuICBwbGFjZWhvbGRlcjogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuQmFzZUVsZW1lbnRzU3R5bGUuZXh0ZW5kKHtcbiAgZGlzYWJsZUF1dG9GaWxsOiBPcHRpb25hbFN0cmluZyxcbiAgcGxhY2Vob2xkZXI6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IEV2ZW50VHlwZSA9IHokMS5lbnVtKFtcbiAgLy8gRWxlbWVudCAtPiBGb3JtXG4gIFwiTEFZT1VUXCIsXG4gIFwiTE9BREVEXCIsXG4gIFwiQkxVUlwiLFxuICBcIkZPQ1VTXCIsXG4gIFwiQ0hBTkdFXCIsXG4gIFwiVE9LRU5JWkVfU1RBUlRFRFwiLFxuICBcIkNIRUNLT1VUX1NUQVJURURcIixcbiAgXCJQQVlNRU5UX0ZMT1dfU1RBUlRFRFwiLFxuICBcIlRPS0VOSVpFX1NVQ0NFU1NcIixcbiAgXCJDSEVDS09VVF9TVUNDRVNTXCIsXG4gIFwiTE9BRF9FUlJPUlwiLFxuICBcIlZBTElEQVRJT05fRVJST1JcIixcbiAgXCJUT0tFTklaRV9FUlJPUlwiLFxuICBcIkNIRUNLT1VUX0VSUk9SXCIsXG4gIFwiU0VUVVBfUEFZTUVOVF9NRVRIT0RfU1VDQ0VTU1wiLFxuICAvLyBGb3JtIC0+IEVsZW1lbnRcbiAgXCJUT0tFTklaRVwiLFxuICBcIkNIRUNLT1VUXCIsXG4gIFwiU1RBUlRfUEFZTUVOVF9GTE9XXCJcbl0pO1xuY29uc3QgR2VuZXJpY0V2ZW50VHlwZSA9IEV2ZW50VHlwZS5leHRyYWN0KFtcIlRPS0VOSVpFX1NUQVJURURcIiwgXCJDSEVDS09VVF9TVEFSVEVEXCJdKTtcbmNvbnN0IEdlbmVyaWNFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHsgdHlwZTogR2VuZXJpY0V2ZW50VHlwZSB9KTtcbmNvbnN0IElucHV0RXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiQkxVUlwiLCBcIkZPQ1VTXCIsIFwiQ0hBTkdFXCJdKTtcbmNvbnN0IElucHV0RXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IElucHV0RXZlbnRUeXBlLFxuICBlbGVtZW50VHlwZTogUHJpdmF0ZUZpZWxkTmFtZUVudW0sXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgb2JmdXNjYXRlZFZhbHVlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBFcnJvckV2ZW50VHlwZSA9IEV2ZW50VHlwZS5leHRyYWN0KFtcIkxPQURfRVJST1JcIiwgXCJUT0tFTklaRV9FUlJPUlwiLCBcIkNIRUNLT1VUX0VSUk9SXCJdKTtcbmNvbnN0IEVycm9yRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IEVycm9yRXZlbnRUeXBlLFxuICBtZXNzYWdlOiBSZXF1aXJlZFN0cmluZyxcbiAgaGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUgPSBFdmVudFR5cGUuZXh0cmFjdChbXCJWQUxJREFUSU9OX0VSUk9SXCJdKTtcbmNvbnN0IFZhbGlkYXRpb25FcnJvckV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUsXG4gIGVsZW1lbnRUeXBlOiBBbGxGaWVsZE5hbWVzLFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbmNvbnN0IExheW91dEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5MQVlPVVQpLFxuICBoZWlnaHQ6IFJlcXVpcmVkU3RyaW5nXG59KTtcbmNvbnN0IExvYWRlZEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5MT0FERUQpLFxuICBzZXNzaW9uSWQ6IFJlcXVpcmVkU3RyaW5nLFxuICB0b3RhbEFtb3VudEF0b21zOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiBPcHRpb25hbFN0cmluZyxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kczogeiQxLmFycmF5KENoZWNrb3V0UGF5bWVudE1ldGhvZCQxKVxufSk7XG5jb25zdCBQYXltZW50Rmxvd1N0YXJ0ZWRFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uUEFZTUVOVF9GTE9XX1NUQVJURUQpLFxuICBuZXh0QWN0aW9uTWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBwYXltZW50Rmxvd01ldGFkYXRhOiB6JDEuYW55KCkub3B0aW9uYWwoKSxcbiAgc3RhcnRQRk1ldGFkYXRhOiB6JDEub3B0aW9uYWwoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbmNvbnN0IFNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLlNFVFVQX1BBWU1FTlRfTUVUSE9EX1NVQ0NFU1MpLFxuICBwYXltZW50TWV0aG9kSWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBSZXF1aXJlZEZvcm1GaWVsZHMgPSB6JDEub2JqZWN0KHtcbiAgW1wiZW1haWxcIiAvKiBFTUFJTCAqL106IFJlcXVpcmVkU3RyaW5nLmVtYWlsKHsgbWVzc2FnZTogXCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzXCIgfSksXG4gIFtcImZpcnN0TmFtZVwiIC8qIEZJUlNUX05BTUUgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wibGFzdE5hbWVcIiAvKiBMQVNUX05BTUUgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wicGhvbmVcIiAvKiBQSE9ORSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJwcm9tb3Rpb25Db2RlXCIgLyogUFJPTU9USU9OX0NPREUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wibGluZTFcIiAvKiBMSU5FMSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJsaW5lMlwiIC8qIExJTkUyICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImxpbmUzXCIgLyogTElORTMgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wiY2l0eVwiIC8qIENJVFkgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wic3RhdGVcIiAvKiBTVEFURSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJjb3VudHJ5XCIgLyogQ09VTlRSWSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJ6aXBDb2RlXCIgLyogWklQX0NPREUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wiaXNTaGlwcGluZ1NhbWVBc0JpbGxpbmdcIiAvKiBJU19TSElQUElOR19TQU1FX0FTX0JJTExJTkcgKi9dOiB6JDEuY3VzdG9tKCkub3B0aW9uYWwoKS5kZWZhdWx0KHRydWUpLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NMaW5lMVwiIC8qIFNISVBQSU5HX0xJTkUxICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInNoaXBwaW5nQWRkcmVzc0xpbmUyXCIgLyogU0hJUFBJTkdfTElORTIgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzTGluZTNcIiAvKiBTSElQUElOR19MSU5FMyAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NDaXR5XCIgLyogU0hJUFBJTkdfQ0lUWSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NTdGF0ZVwiIC8qIFNISVBQSU5HX1NUQVRFICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInNoaXBwaW5nQWRkcmVzc0NvdW50cnlcIiAvKiBTSElQUElOR19DT1VOVFJZICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInNoaXBwaW5nQWRkcmVzc1ppcENvZGVcIiAvKiBTSElQUElOR19aSVBfQ09ERSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJidXNpbmVzc05hbWVcIiAvKiBCVVNJTkVTU19OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInRheElkXCIgLyogVEFYX0lEICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInRheElkVHlwZVwiIC8qIFRBWF9JRF9UWVBFICovXTogT3B0aW9uYWxTdHJpbmdcbn0pO1xuY29uc3QgUFJGb3JtRmllbGRzID0geiQxLm9iamVjdCh7XG4gIFtcImVtYWlsXCIgLyogRU1BSUwgKi9dOiBSZXF1aXJlZFN0cmluZy5lbWFpbCh7IG1lc3NhZ2U6IFwiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiIH0pLFxuICBbXCJmaXJzdE5hbWVcIiAvKiBGSVJTVF9OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImxhc3ROYW1lXCIgLyogTEFTVF9OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInBob25lXCIgLyogUEhPTkUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wicHJvbW90aW9uQ29kZVwiIC8qIFBST01PVElPTl9DT0RFICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImxpbmUxXCIgLyogTElORTEgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wibGluZTJcIiAvKiBMSU5FMiAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJsaW5lM1wiIC8qIExJTkUzICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImNpdHlcIiAvKiBDSVRZICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInN0YXRlXCIgLyogU1RBVEUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wiY291bnRyeVwiIC8qIENPVU5UUlkgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wiemlwQ29kZVwiIC8qIFpJUF9DT0RFICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImlzU2hpcHBpbmdTYW1lQXNCaWxsaW5nXCIgLyogSVNfU0hJUFBJTkdfU0FNRV9BU19CSUxMSU5HICovXTogeiQxLmN1c3RvbSgpLm9wdGlvbmFsKCkuZGVmYXVsdCh0cnVlKSxcbiAgW1wic2hpcHBpbmdBZGRyZXNzTGluZTFcIiAvKiBTSElQUElOR19MSU5FMSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NMaW5lMlwiIC8qIFNISVBQSU5HX0xJTkUyICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInNoaXBwaW5nQWRkcmVzc0xpbmUzXCIgLyogU0hJUFBJTkdfTElORTMgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzQ2l0eVwiIC8qIFNISVBQSU5HX0NJVFkgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzU3RhdGVcIiAvKiBTSElQUElOR19TVEFURSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NDb3VudHJ5XCIgLyogU0hJUFBJTkdfQ09VTlRSWSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NaaXBDb2RlXCIgLyogU0hJUFBJTkdfWklQX0NPREUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wiYnVzaW5lc3NOYW1lXCIgLyogQlVTSU5FU1NfTkFNRSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJ0YXhJZFwiIC8qIFRBWF9JRCAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJ0YXhJZFR5cGVcIiAvKiBUQVhfSURfVFlQRSAqL106IE9wdGlvbmFsU3RyaW5nXG59KTtcbnokMS5vYmplY3Qoe1xuICBbXCJsaW5lMVwiIC8qIExJTkUxICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImNpdHlcIiAvKiBDSVRZICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcInN0YXRlXCIgLyogU1RBVEUgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wiY291bnRyeVwiIC8qIENPVU5UUlkgKi9dOiBSZXF1aXJlZFN0cmluZ1xufSk7XG56JDEub2JqZWN0KHtcbiAgW1wic2hpcHBpbmdBZGRyZXNzQ291bnRyeVwiIC8qIFNISVBQSU5HX0NPVU5UUlkgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzWmlwQ29kZVwiIC8qIFNISVBQSU5HX1pJUF9DT0RFICovXTogUmVxdWlyZWRTdHJpbmdcbn0pO1xueiQxLm9iamVjdCh7XG4gIFtcInNoaXBwaW5nQWRkcmVzc0xpbmUxXCIgLyogU0hJUFBJTkdfTElORTEgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzQ2l0eVwiIC8qIFNISVBQSU5HX0NJVFkgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzU3RhdGVcIiAvKiBTSElQUElOR19TVEFURSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NDb3VudHJ5XCIgLyogU0hJUFBJTkdfQ09VTlRSWSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NaaXBDb2RlXCIgLyogU0hJUFBJTkdfWklQX0NPREUgKi9dOiBSZXF1aXJlZFN0cmluZ1xufSk7XG5jb25zdCBTdWJtaXRFdmVudFR5cGUgPSBFdmVudFR5cGUuZXh0cmFjdChbXCJUT0tFTklaRVwiLCBcIkNIRUNLT1VUXCIsIFwiU1RBUlRfUEFZTUVOVF9GTE9XXCJdKTtcbmNvbnN0IFN1Ym1pdEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBTdWJtaXRFdmVudFR5cGUsXG4gIHNlc3Npb25JZDogUmVxdWlyZWRTdHJpbmcsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEsXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBkb05vdFVzZUxlZ2FjeUNDRmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBleGlzdGluZ0NDUE1JZDogT3B0aW9uYWxTdHJpbmcsXG4gIHBheW1lbnRSb3V0ZUlkOiBPcHRpb25hbFN0cmluZ1xufSkuZXh0ZW5kKFJlcXVpcmVkRm9ybUZpZWxkcy5zaGFwZSk7XG5jb25zdCBUb2tlbml6ZVN1Y2Nlc3NFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uVE9LRU5JWkVfU1VDQ0VTUyksXG4gIGlzUmVhZHlGb3JDaGVja291dDogeiQxLmJvb2xlYW4oKVxufSk7XG5jb25zdCBDaGVja291dFN1Y2Nlc3NFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uQ0hFQ0tPVVRfU1VDQ0VTUyksXG4gIGludm9pY2VVcmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uSWRzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJJZDogeiQxLnN0cmluZygpLFxuICBwYXltZW50TWV0aG9kSWQ6IE9wdGlvbmFsU3RyaW5nXG59KTtcbmNvbnN0IEV2ZW50UGF5bG9hZCA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgR2VuZXJpY0V2ZW50UGF5bG9hZCxcbiAgSW5wdXRFdmVudFBheWxvYWQsXG4gIEVycm9yRXZlbnRQYXlsb2FkLFxuICBWYWxpZGF0aW9uRXJyb3JFdmVudFBheWxvYWQsXG4gIExheW91dEV2ZW50UGF5bG9hZCxcbiAgTG9hZGVkRXZlbnRQYXlsb2FkLFxuICBTdWJtaXRFdmVudFBheWxvYWQsXG4gIFRva2VuaXplU3VjY2Vzc0V2ZW50UGF5bG9hZCxcbiAgQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkLFxuICBQYXltZW50Rmxvd1N0YXJ0ZWRFdmVudFBheWxvYWQsXG4gIFNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkXG5dKTtcbnokMS5vYmplY3Qoe1xuICBwYXlsb2FkOiBFdmVudFBheWxvYWQsXG4gIG5vbmNlOiBSZXF1aXJlZFN0cmluZyxcbiAgZm9ybUlkOiBSZXF1aXJlZFN0cmluZyxcbiAgZWxlbWVudElkOiBSZXF1aXJlZFN0cmluZ1xufSk7XG56JDEub2JqZWN0KHtcbiAgYW1vdW50QXRvbTogeiQxLm51bWJlcigpLFxuICAvKipcbiAgICogVGhlIHRocmVlLWxldHRlciBJU08gNDIxNyBjdXJyZW5jeSBjb2RlIGZvciB0aGUgcGF5bWVudC5cbiAgICovXG4gIGN1cnJlbmN5OiBSZXF1aXJlZFN0cmluZ1xufSk7XG56JDEuZW51bShbXCJhcHBsZV9wYXlcIiwgXCJnb29nbGVfcGF5XCJdKTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICB0aGVpcl9wbV9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IG51bGxPclVuZGVmT3IkMSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgQ2hlY2tvdXRTdWNjZXNzUmVzcG9uc2UgPSB6JDEub2JqZWN0KHtcbiAgaW52b2ljZV91cmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uX2lkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2lkOiB6JDEuc3RyaW5nKCksXG4gIHBheW1lbnRfbWV0aG9kX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgcHJvY2Vzc29yc191c2VkOiBudWxsT3JVbmRlZk9yJDEoeiQxLmFycmF5KHokMS5zdHJpbmcoKSkpXG59KTtcbmNvbnN0IEZpZWxkVmFsaWRhdGlvbkVycm9yID0geiQxLm9iamVjdCh7XG4gIGVsZW1lbnRUeXBlOiB6JDEuc3RyaW5nKCksXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBUb2tlbml6ZUNhcmRFcnJvclJlc3BvbnNlID0geiQxLm9iamVjdCh7XG4gIHN1Y2Nlc3M6IHokMS5saXRlcmFsKGZhbHNlKSxcbiAgZXJyb3JfdHlwZTogeiQxLmxpdGVyYWwoXCJ2YWxpZGF0aW9uX2Vycm9yXCIpLFxuICBlcnJvcnM6IHokMS5hcnJheShGaWVsZFZhbGlkYXRpb25FcnJvcilcbn0pO1xueiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInN1Y2Nlc3NcIiwgW1xuICB6JDEub2JqZWN0KHsgc3VjY2VzczogeiQxLmxpdGVyYWwodHJ1ZSkgfSksXG4gIFRva2VuaXplQ2FyZEVycm9yUmVzcG9uc2Vcbl0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxLFxuICBub25fY2RlX2Zvcm1fZmllbGRzOiBSZXF1aXJlZEZvcm1GaWVsZHMsXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBleHRyYV9tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gIHBheW1lbnRfcm91dGVfaWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBjdXN0b21lcl9sYW5ndWFnZTogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxLFxuICBub25fY2RlX2Zvcm1fZmllbGRzOiBSZXF1aXJlZEZvcm1GaWVsZHMsXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJfbGFuZ3VhZ2U6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5lbnVtKFtcInN1Y2Nlc3NcIiAvKiBTVUNDRVNTICovLCBcImZhaWx1cmVcIiAvKiBGQUlMVVJFICovLCBcImNhbmNlbGxlZFwiIC8qIENBTkNFTExFRCAqL10pLFxuICBocmVmOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpXG59KTtcbnokMS5vYmplY3Qoe1xuICBocmVmOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpXG59KTtcbnokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogeiQxLnN0cmluZygpLFxuICBpbml0aWFsX2ludGVudF9pZDogeiQxLnN0cmluZygpLFxuICBjb25zZW50X2lkOiB6JDEuc3RyaW5nKCksXG4gIHRoZWlyX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBBV1hCYW5rID0geiQxLm9iamVjdCh7XG4gIGJhbmtfbmFtZTogeiQxLnN0cmluZygpLFxuICBkaXNwbGF5X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgcmVzb3VyY2VzOiB6JDEub2JqZWN0KHtcbiAgICBsb2dvX3VybDogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbiAgfSlcbn0pO1xuY29uc3QgQ29tbW9uTmV4dEFjdGlvbk1ldGFkYXRhID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgcmVkaXJlY3RfdXJsOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgaW5pdGlhbF9pbnRlbnRfaWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBjb25zZW50X2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3Nlc3Npb246IG51bGxPclVuZGVmT3IkMSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSksXG4gIGF2YWlsYWJsZV9iYW5rczogbnVsbE9yVW5kZWZPciQxKHokMS5hcnJheShBV1hCYW5rKSlcbn0pO1xueiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwodHJ1ZSksIGhyZWY6IHokMS5zdHJpbmcoKSB9KSxcbiAgeiQxLm9iamVjdCh7IHByZXNlbnQ6IHokMS5saXRlcmFsKGZhbHNlKSB9KVxuXSk7XG56JDEub2JqZWN0KHtcbiAgcGF5bWVudF9tZXRob2RzOiB6JDEuYXJyYXkoUGF5bWVudE1ldGhvZE1pbmltYWwpLFxuICBwYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZTogbnVsbE9yVW5kZWZPciQxKENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlKSxcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiBudWxsT3JVbmRlZk9yJDEoeiQxLmFycmF5KENvbW1vbk5leHRBY3Rpb25NZXRhZGF0YSkpLFxuICBwb3N0X2NoZWNrb3V0X3JlZGlyZWN0X3RvOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgY2hlY2tvdXRfc3VjY2Vzc19yZXNwb25zZTogbnVsbE9yVW5kZWZPciQxKENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlKVxufSk7XG5jb25zdCBFRlRGb3JtRGF0YSA9IHokMS5vYmplY3Qoe1xuICBpbnN0aXR1dGlvbk51bWJlcjogeiQxLnN0cmluZygpLFxuICB0cmFuc2l0TnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIGFjY291bnROdW1iZXI6IHokMS5zdHJpbmcoKSxcbiAgYWNjb3VudFR5cGU6IHokMS5lbnVtKFtcInBlcnNvbmFsXCIsIFwiYnVzaW5lc3NcIl0pXG59KTtcbnokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5lbnVtKFtcInN1Y2Nlc3NcIiwgXCJmYWlsdXJlXCJdKSxcbiAgcGF5bG9hZDogRUZURm9ybURhdGEub3B0aW9uYWwoKVxufSk7XG5jb25zdCBCQUNTRm9ybURhdGEgPSB6JDEub2JqZWN0KHtcbiAgc29ydENvZGU6IHokMS5zdHJpbmcoKSxcbiAgYWNjb3VudE51bWJlcjogeiQxLnN0cmluZygpLFxuICBhY2NvdW50VHlwZTogeiQxLmVudW0oW1wicGVyc29uYWxcIiwgXCJidXNpbmVzc1wiXSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmVudW0oW1wic3VjY2Vzc1wiLCBcImZhaWx1cmVcIl0pLFxuICBwYXlsb2FkOiBCQUNTRm9ybURhdGEub3B0aW9uYWwoKVxufSk7XG5jb25zdCBTRVBBRm9ybURhdGEgPSB6JDEub2JqZWN0KHtcbiAgaWJhbjogeiQxLnN0cmluZygpLFxuICBhY2NvdW50VHlwZTogeiQxLmVudW0oW1wicGVyc29uYWxcIiwgXCJidXNpbmVzc1wiXSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmVudW0oW1wic3VjY2Vzc1wiLCBcImZhaWx1cmVcIl0pLFxuICBwYXlsb2FkOiBTRVBBRm9ybURhdGEub3B0aW9uYWwoKVxufSk7XG5jb25zdCBBQ0hNaWNyb0RlcG9zaXRGb3JtRGF0YSA9IHokMS5vYmplY3Qoe1xuICBhY2NvdW50X251bWJlcjogeiQxLnN0cmluZygpLFxuICBhYmFfcm91dGluZ19udW1iZXI6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBFRlRNaWNyb0RlcG9zaXRGb3JtRGF0YSA9IHokMS5vYmplY3Qoe1xuICBpbnN0aXR1dGlvbl9udW1iZXI6IHokMS5zdHJpbmcoKSxcbiAgdHJhbnNpdF9udW1iZXI6IHokMS5zdHJpbmcoKSxcbiAgYWNjb3VudF9udW1iZXI6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBCQUNTTWljcm9EZXBvc2l0Rm9ybURhdGEgPSB6JDEub2JqZWN0KHtcbiAgYWNjb3VudF9udW1iZXI6IHokMS5zdHJpbmcoKSxcbiAgc29ydF9jb2RlOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgU0VQQU1pY3JvRGVwb3NpdEZvcm1EYXRhID0geiQxLm9iamVjdCh7XG4gIGliYW46IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXCJzdWNjZXNzXCIsIFwiZmFpbHVyZVwiXSksXG4gIHBheWxvYWQ6IHokMS51bmlvbihbXG4gICAgQUNITWljcm9EZXBvc2l0Rm9ybURhdGEsXG4gICAgRUZUTWljcm9EZXBvc2l0Rm9ybURhdGEsXG4gICAgQkFDU01pY3JvRGVwb3NpdEZvcm1EYXRhLFxuICAgIFNFUEFNaWNyb0RlcG9zaXRGb3JtRGF0YSxcbiAgICB6JDEub2JqZWN0KHsgZXJyb3I6IHokMS5zdHJpbmcoKSB9KVxuICBdKS5vcHRpb25hbCgpXG59KTtcblxuY29uc3QgbnVsbE9yVW5kZWZPciA9ICh6VHlwZSkgPT4geiQxLm51bGxhYmxlKHpUeXBlLm9wdGlvbmFsKCkpO1xueiQxLnN0cmluZygpLnRyaW0oKS5taW4oMSwgeyBtZXNzYWdlOiBgQ2Fubm90IGJlIGJsYW5rYCB9KTtcbnokMS5vYmplY3Qoe1xuICBjZGVfcmVzcG9uc2VfdHlwZTogeiQxLmxpdGVyYWwoXCJlcnJvclwiKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbnokMS5lbnVtKFtcInVzZFwiLCBcImJybFwiXSk7XG5jb25zdCBDb3Vwb25NaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgYW1vdW50X2F0b21fb2ZmOiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKSksXG4gIHBlcmNlbnRfb2ZmOiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKSksXG4gIGN1cnJlbmN5OiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGR1cmF0aW9uOiB6JDEuc3RyaW5nKCksXG4gIGR1cmF0aW9uX2luX21vbnRoczogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkpXG59KTtcbmNvbnN0IExpbmVJdGVtID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9zdWJ0b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGFtb3VudF90b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHByaWNlX2lkOiB6JDEuc3RyaW5nKCksXG4gIGJpbGxpbmdfaW50ZXJ2YWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbF9jb3VudDogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkuaW50KCkpLFxuICBxdWFudGl0eTogeiQxLm51bWJlcigpLmludCgpXG59KTtcbmNvbnN0IEJyYW5kU2V0dGluZ3MgPSB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKTtcbmNvbnN0IEJyYW5kID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgc2V0dGluZ3M6IG51bGxPclVuZGVmT3IoQnJhbmRTZXR0aW5ncylcbn0pO1xuY29uc3QgQ2hlY2tvdXRQYXltZW50TWV0aG9kID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIHByb2Nlc3Nvcl9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIG1ldGFkYXRhOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBTdWJzY3JpcHRpb25JdGVtTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBxdWFudGl0eTogeiQxLm51bWJlcigpXG59KTtcbmNvbnN0IFN1YnNjcmlwdGlvbk1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgaWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsX2NvdW50OiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKS5pbnQoKSksXG4gIHN1YnNjcmlwdGlvbl9pdGVtczogeiQxLmFycmF5KFN1YnNjcmlwdGlvbkl0ZW1NaW5pbWFsKSxcbiAgdHJpYWxfc3RhcnQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdHJpYWxfZW5kOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgSW52b2ljZUl0ZW1EaXNjb3VudEFtb3VudHNNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9hdG9tOiB6JDEubnVtYmVyKClcbn0pO1xuY29uc3QgSW52b2ljZUxpbmVJdGVtTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICBhbW91bnRfYXRvbV9jb25zaWRlcmluZ19kaXNjb3VudF9hcHBsaWVkOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRpc2NvdW50X2Ftb3VudF9hdG9tczogeiQxLmFycmF5KEludm9pY2VJdGVtRGlzY291bnRBbW91bnRzTWluaW1hbCksXG4gIHN1YnNjcmlwdGlvbl9pdGVtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgRGlzY291bnRNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGNvdXBvbjogQ291cG9uTWluaW1hbFxufSk7XG5jb25zdCBJbnZvaWNlTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkaXNjb3VudHM6IHokMS5hcnJheShEaXNjb3VudE1pbmltYWwpLFxuICBob3N0ZWRfaW52b2ljZV91cmw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGluZXM6IHokMS5hcnJheShJbnZvaWNlTGluZUl0ZW1NaW5pbWFsKSxcbiAgcmVtYWluaW5nX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRheF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9kaXNjb3VudF9hbW91bnRfYXRvbXM6IHokMS5hcnJheShJbnZvaWNlSXRlbURpc2NvdW50QW1vdW50c01pbmltYWwpXG59KTtcbmNvbnN0IENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjcmVhdGVkOiB6JDEuYXJyYXkoU3Vic2NyaXB0aW9uTWluaW1hbCksXG4gIGludm9pY2VzOiB6JDEuYXJyYXkoSW52b2ljZU1pbmltYWwpLFxuICBwcm9jZXNzb3JzX3VzZWQ6IG51bGxPclVuZGVmT3IoeiQxLmFycmF5KHokMS5zdHJpbmcoKSkpLFxuICBwYXltZW50X21ldGhvZF9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbmNvbnN0IFByZXZpZXdDaGVja291dFJlc3BvbnNlID0geiQxLm9iamVjdCh7XG4gIHByZXZpZXc6IENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCxcbiAgcHJldmlld19wb3N0X3RyaWFsOiBudWxsT3JVbmRlZk9yKENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCksXG4gIGNvdXBvbnM6IHokMS5hcnJheShDb3Vwb25NaW5pbWFsKVxufSk7XG5jb25zdCBfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmxpdGVyYWwoXCJvcGVuXCIpLFxuICBsb2NhbGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgY2hlY2tvdXRfc2V0dGluZ3M6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoTGluZUl0ZW0pLFxuICBhbW91bnRfc3VidG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBhbW91bnRfdG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBicmFuZDogQnJhbmQsXG4gIHN1YnNfcHJldmlldzogbnVsbE9yVW5kZWZPcihQcmV2aWV3Q2hlY2tvdXRSZXNwb25zZSksXG4gIC8vIE51bGwgaW4gc2V0dXAgbW9kZVxuICBtZXRob2RzX2F2YWlsYWJsZTogeiQxLmFycmF5KENoZWNrb3V0UGF5bWVudE1ldGhvZCksXG4gIHJldHVybl91cmw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgc3VjY2Vzc191cmw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgZmluYWxfZmVhdHVyZV9yb2xsb3V0X3NldHRpbmdzOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBQYXltZW50Rm9ybVByZWZpbGwgPSB6JDEuZGlzY3JpbWluYXRlZFVuaW9uKFwibW9kZVwiLCBbXG4gIHokMS5vYmplY3Qoe1xuICAgIG1vZGU6IHokMS5saXRlcmFsKFwic2V0dXBcIiksXG4gICAgY3VycmVuY3k6IHokMS5udWxsYWJsZSh6JDEudW5kZWZpbmVkKCkpXG4gIH0pLmV4dGVuZChfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uLnNoYXBlKSxcbiAgeiQxLm9iamVjdCh7XG4gICAgbW9kZTogeiQxLmVudW0oW1wicGF5bWVudFwiLCBcInN1YnNjcmlwdGlvblwiXSksXG4gICAgY3VycmVuY3k6IHokMS5zdHJpbmcoKVxuICB9KS5leHRlbmQoX1BheW1lbnRGb3JtUHJlZmlsbENvbW1vbi5zaGFwZSlcbl0pO1xuY29uc3QgQ29tcGxldGVkRm9ybVByZWZpbGwgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEubGl0ZXJhbChcImNvbXBsZXRlXCIpXG59KTtcbmNvbnN0IEV4cGlyZWRGb3JtUHJlZmlsbCA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiZXhwaXJlZFwiKVxufSk7XG56JDEudW5pb24oW1BheW1lbnRGb3JtUHJlZmlsbCwgQ29tcGxldGVkRm9ybVByZWZpbGwsIEV4cGlyZWRGb3JtUHJlZmlsbF0pO1xueiQxLm9iamVjdCh7XG4gIGxvZ286IHokMS5zdHJpbmcoKSxcbiAgaWNvbjogeiQxLnN0cmluZygpLFxuICBwcmltYXJ5X2NvbG9yOiB6JDEuc3RyaW5nKCksXG4gIHNlY29uZGFyeV9jb2xvcjogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcG1faWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBDb21wbGV0ZUFkZHJlc3MgPSB6JDEub2JqZWN0KHtcbiAgbGluZTE6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBsaW5lMjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGxpbmUzOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY2l0eTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHN0YXRlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY291bnRyeTogeiQxLnN0cmluZygpLFxuICB6aXBfY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwYXltZW50X2lucHV0OiB6JDEuYW55KCksXG4gIC8vIFNob3VsZCBmb2xsb3cgQW55UGF5bWVudElucHV0IGZyb20gQ0RFXG4gIGN1c3RvbWVyX2VtYWlsOiB6JDEuc3RyaW5nKCksXG4gIGN1c3RvbWVyX2xhc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGN1c3RvbWVyX2ZpcnN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9hZGRyZXNzOiBDb21wbGV0ZUFkZHJlc3MsXG4gIGN1c3RvbWVyX3NoaXBwaW5nX2FkZHJlc3M6IENvbXBsZXRlQWRkcmVzcy5vcHRpb25hbCgpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoTGluZUl0ZW0pLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBjYW5jZWxfYXRfZW5kOiB6JDEuYm9vbGVhbigpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdXNlX2NvbmZpcm1lZF9wbV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHBheW1lbnRfbWV0aG9kX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGlkOiB6JDEuc3RyaW5nKCksXG4gIHJldHVybl91cmw6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBQeWRhbnRpY1ZhbGlkYXRpb25FcnJvciQxID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgbG9jOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgbXNnOiB6JDEuc3RyaW5nKCksXG4gIHVybDogeiQxLnN0cmluZygpXG59KTtcbnokMS5hcnJheShQeWRhbnRpY1ZhbGlkYXRpb25FcnJvciQxKTtcbmNvbnN0IE5ld0N1c3RvbWVyRmllbGRzID0geiQxLm9iamVjdCh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGN1c3RvbWVyX2J1c2luZXNzX25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl90YXhfaWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl90YXhfaWRfdHlwZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9hZGRyZXNzOiBDb21wbGV0ZUFkZHJlc3MsXG4gIG5ld19jdXN0b21lcl9zaGlwcGluZ19hZGRyZXNzOiBDb21wbGV0ZUFkZHJlc3Mub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfbGFuZ3VhZ2U6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfcGhvbmU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IFByaWNlUXR5ID0geiQxLm9iamVjdCh7XG4gIHByaWNlX2lkOiB6JDEuc3RyaW5nKCksXG4gIHF1YW50aXR5OiB6JDEubnVtYmVyKCkuaW50KClcbn0pO1xuY29uc3QgQ2FydEluZm8gPSB6JDEub2JqZWN0KHtcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KFByaWNlUXR5KSxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKS5pbnQoKVxufSk7XG5jb25zdCBQcm9jZXNzb3JTcGVjaWZpY01ldGFkYXRhID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogbnVsbE9yVW5kZWZPcih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHBheW1lbnRfcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0aGVpcl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZV9wYXlfZmlyc3RfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IENhcnRJbmZvLm9wdGlvbmFsKCksXG4gIGN1c3RvbWVyX2xhbmd1YWdlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSkuZXh0ZW5kKE5ld0N1c3RvbWVyRmllbGRzLnNoYXBlKS5leHRlbmQoUHJvY2Vzc29yU3BlY2lmaWNNZXRhZGF0YS5zaGFwZSk7XG56JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjaGVja291dF9hdHRlbXB0X2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIGZpZWxkczogUFJGb3JtRmllbGRzLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgcGF5bWVudF9yb3V0ZV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFJlcXVpcmVkRm9ybUZpZWxkcyxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICAvLyBUaGlzIGlzIG9wdGlvbmFsIGluIENERSwgYnV0IG5vdCBpbiBPSlMgbW92aW5nIGZvcndhcmRcbiAgdXNlX3VuaWZpZWRfY2NfZmxvdzogbnVsbE9yVW5kZWZPcih6JDEuYm9vbGVhbigpKSxcbiAgcGF5X2ZpcnN0X2Zsb3dfY2FydF9pbmZvOiBDYXJ0SW5mby5vcHRpb25hbCgpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2xhbmd1YWdlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjY19wbV9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9zdWNjZXNzX3Jlc3BvbnNlOiBudWxsT3JVbmRlZk9yKENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlKSxcbiAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5yZWNvcmQoeiQxLmFueSgpKTtcbnokMS5vYmplY3Qoe1xuICBmaXJzdF9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxhc3RfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsaW5lMTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsaW5lMjogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsaW5lMzogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBjaXR5OiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHN0YXRlOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGNvdW50cnk6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgemlwX2NvZGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19lbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwaG9uZV9udW1iZXI6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYnVzaW5lc3NfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICB0YXhfaWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdGF4X2lkX3R5cGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdXBkYXRlX3Byb2Nlc3Nvcl9jdXN0b21lcjogbnVsbE9yVW5kZWZPcih6JDEuYm9vbGVhbigpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgZmlyc3RfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsYXN0X25hbWU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgcGhvbmVfbnVtYmVyOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYWRkcmVzczogbnVsbE9yVW5kZWZPcih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgZXJyb3JfY29kZTogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIG5leHRfYWN0aW9uX21ldGFkYXRhOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIGV2ZW50czogeiQxLmFycmF5KFxuICAgIHokMS5vYmplY3Qoe1xuICAgICAgZXZlbnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgICAgZGV2aWNlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gICAgICBwcm9wZXJ0aWVzOiB6JDEucmVjb3JkKHokMS5hbnkoKSkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRleHRfcHJvcGVydGllczogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKClcbiAgICB9KVxuICApXG59KTtcbnokMS5hbnkoKS5vcHRpb25hbCgpO1xueiQxLm9iamVjdCh7XG4gIGRldmljZV90b2tlbjogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe30pO1xueiQxLm9iamVjdCh7XG4gIF91bmlmaWVkX2NjX2FjdGlvbl9uYW1lOiB6JDEuc3RyaW5nKCksXG4gIF91bmlmaWVkX2NjX3BjY3NfaWQ6IHokMS5zdHJpbmcoKVxufSkuY2F0Y2hhbGwoeiQxLmFueSgpKTtcblxuY29uc3QgUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLmFycmF5KFB5ZGFudGljVmFsaWRhdGlvbkVycm9yKTtcbmNvbnN0IFpvZEZpZWxkRXJyb3IgPSB6JDEub2JqZWN0KHtcbiAgY29kZTogeiQxLnN0cmluZygpLFxuICBtZXNzYWdlOiB6JDEuc3RyaW5nKCksXG4gIHBhdGg6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5hcnJheShab2RGaWVsZEVycm9yKTtcbmNvbnN0IG1ha2VDYWxsYmFja1NhZmUgPSAoY2FsbGJhY2tOYW1lLCBmbiwgZXJyb3JMb2dnZXIpID0+IHtcbiAgcmV0dXJuICgoLi4uYXJncykgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGVycm9yTG9nZ2VyKGBbZm9ybV0gRXJyb3IgcnVubmluZyBjYWxsYmFjayAoJHtjYWxsYmFja05hbWV9KTpgLCBlcnJvcik7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCBjcmVhdGVPanNGbG93TG9nZ2VycyA9IChwcmVmaXgpID0+IHtcbiAgY29uc3QgbG9nID0gKC4uLmFyZ3MpID0+IHtcbiAgICB3aW5kb3dbXCJjb25zb2xlXCJdLmxvZyhgJHtjaGFsay5ncmVlbi5ib2xkKFwib2pzL1wiKX0ke2NoYWxrLmJvbGQuZ3JheShgJHtwcmVmaXh9YCl9XHRgLCAuLi5hcmdzKTtcbiAgfTtcbiAgY29uc3QgZXJyID0gKC4uLmFyZ3MpID0+IHtcbiAgICB3aW5kb3dbXCJjb25zb2xlXCJdLndhcm4oYCR7Y2hhbGsucmVkLmJvbGQoXCJvanMvXCIpfSR7Y2hhbGsuYm9sZC5ncmF5KGAke3ByZWZpeH1gKX1cdGAsIC4uLmFyZ3MpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGxvZyxcbiAgICBlcnIsXG4gICAgbG9nX186IGxvZyxcbiAgICBlcnJfXzogZXJyXG4gIH07XG59O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXG5cbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xuICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbn07XG5cbmZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XG4gIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG59XG5cbmZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xuICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEl0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKTtcbiAgcmV0dXJuIGcubmV4dCA9IHZlcmIoMCksIGdbXCJ0aHJvd1wiXSA9IHZlcmIoMSksIGdbXCJyZXR1cm5cIl0gPSB2ZXJiKDIpLCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gX192YWx1ZXMobykge1xuICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5cbmZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XG4gIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFtKSByZXR1cm4gbztcbiAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gIHRyeSB7XG4gICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgfVxuICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gIH1cbiAgcmV0dXJuIGFyO1xufVxuXG5mdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XG4gIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59XG5cbmZ1bmN0aW9uIF9fYXdhaXQodikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn1cblxuZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcbiAgcmV0dXJuIGkgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgQXN5bmNJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gQXN5bmNJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiLCBhd2FpdFJldHVybiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gYXdhaXRSZXR1cm4oZikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGYsIHJlamVjdCk7IH07IH1cbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlmIChnW25dKSB7IGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IGlmIChmKSBpW25dID0gZihpW25dKTsgfSB9XG4gIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cbiAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XG4gIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XG59XG5cbmZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xuICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cbiAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxufVxuXG50eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcbiAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XG59O1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXJyb3JDbGFzcyhjcmVhdGVJbXBsKSB7XG4gICAgdmFyIF9zdXBlciA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgICAgICBFcnJvci5jYWxsKGluc3RhbmNlKTtcbiAgICAgICAgaW5zdGFuY2Uuc3RhY2sgPSBuZXcgRXJyb3IoKS5zdGFjaztcbiAgICB9O1xuICAgIHZhciBjdG9yRnVuYyA9IGNyZWF0ZUltcGwoX3N1cGVyKTtcbiAgICBjdG9yRnVuYy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7XG4gICAgY3RvckZ1bmMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvckZ1bmM7XG4gICAgcmV0dXJuIGN0b3JGdW5jO1xufVxuXG52YXIgVW5zdWJzY3JpcHRpb25FcnJvciA9IGNyZWF0ZUVycm9yQ2xhc3MoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIHJldHVybiBmdW5jdGlvbiBVbnN1YnNjcmlwdGlvbkVycm9ySW1wbChlcnJvcnMpIHtcbiAgICAgICAgX3N1cGVyKHRoaXMpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBlcnJvcnNcbiAgICAgICAgICAgID8gZXJyb3JzLmxlbmd0aCArIFwiIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XFxuXCIgKyBlcnJvcnMubWFwKGZ1bmN0aW9uIChlcnIsIGkpIHsgcmV0dXJuIGkgKyAxICsgXCIpIFwiICsgZXJyLnRvU3RyaW5nKCk7IH0pLmpvaW4oJ1xcbiAgJylcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgIHRoaXMubmFtZSA9ICdVbnN1YnNjcmlwdGlvbkVycm9yJztcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gICAgfTtcbn0pO1xuXG5mdW5jdGlvbiBhcnJSZW1vdmUoYXJyLCBpdGVtKSB7XG4gICAgaWYgKGFycikge1xuICAgICAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgMCA8PSBpbmRleCAmJiBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG59XG5cbnZhciBTdWJzY3JpcHRpb24gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN1YnNjcmlwdGlvbihpbml0aWFsVGVhcmRvd24pIHtcbiAgICAgICAgdGhpcy5pbml0aWFsVGVhcmRvd24gPSBpbml0aWFsVGVhcmRvd247XG4gICAgICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgIH1cbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICAgICAgdmFyIGVycm9ycztcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgICAgICBpZiAoX3BhcmVudGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9wYXJlbnRhZ2VfMSA9IF9fdmFsdWVzKF9wYXJlbnRhZ2UpLCBfcGFyZW50YWdlXzFfMSA9IF9wYXJlbnRhZ2VfMS5uZXh0KCk7ICFfcGFyZW50YWdlXzFfMS5kb25lOyBfcGFyZW50YWdlXzFfMSA9IF9wYXJlbnRhZ2VfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50XzEgPSBfcGFyZW50YWdlXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfMS5yZW1vdmUodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfcGFyZW50YWdlXzFfMSAmJiAhX3BhcmVudGFnZV8xXzEuZG9uZSAmJiAoX2EgPSBfcGFyZW50YWdlXzEucmV0dXJuKSkgX2EuY2FsbChfcGFyZW50YWdlXzEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfcGFyZW50YWdlLnJlbW92ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaW5pdGlhbEZpbmFsaXplciA9IHRoaXMuaW5pdGlhbFRlYXJkb3duO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oaW5pdGlhbEZpbmFsaXplcikpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpbml0aWFsRmluYWxpemVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGUgaW5zdGFuY2VvZiBVbnN1YnNjcmlwdGlvbkVycm9yID8gZS5lcnJvcnMgOiBbZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9maW5hbGl6ZXJzID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgICAgICAgIGlmIChfZmluYWxpemVycykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9maW5hbGl6ZXJzXzEgPSBfX3ZhbHVlcyhfZmluYWxpemVycyksIF9maW5hbGl6ZXJzXzFfMSA9IF9maW5hbGl6ZXJzXzEubmV4dCgpOyAhX2ZpbmFsaXplcnNfMV8xLmRvbmU7IF9maW5hbGl6ZXJzXzFfMSA9IF9maW5hbGl6ZXJzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmluYWxpemVyID0gX2ZpbmFsaXplcnNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjRmluYWxpemVyKGZpbmFsaXplcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyb3JzICE9PSBudWxsICYmIGVycm9ycyAhPT0gdm9pZCAwID8gZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFVuc3Vic2NyaXB0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoZXJyb3JzKSksIF9fcmVhZChlcnIuZXJyb3JzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9maW5hbGl6ZXJzXzFfMSAmJiAhX2ZpbmFsaXplcnNfMV8xLmRvbmUgJiYgKF9iID0gX2ZpbmFsaXplcnNfMS5yZXR1cm4pKSBfYi5jYWxsKF9maW5hbGl6ZXJzXzEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3Vic2NyaXB0aW9uRXJyb3IoZXJyb3JzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodGVhcmRvd24pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodGVhcmRvd24gJiYgdGVhcmRvd24gIT09IHRoaXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIGV4ZWNGaW5hbGl6ZXIodGVhcmRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRlYXJkb3duIGluc3RhbmNlb2YgU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZWFyZG93bi5jbG9zZWQgfHwgdGVhcmRvd24uX2hhc1BhcmVudCh0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRlYXJkb3duLl9hZGRQYXJlbnQodGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICh0aGlzLl9maW5hbGl6ZXJzID0gKF9hID0gdGhpcy5fZmluYWxpemVycykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW10pLnB1c2godGVhcmRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLl9oYXNQYXJlbnQgPSBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgIHZhciBfcGFyZW50YWdlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgICAgICByZXR1cm4gX3BhcmVudGFnZSA9PT0gcGFyZW50IHx8IChBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpICYmIF9wYXJlbnRhZ2UuaW5jbHVkZXMocGFyZW50KSk7XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLl9hZGRQYXJlbnQgPSBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgIHZhciBfcGFyZW50YWdlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgICAgICB0aGlzLl9wYXJlbnRhZ2UgPSBBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpID8gKF9wYXJlbnRhZ2UucHVzaChwYXJlbnQpLCBfcGFyZW50YWdlKSA6IF9wYXJlbnRhZ2UgPyBbX3BhcmVudGFnZSwgcGFyZW50XSA6IHBhcmVudDtcbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX3JlbW92ZVBhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIGlmIChfcGFyZW50YWdlID09PSBwYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfcGFyZW50YWdlKSkge1xuICAgICAgICAgICAgYXJyUmVtb3ZlKF9wYXJlbnRhZ2UsIHBhcmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKHRlYXJkb3duKSB7XG4gICAgICAgIHZhciBfZmluYWxpemVycyA9IHRoaXMuX2ZpbmFsaXplcnM7XG4gICAgICAgIF9maW5hbGl6ZXJzICYmIGFyclJlbW92ZShfZmluYWxpemVycywgdGVhcmRvd24pO1xuICAgICAgICBpZiAodGVhcmRvd24gaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRlYXJkb3duLl9yZW1vdmVQYXJlbnQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5FTVBUWSA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbXB0eSA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgZW1wdHkuY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGVtcHR5O1xuICAgIH0pKCk7XG4gICAgcmV0dXJuIFN1YnNjcmlwdGlvbjtcbn0oKSk7XG52YXIgRU1QVFlfU1VCU0NSSVBUSU9OID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuZnVuY3Rpb24gaXNTdWJzY3JpcHRpb24odmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlIGluc3RhbmNlb2YgU3Vic2NyaXB0aW9uIHx8XG4gICAgICAgICh2YWx1ZSAmJiAnY2xvc2VkJyBpbiB2YWx1ZSAmJiBpc0Z1bmN0aW9uKHZhbHVlLnJlbW92ZSkgJiYgaXNGdW5jdGlvbih2YWx1ZS5hZGQpICYmIGlzRnVuY3Rpb24odmFsdWUudW5zdWJzY3JpYmUpKSk7XG59XG5mdW5jdGlvbiBleGVjRmluYWxpemVyKGZpbmFsaXplcikge1xuICAgIGlmIChpc0Z1bmN0aW9uKGZpbmFsaXplcikpIHtcbiAgICAgICAgZmluYWxpemVyKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmaW5hbGl6ZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG5cbnZhciBjb25maWcgPSB7XG4gICAgUHJvbWlzZTogdW5kZWZpbmVkfTtcblxudmFyIHRpbWVvdXRQcm92aWRlciA9IHtcbiAgICBzZXRUaW1lb3V0OiBmdW5jdGlvbiAoaGFuZGxlciwgdGltZW91dCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2V0VGltZW91dC5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW2hhbmRsZXIsIHRpbWVvdXRdLCBfX3JlYWQoYXJncykpKTtcbiAgICB9LFxuICAgIGNsZWFyVGltZW91dDogZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICByZXR1cm4gKGNsZWFyVGltZW91dCkoaGFuZGxlKTtcbiAgICB9LFxuICAgIGRlbGVnYXRlOiB1bmRlZmluZWQsXG59O1xuXG5mdW5jdGlvbiByZXBvcnRVbmhhbmRsZWRFcnJvcihlcnIpIHtcbiAgICB0aW1lb3V0UHJvdmlkZXIuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBub29wKCkgeyB9XG5cbmZ1bmN0aW9uIGVycm9yQ29udGV4dChjYikge1xuICAgIHtcbiAgICAgICAgY2IoKTtcbiAgICB9XG59XG5cbnZhciBTdWJzY3JpYmVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU3Vic2NyaWJlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTdWJzY3JpYmVyKGRlc3RpbmF0aW9uKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmlzU3RvcHBlZCA9IGZhbHNlO1xuICAgICAgICBpZiAoZGVzdGluYXRpb24pIHtcbiAgICAgICAgICAgIF90aGlzLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247XG4gICAgICAgICAgICBpZiAoaXNTdWJzY3JpcHRpb24oZGVzdGluYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb24uYWRkKF90aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLmRlc3RpbmF0aW9uID0gRU1QVFlfT0JTRVJWRVI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBTdWJzY3JpYmVyLmNyZWF0ZSA9IGZ1bmN0aW9uIChuZXh0LCBlcnJvciwgY29tcGxldGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTYWZlU3Vic2NyaWJlcihuZXh0LCBlcnJvciwgY29tcGxldGUpO1xuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5pc1N0b3BwZWQpIDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RvcHBlZCkgO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yKGVycik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5pc1N0b3BwZWQpIDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgX3N1cGVyLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLl9uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb24ubmV4dCh2YWx1ZSk7XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5fZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLl9jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIFN1YnNjcmliZXI7XG59KFN1YnNjcmlwdGlvbikpO1xudmFyIENvbnN1bWVyT2JzZXJ2ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENvbnN1bWVyT2JzZXJ2ZXIocGFydGlhbE9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMucGFydGlhbE9ic2VydmVyID0gcGFydGlhbE9ic2VydmVyO1xuICAgIH1cbiAgICBDb25zdW1lck9ic2VydmVyLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsT2JzZXJ2ZXIgPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICAgICAgaWYgKHBhcnRpYWxPYnNlcnZlci5uZXh0KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGhhbmRsZVVuaGFuZGxlZEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29uc3VtZXJPYnNlcnZlci5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsT2JzZXJ2ZXIgPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICAgICAgaWYgKHBhcnRpYWxPYnNlcnZlci5lcnJvcikge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGhhbmRsZVVuaGFuZGxlZEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGhhbmRsZVVuaGFuZGxlZEVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbnN1bWVyT2JzZXJ2ZXIucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChwYXJ0aWFsT2JzZXJ2ZXIuY29tcGxldGUpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBDb25zdW1lck9ic2VydmVyO1xufSgpKTtcbnZhciBTYWZlU3Vic2NyaWJlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFNhZmVTdWJzY3JpYmVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNhZmVTdWJzY3JpYmVyKG9ic2VydmVyT3JOZXh0LCBlcnJvciwgY29tcGxldGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgdmFyIHBhcnRpYWxPYnNlcnZlcjtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob2JzZXJ2ZXJPck5leHQpIHx8ICFvYnNlcnZlck9yTmV4dCkge1xuICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyID0ge1xuICAgICAgICAgICAgICAgIG5leHQ6IChvYnNlcnZlck9yTmV4dCAhPT0gbnVsbCAmJiBvYnNlcnZlck9yTmV4dCAhPT0gdm9pZCAwID8gb2JzZXJ2ZXJPck5leHQgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvciAhPT0gbnVsbCAmJiBlcnJvciAhPT0gdm9pZCAwID8gZXJyb3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgY29tcGxldGU6IGNvbXBsZXRlICE9PSBudWxsICYmIGNvbXBsZXRlICE9PSB2b2lkIDAgPyBjb21wbGV0ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyID0gb2JzZXJ2ZXJPck5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgX3RoaXMuZGVzdGluYXRpb24gPSBuZXcgQ29uc3VtZXJPYnNlcnZlcihwYXJ0aWFsT2JzZXJ2ZXIpO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIHJldHVybiBTYWZlU3Vic2NyaWJlcjtcbn0oU3Vic2NyaWJlcikpO1xuZnVuY3Rpb24gaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpIHtcbiAgICB7XG4gICAgICAgIHJlcG9ydFVuaGFuZGxlZEVycm9yKGVycm9yKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZWZhdWx0RXJyb3JIYW5kbGVyKGVycikge1xuICAgIHRocm93IGVycjtcbn1cbnZhciBFTVBUWV9PQlNFUlZFUiA9IHtcbiAgICBjbG9zZWQ6IHRydWUsXG4gICAgbmV4dDogbm9vcCxcbiAgICBlcnJvcjogZGVmYXVsdEVycm9ySGFuZGxlcixcbiAgICBjb21wbGV0ZTogbm9vcCxcbn07XG5cbnZhciBvYnNlcnZhYmxlID0gKGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5vYnNlcnZhYmxlKSB8fCAnQEBvYnNlcnZhYmxlJzsgfSkoKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICAgIHJldHVybiB4O1xufVxuXG5mdW5jdGlvbiBwaXBlRnJvbUFycmF5KGZucykge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICB9XG4gICAgaWYgKGZucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGZuc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBpcGVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBmbnMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBmbikgeyByZXR1cm4gZm4ocHJldik7IH0sIGlucHV0KTtcbiAgICB9O1xufVxuXG52YXIgT2JzZXJ2YWJsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT2JzZXJ2YWJsZShzdWJzY3JpYmUpIHtcbiAgICAgICAgaWYgKHN1YnNjcmliZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlID0gc3Vic2NyaWJlO1xuICAgICAgICB9XG4gICAgfVxuICAgIE9ic2VydmFibGUucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbiAob3BlcmF0b3IpIHtcbiAgICAgICAgdmFyIG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgpO1xuICAgICAgICBvYnNlcnZhYmxlLnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIG9ic2VydmFibGUub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGU7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiAob2JzZXJ2ZXJPck5leHQsIGVycm9yLCBjb21wbGV0ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgc3Vic2NyaWJlciA9IGlzU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCkgPyBvYnNlcnZlck9yTmV4dCA6IG5ldyBTYWZlU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLCBvcGVyYXRvciA9IF9hLm9wZXJhdG9yLCBzb3VyY2UgPSBfYS5zb3VyY2U7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmFkZChvcGVyYXRvclxuICAgICAgICAgICAgICAgID9cbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IuY2FsbChzdWJzY3JpYmVyLCBzb3VyY2UpXG4gICAgICAgICAgICAgICAgOiBzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3N1YnNjcmliZShzdWJzY3JpYmVyKVxuICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fdHJ5U3Vic2NyaWJlKHN1YnNjcmliZXIpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpYmVyO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uIChzaW5rKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3Vic2NyaWJlKHNpbmspO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHNpbmsuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChuZXh0LCBwcm9taXNlQ3Rvcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBwcm9taXNlQ3RvciA9IGdldFByb21pc2VDdG9yKHByb21pc2VDdG9yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBwcm9taXNlQ3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgc3Vic2NyaWJlciA9IG5ldyBTYWZlU3Vic2NyaWJlcih7XG4gICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IHJlamVjdCxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3RoaXMuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlW29ic2VydmFibGVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBvcGVyYXRpb25zID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBvcGVyYXRpb25zW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBpcGVGcm9tQXJyYXkob3BlcmF0aW9ucykodGhpcyk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS50b1Byb21pc2UgPSBmdW5jdGlvbiAocHJvbWlzZUN0b3IpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcHJvbWlzZUN0b3IgPSBnZXRQcm9taXNlQ3Rvcihwcm9taXNlQ3Rvcik7XG4gICAgICAgIHJldHVybiBuZXcgcHJvbWlzZUN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICAgICAgX3RoaXMuc3Vic2NyaWJlKGZ1bmN0aW9uICh4KSB7IHJldHVybiAodmFsdWUgPSB4KTsgfSwgZnVuY3Rpb24gKGVycikgeyByZXR1cm4gcmVqZWN0KGVycik7IH0sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmUodmFsdWUpOyB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLmNyZWF0ZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKHN1YnNjcmliZSk7XG4gICAgfTtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZTtcbn0oKSk7XG5mdW5jdGlvbiBnZXRQcm9taXNlQ3Rvcihwcm9taXNlQ3Rvcikge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gcHJvbWlzZUN0b3IgIT09IG51bGwgJiYgcHJvbWlzZUN0b3IgIT09IHZvaWQgMCA/IHByb21pc2VDdG9yIDogY29uZmlnLlByb21pc2UpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFByb21pc2U7XG59XG5mdW5jdGlvbiBpc09ic2VydmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIGlzRnVuY3Rpb24odmFsdWUubmV4dCkgJiYgaXNGdW5jdGlvbih2YWx1ZS5lcnJvcikgJiYgaXNGdW5jdGlvbih2YWx1ZS5jb21wbGV0ZSk7XG59XG5mdW5jdGlvbiBpc1N1YnNjcmliZXIodmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgU3Vic2NyaWJlcikgfHwgKGlzT2JzZXJ2ZXIodmFsdWUpICYmIGlzU3Vic2NyaXB0aW9uKHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIGhhc0xpZnQoc291cmNlKSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oc291cmNlID09PSBudWxsIHx8IHNvdXJjZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc291cmNlLmxpZnQpO1xufVxuZnVuY3Rpb24gb3BlcmF0ZShpbml0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc0xpZnQoc291cmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5saWZ0KGZ1bmN0aW9uIChsaWZ0ZWRTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5pdChsaWZ0ZWRTb3VyY2UsIHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmFibGUgdG8gbGlmdCB1bmtub3duIE9ic2VydmFibGUgdHlwZScpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU9wZXJhdG9yU3Vic2NyaWJlcihkZXN0aW5hdGlvbiwgb25OZXh0LCBvbkNvbXBsZXRlLCBvbkVycm9yLCBvbkZpbmFsaXplKSB7XG4gICAgcmV0dXJuIG5ldyBPcGVyYXRvclN1YnNjcmliZXIoZGVzdGluYXRpb24sIG9uTmV4dCwgb25Db21wbGV0ZSwgb25FcnJvciwgb25GaW5hbGl6ZSk7XG59XG52YXIgT3BlcmF0b3JTdWJzY3JpYmVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoT3BlcmF0b3JTdWJzY3JpYmVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE9wZXJhdG9yU3Vic2NyaWJlcihkZXN0aW5hdGlvbiwgb25OZXh0LCBvbkNvbXBsZXRlLCBvbkVycm9yLCBvbkZpbmFsaXplLCBzaG91bGRVbnN1YnNjcmliZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkZXN0aW5hdGlvbikgfHwgdGhpcztcbiAgICAgICAgX3RoaXMub25GaW5hbGl6ZSA9IG9uRmluYWxpemU7XG4gICAgICAgIF90aGlzLnNob3VsZFVuc3Vic2NyaWJlID0gc2hvdWxkVW5zdWJzY3JpYmU7XG4gICAgICAgIF90aGlzLl9uZXh0ID0gb25OZXh0XG4gICAgICAgICAgICA/IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIG9uTmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IF9zdXBlci5wcm90b3R5cGUuX25leHQ7XG4gICAgICAgIF90aGlzLl9lcnJvciA9IG9uRXJyb3JcbiAgICAgICAgICAgID8gZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogX3N1cGVyLnByb3RvdHlwZS5fZXJyb3I7XG4gICAgICAgIF90aGlzLl9jb21wbGV0ZSA9IG9uQ29tcGxldGVcbiAgICAgICAgICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogX3N1cGVyLnByb3RvdHlwZS5fY29tcGxldGU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT3BlcmF0b3JTdWJzY3JpYmVyLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIXRoaXMuc2hvdWxkVW5zdWJzY3JpYmUgfHwgdGhpcy5zaG91bGRVbnN1YnNjcmliZSgpKSB7XG4gICAgICAgICAgICB2YXIgY2xvc2VkXzEgPSB0aGlzLmNsb3NlZDtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICFjbG9zZWRfMSAmJiAoKF9hID0gdGhpcy5vbkZpbmFsaXplKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBPcGVyYXRvclN1YnNjcmliZXI7XG59KFN1YnNjcmliZXIpKTtcblxudmFyIE9iamVjdFVuc3Vic2NyaWJlZEVycm9yID0gY3JlYXRlRXJyb3JDbGFzcyhmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIE9iamVjdFVuc3Vic2NyaWJlZEVycm9ySW1wbCgpIHtcbiAgICAgICAgX3N1cGVyKHRoaXMpO1xuICAgICAgICB0aGlzLm5hbWUgPSAnT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3InO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnb2JqZWN0IHVuc3Vic2NyaWJlZCc7XG4gICAgfTtcbn0pO1xuXG52YXIgU3ViamVjdCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFN1YmplY3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3ViamVjdCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgICAgICBfdGhpcy5vYnNlcnZlcnMgPSBbXTtcbiAgICAgICAgX3RoaXMuaXNTdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIF90aGlzLnRocm93bkVycm9yID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBTdWJqZWN0LnByb3RvdHlwZS5saWZ0ID0gZnVuY3Rpb24gKG9wZXJhdG9yKSB7XG4gICAgICAgIHZhciBzdWJqZWN0ID0gbmV3IEFub255bW91c1N1YmplY3QodGhpcywgdGhpcyk7XG4gICAgICAgIHN1YmplY3Qub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgcmV0dXJuIHN1YmplY3Q7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5fdGhyb3dJZkNsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBlcnJvckNvbnRleHQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgICAgICBfdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmN1cnJlbnRPYnNlcnZlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuY3VycmVudE9ic2VydmVycyA9IEFycmF5LmZyb20oX3RoaXMub2JzZXJ2ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9ic2VydmVyID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGVycm9yQ29udGV4dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5oYXNFcnJvciA9IF90aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgX3RoaXMudGhyb3duRXJyb3IgPSBlcnI7XG4gICAgICAgICAgICAgICAgdmFyIG9ic2VydmVycyA9IF90aGlzLm9ic2VydmVycztcbiAgICAgICAgICAgICAgICB3aGlsZSAob2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMuc2hpZnQoKS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgICAgICBpZiAoIV90aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgICAgIF90aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIG9ic2VydmVycyA9IF90aGlzLm9ic2VydmVycztcbiAgICAgICAgICAgICAgICB3aGlsZSAob2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMuc2hpZnQoKS5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXJzID0gdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdWJqZWN0LnByb3RvdHlwZSwgXCJvYnNlcnZlZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuICgoX2EgPSB0aGlzLm9ic2VydmVycykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgPiAwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHRoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5wcm90b3R5cGUuX3RyeVN1YnNjcmliZS5jYWxsKHRoaXMsIHN1YnNjcmliZXIpO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHRoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgdGhpcy5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyhzdWJzY3JpYmVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubmVyU3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hID0gdGhpcywgaGFzRXJyb3IgPSBfYS5oYXNFcnJvciwgaXNTdG9wcGVkID0gX2EuaXNTdG9wcGVkLCBvYnNlcnZlcnMgPSBfYS5vYnNlcnZlcnM7XG4gICAgICAgIGlmIChoYXNFcnJvciB8fCBpc1N0b3BwZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9TVUJTQ1JJUFRJT047XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICAgICAgb2JzZXJ2ZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgICAgICAgICAgYXJyUmVtb3ZlKG9ic2VydmVycywgc3Vic2NyaWJlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBoYXNFcnJvciA9IF9hLmhhc0Vycm9yLCB0aHJvd25FcnJvciA9IF9hLnRocm93bkVycm9yLCBpc1N0b3BwZWQgPSBfYS5pc1N0b3BwZWQ7XG4gICAgICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcih0aHJvd25FcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLmFzT2JzZXJ2YWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgpO1xuICAgICAgICBvYnNlcnZhYmxlLnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICAgIH07XG4gICAgU3ViamVjdC5jcmVhdGUgPSBmdW5jdGlvbiAoZGVzdGluYXRpb24sIHNvdXJjZSkge1xuICAgICAgICByZXR1cm4gbmV3IEFub255bW91c1N1YmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSk7XG4gICAgfTtcbiAgICByZXR1cm4gU3ViamVjdDtcbn0oT2JzZXJ2YWJsZSkpO1xudmFyIEFub255bW91c1N1YmplY3QgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBbm9ueW1vdXNTdWJqZWN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFub255bW91c1N1YmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICBfdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmV4dCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHZhbHVlKTtcbiAgICB9O1xuICAgIEFub255bW91c1N1YmplY3QucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZXJyb3IpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBlcnIpO1xuICAgIH07XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb21wbGV0ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpO1xuICAgIH07XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1YnNjcmliZShzdWJzY3JpYmVyKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogRU1QVFlfU1VCU0NSSVBUSU9OO1xuICAgIH07XG4gICAgcmV0dXJuIEFub255bW91c1N1YmplY3Q7XG59KFN1YmplY3QpKTtcblxudmFyIGRhdGVUaW1lc3RhbXBQcm92aWRlciA9IHtcbiAgICBub3c6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChEYXRlKS5ub3coKTtcbiAgICB9fTtcblxudmFyIEFjdGlvbiA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFjdGlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBY3Rpb24oc2NoZWR1bGVyLCB3b3JrKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBY3Rpb24ucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24gKHN0YXRlLCBkZWxheSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBBY3Rpb247XG59KFN1YnNjcmlwdGlvbikpO1xuXG52YXIgaW50ZXJ2YWxQcm92aWRlciA9IHtcbiAgICBzZXRJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldEludGVydmFsLmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgIH0sXG4gICAgY2xlYXJJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICByZXR1cm4gKGNsZWFySW50ZXJ2YWwpKGhhbmRsZSk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcblxudmFyIEFzeW5jQWN0aW9uID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXN5bmNBY3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXN5bmNBY3Rpb24oc2NoZWR1bGVyLCB3b3JrKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHNjaGVkdWxlciwgd29yaykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyO1xuICAgICAgICBfdGhpcy53b3JrID0gd29yaztcbiAgICAgICAgX3RoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uIChzdGF0ZSwgZGVsYXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZGVsYXkgPT09IHZvaWQgMCkgeyBkZWxheSA9IDA7IH1cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgICAgIHZhciBpZCA9IHRoaXMuaWQ7XG4gICAgICAgIHZhciBzY2hlZHVsZXIgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHNjaGVkdWxlciwgaWQsIGRlbGF5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgICAgIHRoaXMuaWQgPSAoX2EgPSB0aGlzLmlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLnJlcXVlc3RBc3luY0lkKHNjaGVkdWxlciwgdGhpcy5pZCwgZGVsYXkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZCA9IGZ1bmN0aW9uIChzY2hlZHVsZXIsIF9pZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBpbnRlcnZhbFByb3ZpZGVyLnNldEludGVydmFsKHNjaGVkdWxlci5mbHVzaC5iaW5kKHNjaGVkdWxlciwgdGhpcyksIGRlbGF5KTtcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZCA9IGZ1bmN0aW9uIChfc2NoZWR1bGVyLCBpZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIGlmIChkZWxheSAhPSBudWxsICYmIHRoaXMuZGVsYXkgPT09IGRlbGF5ICYmIHRoaXMucGVuZGluZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW50ZXJ2YWxQcm92aWRlci5jbGVhckludGVydmFsKGlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgQXN5bmNBY3Rpb24ucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoc3RhdGUsIGRlbGF5KSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcignZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICB2YXIgZXJyb3IgPSB0aGlzLl9leGVjdXRlKHN0YXRlLCBkZWxheSk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGVuZGluZyA9PT0gZmFsc2UgJiYgdGhpcy5pZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlciwgdGhpcy5pZCwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5fZXhlY3V0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgX2RlbGF5KSB7XG4gICAgICAgIHZhciBlcnJvcmVkID0gZmFsc2U7XG4gICAgICAgIHZhciBlcnJvclZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy53b3JrKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZXJyb3JlZCA9IHRydWU7XG4gICAgICAgICAgICBlcnJvclZhbHVlID0gZSA/IGUgOiBuZXcgRXJyb3IoJ1NjaGVkdWxlZCBhY3Rpb24gdGhyZXcgZmFsc3kgZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JlZCkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgaWQgPSBfYS5pZCwgc2NoZWR1bGVyID0gX2Euc2NoZWR1bGVyO1xuICAgICAgICAgICAgdmFyIGFjdGlvbnMgPSBzY2hlZHVsZXIuYWN0aW9ucztcbiAgICAgICAgICAgIHRoaXMud29yayA9IHRoaXMuc3RhdGUgPSB0aGlzLnNjaGVkdWxlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGFyclJlbW92ZShhY3Rpb25zLCB0aGlzKTtcbiAgICAgICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQoc2NoZWR1bGVyLCBpZCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRlbGF5ID0gbnVsbDtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEFzeW5jQWN0aW9uO1xufShBY3Rpb24pKTtcblxudmFyIFNjaGVkdWxlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2NoZWR1bGVyKHNjaGVkdWxlckFjdGlvbkN0b3IsIG5vdykge1xuICAgICAgICBpZiAobm93ID09PSB2b2lkIDApIHsgbm93ID0gU2NoZWR1bGVyLm5vdzsgfVxuICAgICAgICB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSBzY2hlZHVsZXJBY3Rpb25DdG9yO1xuICAgICAgICB0aGlzLm5vdyA9IG5vdztcbiAgICB9XG4gICAgU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uICh3b3JrLCBkZWxheSwgc3RhdGUpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBuZXcgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yKHRoaXMsIHdvcmspLnNjaGVkdWxlKHN0YXRlLCBkZWxheSk7XG4gICAgfTtcbiAgICBTY2hlZHVsZXIubm93ID0gZGF0ZVRpbWVzdGFtcFByb3ZpZGVyLm5vdztcbiAgICByZXR1cm4gU2NoZWR1bGVyO1xufSgpKTtcblxudmFyIEFzeW5jU2NoZWR1bGVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXN5bmNTY2hlZHVsZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXN5bmNTY2hlZHVsZXIoU2NoZWR1bGVyQWN0aW9uLCBub3cpIHtcbiAgICAgICAgaWYgKG5vdyA9PT0gdm9pZCAwKSB7IG5vdyA9IFNjaGVkdWxlci5ub3c7IH1cbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgU2NoZWR1bGVyQWN0aW9uLCBub3cpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmFjdGlvbnMgPSBbXTtcbiAgICAgICAgX3RoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFzeW5jU2NoZWR1bGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgdmFyIGFjdGlvbnMgPSB0aGlzLmFjdGlvbnM7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJvcjtcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKChlcnJvciA9IGFjdGlvbi5leGVjdXRlKGFjdGlvbi5zdGF0ZSwgYWN0aW9uLmRlbGF5KSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoKGFjdGlvbiA9IGFjdGlvbnMuc2hpZnQoKSkpO1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICB3aGlsZSAoKGFjdGlvbiA9IGFjdGlvbnMuc2hpZnQoKSkpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQXN5bmNTY2hlZHVsZXI7XG59KFNjaGVkdWxlcikpO1xuXG52YXIgYXN5bmNTY2hlZHVsZXIgPSBuZXcgQXN5bmNTY2hlZHVsZXIoQXN5bmNBY3Rpb24pO1xuXG52YXIgaXNBcnJheUxpa2UgPSAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggJiYgdHlwZW9mIHgubGVuZ3RoID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgeCAhPT0gJ2Z1bmN0aW9uJzsgfSk7XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSh2YWx1ZSkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWx1ZS50aGVuKTtcbn1cblxuZnVuY3Rpb24gaXNJbnRlcm9wT2JzZXJ2YWJsZShpbnB1dCkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKGlucHV0W29ic2VydmFibGVdKTtcbn1cblxuZnVuY3Rpb24gaXNBc3luY0l0ZXJhYmxlKG9iaikge1xuICAgIHJldHVybiBTeW1ib2wuYXN5bmNJdGVyYXRvciAmJiBpc0Z1bmN0aW9uKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9ialtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVJbnZhbGlkT2JzZXJ2YWJsZVR5cGVFcnJvcihpbnB1dCkge1xuICAgIHJldHVybiBuZXcgVHlwZUVycm9yKFwiWW91IHByb3ZpZGVkIFwiICsgKGlucHV0ICE9PSBudWxsICYmIHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgPyAnYW4gaW52YWxpZCBvYmplY3QnIDogXCInXCIgKyBpbnB1dCArIFwiJ1wiKSArIFwiIHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21pc2UsIFJlYWRhYmxlU3RyZWFtLCBBcnJheSwgQXN5bmNJdGVyYWJsZSwgb3IgSXRlcmFibGUuXCIpO1xufVxuXG5mdW5jdGlvbiBnZXRTeW1ib2xJdGVyYXRvcigpIHtcbiAgICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7XG4gICAgICAgIHJldHVybiAnQEBpdGVyYXRvcic7XG4gICAgfVxuICAgIHJldHVybiBTeW1ib2wuaXRlcmF0b3I7XG59XG52YXIgaXRlcmF0b3IgPSBnZXRTeW1ib2xJdGVyYXRvcigpO1xuXG5mdW5jdGlvbiBpc0l0ZXJhYmxlKGlucHV0KSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oaW5wdXQgPT09IG51bGwgfHwgaW5wdXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGlucHV0W2l0ZXJhdG9yXSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtTGlrZVRvQXN5bmNHZW5lcmF0b3IocmVhZGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gX19hc3luY0dlbmVyYXRvcih0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtTGlrZVRvQXN5bmNHZW5lcmF0b3JfMSgpIHtcbiAgICAgICAgdmFyIHJlYWRlciwgX2EsIHZhbHVlLCBkb25lO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICByZWFkZXIgPSByZWFkYWJsZVN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFsxLCAsIDksIDEwXSk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMjtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgX19hd2FpdChyZWFkZXIucmVhZCgpKV07XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBfYSA9IF9iLnNlbnQoKSwgdmFsdWUgPSBfYS52YWx1ZSwgZG9uZSA9IF9hLmRvbmU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZG9uZSkgcmV0dXJuIFszLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBfX2F3YWl0KHZvaWQgMCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyLCBfYi5zZW50KCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFs0LCBfX2F3YWl0KHZhbHVlKV07XG4gICAgICAgICAgICAgICAgY2FzZSA2OiByZXR1cm4gWzQsIF9iLnNlbnQoKV07XG4gICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMl07XG4gICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzMsIDEwXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICAgICAgICAgIGNhc2UgMTA6IHJldHVybiBbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxpa2Uob2JqKSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24ob2JqID09PSBudWxsIHx8IG9iaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb2JqLmdldFJlYWRlcik7XG59XG5cbmZ1bmN0aW9uIGlubmVyRnJvbShpbnB1dCkge1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoaXNJbnRlcm9wT2JzZXJ2YWJsZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tSW50ZXJvcE9ic2VydmFibGUoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FycmF5TGlrZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcm9taXNlKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21Qcm9taXNlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBc3luY0l0ZXJhYmxlKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21Bc3luY0l0ZXJhYmxlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNJdGVyYWJsZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tSXRlcmFibGUoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1JlYWRhYmxlU3RyZWFtTGlrZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tUmVhZGFibGVTdHJlYW1MaWtlKGlucHV0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBjcmVhdGVJbnZhbGlkT2JzZXJ2YWJsZVR5cGVFcnJvcihpbnB1dCk7XG59XG5mdW5jdGlvbiBmcm9tSW50ZXJvcE9ic2VydmFibGUob2JqKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBvYnMgPSBvYmpbb2JzZXJ2YWJsZV0oKTtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob2JzLnN1YnNjcmliZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnMuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlJyk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBmcm9tQXJyYXlMaWtlKGFycmF5KSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoICYmICFzdWJzY3JpYmVyLmNsb3NlZDsgaSsrKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoYXJyYXlbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21Qcm9taXNlKHByb21pc2UpIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgcHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIXN1YnNjcmliZXIuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHsgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZXJyKTsgfSlcbiAgICAgICAgICAgIC50aGVuKG51bGwsIHJlcG9ydFVuaGFuZGxlZEVycm9yKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21JdGVyYWJsZShpdGVyYWJsZSkge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGl0ZXJhYmxlXzEgPSBfX3ZhbHVlcyhpdGVyYWJsZSksIGl0ZXJhYmxlXzFfMSA9IGl0ZXJhYmxlXzEubmV4dCgpOyAhaXRlcmFibGVfMV8xLmRvbmU7IGl0ZXJhYmxlXzFfMSA9IGl0ZXJhYmxlXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gaXRlcmFibGVfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHN1YnNjcmliZXIuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYWJsZV8xXzEgJiYgIWl0ZXJhYmxlXzFfMS5kb25lICYmIChfYSA9IGl0ZXJhYmxlXzEucmV0dXJuKSkgX2EuY2FsbChpdGVyYWJsZV8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBmcm9tQXN5bmNJdGVyYWJsZShhc3luY0l0ZXJhYmxlKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHByb2Nlc3MoYXN5bmNJdGVyYWJsZSwgc3Vic2NyaWJlcikuY2F0Y2goZnVuY3Rpb24gKGVycikgeyByZXR1cm4gc3Vic2NyaWJlci5lcnJvcihlcnIpOyB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21SZWFkYWJsZVN0cmVhbUxpa2UocmVhZGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gZnJvbUFzeW5jSXRlcmFibGUocmVhZGFibGVTdHJlYW1MaWtlVG9Bc3luY0dlbmVyYXRvcihyZWFkYWJsZVN0cmVhbSkpO1xufVxuZnVuY3Rpb24gcHJvY2Vzcyhhc3luY0l0ZXJhYmxlLCBzdWJzY3JpYmVyKSB7XG4gICAgdmFyIGFzeW5jSXRlcmFibGVfMSwgYXN5bmNJdGVyYWJsZV8xXzE7XG4gICAgdmFyIGVfMiwgX2E7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUsIGVfMl8xO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBfYi50cnlzLnB1c2goWzAsIDUsIDYsIDExXSk7XG4gICAgICAgICAgICAgICAgICAgIGFzeW5jSXRlcmFibGVfMSA9IF9fYXN5bmNWYWx1ZXMoYXN5bmNJdGVyYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBbNCwgYXN5bmNJdGVyYWJsZV8xLm5leHQoKV07XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIShhc3luY0l0ZXJhYmxlXzFfMSA9IF9iLnNlbnQoKSwgIWFzeW5jSXRlcmFibGVfMV8xLmRvbmUpKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzeW5jSXRlcmFibGVfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic2NyaWJlci5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAzO1xuICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFszLCAxXTtcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgZV8yXzEgPSBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFs2LCAsIDksIDEwXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGFzeW5jSXRlcmFibGVfMV8xICYmICFhc3luY0l0ZXJhYmxlXzFfMS5kb25lICYmIChfYSA9IGFzeW5jSXRlcmFibGVfMS5yZXR1cm4pKSkgcmV0dXJuIFszLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBfYS5jYWxsKGFzeW5jSXRlcmFibGVfMSldO1xuICAgICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDg7XG4gICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzMsIDEwXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs3XTtcbiAgICAgICAgICAgICAgICBjYXNlIDEwOiByZXR1cm4gWzddO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVTY2hlZHVsZShwYXJlbnRTdWJzY3JpcHRpb24sIHNjaGVkdWxlciwgd29yaywgZGVsYXksIHJlcGVhdCkge1xuICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgIGlmIChyZXBlYXQgPT09IHZvaWQgMCkgeyByZXBlYXQgPSBmYWxzZTsgfVxuICAgIHZhciBzY2hlZHVsZVN1YnNjcmlwdGlvbiA9IHNjaGVkdWxlci5zY2hlZHVsZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdvcmsoKTtcbiAgICAgICAgaWYgKHJlcGVhdCkge1xuICAgICAgICAgICAgcGFyZW50U3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNjaGVkdWxlKG51bGwsIGRlbGF5KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9LCBkZWxheSk7XG4gICAgcGFyZW50U3Vic2NyaXB0aW9uLmFkZChzY2hlZHVsZVN1YnNjcmlwdGlvbik7XG4gICAgaWYgKCFyZXBlYXQpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVkdWxlU3Vic2NyaXB0aW9uO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdGhyb3dFcnJvcihlcnJvck9yRXJyb3JGYWN0b3J5LCBzY2hlZHVsZXIpIHtcbiAgICB2YXIgZXJyb3JGYWN0b3J5ID0gaXNGdW5jdGlvbihlcnJvck9yRXJyb3JGYWN0b3J5KSA/IGVycm9yT3JFcnJvckZhY3RvcnkgOiBmdW5jdGlvbiAoKSB7IHJldHVybiBlcnJvck9yRXJyb3JGYWN0b3J5OyB9O1xuICAgIHZhciBpbml0ID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHsgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZXJyb3JGYWN0b3J5KCkpOyB9O1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShpbml0KTtcbn1cblxudmFyIEVtcHR5RXJyb3IgPSBjcmVhdGVFcnJvckNsYXNzKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gRW1wdHlFcnJvckltcGwoKSB7XG4gICAgICAgIF9zdXBlcih0aGlzKTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ0VtcHR5RXJyb3InO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnbm8gZWxlbWVudHMgaW4gc2VxdWVuY2UnO1xuICAgIH07XG59KTtcblxuZnVuY3Rpb24gbGFzdFZhbHVlRnJvbShzb3VyY2UsIGNvbmZpZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciBfaGFzVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdmFyIF92YWx1ZTtcbiAgICAgICAgc291cmNlLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBfdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBfaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChfaGFzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShfdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFbXB0eUVycm9yKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkRGF0ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKHZhbHVlKTtcbn1cblxudmFyIFRpbWVvdXRFcnJvciA9IGNyZWF0ZUVycm9yQ2xhc3MoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIHJldHVybiBmdW5jdGlvbiBUaW1lb3V0RXJyb3JJbXBsKGluZm8pIHtcbiAgICAgICAgaWYgKGluZm8gPT09IHZvaWQgMCkgeyBpbmZvID0gbnVsbDsgfVxuICAgICAgICBfc3VwZXIodGhpcyk7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9ICdUaW1lb3V0IGhhcyBvY2N1cnJlZCc7XG4gICAgICAgIHRoaXMubmFtZSA9ICdUaW1lb3V0RXJyb3InO1xuICAgICAgICB0aGlzLmluZm8gPSBpbmZvO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIHRpbWVvdXQoY29uZmlnLCBzY2hlZHVsZXJBcmcpIHtcbiAgICB2YXIgX2EgPSAoaXNWYWxpZERhdGUoY29uZmlnKSA/IHsgZmlyc3Q6IGNvbmZpZyB9IDogdHlwZW9mIGNvbmZpZyA9PT0gJ251bWJlcicgPyB7IGVhY2g6IGNvbmZpZyB9IDogY29uZmlnKSwgZmlyc3QgPSBfYS5maXJzdCwgZWFjaCA9IF9hLmVhY2gsIF9iID0gX2Eud2l0aCwgX3dpdGggPSBfYiA9PT0gdm9pZCAwID8gdGltZW91dEVycm9yRmFjdG9yeSA6IF9iLCBfYyA9IF9hLnNjaGVkdWxlciwgc2NoZWR1bGVyID0gX2MgPT09IHZvaWQgMCA/IGFzeW5jU2NoZWR1bGVyIDogX2MsIF9kID0gX2EubWV0YSwgbWV0YSA9IF9kID09PSB2b2lkIDAgPyBudWxsIDogX2Q7XG4gICAgaWYgKGZpcnN0ID09IG51bGwgJiYgZWFjaCA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ05vIHRpbWVvdXQgcHJvdmlkZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBvcGVyYXRlKGZ1bmN0aW9uIChzb3VyY2UsIHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsU291cmNlU3Vic2NyaXB0aW9uO1xuICAgICAgICB2YXIgdGltZXJTdWJzY3JpcHRpb247XG4gICAgICAgIHZhciBsYXN0VmFsdWUgPSBudWxsO1xuICAgICAgICB2YXIgc2VlbiA9IDA7XG4gICAgICAgIHZhciBzdGFydFRpbWVyID0gZnVuY3Rpb24gKGRlbGF5KSB7XG4gICAgICAgICAgICB0aW1lclN1YnNjcmlwdGlvbiA9IGV4ZWN1dGVTY2hlZHVsZShzdWJzY3JpYmVyLCBzY2hlZHVsZXIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFNvdXJjZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICBpbm5lckZyb20oX3dpdGgoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YTogbWV0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZTogbGFzdFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbjogc2VlbixcbiAgICAgICAgICAgICAgICAgICAgfSkpLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZGVsYXkpO1xuICAgICAgICB9O1xuICAgICAgICBvcmlnaW5hbFNvdXJjZVN1YnNjcmlwdGlvbiA9IHNvdXJjZS5zdWJzY3JpYmUoY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyKHN1YnNjcmliZXIsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdGltZXJTdWJzY3JpcHRpb24gPT09IG51bGwgfHwgdGltZXJTdWJzY3JpcHRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBzZWVuKys7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoKGxhc3RWYWx1ZSA9IHZhbHVlKSk7XG4gICAgICAgICAgICBlYWNoID4gMCAmJiBzdGFydFRpbWVyKGVhY2gpO1xuICAgICAgICB9LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCEodGltZXJTdWJzY3JpcHRpb24gPT09IG51bGwgfHwgdGltZXJTdWJzY3JpcHRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRpbWVyU3Vic2NyaXB0aW9uLmNsb3NlZCkpIHtcbiAgICAgICAgICAgICAgICB0aW1lclN1YnNjcmlwdGlvbiA9PT0gbnVsbCB8fCB0aW1lclN1YnNjcmlwdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RWYWx1ZSA9IG51bGw7XG4gICAgICAgIH0pKTtcbiAgICAgICAgIXNlZW4gJiYgc3RhcnRUaW1lcihmaXJzdCAhPSBudWxsID8gKHR5cGVvZiBmaXJzdCA9PT0gJ251bWJlcicgPyBmaXJzdCA6ICtmaXJzdCAtIHNjaGVkdWxlci5ub3coKSkgOiBlYWNoKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHRpbWVvdXRFcnJvckZhY3RvcnkoaW5mbykge1xuICAgIHRocm93IG5ldyBUaW1lb3V0RXJyb3IoaW5mbyk7XG59XG5cbmNsYXNzIExvYWRlZE9uY2VQdWJsaXNoZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNldCA9ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2FkZWRPbmNlIGlzIGFscmVhZHkgaW4gc3VjY2VzcyBzdGF0ZVwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2N1cnJlbnQgPSB7IHN0YXR1czogXCJzdWNjZXNzXCIsIGlzU3VjY2VzczogdHJ1ZSwgbG9hZGVkVmFsdWU6IHZhbHVlIH07XG4gICAgICB0aGlzLl9zdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgICAgdGhpcy5fc3ViamVjdC5jb21wbGV0ZSgpO1xuICAgIH07XG4gICAgdGhpcy50aHJvdyA9IChlcnJvciwgZXJyTXNnKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcImVycm9yXCIsIGlzU3VjY2VzczogZmFsc2UsIGVycm9yLCBlcnJNc2cgfTtcbiAgICAgIHRoaXMuX3N1YmplY3QuZXJyb3IoZXJyb3IpO1xuICAgIH07XG4gICAgdGhpcy5nZXRWYWx1ZUlmTG9hZGVkRWxzZSA9ICh2YWx1ZUlmTm90TG9hZGVkKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSByZXR1cm4gdGhpcy5fY3VycmVudC5sb2FkZWRWYWx1ZTtcbiAgICAgIHJldHVybiB2YWx1ZUlmTm90TG9hZGVkO1xuICAgIH07XG4gICAgdGhpcy5zdWJzY3JpYmUgPSAoZm4pID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgICAgZm4odGhpcy5fY3VycmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJlcnJvclwiKSB7XG4gICAgICAgIGZuKHRoaXMuX2N1cnJlbnQpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZSAobmV4dCk6IHBsZWFzZSBtYWtlIHN1cmUgdG8gdXBkYXRlIF9jdXJyZW50IGJlZm9yZSB0aGUgc3ViamVjdFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm4odGhpcy5fY3VycmVudCk7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcImVycm9yXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGUgKGVycm9yKTogcGxlYXNlIG1ha2Ugc3VyZSB0byB1cGRhdGUgX2N1cnJlbnQgYmVmb3JlIHRoZSBzdWJqZWN0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbih0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLndhaXRGb3JMb2FkID0gKHRpbWVvdXRDb25maWcpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fY3VycmVudC5sb2FkZWRWYWx1ZSk7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwiZXJyb3JcIikgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoaXMuX2N1cnJlbnQuZXJyb3IpO1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcImluaXRpYWxcIikgYXNzZXJ0TmV2ZXIodGhpcy5fY3VycmVudCk7XG4gICAgICBjb25zdCB0aW1lb3V0UGFyYW1zID0ge1xuICAgICAgICBmaXJzdDogdGltZW91dENvbmZpZy50aW1lb3V0U2VjICogMWUzLFxuICAgICAgICB3aXRoOiAoKSA9PiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcih0aW1lb3V0Q29uZmlnLnRpbWVvdXRFcnJNc2cpKVxuICAgICAgfTtcbiAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuX3N1YmplY3QucGlwZSh0aW1lb3V0KHRpbWVvdXRQYXJhbXMpKSk7XG4gICAgfTtcbiAgICB0aGlzLl9jdXJyZW50ID0geyBzdGF0dXM6IFwiaW5pdGlhbFwiLCBpc1N1Y2Nlc3M6IGZhbHNlIH07XG4gICAgdGhpcy5fc3ViamVjdCA9IG5ldyBTdWJqZWN0KCk7XG4gIH1cbiAgZ2V0IGN1cnJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQ7XG4gIH1cbn1cblxueiQxLmVudW0oW1wiZGV2XCIsIFwic3RnXCIsIFwicHJvZFwiXSk7XG5jb25zdCBjb25udG9CYXNlVXJscyA9IHtcbiAgcHJvZDogXCJodHRwczovL2Nvbm50by5nZXRvcGVucGF5LmNvbVwiLFxuICBzdGc6IFwiaHR0cHM6Ly9jb25udG8ub3BlbnBheXN0YWdpbmcuY29tXCIsXG4gIGRldjogXCJodHRwOi8vbG9jYWxob3N0OjgwMDBcIlxufTtcbmNvbnN0IGdldENvbm50b1VybCA9IChlbnYpID0+IHtcbiAgcmV0dXJuIGNvbm50b0Jhc2VVcmxzW2Vudl07XG59O1xuXG5mdW5jdGlvbiBhc3NlcnROZXZlcih2YWx1ZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBjYXNlOiAke3ZhbHVlfWApO1xufVxuY29uc3QgZ2V0V2luZG93U2FmZSA9ICgpID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIHJldHVybiB3aW5kb3c7XG59O1xuXG5jb25zdCBtZXRyaWNzUHVibGlzaGVyID0gbmV3IExvYWRlZE9uY2VQdWJsaXNoZXIoKTtcbmNvbnN0IE1FVFJJQ1NfUVVFVUVfS0VZID0gXCJvcF9tZXRyaWNzX3F1ZXVlXCI7XG5jb25zdCBNQVhfUkVUUllfQVRURU1QVFMgPSAzO1xuY29uc3QgQkFUQ0hfU0laRSA9IDM7XG5jb25zdCBCQVRDSF9JTlRFUlZBTF9NUyA9IDFlMztcbmNvbnN0IHsgbG9nX186IGxvZ19fJDEgfSA9IGNyZWF0ZU9qc0Zsb3dMb2dnZXJzKFwib3AtbWV0cmljc1wiKTtcbmNsYXNzIE1ldHJpY3NRdWV1ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucXVldWUgPSBbXTtcbiAgICB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9IGZhbHNlO1xuICAgIHRoaXMuYmF0Y2hUaW1lb3V0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3RFdmVudFRpbWVzdGFtcCA9IDA7XG4gICAgdGhpcy5vZmZsaW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBsb2dfXyQxKFwiTmV0d29yayBvZmZsaW5lLCBtZXRyaWNzIHdpbGwgYmUgcXVldWVkXCIpO1xuICAgICAgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICB9O1xuICAgIHRoaXMub25saW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBsb2dfXyQxKFwiTmV0d29yayBvbmxpbmUsIHByb2Nlc3NpbmcgbWV0cmljcyBxdWV1ZVwiKTtcbiAgICAgIHRoaXMucHJvY2Vzc1F1ZXVlKCk7XG4gICAgfTtcbiAgICB0aGlzLmxvYWRRdWV1ZUZyb21TdG9yYWdlKCk7XG4gICAgZ2V0V2luZG93U2FmZSgpPy5hZGRFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCB0aGlzLm9mZmxpbmVMaXN0ZW5lcik7XG4gICAgZ2V0V2luZG93U2FmZSgpPy5hZGRFdmVudExpc3RlbmVyKFwib25saW5lXCIsIHRoaXMub25saW5lTGlzdGVuZXIpO1xuICB9XG4gIGFkZEV2ZW50KGV2ZW50TmFtZSwgcHJvcGVydGllcywgY29udGV4dFByb3BlcnRpZXMpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50TmFtZSxcbiAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMgfHwge30sXG4gICAgICBjb250ZXh0UHJvcGVydGllczogY29udGV4dFByb3BlcnRpZXMgfHwge30sXG4gICAgICBub25jZTogdjQoKSxcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgIGRhdGV0aW1lOiAoLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCksXG4gICAgICBhdHRlbXB0Q291bnQ6IDAsXG4gICAgICB0aW1lRGlmZkZyb21QcmV2aW91c0V2ZW50OiB0aGlzLmxhc3RFdmVudFRpbWVzdGFtcCA/IERhdGUubm93KCkgLSB0aGlzLmxhc3RFdmVudFRpbWVzdGFtcCA6IDBcbiAgICB9O1xuICAgIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID0gZXZlbnQudGltZXN0YW1wO1xuICAgIHRoaXMucXVldWUucHVzaChldmVudCk7XG4gICAgdGhpcy5zYXZlUXVldWVUb1N0b3JhZ2UoKTtcbiAgICB0aGlzLnNjaGVkdWxlQmF0Y2hQcm9jZXNzaW5nKCk7XG4gIH1cbiAgbG9hZFF1ZXVlRnJvbVN0b3JhZ2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZFF1ZXVlID0gZ2V0V2luZG93U2FmZSgpPy5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oTUVUUklDU19RVUVVRV9LRVkpO1xuICAgICAgaWYgKHN0b3JlZFF1ZXVlKSB7XG4gICAgICAgIHRoaXMucXVldWUgPSBKU09OLnBhcnNlKHN0b3JlZFF1ZXVlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5xdWV1ZSA9IFtdO1xuICAgICAgdGhpcy5zYXZlUXVldWVUb1N0b3JhZ2UoKTtcbiAgICB9XG4gIH1cbiAgc2F2ZVF1ZXVlVG9TdG9yYWdlKCkge1xuICAgIGdldFdpbmRvd1NhZmUoKT8ubG9jYWxTdG9yYWdlLnNldEl0ZW0oTUVUUklDU19RVUVVRV9LRVksIEpTT04uc3RyaW5naWZ5KHRoaXMucXVldWUpKTtcbiAgfVxuICBzY2hlZHVsZUJhdGNoUHJvY2Vzc2luZygpIHtcbiAgICBjb25zdCBzYWZlV2luZG93ID0gZ2V0V2luZG93U2FmZSgpO1xuICAgIGlmIChzYWZlV2luZG93ICYmIG5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMucHJvY2Vzc2luZ1F1ZXVlICYmIHRoaXMucXVldWUubGVuZ3RoID4gMCAmJiAhdGhpcy5iYXRjaFRpbWVvdXQpIHtcbiAgICAgIHRoaXMuYmF0Y2hUaW1lb3V0ID0gc2FmZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5iYXRjaFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgICAgfSwgQkFUQ0hfSU5URVJWQUxfTVMpO1xuICAgIH1cbiAgfVxuICBjYW5jZWxCYXRjaFByb2Nlc3NpbmcoKSB7XG4gICAgaWYgKHRoaXMuYmF0Y2hUaW1lb3V0KSB7XG4gICAgICBnZXRXaW5kb3dTYWZlKCk/LmNsZWFyVGltZW91dCh0aGlzLmJhdGNoVGltZW91dCk7XG4gICAgICB0aGlzLmJhdGNoVGltZW91dCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gZmFsc2U7XG4gIH1cbiAgcHJvY2Vzc1F1ZXVlKCkge1xuICAgIGlmICghbmF2aWdhdG9yLm9uTGluZSB8fCB0aGlzLnByb2Nlc3NpbmdRdWV1ZSB8fCB0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9IHRydWU7XG4gICAgdGhpcy5zZW5kQmF0Y2goKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5xdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBhc3luYyBzZW5kQmF0Y2goKSB7XG4gICAgaWYgKHRoaXMucXVldWUubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgY29udGV4dCA9IG1ldHJpY3NQdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2Uodm9pZCAwKTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIGxvZ19fJDEoXCJNZXRyaWNzIGNvbnRleHQgbm90IGF2YWlsYWJsZSwgd2lsbCByZXRyeSBsYXRlclwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYmF0Y2ggPSB0aGlzLnF1ZXVlLnNsaWNlKDAsIEJBVENIX1NJWkUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXRjaFBheWxvYWQgPSB7XG4gICAgICAgIGV2ZW50czogYmF0Y2gubWFwKChldmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBldmVudF9uYW1lOiBldmVudC5ldmVudE5hbWUsXG4gICAgICAgICAgICBkZXZpY2VfdG9rZW46IGNvbnRleHQuZGV2aWNlVG9rZW4sXG4gICAgICAgICAgICBjb250ZXh0X3Byb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgLi4uY29udGV4dCxcbiAgICAgICAgICAgICAgLi4uZXZlbnQuY29udGV4dFByb3BlcnRpZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIG5vbmNlOiBldmVudC5ub25jZSxcbiAgICAgICAgICAgICAgZGF0ZXRpbWU6IGV2ZW50LmRhdGV0aW1lLFxuICAgICAgICAgICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgdGltZV9kaWZmX2Zyb21fcHJldmlvdXNfZXZlbnQ6IGV2ZW50LnRpbWVEaWZmRnJvbVByZXZpb3VzRXZlbnQsXG4gICAgICAgICAgICAgIGNoZWNrb3V0X3NlY3VyZV90b2tlbjogY29udGV4dC5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgICAgICAuLi5ldmVudC5wcm9wZXJ0aWVzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgICBjb25zdCBjb25udG9VcmwgPSBnZXRDb25udG9VcmwoY29udGV4dC5lbnZpcm9ubWVudCk7XG4gICAgICBjb25zdCBtZXRyaWNzUm91dGVyID0gbmV3IFVSTChcIi9tZXRyaWNzL3B1YmxpYy9jYXB0dXJlXCIsIGNvbm50b1VybCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKG1ldHJpY3NSb3V0ZXIudG9TdHJpbmcoKSwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYmF0Y2hQYXlsb2FkKSxcbiAgICAgICAga2VlcGFsaXZlOiB0cnVlXG4gICAgICAgIC8vIFRvIHNlbmQgZXZlbnRzIGV2ZW4gaWYgdGhlIHBhZ2UgaXMgdW5sb2FkZWRcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRoaXMucXVldWUgPSB0aGlzLnF1ZXVlLnNsaWNlKGJhdGNoLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuc2F2ZVF1ZXVlVG9TdG9yYWdlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhhbmRsZUZhaWxlZEJhdGNoKGJhdGNoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nX18kMShcIkVycm9yIHNlbmRpbmcgbWV0cmljcyBiYXRjaDpcIiwgZXJyb3IpO1xuICAgICAgdGhpcy5oYW5kbGVGYWlsZWRCYXRjaChiYXRjaCk7XG4gICAgfVxuICB9XG4gIGhhbmRsZUZhaWxlZEJhdGNoKGJhdGNoKSB7XG4gICAgYmF0Y2guZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgIGV2ZW50LmF0dGVtcHRDb3VudCsrO1xuICAgIH0pO1xuICAgIGNvbnN0IGV2ZW50c1RvS2VlcCA9IGJhdGNoLmZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmF0dGVtcHRDb3VudCA8IE1BWF9SRVRSWV9BVFRFTVBUUyk7XG4gICAgdGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuc2xpY2UoYmF0Y2gubGVuZ3RoKTtcbiAgICB0aGlzLnF1ZXVlID0gWy4uLmV2ZW50c1RvS2VlcCwgLi4udGhpcy5xdWV1ZV07XG4gICAgdGhpcy5zYXZlUXVldWVUb1N0b3JhZ2UoKTtcbiAgfVxuICBjbGVhbnVwKCkge1xuICAgIGdldFdpbmRvd1NhZmUoKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm9mZmxpbmVcIiwgdGhpcy5vZmZsaW5lTGlzdGVuZXIpO1xuICAgIGdldFdpbmRvd1NhZmUoKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCB0aGlzLm9ubGluZUxpc3RlbmVyKTtcbiAgICB0aGlzLmNhbmNlbEJhdGNoUHJvY2Vzc2luZygpO1xuICB9XG59XG5uZXcgTWV0cmljc1F1ZXVlKCk7XG5cbnokMS5vYmplY3Qoe1xuICBzdHJpcGVfcGs6IHokMS5zdHJpbmcoKSxcbiAgY2xpZW50X3NlY3JldDogeiQxLnN0cmluZygpLFxuICBzdHJpcGVfcG1faWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKCksXG4gIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG59KTtcblxuY29uc3QgZXh0cmFjdElzc3Vlc1BlckZpZWxkID0gKGVycm9yKSA9PiB7XG4gIGNvbnN0IGlzc3Vlc1BlckZpZWxkID0ge307XG4gIE9iamVjdC5lbnRyaWVzKGVycm9yKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gRmllbGROYW1lRW51bS5wYXJzZShrZXkpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGlzc3Vlc1BlckZpZWxkW2ZpZWxkTmFtZV0gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZS5fZXJyb3JzKSkge1xuICAgICAgICBpc3N1ZXNQZXJGaWVsZFtmaWVsZE5hbWVdID0gdmFsdWUuX2Vycm9ycztcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gaXNzdWVzUGVyRmllbGQ7XG59O1xuXG5jb25zdCB7IGxvZ19fLCBlcnJfXzogZXJyX18kMSB9ID0gY3JlYXRlT2pzRmxvd0xvZ2dlcnMoXCJjb21tb24tY2NcIik7XG5jb25zdCBjcmVhdGVEeW5hbWljVmFsaWRhdGlvblNjaGVtYSA9ICh7XG4gIHJlcXVpcmVfemlwX2NvZGUsXG4gIHJlcXVpcmVfZnVsbF9iaWxsaW5nX2FkZHJlc3MsXG4gIHJlcXVpcmVfZnVsbF9zaGlwcGluZ19hZGRyZXNzLFxuICBwYXltZW50X21ldGhvZCxcbiAgaXNCdXNpbmVzc1B1cmNoYXNlXG59LCBub25DZGVGb3JtSW5wdXRzKSA9PiB7XG4gIGNvbnN0IGNvbmRpdGlvbmFsRmllbGRzID0ge307XG4gIGlmIChwYXltZW50X21ldGhvZCA9PT0gXCJhY2hcIikge1xuICAgIGNvbmRpdGlvbmFsRmllbGRzW0ZpZWxkTmFtZS5GSVJTVF9OQU1FXSA9IHokMS5zdHJpbmcoKS5taW4oMiwgeyBtZXNzYWdlOiBcIk1pbmltdW0gbGVuZ3RoIGlzIDJcIiB9KTtcbiAgICBjb25kaXRpb25hbEZpZWxkc1tGaWVsZE5hbWUuTEFTVF9OQU1FXSA9IHokMS5zdHJpbmcoKS5taW4oMiwgeyBtZXNzYWdlOiBcIk1pbmltdW0gbGVuZ3RoIGlzIDJcIiB9KTtcbiAgfVxuICBpZiAocmVxdWlyZV96aXBfY29kZSkge1xuICAgIGNvbmRpdGlvbmFsRmllbGRzW0ZpZWxkTmFtZS5aSVBfQ09ERV0gPSBSZXF1aXJlZFN0cmluZztcbiAgfVxuICBpZiAocmVxdWlyZV9mdWxsX2JpbGxpbmdfYWRkcmVzcykge1xuICAgIGNvbmRpdGlvbmFsRmllbGRzW0ZpZWxkTmFtZS5MSU5FMV0gPSBSZXF1aXJlZFN0cmluZztcbiAgICBjb25kaXRpb25hbEZpZWxkc1tGaWVsZE5hbWUuQ0lUWV0gPSBSZXF1aXJlZFN0cmluZztcbiAgICBjb25kaXRpb25hbEZpZWxkc1tGaWVsZE5hbWUuU1RBVEVdID0gUmVxdWlyZWRTdHJpbmc7XG4gICAgY29uZGl0aW9uYWxGaWVsZHNbRmllbGROYW1lLkNPVU5UUlldID0gUmVxdWlyZWRTdHJpbmc7XG4gICAgY29uZGl0aW9uYWxGaWVsZHNbRmllbGROYW1lLlpJUF9DT0RFXSA9IFJlcXVpcmVkU3RyaW5nO1xuICB9XG4gIGlmIChyZXF1aXJlX2Z1bGxfc2hpcHBpbmdfYWRkcmVzcykge1xuICAgIGNvbmRpdGlvbmFsRmllbGRzW0ZpZWxkTmFtZS5TSElQUElOR19MSU5FMV0gPSBSZXF1aXJlZFN0cmluZztcbiAgICBjb25kaXRpb25hbEZpZWxkc1tGaWVsZE5hbWUuU0hJUFBJTkdfQ0lUWV0gPSBSZXF1aXJlZFN0cmluZztcbiAgICBjb25kaXRpb25hbEZpZWxkc1tGaWVsZE5hbWUuU0hJUFBJTkdfU1RBVEVdID0gUmVxdWlyZWRTdHJpbmc7XG4gICAgY29uZGl0aW9uYWxGaWVsZHNbRmllbGROYW1lLlNISVBQSU5HX0NPVU5UUlldID0gUmVxdWlyZWRTdHJpbmc7XG4gICAgY29uZGl0aW9uYWxGaWVsZHNbRmllbGROYW1lLlNISVBQSU5HX1pJUF9DT0RFXSA9IFJlcXVpcmVkU3RyaW5nO1xuICB9XG4gIGlmIChub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5JU19CVVNJTkVTU19QVVJDSEFTRV0gPz8gaXNCdXNpbmVzc1B1cmNoYXNlKSB7XG4gICAgY29uZGl0aW9uYWxGaWVsZHNbRmllbGROYW1lLkJVU0lORVNTX05BTUVdID0gUmVxdWlyZWRTdHJpbmc7XG4gIH1cbiAgaWYgKE9iamVjdC5rZXlzKGNvbmRpdGlvbmFsRmllbGRzKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gUmVxdWlyZWRGb3JtRmllbGRzO1xuICB9XG4gIHJldHVybiBSZXF1aXJlZEZvcm1GaWVsZHMuZXh0ZW5kKGNvbmRpdGlvbmFsRmllbGRzKTtcbn07XG5jb25zdCB2YWxpZGF0ZU5vbkNkZUZvcm1GaWVsZHMgPSAobm9uQ2RlRm9ybUlucHV0cywgb25WYWxpZGF0aW9uRXJyb3IsIGRlZmF1bHRGaWVsZFZhbHVlcyA9IHt9KSA9PiB7XG4gIGlmIChkZWZhdWx0RmllbGRWYWx1ZXMpIHtcbiAgICBsb2dfXyhgUmVjZWl2ZWQgZGVmYXVsdCBmaWVsZCB2YWx1ZXM6ICR7SlNPTi5zdHJpbmdpZnkoZGVmYXVsdEZpZWxkVmFsdWVzKX1gKTtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZGVmYXVsdEZpZWxkVmFsdWVzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBjb25zdCB2YWx1ZSA9IGRlZmF1bHRGaWVsZFZhbHVlc1trZXldO1xuICAgICAgaWYgKCFub25DZGVGb3JtSW5wdXRzW2tleV0pIHtcbiAgICAgICAgbm9uQ2RlRm9ybUlucHV0c1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIG5vbkNkZUZvcm1JbnB1dHNbRmllbGROYW1lLklTX1NISVBQSU5HX1NBTUVfQVNfQklMTElOR10gPSAhIW5vbkNkZUZvcm1JbnB1dHNbRmllbGROYW1lLklTX1NISVBQSU5HX1NBTUVfQVNfQklMTElOR107XG4gIGlmIChub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5JU19TSElQUElOR19TQU1FX0FTX0JJTExJTkddKSB7XG4gICAgbm9uQ2RlRm9ybUlucHV0c1tGaWVsZE5hbWUuU0hJUFBJTkdfTElORTFdID0gbm9uQ2RlRm9ybUlucHV0c1tGaWVsZE5hbWUuTElORTFdO1xuICAgIG5vbkNkZUZvcm1JbnB1dHNbRmllbGROYW1lLlNISVBQSU5HX0xJTkUyXSA9IG5vbkNkZUZvcm1JbnB1dHNbRmllbGROYW1lLkxJTkUyXTtcbiAgICBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5TSElQUElOR19MSU5FM10gPSBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5MSU5FM107XG4gICAgbm9uQ2RlRm9ybUlucHV0c1tGaWVsZE5hbWUuU0hJUFBJTkdfQ0lUWV0gPSBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5DSVRZXTtcbiAgICBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5TSElQUElOR19TVEFURV0gPSBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5TVEFURV07XG4gICAgbm9uQ2RlRm9ybUlucHV0c1tGaWVsZE5hbWUuU0hJUFBJTkdfQ09VTlRSWV0gPSBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5DT1VOVFJZXTtcbiAgICBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5TSElQUElOR19aSVBfQ09ERV0gPSBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5aSVBfQ09ERV07XG4gIH1cbiAgY29uc3QgdmFsaWRhdGlvblNjaGVtYSA9IGNyZWF0ZUR5bmFtaWNWYWxpZGF0aW9uU2NoZW1hKGRlZmF1bHRGaWVsZFZhbHVlcywgbm9uQ2RlRm9ybUlucHV0cyk7XG4gIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRpb25TY2hlbWEuc2FmZVBhcnNlKG5vbkNkZUZvcm1JbnB1dHMpO1xuICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkID0gcmVzdWx0LmVycm9yLmZvcm1hdCgpO1xuICAgIGNvbnN0IGlzc3VlcyA9IGV4dHJhY3RJc3N1ZXNQZXJGaWVsZChmb3JtYXR0ZWQpO1xuICAgIGNvbnN0IGlzc3VlS2V5cyA9IE9iamVjdC5rZXlzKGlzc3Vlcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpc3N1ZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGlzc3VlS2V5c1tpXTtcbiAgICAgIGNvbnN0IGVycm9ycyA9IGlzc3Vlc1tmaWVsZE5hbWVdO1xuICAgICAgb25WYWxpZGF0aW9uRXJyb3IoZmllbGROYW1lLCBlcnJvcnMsIGZpZWxkTmFtZSk7XG4gICAgfVxuICAgIGVycl9fJDEoXCJHb3QgdmFsaWRhdGlvbiBlcnJvcnMgaW4gbm9uLUNERSBmb3JtIGZpZWxkc1wiLCBpc3N1ZXMpO1xuICAgIHRocm93IG5ldyBFcnJvcihcIkFsbW9zdCB0aGVyZSEgSnVzdCBhIGZldyB0aGluZ3MgaGlnaGxpZ2h0ZWQgYWJvdmUgdG8gZml4IGJlZm9yZSB5b3UgY2FuIHN1Ym1pdC5cIik7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5kYXRhO1xufTtcblxuY29uc3QgUGF5bWVudFByb2Nlc3NvciA9IHokMS5lbnVtKFtcInN0cmlwZVwiLCBcImFpcndhbGxleFwiLCBcImF1dGhvcml6ZV9uZXRcIiwgXCJhZHllblwiLCBcInBheXBhbFwiLCBcInBvY2t5dFwiLCBcImxvb3BcIl0pO1xuKHtcbiAgcHJvY2Vzc29yOiBQYXltZW50UHJvY2Vzc29yLkVudW0uc3RyaXBlfSk7XG5cbnokMS5vYmplY3Qoe1xuICBcIm9wLWFpcndhbGxleC0zZHMtdXJsXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1haXJ3YWxsZXgtaW5pdGlhbC1pbnRlbnQtaWRcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFpcndhbGxleC1jb25zZW50LWlkXCI6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSk7XG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWlyd2FsbGV4XCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgcHJvY2Vzc29yX2FjY291bnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9uYW1lOiB6JDEuc3RyaW5nKCksXG4gICAgZ29vZ2xlX3BheV9tZXJjaGFudF9pZDogeiQxLnN0cmluZygpLm51bGxpc2goKVxuICB9KVxufSk7XG5jb25zdCBBV1hfTE9BRElORyA9IHtcbiAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICBpc0xvYWRpbmc6IHRydWUsXG4gIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICB9XG59O1xuXG56JDEub2JqZWN0KHtcbiAgZGF0YTogeiQxLm9iamVjdCh7XG4gICAgbWVzc2FnZUhlYWRlcnM6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICAgIGVycm9yczogeiQxLmFycmF5KHokMS5hbnkoKSksXG4gICAgbWVzc2FnZVR5cGU6IHokMS5zdHJpbmcoKSxcbiAgICBtZXNzYWdlQm9keTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSlcbiAgfSksXG4gIG9yaWdpbjogeiQxLmxpdGVyYWwoXCJodHRwczovL2FwcGxlcGF5LmNkbi1hcHBsZS5jb21cIilcbn0pO1xuXG5jb25zdCBBZHllbkVudmlyb25tZW50ID0geiQxLmVudW0oW1widGVzdFwiLCBcImxpdmVcIiwgXCJsaXZlLXVzXCIsIFwibGl2ZS1pblwiLCBcImxpdmUtYXBzZVwiLCBcImxpdmUtYXVcIl0pO1xueiQxLmVudW0oW1xuICBcImFyXCIsXG4gIFwiYmctQkdcIixcbiAgXCJjYS1FU1wiLFxuICBcImNzLUNaXCIsXG4gIFwiZGEtREtcIixcbiAgXCJkZS1ERVwiLFxuICBcImVsLUdSXCIsXG4gIFwiZW4tVVNcIixcbiAgXCJlcy1FU1wiLFxuICBcImV0LUVFXCIsXG4gIFwiZmktRklcIixcbiAgXCJmci1GUlwiLFxuICBcImhyLUhSXCIsXG4gIFwiaHUtSFVcIixcbiAgXCJpcy1JU1wiLFxuICBcIml0LUlUXCIsXG4gIFwiamEtSlBcIixcbiAgXCJrby1LUlwiLFxuICBcImx0LUxUXCIsXG4gIFwibHYtTFZcIixcbiAgXCJubC1OTFwiLFxuICBcIm5vLU5PXCIsXG4gIFwicGwtUExcIixcbiAgXCJwdC1CUlwiLFxuICBcInB0LVBUXCIsXG4gIFwicm8tUk9cIixcbiAgXCJydS1SVVwiLFxuICBcInNrLVNLXCIsXG4gIFwic2wtU0lcIixcbiAgXCJzdi1TRVwiLFxuICBcInpoLUNOXCIsXG4gIFwiemgtVFdcIlxuXSk7XG56JDEub2JqZWN0KHtcbiAgXCJvcC1hY2NvdW50LWlkXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1hZHllbi1jbGllbnQta2V5XCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1hZHllbi1lbnZpcm9ubWVudFwiOiBBZHllbkVudmlyb25tZW50LFxuICBcIm9wLWFkeWVuLWFjdGlvblwiOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWR5ZW5cIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSk7XG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWR5ZW5cIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICBnb29nbGVfcGF5X21lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpXG4gIH0pXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImtsYXJuYVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe30pLm51bGxpc2goKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWlyd2FsbGV4XCIpXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhdXRob3JpemVfbmV0XCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgcHJvY2Vzc29yX2FjY291bnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9uYW1lOiB6JDEuc3RyaW5nKCksXG4gICAgZ29vZ2xlX3BheV9tZXJjaGFudF9pZDogeiQxLnN0cmluZygpLm51bGxpc2goKVxuICB9KVxufSk7XG5cbnokMS5vYmplY3Qoe1xuICBzdGVwX3VwX3VybDogeiQxLnN0cmluZygpLFxuICBhY2Nlc3NfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZGRfdXJsOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgZGRfdG9rZW46IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBtZXJjaGFudF9kYXRhOiB6JDEuc3RyaW5nKClcbn0pO1xuXG56JDEub2JqZWN0KHtcbiAgXCJvcC1wb2NreXQtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXR4bi1ub1wiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXJlZi1ub1wiOiB6JDEuc3RyaW5nKClcbn0pO1xuXG56JDEub2JqZWN0KHtcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuXG56JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIG91cl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpXG4gIH0pXG4pLmxlbmd0aCgxKTtcblxueiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImxvb3BcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImNyeXB0b1wiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgZW50aXR5X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgYXBpX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gICAgc3VwcG9ydGVkX2N1cnJlbmNpZXM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICAgIGVudmlyb25tZW50OiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xudmFyIEVudmlyb25tZW50ID0gLyogQF9fUFVSRV9fICovICgoRW52aXJvbm1lbnQyKSA9PiB7XG4gIEVudmlyb25tZW50MltcIkxvY2FsXCJdID0gXCJsb2NhbFwiO1xuICBFbnZpcm9ubWVudDJbXCJEZXZlbG9wbWVudFwiXSA9IFwiZGV2ZWxvcG1lbnRcIjtcbiAgRW52aXJvbm1lbnQyW1wiU3RhZ2luZ1wiXSA9IFwic3RhZ2luZ1wiO1xuICBFbnZpcm9ubWVudDJbXCJEZW1vXCJdID0gXCJkZW1vXCI7XG4gIEVudmlyb25tZW50MltcIlByb2R1Y3Rpb25cIl0gPSBcInByb2R1Y3Rpb25cIjtcbiAgcmV0dXJuIEVudmlyb25tZW50Mjtcbn0pKEVudmlyb25tZW50IHx8IHt9KTtcbnZhciBQYXlJbkZhaWxlZCA9IC8qIEBfX1BVUkVfXyAqLyAoKFBheUluRmFpbGVkMikgPT4ge1xuICBQYXlJbkZhaWxlZDJbXCJNRVRIT0RfQ1JFQVRJT05fRkFJTEVEXCJdID0gXCJtZXRob2RDcmVhdGlvbkZhaWxlZFwiO1xuICBQYXlJbkZhaWxlZDJbXCJJTlNVRkZJQ0lFTlRfQkFMQU5DRVwiXSA9IFwiaW5zdWZmaWNpZW50QmFsYW5jZVwiO1xuICBQYXlJbkZhaWxlZDJbXCJJTlNVRkZJQ0lFTlRfQVVUSE9SSVpBVElPTlwiXSA9IFwiaW5zdWZmaWNpZW50QXV0aG9yaXphdGlvblwiO1xuICBQYXlJbkZhaWxlZDJbXCJTSUdORURfTUVTU0FHRV9SRVFVSVJFRFwiXSA9IFwic2lnbmVkTWVzc2FnZVJlcXVpcmVkXCI7XG4gIFBheUluRmFpbGVkMltcIkNVU1RPTUVSX0NSRUFUSU9OX0ZBSUxFRFwiXSA9IFwiY3VzdG9tZXJDcmVhdGlvbkZhaWxlZFwiO1xuICBQYXlJbkZhaWxlZDJbXCJQQVlNRU5UX0ZBSUxFRFwiXSA9IFwicGF5bWVudEZhaWxlZFwiO1xuICBQYXlJbkZhaWxlZDJbXCJUUkFOU0FDVElPTl9GQUlMRURcIl0gPSBcInRyYW5zYWN0aW9uRmFpbGVkXCI7XG4gIHJldHVybiBQYXlJbkZhaWxlZDI7XG59KShQYXlJbkZhaWxlZCB8fCB7fSk7XG52YXIgUGF5SW5TdGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyAoKFBheUluU3RhdGUyKSA9PiB7XG4gIFBheUluU3RhdGUyW1wiSURMRVwiXSA9IFwiaWRsZVwiO1xuICBQYXlJblN0YXRlMltcIkNPTkZJUk1JTkdfQkFMQU5DRVwiXSA9IFwiY29uZmlybWluZ0JhbGFuY2VcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDT05GSVJNSU5HX0FVVEhPUklaQVRJT05cIl0gPSBcImNvbmZpcm1pbmdBdXRob3JpemF0aW9uXCI7XG4gIFBheUluU3RhdGUyW1wiVVBEQVRJTkdfQVVUSE9SSVpBVElPTlwiXSA9IFwidXBkYXRpbmdBdXRob3JpemF0aW9uXCI7XG4gIFBheUluU3RhdGUyW1wiU0lHTklOR19NRVNTQUdFXCJdID0gXCJzaWduaW5nTWVzc2FnZVwiO1xuICBQYXlJblN0YXRlMltcIkNSRUFUSU5HX0NVU1RPTUVSXCJdID0gXCJjcmVhdGluZ0N1c3RvbWVyXCI7XG4gIFBheUluU3RhdGUyW1wiQ1JFQVRJTkdfUEFZTUVOVF9NRVRIT0RcIl0gPSBcImNyZWF0aW5nUGF5bWVudE1ldGhvZFwiO1xuICBQYXlJblN0YXRlMltcIlBST0NFU1NJTkdfUEFZTUVOVFwiXSA9IFwicHJvY2Vzc2luZ1BheW1lbnRcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDUkVBVElOR19QQVlNRU5UXCJdID0gXCJjcmVhdGluZ1BheW1lbnRcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDT05GSVJNSU5HX1BBWU1FTlRcIl0gPSBcImNvbmZpcm1pbmdQYXltZW50XCI7XG4gIFBheUluU3RhdGUyW1wiQ09NUExFVEVcIl0gPSBcImNvbXBsZXRlXCI7XG4gIFBheUluU3RhdGUyW1wiQVVUSE9SSVpFRFwiXSA9IFwiYXV0aG9yaXplZFwiO1xuICByZXR1cm4gUGF5SW5TdGF0ZTI7XG59KShQYXlJblN0YXRlIHx8IHt9KTtcblxuY29uc3QgTE9PUF9MT0FESU5HID0ge1xuICBpc0F2YWlsYWJsZTogZmFsc2UsXG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgY29uZmlnOiBudWxsLFxuICB3aWRnZXQ6IG51bGxcbn07XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJwYXlwYWxcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHsgY2xpZW50X2lkOiB6JDEuc3RyaW5nKCkgfSksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInBheXBhbFwiKVxufSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJwb2NreXRcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcInBheXBhbFwiKVxufSk7XG56JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIHBheXBhbF9pZnJhbWVfdXJsOiB6JDEuc3RyaW5nKCksXG4gICAgdmVyaWZ5X3Rva2VuOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuXG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYWZmaXJtXCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJzdHJpcGVcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBzdHJpcGVfcGs6IHokMS5zdHJpbmcoKVxuICB9KVxufSk7XG56JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIG91cl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm51bGxpc2goKSxcbiAgICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuXG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYWZ0ZXJwYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpLFxuICAgIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJrbGFybmFcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpLFxuICAgIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJzdHJpcGVfbGlua1wiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xueiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBvdXJfZXhpc3RpbmdfcG1faWQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnVuaW9uKFt6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSwgeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpXSksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcblxuY29uc3QgeyBlcnJfXyB9ID0gY3JlYXRlT2pzRmxvd0xvZ2dlcnMoXCJmb3JtLWNhbGxiYWNrc1wiKTtcbmNvbnN0IE9wdGlvbmFsRm4gPSB6JDEuZnVuY3Rpb24oKS5vcHRpb25hbCgpO1xuY29uc3QgWm9kRm9ybUNhbGxiYWNrcyA9IHokMS5vYmplY3Qoe1xuICBvbkZvY3VzOiBPcHRpb25hbEZuLFxuICBvbkJsdXI6IE9wdGlvbmFsRm4sXG4gIG9uQ2hhbmdlOiBPcHRpb25hbEZuLFxuICBvbkxvYWQ6IE9wdGlvbmFsRm4sXG4gIG9uTG9hZEVycm9yOiBPcHRpb25hbEZuLFxuICBvblZhbGlkYXRpb25FcnJvcjogT3B0aW9uYWxGbixcbiAgb25DaGVja291dFN0YXJ0ZWQ6IE9wdGlvbmFsRm4sXG4gIG9uQ2hlY2tvdXRTdWNjZXNzOiBPcHRpb25hbEZuLFxuICBvblNldHVwUGF5bWVudE1ldGhvZFN1Y2Nlc3M6IE9wdGlvbmFsRm4sXG4gIG9uQ2hlY2tvdXRFcnJvcjogT3B0aW9uYWxGbixcbiAgb25QYXltZW50UmVxdWVzdExvYWQ6IE9wdGlvbmFsRm5cbn0pO1xuY2xhc3MgRm9ybUNhbGxiYWNrcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8qKlxuICAgICAqIFNldHMgQUxMIGZvcm0gY2FsbGJhY2tzLiBOb3RlIHRoYXQgYWxsIG9sZCBjYWxsYmFja3MgYXJlIHJlbW92ZWQuXG4gICAgICovXG4gICAgdGhpcy5zZXRDYWxsYmFja3MgPSAocmF3Q2FsbGJhY2tzKSA9PiB7XG4gICAgICB0aGlzLl9jYWxsYmFja3MgPSBGb3JtQ2FsbGJhY2tzLmNyZWF0ZUVtcHR5Q2FsbGJhY2tzKCk7XG4gICAgICBPYmplY3QuZW50cmllcyhyYXdDYWxsYmFja3MpLmZvckVhY2goKFtrZXksIHJhd0NhbGxiYWNrXSkgPT4ge1xuICAgICAgICBjb25zdCBzYWZlQ2FsbGJhY2sgPSBtYWtlQ2FsbGJhY2tTYWZlKGtleSwgcmF3Q2FsbGJhY2sgPz8gRm9ybUNhbGxiYWNrcy5OT09QLCBlcnJfXyk7XG4gICAgICAgIHRoaXMuX2NhbGxiYWNrc1trZXldID0gc2FmZUNhbGxiYWNrO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLl9jYWxsYmFja3MgPSBGb3JtQ2FsbGJhY2tzLmNyZWF0ZUVtcHR5Q2FsbGJhY2tzKCk7XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLk5PT1AgPSAoKSA9PiB7XG4gICAgfTtcbiAgfVxuICBzdGF0aWMge1xuICAgIHRoaXMuY3JlYXRlRW1wdHlDYWxsYmFja3MgPSAoKSA9PiB7XG4gICAgICBjb25zdCB4ID0ge307XG4gICAgICBPYmplY3Qua2V5cyhab2RGb3JtQ2FsbGJhY2tzLmtleW9mKCkuZW51bSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHhba2V5XSA9IEZvcm1DYWxsYmFja3MuTk9PUDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHg7XG4gICAgfTtcbiAgfVxuICBzdGF0aWMge1xuICAgIHRoaXMuZnJvbU9iamVjdCA9IChvYmopID0+IHtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IEZvcm1DYWxsYmFja3MoKTtcbiAgICAgIGluc3RhbmNlLnNldENhbGxiYWNrcyhab2RGb3JtQ2FsbGJhY2tzLnBhcnNlKG9iaikpO1xuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgYSByZWFkLW9ubHkgdmVyc2lvbiBvZiB0aGUgY2FsbGJhY2tzIG9iamVjdC5cbiAgICovXG4gIGdldCBnZXQoKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fY2FsbGJhY2tzIH07XG4gIH1cbn1cblxudmFyIFN1Ym1pdE1ldGhvZHMgPSAvKiBAX19QVVJFX18gKi8gKChTdWJtaXRNZXRob2RzMikgPT4ge1xuICBTdWJtaXRNZXRob2RzMltcImNhcmRcIl0gPSBcImNhcmRcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJwb2NreXRQYXlwYWxcIl0gPSBcInBvY2t5dC1wYXlwYWxcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhcHBsZVBheVwiXSA9IFwiYXBwbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiZ29vZ2xlUGF5XCJdID0gXCJnb29nbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wibG9vcENyeXB0b1wiXSA9IFwibG9vcC1jcnlwdG9cIjtcbiAgU3VibWl0TWV0aG9kczJbXCJwYXlwYWxcIl0gPSBcInBheXBhbFwiO1xuICBTdWJtaXRNZXRob2RzMltcImtsYXJuYVwiXSA9IFwia2xhcm5hXCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWZmaXJtXCJdID0gXCJhZmZpcm1cIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhZnRlcnBheVwiXSA9IFwiYWZ0ZXJwYXlcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJzdHJpcGVMaW5rXCJdID0gXCJzdHJpcGUtbGlua1wiO1xuICBTdWJtaXRNZXRob2RzMltcImFpcndhbGxleEdvb2dsZVBheVwiXSA9IFwiYWlyd2FsbGV4LWdvb2dsZS1wYXlcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhaXJ3YWxsZXhBcHBsZVBheVwiXSA9IFwiYWlyd2FsbGV4LWFwcGxlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImF1dGhvcml6ZW5ldEdvb2dsZVBheVwiXSA9IFwiYXV0aG9yaXplbmV0LWdvb2dsZS1wYXlcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhdXRob3JpemVuZXRBcHBsZVBheVwiXSA9IFwiYXV0aG9yaXplbmV0LWFwcGxlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImFkeWVuR29vZ2xlUGF5XCJdID0gXCJhZHllbi1nb29nbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWR5ZW5BcHBsZVBheVwiXSA9IFwiYWR5ZW4tYXBwbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWlyd2FsbGV4QUNIXCJdID0gXCJhaXJ3YWxsZXgtYWNoXCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWlyd2FsbGV4RUZUXCJdID0gXCJhaXJ3YWxsZXgtZWZ0XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWlyd2FsbGV4QkFDU1wiXSA9IFwiYWlyd2FsbGV4LWJhY3NcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhaXJ3YWxsZXhTRVBBXCJdID0gXCJhaXJ3YWxsZXgtc2VwYVwiO1xuICByZXR1cm4gU3VibWl0TWV0aG9kczI7XG59KShTdWJtaXRNZXRob2RzIHx8IHt9KTtcbnokMS5uYXRpdmVFbnVtKFN1Ym1pdE1ldGhvZHMpO1xuXG5jb25zdCBNT0JJTEVfV0FMTEVUX0xPQURJTkdfU1RBVEUgPSB7XG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICBwcm9jZXNzb3JzOiBbXSxcbiAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYHN0YXJ0RmxvdyB0cmlnZ2VyZWQgd2hpbGUgcGF5bWVudCByZXF1ZXN0IGlzIHN0aWxsIG5vdCByZWFkeS4gXG4gICAgICBZb3UgY2FuIGNoZWNrIHRoZSBcIi5pc0xvYWRpbmdcIiBwYXJhbSB0byBrbm93IHdoZW4gYSBwYXltZW50IHJlcXVlc3QgaXMgc3RpbGwgbG9hZGluZywgXG4gICAgICBhbmQgXCIuaXNBdmFpbGFibGVcIiB0byBrbm93IGlmIGEgcGF5bWVudCByZXF1ZXN0IGlzIGF2YWlsYWJsZS5gXG4gICAgKTtcbiAgfVxufTtcbmNvbnN0IGdldEFwcGxlUGF5UHJvY2Vzc29ycyA9IChpbml0Rmxvd3MpID0+IHtcbiAgY29uc3QgYXBwbGVQYXlJbml0Rmxvd3MgPSBbaW5pdEZsb3dzLmFpcndhbGxleEFwcGxlUGF5LCBpbml0Rmxvd3MuYXV0aG9yaXplTmV0QXBwbGVQYXksIGluaXRGbG93cy5hZHllbkFwcGxlUGF5XTtcbiAgY29uc3QgYXBwbGVQYXlJbml0UmVzdWx0cyA9IFtdO1xuICBhcHBsZVBheUluaXRGbG93cy5mb3JFYWNoKChmbG93KSA9PiB7XG4gICAgY29uc3QgZmxvd1ZhbHVlID0gZmxvdy5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgaWYgKGZsb3dWYWx1ZT8uaXNBdmFpbGFibGUpIHtcbiAgICAgIGFwcGxlUGF5SW5pdFJlc3VsdHMucHVzaChmbG93VmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHN0cmlwZVBSRmxvd1Jlc3VsdCA9IGluaXRGbG93cy5zdHJpcGVQUi5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gIGlmIChzdHJpcGVQUkZsb3dSZXN1bHQ/LmlzQXZhaWxhYmxlKSB7XG4gICAgY29uc3QgaXNBcHBsZVBheUF2YWlsYWJsZSA9IHN0cmlwZVBSRmxvd1Jlc3VsdC5hdmFpbGFibGVQcm92aWRlcnMuYXBwbGVQYXk7XG4gICAgaWYgKGlzQXBwbGVQYXlBdmFpbGFibGUpIHtcbiAgICAgIGFwcGxlUGF5SW5pdFJlc3VsdHMucHVzaCh7XG4gICAgICAgIGlzQXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBwcm9jZXNzb3I6IFBheW1lbnRQcm9jZXNzb3IuRW51bS5zdHJpcGUsXG4gICAgICAgIHN0YXJ0RmxvdzogKGN1c3RvbVBhcmFtcykgPT4gc3RyaXBlUFJGbG93UmVzdWx0LnN0YXJ0RmxvdyhcImFwcGxlX3BheVwiLCB7XG4gICAgICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogY3VzdG9tUGFyYW1zPy5vdmVycmlkZVBheW1lbnRSZXF1ZXN0XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzb3JzOiBhcHBsZVBheUluaXRSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQucHJvY2Vzc29yKSxcbiAgICBpc0F2YWlsYWJsZTogYXBwbGVQYXlJbml0UmVzdWx0cy5sZW5ndGggPiAwLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgc3RhcnRGbG93OiAoY3VzdG9tUGFyYW1zKSA9PiB7XG4gICAgICByZXR1cm4gc3RhcnRBcHBsZVBheUZsb3coYXBwbGVQYXlJbml0UmVzdWx0cywgY3VzdG9tUGFyYW1zKTtcbiAgICB9XG4gIH07XG59O1xuY29uc3QgZ2V0R29vZ2xlUGF5UHJvY2Vzc29ycyA9IChpbml0Rmxvd3MpID0+IHtcbiAgY29uc3QgZ29vZ2xlUGF5SW5pdEZsb3dzID0gW2luaXRGbG93cy5haXJ3YWxsZXhHb29nbGVQYXksIGluaXRGbG93cy5hdXRob3JpemVOZXRHb29nbGVQYXksIGluaXRGbG93cy5hZHllbkdvb2dsZVBheV07XG4gIGNvbnN0IGdvb2dsZVBheUluaXRSZXN1bHRzID0gW107XG4gIGdvb2dsZVBheUluaXRGbG93cy5mb3JFYWNoKChmbG93KSA9PiB7XG4gICAgY29uc3QgZmxvd1ZhbHVlID0gZmxvdy5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgaWYgKGZsb3dWYWx1ZT8uaXNBdmFpbGFibGUpIHtcbiAgICAgIGdvb2dsZVBheUluaXRSZXN1bHRzLnB1c2goZmxvd1ZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBzdHJpcGVQUkZsb3dSZXN1bHQgPSBpbml0Rmxvd3Muc3RyaXBlUFIucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICBpZiAoc3RyaXBlUFJGbG93UmVzdWx0Py5pc0F2YWlsYWJsZSkge1xuICAgIGNvbnN0IGlzR29vZ2xlUGF5QXZhaWxhYmxlID0gc3RyaXBlUFJGbG93UmVzdWx0LmF2YWlsYWJsZVByb3ZpZGVycy5nb29nbGVQYXk7XG4gICAgaWYgKGlzR29vZ2xlUGF5QXZhaWxhYmxlKSB7XG4gICAgICBnb29nbGVQYXlJbml0UmVzdWx0cy5wdXNoKHtcbiAgICAgICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIHByb2Nlc3NvcjogUGF5bWVudFByb2Nlc3Nvci5FbnVtLnN0cmlwZSxcbiAgICAgICAgc3RhcnRGbG93OiAoY3VzdG9tUGFyYW1zKSA9PiBzdHJpcGVQUkZsb3dSZXN1bHQuc3RhcnRGbG93KFwiZ29vZ2xlX3BheVwiLCB7XG4gICAgICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogY3VzdG9tUGFyYW1zPy5vdmVycmlkZVBheW1lbnRSZXF1ZXN0XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzb3JzOiBnb29nbGVQYXlJbml0UmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnByb2Nlc3NvciksXG4gICAgaXNBdmFpbGFibGU6IGdvb2dsZVBheUluaXRSZXN1bHRzLmxlbmd0aCA+IDAsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBzdGFydEZsb3c6IChjdXN0b21QYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiBzdGFydEdvb2dsZVBheUZsb3coZ29vZ2xlUGF5SW5pdFJlc3VsdHMsIGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICB9O1xufTtcbmNvbnN0IHN0YXJ0QXBwbGVQYXlGbG93ID0gKGluaXRSZXN1bHRzLCBjdXN0b21QYXJhbXMpID0+IHtcbiAgaWYgKGN1c3RvbVBhcmFtcz8ucHJvY2Vzc29yKSB7XG4gICAgY29uc3QgZmxvdyA9IGluaXRSZXN1bHRzLmZpbmQoKHJlc3VsdCkgPT4gcmVzdWx0LnByb2Nlc3NvciA9PT0gY3VzdG9tUGFyYW1zLnByb2Nlc3Nvcik7XG4gICAgaWYgKGZsb3c/LmlzQXZhaWxhYmxlKSB7XG4gICAgICByZXR1cm4gZmxvdy5zdGFydEZsb3coY3VzdG9tUGFyYW1zKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTcGVjaWZpZWQgQXBwbGUgUGF5IHByb2Nlc3NvciAke2N1c3RvbVBhcmFtcy5wcm9jZXNzb3J9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgfVxuICBjb25zdCBhdmFpbGFibGVGbG93ID0gaW5pdFJlc3VsdHMuZmluZCgocmVzdWx0KSA9PiByZXN1bHQuaXNBdmFpbGFibGUpO1xuICBpZiAoYXZhaWxhYmxlRmxvdykge1xuICAgIHJldHVybiBhdmFpbGFibGVGbG93LnN0YXJ0RmxvdyhjdXN0b21QYXJhbXMpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIk5vIGF2YWlsYWJsZSBBcHBsZSBQYXkgcHJvY2Vzc29yIGZvdW5kXCIpO1xufTtcbmNvbnN0IHN0YXJ0R29vZ2xlUGF5RmxvdyA9IChpbml0UmVzdWx0cywgY3VzdG9tUGFyYW1zKSA9PiB7XG4gIGlmIChjdXN0b21QYXJhbXM/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IGZsb3cgPSBpbml0UmVzdWx0cy5maW5kKChyZXN1bHQpID0+IHJlc3VsdC5wcm9jZXNzb3IgPT09IGN1c3RvbVBhcmFtcy5wcm9jZXNzb3IpO1xuICAgIGlmIChmbG93Py5pc0F2YWlsYWJsZSkge1xuICAgICAgcmV0dXJuIGZsb3cuc3RhcnRGbG93KGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEdvb2dsZSBQYXkgcHJvY2Vzc29yICR7Y3VzdG9tUGFyYW1zLnByb2Nlc3Nvcn0gaXMgbm90IGF2YWlsYWJsZWApO1xuICB9XG4gIGNvbnN0IGF2YWlsYWJsZUZsb3cgPSBpbml0UmVzdWx0cy5maW5kKChyZXN1bHQpID0+IHJlc3VsdC5pc0F2YWlsYWJsZSk7XG4gIGlmIChhdmFpbGFibGVGbG93KSB7XG4gICAgcmV0dXJuIGF2YWlsYWJsZUZsb3cuc3RhcnRGbG93KGN1c3RvbVBhcmFtcyk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiTm8gYXZhaWxhYmxlIEdvb2dsZSBQYXkgcHJvY2Vzc29yIGZvdW5kXCIpO1xufTtcbmNvbnN0IGdldEtsYXJuYVByb2Nlc3NvcnMgPSAoaW5pdEZsb3dzKSA9PiB7XG4gIGNvbnN0IGtsYXJuYUluaXRSZXN1bHRzID0gW107XG4gIGNvbnN0IGFpcndhbGxleEtsYXJuYUZsb3dSZXN1bHQgPSBpbml0Rmxvd3MuYWlyd2FsbGV4S2xhcm5hLnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgaWYgKGFpcndhbGxleEtsYXJuYUZsb3dSZXN1bHQ/LmlzQXZhaWxhYmxlKSB7XG4gICAga2xhcm5hSW5pdFJlc3VsdHMucHVzaCh7XG4gICAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBwcm9jZXNzb3I6IFBheW1lbnRQcm9jZXNzb3IuRW51bS5haXJ3YWxsZXgsXG4gICAgICBzdGFydEZsb3c6IChjdXN0b21QYXJhbXMpID0+IGFpcndhbGxleEtsYXJuYUZsb3dSZXN1bHQuc3RhcnRGbG93KGN1c3RvbVBhcmFtcylcbiAgICB9KTtcbiAgfVxuICBjb25zdCBzdHJpcGVLbGFybmFGbG93UmVzdWx0ID0gaW5pdEZsb3dzLnN0cmlwZUtsYXJuYS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gIGlmIChzdHJpcGVLbGFybmFGbG93UmVzdWx0Py5pc0F2YWlsYWJsZSkge1xuICAgIGtsYXJuYUluaXRSZXN1bHRzLnB1c2goe1xuICAgICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgcHJvY2Vzc29yOiBQYXltZW50UHJvY2Vzc29yLkVudW0uc3RyaXBlLFxuICAgICAgc3RhcnRGbG93OiAoY3VzdG9tUGFyYW1zKSA9PiBzdHJpcGVLbGFybmFGbG93UmVzdWx0LnN0YXJ0RmxvdyhjdXN0b21QYXJhbXMpXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzb3JzOiBrbGFybmFJbml0UmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnByb2Nlc3NvciksXG4gICAgaXNBdmFpbGFibGU6IGtsYXJuYUluaXRSZXN1bHRzLmxlbmd0aCA+IDAsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBzdGFydEZsb3c6IChjdXN0b21QYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiBzdGFydEtsYXJuYUZsb3coa2xhcm5hSW5pdFJlc3VsdHMsIGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICB9O1xufTtcbmNvbnN0IHN0YXJ0S2xhcm5hRmxvdyA9IChpbml0UmVzdWx0cywgY3VzdG9tUGFyYW1zKSA9PiB7XG4gIGlmIChjdXN0b21QYXJhbXM/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IGZsb3cgPSBpbml0UmVzdWx0cy5maW5kKChyZXN1bHQpID0+IHJlc3VsdC5wcm9jZXNzb3IgPT09IGN1c3RvbVBhcmFtcy5wcm9jZXNzb3IpO1xuICAgIGlmIChmbG93Py5pc0F2YWlsYWJsZSkge1xuICAgICAgcmV0dXJuIGZsb3cuc3RhcnRGbG93KGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEtsYXJuYSBwcm9jZXNzb3IgJHtjdXN0b21QYXJhbXMucHJvY2Vzc29yfSBpcyBub3QgYXZhaWxhYmxlYCk7XG4gIH1cbiAgY29uc3QgYXZhaWxhYmxlRmxvdyA9IGluaXRSZXN1bHRzLmZpbmQoKHJlc3VsdCkgPT4gcmVzdWx0LmlzQXZhaWxhYmxlKTtcbiAgaWYgKGF2YWlsYWJsZUZsb3cpIHtcbiAgICByZXR1cm4gYXZhaWxhYmxlRmxvdy5zdGFydEZsb3coY3VzdG9tUGFyYW1zKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJObyBhdmFpbGFibGUgS2xhcm5hIHByb2Nlc3NvciBmb3VuZFwiKTtcbn07XG5jb25zdCBnZXRBZmZpcm1Qcm9jZXNzb3JzID0gKGluaXRGbG93cykgPT4ge1xuICBjb25zdCBhZmZpcm1Jbml0UmVzdWx0cyA9IFtdO1xuICBjb25zdCBzdHJpcGVBZmZpcm1GbG93UmVzdWx0ID0gaW5pdEZsb3dzLnN0cmlwZUFmZmlybS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gIGlmIChzdHJpcGVBZmZpcm1GbG93UmVzdWx0Py5pc0F2YWlsYWJsZSkge1xuICAgIGFmZmlybUluaXRSZXN1bHRzLnB1c2goe1xuICAgICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgcHJvY2Vzc29yOiBQYXltZW50UHJvY2Vzc29yLkVudW0uc3RyaXBlLFxuICAgICAgc3RhcnRGbG93OiAoY3VzdG9tUGFyYW1zKSA9PiBzdHJpcGVBZmZpcm1GbG93UmVzdWx0LnN0YXJ0RmxvdyhjdXN0b21QYXJhbXMpXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzb3JzOiBhZmZpcm1Jbml0UmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnByb2Nlc3NvciksXG4gICAgaXNBdmFpbGFibGU6IGFmZmlybUluaXRSZXN1bHRzLmxlbmd0aCA+IDAsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBzdGFydEZsb3c6IChjdXN0b21QYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiBzdGFydEFmZmlybUZsb3coYWZmaXJtSW5pdFJlc3VsdHMsIGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICB9O1xufTtcbmNvbnN0IHN0YXJ0QWZmaXJtRmxvdyA9IChpbml0UmVzdWx0cywgY3VzdG9tUGFyYW1zKSA9PiB7XG4gIGlmIChjdXN0b21QYXJhbXM/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IGZsb3cgPSBpbml0UmVzdWx0cy5maW5kKChyZXN1bHQpID0+IHJlc3VsdC5wcm9jZXNzb3IgPT09IGN1c3RvbVBhcmFtcy5wcm9jZXNzb3IpO1xuICAgIGlmIChmbG93Py5pc0F2YWlsYWJsZSkge1xuICAgICAgcmV0dXJuIGZsb3cuc3RhcnRGbG93KGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEFmZmlybSBwcm9jZXNzb3IgJHtjdXN0b21QYXJhbXMucHJvY2Vzc29yfSBpcyBub3QgYXZhaWxhYmxlYCk7XG4gIH1cbiAgY29uc3QgYXZhaWxhYmxlRmxvdyA9IGluaXRSZXN1bHRzLmZpbmQoKHJlc3VsdCkgPT4gcmVzdWx0LmlzQXZhaWxhYmxlKTtcbiAgaWYgKGF2YWlsYWJsZUZsb3cpIHtcbiAgICByZXR1cm4gYXZhaWxhYmxlRmxvdy5zdGFydEZsb3coY3VzdG9tUGFyYW1zKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJObyBhdmFpbGFibGUgQWZmaXJtIHByb2Nlc3NvciBmb3VuZFwiKTtcbn07XG5jb25zdCBnZXRBZnRlcnBheVByb2Nlc3NvcnMgPSAoaW5pdEZsb3dzKSA9PiB7XG4gIGNvbnN0IGFmdGVycGF5SW5pdFJlc3VsdHMgPSBbXTtcbiAgY29uc3Qgc3RyaXBlQWZ0ZXJwYXlGbG93UmVzdWx0ID0gaW5pdEZsb3dzLnN0cmlwZUFmdGVycGF5LnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgaWYgKHN0cmlwZUFmdGVycGF5Rmxvd1Jlc3VsdD8uaXNBdmFpbGFibGUpIHtcbiAgICBhZnRlcnBheUluaXRSZXN1bHRzLnB1c2goe1xuICAgICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgcHJvY2Vzc29yOiBQYXltZW50UHJvY2Vzc29yLkVudW0uc3RyaXBlLFxuICAgICAgc3RhcnRGbG93OiAoY3VzdG9tUGFyYW1zKSA9PiBzdHJpcGVBZnRlcnBheUZsb3dSZXN1bHQuc3RhcnRGbG93KGN1c3RvbVBhcmFtcylcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHByb2Nlc3NvcnM6IGFmdGVycGF5SW5pdFJlc3VsdHMubWFwKChyZXN1bHQpID0+IHJlc3VsdC5wcm9jZXNzb3IpLFxuICAgIGlzQXZhaWxhYmxlOiBhZnRlcnBheUluaXRSZXN1bHRzLmxlbmd0aCA+IDAsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBzdGFydEZsb3c6IChjdXN0b21QYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiBzdGFydEFmdGVycGF5RmxvdyhhZnRlcnBheUluaXRSZXN1bHRzLCBjdXN0b21QYXJhbXMpO1xuICAgIH1cbiAgfTtcbn07XG5jb25zdCBzdGFydEFmdGVycGF5RmxvdyA9IChpbml0UmVzdWx0cywgY3VzdG9tUGFyYW1zKSA9PiB7XG4gIGlmIChjdXN0b21QYXJhbXM/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IGZsb3cgPSBpbml0UmVzdWx0cy5maW5kKChyZXN1bHQpID0+IHJlc3VsdC5wcm9jZXNzb3IgPT09IGN1c3RvbVBhcmFtcy5wcm9jZXNzb3IpO1xuICAgIGlmIChmbG93Py5pc0F2YWlsYWJsZSkge1xuICAgICAgcmV0dXJuIGZsb3cuc3RhcnRGbG93KGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEFmdGVycGF5IHByb2Nlc3NvciAke2N1c3RvbVBhcmFtcy5wcm9jZXNzb3J9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgfVxuICBjb25zdCBhdmFpbGFibGVGbG93ID0gaW5pdFJlc3VsdHMuZmluZCgocmVzdWx0KSA9PiByZXN1bHQuaXNBdmFpbGFibGUpO1xuICBpZiAoYXZhaWxhYmxlRmxvdykge1xuICAgIHJldHVybiBhdmFpbGFibGVGbG93LnN0YXJ0RmxvdyhjdXN0b21QYXJhbXMpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIk5vIGF2YWlsYWJsZSBBZnRlcnBheSBwcm9jZXNzb3IgZm91bmRcIik7XG59O1xuXG5jb25zdCBjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyA9IChzdHlsZXMpID0+IHtcbiAgY29uc3Qgc2VyaWFsaXplZFN0eWxlcyA9IEpTT04uc3RyaW5naWZ5KHN0eWxlcyk7XG4gIHJldHVybiBzZXJpYWxpemVkU3R5bGVzO1xufTtcblxuY29uc3QgRWxlbWVudHNDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7XG4gIGZvcm1JZDogXCJcIixcbiAgZm9ybUhlaWdodDogXCJcIixcbiAgcmVmZXJyZXI6IHZvaWQgMCxcbiAgY2hlY2tvdXRTZWN1cmVUb2tlbjogdm9pZCAwLFxuICByZWdpc3RlcklmcmFtZTogKCkgPT4ge1xuICB9LFxuICBiYXNlVXJsOiBcIlwiXG59KTtcblxuY29uc3QgdXNlT3BlblBheUVsZW1lbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChFbGVtZW50c0NvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VPcGVuUGF5RWxlbWVudHMgbXVzdCBiZSB1c2VkIHdpdGhpbiBhbiBPcGVuUGF5RWxlbWVudHNQcm92aWRlclwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG5cbmNvbnN0IEVsZW1lbnRGcmFtZSA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGVsZW1lbnRUeXBlLCBzdHlsZXMgfSA9IHByb3BzO1xuICBjb25zdCB7IGZvcm1JZCwgcmVmZXJyZXIsIGZvcm1IZWlnaHQsIGNoZWNrb3V0U2VjdXJlVG9rZW4sIHJlZ2lzdGVySWZyYW1lLCBiYXNlVXJsIH0gPSB1c2VPcGVuUGF5RWxlbWVudHMoKTtcbiAgY29uc3Qgc3ViUGF0aCA9IGVsZW1lbnRUeXBlLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IFtoYXNMb2FkZWQsIHNldEhhc0xvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGlmcmFtZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgZWxlbWVudFN0eWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzdHlsZXMpIHJldHVybiBcIlwiO1xuICAgIHJldHVybiBjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyhzdHlsZXMpO1xuICB9LCBbc3R5bGVzXSk7XG4gIGNvbnN0IGZyYW1lU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGhlaWdodDogZm9ybUhlaWdodFxuICAgIH07XG4gIH0sIFtmb3JtSGVpZ2h0XSk7XG4gIGNvbnN0IHF1ZXJ5U3RyaW5nID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFjaGVja291dFNlY3VyZVRva2VuIHx8ICFyZWZlcnJlcikgcmV0dXJuIFwiXCI7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIHBhcmFtcy5hcHBlbmQoXCJyZWZlcmVyXCIsIHJlZmVycmVyKTtcbiAgICBwYXJhbXMuYXBwZW5kKFwic3R5bGVzXCIsIGVsZW1lbnRTdHlsZSk7XG4gICAgcGFyYW1zLmFwcGVuZChcImZvcm1JZFwiLCBmb3JtSWQpO1xuICAgIHBhcmFtcy5hcHBlbmQoXCJzZWN1cmVUb2tlblwiLCBjaGVja291dFNlY3VyZVRva2VuKTtcbiAgICByZXR1cm4gcGFyYW1zLnRvU3RyaW5nKCk7XG4gIH0sIFtlbGVtZW50U3R5bGUsIGZvcm1JZCwgcmVmZXJyZXIsIGNoZWNrb3V0U2VjdXJlVG9rZW5dKTtcbiAgdXNlRWZmZWN0KCgpID0+IHNldEhhc0xvYWRlZCh0cnVlKSwgW10pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaWZyYW1lUmVmLmN1cnJlbnQgfHwgIWhhc0xvYWRlZCkgcmV0dXJuO1xuICAgIHJlZ2lzdGVySWZyYW1lKGVsZW1lbnRUeXBlLCBpZnJhbWVSZWYuY3VycmVudCk7XG4gIH0sIFtoYXNMb2FkZWRdKTtcbiAgaWYgKCFjaGVja291dFNlY3VyZVRva2VuKSB7XG4gICAgY29uc29sZS5lcnJvcihcIltmb3JtXSBDYW5ub3QgcmVuZGVyIHBhcnRpYWxseSBpbml0aWFsaXplZCBmcmFtZVwiKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7fSk7XG4gIH1cbiAgY29uc3QgdXJsID0gbmV3IFVSTChgL2FwcC92MS8ke3N1YlBhdGh9LWVsZW1lbnQvYCwgYmFzZVVybCk7XG4gIHVybC5zZWFyY2ggPSBxdWVyeVN0cmluZztcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJpZnJhbWVcIixcbiAgICB7XG4gICAgICBpZDogYG9qcy0ke3N1YlBhdGh9LWVsZW1lbnRgLFxuICAgICAgbmFtZTogYCR7c3ViUGF0aH0tZWxlbWVudGAsXG4gICAgICBjbGFzc05hbWU6IFwib2pzLWlmcmFtZVwiLFxuICAgICAgc3JjOiB1cmwudG9TdHJpbmcoKSxcbiAgICAgIHN0eWxlOiBmcmFtZVN0eWxlLFxuICAgICAgcmVmOiBpZnJhbWVSZWZcbiAgICB9XG4gICk7XG59O1xuXG5jb25zdCBDYXJkRWxlbWVudCA9ICh7IHN0eWxlcyB9KSA9PiB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEVsZW1lbnRGcmFtZSwgeyBzdHlsZXMsIGVsZW1lbnRUeXBlOiBFbGVtZW50VHlwZUVudW0uQ0FSRCB9KTtcbn07XG5cbmNvbnN0IENhcmRDdmNFbGVtZW50ID0gKHsgc3R5bGVzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudEZyYW1lLCB7IHN0eWxlcywgZWxlbWVudFR5cGU6IEVsZW1lbnRUeXBlRW51bS5DQVJEX0NWQyB9KTtcbn07XG5cbmNvbnN0IENhcmRFeHBpcnlFbGVtZW50ID0gKHsgc3R5bGVzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudEZyYW1lLCB7IHN0eWxlcywgZWxlbWVudFR5cGU6IEVsZW1lbnRUeXBlRW51bS5DQVJEX0VYUElSWSB9KTtcbn07XG5cbmNvbnN0IENhcmROdW1iZXJFbGVtZW50ID0gKHsgc3R5bGVzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudEZyYW1lLCB7IHN0eWxlcywgZWxlbWVudFR5cGU6IEVsZW1lbnRUeXBlRW51bS5DQVJEX05VTUJFUiB9KTtcbn07XG5cbmZ1bmN0aW9uIEZvKGUsIHQpIHtcbiAgdmFyIHIgPSBPYmplY3Quc2V0UHJvdG90eXBlT2Y7XG4gIHIgPyByKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0O1xufVxuZnVuY3Rpb24gVG8oZSwgdCkge1xuICB0ID09PSB2b2lkIDAgJiYgKHQgPSBlLmNvbnN0cnVjdG9yKTtcbiAgdmFyIHIgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcbiAgciAmJiByKGUsIHQpO1xufVxudmFyIE5vID0gLyogQF9fUFVSRV9fICovIChmdW5jdGlvbigpIHtcbiAgdmFyIGUgPSBmdW5jdGlvbihyLCBuKSB7XG4gICAgcmV0dXJuIGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihhLCBpKSB7XG4gICAgICBhLl9fcHJvdG9fXyA9IGk7XG4gICAgfSB8fCBmdW5jdGlvbihhLCBpKSB7XG4gICAgICBmb3IgKHZhciBzIGluIGkpXG4gICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLCBzKSAmJiAoYVtzXSA9IGlbc10pO1xuICAgIH0sIGUociwgbik7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbih0LCByKSB7XG4gICAgaWYgKHR5cGVvZiByICE9IFwiZnVuY3Rpb25cIiAmJiByICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhyKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgZSh0LCByKTtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IHQ7XG4gICAgfVxuICAgIHQucHJvdG90eXBlID0gciA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUocikgOiAobi5wcm90b3R5cGUgPSByLnByb3RvdHlwZSwgbmV3IG4oKSk7XG4gIH07XG59KSgpLCBMbyA9IChmdW5jdGlvbihlKSB7XG4gIE5vKHQsIGUpO1xuICBmdW5jdGlvbiB0KHIsIG4pIHtcbiAgICB2YXIgYSA9IHRoaXMuY29uc3RydWN0b3IsIGkgPSBlLmNhbGwodGhpcywgciwgbikgfHwgdGhpcztcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYS5uYW1lLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KSwgRm8oaSwgYS5wcm90b3R5cGUpLCBUbyhpKSwgaTtcbiAgfVxuICByZXR1cm4gdDtcbn0pKEVycm9yKTtcbmNvbnN0IFQgPSB6JDEuc3RyaW5nKCkudHJpbSgpLm1pbigxLCB7IG1lc3NhZ2U6IFwiUGxlYXNlIGZpbGwgaW4gdGhpcyBmaWVsZFwiIH0pLCBQID0geiQxLnN0cmluZygpLnRyaW0oKS5vcHRpb25hbCgpLCBEID0gKGUpID0+IHokMS5udWxsYWJsZShlLm9wdGlvbmFsKCkpO1xudmFyIHAgPSAvKiBAX19QVVJFX18gKi8gKChlKSA9PiAoZS5GSVJTVF9OQU1FID0gXCJmaXJzdE5hbWVcIiwgZS5MQVNUX05BTUUgPSBcImxhc3ROYW1lXCIsIGUuUEhPTkUgPSBcInBob25lXCIsIGUuRU1BSUwgPSBcImVtYWlsXCIsIGUuTElORTEgPSBcImxpbmUxXCIsIGUuTElORTIgPSBcImxpbmUyXCIsIGUuTElORTMgPSBcImxpbmUzXCIsIGUuQ0lUWSA9IFwiY2l0eVwiLCBlLlNUQVRFID0gXCJzdGF0ZVwiLCBlLkNPVU5UUlkgPSBcImNvdW50cnlcIiwgZS5aSVBfQ09ERSA9IFwiemlwQ29kZVwiLCBlLlNISVBQSU5HX0xJTkUxID0gXCJzaGlwcGluZ0FkZHJlc3NMaW5lMVwiLCBlLlNISVBQSU5HX0xJTkUyID0gXCJzaGlwcGluZ0FkZHJlc3NMaW5lMlwiLCBlLlNISVBQSU5HX0xJTkUzID0gXCJzaGlwcGluZ0FkZHJlc3NMaW5lM1wiLCBlLlNISVBQSU5HX0NJVFkgPSBcInNoaXBwaW5nQWRkcmVzc0NpdHlcIiwgZS5TSElQUElOR19TVEFURSA9IFwic2hpcHBpbmdBZGRyZXNzU3RhdGVcIiwgZS5TSElQUElOR19DT1VOVFJZID0gXCJzaGlwcGluZ0FkZHJlc3NDb3VudHJ5XCIsIGUuU0hJUFBJTkdfWklQX0NPREUgPSBcInNoaXBwaW5nQWRkcmVzc1ppcENvZGVcIiwgZS5JU19TSElQUElOR19TQU1FX0FTX0JJTExJTkcgPSBcImlzU2hpcHBpbmdTYW1lQXNCaWxsaW5nXCIsIGUuUFJPTU9USU9OX0NPREUgPSBcInByb21vdGlvbkNvZGVcIiwgZS5JU19CVVNJTkVTU19QVVJDSEFTRSA9IFwiaXNCdXNpbmVzc1B1cmNoYXNlXCIsIGUuQlVTSU5FU1NfTkFNRSA9IFwiYnVzaW5lc3NOYW1lXCIsIGUuVEFYX0lEID0gXCJ0YXhJZFwiLCBlLlRBWF9JRF9UWVBFID0gXCJ0YXhJZFR5cGVcIiwgZSkpKHAgfHwge30pO1xuY29uc3Qgb24gPSB6JDEubmF0aXZlRW51bShwKTtcbnZhciBhbiA9IC8qIEBfX1BVUkVfXyAqLyAoKGUpID0+IChlLkNBUkRfTlVNQkVSID0gXCJjYXJkTnVtYmVyXCIsIGUuQ0FSRF9FWFBJUlkgPSBcImNhcmRFeHBpcnlcIiwgZS5DQVJEX0NWQyA9IFwiY2FyZEN2Y1wiLCBlKSkoYW4gfHwge30pO1xuY29uc3Qgc24gPSB6JDEubmF0aXZlRW51bShhbiksIGNuID0geiQxLnVuaW9uKFtvbiwgc25dKTtcbnZhciBnZSA9IC8qIEBfX1BVUkVfXyAqLyAoKGUpID0+IChlLkNBUkQgPSBcImNhcmRcIiwgZS5DQVJEX05VTUJFUiA9IFwiY2FyZC1udW1iZXJcIiwgZS5DQVJEX0VYUElSWSA9IFwiY2FyZC1leHBpcnlcIiwgZS5DQVJEX0NWQyA9IFwiY2FyZC1jdmNcIiwgZS5DREVfQlJJREdFID0gXCJjZGUtYnJpZGdlXCIsIGUpKShnZSB8fCB7fSk7XG5jb25zdCBNbyA9IHokMS5lbnVtKFtcImNhcmRcIiwgXCJjYXJkLW51bWJlclwiLCBcImNhcmQtZXhwaXJ5XCIsIFwiY2FyZC1jdmNcIiwgXCJjZGUtYnJpZGdlXCJdKSwgRnQgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgcHJvY2Vzc29yX25hbWU6IEQoeiQxLnN0cmluZygpKSxcbiAgbWV0YWRhdGE6IEQoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KSwgeG8gPSB6JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKVxufSksIFR0ID0geiQxLm9iamVjdCh7XG4gIGJhY2tncm91bmRDb2xvcjogUCxcbiAgY29sb3I6IFAsXG4gIGZvbnRGYW1pbHk6IFAsXG4gIGZvbnRTaXplOiBQLFxuICBmb250V2VpZ2h0OiBQLFxuICBtYXJnaW46IFAsXG4gIHBhZGRpbmc6IFAsXG4gIGxldHRlclNwYWNpbmc6IFAsXG4gIGxpbmVIZWlnaHQ6IFAsXG4gIGhpZGVJY29uOiBQLFxuICBwbGFjZWhvbGRlclN0eWxlOiB6JDEub2JqZWN0KHtcbiAgICBjb2xvcjogUCxcbiAgICBmb250U2l6ZTogUCxcbiAgICBmb250V2VpZ2h0OiBQLFxuICAgIGZvbnRGYW1pbHk6IFAsXG4gICAgbGV0dGVyU3BhY2luZzogUCxcbiAgICBsaW5lSGVpZ2h0OiBQXG4gIH0pLm9wdGlvbmFsKClcbn0pO1xuVHQuZXh0ZW5kKHtcbiAgZGlzYWJsZUF1dG9GaWxsOiBQLFxuICBwbGFjZWhvbGRlcjogeiQxLm9iamVjdCh7XG4gICAgY2FyZE51bWJlcjogUCxcbiAgICBleHBpcnk6IFAsXG4gICAgY3ZjOiBQXG4gIH0pLm9wdGlvbmFsKClcbn0pO1xuVHQuZXh0ZW5kKHtcbiAgZGlzYWJsZUF1dG9GaWxsOiBQLFxuICBwbGFjZWhvbGRlcjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIC8qKlxuICAgKiBUaGUgY2FyZCBpY29uIGF0IHRoZSBzdGFydCBvZiB0aGUgY2FyZCBudW1iZXIgaW5wdXQgZmllbGRcbiAgICogSXQgd29uJ3QgYWZmZWN0IGFmdGVyIHRoZSBpY29uIGNoYW5nZWQgdG8gY2FyZCBicmFuZCBhZnRlciB0aGUgdXNlciBpbnB1dCB0aGUgY2FyZCBudW1iZXJcbiAgICovXG4gIGljb246IHokMS5vYmplY3Qoe1xuICAgIGNvbG9yOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxuICB9KS5vcHRpb25hbCgpXG59KTtcblR0LmV4dGVuZCh7XG4gIGRpc2FibGVBdXRvRmlsbDogUCxcbiAgcGxhY2Vob2xkZXI6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcblR0LmV4dGVuZCh7XG4gIGRpc2FibGVBdXRvRmlsbDogUCxcbiAgcGxhY2Vob2xkZXI6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IHBlID0geiQxLmVudW0oW1xuICAvLyBFbGVtZW50IC0+IEZvcm1cbiAgXCJMQVlPVVRcIixcbiAgXCJMT0FERURcIixcbiAgXCJCTFVSXCIsXG4gIFwiRk9DVVNcIixcbiAgXCJDSEFOR0VcIixcbiAgXCJUT0tFTklaRV9TVEFSVEVEXCIsXG4gIFwiQ0hFQ0tPVVRfU1RBUlRFRFwiLFxuICBcIlBBWU1FTlRfRkxPV19TVEFSVEVEXCIsXG4gIFwiVE9LRU5JWkVfU1VDQ0VTU1wiLFxuICBcIkNIRUNLT1VUX1NVQ0NFU1NcIixcbiAgXCJMT0FEX0VSUk9SXCIsXG4gIFwiVkFMSURBVElPTl9FUlJPUlwiLFxuICBcIlRPS0VOSVpFX0VSUk9SXCIsXG4gIFwiQ0hFQ0tPVVRfRVJST1JcIixcbiAgXCJTRVRVUF9QQVlNRU5UX01FVEhPRF9TVUNDRVNTXCIsXG4gIC8vIEZvcm0gLT4gRWxlbWVudFxuICBcIlRPS0VOSVpFXCIsXG4gIFwiQ0hFQ0tPVVRcIixcbiAgXCJTVEFSVF9QQVlNRU5UX0ZMT1dcIlxuXSksIERvID0gcGUuZXh0cmFjdChbXCJUT0tFTklaRV9TVEFSVEVEXCIsIFwiQ0hFQ0tPVVRfU1RBUlRFRFwiXSksIFVvID0geiQxLm9iamVjdCh7IHR5cGU6IERvIH0pLCBPbyA9IHBlLmV4dHJhY3QoW1wiQkxVUlwiLCBcIkZPQ1VTXCIsIFwiQ0hBTkdFXCJdKSwgam8gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogT28sXG4gIGVsZW1lbnRUeXBlOiBzbixcbiAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBvYmZ1c2NhdGVkVmFsdWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KSwgJG8gPSBwZS5leHRyYWN0KFtcIkxPQURfRVJST1JcIiwgXCJUT0tFTklaRV9FUlJPUlwiLCBcIkNIRUNLT1VUX0VSUk9SXCJdKSwgR28gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogJG8sXG4gIG1lc3NhZ2U6IFQsXG4gIGhlYWRlcnM6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuc3RyaW5nKCkpLm9wdGlvbmFsKClcbn0pLCBxbyA9IHBlLmV4dHJhY3QoW1wiVkFMSURBVElPTl9FUlJPUlwiXSksIFZvID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHFvLFxuICBlbGVtZW50VHlwZTogY24sXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pLCB6byA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChwZS5lbnVtLkxBWU9VVCksXG4gIGhlaWdodDogVFxufSksIEJvID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKHBlLmVudW0uTE9BREVEKSxcbiAgc2Vzc2lvbklkOiBULFxuICB0b3RhbEFtb3VudEF0b21zOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiBQLFxuICBjaGVja291dFBheW1lbnRNZXRob2RzOiB6JDEuYXJyYXkoRnQpXG59KSwgSG8gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwocGUuZW51bS5QQVlNRU5UX0ZMT1dfU1RBUlRFRCksXG4gIG5leHRBY3Rpb25NZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBzdGFydFBGTWV0YWRhdGE6IHokMS5vcHRpb25hbCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pLCBLbyA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChwZS5lbnVtLlNFVFVQX1BBWU1FTlRfTUVUSE9EX1NVQ0NFU1MpLFxuICBwYXltZW50TWV0aG9kSWQ6IHokMS5zdHJpbmcoKVxufSksIFVlID0geiQxLm9iamVjdCh7XG4gIGVtYWlsOiBULmVtYWlsKHsgbWVzc2FnZTogXCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzXCIgfSksXG4gIGZpcnN0TmFtZTogVCxcbiAgbGFzdE5hbWU6IFQsXG4gIHBob25lOiBQLFxuICBwcm9tb3Rpb25Db2RlOiBQLFxuICBsaW5lMTogUCxcbiAgbGluZTI6IFAsXG4gIGxpbmUzOiBQLFxuICBjaXR5OiBQLFxuICBzdGF0ZTogUCxcbiAgY291bnRyeTogVCxcbiAgemlwQ29kZTogUCxcbiAgaXNTaGlwcGluZ1NhbWVBc0JpbGxpbmc6IHokMS5jdXN0b20oKS5vcHRpb25hbCgpLmRlZmF1bHQodHJ1ZSksXG4gIHNoaXBwaW5nQWRkcmVzc0xpbmUxOiBQLFxuICBzaGlwcGluZ0FkZHJlc3NMaW5lMjogUCxcbiAgc2hpcHBpbmdBZGRyZXNzTGluZTM6IFAsXG4gIHNoaXBwaW5nQWRkcmVzc0NpdHk6IFAsXG4gIHNoaXBwaW5nQWRkcmVzc1N0YXRlOiBQLFxuICBzaGlwcGluZ0FkZHJlc3NDb3VudHJ5OiBQLFxuICBzaGlwcGluZ0FkZHJlc3NaaXBDb2RlOiBQLFxuICBidXNpbmVzc05hbWU6IFAsXG4gIHRheElkOiBQLFxuICB0YXhJZFR5cGU6IFBcbn0pLCBZbyA9IHokMS5vYmplY3Qoe1xuICBlbWFpbDogVC5lbWFpbCh7IG1lc3NhZ2U6IFwiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiIH0pLFxuICBmaXJzdE5hbWU6IFAsXG4gIGxhc3ROYW1lOiBQLFxuICBwaG9uZTogUCxcbiAgcHJvbW90aW9uQ29kZTogUCxcbiAgbGluZTE6IFAsXG4gIGxpbmUyOiBQLFxuICBsaW5lMzogUCxcbiAgY2l0eTogUCxcbiAgc3RhdGU6IFAsXG4gIGNvdW50cnk6IFQsXG4gIHppcENvZGU6IFAsXG4gIGlzU2hpcHBpbmdTYW1lQXNCaWxsaW5nOiB6JDEuY3VzdG9tKCkub3B0aW9uYWwoKS5kZWZhdWx0KHRydWUpLFxuICBzaGlwcGluZ0FkZHJlc3NMaW5lMTogUCxcbiAgc2hpcHBpbmdBZGRyZXNzTGluZTI6IFAsXG4gIHNoaXBwaW5nQWRkcmVzc0xpbmUzOiBQLFxuICBzaGlwcGluZ0FkZHJlc3NDaXR5OiBQLFxuICBzaGlwcGluZ0FkZHJlc3NTdGF0ZTogUCxcbiAgc2hpcHBpbmdBZGRyZXNzQ291bnRyeTogUCxcbiAgc2hpcHBpbmdBZGRyZXNzWmlwQ29kZTogUCxcbiAgYnVzaW5lc3NOYW1lOiBQLFxuICB0YXhJZDogUCxcbiAgdGF4SWRUeXBlOiBQXG59KTtcbnokMS5vYmplY3Qoe1xuICBsaW5lMTogVCxcbiAgY2l0eTogVCxcbiAgc3RhdGU6IFQsXG4gIGNvdW50cnk6IFRcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNoaXBwaW5nQWRkcmVzc0NvdW50cnk6IFQsXG4gIHNoaXBwaW5nQWRkcmVzc1ppcENvZGU6IFRcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNoaXBwaW5nQWRkcmVzc0xpbmUxOiBULFxuICBzaGlwcGluZ0FkZHJlc3NDaXR5OiBULFxuICBzaGlwcGluZ0FkZHJlc3NTdGF0ZTogVCxcbiAgc2hpcHBpbmdBZGRyZXNzQ291bnRyeTogVCxcbiAgc2hpcHBpbmdBZGRyZXNzWmlwQ29kZTogVFxufSk7XG5jb25zdCBXbyA9IHBlLmV4dHJhY3QoW1wiVE9LRU5JWkVcIiwgXCJDSEVDS09VVFwiLCBcIlNUQVJUX1BBWU1FTlRfRkxPV1wiXSksIEpvID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IFdvLFxuICBzZXNzaW9uSWQ6IFQsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogRnQsXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBkb05vdFVzZUxlZ2FjeUNDRmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBleGlzdGluZ0NDUE1JZDogUCxcbiAgcGF5bWVudFJvdXRlSWQ6IFBcbn0pLmV4dGVuZChVZS5zaGFwZSksIFpvID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKHBlLmVudW0uVE9LRU5JWkVfU1VDQ0VTUyksXG4gIGlzUmVhZHlGb3JDaGVja291dDogeiQxLmJvb2xlYW4oKVxufSksIFFvID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKHBlLmVudW0uQ0hFQ0tPVVRfU1VDQ0VTUyksXG4gIGludm9pY2VVcmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uSWRzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJJZDogeiQxLnN0cmluZygpLFxuICBwYXltZW50TWV0aG9kSWQ6IFBcbn0pLCBYbyA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgVW8sXG4gIGpvLFxuICBHbyxcbiAgVm8sXG4gIHpvLFxuICBCbyxcbiAgSm8sXG4gIFpvLFxuICBRbyxcbiAgSG8sXG4gIEtvXG5dKSwgZWEgPSB6JDEub2JqZWN0KHtcbiAgcGF5bG9hZDogWG8sXG4gIG5vbmNlOiBULFxuICBmb3JtSWQ6IFQsXG4gIGVsZW1lbnRJZDogVFxufSk7XG56JDEub2JqZWN0KHtcbiAgYW1vdW50QXRvbTogeiQxLm51bWJlcigpLFxuICAvKipcbiAgICogVGhlIHRocmVlLWxldHRlciBJU08gNDIxNyBjdXJyZW5jeSBjb2RlIGZvciB0aGUgcGF5bWVudC5cbiAgICovXG4gIGN1cnJlbmN5OiBUXG59KTtcbnokMS5lbnVtKFtcImFwcGxlX3BheVwiLCBcImdvb2dsZV9wYXlcIl0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBleGlzdGluZ19jY19wbV9pZDogRCh6JDEuc3RyaW5nKCkpLFxuICB0aGVpcl9wbV9pZDogRCh6JDEuc3RyaW5nKCkpLFxuICBjaGVja291dF9hdHRlbXB0X2lkOiBEKHokMS5zdHJpbmcoKSksXG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogRCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgdHQgPSB6JDEub2JqZWN0KHtcbiAgaW52b2ljZV91cmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uX2lkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2lkOiB6JDEuc3RyaW5nKCksXG4gIHBheW1lbnRfbWV0aG9kX2lkOiBEKHokMS5zdHJpbmcoKSksXG4gIHByb2Nlc3NvcnNfdXNlZDogRCh6JDEuYXJyYXkoeiQxLnN0cmluZygpKSlcbn0pLCB0YSA9IHokMS5vYmplY3Qoe1xuICBlbGVtZW50VHlwZTogeiQxLnN0cmluZygpLFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgcmEgPSB6JDEub2JqZWN0KHtcbiAgc3VjY2VzczogeiQxLmxpdGVyYWwoZmFsc2UpLFxuICBlcnJvcl90eXBlOiB6JDEubGl0ZXJhbChcInZhbGlkYXRpb25fZXJyb3JcIiksXG4gIGVycm9yczogeiQxLmFycmF5KHRhKVxufSksIG5hID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInN1Y2Nlc3NcIiwgW1xuICB6JDEub2JqZWN0KHsgc3VjY2VzczogeiQxLmxpdGVyYWwodHJ1ZSkgfSksXG4gIHJhXG5dKTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBGdCxcbiAgbm9uX2NkZV9mb3JtX2ZpZWxkczogVWUsXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IEQoeiQxLnN0cmluZygpKSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBwYXltZW50X3JvdXRlX2lkOiBEKHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2xhbmd1YWdlOiBEKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IEZ0LFxuICBub25fY2RlX2Zvcm1fZmllbGRzOiBVZSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gIHBheW1lbnRfcm91dGVfaWQ6IEQoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJfbGFuZ3VhZ2U6IEQoeiQxLnN0cmluZygpKVxufSk7XG52YXIgRiA9IC8qIEBfX1BVUkVfXyAqLyAoKGUpID0+IChlLlNVQ0NFU1MgPSBcInN1Y2Nlc3NcIiwgZS5GQUlMVVJFID0gXCJmYWlsdXJlXCIsIGUuQ0FOQ0VMTEVEID0gXCJjYW5jZWxsZWRcIiwgZSkpKEYgfHwge30pO1xuY29uc3QgbG4gPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXG4gICAgXCJzdWNjZXNzXCIsXG4gICAgXCJmYWlsdXJlXCIsXG4gICAgXCJjYW5jZWxsZWRcIlxuICAgIC8qIENBTkNFTExFRCAqL1xuICBdKSxcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG5jb25zdCBvYSA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogeiQxLnN0cmluZygpLFxuICBpbml0aWFsX2ludGVudF9pZDogeiQxLnN0cmluZygpLFxuICBjb25zZW50X2lkOiB6JDEuc3RyaW5nKCksXG4gIHRoZWlyX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSksIGFhID0geiQxLm9iamVjdCh7XG4gIGJhbmtfbmFtZTogeiQxLnN0cmluZygpLFxuICBkaXNwbGF5X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgcmVzb3VyY2VzOiB6JDEub2JqZWN0KHtcbiAgICBsb2dvX3VybDogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbiAgfSlcbn0pLCB1biA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogRCh6JDEuc3RyaW5nKCkpLFxuICBpbml0aWFsX2ludGVudF9pZDogRCh6JDEuc3RyaW5nKCkpLFxuICBjb25zZW50X2lkOiBEKHokMS5zdHJpbmcoKSksXG4gIHRoZWlyX3BtX2lkOiBEKHokMS5zdHJpbmcoKSksXG4gIHBheW1lbnRfc2Vzc2lvbjogRCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSksXG4gIGF2YWlsYWJsZV9iYW5rczogRCh6JDEuYXJyYXkoYWEpKVxufSksIGlhID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwodHJ1ZSksIGhyZWY6IHokMS5zdHJpbmcoKSB9KSxcbiAgeiQxLm9iamVjdCh7IHByZXNlbnQ6IHokMS5saXRlcmFsKGZhbHNlKSB9KVxuXSksIHNhID0geiQxLm9iamVjdCh7XG4gIHBheW1lbnRfbWV0aG9kczogeiQxLmFycmF5KHhvKSxcbiAgcGF5X2ZpcnN0X3N1Y2Nlc3NfcmVzcG9uc2U6IEQodHQpLFxuICByZXF1aXJlZF91c2VyX2FjdGlvbnM6IEQoeiQxLmFycmF5KHVuKSksXG4gIHBvc3RfY2hlY2tvdXRfcmVkaXJlY3RfdG86IEQoeiQxLnN0cmluZygpKSxcbiAgY2hlY2tvdXRfc3VjY2Vzc19yZXNwb25zZTogRCh0dClcbn0pLCBjYSA9IHokMS5vYmplY3Qoe1xuICBpbnN0aXR1dGlvbk51bWJlcjogeiQxLnN0cmluZygpLFxuICB0cmFuc2l0TnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIGFjY291bnROdW1iZXI6IHokMS5zdHJpbmcoKSxcbiAgYWNjb3VudFR5cGU6IHokMS5lbnVtKFtcInBlcnNvbmFsXCIsIFwiYnVzaW5lc3NcIl0pXG59KTtcbnokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5lbnVtKFtcInN1Y2Nlc3NcIiwgXCJmYWlsdXJlXCJdKSxcbiAgcGF5bG9hZDogY2Eub3B0aW9uYWwoKVxufSk7XG5jb25zdCBsYSA9IHokMS5vYmplY3Qoe1xuICBzb3J0Q29kZTogeiQxLnN0cmluZygpLFxuICBhY2NvdW50TnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIGFjY291bnRUeXBlOiB6JDEuZW51bShbXCJwZXJzb25hbFwiLCBcImJ1c2luZXNzXCJdKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXCJzdWNjZXNzXCIsIFwiZmFpbHVyZVwiXSksXG4gIHBheWxvYWQ6IGxhLm9wdGlvbmFsKClcbn0pO1xuY29uc3QgdWEgPSB6JDEub2JqZWN0KHtcbiAgaWJhbjogeiQxLnN0cmluZygpLFxuICBhY2NvdW50VHlwZTogeiQxLmVudW0oW1wicGVyc29uYWxcIiwgXCJidXNpbmVzc1wiXSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmVudW0oW1wic3VjY2Vzc1wiLCBcImZhaWx1cmVcIl0pLFxuICBwYXlsb2FkOiB1YS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IGRhID0geiQxLm9iamVjdCh7XG4gIGFjY291bnRfbnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIGFiYV9yb3V0aW5nX251bWJlcjogeiQxLnN0cmluZygpXG59KSwgcGEgPSB6JDEub2JqZWN0KHtcbiAgaW5zdGl0dXRpb25fbnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIHRyYW5zaXRfbnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIGFjY291bnRfbnVtYmVyOiB6JDEuc3RyaW5nKClcbn0pLCBtYSA9IHokMS5vYmplY3Qoe1xuICBhY2NvdW50X251bWJlcjogeiQxLnN0cmluZygpLFxuICBzb3J0X2NvZGU6IHokMS5zdHJpbmcoKVxufSksIGZhID0geiQxLm9iamVjdCh7XG4gIGliYW46IHokMS5zdHJpbmcoKVxufSksIF9hID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmVudW0oW1wic3VjY2Vzc1wiLCBcImZhaWx1cmVcIl0pLFxuICBwYXlsb2FkOiB6JDEudW5pb24oW1xuICAgIGRhLFxuICAgIHBhLFxuICAgIG1hLFxuICAgIGZhLFxuICAgIHokMS5vYmplY3QoeyBlcnJvcjogeiQxLnN0cmluZygpIH0pXG4gIF0pLm9wdGlvbmFsKClcbn0pLCBFID0gKGUpID0+IHokMS5udWxsYWJsZShlLm9wdGlvbmFsKCkpO1xueiQxLnN0cmluZygpLnRyaW0oKS5taW4oMSwgeyBtZXNzYWdlOiBcIkNhbm5vdCBiZSBibGFua1wiIH0pO1xuY29uc3QgeWEgPSB6JDEub2JqZWN0KHtcbiAgY2RlX3Jlc3BvbnNlX3R5cGU6IHokMS5saXRlcmFsKFwiZXJyb3JcIiksXG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKSxcbiAgaGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKVxufSk7XG56JDEuZW51bShbXCJ1c2RcIiwgXCJicmxcIl0pO1xuY29uc3QgZG4gPSB6JDEub2JqZWN0KHtcbiAgbmFtZTogeiQxLnN0cmluZygpLFxuICBhbW91bnRfYXRvbV9vZmY6IEUoeiQxLm51bWJlcigpKSxcbiAgcGVyY2VudF9vZmY6IEUoeiQxLm51bWJlcigpKSxcbiAgY3VycmVuY3k6IEUoeiQxLnN0cmluZygpKSxcbiAgZHVyYXRpb246IHokMS5zdHJpbmcoKSxcbiAgZHVyYXRpb25faW5fbW9udGhzOiBFKHokMS5udW1iZXIoKSlcbn0pLCBwbiA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfc3VidG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBhbW91bnRfdG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogRSh6JDEuc3RyaW5nKCkpLFxuICBwcmljZV9pZDogeiQxLnN0cmluZygpLFxuICBiaWxsaW5nX2ludGVydmFsOiBFKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfaW50ZXJ2YWxfY291bnQ6IEUoeiQxLm51bWJlcigpLmludCgpKSxcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKS5pbnQoKVxufSksIGhhID0geiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksIGdhID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgc2V0dGluZ3M6IEUoaGEpXG59KSwgcWUgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgcHJvY2Vzc29yX25hbWU6IEUoeiQxLnN0cmluZygpKSxcbiAgbWV0YWRhdGE6IEUoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KSwgd2EgPSB6JDEub2JqZWN0KHtcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKVxufSksIHZhID0geiQxLm9iamVjdCh7XG4gIGlkOiBFKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfaW50ZXJ2YWw6IEUoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbF9jb3VudDogRSh6JDEubnVtYmVyKCkuaW50KCkpLFxuICBzdWJzY3JpcHRpb25faXRlbXM6IHokMS5hcnJheSh3YSksXG4gIHRyaWFsX3N0YXJ0OiBFKHokMS5zdHJpbmcoKSksXG4gIHRyaWFsX2VuZDogRSh6JDEuc3RyaW5nKCkpXG59KSwgbW4gPSB6JDEub2JqZWN0KHtcbiAgYW1vdW50X2F0b206IHokMS5udW1iZXIoKVxufSksIGJhID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIGFtb3VudF9hdG9tX2NvbnNpZGVyaW5nX2Rpc2NvdW50X2FwcGxpZWQ6IHokMS5udW1iZXIoKSxcbiAgY3VycmVuY3k6IHokMS5zdHJpbmcoKSxcbiAgZGlzY291bnRfYW1vdW50X2F0b21zOiB6JDEuYXJyYXkobW4pLFxuICBzdWJzY3JpcHRpb25faXRlbV9pZDogeiQxLnN0cmluZygpXG59KSwgUGEgPSB6JDEub2JqZWN0KHtcbiAgY291cG9uOiBkblxufSksIEVhID0geiQxLm9iamVjdCh7XG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRpc2NvdW50czogeiQxLmFycmF5KFBhKSxcbiAgaG9zdGVkX2ludm9pY2VfdXJsOiBFKHokMS5zdHJpbmcoKSksXG4gIGxpbmVzOiB6JDEuYXJyYXkoYmEpLFxuICByZW1haW5pbmdfYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgdGF4X2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRvdGFsX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRvdGFsX2Rpc2NvdW50X2Ftb3VudF9hdG9tczogeiQxLmFycmF5KG1uKVxufSksIEFyID0geiQxLm9iamVjdCh7XG4gIGNyZWF0ZWQ6IHokMS5hcnJheSh2YSksXG4gIGludm9pY2VzOiB6JDEuYXJyYXkoRWEpLFxuICBwcm9jZXNzb3JzX3VzZWQ6IEUoeiQxLmFycmF5KHokMS5zdHJpbmcoKSkpLFxuICBwYXltZW50X21ldGhvZF9pZDogRSh6JDEuc3RyaW5nKCkpXG59KSwgZm4gPSB6JDEub2JqZWN0KHtcbiAgcHJldmlldzogQXIsXG4gIHByZXZpZXdfcG9zdF90cmlhbDogRShBciksXG4gIGNvdXBvbnM6IHokMS5hcnJheShkbilcbn0pLCBTciA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwib3BlblwiKSxcbiAgbG9jYWxlOiBFKHokMS5zdHJpbmcoKSksXG4gIHRva2VuOiB6JDEuc3RyaW5nKCksXG4gIGVtYWlsOiBFKHokMS5zdHJpbmcoKSksXG4gIGNoZWNrb3V0X3NldHRpbmdzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSxcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KHBuKSxcbiAgYW1vdW50X3N1YnRvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYW1vdW50X3RvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYnJhbmQ6IGdhLFxuICBzdWJzX3ByZXZpZXc6IEUoZm4pLFxuICAvLyBOdWxsIGluIHNldHVwIG1vZGVcbiAgbWV0aG9kc19hdmFpbGFibGU6IHokMS5hcnJheShxZSksXG4gIHJldHVybl91cmw6IEUoeiQxLnN0cmluZygpKSxcbiAgc3VjY2Vzc191cmw6IEUoeiQxLnN0cmluZygpKSxcbiAgZmluYWxfZmVhdHVyZV9yb2xsb3V0X3NldHRpbmdzOiBFKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSksIF9uID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcIm1vZGVcIiwgW1xuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEubGl0ZXJhbChcInNldHVwXCIpLFxuICAgIGN1cnJlbmN5OiB6JDEubnVsbGFibGUoeiQxLnVuZGVmaW5lZCgpKVxuICB9KS5leHRlbmQoU3Iuc2hhcGUpLFxuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEuZW51bShbXCJwYXltZW50XCIsIFwic3Vic2NyaXB0aW9uXCJdKSxcbiAgICBjdXJyZW5jeTogeiQxLnN0cmluZygpXG4gIH0pLmV4dGVuZChTci5zaGFwZSlcbl0pLCBDYSA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiY29tcGxldGVcIilcbn0pLCBBYSA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiZXhwaXJlZFwiKVxufSk7XG56JDEudW5pb24oW19uLCBDYSwgQWFdKTtcbnokMS5vYmplY3Qoe1xuICBsb2dvOiB6JDEuc3RyaW5nKCksXG4gIGljb246IHokMS5zdHJpbmcoKSxcbiAgcHJpbWFyeV9jb2xvcjogeiQxLnN0cmluZygpLFxuICBzZWNvbmRhcnlfY29sb3I6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIHBtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgUHQgPSB6JDEub2JqZWN0KHtcbiAgbGluZTE6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBsaW5lMjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGxpbmUzOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY2l0eTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHN0YXRlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY291bnRyeTogeiQxLnN0cmluZygpLFxuICB6aXBfY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwYXltZW50X2lucHV0OiB6JDEuYW55KCksXG4gIC8vIFNob3VsZCBmb2xsb3cgQW55UGF5bWVudElucHV0IGZyb20gQ0RFXG4gIGN1c3RvbWVyX2VtYWlsOiB6JDEuc3RyaW5nKCksXG4gIGN1c3RvbWVyX2xhc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGN1c3RvbWVyX2ZpcnN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9hZGRyZXNzOiBQdCxcbiAgY3VzdG9tZXJfc2hpcHBpbmdfYWRkcmVzczogUHQub3B0aW9uYWwoKSxcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KHBuKSxcbiAgdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgY2FuY2VsX2F0X2VuZDogeiQxLmJvb2xlYW4oKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHFlLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdXNlX2NvbmZpcm1lZF9wbV9pZDogRSh6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3JvdXRlX2lkOiBFKHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgeW4gPSB6JDEub2JqZWN0KHtcbiAgcGF5bWVudF9tZXRob2RfaWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKSxcbiAgcmV0dXJuX3VybDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IFNhID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgbG9jOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgbXNnOiB6JDEuc3RyaW5nKCksXG4gIHVybDogeiQxLnN0cmluZygpXG59KTtcbnokMS5hcnJheShTYSk7XG5jb25zdCBrYSA9IHokMS5vYmplY3Qoe1xuICBuZXdfY3VzdG9tZXJfZW1haWw6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbmV3X2N1c3RvbWVyX2ZpcnN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9idXNpbmVzc19uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfdGF4X2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfdGF4X2lkX3R5cGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfYWRkcmVzczogUHQsXG4gIG5ld19jdXN0b21lcl9zaGlwcGluZ19hZGRyZXNzOiBQdC5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9sYW5ndWFnZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9waG9uZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pLCBJYSA9IHokMS5vYmplY3Qoe1xuICBwcmljZV9pZDogeiQxLnN0cmluZygpLFxuICBxdWFudGl0eTogeiQxLm51bWJlcigpLmludCgpXG59KSwgaG4gPSB6JDEub2JqZWN0KHtcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KElhKSxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKS5pbnQoKVxufSksIFJhID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogRSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHBheW1lbnRfcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHFlLFxuICBleGlzdGluZ19jY19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRoZWlyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdXNlX3BheV9maXJzdF9mbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogaG4ub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfbGFuZ3VhZ2U6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KS5leHRlbmQoa2Euc2hhcGUpLmV4dGVuZChSYS5zaGFwZSk7XG5jb25zdCBnbiA9IHokMS5vYmplY3Qoe1xuICByZXF1aXJlZF91c2VyX2FjdGlvbnM6IHokMS5hcnJheSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSksXG4gIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IEUoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgZmllbGRzOiBZbyxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBxZSxcbiAgcGF5bWVudF9yb3V0ZV9pZDogRSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFVlLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogcWUsXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSxcbiAgLy8gVGhpcyBpcyBvcHRpb25hbCBpbiBDREUsIGJ1dCBub3QgaW4gT0pTIG1vdmluZyBmb3J3YXJkXG4gIHVzZV91bmlmaWVkX2NjX2Zsb3c6IEUoeiQxLmJvb2xlYW4oKSksXG4gIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogaG4ub3B0aW9uYWwoKSxcbiAgcGF5bWVudF9yb3V0ZV9pZDogRSh6JDEuc3RyaW5nKCkpLFxuICBjdXN0b21lcl9sYW5ndWFnZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGV4aXN0aW5nX2NjX3BtX2lkOiBFKHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgRmEgPSB6JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjY19wbV9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9zdWNjZXNzX3Jlc3BvbnNlOiBFKHR0KSxcbiAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogRSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5yZWNvcmQoeiQxLmFueSgpKTtcbnokMS5vYmplY3Qoe1xuICBmaXJzdF9uYW1lOiBFKHokMS5zdHJpbmcoKSksXG4gIGxhc3RfbmFtZTogRSh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMTogRSh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMjogRSh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMzogRSh6JDEuc3RyaW5nKCkpLFxuICBjaXR5OiBFKHokMS5zdHJpbmcoKSksXG4gIHN0YXRlOiBFKHokMS5zdHJpbmcoKSksXG4gIGNvdW50cnk6IEUoeiQxLnN0cmluZygpKSxcbiAgemlwX2NvZGU6IEUoeiQxLnN0cmluZygpKSxcbiAgZW1haWw6IEUoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19lbWFpbDogRSh6JDEuc3RyaW5nKCkpLFxuICBwaG9uZV9udW1iZXI6IEUoeiQxLnN0cmluZygpKSxcbiAgYnVzaW5lc3NfbmFtZTogRSh6JDEuc3RyaW5nKCkpLFxuICB0YXhfaWQ6IEUoeiQxLnN0cmluZygpKSxcbiAgdGF4X2lkX3R5cGU6IEUoeiQxLnN0cmluZygpKSxcbiAgdXBkYXRlX3Byb2Nlc3Nvcl9jdXN0b21lcjogRSh6JDEuYm9vbGVhbigpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IEUoeiQxLnN0cmluZygpKSxcbiAgZmlyc3RfbmFtZTogRSh6JDEuc3RyaW5nKCkpLFxuICBsYXN0X25hbWU6IEUoeiQxLnN0cmluZygpKSxcbiAgcGhvbmVfbnVtYmVyOiBFKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfZW1haWw6IEUoeiQxLnN0cmluZygpKSxcbiAgYWRkcmVzczogRSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBUYSA9IHokMS5vYmplY3Qoe1xuICBlcnJvcl9jb2RlOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBxZSxcbiAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5hbnkoKSkub3B0aW9uYWwoKSxcbiAgcGF5bWVudF9yb3V0ZV9pZDogRSh6JDEuc3RyaW5nKCkpXG59KTtcbmNvbnN0IE5hID0geiQxLm9iamVjdCh7XG4gIG5leHRfYWN0aW9uX21ldGFkYXRhOiBFKHokMS5yZWNvcmQoeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIGV2ZW50czogeiQxLmFycmF5KFxuICAgIHokMS5vYmplY3Qoe1xuICAgICAgZXZlbnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgICAgZGV2aWNlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gICAgICBwcm9wZXJ0aWVzOiB6JDEucmVjb3JkKHokMS5hbnkoKSkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRleHRfcHJvcGVydGllczogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKClcbiAgICB9KVxuICApXG59KTtcbnokMS5hbnkoKS5vcHRpb25hbCgpO1xueiQxLm9iamVjdCh7XG4gIGRldmljZV90b2tlbjogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IExhID0geiQxLm9iamVjdCh7fSksIE1hID0geiQxLm9iamVjdCh7XG4gIF91bmlmaWVkX2NjX2FjdGlvbl9uYW1lOiB6JDEuc3RyaW5nKCksXG4gIF91bmlmaWVkX2NjX3BjY3NfaWQ6IHokMS5zdHJpbmcoKVxufSkuY2F0Y2hhbGwoeiQxLmFueSgpKSwgeGEgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pLCBEYSA9IHokMS5hcnJheSh4YSksIFVhID0geiQxLm9iamVjdCh7XG4gIGNvZGU6IHokMS5zdHJpbmcoKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBwYXRoOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKVxufSksIE9hID0geiQxLmFycmF5KFVhKSwgamEgPSB7XG4gIFwiZmFpbGVkIHRvIGZldGNoXCI6IFwiQ29ubmVjdGlvbiBlcnJvcjogcGxlYXNlIGRvdWJsZSBjaGVjayBpZiB5b3UgYXJlIGNvbm5lY3RlZCB0byB0aGUgaW50ZXJuZXQsIHRoZW4gdHJ5IGFnYWluXCJcbn0sIFp0ID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IGUudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gIHJldHVybiBqYVt0XSA/PyBlO1xufSwgJGEgPSAoZSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgSlNPTi5wYXJzZShlKSA9PSBcIm9iamVjdFwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0sIEdhID0gKGUpID0+IGUubGVuZ3RoID09PSAxID8gWnQoZVswXS5tc2cpIDogYFBsZWFzZSBmaXggdGhlIGZvbGxvd2luZyBlcnJvcnM6XG4ke2UubWFwKChyKSA9PiBg4oCiICR7WnQoci5tc2cpfWApLmpvaW4oYFxuYCl9YCwgcWEgPSAoZSkgPT4gYEVuY291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZXJyb3JzOlxuJHtlLm1hcCgocikgPT4gYC0gJHtyLnBhdGguam9pbihcIi9cIil9OiAke3IubWVzc2FnZX1gKS5qb2luKGBcbmApfWAsIGFlID0gKGUpID0+IHtcbiAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcilcbiAgICBpZiAoJGEoZS5tZXNzYWdlKSkge1xuICAgICAgY29uc3QgdCA9IEpTT04ucGFyc2UoZS5tZXNzYWdlKTtcbiAgICAgIHJldHVybiBEYS5zYWZlUGFyc2UodCkuc3VjY2VzcyA/IEdhKHQpIDogT2Euc2FmZVBhcnNlKHQpLnN1Y2Nlc3MgPyBxYSh0KSA6IChjb25zb2xlLndhcm4oYEVuY291bnRlcmVkIHVua25vd24gc3RyaW5naWZpZWQgSlNPTiBvYmplY3Q6XG4ke2UubWVzc2FnZX1gKSwgZS5tZXNzYWdlKTtcbiAgICB9IGVsc2VcbiAgICAgIHJldHVybiBadChlLm1lc3NhZ2UpO1xuICBpZiAodHlwZW9mIGUgPT0gXCJvYmplY3RcIilcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpO1xuICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgIHJldHVybiB0ICsgXCJcIjtcbiAgICB9XG4gIGVsc2VcbiAgICByZXR1cm4gZSArIFwiXCI7XG59LCBWYSA9IChlLCB0LCByKSA9PiAoKC4uLm4pID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdCguLi5uKTtcbiAgfSBjYXRjaCAoYSkge1xuICAgIHIoYFtmb3JtXSBFcnJvciBydW5uaW5nIGNhbGxiYWNrICgke2V9KTpgLCBhKTtcbiAgICByZXR1cm47XG4gIH1cbn0pLCB6YSA9IChlKSA9PiBlLnJlZHVjZSgodCwgcikgPT4gdCArIHIsIDApLCB3biA9IChlKSA9PiB7XG4gIGUucHJldmVudERlZmF1bHQoKSwgZS5yZXR1cm5WYWx1ZSA9IHRydWU7XG59LCBCYSA9ICgpID0+IHtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgd24pO1xufSwgSGEgPSAoKSA9PiB7XG4gIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIHduKTtcbn0sIFYgPSAoZSkgPT4ge1xuICBsZXQgdCA9IGZhbHNlO1xuICByZXR1cm4gYXN5bmMgKHIpID0+IHtcbiAgICBpZiAodCkge1xuICAgICAgY29uc29sZS53YXJuKFwiU2tpcHBpbmcgc3VibWlzc2lvbiBiZWNhdXNlIGl0IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICByLmNvbnRleHQucHJldmVudE5hdmlnYXRpb25EdXJpbmdTdWJtaXNzaW9uICYmIEJhKCksIHIuZm9ybUNhbGxiYWNrcy5nZXQub25DaGVja291dFN0YXJ0ZWQ/LigpLCB2KFwiY2hlY2tvdXRfc3RhcnRlZFwiLCB7XG4gICAgICAgIGNwbTogci5jaGVja291dFBheW1lbnRNZXRob2RcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbiA9IGF3YWl0IGUocik7XG4gICAgICBpZiAodihcImNoZWNrb3V0X3N1Y2Nlc3NcIiwge1xuICAgICAgICBjcG06IHIuY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgICAuLi5uXG4gICAgICB9KSwgSGkoKSwgbi5tb2RlID09PSBcInNldHVwXCIpXG4gICAgICAgIHIuZm9ybUNhbGxiYWNrcy5nZXQub25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzKG4ucmVzdWx0LnBheW1lbnRfbWV0aG9kX2lkKTtcbiAgICAgIGVsc2UgaWYgKG4ubW9kZSA9PT0gXCJjaGVja291dFwiKVxuICAgICAgICByLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQ2hlY2tvdXRTdWNjZXNzKFxuICAgICAgICAgIG4ucmVzdWx0Lmludm9pY2VfdXJscyxcbiAgICAgICAgICBuLnJlc3VsdC5zdWJzY3JpcHRpb25faWRzLFxuICAgICAgICAgIG4ucmVzdWx0LmN1c3RvbWVyX2lkLFxuICAgICAgICAgIG4ucmVzdWx0LnByb2Nlc3NvcnNfdXNlZCA/PyBbXSxcbiAgICAgICAgICBuLnJlc3VsdC5wYXltZW50X21ldGhvZF9pZCA/PyBcIlwiXG4gICAgICAgICk7XG4gICAgICBlbHNlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIG1vZGU6ICR7bn1gKTtcbiAgICB9IGNhdGNoIChuKSB7XG4gICAgICB0ID0gZmFsc2U7XG4gICAgICBjb25zdCBhID0gYWUobiksIGkgPSBhd2FpdCBqbihyLmNvbnRleHQuYW55Q2RlQ29ubmVjdGlvbiwgYSk7XG4gICAgICByLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQ2hlY2tvdXRFcnJvcihhLCBpKSwgdihcImNoZWNrb3V0X2Vycm9yXCIsIHsgY3BtOiByLmNoZWNrb3V0UGF5bWVudE1ldGhvZCwgZXJyb3JNZXNzYWdlOiBhLCBlcnJvckNvZGU6IGksIGVycm9yOiBuIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0ID0gZmFsc2UsIHIuY29udGV4dC5wcmV2ZW50TmF2aWdhdGlvbkR1cmluZ1N1Ym1pc3Npb24gJiYgSGEoKTtcbiAgICB9XG4gIH07XG59LCBjZSA9IChlKSA9PiBhc3luYyAodCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBlKHQpO1xuICB9IGNhdGNoIChyKSB7XG4gICAgY29uc3QgeyBlcnJfXzogbiB9ID0gayhcImluaXQtZXJyb3ItY2F0Y2hlclwiKSwgYSA9IGFlKHIpLCBpID0gYXdhaXQgam4odC5jb250ZXh0LmFueUNkZUNvbm5lY3Rpb24sIGEpO1xuICAgIHJldHVybiBuKGksIGEsIHIpLCB2KFwiaW5pdF9mbG93X2Vycm9yXCIsIHsgZXJyb3JNZXNzYWdlOiBhLCBlcnJvckNvZGU6IGksIGVycm9yOiByIH0pLCB7IGlzQXZhaWxhYmxlOiBmYWxzZSwgcmVhc29uOiBhLCBlcnJvckNvZGU6IGksIGlzTG9hZGluZzogZmFsc2UgfTtcbiAgfVxufSwgayA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSAoLi4ubikgPT4ge1xuICAgIHdpbmRvdy5jb25zb2xlLmxvZyhgJHtjaGFsay5ncmVlbi5ib2xkKFwib2pzL1wiKX0ke2NoYWxrLmJvbGQuZ3JheShgJHtlfWApfVx0YCwgLi4ubik7XG4gIH0sIHIgPSAoLi4ubikgPT4ge1xuICAgIHdpbmRvdy5jb25zb2xlLndhcm4oYCR7Y2hhbGsucmVkLmJvbGQoXCJvanMvXCIpfSR7Y2hhbGsuYm9sZC5ncmF5KGAke2V9YCl9XHRgLCAuLi5uKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBsb2c6IHQsXG4gICAgZXJyOiByLFxuICAgIGxvZ19fOiB0LFxuICAgIGVycl9fOiByXG4gIH07XG59O1xudmFyIFF0ID0gZnVuY3Rpb24oZSwgdCkge1xuICByZXR1cm4gUXQgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihyLCBuKSB7XG4gICAgci5fX3Byb3RvX18gPSBuO1xuICB9IHx8IGZ1bmN0aW9uKHIsIG4pIHtcbiAgICBmb3IgKHZhciBhIGluIG4pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCBhKSAmJiAoclthXSA9IG5bYV0pO1xuICB9LCBRdChlLCB0KTtcbn07XG5mdW5jdGlvbiBFZShlLCB0KSB7XG4gIGlmICh0eXBlb2YgdCAhPSBcImZ1bmN0aW9uXCIgJiYgdCAhPT0gbnVsbClcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyh0KSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIFF0KGUsIHQpO1xuICBmdW5jdGlvbiByKCkge1xuICAgIHRoaXMuY29uc3RydWN0b3IgPSBlO1xuICB9XG4gIGUucHJvdG90eXBlID0gdCA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUodCkgOiAoci5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IHIoKSk7XG59XG5mdW5jdGlvbiBLYShlLCB0LCByLCBuKSB7XG4gIGZ1bmN0aW9uIGEoaSkge1xuICAgIHJldHVybiBpIGluc3RhbmNlb2YgciA/IGkgOiBuZXcgcihmdW5jdGlvbihzKSB7XG4gICAgICBzKGkpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKHIgfHwgKHIgPSBQcm9taXNlKSkoZnVuY3Rpb24oaSwgcykge1xuICAgIGZ1bmN0aW9uIGwoZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShuLm5leHQoZCkpO1xuICAgICAgfSBjYXRjaCAobSkge1xuICAgICAgICBzKG0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBjKGQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUobi50aHJvdyhkKSk7XG4gICAgICB9IGNhdGNoIChtKSB7XG4gICAgICAgIHMobSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUoZCkge1xuICAgICAgZC5kb25lID8gaShkLnZhbHVlKSA6IGEoZC52YWx1ZSkudGhlbihsLCBjKTtcbiAgICB9XG4gICAgdSgobiA9IG4uYXBwbHkoZSwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHZuKGUsIHQpIHtcbiAgdmFyIHIgPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHtcbiAgICBpZiAoaVswXSAmIDEpIHRocm93IGlbMV07XG4gICAgcmV0dXJuIGlbMV07XG4gIH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIG4sIGEsIGksIHMgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT0gXCJmdW5jdGlvblwiID8gSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSk7XG4gIHJldHVybiBzLm5leHQgPSBsKDApLCBzLnRocm93ID0gbCgxKSwgcy5yZXR1cm4gPSBsKDIpLCB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiAoc1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBzO1xuICBmdW5jdGlvbiBsKHUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZCkge1xuICAgICAgcmV0dXJuIGMoW3UsIGRdKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGModSkge1xuICAgIGlmIChuKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICBmb3IgKDsgcyAmJiAocyA9IDAsIHVbMF0gJiYgKHIgPSAwKSksIHI7ICkgdHJ5IHtcbiAgICAgIGlmIChuID0gMSwgYSAmJiAoaSA9IHVbMF0gJiAyID8gYS5yZXR1cm4gOiB1WzBdID8gYS50aHJvdyB8fCAoKGkgPSBhLnJldHVybikgJiYgaS5jYWxsKGEpLCAwKSA6IGEubmV4dCkgJiYgIShpID0gaS5jYWxsKGEsIHVbMV0pKS5kb25lKSByZXR1cm4gaTtcbiAgICAgIHN3aXRjaCAoYSA9IDAsIGkgJiYgKHUgPSBbdVswXSAmIDIsIGkudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiByLmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByLmxhYmVsKyssIGEgPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IHIub3BzLnBvcCgpLCByLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGkgPSByLnRyeXMsICEoaSA9IGkubGVuZ3RoID4gMCAmJiBpW2kubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICByID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIWkgfHwgdVsxXSA+IGlbMF0gJiYgdVsxXSA8IGlbM10pKSB7XG4gICAgICAgICAgICByLmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiByLmxhYmVsIDwgaVsxXSkge1xuICAgICAgICAgICAgci5sYWJlbCA9IGlbMV0sIGkgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpICYmIHIubGFiZWwgPCBpWzJdKSB7XG4gICAgICAgICAgICByLmxhYmVsID0gaVsyXSwgci5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpWzJdICYmIHIub3BzLnBvcCgpLCByLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gdC5jYWxsKGUsIHIpO1xuICAgIH0gY2F0Y2ggKGQpIHtcbiAgICAgIHUgPSBbNiwgZF0sIGEgPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBuID0gaSA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuZnVuY3Rpb24gT2UoZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgciA9IHQgJiYgZVt0XSwgbiA9IDA7XG4gIGlmIChyKSByZXR1cm4gci5jYWxsKGUpO1xuICBpZiAoZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBlICYmIG4gPj0gZS5sZW5ndGggJiYgKGUgPSB2b2lkIDApLCB7IHZhbHVlOiBlICYmIGVbbisrXSwgZG9uZTogIWUgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IodCA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cbmZ1bmN0aW9uIEV0KGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBhLCBpID0gW10sIHM7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoIChsKSB7XG4gICAgcyA9IHsgZXJyb3I6IGwgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHMpIHRocm93IHMuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufVxuZnVuY3Rpb24gQ3QoZSwgdCwgcikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSB0Lmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gdCkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwgMCwgbikpLCBpW25dID0gdFtuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKTtcbn1cbmZ1bmN0aW9uIE1lKGUpIHtcbiAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBNZSA/ICh0aGlzLnYgPSBlLCB0aGlzKSA6IG5ldyBNZShlKTtcbn1cbmZ1bmN0aW9uIFlhKGUsIHQsIHIpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIG4gPSByLmFwcGx5KGUsIHQgfHwgW10pLCBhLCBpID0gW107XG4gIHJldHVybiBhID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEFzeW5jSXRlcmF0b3IgPT0gXCJmdW5jdGlvblwiID8gQXN5bmNJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKSwgbChcIm5leHRcIiksIGwoXCJ0aHJvd1wiKSwgbChcInJldHVyblwiLCBzKSwgYVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSwgYTtcbiAgZnVuY3Rpb24gcyh5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXykudGhlbih5LCBtKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGwoeSwgXykge1xuICAgIG5beV0gJiYgKGFbeV0gPSBmdW5jdGlvbihnKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odywgaCkge1xuICAgICAgICBpLnB1c2goW3ksIGcsIHcsIGhdKSA+IDEgfHwgYyh5LCBnKTtcbiAgICAgIH0pO1xuICAgIH0sIF8gJiYgKGFbeV0gPSBfKGFbeV0pKSk7XG4gIH1cbiAgZnVuY3Rpb24gYyh5LCBfKSB7XG4gICAgdHJ5IHtcbiAgICAgIHUoblt5XShfKSk7XG4gICAgfSBjYXRjaCAoZykge1xuICAgICAgZihpWzBdWzNdLCBnKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gdSh5KSB7XG4gICAgeS52YWx1ZSBpbnN0YW5jZW9mIE1lID8gUHJvbWlzZS5yZXNvbHZlKHkudmFsdWUudikudGhlbihkLCBtKSA6IGYoaVswXVsyXSwgeSk7XG4gIH1cbiAgZnVuY3Rpb24gZCh5KSB7XG4gICAgYyhcIm5leHRcIiwgeSk7XG4gIH1cbiAgZnVuY3Rpb24gbSh5KSB7XG4gICAgYyhcInRocm93XCIsIHkpO1xuICB9XG4gIGZ1bmN0aW9uIGYoeSwgXykge1xuICAgIHkoXyksIGkuc2hpZnQoKSwgaS5sZW5ndGggJiYgYyhpWzBdWzBdLCBpWzBdWzFdKTtcbiAgfVxufVxuZnVuY3Rpb24gV2EoZSkge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgdCA9IGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCByO1xuICByZXR1cm4gdCA/IHQuY2FsbChlKSA6IChlID0gdHlwZW9mIE9lID09IFwiZnVuY3Rpb25cIiA/IE9lKGUpIDogZVtTeW1ib2wuaXRlcmF0b3JdKCksIHIgPSB7fSwgbihcIm5leHRcIiksIG4oXCJ0aHJvd1wiKSwgbihcInJldHVyblwiKSwgcltTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSwgcik7XG4gIGZ1bmN0aW9uIG4oaSkge1xuICAgIHJbaV0gPSBlW2ldICYmIGZ1bmN0aW9uKHMpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihsLCBjKSB7XG4gICAgICAgIHMgPSBlW2ldKHMpLCBhKGwsIGMsIHMuZG9uZSwgcy52YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGEoaSwgcywgbCwgYykge1xuICAgIFByb21pc2UucmVzb2x2ZShjKS50aGVuKGZ1bmN0aW9uKHUpIHtcbiAgICAgIGkoeyB2YWx1ZTogdSwgZG9uZTogbCB9KTtcbiAgICB9LCBzKTtcbiAgfVxufVxuZnVuY3Rpb24gWShlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcImZ1bmN0aW9uXCI7XG59XG5mdW5jdGlvbiBOdChlKSB7XG4gIHZhciB0ID0gZnVuY3Rpb24obikge1xuICAgIEVycm9yLmNhbGwobiksIG4uc3RhY2sgPSBuZXcgRXJyb3IoKS5zdGFjaztcbiAgfSwgciA9IGUodCk7XG4gIHJldHVybiByLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSwgci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSByLCByO1xufVxudmFyIHp0ID0gTnQoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24ocikge1xuICAgIGUodGhpcyksIHRoaXMubWVzc2FnZSA9IHIgPyByLmxlbmd0aCArIGAgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcbmAgKyByLm1hcChmdW5jdGlvbihuLCBhKSB7XG4gICAgICByZXR1cm4gYSArIDEgKyBcIikgXCIgKyBuLnRvU3RyaW5nKCk7XG4gICAgfSkuam9pbihgXG4gIGApIDogXCJcIiwgdGhpcy5uYW1lID0gXCJVbnN1YnNjcmlwdGlvbkVycm9yXCIsIHRoaXMuZXJyb3JzID0gcjtcbiAgfTtcbn0pO1xuZnVuY3Rpb24gQXQoZSwgdCkge1xuICBpZiAoZSkge1xuICAgIHZhciByID0gZS5pbmRleE9mKHQpO1xuICAgIDAgPD0gciAmJiBlLnNwbGljZShyLCAxKTtcbiAgfVxufVxudmFyIHN0ID0gKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBlKHQpIHtcbiAgICB0aGlzLmluaXRpYWxUZWFyZG93biA9IHQsIHRoaXMuY2xvc2VkID0gZmFsc2UsIHRoaXMuX3BhcmVudGFnZSA9IG51bGwsIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICB9XG4gIHJldHVybiBlLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciB0LCByLCBuLCBhLCBpO1xuICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICAgIHZhciBzID0gdGhpcy5fcGFyZW50YWdlO1xuICAgICAgaWYgKHMpXG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnRhZ2UgPSBudWxsLCBBcnJheS5pc0FycmF5KHMpKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBsID0gT2UocyksIGMgPSBsLm5leHQoKTsgIWMuZG9uZTsgYyA9IGwubmV4dCgpKSB7XG4gICAgICAgICAgICAgIHZhciB1ID0gYy52YWx1ZTtcbiAgICAgICAgICAgICAgdS5yZW1vdmUodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZykge1xuICAgICAgICAgICAgdCA9IHsgZXJyb3I6IGcgfTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYyAmJiAhYy5kb25lICYmIChyID0gbC5yZXR1cm4pICYmIHIuY2FsbChsKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGlmICh0KSB0aHJvdyB0LmVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHMucmVtb3ZlKHRoaXMpO1xuICAgICAgdmFyIGQgPSB0aGlzLmluaXRpYWxUZWFyZG93bjtcbiAgICAgIGlmIChZKGQpKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGQoKTtcbiAgICAgICAgfSBjYXRjaCAoZykge1xuICAgICAgICAgIGkgPSBnIGluc3RhbmNlb2YgenQgPyBnLmVycm9ycyA6IFtnXTtcbiAgICAgICAgfVxuICAgICAgdmFyIG0gPSB0aGlzLl9maW5hbGl6ZXJzO1xuICAgICAgaWYgKG0pIHtcbiAgICAgICAgdGhpcy5fZmluYWxpemVycyA9IG51bGw7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZm9yICh2YXIgZiA9IE9lKG0pLCB5ID0gZi5uZXh0KCk7ICF5LmRvbmU7IHkgPSBmLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIF8gPSB5LnZhbHVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAga3IoXyk7XG4gICAgICAgICAgICB9IGNhdGNoIChnKSB7XG4gICAgICAgICAgICAgIGkgPSBpID8/IFtdLCBnIGluc3RhbmNlb2YgenQgPyBpID0gQ3QoQ3QoW10sIEV0KGkpKSwgRXQoZy5lcnJvcnMpKSA6IGkucHVzaChnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGcpIHtcbiAgICAgICAgICBuID0geyBlcnJvcjogZyB9O1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5ICYmICF5LmRvbmUgJiYgKGEgPSBmLnJldHVybikgJiYgYS5jYWxsKGYpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAobikgdGhyb3cgbi5lcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpKVxuICAgICAgICB0aHJvdyBuZXcgenQoaSk7XG4gICAgfVxuICB9LCBlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHI7XG4gICAgaWYgKHQgJiYgdCAhPT0gdGhpcylcbiAgICAgIGlmICh0aGlzLmNsb3NlZClcbiAgICAgICAga3IodCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKHQgaW5zdGFuY2VvZiBlKSB7XG4gICAgICAgICAgaWYgKHQuY2xvc2VkIHx8IHQuX2hhc1BhcmVudCh0aGlzKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB0Ll9hZGRQYXJlbnQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgKHRoaXMuX2ZpbmFsaXplcnMgPSAociA9IHRoaXMuX2ZpbmFsaXplcnMpICE9PSBudWxsICYmIHIgIT09IHZvaWQgMCA/IHIgOiBbXSkucHVzaCh0KTtcbiAgICAgIH1cbiAgfSwgZS5wcm90b3R5cGUuX2hhc1BhcmVudCA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICByZXR1cm4gciA9PT0gdCB8fCBBcnJheS5pc0FycmF5KHIpICYmIHIuaW5jbHVkZXModCk7XG4gIH0sIGUucHJvdG90eXBlLl9hZGRQYXJlbnQgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgdGhpcy5fcGFyZW50YWdlID0gQXJyYXkuaXNBcnJheShyKSA/IChyLnB1c2godCksIHIpIDogciA/IFtyLCB0XSA6IHQ7XG4gIH0sIGUucHJvdG90eXBlLl9yZW1vdmVQYXJlbnQgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgciA9PT0gdCA/IHRoaXMuX3BhcmVudGFnZSA9IG51bGwgOiBBcnJheS5pc0FycmF5KHIpICYmIEF0KHIsIHQpO1xuICB9LCBlLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSB0aGlzLl9maW5hbGl6ZXJzO1xuICAgIHIgJiYgQXQociwgdCksIHQgaW5zdGFuY2VvZiBlICYmIHQuX3JlbW92ZVBhcmVudCh0aGlzKTtcbiAgfSwgZS5FTVBUWSA9IChmdW5jdGlvbigpIHtcbiAgICB2YXIgdCA9IG5ldyBlKCk7XG4gICAgcmV0dXJuIHQuY2xvc2VkID0gdHJ1ZSwgdDtcbiAgfSkoKSwgZTtcbn0pKCksIGJuID0gc3QuRU1QVFk7XG5mdW5jdGlvbiBQbihlKSB7XG4gIHJldHVybiBlIGluc3RhbmNlb2Ygc3QgfHwgZSAmJiBcImNsb3NlZFwiIGluIGUgJiYgWShlLnJlbW92ZSkgJiYgWShlLmFkZCkgJiYgWShlLnVuc3Vic2NyaWJlKTtcbn1cbmZ1bmN0aW9uIGtyKGUpIHtcbiAgWShlKSA/IGUoKSA6IGUudW5zdWJzY3JpYmUoKTtcbn1cbnZhciBKYSA9IHtcbiAgUHJvbWlzZTogdm9pZCAwXG59LCBaYSA9IHtcbiAgc2V0VGltZW91dDogZnVuY3Rpb24oZSwgdCkge1xuICAgIGZvciAodmFyIHIgPSBbXSwgbiA9IDI7IG4gPCBhcmd1bWVudHMubGVuZ3RoOyBuKyspXG4gICAgICByW24gLSAyXSA9IGFyZ3VtZW50c1tuXTtcbiAgICByZXR1cm4gc2V0VGltZW91dC5hcHBseSh2b2lkIDAsIEN0KFtlLCB0XSwgRXQocikpKTtcbiAgfSxcbiAgY2xlYXJUaW1lb3V0OiBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIGNsZWFyVGltZW91dChlKTtcbiAgfSxcbiAgZGVsZWdhdGU6IHZvaWQgMFxufTtcbmZ1bmN0aW9uIEVuKGUpIHtcbiAgWmEuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICB0aHJvdyBlO1xuICB9KTtcbn1cbmZ1bmN0aW9uIElyKCkge1xufVxuZnVuY3Rpb24gZ3QoZSkge1xuICBlKCk7XG59XG52YXIgaXIgPSAoZnVuY3Rpb24oZSkge1xuICBFZSh0LCBlKTtcbiAgZnVuY3Rpb24gdChyKSB7XG4gICAgdmFyIG4gPSBlLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gbi5pc1N0b3BwZWQgPSBmYWxzZSwgciA/IChuLmRlc3RpbmF0aW9uID0gciwgUG4ocikgJiYgci5hZGQobikpIDogbi5kZXN0aW5hdGlvbiA9IGVpLCBuO1xuICB9XG4gIHJldHVybiB0LmNyZWF0ZSA9IGZ1bmN0aW9uKHIsIG4sIGEpIHtcbiAgICByZXR1cm4gbmV3IFh0KHIsIG4sIGEpO1xuICB9LCB0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24ocikge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8IHRoaXMuX25leHQocik7XG4gIH0sIHQucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24ocikge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8ICh0aGlzLmlzU3RvcHBlZCA9IHRydWUsIHRoaXMuX2Vycm9yKHIpKTtcbiAgfSwgdC5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmlzU3RvcHBlZCB8fCAodGhpcy5pc1N0b3BwZWQgPSB0cnVlLCB0aGlzLl9jb21wbGV0ZSgpKTtcbiAgfSwgdC5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmNsb3NlZCB8fCAodGhpcy5pc1N0b3BwZWQgPSB0cnVlLCBlLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpLCB0aGlzLmRlc3RpbmF0aW9uID0gbnVsbCk7XG4gIH0sIHQucHJvdG90eXBlLl9uZXh0ID0gZnVuY3Rpb24ocikge1xuICAgIHRoaXMuZGVzdGluYXRpb24ubmV4dChyKTtcbiAgfSwgdC5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24ocikge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9LCB0LnByb3RvdHlwZS5fY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9LCB0O1xufSkoc3QpLCBRYSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gZSh0KSB7XG4gICAgdGhpcy5wYXJ0aWFsT2JzZXJ2ZXIgPSB0O1xuICB9XG4gIHJldHVybiBlLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgaWYgKHIubmV4dClcbiAgICAgIHRyeSB7XG4gICAgICAgIHIubmV4dCh0KTtcbiAgICAgIH0gY2F0Y2ggKG4pIHtcbiAgICAgICAgcHQobik7XG4gICAgICB9XG4gIH0sIGUucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgaWYgKHIuZXJyb3IpXG4gICAgICB0cnkge1xuICAgICAgICByLmVycm9yKHQpO1xuICAgICAgfSBjYXRjaCAobikge1xuICAgICAgICBwdChuKTtcbiAgICAgIH1cbiAgICBlbHNlXG4gICAgICBwdCh0KTtcbiAgfSwgZS5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdCA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgIGlmICh0LmNvbXBsZXRlKVxuICAgICAgdHJ5IHtcbiAgICAgICAgdC5jb21wbGV0ZSgpO1xuICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICBwdChyKTtcbiAgICAgIH1cbiAgfSwgZTtcbn0pKCksIFh0ID0gKGZ1bmN0aW9uKGUpIHtcbiAgRWUodCwgZSk7XG4gIGZ1bmN0aW9uIHQociwgbiwgYSkge1xuICAgIHZhciBpID0gZS5jYWxsKHRoaXMpIHx8IHRoaXMsIHM7XG4gICAgcmV0dXJuIFkocikgfHwgIXIgPyBzID0ge1xuICAgICAgbmV4dDogciA/PyB2b2lkIDAsXG4gICAgICBlcnJvcjogbiA/PyB2b2lkIDAsXG4gICAgICBjb21wbGV0ZTogYSA/PyB2b2lkIDBcbiAgICB9IDogcyA9IHIsIGkuZGVzdGluYXRpb24gPSBuZXcgUWEocyksIGk7XG4gIH1cbiAgcmV0dXJuIHQ7XG59KShpcik7XG5mdW5jdGlvbiBwdChlKSB7XG4gIEVuKGUpO1xufVxuZnVuY3Rpb24gWGEoZSkge1xuICB0aHJvdyBlO1xufVxudmFyIGVpID0ge1xuICBjbG9zZWQ6IHRydWUsXG4gIG5leHQ6IElyLFxuICBlcnJvcjogWGEsXG4gIGNvbXBsZXRlOiBJclxufSwgc3IgPSAoZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wub2JzZXJ2YWJsZSB8fCBcIkBAb2JzZXJ2YWJsZVwiO1xufSkoKTtcbmZ1bmN0aW9uIHRpKGUpIHtcbiAgcmV0dXJuIGU7XG59XG5mdW5jdGlvbiByaShlKSB7XG4gIHJldHVybiBlLmxlbmd0aCA9PT0gMCA/IHRpIDogZS5sZW5ndGggPT09IDEgPyBlWzBdIDogZnVuY3Rpb24ocikge1xuICAgIHJldHVybiBlLnJlZHVjZShmdW5jdGlvbihuLCBhKSB7XG4gICAgICByZXR1cm4gYShuKTtcbiAgICB9LCByKTtcbiAgfTtcbn1cbnZhciB3ZSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gZSh0KSB7XG4gICAgdCAmJiAodGhpcy5fc3Vic2NyaWJlID0gdCk7XG4gIH1cbiAgcmV0dXJuIGUucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSBuZXcgZSgpO1xuICAgIHJldHVybiByLnNvdXJjZSA9IHRoaXMsIHIub3BlcmF0b3IgPSB0LCByO1xuICB9LCBlLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgdmFyIGEgPSB0aGlzLCBpID0gb2kodCkgPyB0IDogbmV3IFh0KHQsIHIsIG4pO1xuICAgIHJldHVybiBndChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzID0gYSwgbCA9IHMub3BlcmF0b3IsIGMgPSBzLnNvdXJjZTtcbiAgICAgIGkuYWRkKGwgPyBsLmNhbGwoaSwgYykgOiBjID8gYS5fc3Vic2NyaWJlKGkpIDogYS5fdHJ5U3Vic2NyaWJlKGkpKTtcbiAgICB9KSwgaTtcbiAgfSwgZS5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N1YnNjcmliZSh0KTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICB0LmVycm9yKHIpO1xuICAgIH1cbiAgfSwgZS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICB2YXIgbiA9IHRoaXM7XG4gICAgcmV0dXJuIHIgPSBScihyKSwgbmV3IHIoZnVuY3Rpb24oYSwgaSkge1xuICAgICAgdmFyIHMgPSBuZXcgWHQoe1xuICAgICAgICBuZXh0OiBmdW5jdGlvbihsKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHQobCk7XG4gICAgICAgICAgfSBjYXRjaCAoYykge1xuICAgICAgICAgICAgaShjKSwgcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGksXG4gICAgICAgIGNvbXBsZXRlOiBhXG4gICAgICB9KTtcbiAgICAgIG4uc3Vic2NyaWJlKHMpO1xuICAgIH0pO1xuICB9LCBlLnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByO1xuICAgIHJldHVybiAociA9IHRoaXMuc291cmNlKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLnN1YnNjcmliZSh0KTtcbiAgfSwgZS5wcm90b3R5cGVbc3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciB0ID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgICAgdFtyXSA9IGFyZ3VtZW50c1tyXTtcbiAgICByZXR1cm4gcmkodCkodGhpcyk7XG4gIH0sIGUucHJvdG90eXBlLnRvUHJvbWlzZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgcmV0dXJuIHQgPSBScih0KSwgbmV3IHQoZnVuY3Rpb24obiwgYSkge1xuICAgICAgdmFyIGk7XG4gICAgICByLnN1YnNjcmliZShmdW5jdGlvbihzKSB7XG4gICAgICAgIHJldHVybiBpID0gcztcbiAgICAgIH0sIGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgcmV0dXJuIGEocyk7XG4gICAgICB9LCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG4oaSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSwgZS5jcmVhdGUgPSBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIG5ldyBlKHQpO1xuICB9LCBlO1xufSkoKTtcbmZ1bmN0aW9uIFJyKGUpIHtcbiAgdmFyIHQ7XG4gIHJldHVybiAodCA9IGUgPz8gSmEuUHJvbWlzZSkgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IFByb21pc2U7XG59XG5mdW5jdGlvbiBuaShlKSB7XG4gIHJldHVybiBlICYmIFkoZS5uZXh0KSAmJiBZKGUuZXJyb3IpICYmIFkoZS5jb21wbGV0ZSk7XG59XG5mdW5jdGlvbiBvaShlKSB7XG4gIHJldHVybiBlICYmIGUgaW5zdGFuY2VvZiBpciB8fCBuaShlKSAmJiBQbihlKTtcbn1cbmZ1bmN0aW9uIGFpKGUpIHtcbiAgcmV0dXJuIFkoZT8ubGlmdCk7XG59XG5mdW5jdGlvbiBpaShlKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgaWYgKGFpKHQpKVxuICAgICAgcmV0dXJuIHQubGlmdChmdW5jdGlvbihyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGUociwgdGhpcyk7XG4gICAgICAgIH0gY2F0Y2ggKG4pIHtcbiAgICAgICAgICB0aGlzLmVycm9yKG4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGVcIik7XG4gIH07XG59XG5mdW5jdGlvbiBzaShlLCB0LCByLCBuLCBhKSB7XG4gIHJldHVybiBuZXcgY2koZSwgdCwgciwgbiwgYSk7XG59XG52YXIgY2kgPSAoZnVuY3Rpb24oZSkge1xuICBFZSh0LCBlKTtcbiAgZnVuY3Rpb24gdChyLCBuLCBhLCBpLCBzLCBsKSB7XG4gICAgdmFyIGMgPSBlLmNhbGwodGhpcywgcikgfHwgdGhpcztcbiAgICByZXR1cm4gYy5vbkZpbmFsaXplID0gcywgYy5zaG91bGRVbnN1YnNjcmliZSA9IGwsIGMuX25leHQgPSBuID8gZnVuY3Rpb24odSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbih1KTtcbiAgICAgIH0gY2F0Y2ggKGQpIHtcbiAgICAgICAgci5lcnJvcihkKTtcbiAgICAgIH1cbiAgICB9IDogZS5wcm90b3R5cGUuX25leHQsIGMuX2Vycm9yID0gaSA/IGZ1bmN0aW9uKHUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGkodSk7XG4gICAgICB9IGNhdGNoIChkKSB7XG4gICAgICAgIHIuZXJyb3IoZCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSA6IGUucHJvdG90eXBlLl9lcnJvciwgYy5fY29tcGxldGUgPSBhID8gZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhKCk7XG4gICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgIHIuZXJyb3IodSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSA6IGUucHJvdG90eXBlLl9jb21wbGV0ZSwgYztcbiAgfVxuICByZXR1cm4gdC5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcjtcbiAgICBpZiAoIXRoaXMuc2hvdWxkVW5zdWJzY3JpYmUgfHwgdGhpcy5zaG91bGRVbnN1YnNjcmliZSgpKSB7XG4gICAgICB2YXIgbiA9IHRoaXMuY2xvc2VkO1xuICAgICAgZS5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSwgIW4gJiYgKChyID0gdGhpcy5vbkZpbmFsaXplKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgfHwgci5jYWxsKHRoaXMpKTtcbiAgICB9XG4gIH0sIHQ7XG59KShpciksIGxpID0gTnQoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZSh0aGlzKSwgdGhpcy5uYW1lID0gXCJPYmplY3RVbnN1YnNjcmliZWRFcnJvclwiLCB0aGlzLm1lc3NhZ2UgPSBcIm9iamVjdCB1bnN1YnNjcmliZWRcIjtcbiAgfTtcbn0pLCBDbiA9IChmdW5jdGlvbihlKSB7XG4gIEVlKHQsIGUpO1xuICBmdW5jdGlvbiB0KCkge1xuICAgIHZhciByID0gZS5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgcmV0dXJuIHIuY2xvc2VkID0gZmFsc2UsIHIuY3VycmVudE9ic2VydmVycyA9IG51bGwsIHIub2JzZXJ2ZXJzID0gW10sIHIuaXNTdG9wcGVkID0gZmFsc2UsIHIuaGFzRXJyb3IgPSBmYWxzZSwgci50aHJvd25FcnJvciA9IG51bGwsIHI7XG4gIH1cbiAgcmV0dXJuIHQucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbihyKSB7XG4gICAgdmFyIG4gPSBuZXcgRnIodGhpcywgdGhpcyk7XG4gICAgcmV0dXJuIG4ub3BlcmF0b3IgPSByLCBuO1xuICB9LCB0LnByb3RvdHlwZS5fdGhyb3dJZkNsb3NlZCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZClcbiAgICAgIHRocm93IG5ldyBsaSgpO1xuICB9LCB0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuID0gdGhpcztcbiAgICBndChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBhLCBpO1xuICAgICAgaWYgKG4uX3Rocm93SWZDbG9zZWQoKSwgIW4uaXNTdG9wcGVkKSB7XG4gICAgICAgIG4uY3VycmVudE9ic2VydmVycyB8fCAobi5jdXJyZW50T2JzZXJ2ZXJzID0gQXJyYXkuZnJvbShuLm9ic2VydmVycykpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAodmFyIHMgPSBPZShuLmN1cnJlbnRPYnNlcnZlcnMpLCBsID0gcy5uZXh0KCk7ICFsLmRvbmU7IGwgPSBzLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIGMgPSBsLnZhbHVlO1xuICAgICAgICAgICAgYy5uZXh0KHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICAgIGEgPSB7IGVycm9yOiB1IH07XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGwgJiYgIWwuZG9uZSAmJiAoaSA9IHMucmV0dXJuKSAmJiBpLmNhbGwocyk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChhKSB0aHJvdyBhLmVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9LCB0LnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uKHIpIHtcbiAgICB2YXIgbiA9IHRoaXM7XG4gICAgZ3QoZnVuY3Rpb24oKSB7XG4gICAgICBpZiAobi5fdGhyb3dJZkNsb3NlZCgpLCAhbi5pc1N0b3BwZWQpIHtcbiAgICAgICAgbi5oYXNFcnJvciA9IG4uaXNTdG9wcGVkID0gdHJ1ZSwgbi50aHJvd25FcnJvciA9IHI7XG4gICAgICAgIGZvciAodmFyIGEgPSBuLm9ic2VydmVyczsgYS5sZW5ndGg7IClcbiAgICAgICAgICBhLnNoaWZ0KCkuZXJyb3Iocik7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIHQucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIGd0KGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHIuX3Rocm93SWZDbG9zZWQoKSwgIXIuaXNTdG9wcGVkKSB7XG4gICAgICAgIHIuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgZm9yICh2YXIgbiA9IHIub2JzZXJ2ZXJzOyBuLmxlbmd0aDsgKVxuICAgICAgICAgIG4uc2hpZnQoKS5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCB0LnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaXNTdG9wcGVkID0gdGhpcy5jbG9zZWQgPSB0cnVlLCB0aGlzLm9ic2VydmVycyA9IHRoaXMuY3VycmVudE9ic2VydmVycyA9IG51bGw7XG4gIH0sIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwgXCJvYnNlcnZlZFwiLCB7XG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByO1xuICAgICAgcmV0dXJuICgociA9IHRoaXMub2JzZXJ2ZXJzKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLmxlbmd0aCkgPiAwO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pLCB0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24ocikge1xuICAgIHJldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksIGUucHJvdG90eXBlLl90cnlTdWJzY3JpYmUuY2FsbCh0aGlzLCByKTtcbiAgfSwgdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLCB0aGlzLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzKHIpLCB0aGlzLl9pbm5lclN1YnNjcmliZShyKTtcbiAgfSwgdC5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuID0gdGhpcywgYSA9IHRoaXMsIGkgPSBhLmhhc0Vycm9yLCBzID0gYS5pc1N0b3BwZWQsIGwgPSBhLm9ic2VydmVycztcbiAgICByZXR1cm4gaSB8fCBzID8gYm4gOiAodGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbCwgbC5wdXNoKHIpLCBuZXcgc3QoZnVuY3Rpb24oKSB7XG4gICAgICBuLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsLCBBdChsLCByKTtcbiAgICB9KSk7XG4gIH0sIHQucHJvdG90eXBlLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuID0gdGhpcywgYSA9IG4uaGFzRXJyb3IsIGkgPSBuLnRocm93bkVycm9yLCBzID0gbi5pc1N0b3BwZWQ7XG4gICAgYSA/IHIuZXJyb3IoaSkgOiBzICYmIHIuY29tcGxldGUoKTtcbiAgfSwgdC5wcm90b3R5cGUuYXNPYnNlcnZhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHIgPSBuZXcgd2UoKTtcbiAgICByZXR1cm4gci5zb3VyY2UgPSB0aGlzLCByO1xuICB9LCB0LmNyZWF0ZSA9IGZ1bmN0aW9uKHIsIG4pIHtcbiAgICByZXR1cm4gbmV3IEZyKHIsIG4pO1xuICB9LCB0O1xufSkod2UpLCBGciA9IChmdW5jdGlvbihlKSB7XG4gIEVlKHQsIGUpO1xuICBmdW5jdGlvbiB0KHIsIG4pIHtcbiAgICB2YXIgYSA9IGUuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgIHJldHVybiBhLmRlc3RpbmF0aW9uID0gciwgYS5zb3VyY2UgPSBuLCBhO1xuICB9XG4gIHJldHVybiB0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuLCBhO1xuICAgIChhID0gKG4gPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBuLm5leHQpID09PSBudWxsIHx8IGEgPT09IHZvaWQgMCB8fCBhLmNhbGwobiwgcik7XG4gIH0sIHQucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuLCBhO1xuICAgIChhID0gKG4gPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBuLmVycm9yKSA9PT0gbnVsbCB8fCBhID09PSB2b2lkIDAgfHwgYS5jYWxsKG4sIHIpO1xuICB9LCB0LnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByLCBuO1xuICAgIChuID0gKHIgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLmNvbXBsZXRlKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDAgfHwgbi5jYWxsKHIpO1xuICB9LCB0LnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuLCBhO1xuICAgIHJldHVybiAoYSA9IChuID0gdGhpcy5zb3VyY2UpID09PSBudWxsIHx8IG4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG4uc3Vic2NyaWJlKHIpKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogYm47XG4gIH0sIHQ7XG59KShDbiksIHVpID0ge1xuICBub3c6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBEYXRlLm5vdygpO1xuICB9XG59LCBkaSA9IChmdW5jdGlvbihlKSB7XG4gIEVlKHQsIGUpO1xuICBmdW5jdGlvbiB0KHIsIG4pIHtcbiAgICByZXR1cm4gZS5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gIH1cbiAgcmV0dXJuIHQucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24ociwgbikge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCB0O1xufSkoc3QpLCBUciA9IHtcbiAgc2V0SW50ZXJ2YWw6IGZ1bmN0aW9uKGUsIHQpIHtcbiAgICBmb3IgKHZhciByID0gW10sIG4gPSAyOyBuIDwgYXJndW1lbnRzLmxlbmd0aDsgbisrKVxuICAgICAgcltuIC0gMl0gPSBhcmd1bWVudHNbbl07XG4gICAgcmV0dXJuIHNldEludGVydmFsLmFwcGx5KHZvaWQgMCwgQ3QoW2UsIHRdLCBFdChyKSkpO1xuICB9LFxuICBjbGVhckludGVydmFsOiBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIGNsZWFySW50ZXJ2YWwoZSk7XG4gIH0sXG4gIGRlbGVnYXRlOiB2b2lkIDBcbn0sIHBpID0gKGZ1bmN0aW9uKGUpIHtcbiAgRWUodCwgZSk7XG4gIGZ1bmN0aW9uIHQociwgbikge1xuICAgIHZhciBhID0gZS5jYWxsKHRoaXMsIHIsIG4pIHx8IHRoaXM7XG4gICAgcmV0dXJuIGEuc2NoZWR1bGVyID0gciwgYS53b3JrID0gbiwgYS5wZW5kaW5nID0gZmFsc2UsIGE7XG4gIH1cbiAgcmV0dXJuIHQucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24ociwgbikge1xuICAgIHZhciBhO1xuICAgIGlmIChuID09PSB2b2lkIDAgJiYgKG4gPSAwKSwgdGhpcy5jbG9zZWQpXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB0aGlzLnN0YXRlID0gcjtcbiAgICB2YXIgaSA9IHRoaXMuaWQsIHMgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICByZXR1cm4gaSAhPSBudWxsICYmICh0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZChzLCBpLCBuKSksIHRoaXMucGVuZGluZyA9IHRydWUsIHRoaXMuZGVsYXkgPSBuLCB0aGlzLmlkID0gKGEgPSB0aGlzLmlkKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogdGhpcy5yZXF1ZXN0QXN5bmNJZChzLCB0aGlzLmlkLCBuKSwgdGhpcztcbiAgfSwgdC5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQgPSBmdW5jdGlvbihyLCBuLCBhKSB7XG4gICAgcmV0dXJuIGEgPT09IHZvaWQgMCAmJiAoYSA9IDApLCBUci5zZXRJbnRlcnZhbChyLmZsdXNoLmJpbmQociwgdGhpcyksIGEpO1xuICB9LCB0LnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZCA9IGZ1bmN0aW9uKHIsIG4sIGEpIHtcbiAgICBpZiAoYSA9PT0gdm9pZCAwICYmIChhID0gMCksIGEgIT0gbnVsbCAmJiB0aGlzLmRlbGF5ID09PSBhICYmIHRoaXMucGVuZGluZyA9PT0gZmFsc2UpXG4gICAgICByZXR1cm4gbjtcbiAgICBuICE9IG51bGwgJiYgVHIuY2xlYXJJbnRlcnZhbChuKTtcbiAgfSwgdC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uKHIsIG4pIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpXG4gICAgICByZXR1cm4gbmV3IEVycm9yKFwiZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvblwiKTtcbiAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICB2YXIgYSA9IHRoaXMuX2V4ZWN1dGUociwgbik7XG4gICAgaWYgKGEpXG4gICAgICByZXR1cm4gYTtcbiAgICB0aGlzLnBlbmRpbmcgPT09IGZhbHNlICYmIHRoaXMuaWQgIT0gbnVsbCAmJiAodGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQodGhpcy5zY2hlZHVsZXIsIHRoaXMuaWQsIG51bGwpKTtcbiAgfSwgdC5wcm90b3R5cGUuX2V4ZWN1dGUgPSBmdW5jdGlvbihyLCBuKSB7XG4gICAgdmFyIGEgPSBmYWxzZSwgaTtcbiAgICB0cnkge1xuICAgICAgdGhpcy53b3JrKHIpO1xuICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgIGEgPSB0cnVlLCBpID0gcyB8fCBuZXcgRXJyb3IoXCJTY2hlZHVsZWQgYWN0aW9uIHRocmV3IGZhbHN5IGVycm9yXCIpO1xuICAgIH1cbiAgICBpZiAoYSlcbiAgICAgIHJldHVybiB0aGlzLnVuc3Vic2NyaWJlKCksIGk7XG4gIH0sIHQucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgdmFyIHIgPSB0aGlzLCBuID0gci5pZCwgYSA9IHIuc2NoZWR1bGVyLCBpID0gYS5hY3Rpb25zO1xuICAgICAgdGhpcy53b3JrID0gdGhpcy5zdGF0ZSA9IHRoaXMuc2NoZWR1bGVyID0gbnVsbCwgdGhpcy5wZW5kaW5nID0gZmFsc2UsIEF0KGksIHRoaXMpLCBuICE9IG51bGwgJiYgKHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKGEsIG4sIG51bGwpKSwgdGhpcy5kZWxheSA9IG51bGwsIGUucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgfVxuICB9LCB0O1xufSkoZGkpLCBOciA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gZSh0LCByKSB7XG4gICAgciA9PT0gdm9pZCAwICYmIChyID0gZS5ub3cpLCB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSB0LCB0aGlzLm5vdyA9IHI7XG4gIH1cbiAgcmV0dXJuIGUucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24odCwgciwgbikge1xuICAgIHJldHVybiByID09PSB2b2lkIDAgJiYgKHIgPSAwKSwgbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLCB0KS5zY2hlZHVsZShuLCByKTtcbiAgfSwgZS5ub3cgPSB1aS5ub3csIGU7XG59KSgpLCBtaSA9IChmdW5jdGlvbihlKSB7XG4gIEVlKHQsIGUpO1xuICBmdW5jdGlvbiB0KHIsIG4pIHtcbiAgICBuID09PSB2b2lkIDAgJiYgKG4gPSBOci5ub3cpO1xuICAgIHZhciBhID0gZS5jYWxsKHRoaXMsIHIsIG4pIHx8IHRoaXM7XG4gICAgcmV0dXJuIGEuYWN0aW9ucyA9IFtdLCBhLl9hY3RpdmUgPSBmYWxzZSwgYTtcbiAgfVxuICByZXR1cm4gdC5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbihyKSB7XG4gICAgdmFyIG4gPSB0aGlzLmFjdGlvbnM7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xuICAgICAgbi5wdXNoKHIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgYTtcbiAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgIGRvXG4gICAgICBpZiAoYSA9IHIuZXhlY3V0ZShyLnN0YXRlLCByLmRlbGF5KSlcbiAgICAgICAgYnJlYWs7XG4gICAgd2hpbGUgKHIgPSBuLnNoaWZ0KCkpO1xuICAgIGlmICh0aGlzLl9hY3RpdmUgPSBmYWxzZSwgYSkge1xuICAgICAgZm9yICg7IHIgPSBuLnNoaWZ0KCk7IClcbiAgICAgICAgci51bnN1YnNjcmliZSgpO1xuICAgICAgdGhyb3cgYTtcbiAgICB9XG4gIH0sIHQ7XG59KShOciksIGZpID0gbmV3IG1pKHBpKSwgX2kgPSAoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIiAmJiB0eXBlb2YgZSAhPSBcImZ1bmN0aW9uXCI7XG59KTtcbmZ1bmN0aW9uIHlpKGUpIHtcbiAgcmV0dXJuIFkoZT8udGhlbik7XG59XG5mdW5jdGlvbiBoaShlKSB7XG4gIHJldHVybiBZKGVbc3JdKTtcbn1cbmZ1bmN0aW9uIGdpKGUpIHtcbiAgcmV0dXJuIFN5bWJvbC5hc3luY0l0ZXJhdG9yICYmIFkoZT8uW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSk7XG59XG5mdW5jdGlvbiB3aShlKSB7XG4gIHJldHVybiBuZXcgVHlwZUVycm9yKFwiWW91IHByb3ZpZGVkIFwiICsgKGUgIT09IG51bGwgJiYgdHlwZW9mIGUgPT0gXCJvYmplY3RcIiA/IFwiYW4gaW52YWxpZCBvYmplY3RcIiA6IFwiJ1wiICsgZSArIFwiJ1wiKSArIFwiIHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21pc2UsIFJlYWRhYmxlU3RyZWFtLCBBcnJheSwgQXN5bmNJdGVyYWJsZSwgb3IgSXRlcmFibGUuXCIpO1xufVxuZnVuY3Rpb24gdmkoKSB7XG4gIHJldHVybiB0eXBlb2YgU3ltYm9sICE9IFwiZnVuY3Rpb25cIiB8fCAhU3ltYm9sLml0ZXJhdG9yID8gXCJAQGl0ZXJhdG9yXCIgOiBTeW1ib2wuaXRlcmF0b3I7XG59XG52YXIgYmkgPSB2aSgpO1xuZnVuY3Rpb24gUGkoZSkge1xuICByZXR1cm4gWShlPy5bYmldKTtcbn1cbmZ1bmN0aW9uIEVpKGUpIHtcbiAgcmV0dXJuIFlhKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHIsIG4sIGEsIGk7XG4gICAgcmV0dXJuIHZuKHRoaXMsIGZ1bmN0aW9uKHMpIHtcbiAgICAgIHN3aXRjaCAocy5sYWJlbCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgciA9IGUuZ2V0UmVhZGVyKCksIHMubGFiZWwgPSAxO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcy50cnlzLnB1c2goWzEsICwgOSwgMTBdKSwgcy5sYWJlbCA9IDI7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICByZXR1cm4gWzQsIE1lKHIucmVhZCgpKV07XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gbiA9IHMuc2VudCgpLCBhID0gbi52YWx1ZSwgaSA9IG4uZG9uZSwgaSA/IFs0LCBNZSh2b2lkIDApXSA6IFszLCA1XTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBbMiwgcy5zZW50KCldO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgcmV0dXJuIFs0LCBNZShhKV07XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICByZXR1cm4gWzQsIHMuc2VudCgpXTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHJldHVybiBzLnNlbnQoKSwgWzMsIDJdO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMF07XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICByZXR1cm4gci5yZWxlYXNlTG9jaygpLCBbN107XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBDaShlKSB7XG4gIHJldHVybiBZKGU/LmdldFJlYWRlcik7XG59XG5mdW5jdGlvbiBBaShlKSB7XG4gIGlmIChlIGluc3RhbmNlb2Ygd2UpXG4gICAgcmV0dXJuIGU7XG4gIGlmIChlICE9IG51bGwpIHtcbiAgICBpZiAoaGkoZSkpXG4gICAgICByZXR1cm4gU2koZSk7XG4gICAgaWYgKF9pKGUpKVxuICAgICAgcmV0dXJuIGtpKGUpO1xuICAgIGlmICh5aShlKSlcbiAgICAgIHJldHVybiBJaShlKTtcbiAgICBpZiAoZ2koZSkpXG4gICAgICByZXR1cm4gQW4oZSk7XG4gICAgaWYgKFBpKGUpKVxuICAgICAgcmV0dXJuIFJpKGUpO1xuICAgIGlmIChDaShlKSlcbiAgICAgIHJldHVybiBGaShlKTtcbiAgfVxuICB0aHJvdyB3aShlKTtcbn1cbmZ1bmN0aW9uIFNpKGUpIHtcbiAgcmV0dXJuIG5ldyB3ZShmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSBlW3NyXSgpO1xuICAgIGlmIChZKHIuc3Vic2NyaWJlKSlcbiAgICAgIHJldHVybiByLnN1YnNjcmliZSh0KTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJvdmlkZWQgb2JqZWN0IGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgU3ltYm9sLm9ic2VydmFibGVcIik7XG4gIH0pO1xufVxuZnVuY3Rpb24ga2koZSkge1xuICByZXR1cm4gbmV3IHdlKGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKHZhciByID0gMDsgciA8IGUubGVuZ3RoICYmICF0LmNsb3NlZDsgcisrKVxuICAgICAgdC5uZXh0KGVbcl0pO1xuICAgIHQuY29tcGxldGUoKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBJaShlKSB7XG4gIHJldHVybiBuZXcgd2UoZnVuY3Rpb24odCkge1xuICAgIGUudGhlbihmdW5jdGlvbihyKSB7XG4gICAgICB0LmNsb3NlZCB8fCAodC5uZXh0KHIpLCB0LmNvbXBsZXRlKCkpO1xuICAgIH0sIGZ1bmN0aW9uKHIpIHtcbiAgICAgIHJldHVybiB0LmVycm9yKHIpO1xuICAgIH0pLnRoZW4obnVsbCwgRW4pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFJpKGUpIHtcbiAgcmV0dXJuIG5ldyB3ZShmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIsIG47XG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIGEgPSBPZShlKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgICAgdmFyIHMgPSBpLnZhbHVlO1xuICAgICAgICBpZiAodC5uZXh0KHMpLCB0LmNsb3NlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBjYXRjaCAobCkge1xuICAgICAgciA9IHsgZXJyb3I6IGwgfTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaSAmJiAhaS5kb25lICYmIChuID0gYS5yZXR1cm4pICYmIG4uY2FsbChhKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChyKSB0aHJvdyByLmVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgICB0LmNvbXBsZXRlKCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gQW4oZSkge1xuICByZXR1cm4gbmV3IHdlKGZ1bmN0aW9uKHQpIHtcbiAgICBUaShlLCB0KS5jYXRjaChmdW5jdGlvbihyKSB7XG4gICAgICByZXR1cm4gdC5lcnJvcihyKTtcbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBGaShlKSB7XG4gIHJldHVybiBBbihFaShlKSk7XG59XG5mdW5jdGlvbiBUaShlLCB0KSB7XG4gIHZhciByLCBuLCBhLCBpO1xuICByZXR1cm4gS2EodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzLCBsO1xuICAgIHJldHVybiB2bih0aGlzLCBmdW5jdGlvbihjKSB7XG4gICAgICBzd2l0Y2ggKGMubGFiZWwpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIGMudHJ5cy5wdXNoKFswLCA1LCA2LCAxMV0pLCByID0gV2EoZSksIGMubGFiZWwgPSAxO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcmV0dXJuIFs0LCByLm5leHQoKV07XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAobiA9IGMuc2VudCgpLCAhIW4uZG9uZSkgcmV0dXJuIFszLCA0XTtcbiAgICAgICAgICBpZiAocyA9IG4udmFsdWUsIHQubmV4dChzKSwgdC5jbG9zZWQpXG4gICAgICAgICAgICByZXR1cm4gWzJdO1xuICAgICAgICAgIGMubGFiZWwgPSAzO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgcmV0dXJuIFszLCAxXTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBbMywgMTFdO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgcmV0dXJuIGwgPSBjLnNlbnQoKSwgYSA9IHsgZXJyb3I6IGwgfSwgWzMsIDExXTtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIHJldHVybiBjLnRyeXMucHVzaChbNiwgLCA5LCAxMF0pLCBuICYmICFuLmRvbmUgJiYgKGkgPSByLnJldHVybikgPyBbNCwgaS5jYWxsKHIpXSA6IFszLCA4XTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIGMuc2VudCgpLCBjLmxhYmVsID0gODtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIHJldHVybiBbMywgMTBdO1xuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgICAgICAgcmV0dXJuIFs3XTtcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIHJldHVybiB0LmNvbXBsZXRlKCksIFsyXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBOaShlLCB0LCByLCBuLCBhKSB7XG4gIG4gPT09IHZvaWQgMCAmJiAobiA9IDApLCBhID09PSB2b2lkIDAgJiYgKGEgPSBmYWxzZSk7XG4gIHZhciBpID0gdC5zY2hlZHVsZShmdW5jdGlvbigpIHtcbiAgICByKCksIGEgPyBlLmFkZCh0aGlzLnNjaGVkdWxlKG51bGwsIG4pKSA6IHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgfSwgbik7XG4gIGlmIChlLmFkZChpKSwgIWEpXG4gICAgcmV0dXJuIGk7XG59XG5mdW5jdGlvbiBMaShlLCB0KSB7XG4gIHZhciByID0gWShlKSA/IGUgOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZTtcbiAgfSwgbiA9IGZ1bmN0aW9uKGEpIHtcbiAgICByZXR1cm4gYS5lcnJvcihyKCkpO1xuICB9O1xuICByZXR1cm4gbmV3IHdlKG4pO1xufVxudmFyIE1pID0gTnQoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZSh0aGlzKSwgdGhpcy5uYW1lID0gXCJFbXB0eUVycm9yXCIsIHRoaXMubWVzc2FnZSA9IFwibm8gZWxlbWVudHMgaW4gc2VxdWVuY2VcIjtcbiAgfTtcbn0pO1xuZnVuY3Rpb24geGkoZSwgdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ociwgbikge1xuICAgIHZhciBhID0gZmFsc2UsIGk7XG4gICAgZS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogZnVuY3Rpb24ocykge1xuICAgICAgICBpID0gcywgYSA9IHRydWU7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IG4sXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGEgPyByKGkpIDogbihuZXcgTWkoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gRGkoZSkge1xuICByZXR1cm4gZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGUpO1xufVxudmFyIFVpID0gTnQoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24ocikge1xuICAgIHIgPT09IHZvaWQgMCAmJiAociA9IG51bGwpLCBlKHRoaXMpLCB0aGlzLm1lc3NhZ2UgPSBcIlRpbWVvdXQgaGFzIG9jY3VycmVkXCIsIHRoaXMubmFtZSA9IFwiVGltZW91dEVycm9yXCIsIHRoaXMuaW5mbyA9IHI7XG4gIH07XG59KTtcbmZ1bmN0aW9uIE9pKGUsIHQpIHtcbiAgdmFyIHIgPSBEaShlKSA/IHsgZmlyc3Q6IGUgfSA6IHR5cGVvZiBlID09IFwibnVtYmVyXCIgPyB7IGVhY2g6IGUgfSA6IGUsIG4gPSByLmZpcnN0LCBhID0gci5lYWNoLCBpID0gci53aXRoLCBzID0gaSA9PT0gdm9pZCAwID8gamkgOiBpLCBsID0gci5zY2hlZHVsZXIsIGMgPSBsID09PSB2b2lkIDAgPyBmaSA6IGwsIHUgPSByLm1ldGEsIGQgPSB1ID09PSB2b2lkIDAgPyBudWxsIDogdTtcbiAgaWYgKG4gPT0gbnVsbCAmJiBhID09IG51bGwpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk5vIHRpbWVvdXQgcHJvdmlkZWQuXCIpO1xuICByZXR1cm4gaWkoZnVuY3Rpb24obSwgZikge1xuICAgIHZhciB5LCBfLCBnID0gbnVsbCwgdyA9IDAsIGggPSBmdW5jdGlvbihiKSB7XG4gICAgICBfID0gTmkoZiwgYywgZnVuY3Rpb24oKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgeS51bnN1YnNjcmliZSgpLCBBaShzKHtcbiAgICAgICAgICAgIG1ldGE6IGQsXG4gICAgICAgICAgICBsYXN0VmFsdWU6IGcsXG4gICAgICAgICAgICBzZWVuOiB3XG4gICAgICAgICAgfSkpLnN1YnNjcmliZShmKTtcbiAgICAgICAgfSBjYXRjaCAoUykge1xuICAgICAgICAgIGYuZXJyb3IoUyk7XG4gICAgICAgIH1cbiAgICAgIH0sIGIpO1xuICAgIH07XG4gICAgeSA9IG0uc3Vic2NyaWJlKHNpKGYsIGZ1bmN0aW9uKGIpIHtcbiAgICAgIF8/LnVuc3Vic2NyaWJlKCksIHcrKywgZi5uZXh0KGcgPSBiKSwgYSA+IDAgJiYgaChhKTtcbiAgICB9LCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24oKSB7XG4gICAgICBfPy5jbG9zZWQgfHwgXz8udW5zdWJzY3JpYmUoKSwgZyA9IG51bGw7XG4gICAgfSkpLCAhdyAmJiBoKG4gIT0gbnVsbCA/IHR5cGVvZiBuID09IFwibnVtYmVyXCIgPyBuIDogK24gLSBjLm5vdygpIDogYSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gamkoZSkge1xuICB0aHJvdyBuZXcgVWkoZSk7XG59XG5jbGFzcyBYZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0ID0gKHQpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcInN1Y2Nlc3NcIiwgaXNTdWNjZXNzOiB0cnVlLCBsb2FkZWRWYWx1ZTogdCB9LCB0aGlzLl9zdWJqZWN0Lm5leHQodCksIHRoaXMuX3N1YmplY3QuY29tcGxldGUoKTtcbiAgICB9LCB0aGlzLnRocm93ID0gKHQsIHIpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcImVycm9yXCIsIGlzU3VjY2VzczogZmFsc2UsIGVycm9yOiB0LCBlcnJNc2c6IHIgfSwgdGhpcy5fc3ViamVjdC5lcnJvcih0KTtcbiAgICB9LCB0aGlzLmdldFZhbHVlSWZMb2FkZWRFbHNlID0gKHQpID0+IHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIiA/IHRoaXMuX2N1cnJlbnQubG9hZGVkVmFsdWUgOiB0LCB0aGlzLnN1YnNjcmliZSA9ICh0KSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgIHQodGhpcy5fY3VycmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcImVycm9yXCIgJiYgdCh0aGlzLl9jdXJyZW50KTtcbiAgICAgIGNvbnN0IHIgPSB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwic3VjY2Vzc1wiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZSAobmV4dCk6IHBsZWFzZSBtYWtlIHN1cmUgdG8gdXBkYXRlIF9jdXJyZW50IGJlZm9yZSB0aGUgc3ViamVjdFwiKTtcbiAgICAgICAgICB0KHRoaXMuX2N1cnJlbnQpLCByLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcImVycm9yXCIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0YXRlIChlcnJvcik6IHBsZWFzZSBtYWtlIHN1cmUgdG8gdXBkYXRlIF9jdXJyZW50IGJlZm9yZSB0aGUgc3ViamVjdFwiKTtcbiAgICAgICAgICB0KHRoaXMuX2N1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCB0aGlzLndhaXRGb3JMb2FkID0gKHQpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fY3VycmVudC5sb2FkZWRWYWx1ZSk7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwiZXJyb3JcIikgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoaXMuX2N1cnJlbnQuZXJyb3IpO1xuICAgICAgdGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwiaW5pdGlhbFwiICYmIGN0KHRoaXMuX2N1cnJlbnQpO1xuICAgICAgY29uc3QgciA9IHtcbiAgICAgICAgZmlyc3Q6IHQudGltZW91dFNlYyAqIDFlMyxcbiAgICAgICAgd2l0aDogKCkgPT4gTGkoKCkgPT4gbmV3IEVycm9yKHQudGltZW91dEVyck1zZykpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHhpKHRoaXMuX3N1YmplY3QucGlwZShPaShyKSkpO1xuICAgIH0sIHRoaXMuX2N1cnJlbnQgPSB7IHN0YXR1czogXCJpbml0aWFsXCIsIGlzU3VjY2VzczogZmFsc2UgfSwgdGhpcy5fc3ViamVjdCA9IG5ldyBDbigpO1xuICB9XG4gIGdldCBjdXJyZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50O1xuICB9XG59XG5jb25zdCBMciA9IHokMS5lbnVtKFtcImRldlwiLCBcInN0Z1wiLCBcInByb2RcIl0pLCAkaSA9IHtcbiAgcHJvZDogXCJodHRwczovL2Nvbm50by5nZXRvcGVucGF5LmNvbVwiLFxuICBzdGc6IFwiaHR0cHM6Ly9jb25udG8ub3BlbnBheXN0YWdpbmcuY29tXCIsXG4gIGRldjogXCJodHRwOi8vbG9jYWxob3N0OjgwMDBcIlxufSwgR2kgPSAoZSkgPT4gJGlbZV0sIEJ0ID0ge30sIFNuID0gYXN5bmMgKGUpID0+IHtcbiAgaWYgKEJ0W2VdKVxuICAgIHJldHVybiBCdFtlXTtcbiAgdHJ5IHtcbiAgICBjb25zdCB0ID0gYXdhaXQgZmV0Y2gobmV3IFVSTChcIi9oZWFsdGgvZW52aXJvbm1lbnRcIiwgZSkpLnRoZW4oKG4pID0+IG4uanNvbigpKSwgciA9IExyLnBhcnNlKHQuZW52aXJvbm1lbnQpO1xuICAgIHJldHVybiBCdFtlXSA9IHIsIHI7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBMci5WYWx1ZXMucHJvZDtcbiAgfVxufTtcbmZ1bmN0aW9uIGN0KGUpIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQgY2FzZTogJHtlfWApO1xufVxuY29uc3QgTHQgPSAoZSwgdCkgPT4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW3JdKSA9PiAhdC5pbmNsdWRlcyhyKSkpLCBCID0gKCkgPT4ge1xuICBpZiAoISh0eXBlb2Ygd2luZG93ID4gXCJ1XCIpKVxuICAgIHJldHVybiB3aW5kb3c7XG59LCBlciA9IG5ldyBYZSgpLCBNciA9IFwib3BfbWV0cmljc19xdWV1ZVwiLCBxaSA9IDMsIFZpID0gMywgemkgPSAxZTMsIHsgbG9nX186IG10IH0gPSBrKFwib3AtbWV0cmljc1wiKTtcbmNsYXNzIEJpIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5xdWV1ZSA9IFtdLCB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9IGZhbHNlLCB0aGlzLmJhdGNoVGltZW91dCA9IG51bGwsIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID0gMCwgdGhpcy5vZmZsaW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBtdChcIk5ldHdvcmsgb2ZmbGluZSwgbWV0cmljcyB3aWxsIGJlIHF1ZXVlZFwiKSwgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICB9LCB0aGlzLm9ubGluZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgbXQoXCJOZXR3b3JrIG9ubGluZSwgcHJvY2Vzc2luZyBtZXRyaWNzIHF1ZXVlXCIpLCB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgIH0sIHRoaXMubG9hZFF1ZXVlRnJvbVN0b3JhZ2UoKSwgQigpPy5hZGRFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCB0aGlzLm9mZmxpbmVMaXN0ZW5lciksIEIoKT8uYWRkRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCB0aGlzLm9ubGluZUxpc3RlbmVyKTtcbiAgfVxuICBhZGRFdmVudCh0LCByLCBuKSB7XG4gICAgY29uc3QgYSA9IHtcbiAgICAgIGV2ZW50TmFtZTogdCxcbiAgICAgIHByb3BlcnRpZXM6IHIgfHwge30sXG4gICAgICBjb250ZXh0UHJvcGVydGllczogbiB8fCB7fSxcbiAgICAgIG5vbmNlOiB2NCgpLFxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgZGF0ZXRpbWU6ICgvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkudG9JU09TdHJpbmcoKSxcbiAgICAgIGF0dGVtcHRDb3VudDogMCxcbiAgICAgIHRpbWVEaWZmRnJvbVByZXZpb3VzRXZlbnQ6IHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID8gRGF0ZS5ub3coKSAtIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wIDogMFxuICAgIH07XG4gICAgdGhpcy5sYXN0RXZlbnRUaW1lc3RhbXAgPSBhLnRpbWVzdGFtcCwgdGhpcy5xdWV1ZS5wdXNoKGEpLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpLCB0aGlzLnNjaGVkdWxlQmF0Y2hQcm9jZXNzaW5nKCk7XG4gIH1cbiAgbG9hZFF1ZXVlRnJvbVN0b3JhZ2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHQgPSBCKCk/LmxvY2FsU3RvcmFnZT8uZ2V0SXRlbShNcik7XG4gICAgICB0ICYmICh0aGlzLnF1ZXVlID0gSlNPTi5wYXJzZSh0KSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLnF1ZXVlID0gW10sIHRoaXMuc2F2ZVF1ZXVlVG9TdG9yYWdlKCk7XG4gICAgfVxuICB9XG4gIHNhdmVRdWV1ZVRvU3RvcmFnZSgpIHtcbiAgICBCKCk/LmxvY2FsU3RvcmFnZS5zZXRJdGVtKE1yLCBKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXVlKSk7XG4gIH1cbiAgc2NoZWR1bGVCYXRjaFByb2Nlc3NpbmcoKSB7XG4gICAgY29uc3QgdCA9IEIoKTtcbiAgICB0ICYmIG5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMucHJvY2Vzc2luZ1F1ZXVlICYmIHRoaXMucXVldWUubGVuZ3RoID4gMCAmJiAhdGhpcy5iYXRjaFRpbWVvdXQgJiYgKHRoaXMuYmF0Y2hUaW1lb3V0ID0gdC5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYmF0Y2hUaW1lb3V0ID0gbnVsbCwgdGhpcy5wcm9jZXNzUXVldWUoKTtcbiAgICB9LCB6aSkpO1xuICB9XG4gIGNhbmNlbEJhdGNoUHJvY2Vzc2luZygpIHtcbiAgICB0aGlzLmJhdGNoVGltZW91dCAmJiAoQigpPy5jbGVhclRpbWVvdXQodGhpcy5iYXRjaFRpbWVvdXQpLCB0aGlzLmJhdGNoVGltZW91dCA9IG51bGwpLCB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9IGZhbHNlO1xuICB9XG4gIHByb2Nlc3NRdWV1ZSgpIHtcbiAgICAhbmF2aWdhdG9yLm9uTGluZSB8fCB0aGlzLnByb2Nlc3NpbmdRdWV1ZSB8fCB0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCB8fCAodGhpcy5wcm9jZXNzaW5nUXVldWUgPSB0cnVlLCB0aGlzLnNlbmRCYXRjaCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzaW5nUXVldWUgPSBmYWxzZSwgdGhpcy5xdWV1ZS5sZW5ndGggPiAwICYmIHRoaXMuc2NoZWR1bGVCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICB9KSk7XG4gIH1cbiAgYXN5bmMgc2VuZEJhdGNoKCkge1xuICAgIGlmICh0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IHQgPSBlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZSh2b2lkIDApO1xuICAgIGlmICghdCkge1xuICAgICAgbXQoXCJNZXRyaWNzIGNvbnRleHQgbm90IGF2YWlsYWJsZSwgd2lsbCByZXRyeSBsYXRlclwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgciA9IHRoaXMucXVldWUuc2xpY2UoMCwgVmkpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBuID0ge1xuICAgICAgICBldmVudHM6IHIubWFwKChsKSA9PiAoe1xuICAgICAgICAgIGV2ZW50X25hbWU6IGwuZXZlbnROYW1lLFxuICAgICAgICAgIGRldmljZV90b2tlbjogdC5kZXZpY2VUb2tlbixcbiAgICAgICAgICBjb250ZXh0X3Byb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIC4uLnQsXG4gICAgICAgICAgICAuLi5sLmNvbnRleHRQcm9wZXJ0aWVzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBub25jZTogbC5ub25jZSxcbiAgICAgICAgICAgIGRhdGV0aW1lOiBsLmRhdGV0aW1lLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBsLnRpbWVzdGFtcCxcbiAgICAgICAgICAgIHRpbWVfZGlmZl9mcm9tX3ByZXZpb3VzX2V2ZW50OiBsLnRpbWVEaWZmRnJvbVByZXZpb3VzRXZlbnQsXG4gICAgICAgICAgICBjaGVja291dF9zZWN1cmVfdG9rZW46IHQuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgICAgIC4uLmwucHJvcGVydGllc1xuICAgICAgICAgIH1cbiAgICAgICAgfSkpXG4gICAgICB9LCBhID0gR2kodC5lbnZpcm9ubWVudCksIGkgPSBuZXcgVVJMKFwiL21ldHJpY3MvcHVibGljL2NhcHR1cmVcIiwgYSk7XG4gICAgICAoYXdhaXQgZmV0Y2goaS50b1N0cmluZygpLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShuKSxcbiAgICAgICAga2VlcGFsaXZlOiAhMFxuICAgICAgICAvLyBUbyBzZW5kIGV2ZW50cyBldmVuIGlmIHRoZSBwYWdlIGlzIHVubG9hZGVkXG4gICAgICB9KSkub2sgPyAodGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuc2xpY2Uoci5sZW5ndGgpLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpKSA6IHRoaXMuaGFuZGxlRmFpbGVkQmF0Y2gocik7XG4gICAgfSBjYXRjaCAobikge1xuICAgICAgbXQoXCJFcnJvciBzZW5kaW5nIG1ldHJpY3MgYmF0Y2g6XCIsIG4pLCB0aGlzLmhhbmRsZUZhaWxlZEJhdGNoKHIpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVGYWlsZWRCYXRjaCh0KSB7XG4gICAgdC5mb3JFYWNoKChuKSA9PiB7XG4gICAgICBuLmF0dGVtcHRDb3VudCsrO1xuICAgIH0pO1xuICAgIGNvbnN0IHIgPSB0LmZpbHRlcigobikgPT4gbi5hdHRlbXB0Q291bnQgPCBxaSk7XG4gICAgdGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuc2xpY2UodC5sZW5ndGgpLCB0aGlzLnF1ZXVlID0gWy4uLnIsIC4uLnRoaXMucXVldWVdLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpO1xuICB9XG4gIGNsZWFudXAoKSB7XG4gICAgQigpPy5yZW1vdmVFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCB0aGlzLm9mZmxpbmVMaXN0ZW5lciksIEIoKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCB0aGlzLm9ubGluZUxpc3RlbmVyKSwgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgfVxufVxuY29uc3QgY3IgPSBuZXcgQmkoKSwgdiA9IChlLCB0LCByKSA9PiB7XG4gIGNyLmFkZEV2ZW50KGUsIHQsIHIpO1xufSwgSGkgPSAoKSA9PiB7XG4gIGNyLnByb2Nlc3NRdWV1ZSgpO1xufSwga24gPSAoZSkgPT4ge1xuICBjb25zdCB0ID0gYWUoZS5yZWFzb24pO1xuICB2KFwidW5oYW5kbGVkX3JlamVjdGlvbl9lcnJvclwiLCB7XG4gICAgZXJyb3JfbWVzc2FnZTogdCxcbiAgICBlcnJvcl9uYW1lOiBlLnJlYXNvblxuICB9KTtcbn0sIEluID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IGFlKGUuZXJyb3IpO1xuICB2KFwidW5jYXVnaHRfZXJyb3JcIiwge1xuICAgIGVycm9yX21lc3NhZ2U6IHQsXG4gICAgZXJyb3JfbmFtZTogZS5lcnJvcj8ubmFtZSxcbiAgICBlcnJvcl9zdGFjazogZS5lcnJvcj8uc3RhY2ssXG4gICAgZmlsZV9uYW1lOiBlLmZpbGVuYW1lLFxuICAgIGxpbmVfbnVtYmVyOiBlLmxpbmVubyxcbiAgICBjb2x1bW5fbnVtYmVyOiBlLmNvbG5vXG4gIH0pO1xufTtcbmxldCBTdCA9IG51bGw7XG5jb25zdCBLaSA9IGFzeW5jICgpID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPiBcInVcIikgcmV0dXJuIG51bGw7XG4gIHRyeSB7XG4gICAgcmV0dXJuIFN0ID0gKGF3YWl0IGltcG9ydCgnLi9saWZlY3ljbGUtRDFCZEViWnMtIX57MDA1fX4uanMnKSkuZGVmYXVsdCwgU3Q7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gY29uc29sZS53YXJuKFwiRmFpbGVkIHRvIGxvYWQgcGFnZS1saWZlY3ljbGU6XCIsIGUpLCBudWxsO1xuICB9XG59LCBSbiA9IChlKSA9PiB7XG4gIHYoXCJwYWdlX2xpZmVjeWNsZV9zdGF0ZV9jaGFuZ2VcIiwge1xuICAgIG9sZF9zdGF0ZTogZS5vbGRTdGF0ZSxcbiAgICBuZXdfc3RhdGU6IGUubmV3U3RhdGVcbiAgfSksIChlLm5ld1N0YXRlID09PSBcImhpZGRlblwiIHx8IGUubmV3U3RhdGUgPT09IFwicGFzc2l2ZVwiKSAmJiBjci5wcm9jZXNzUXVldWUoKTtcbn0sIFlpID0gYXN5bmMgKCkgPT4ge1xuICBCKCk/LmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBJbiksIEIoKT8uYWRkRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLCBrbik7XG4gIGNvbnN0IGUgPSBhd2FpdCBLaSgpO1xuICBlICYmIGUuYWRkRXZlbnRMaXN0ZW5lcihcInN0YXRlY2hhbmdlXCIsIFJuKTtcbn0sIFdpID0gYXN5bmMgKCkgPT4ge1xuICBCKCk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBJbiksIEIoKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLCBrbiksIEIoKSAmJiBTdCAmJiBTdC5yZW1vdmVFdmVudExpc3RlbmVyKFwic3RhdGVjaGFuZ2VcIiwgUm4pO1xufSwgSmkgPSB6JDEub2JqZWN0KHtcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pLCBaaSA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbn0pLCBRaSA9IHtcbiAgdXNkOiBcInVzZFwiLFxuICBicmw6IFwiYnJsXCJcbn0sIE10ID0gYXN5bmMgKGUpID0+IHtcbiAgZm9yIChsZXQgciA9IDA7IHIgPCAxMDsgcisrKVxuICAgIHhyKCkgfHwgYXdhaXQgRHQoNTAwKTtcbiAgaWYgKCF4cigpKVxuICAgIHRocm93IGNvbnNvbGUubG9nKFwiU3RyaXBlIEpTIG5vdCBmb3VuZC5cIiksIG5ldyBFcnJvcihcIlN0cmlwZSBKUyBub3QgZm91bmQuXCIpO1xuICByZXR1cm4gbmV3IFN0cmlwZShlKTtcbn0sIHh0ID0gYXN5bmMgKGUsIHQpID0+IHtcbiAgY29uc3QgciA9IGF3YWl0IE10KGUpO1xuICByZXR1cm4ge1xuICAgIGVsZW1lbnRzOiByLmVsZW1lbnRzKHQpLFxuICAgIHN0cmlwZTogclxuICB9O1xufSwgWGkgPSBhc3luYyAoZSwgdCwgciwgbiwgYSkgPT4ge1xuICBjb25zdCBpID0gYXdhaXQgTXQoZSksIHMgPSBRaVtyLnRvTG93ZXJDYXNlKCkudHJpbSgpXTtcbiAgcmV0dXJuIGkucGF5bWVudFJlcXVlc3Qoe1xuICAgIC8vIFRPRE86IHJlcGxhY2UgdGhpcyB3aXRoIHN0cmlwZSBhY2NvdW50IGNvdW50cnkgYXMgc29vbiBhcyB3ZSBzdXBwb3J0IGl0XG4gICAgY291bnRyeTogXCJVU1wiLFxuICAgIGN1cnJlbmN5OiBzLFxuICAgIHRvdGFsOiB7XG4gICAgICBsYWJlbDogXCJUb3RhbFwiLFxuICAgICAgYW1vdW50OiB0LFxuICAgICAgcGVuZGluZzogblxuICAgIH0sXG4gICAgLy8gcmVxdWVzdFNoaXBwaW5nOiB0cnVlLFxuICAgIHJlcXVlc3RQYXllck5hbWU6IHRydWUsXG4gICAgcmVxdWVzdFBheWVyRW1haWw6IHRydWUsXG4gICAgZGlzYWJsZVdhbGxldHM6IFtdXG4gIH0pO1xufSwgRHQgPSAoZSkgPT4gbmV3IFByb21pc2UoKHQpID0+IHtcbiAgc2V0VGltZW91dCh0LCBlKTtcbn0pLCB4ciA9ICgpID0+IFwiU3RyaXBlXCIgaW4gd2luZG93LCBlcyA9IGFzeW5jIChlKSA9PiBuZXcgUHJvbWlzZSgodCwgcikgPT4ge1xuICB0cnkge1xuICAgIGUub24oXCJwYXltZW50bWV0aG9kXCIsIGFzeW5jIChuKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcInBheW1lbnRtZXRob2QgRVZUOjogXCIsIG4pLCB0KG4pO1xuICAgIH0pLCBlLm9uKFwidG9rZW5cIiwgYXN5bmMgKG4pID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwidG9rZW4gRVZUOjogXCIsIG4pO1xuICAgIH0pLCBlLm9uKFwiY2FuY2VsXCIsICgpID0+IHtcbiAgICAgIHIobmV3IEVycm9yKFwiUGF5bWVudCBjYW5jZWxsZWQsIHBsZWFzZSBjbGljayBTdWJtaXQgYWdhaW4gdG8gcGF5XCIpKTtcbiAgICB9KTtcbiAgfSBjYXRjaCAobikge1xuICAgIHIobik7XG4gIH1cbn0pLCB0cyA9IGFzeW5jIChlLCB0KSA9PiB7XG4gIGlmICghZS5zdHJpcGVfcGsgfHwgIWUuY2xpZW50X3NlY3JldClcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbmV4dCBhY3Rpb24gbWV0YWRhdGEgZm9ybWF0OiAke0pTT04uc3RyaW5naWZ5KGUpfWApO1xuICBjb25zdCBuID0gYXdhaXQgKGF3YWl0IE10KGUuc3RyaXBlX3BrKSkuY29uZmlybUNhcmRTZXR1cChlLmNsaWVudF9zZWNyZXQsIHtcbiAgICBwYXltZW50X21ldGhvZDogdC5wYXltZW50TWV0aG9kLmlkXG4gIH0pO1xuICBpZiAobi5lcnJvcilcbiAgICB0aHJvdyB0LmNvbXBsZXRlKFwiZmFpbFwiKSwgbmV3IEVycm9yKGBQYXltZW50IGZhaWxlZDogJHtuLmVycm9yLm1lc3NhZ2UgPz8gXCJ1bmtub3duXCJ9YCk7XG4gIHJldHVybiB0LmNvbXBsZXRlKFwic3VjY2Vzc1wiKSwgbjtcbn0sIHJzID0gYXN5bmMgKGUpID0+IHtcbiAgY29uc3QgciA9IGF3YWl0IChhd2FpdCBNdChlLnN0cmlwZV9waykpLmNvbmZpcm1DYXJkU2V0dXAoZS5jbGllbnRfc2VjcmV0LCB7XG4gICAgcGF5bWVudF9tZXRob2Q6IGUuc3RyaXBlX3BtX2lkXG4gIH0pLCBuID0gci5zZXR1cEludGVudD8uc3RhdHVzO1xuICBpZiAobiA9PT0gXCJzdWNjZWVkZWRcIilcbiAgICBjb25zb2xlLmxvZyhcIlszRFNdIENPTkZJUk1JTkcgUE06XCIsIGUuc3RyaXBlX3BtX2lkKSwgY29uc29sZS5sb2coXCJbM0RTXSBTZXR1cCBpbnRlbnQgY3JlYXRlZDpcIiwgci5zZXR1cEludGVudCk7XG4gIGVsc2UgdGhyb3cgbiA9PT0gXCJjYW5jZWxlZFwiID8gbmV3IEVycm9yKFwiUGF5bWVudCBjYW5jZWxsZWQsIHBsZWFzZSBjbGljayBTdWJtaXQgYWdhaW4gdG8gcGF5XCIpIDogbmV3IEVycm9yKFxuICAgIGAke3IuZXJyb3I/Lm1lc3NhZ2UgPz8gci5zZXR1cEludGVudD8ubGFzdF9zZXR1cF9lcnJvcj8ubWVzc2FnZSA/PyBcIlBheW1lbnQgZmFpbGVkLCBwbGVhc2UgY2xpY2sgc3VibWl0IGFnYWluIHRvIHBheS5cIn1gXG4gICk7XG59O1xudmFyIG5zID0gdHlwZW9mIGdsb2JhbFRoaXMgPT0gXCJvYmplY3RcIiA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygc2VsZiA9PSBcIm9iamVjdFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgPT0gXCJvYmplY3RcIiA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgPT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6IHt9LCBSZSA9IFwiMS45LjBcIiwgRHIgPSAvXihcXGQrKVxcLihcXGQrKVxcLihcXGQrKSgtKC4rKSk/JC87XG5mdW5jdGlvbiBvcyhlKSB7XG4gIHZhciB0ID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW2VdKSwgciA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksIG4gPSBlLm1hdGNoKERyKTtcbiAgaWYgKCFuKVxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB2YXIgYSA9IHtcbiAgICBtYWpvcjogK25bMV0sXG4gICAgbWlub3I6ICtuWzJdLFxuICAgIHBhdGNoOiArblszXSxcbiAgICBwcmVyZWxlYXNlOiBuWzRdXG4gIH07XG4gIGlmIChhLnByZXJlbGVhc2UgIT0gbnVsbClcbiAgICByZXR1cm4gZnVuY3Rpb24oYykge1xuICAgICAgcmV0dXJuIGMgPT09IGU7XG4gICAgfTtcbiAgZnVuY3Rpb24gaShsKSB7XG4gICAgcmV0dXJuIHIuYWRkKGwpLCBmYWxzZTtcbiAgfVxuICBmdW5jdGlvbiBzKGwpIHtcbiAgICByZXR1cm4gdC5hZGQobCksIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKGMpIHtcbiAgICBpZiAodC5oYXMoYykpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoci5oYXMoYykpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgdmFyIHUgPSBjLm1hdGNoKERyKTtcbiAgICBpZiAoIXUpXG4gICAgICByZXR1cm4gaShjKTtcbiAgICB2YXIgZCA9IHtcbiAgICAgIG1ham9yOiArdVsxXSxcbiAgICAgIG1pbm9yOiArdVsyXSxcbiAgICAgIHBhdGNoOiArdVszXSxcbiAgICAgIHByZXJlbGVhc2U6IHVbNF1cbiAgICB9O1xuICAgIHJldHVybiBkLnByZXJlbGVhc2UgIT0gbnVsbCB8fCBhLm1ham9yICE9PSBkLm1ham9yID8gaShjKSA6IGEubWFqb3IgPT09IDAgPyBhLm1pbm9yID09PSBkLm1pbm9yICYmIGEucGF0Y2ggPD0gZC5wYXRjaCA/IHMoYykgOiBpKGMpIDogYS5taW5vciA8PSBkLm1pbm9yID8gcyhjKSA6IGkoYyk7XG4gIH07XG59XG52YXIgYXMgPSBvcyhSZSksIGlzID0gUmUuc3BsaXQoXCIuXCIpWzBdLCBydCA9IFN5bWJvbC5mb3IoXCJvcGVudGVsZW1ldHJ5LmpzLmFwaS5cIiArIGlzKSwgbnQgPSBucztcbmZ1bmN0aW9uIGxyKGUsIHQsIHIsIG4pIHtcbiAgdmFyIGE7XG4gIG4gPT09IHZvaWQgMCAmJiAobiA9IGZhbHNlKTtcbiAgdmFyIGkgPSBudFtydF0gPSAoYSA9IG50W3J0XSkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IHtcbiAgICB2ZXJzaW9uOiBSZVxuICB9O1xuICBpZiAoIW4gJiYgaVtlXSkge1xuICAgIHZhciBzID0gbmV3IEVycm9yKFwiQG9wZW50ZWxlbWV0cnkvYXBpOiBBdHRlbXB0ZWQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiBvZiBBUEk6IFwiICsgZSk7XG4gICAgcmV0dXJuIHIuZXJyb3Iocy5zdGFjayB8fCBzLm1lc3NhZ2UpLCBmYWxzZTtcbiAgfVxuICBpZiAoaS52ZXJzaW9uICE9PSBSZSkge1xuICAgIHZhciBzID0gbmV3IEVycm9yKFwiQG9wZW50ZWxlbWV0cnkvYXBpOiBSZWdpc3RyYXRpb24gb2YgdmVyc2lvbiB2XCIgKyBpLnZlcnNpb24gKyBcIiBmb3IgXCIgKyBlICsgXCIgZG9lcyBub3QgbWF0Y2ggcHJldmlvdXNseSByZWdpc3RlcmVkIEFQSSB2XCIgKyBSZSk7XG4gICAgcmV0dXJuIHIuZXJyb3Iocy5zdGFjayB8fCBzLm1lc3NhZ2UpLCBmYWxzZTtcbiAgfVxuICByZXR1cm4gaVtlXSA9IHQsIHIuZGVidWcoXCJAb3BlbnRlbGVtZXRyeS9hcGk6IFJlZ2lzdGVyZWQgYSBnbG9iYWwgZm9yIFwiICsgZSArIFwiIHZcIiArIFJlICsgXCIuXCIpLCB0cnVlO1xufVxuZnVuY3Rpb24gb3QoZSkge1xuICB2YXIgdCwgciwgbiA9ICh0ID0gbnRbcnRdKSA9PT0gbnVsbCB8fCB0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0LnZlcnNpb247XG4gIGlmICghKCFuIHx8ICFhcyhuKSkpXG4gICAgcmV0dXJuIChyID0gbnRbcnRdKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByW2VdO1xufVxuZnVuY3Rpb24gdXIoZSwgdCkge1xuICB0LmRlYnVnKFwiQG9wZW50ZWxlbWV0cnkvYXBpOiBVbnJlZ2lzdGVyaW5nIGEgZ2xvYmFsIGZvciBcIiArIGUgKyBcIiB2XCIgKyBSZSArIFwiLlwiKTtcbiAgdmFyIHIgPSBudFtydF07XG4gIHIgJiYgZGVsZXRlIHJbZV07XG59XG52YXIgc3MgPSBmdW5jdGlvbihlLCB0KSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXIpIHJldHVybiBlO1xuICB2YXIgbiA9IHIuY2FsbChlKSwgYSwgaSA9IFtdLCBzO1xuICB0cnkge1xuICAgIGZvciAoOyAodCA9PT0gdm9pZCAwIHx8IHQtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAobCkge1xuICAgIHMgPSB7IGVycm9yOiBsIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAociA9IG4ucmV0dXJuKSAmJiByLmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChzKSB0aHJvdyBzLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIGNzID0gZnVuY3Rpb24oZSwgdCwgcikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSB0Lmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gdCkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwgMCwgbikpLCBpW25dID0gdFtuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKTtcbn0sIGxzID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQpIHtcbiAgICAgIHRoaXMuX25hbWVzcGFjZSA9IHQubmFtZXNwYWNlIHx8IFwiRGlhZ0NvbXBvbmVudExvZ2dlclwiO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZGVidWcgPSBmdW5jdGlvbigpIHtcbiAgICAgIGZvciAodmFyIHQgPSBbXSwgciA9IDA7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspXG4gICAgICAgIHRbcl0gPSBhcmd1bWVudHNbcl07XG4gICAgICByZXR1cm4gSGUoXCJkZWJ1Z1wiLCB0aGlzLl9uYW1lc3BhY2UsIHQpO1xuICAgIH0sIGUucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciB0ID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgICAgICB0W3JdID0gYXJndW1lbnRzW3JdO1xuICAgICAgcmV0dXJuIEhlKFwiZXJyb3JcIiwgdGhpcy5fbmFtZXNwYWNlLCB0KTtcbiAgICB9LCBlLnByb3RvdHlwZS5pbmZvID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciB0ID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgICAgICB0W3JdID0gYXJndW1lbnRzW3JdO1xuICAgICAgcmV0dXJuIEhlKFwiaW5mb1wiLCB0aGlzLl9uYW1lc3BhY2UsIHQpO1xuICAgIH0sIGUucHJvdG90eXBlLndhcm4gPSBmdW5jdGlvbigpIHtcbiAgICAgIGZvciAodmFyIHQgPSBbXSwgciA9IDA7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspXG4gICAgICAgIHRbcl0gPSBhcmd1bWVudHNbcl07XG4gICAgICByZXR1cm4gSGUoXCJ3YXJuXCIsIHRoaXMuX25hbWVzcGFjZSwgdCk7XG4gICAgfSwgZS5wcm90b3R5cGUudmVyYm9zZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgZm9yICh2YXIgdCA9IFtdLCByID0gMDsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKylcbiAgICAgICAgdFtyXSA9IGFyZ3VtZW50c1tyXTtcbiAgICAgIHJldHVybiBIZShcInZlcmJvc2VcIiwgdGhpcy5fbmFtZXNwYWNlLCB0KTtcbiAgICB9LCBlO1xuICB9KSgpXG4pO1xuZnVuY3Rpb24gSGUoZSwgdCwgcikge1xuICB2YXIgbiA9IG90KFwiZGlhZ1wiKTtcbiAgaWYgKG4pXG4gICAgcmV0dXJuIHIudW5zaGlmdCh0KSwgbltlXS5hcHBseShuLCBjcyhbXSwgc3MociksIGZhbHNlKSk7XG59XG52YXIgb2U7XG4oZnVuY3Rpb24oZSkge1xuICBlW2UuTk9ORSA9IDBdID0gXCJOT05FXCIsIGVbZS5FUlJPUiA9IDMwXSA9IFwiRVJST1JcIiwgZVtlLldBUk4gPSA1MF0gPSBcIldBUk5cIiwgZVtlLklORk8gPSA2MF0gPSBcIklORk9cIiwgZVtlLkRFQlVHID0gNzBdID0gXCJERUJVR1wiLCBlW2UuVkVSQk9TRSA9IDgwXSA9IFwiVkVSQk9TRVwiLCBlW2UuQUxMID0gOTk5OV0gPSBcIkFMTFwiO1xufSkob2UgfHwgKG9lID0ge30pKTtcbmZ1bmN0aW9uIHVzKGUsIHQpIHtcbiAgZSA8IG9lLk5PTkUgPyBlID0gb2UuTk9ORSA6IGUgPiBvZS5BTEwgJiYgKGUgPSBvZS5BTEwpLCB0ID0gdCB8fCB7fTtcbiAgZnVuY3Rpb24gcihuLCBhKSB7XG4gICAgdmFyIGkgPSB0W25dO1xuICAgIHJldHVybiB0eXBlb2YgaSA9PSBcImZ1bmN0aW9uXCIgJiYgZSA+PSBhID8gaS5iaW5kKHQpIDogZnVuY3Rpb24oKSB7XG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGVycm9yOiByKFwiZXJyb3JcIiwgb2UuRVJST1IpLFxuICAgIHdhcm46IHIoXCJ3YXJuXCIsIG9lLldBUk4pLFxuICAgIGluZm86IHIoXCJpbmZvXCIsIG9lLklORk8pLFxuICAgIGRlYnVnOiByKFwiZGVidWdcIiwgb2UuREVCVUcpLFxuICAgIHZlcmJvc2U6IHIoXCJ2ZXJib3NlXCIsIG9lLlZFUkJPU0UpXG4gIH07XG59XG52YXIgZHMgPSBmdW5jdGlvbihlLCB0KSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXIpIHJldHVybiBlO1xuICB2YXIgbiA9IHIuY2FsbChlKSwgYSwgaSA9IFtdLCBzO1xuICB0cnkge1xuICAgIGZvciAoOyAodCA9PT0gdm9pZCAwIHx8IHQtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAobCkge1xuICAgIHMgPSB7IGVycm9yOiBsIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAociA9IG4ucmV0dXJuKSAmJiByLmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChzKSB0aHJvdyBzLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIHBzID0gZnVuY3Rpb24oZSwgdCwgcikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSB0Lmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gdCkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwgMCwgbikpLCBpW25dID0gdFtuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKTtcbn0sIG1zID0gXCJkaWFnXCIsIGt0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgZnVuY3Rpb24gdChhKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gW10sIHMgPSAwOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKVxuICAgICAgICAgICAgaVtzXSA9IGFyZ3VtZW50c1tzXTtcbiAgICAgICAgICB2YXIgbCA9IG90KFwiZGlhZ1wiKTtcbiAgICAgICAgICBpZiAobClcbiAgICAgICAgICAgIHJldHVybiBsW2FdLmFwcGx5KGwsIHBzKFtdLCBkcyhpKSwgZmFsc2UpKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHZhciByID0gdGhpcywgbiA9IGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgICAgdmFyIHMsIGwsIGM7XG4gICAgICAgIGlmIChpID09PSB2b2lkIDAgJiYgKGkgPSB7IGxvZ0xldmVsOiBvZS5JTkZPIH0pLCBhID09PSByKSB7XG4gICAgICAgICAgdmFyIHUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIGRpYWcgYXMgdGhlIGxvZ2dlciBmb3IgaXRzZWxmLiBQbGVhc2UgdXNlIGEgRGlhZ0xvZ2dlciBpbXBsZW1lbnRhdGlvbiBsaWtlIENvbnNvbGVEaWFnTG9nZ2VyIG9yIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uXCIpO1xuICAgICAgICAgIHJldHVybiByLmVycm9yKChzID0gdS5zdGFjaykgIT09IG51bGwgJiYgcyAhPT0gdm9pZCAwID8gcyA6IHUubWVzc2FnZSksIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHR5cGVvZiBpID09IFwibnVtYmVyXCIgJiYgKGkgPSB7XG4gICAgICAgICAgbG9nTGV2ZWw6IGlcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkID0gb3QoXCJkaWFnXCIpLCBtID0gdXMoKGwgPSBpLmxvZ0xldmVsKSAhPT0gbnVsbCAmJiBsICE9PSB2b2lkIDAgPyBsIDogb2UuSU5GTywgYSk7XG4gICAgICAgIGlmIChkICYmICFpLnN1cHByZXNzT3ZlcnJpZGVNZXNzYWdlKSB7XG4gICAgICAgICAgdmFyIGYgPSAoYyA9IG5ldyBFcnJvcigpLnN0YWNrKSAhPT0gbnVsbCAmJiBjICE9PSB2b2lkIDAgPyBjIDogXCI8ZmFpbGVkIHRvIGdlbmVyYXRlIHN0YWNrdHJhY2U+XCI7XG4gICAgICAgICAgZC53YXJuKFwiQ3VycmVudCBsb2dnZXIgd2lsbCBiZSBvdmVyd3JpdHRlbiBmcm9tIFwiICsgZiksIG0ud2FybihcIkN1cnJlbnQgbG9nZ2VyIHdpbGwgb3ZlcndyaXRlIG9uZSBhbHJlYWR5IHJlZ2lzdGVyZWQgZnJvbSBcIiArIGYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBscihcImRpYWdcIiwgbSwgciwgdHJ1ZSk7XG4gICAgICB9O1xuICAgICAgci5zZXRMb2dnZXIgPSBuLCByLmRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdXIobXMsIHIpO1xuICAgICAgfSwgci5jcmVhdGVDb21wb25lbnRMb2dnZXIgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIHJldHVybiBuZXcgbHMoYSk7XG4gICAgICB9LCByLnZlcmJvc2UgPSB0KFwidmVyYm9zZVwiKSwgci5kZWJ1ZyA9IHQoXCJkZWJ1Z1wiKSwgci5pbmZvID0gdChcImluZm9cIiksIHIud2FybiA9IHQoXCJ3YXJuXCIpLCByLmVycm9yID0gdChcImVycm9yXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZS5pbnN0YW5jZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyBlKCkpLCB0aGlzLl9pbnN0YW5jZTtcbiAgICB9LCBlO1xuICB9KSgpXG4pO1xuZnVuY3Rpb24gZnMoZSkge1xuICByZXR1cm4gU3ltYm9sLmZvcihlKTtcbn1cbnZhciBfcyA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAvKiBAX19QVVJFX18gKi8gKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdmFyIHIgPSB0aGlzO1xuICAgICAgci5fY3VycmVudENvbnRleHQgPSB0ID8gbmV3IE1hcCh0KSA6IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCksIHIuZ2V0VmFsdWUgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiByLl9jdXJyZW50Q29udGV4dC5nZXQobik7XG4gICAgICB9LCByLnNldFZhbHVlID0gZnVuY3Rpb24obiwgYSkge1xuICAgICAgICB2YXIgaSA9IG5ldyBlKHIuX2N1cnJlbnRDb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGkuX2N1cnJlbnRDb250ZXh0LnNldChuLCBhKSwgaTtcbiAgICAgIH0sIHIuZGVsZXRlVmFsdWUgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHZhciBhID0gbmV3IGUoci5fY3VycmVudENvbnRleHQpO1xuICAgICAgICByZXR1cm4gYS5fY3VycmVudENvbnRleHQuZGVsZXRlKG4pLCBhO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGU7XG4gIH0pKClcbiksIHlzID0gbmV3IF9zKCksIGhzID0gZnVuY3Rpb24oZSwgdCkge1xuICB2YXIgciA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFyKSByZXR1cm4gZTtcbiAgdmFyIG4gPSByLmNhbGwoZSksIGEsIGkgPSBbXSwgcztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHQgPT09IHZvaWQgMCB8fCB0LS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKGwpIHtcbiAgICBzID0geyBlcnJvcjogbCB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHIgPSBuLnJldHVybikgJiYgci5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAocykgdGhyb3cgcy5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBncyA9IGZ1bmN0aW9uKGUsIHQsIHIpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBhID0gdC5sZW5ndGgsIGk7IG4gPCBhOyBuKyspXG4gICAgKGkgfHwgIShuIGluIHQpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsIDAsIG4pKSwgaVtuXSA9IHRbbl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSk7XG59LCB3cyA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmFjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHlzO1xuICAgIH0sIGUucHJvdG90eXBlLndpdGggPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgICBmb3IgKHZhciBhID0gW10sIGkgPSAzOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgICAgICBhW2kgLSAzXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIHJldHVybiByLmNhbGwuYXBwbHkociwgZ3MoW25dLCBocyhhKSwgZmFsc2UpKTtcbiAgICB9LCBlLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHI7XG4gICAgfSwgZS5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5kaXNhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LCBlO1xuICB9KSgpXG4pLCB2cyA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBhLCBpID0gW10sIHM7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoIChsKSB7XG4gICAgcyA9IHsgZXJyb3I6IGwgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHMpIHRocm93IHMuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgYnMgPSBmdW5jdGlvbihlLCB0LCByKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgYSA9IHQubGVuZ3RoLCBpOyBuIDwgYTsgbisrKVxuICAgIChpIHx8ICEobiBpbiB0KSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LCAwLCBuKSksIGlbbl0gPSB0W25dKTtcbiAgcmV0dXJuIGUuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpO1xufSwgSHQgPSBcImNvbnRleHRcIiwgUHMgPSBuZXcgd3MoKSwgZHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLmdldEluc3RhbmNlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UgfHwgKHRoaXMuX2luc3RhbmNlID0gbmV3IGUoKSksIHRoaXMuX2luc3RhbmNlO1xuICAgIH0sIGUucHJvdG90eXBlLnNldEdsb2JhbENvbnRleHRNYW5hZ2VyID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIGxyKEh0LCB0LCBrdC5pbnN0YW5jZSgpKTtcbiAgICB9LCBlLnByb3RvdHlwZS5hY3RpdmUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpLmFjdGl2ZSgpO1xuICAgIH0sIGUucHJvdG90eXBlLndpdGggPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgICBmb3IgKHZhciBhLCBpID0gW10sIHMgPSAzOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKVxuICAgICAgICBpW3MgLSAzXSA9IGFyZ3VtZW50c1tzXTtcbiAgICAgIHJldHVybiAoYSA9IHRoaXMuX2dldENvbnRleHRNYW5hZ2VyKCkpLndpdGguYXBwbHkoYSwgYnMoW3QsIHIsIG5dLCB2cyhpKSwgZmFsc2UpKTtcbiAgICB9LCBlLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHRoaXMuX2dldENvbnRleHRNYW5hZ2VyKCkuYmluZCh0LCByKTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZ2V0Q29udGV4dE1hbmFnZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBvdChIdCkgfHwgUHM7XG4gICAgfSwgZS5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS5kaXNhYmxlKCksIHVyKEh0LCBrdC5pbnN0YW5jZSgpKTtcbiAgICB9LCBlO1xuICB9KSgpXG4pLCB0cjtcbihmdW5jdGlvbihlKSB7XG4gIGVbZS5OT05FID0gMF0gPSBcIk5PTkVcIiwgZVtlLlNBTVBMRUQgPSAxXSA9IFwiU0FNUExFRFwiO1xufSkodHIgfHwgKHRyID0ge30pKTtcbnZhciBGbiA9IFwiMDAwMDAwMDAwMDAwMDAwMFwiLCBUbiA9IFwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIiwgRXMgPSB7XG4gIHRyYWNlSWQ6IFRuLFxuICBzcGFuSWQ6IEZuLFxuICB0cmFjZUZsYWdzOiB0ci5OT05FXG59LCBldCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0KSB7XG4gICAgICB0ID09PSB2b2lkIDAgJiYgKHQgPSBFcyksIHRoaXMuX3NwYW5Db250ZXh0ID0gdDtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNwYW5Db250ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3BhbkNvbnRleHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlcyA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLmFkZEV2ZW50ID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgZS5wcm90b3R5cGUuYWRkTGluayA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLmFkZExpbmtzID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0U3RhdHVzID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgZS5wcm90b3R5cGUudXBkYXRlTmFtZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICB9LCBlLnByb3RvdHlwZS5pc1JlY29yZGluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sIGUucHJvdG90eXBlLnJlY29yZEV4Y2VwdGlvbiA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICB9LCBlO1xuICB9KSgpXG4pLCBwciA9IGZzKFwiT3BlblRlbGVtZXRyeSBDb250ZXh0IEtleSBTUEFOXCIpO1xuZnVuY3Rpb24gbXIoZSkge1xuICByZXR1cm4gZS5nZXRWYWx1ZShwcikgfHwgdm9pZCAwO1xufVxuZnVuY3Rpb24gQ3MoKSB7XG4gIHJldHVybiBtcihkci5nZXRJbnN0YW5jZSgpLmFjdGl2ZSgpKTtcbn1cbmZ1bmN0aW9uIGZyKGUsIHQpIHtcbiAgcmV0dXJuIGUuc2V0VmFsdWUocHIsIHQpO1xufVxuZnVuY3Rpb24gQXMoZSkge1xuICByZXR1cm4gZS5kZWxldGVWYWx1ZShwcik7XG59XG5mdW5jdGlvbiBTcyhlLCB0KSB7XG4gIHJldHVybiBmcihlLCBuZXcgZXQodCkpO1xufVxuZnVuY3Rpb24gTm4oZSkge1xuICB2YXIgdDtcbiAgcmV0dXJuICh0ID0gbXIoZSkpID09PSBudWxsIHx8IHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHQuc3BhbkNvbnRleHQoKTtcbn1cbnZhciBrcyA9IC9eKFswLTlhLWZdezMyfSkkL2ksIElzID0gL15bMC05YS1mXXsxNn0kL2k7XG5mdW5jdGlvbiBScyhlKSB7XG4gIHJldHVybiBrcy50ZXN0KGUpICYmIGUgIT09IFRuO1xufVxuZnVuY3Rpb24gRnMoZSkge1xuICByZXR1cm4gSXMudGVzdChlKSAmJiBlICE9PSBGbjtcbn1cbmZ1bmN0aW9uIExuKGUpIHtcbiAgcmV0dXJuIFJzKGUudHJhY2VJZCkgJiYgRnMoZS5zcGFuSWQpO1xufVxuZnVuY3Rpb24gVHMoZSkge1xuICByZXR1cm4gbmV3IGV0KGUpO1xufVxudmFyIEt0ID0gZHIuZ2V0SW5zdGFuY2UoKSwgTW4gPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zdGFydFNwYW4gPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgICBuID09PSB2b2lkIDAgJiYgKG4gPSBLdC5hY3RpdmUoKSk7XG4gICAgICB2YXIgYSA9ICEhcj8ucm9vdDtcbiAgICAgIGlmIChhKVxuICAgICAgICByZXR1cm4gbmV3IGV0KCk7XG4gICAgICB2YXIgaSA9IG4gJiYgTm4obik7XG4gICAgICByZXR1cm4gTnMoaSkgJiYgTG4oaSkgPyBuZXcgZXQoaSkgOiBuZXcgZXQoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zdGFydEFjdGl2ZVNwYW4gPSBmdW5jdGlvbih0LCByLCBuLCBhKSB7XG4gICAgICB2YXIgaSwgcywgbDtcbiAgICAgIGlmICghKGFyZ3VtZW50cy5sZW5ndGggPCAyKSkge1xuICAgICAgICBhcmd1bWVudHMubGVuZ3RoID09PSAyID8gbCA9IHIgOiBhcmd1bWVudHMubGVuZ3RoID09PSAzID8gKGkgPSByLCBsID0gbikgOiAoaSA9IHIsIHMgPSBuLCBsID0gYSk7XG4gICAgICAgIHZhciBjID0gcyA/PyBLdC5hY3RpdmUoKSwgdSA9IHRoaXMuc3RhcnRTcGFuKHQsIGksIGMpLCBkID0gZnIoYywgdSk7XG4gICAgICAgIHJldHVybiBLdC53aXRoKGQsIGwsIHZvaWQgMCwgdSk7XG4gICAgICB9XG4gICAgfSwgZTtcbiAgfSkoKVxuKTtcbmZ1bmN0aW9uIE5zKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwib2JqZWN0XCIgJiYgdHlwZW9mIGUuc3BhbklkID09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGUudHJhY2VJZCA9PSBcInN0cmluZ1wiICYmIHR5cGVvZiBlLnRyYWNlRmxhZ3MgPT0gXCJudW1iZXJcIjtcbn1cbnZhciBMcyA9IG5ldyBNbigpLCBNcyA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0LCByLCBuLCBhKSB7XG4gICAgICB0aGlzLl9wcm92aWRlciA9IHQsIHRoaXMubmFtZSA9IHIsIHRoaXMudmVyc2lvbiA9IG4sIHRoaXMub3B0aW9ucyA9IGE7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zdGFydFNwYW4gPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0VHJhY2VyKCkuc3RhcnRTcGFuKHQsIHIsIG4pO1xuICAgIH0sIGUucHJvdG90eXBlLnN0YXJ0QWN0aXZlU3BhbiA9IGZ1bmN0aW9uKHQsIHIsIG4sIGEpIHtcbiAgICAgIHZhciBpID0gdGhpcy5fZ2V0VHJhY2VyKCk7XG4gICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShpLnN0YXJ0QWN0aXZlU3BhbiwgaSwgYXJndW1lbnRzKTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZ2V0VHJhY2VyID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5fZGVsZWdhdGUpXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZTtcbiAgICAgIHZhciB0ID0gdGhpcy5fcHJvdmlkZXIuZ2V0RGVsZWdhdGVUcmFjZXIodGhpcy5uYW1lLCB0aGlzLnZlcnNpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgICByZXR1cm4gdCA/ICh0aGlzLl9kZWxlZ2F0ZSA9IHQsIHRoaXMuX2RlbGVnYXRlKSA6IExzO1xuICAgIH0sIGU7XG4gIH0pKClcbiksIHhzID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZ2V0VHJhY2VyID0gZnVuY3Rpb24odCwgciwgbikge1xuICAgICAgcmV0dXJuIG5ldyBNbigpO1xuICAgIH0sIGU7XG4gIH0pKClcbiksIERzID0gbmV3IHhzKCksIFVyID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZ2V0VHJhY2VyID0gZnVuY3Rpb24odCwgciwgbikge1xuICAgICAgdmFyIGE7XG4gICAgICByZXR1cm4gKGEgPSB0aGlzLmdldERlbGVnYXRlVHJhY2VyKHQsIHIsIG4pKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogbmV3IE1zKHRoaXMsIHQsIHIsIG4pO1xuICAgIH0sIGUucHJvdG90eXBlLmdldERlbGVnYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdDtcbiAgICAgIHJldHVybiAodCA9IHRoaXMuX2RlbGVnYXRlKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogRHM7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0RGVsZWdhdGUgPSBmdW5jdGlvbih0KSB7XG4gICAgICB0aGlzLl9kZWxlZ2F0ZSA9IHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0RGVsZWdhdGVUcmFjZXIgPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgICB2YXIgYTtcbiAgICAgIHJldHVybiAoYSA9IHRoaXMuX2RlbGVnYXRlKSA9PT0gbnVsbCB8fCBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhLmdldFRyYWNlcih0LCByLCBuKTtcbiAgICB9LCBlO1xuICB9KSgpXG4pLCBhdDtcbihmdW5jdGlvbihlKSB7XG4gIGVbZS5JTlRFUk5BTCA9IDBdID0gXCJJTlRFUk5BTFwiLCBlW2UuU0VSVkVSID0gMV0gPSBcIlNFUlZFUlwiLCBlW2UuQ0xJRU5UID0gMl0gPSBcIkNMSUVOVFwiLCBlW2UuUFJPRFVDRVIgPSAzXSA9IFwiUFJPRFVDRVJcIiwgZVtlLkNPTlNVTUVSID0gNF0gPSBcIkNPTlNVTUVSXCI7XG59KShhdCB8fCAoYXQgPSB7fSkpO1xudmFyIFBlO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLlVOU0VUID0gMF0gPSBcIlVOU0VUXCIsIGVbZS5PSyA9IDFdID0gXCJPS1wiLCBlW2UuRVJST1IgPSAyXSA9IFwiRVJST1JcIjtcbn0pKFBlIHx8IChQZSA9IHt9KSk7XG52YXIgeGUgPSBkci5nZXRJbnN0YW5jZSgpLCBZdCA9IFwidHJhY2VcIiwgVXMgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgICB0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyID0gbmV3IFVyKCksIHRoaXMud3JhcFNwYW5Db250ZXh0ID0gVHMsIHRoaXMuaXNTcGFuQ29udGV4dFZhbGlkID0gTG4sIHRoaXMuZGVsZXRlU3BhbiA9IEFzLCB0aGlzLmdldFNwYW4gPSBtciwgdGhpcy5nZXRBY3RpdmVTcGFuID0gQ3MsIHRoaXMuZ2V0U3BhbkNvbnRleHQgPSBObiwgdGhpcy5zZXRTcGFuID0gZnIsIHRoaXMuc2V0U3BhbkNvbnRleHQgPSBTcztcbiAgICB9XG4gICAgcmV0dXJuIGUuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSB8fCAodGhpcy5faW5zdGFuY2UgPSBuZXcgZSgpKSwgdGhpcy5faW5zdGFuY2U7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0R2xvYmFsVHJhY2VyUHJvdmlkZXIgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgciA9IGxyKFl0LCB0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyLCBrdC5pbnN0YW5jZSgpKTtcbiAgICAgIHJldHVybiByICYmIHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXIuc2V0RGVsZWdhdGUodCksIHI7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0VHJhY2VyUHJvdmlkZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBvdChZdCkgfHwgdGhpcy5fcHJveHlUcmFjZXJQcm92aWRlcjtcbiAgICB9LCBlLnByb3RvdHlwZS5nZXRUcmFjZXIgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRUcmFjZXJQcm92aWRlcigpLmdldFRyYWNlcih0LCByKTtcbiAgICB9LCBlLnByb3RvdHlwZS5kaXNhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICB1cihZdCwga3QuaW5zdGFuY2UoKSksIHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXIgPSBuZXcgVXIoKTtcbiAgICB9LCBlO1xuICB9KSgpXG4pLCBqZSA9IFVzLmdldEluc3RhbmNlKCk7XG5jb25zdCBPcyA9IGFzeW5jIChlLCB0LCByKSA9PiB7XG4gIGNvbnN0IG4gPSBqZS5nZXRUcmFjZXIoXCJvcGVucGF5LWpzXCIpLCBhID0geGUuYWN0aXZlKCksIGkgPSBuLnN0YXJ0U3BhbihcbiAgICBgY2RlLiR7dC50eXBlfWAsXG4gICAge1xuICAgICAga2luZDogYXQuQ0xJRU5ULFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBcIm1lc3NhZ2UudHlwZVwiOiB0LnR5cGUsXG4gICAgICAgIC4uLmUudHJhY2luZ0NvbnRleHQgJiYge1xuICAgICAgICAgIFwib2pzLmNoZWNrb3V0U2VjdXJlVG9rZW5cIjogZS50cmFjaW5nQ29udGV4dC5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgIFwib2pzLmRldmljZVRva2VuXCI6IGUudHJhY2luZ0NvbnRleHQuZGV2aWNlVG9rZW4sXG4gICAgICAgICAgXCJvanMuZm9ybUlkXCI6IGUudHJhY2luZ0NvbnRleHQuZm9ybUlkLFxuICAgICAgICAgIFwib2pzLnZlcnNpb25cIjogZS50cmFjaW5nQ29udGV4dC52ZXJzaW9uLFxuICAgICAgICAgIFwib2pzLnJlbGVhc2VfdmVyc2lvblwiOiBlLnRyYWNpbmdDb250ZXh0LnJlbGVhc2VWZXJzaW9uLFxuICAgICAgICAgIFwib2pzLmJhc2VfdXJsXCI6IGUudHJhY2luZ0NvbnRleHQuYmFzZVVybCxcbiAgICAgICAgICBcIm9qcy5yZWZlcnJlclwiOiBlLnRyYWNpbmdDb250ZXh0LnJlZmVycmVyXG4gICAgICAgIH0sXG4gICAgICAgIFwiY2RlLm1lc3NhZ2UudHlwZVwiOiB0LnR5cGUsXG4gICAgICAgIFwiY2RlLm1lc3NhZ2UucGF5bG9hZFwiOiBKU09OLnN0cmluZ2lmeSh0LnBheWxvYWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBhXG4gICk7XG4gIHJldHVybiB4ZS53aXRoKGplLnNldFNwYW4oYSwgaSksIGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcyA9IGF3YWl0IHIoKTtcbiAgICAgIHJldHVybiBpLnNldFN0YXR1cyh7IGNvZGU6IFBlLk9LIH0pLCBzO1xuICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgIHRocm93IGkuc2V0U3RhdHVzKHtcbiAgICAgICAgY29kZTogUGUuRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6IHMgaW5zdGFuY2VvZiBFcnJvciA/IHMubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwiXG4gICAgICB9KSwgcztcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaS5lbmQoKTtcbiAgICB9XG4gIH0pO1xufSwgZnQgPSBhc3luYyAoZSwgdCkgPT4ge1xuICBjb25zdCByID0gamUuZ2V0VHJhY2VyKFwib3BlbnBheS1qc1wiKSwgbiA9IHhlLmFjdGl2ZSgpLCBhID0gci5zdGFydFNwYW4oXG4gICAgYGZvcm0uJHtlLnNwYW5OYW1lfWAsXG4gICAge1xuICAgICAga2luZDogYXQuQ0xJRU5ULFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBcIm9qcy5jaGVja291dFNlY3VyZVRva2VuXCI6IGUuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgXCJvanMuZGV2aWNlVG9rZW5cIjogZS5kZXZpY2VUb2tlbixcbiAgICAgICAgXCJvanMuZm9ybUlkXCI6IGUuZm9ybUlkLFxuICAgICAgICBcIm9qcy52ZXJzaW9uXCI6IGUudmVyc2lvbixcbiAgICAgICAgXCJvanMucmVsZWFzZV92ZXJzaW9uXCI6IGUucmVsZWFzZVZlcnNpb24sXG4gICAgICAgIFwib2pzLmJhc2VfdXJsXCI6IGUuYmFzZVVybCxcbiAgICAgICAgXCJvanMucmVmZXJyZXJcIjogZS5yZWZlcnJlcixcbiAgICAgICAgLi4uZS5wYXltZW50Um91dGVJZCAmJiB7IFwicGF5bWVudC5yb3V0ZV9pZFwiOiBlLnBheW1lbnRSb3V0ZUlkIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG5cbiAgKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBpID0gYXdhaXQgdCgpO1xuICAgIHJldHVybiBhLnNldFN0YXR1cyh7IGNvZGU6IFBlLk9LIH0pLCBpO1xuICB9IGNhdGNoIChpKSB7XG4gICAgY29uc3QgcyA9IGkgaW5zdGFuY2VvZiBFcnJvciA/IGkubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwiO1xuICAgIHRocm93IGEuc2V0U3RhdHVzKHtcbiAgICAgIGNvZGU6IFBlLkVSUk9SLFxuICAgICAgbWVzc2FnZTogc1xuICAgIH0pLCBpO1xuICB9IGZpbmFsbHkge1xuICAgIGEuZW5kKCk7XG4gIH1cbn07XG5jbGFzcyB4biBleHRlbmRzIExvIHtcbiAgY29uc3RydWN0b3IodCkge1xuICAgIGNvbnN0IHIgPSBgJHt0Lm1lc3NhZ2V9YDtcbiAgICBzdXBlcihyKSwgdGhpcy5yZXNwb25zZSA9IHQ7XG4gIH1cbiAgZ2V0IG9yaWdpbmFsRXJyb3JNZXNzYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlLm1lc3NhZ2U7XG4gIH1cbn1cbmNvbnN0IEogPSBhc3luYyAoZSwgdCwgciwgbikgPT4gT3MoZSwgdCwgYXN5bmMgKCkgPT4ge1xuICBuICYmIHYobiwge1xuICAgIC4uLnRcbiAgfSk7XG4gIGNvbnN0IGEgPSBhd2FpdCBlLnNlbmQodCk7XG4gIGlmICgkcyhhKSkge1xuICAgIGNvbnN0IGkgPSBuYXZpZ2F0b3IuY29ubmVjdGlvbjtcbiAgICB0aHJvdyB2KFwiY2RlX3Jlc3BvbnNlX2Vycm9yXCIsIHtcbiAgICAgIGVycm9yX21lc3NhZ2U6IGEubWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VfdHlwZTogdC50eXBlLFxuICAgICAgdXNlcl9hZ2VudDogbmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgIG9ubGluZTogbmF2aWdhdG9yLm9uTGluZSxcbiAgICAgIGhhc19mb2N1czogZG9jdW1lbnQuaGFzRm9jdXMoKSxcbiAgICAgIGhyZWY6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgICAgZG9jdW1lbnRfdmlzaWJpbGl0eV9zdGF0ZTogZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlLFxuICAgICAgY29ubmVjdGlvbl9kb3dubGluazogaT8uZG93bmxpbmssXG4gICAgICBjb25uZWN0aW9uX2VmZmVjdGl2ZV90eXBlOiBpPy5lZmZlY3RpdmVUeXBlLFxuICAgICAgY29ubmVjdGlvbl9ydHQ6IGk/LnJ0dCxcbiAgICAgIGNvbm5lY3Rpb25fc2F2ZV9kYXRhOiBpPy5zYXZlRGF0YVxuICAgIH0pLCBuZXcgeG4oYSk7XG4gIH1cbiAgaWYgKCFqcyhhLCByKSkge1xuICAgIGNvbnN0IGkgPSByLnNhZmVQYXJzZShhKTtcbiAgICB0aHJvdyBpLnN1Y2Nlc3MgPyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0YXRlXCIpIDogKGNvbnNvbGUuZXJyb3IoXCJPSlMgcXVlcnlBcGkgZ290IGEgc2NoZW1hIGVycm9yLiBFeHBlY3RlZCBzY2hlbWE6XCIsIHIsIFwiQWN0dWFsOlwiLCBhKSwgaS5lcnJvcik7XG4gIH1cbiAgcmV0dXJuIG4gJiYgdihuLCB7XG4gICAgLi4uYVxuICB9KSwgYTtcbn0pLCBqcyA9IChlLCB0KSA9PiB0LnNhZmVQYXJzZShlKS5zdWNjZXNzLCAkcyA9IChlKSA9PiB5YS5zYWZlUGFyc2UoZSkuc3VjY2VzcywgR3MgPSBhc3luYyAoZSwgdCkgPT4gYXdhaXQgSihlLCB7IHR5cGU6IFwiZ2V0X2NoZWNrb3V0X3ByZXZpZXdcIiwgcGF5bG9hZDogdCB9LCBmbiksIE4gPSBhc3luYyAoZSkgPT4gYXdhaXQgSihlLCB7IHR5cGU6IFwiZ2V0X3ByZWZpbGxcIiwgcGF5bG9hZDoge30gfSwgX24pLCBaID0gYXN5bmMgKGUsIHQpID0+IGF3YWl0IEooXG4gIGUsXG4gIHsgdHlwZTogXCJ2Ml9zdGFydF9wYXltZW50X2Zsb3dcIiwgcGF5bG9hZDogdCB9LFxuICBnbixcbiAgXCJzdGFydF9wYXltZW50X2Zsb3dcIlxuKSwgRG4gPSBhc3luYyAoZSwgdCkgPT4gYXdhaXQgSihcbiAgZSxcbiAgeyB0eXBlOiBcInN0YXJ0X3BheW1lbnRfZmxvd19mb3JfY2NcIiwgcGF5bG9hZDogdCB9LFxuICBGYSxcbiAgXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX2NjXCJcbiksIHFzID0gYXN5bmMgKGUsIHQpID0+IHtcbiAgdihcInN0YXJ0X3BheW1lbnRfZmxvd19mb3JfcHJcIiwge1xuICAgIC4uLnRcbiAgfSk7XG4gIGNvbnN0IHIgPSBhd2FpdCBKKGUsIHsgdHlwZTogXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX3ByXCIsIHBheWxvYWQ6IHQgfSwgZ24pO1xuICByZXR1cm4gdihcInN0YXJ0X3BheW1lbnRfZmxvd19mb3JfcHJfcmVzdWx0XCIsIHtcbiAgICAuLi5yXG4gIH0pLCByO1xufSwgeCA9IGFzeW5jIChlLCB0KSA9PiBhd2FpdCBKKFxuICBlLFxuICB7IHR5cGU6IFwiY29uZmlybV9wYXltZW50X2Zsb3dcIiwgcGF5bG9hZDogdCB9LFxuICBzYSxcbiAgXCJjb25maXJtX3BheW1lbnRfZmxvd1wiXG4pLCBWcyA9IGFzeW5jIChlLCB0KSA9PiBhd2FpdCBKKFxuICBlLFxuICB7IHR5cGU6IFwiZmluYWxpemVfc2V0dXBfcGF5bWVudF9tZXRob2RcIiwgcGF5bG9hZDogdCB9LFxuICB5bixcbiAgXCJmaW5hbGl6ZV9zZXR1cF9wYXltZW50X21ldGhvZFwiXG4pLCB6cyA9IGFzeW5jIChlLCB0KSA9PiBhd2FpdCBKKFxuICBlLFxuICB7IHR5cGU6IFwiY2hlY2tfaWZfcG9wdXBfd2luZG93X3ZlcmlmaWVkXCIsIHBheWxvYWQ6IHQgfSxcbiAgaWEsXG4gIFwiY2hlY2tfaWZfcG9wdXBfd2luZG93X3ZlcmlmaWVkXCJcbiksIEJzID0gYXN5bmMgKGUsIHQsIHIpID0+IHtcbiAgY29uc3QgbiA9IGF3YWl0IEdzKGUsIHtcbiAgICBzZWN1cmVfdG9rZW46IHQsXG4gICAgcHJvbW90aW9uX2NvZGU6IHJcbiAgfSksIGEgPSBuZXcgU2V0KG4ucHJldmlldy5pbnZvaWNlcy5tYXAoKGwpID0+IGwuY3VycmVuY3kpKTtcbiAgaWYgKGEuc2l6ZSAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGV4YWN0bHkgb25lIGN1cnJlbmN5LCBnb3QgJHthLnNpemV9YCk7XG4gIGNvbnN0IGkgPSBhLnZhbHVlcygpLm5leHQoKS52YWx1ZSA/PyBcInVzZFwiLCBzID0gemEobi5wcmV2aWV3Lmludm9pY2VzLm1hcCgobCkgPT4gbC5yZW1haW5pbmdfYW1vdW50X2F0b20pKTtcbiAgcmV0dXJuIHtcbiAgICBjdXJyZW5jeTogaSxcbiAgICBhbW91bnRBdG9tOiBzXG4gIH07XG59LCBRID0gYXN5bmMgKGUsIHQsIHIsIG4pID0+IHtcbiAgaWYgKHIpXG4gICAgcmV0dXJuIHsgYW1vdW50QXRvbTogMCwgY3VycmVuY3k6IFwidXNkXCIgfTtcbiAge1xuICAgIG4gPSBuIHx8IHZvaWQgMCwgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInByb21vQ29kZVwiKSAmJiAhbiAmJiAobiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJwcm9tb0NvZGVcIikpO1xuICAgIGNvbnN0IGEgPSBhd2FpdCBCcyhlLCB0LCBuKTtcbiAgICByZXR1cm4geyBhbW91bnRBdG9tOiBhLmFtb3VudEF0b20sIGN1cnJlbmN5OiBhLmN1cnJlbmN5IH07XG4gIH1cbn0sIFVuID0gYXN5bmMgKGUsIHQpID0+IHtcbiAgaWYgKGUuc2l6ZSA9PT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBDREUgY29ubmVjdGlvbnMgZm91bmRcIik7XG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBBcnJheS5mcm9tKGUudmFsdWVzKCkpLm1hcChcbiAgICAgIChuKSA9PiBKKG4sIHsgdHlwZTogXCJ0b2tlbml6ZV9jYXJkXCIsIHBheWxvYWQ6IHQgfSwgbmEpXG4gICAgKVxuICApO1xufSwgT3IgPSBhc3luYyAoZSwgdCkgPT4gYXdhaXQgSihcbiAgZSxcbiAgeyB0eXBlOiBcImNoZWNrb3V0X2NhcmRfZWxlbWVudHNcIiwgcGF5bG9hZDogdCB9LFxuICB0dCxcbiAgXCJjaGVja291dF9jYXJkX2VsZW1lbnRzXCJcbiksIEhzID0gYXN5bmMgKGUsIHQpID0+IGF3YWl0IEooZSwgeyB0eXBlOiBcInNldHVwX3BheW1lbnRfbWV0aG9kXCIsIHBheWxvYWQ6IHQgfSwgeW4sIFwic2V0dXBfY2hlY2tvdXRcIiksIF9yID0gYXN5bmMgKGUsIHQpID0+IGF3YWl0IEooZSwgeyB0eXBlOiBcImNoZWNrb3V0XCIsIHBheWxvYWQ6IHQgfSwgdHQsIFwicGVyZm9ybV9jaGVja291dFwiKSwgT24gPSAxZTMsIEtzID0gYXN5bmMgKGUsIHQsIHIsIG4pID0+IHtcbiAgY29uc29sZS5sb2codCk7XG4gIGNvbnN0IGkgPSBhd2FpdCBjb25uZWN0VG9DaGlsZCh7XG4gICAgaWZyYW1lOiBlLFxuICAgIGRlYnVnOiB0cnVlLFxuICAgIHRpbWVvdXQ6IE9uLFxuICAgIGNoaWxkT3JpZ2luOiBcIipcIlxuICAgIC8vIFRPRE86IHVzZSB3aXRoIHByb3BlciBjaGlsZE9yaWdpblxuICB9KS5wcm9taXNlLCBzID0gYXdhaXQgSihpLCB7IHR5cGU6IHIgfSwgbik7XG4gIHJldHVybiBjb25zb2xlLmxvZyhcIvCfn6IgQ0RFIGNvbm5lY3Rpb24gc3VjY2Vzc2Z1bCEgU3RvcHBpbmcgcG9sbGluZy4uLiBSZXN1bHQ6XCIsIHMpLCBzO1xufSwgVXQgPSBhc3luYyAoZSwgdCkgPT4gYXdhaXQgSihcbiAgZSxcbiAgeyB0eXBlOiBcInByZXBhcmVfcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IHQgfSxcbiAgTmEsXG4gIFwicHJlcGFyZV9wYXltZW50X2Zsb3dcIlxuKSwgam4gPSBhc3luYyAoZSwgdCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgSihcbiAgICAgIGUsXG4gICAgICB7IHR5cGU6IFwiZ2V0X3N0YW5kYXJkaXplZF9lcnJvcl9jb2RlXCIsIHBheWxvYWQ6IHsgbWVzc2FnZTogdCB9IH0sXG4gICAgICBUYVxuICAgICkpLmVycm9yX2NvZGU7XG4gIH0gY2F0Y2ggKHIpIHtcbiAgICByZXR1cm4gY29uc29sZS5lcnJvcihcIltjZGUtY2xpZW50XSBFcnJvciBkdXJpbmcgZ2V0U3RhbmRhcmRpemVkRXJyb3JDb2RlOlwiLCBhZShyKSksIFwiUEFZTUVOVF9GQUlMRURfR0VORVJJQ1wiO1xuICB9XG59LCBZcyA9IGFzeW5jIChlLCB0KSA9PiBhd2FpdCBKKFxuICBlLFxuICB7IHR5cGU6IFwic2V0X3VzZXJfZGV2aWNlX3Rva2VuXCIsIHBheWxvYWQ6IHsgZGV2aWNlX3Rva2VuOiB0IH0gfSxcbiAgTGFcbiksIFdzID0gYXN5bmMgKGUpID0+IHtcbiAgaWYgKHR5cGVvZiBlICE9IFwib2JqZWN0XCIgfHwgIWUpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdCB0ID0geyB0eXBlOiBcInBpbmdcIiB9LCByID0gYXdhaXQgZS5zZW5kKHQpO1xuICAgIGlmIChyICE9PSAhMClcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJ3RydWUnIGFmdGVyIHBpbmcsIGdvdCAke0pTT04uc3RyaW5naWZ5KHIpfWApO1xuICAgIHJldHVybiAhMDtcbiAgfSBjYXRjaCAodCkge1xuICAgIHJldHVybiBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBDREUgY29ubmVjdGlvbiBjaGVjazpcIiwgdCksIGZhbHNlO1xuICB9XG59LCBKcyA9IChlLCB0KSA9PiAhIWUgJiYgdCwgJG4gPSBcImh0dHBzOi8vY2RlLmdldG9wZW5wYXkuY29tXCIsIEduID0gXCIwMTIzNDU2Nzg5QUJDREVGR0hKS01OUFFSU1RWV1hZWlwiLCBJdCA9IDMyLCBacyA9IDE2LCBxbiA9IDEwLCBqciA9IDI4MTQ3NDk3NjcxMDY1NTtcbnZhciBGZTtcbihmdW5jdGlvbihlKSB7XG4gIGUuQmFzZTMySW5jb3JyZWN0RW5jb2RpbmcgPSBcIkIzMl9FTkNfSU5WQUxJRFwiLCBlLkRlY29kZVRpbWVJbnZhbGlkQ2hhcmFjdGVyID0gXCJERUNfVElNRV9DSEFSXCIsIGUuRGVjb2RlVGltZVZhbHVlTWFsZm9ybWVkID0gXCJERUNfVElNRV9NQUxGT1JNRURcIiwgZS5FbmNvZGVUaW1lTmVnYXRpdmUgPSBcIkVOQ19USU1FX05FR1wiLCBlLkVuY29kZVRpbWVTaXplRXhjZWVkZWQgPSBcIkVOQ19USU1FX1NJWkVfRVhDRUVEXCIsIGUuRW5jb2RlVGltZVZhbHVlTWFsZm9ybWVkID0gXCJFTkNfVElNRV9NQUxGT1JNRURcIiwgZS5QUk5HRGV0ZWN0RmFpbHVyZSA9IFwiUFJOR19ERVRFQ1RcIiwgZS5VTElESW52YWxpZCA9IFwiVUxJRF9JTlZBTElEXCIsIGUuVW5leHBlY3RlZCA9IFwiVU5FWFBFQ1RFRFwiLCBlLlVVSURJbnZhbGlkID0gXCJVVUlEX0lOVkFMSURcIjtcbn0pKEZlIHx8IChGZSA9IHt9KSk7XG5jbGFzcyBXZSBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IodCwgcikge1xuICAgIHN1cGVyKGAke3J9ICgke3R9KWApLCB0aGlzLm5hbWUgPSBcIlVMSURFcnJvclwiLCB0aGlzLmNvZGUgPSB0O1xuICB9XG59XG5mdW5jdGlvbiBRcyhlKSB7XG4gIGNvbnN0IHQgPSBNYXRoLmZsb29yKGUoKSAqIEl0KSAlIEl0O1xuICByZXR1cm4gR24uY2hhckF0KHQpO1xufVxuZnVuY3Rpb24gWHMoZSkge1xuICBjb25zdCB0ID0gZWMoKSwgciA9IHQgJiYgKHQuY3J5cHRvIHx8IHQubXNDcnlwdG8pIHx8IG51bGw7XG4gIGlmICh0eXBlb2Ygcj8uZ2V0UmFuZG9tVmFsdWVzID09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3QgbiA9IG5ldyBVaW50OEFycmF5KDEpO1xuICAgICAgcmV0dXJuIHIuZ2V0UmFuZG9tVmFsdWVzKG4pLCBuWzBdIC8gMjU1O1xuICAgIH07XG4gIGlmICh0eXBlb2Ygcj8ucmFuZG9tQnl0ZXMgPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiAoKSA9PiByLnJhbmRvbUJ5dGVzKDEpLnJlYWRVSW50OCgpIC8gMjU1O1xuICB0aHJvdyBuZXcgV2UoRmUuUFJOR0RldGVjdEZhaWx1cmUsIFwiRmFpbGVkIHRvIGZpbmQgYSByZWxpYWJsZSBQUk5HXCIpO1xufVxuZnVuY3Rpb24gZWMoKSB7XG4gIHJldHVybiBuYygpID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgPCBcInVcIiA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgPCBcInVcIiA/IGdsb2JhbCA6IHR5cGVvZiBnbG9iYWxUaGlzIDwgXCJ1XCIgPyBnbG9iYWxUaGlzIDogbnVsbDtcbn1cbmZ1bmN0aW9uIHRjKGUsIHQpIHtcbiAgbGV0IHIgPSBcIlwiO1xuICBmb3IgKDsgZSA+IDA7IGUtLSlcbiAgICByID0gUXModCkgKyByO1xuICByZXR1cm4gcjtcbn1cbmZ1bmN0aW9uIHJjKGUsIHQgPSBxbikge1xuICBpZiAoaXNOYU4oZSkpXG4gICAgdGhyb3cgbmV3IFdlKEZlLkVuY29kZVRpbWVWYWx1ZU1hbGZvcm1lZCwgYFRpbWUgbXVzdCBiZSBhIG51bWJlcjogJHtlfWApO1xuICBpZiAoZSA+IGpyKVxuICAgIHRocm93IG5ldyBXZShGZS5FbmNvZGVUaW1lU2l6ZUV4Y2VlZGVkLCBgQ2Fubm90IGVuY29kZSBhIHRpbWUgbGFyZ2VyIHRoYW4gJHtqcn06ICR7ZX1gKTtcbiAgaWYgKGUgPCAwKVxuICAgIHRocm93IG5ldyBXZShGZS5FbmNvZGVUaW1lTmVnYXRpdmUsIGBUaW1lIG11c3QgYmUgcG9zaXRpdmU6ICR7ZX1gKTtcbiAgaWYgKE51bWJlci5pc0ludGVnZXIoZSkgPT09IGZhbHNlKVxuICAgIHRocm93IG5ldyBXZShGZS5FbmNvZGVUaW1lVmFsdWVNYWxmb3JtZWQsIGBUaW1lIG11c3QgYmUgYW4gaW50ZWdlcjogJHtlfWApO1xuICBsZXQgciwgbiA9IFwiXCI7XG4gIGZvciAobGV0IGEgPSB0OyBhID4gMDsgYS0tKVxuICAgIHIgPSBlICUgSXQsIG4gPSBHbi5jaGFyQXQocikgKyBuLCBlID0gKGUgLSByKSAvIEl0O1xuICByZXR1cm4gbjtcbn1cbmZ1bmN0aW9uIG5jKCkge1xuICByZXR1cm4gdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlIDwgXCJ1XCIgJiYgc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlO1xufVxuZnVuY3Rpb24gb2MoZSwgdCkge1xuICBjb25zdCByID0gWHMoKSwgbiA9IERhdGUubm93KCk7XG4gIHJldHVybiByYyhuLCBxbikgKyB0Yyhacywgcik7XG59XG5jb25zdCBWbiA9IFwib3BfYW5hbHl0aWNzX2RldmljZV90b2tlblwiLCB6biA9ICgpID0+IHtcbiAgY29uc3QgZSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIikuZmluZCgocikgPT4gci5pbmNsdWRlcyhWbikpO1xuICBpZiAoZSlcbiAgICByZXR1cm4gZS5zcGxpdChcIj1cIilbMV07XG4gIGNvbnN0IHQgPSBvYygpO1xuICByZXR1cm4gYWModCksIHQ7XG59LCBhYyA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKTtcbiAgdC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkgKyAxKSwgZG9jdW1lbnQuY29va2llID0gYCR7Vm59PSR7ZX07IHBhdGg9LzsgZXhwaXJlcz0ke3QudG9VVENTdHJpbmcoKX1gO1xufSwgaWMgPSAoZSkgPT4ge1xuICBjb25zdCB0ID0ge307XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChbciwgbl0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYSA9IG9uLnBhcnNlKHIpO1xuICAgICAgQXJyYXkuaXNBcnJheShuKSA/IHRbYV0gPSBuIDogQXJyYXkuaXNBcnJheShuLl9lcnJvcnMpICYmICh0W2FdID0gbi5fZXJyb3JzKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0pLCB0O1xufSwgaiA9IChlLCB0KSA9PiBBcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLW9waWRdXCIpID8/IFtdKS5yZWR1Y2UoKGEsIGkpID0+IHtcbiAgY29uc3QgcyA9IGkuZ2V0QXR0cmlidXRlKFwiZGF0YS1vcGlkXCIpO1xuICBpZiAoIXMpIHJldHVybiBhO1xuICBjb25zdCBsID0gaS50eXBlID09PSBcImNoZWNrYm94XCIgPyBpLmNoZWNrZWQgOiBpLnZhbHVlO1xuICByZXR1cm4geyAuLi5hLCBbc106IGwgfTtcbn0sIHt9KSwgc2MgPSAoZSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBlYS5wYXJzZShlKTtcbiAgfSBjYXRjaCAodCkge1xuICAgIHRocm93IGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwYXJzaW5nIGV2ZW50IHBheWxvYWQ6XCIsIGUsIHQpLCB0O1xuICB9XG59LCBCbiA9ICgpID0+IHtcbiAgY29uc3QgZSA9IHY0KCkuc3BsaXQoXCItXCIpWzBdO1xuICByZXR1cm4ge1xuICAgIGZpcnN0TmFtZTogYHh4XyR7ZX1gLFxuICAgIGxhc3ROYW1lOiBgeHhfJHtlfWAsXG4gICAgZW1haWw6IGB4eF8ke2V9QGVtYWlsLmNvbWAsXG4gICAgemlwQ29kZTogYHh4XyR7ZX1gLFxuICAgIGNvdW50cnk6IFwiVVNcIlxuICB9O1xufSwgQ2UgPSAoZSkgPT4gKHtcbiAgbGluZTE6IGVbcC5MSU5FMV0sXG4gIGxpbmUyOiBlW3AuTElORTJdLFxuICBsaW5lMzogZVtwLkxJTkUzXSxcbiAgY2l0eTogZVtwLkNJVFldLFxuICBzdGF0ZTogZVtwLlNUQVRFXSxcbiAgY291bnRyeTogZVtwLkNPVU5UUlldLFxuICB6aXBfY29kZTogZVtwLlpJUF9DT0RFXVxufSksIE90ID0gKGUsIHQpID0+IHtcbiAgaWYgKHQucmVxdWlyZV9mdWxsX3NoaXBwaW5nX2FkZHJlc3MpXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmUxOiBlW3AuU0hJUFBJTkdfTElORTFdLFxuICAgICAgbGluZTI6IGVbcC5TSElQUElOR19MSU5FMl0sXG4gICAgICBsaW5lMzogZVtwLlNISVBQSU5HX0xJTkUzXSxcbiAgICAgIGNpdHk6IGVbcC5TSElQUElOR19DSVRZXSxcbiAgICAgIHN0YXRlOiBlW3AuU0hJUFBJTkdfU1RBVEVdLFxuICAgICAgY291bnRyeTogZVtwLlNISVBQSU5HX0NPVU5UUlldLFxuICAgICAgemlwX2NvZGU6IGVbcC5TSElQUElOR19aSVBfQ09ERV1cbiAgICB9O1xufSwganQgPSAoZSwgdCkgPT4gW2UsIHRdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKSwgY2MgPSAoeyB3aWR0aDogZSwgaGVpZ2h0OiB0IH0pID0+IGBcbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxufVxuXG4ub3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiAyMTQ3NDgzNjQ4ICFpbXBvcnRhbnQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG4uY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiAke2UgPz8gXCI1MDBweFwifTtcbiAgbWF4LWhlaWdodDogJHt0ID8/IFwiNjAwcHhcIn07XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFuaW1hdGlvbjogZmFkZUluIDAuM3MgZWFzZS1vdXQ7XG59XG4uZnJhbWUsICNhZHllbi1jb250YWluZXIsICNhZHllbi1jb250YWluZXIgPiAqIHtcbiAgbWF4LXdpZHRoOiAke2UgPz8gXCI1MDBweFwifTtcbiAgbWF4LWhlaWdodDogJHt0ID8/IFwiNjAwcHhcIn07XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlcjogbm9uZTtcbn1cbi5jYW5jZWwtYnV0dG9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBmb250LXNpemU6IDFyZW07XG4gIGNvbG9yOiAjZmZmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRvcDogLTEuNXJlbTtcbiAgcGFkZGluZzogMDtcbiAgcmlnaHQ6IDA7XG59XG5gLCBsYyA9ICh7IHdpZHRoOiBlLCBoZWlnaHQ6IHQgfSkgPT4gYFxuQGtleWZyYW1lcyBmYWRlSW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG5cbi5vdmVybGF5IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IDIxNDc0ODM2NDggIWltcG9ydGFudDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cbi5jb250YWluZXIge1xuICBtYXgtd2lkdGg6ICR7ZSA/PyBcIjUwMHB4XCJ9O1xuICBtYXgtaGVpZ2h0OiAke3QgPz8gXCI2MDBweFwifTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFuaW1hdGlvbjogZmFkZUluIDAuM3MgZWFzZS1vdXQ7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuLmJhbmstc2VsZWN0b3ItY29udGVudCB7XG4gIHBhZGRpbmc6IDI0cHg7XG4gIG1heC1oZWlnaHQ6IGNhbGMoJHt0ID8/IFwiNjAwcHhcIn0gLSA0OHB4KTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5iYW5rLXNlbGVjdG9yLWhlYWRlciB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgY29sb3I6ICMxYTFhMWE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5iYW5rLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDEycHg7XG59XG4uYmFuay1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTZweDtcbiAgYm9yZGVyOiAycHggc29saWQgI2U1ZTVlNTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG59XG4uYmFuay1pdGVtOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjM2I4MmY2O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmYWZjO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuLmJhbmstaXRlbTphY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG4uYmFuay1sb2dvIHtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBvYmplY3QtZml0OiBjb250YWluO1xuICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlOWVjZWY7XG59XG4uYmFuay1sb2dvLXBsYWNlaG9sZGVyIHtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cbi5iYW5rLWluZm8ge1xuICBmbGV4OiAxO1xufVxuLmJhbmstZGlzcGxheS1uYW1lIHtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogIzFhMWExYTtcbiAgbWFyZ2luLWJvdHRvbTogMnB4O1xufVxuLmJhbmstbmFtZSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjNmM3NTdkO1xufVxuLmNhbmNlbC1idXR0b24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgY29sb3I6ICNmZmY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdG9wOiAtMS41cmVtO1xuICBwYWRkaW5nOiAwO1xuICByaWdodDogMDtcbn1cbmAsICR0ID0gKGUsIHQpID0+IHtcbiAgY29uc3QgeyBpZDogciwgdGl0bGU6IG4sIHdpZHRoOiBhLCBoZWlnaHQ6IGksIG5hbWU6IHMgfSA9IHQgPz8ge30sIGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGVtcGxhdGVcIik7XG4gIGwuaW5uZXJIVE1MID0gYFxuICAgIDxzdHlsZT5cbiAgICAgICR7Y2MoeyB3aWR0aDogYSwgaGVpZ2h0OiBpIH0pfVxuICAgIDwvc3R5bGU+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idXR0b25cIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGlmcmFtZSBzcmM9XCIke2V9XCIgY2xhc3M9XCJmcmFtZVwiIGlkPVwiJHtyID8/IFwidGhyZWUtZHMtaWZyYW1lXCJ9XCIgdGl0bGU9XCIke24gPz8gXCIzRCBTZWN1cmUgdmVyaWZpY2F0aW9uXCJ9XCIgYWxsb3c9XCJwYXltZW50XCIgbmFtZT1cIiR7cyA/PyBcInRocmVlLWRzLWlmcmFtZVwifVwiPjwvaWZyYW1lPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGA7XG4gIGNvbnN0IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLCB1ID0gYy5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgdS5hcHBlbmRDaGlsZChsLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTtcbiAgY29uc3QgZCA9IHUucXVlcnlTZWxlY3RvcihcIiN0aHJlZS1kcy1pZnJhbWVcIiksIG0gPSB1LnF1ZXJ5U2VsZWN0b3IoXCIuY2FuY2VsLWJ1dHRvblwiKTtcbiAgcmV0dXJuIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYyksIHsgaG9zdDogYywgaWZyYW1lOiBkLCBjYW5jZWxCdXR0b246IG0gfTtcbn0sIEhuID0gKGUsIHQpID0+IHtcbiAgY29uc3QgeyB3aWR0aDogciwgaGVpZ2h0OiBuLCB0aXRsZTogYSB9ID0gdCA/PyB7fTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChpLCBzKSA9PiB7XG4gICAgY29uc3QgbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZW1wbGF0ZVwiKSwgYyA9IGUubWFwKChfLCBnKSA9PiB7XG4gICAgICBjb25zdCB3ID0gXy5yZXNvdXJjZXMubG9nb191cmwgPyBgPGltZyBzcmM9XCIke18ucmVzb3VyY2VzLmxvZ29fdXJsfVwiIGFsdD1cIiR7Xy5kaXNwbGF5X25hbWV9XCIgY2xhc3M9XCJiYW5rLWxvZ29cIiAvPmAgOiBgPGRpdiBjbGFzcz1cImJhbmstbG9nby1wbGFjZWhvbGRlclwiPiR7Xy5kaXNwbGF5X25hbWUuc3Vic3RyaW5nKDAsIDIpLnRvVXBwZXJDYXNlKCl9PC9kaXY+YDtcbiAgICAgIHJldHVybiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLWl0ZW1cIiBkYXRhLWJhbmstaW5kZXg9XCIke2d9XCI+XG4gICAgICAgICAgJHt3fVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLWluZm9cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLWRpc3BsYXktbmFtZVwiPiR7Xy5kaXNwbGF5X25hbWV9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFuay1uYW1lXCI+JHtfLmJhbmtfbmFtZX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICBgO1xuICAgIH0pLmpvaW4oXCJcIik7XG4gICAgbC5pbm5lckhUTUwgPSBgXG4gICAgICA8c3R5bGU+XG4gICAgICAgICR7bGMoeyB3aWR0aDogciwgaGVpZ2h0OiBuIH0pfVxuICAgICAgPC9zdHlsZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLXNlbGVjdG9yLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLXNlbGVjdG9yLWhlYWRlclwiPiR7YSA/PyBcIlNlbGVjdCB5b3VyIGJhbmtcIn08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLWxpc3RcIj5cbiAgICAgICAgICAgICAgJHtjfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgICBjb25zdCB1ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSwgZCA9IHUuYXR0YWNoU2hhZG93KHsgbW9kZTogXCJvcGVuXCIgfSk7XG4gICAgZC5hcHBlbmRDaGlsZChsLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTtcbiAgICBjb25zdCBtID0gZC5xdWVyeVNlbGVjdG9yKFwiLmNhbmNlbC1idXR0b25cIiksIGYgPSBkLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYmFuay1pdGVtXCIpLCB5ID0gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh1KTtcbiAgICB9O1xuICAgIG0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgIHkoKSwgcyhuZXcgRXJyb3IoXCJCYW5rIHNlbGVjdGlvbiBjYW5jZWxsZWRcIikpO1xuICAgIH0pLCBmLmZvckVhY2goKF8sIGcpID0+IHtcbiAgICAgIF8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgeSgpLCBpKGVbZ10pO1xuICAgICAgfSk7XG4gICAgfSksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodSk7XG4gIH0pO1xufSwgR3QgPSAoZSwgdCkgPT4ge1xuICBjb25zdCB7IHdpZHRoOiByLCBoZWlnaHQ6IG4sIGJhc2VVcmw6IGEgfSA9IHQgPz8ge30sIGkgPSBuZXcgVVJMKGBhcHAvZGlyZWN0X2RlYml0L21pY3JvX2RlcG9zaXQvP3R5cGU9JHtlfWAsIGEpLnRvU3RyaW5nKCk7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocywgbCkgPT4ge1xuICAgIGNvbnN0IGMgPSAkdChpLCB7IHdpZHRoOiByLCBoZWlnaHQ6IG4sIHRpdGxlOiBcIk1pY3JvIERlcG9zaXQgRm9ybVwiIH0pLCB1ID0gKCkgPT4ge1xuICAgICAgYy5ob3N0LnJlbW92ZSgpO1xuICAgIH0sIGQgPSAoKSA9PiB7XG4gICAgICB1KCksIGwobmV3IEVycm9yKFwiTWljcm8gZGVwb3NpdCBmb3JtIGNhbmNlbGxlZFwiKSk7XG4gICAgfSwgbSA9ICh3KSA9PiB7XG4gICAgICB1KCksIHcuc3RhdHVzID09PSBcInN1Y2Nlc3NcIiAmJiB3LnBheWxvYWQgPyBcImVycm9yXCIgaW4gdy5wYXlsb2FkID8gbChuZXcgRXJyb3Iody5wYXlsb2FkLmVycm9yKSkgOiBzKHcucGF5bG9hZCkgOiBsKG5ldyBFcnJvcihcIk1pY3JvIGRlcG9zaXQgZm9ybSBmYWlsZWRcIikpO1xuICAgIH07XG4gICAgYy5jYW5jZWxCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGQpO1xuICAgIGNvbnN0IGYgPSB5cihcbiAgICAgIGMuaWZyYW1lLFxuICAgICAgbSxcbiAgICAgIG5ldyBVUkwoYSkub3JpZ2luLFxuICAgICAgXCJtaWNyby1kZXBvc2l0LXN0YXR1c1wiLFxuICAgICAgX2FcbiAgICApLCB5ID0gKCkgPT4ge1xuICAgICAgYy5jYW5jZWxCdXR0b24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGQpLCBjbGVhckludGVydmFsKGYpO1xuICAgIH0sIF8gPSBkLCBnID0gKCkgPT4ge1xuICAgICAgeSgpLCBfKCk7XG4gICAgfTtcbiAgICBjLmNhbmNlbEJ1dHRvbi5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZCksIGMuY2FuY2VsQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBnKTtcbiAgfSk7XG59O1xuZnVuY3Rpb24geXIoZSwgdCwgciwgbiwgYSkge1xuICBjb25zdCBpID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBsID0gYXdhaXQgS3MoZSwgciwgbiwgYSk7XG4gICAgICBsICYmIChjbGVhckludGVydmFsKHMpLCB0KGwpKTtcbiAgICB9IGNhdGNoIHtcbiAgICB9XG4gIH07XG4gIGkoKTtcbiAgY29uc3QgcyA9IHNldEludGVydmFsKGksIE9uKTtcbiAgcmV0dXJuIHM7XG59XG5mdW5jdGlvbiBLbih7XG4gIGVsZW1lbnRzOiBlLFxuICBwb2xsaW5nSW50ZXJ2YWw6IHQsXG4gIHJlc29sdmU6IHJcbn0pIHtcbiAgY29uc3QgbiA9ICgpID0+IHtcbiAgICBjbGVhckludGVydmFsKHQpLCBlLmhvc3QucmVtb3ZlKCksIHIoeyBzdGF0dXM6IEYuQ0FOQ0VMTEVEIH0pO1xuICB9O1xuICByZXR1cm4gZS5jYW5jZWxCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG4pLCAoKSA9PiB7XG4gICAgZS5jYW5jZWxCdXR0b24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG4pO1xuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gbGUoZSkge1xuICBjb25zdCB7IHVybDogdCwgYmFzZVVybDogciwgZnJhbWVXaWR0aDogbiwgZnJhbWVIZWlnaHQ6IGEsIGZyYW1lVGl0bGU6IGkgfSA9IGUsIHMgPSAkdCh0LCB7IHdpZHRoOiBuLCBoZWlnaHQ6IGEsIHRpdGxlOiBpIH0pO1xuICByZXR1cm4gbmV3IFByb21pc2UoKGwpID0+IHtcbiAgICBjb25zdCBjID0gKG0pID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzLmhvc3QucmVtb3ZlKCk7XG4gICAgICB9LCAxZTMpLCBsKG0pLCBkPy4oKTtcbiAgICB9LCB1ID0geXIoXG4gICAgICBzLmlmcmFtZSxcbiAgICAgIGMsXG4gICAgICBuZXcgVVJMKHIpLm9yaWdpbixcbiAgICAgIFwicGluZy0zZHMtc3RhdHVzXCIsXG4gICAgICBsblxuICAgICksIGQgPSBLbih7XG4gICAgICBlbGVtZW50czogcyxcbiAgICAgIHBvbGxpbmdJbnRlcnZhbDogdSxcbiAgICAgIHJlc29sdmU6IGxcbiAgICB9KTtcbiAgfSk7XG59XG5jb25zdCBZbiA9IGFzeW5jIChlKSA9PiB7XG4gIGNvbnN0IHQgPSBhd2FpdCBsZShlKTtcbiAgaWYgKHQuc3RhdHVzID09PSBGLkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKHQuc3RhdHVzID09PSBGLkZBSUxVUkUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gIHJldHVybiB0LnN0YXR1cyAhPT0gRi5TVUNDRVNTICYmIGN0KHQuc3RhdHVzKSwge1xuICAgIGhyZWY6IHQuaHJlZlxuICB9O1xufSwgdWMgPSAoZSwgdCkgPT4ge1xuICBjb25zdCByID0gd2luZG93Lm9wZW4odCwgXCJfYmxhbmtcIik7XG4gIGlmICghcilcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gcG9wdXAgd2luZG93IGJsb2NrZWQuIFBsZWFzZSBhbGxvdyBwb3B1cHMgZm9yIHRoaXMgc2l0ZS5gKTtcbiAgcmV0dXJuIHI7XG59LCBXbiA9IGFzeW5jIChlLCB0LCByLCBuKSA9PiB7XG4gIGNvbnN0IHsgZXJyX186IGEgfSA9IGsoXCJwb3B1cC12ZXJpZnlcIik7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoaSwgcykgPT4ge1xuICAgIGNvbnN0IGwgPSB1YyhlLCBuKSwgYyA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHUgPSBhd2FpdCB6cyh0LCByKTtcbiAgICAgICAgaWYgKHUucHJlc2VudClcbiAgICAgICAgICBjbGVhckludGVydmFsKGMpLCBsLmNsb3NlKCksIGkoeyBocmVmOiB1LmhyZWYgfSk7XG4gICAgICAgIGVsc2UgaWYgKGwuY2xvc2VkKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlfSBwYXltZW50IGNhbmNlbGxlZGApO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICBhKGFlKHUpKSwgY2xlYXJJbnRlcnZhbChjKSwgcyhhZSh1KSk7XG4gICAgICB9XG4gICAgfSwgMWUzKTtcbiAgfSk7XG59LCBpZSA9ICgpID0+IHtcbiAgbGV0IHQgPSAobmF2aWdhdG9yLmxhbmd1YWdlcyAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aCA/IG5hdmlnYXRvci5sYW5ndWFnZXMgOiBbbmF2aWdhdG9yLmxhbmd1YWdlXSk/LlswXTtcbiAgcmV0dXJuIHQgJiYgKHQgPSB0LnNwbGl0KFwiLVwiKVswXSksIHQ7XG59LCB7IGxvZ19fOiBkYywgZXJyX186IHBjIH0gPSBrKFwiY29tbW9uLWNjXCIpLCBtYyA9ICh7XG4gIHJlcXVpcmVfemlwX2NvZGU6IGUsXG4gIHJlcXVpcmVfZnVsbF9iaWxsaW5nX2FkZHJlc3M6IHQsXG4gIHJlcXVpcmVfZnVsbF9zaGlwcGluZ19hZGRyZXNzOiByLFxuICBwYXltZW50X21ldGhvZDogbixcbiAgaXNCdXNpbmVzc1B1cmNoYXNlOiBhXG59LCBpKSA9PiB7XG4gIGNvbnN0IHMgPSB7fTtcbiAgcmV0dXJuIG4gPT09IFwiYWNoXCIgJiYgKHNbcC5GSVJTVF9OQU1FXSA9IHokMS5zdHJpbmcoKS5taW4oMiwgeyBtZXNzYWdlOiBcIk1pbmltdW0gbGVuZ3RoIGlzIDJcIiB9KSwgc1twLkxBU1RfTkFNRV0gPSB6JDEuc3RyaW5nKCkubWluKDIsIHsgbWVzc2FnZTogXCJNaW5pbXVtIGxlbmd0aCBpcyAyXCIgfSkpLCBlICYmIChzW3AuWklQX0NPREVdID0gVCksIHQgJiYgKHNbcC5MSU5FMV0gPSBULCBzW3AuQ0lUWV0gPSBULCBzW3AuU1RBVEVdID0gVCwgc1twLkNPVU5UUlldID0gVCwgc1twLlpJUF9DT0RFXSA9IFQpLCByICYmIChzW3AuU0hJUFBJTkdfTElORTFdID0gVCwgc1twLlNISVBQSU5HX0NJVFldID0gVCwgc1twLlNISVBQSU5HX1NUQVRFXSA9IFQsIHNbcC5TSElQUElOR19DT1VOVFJZXSA9IFQsIHNbcC5TSElQUElOR19aSVBfQ09ERV0gPSBUKSwgKGlbcC5JU19CVVNJTkVTU19QVVJDSEFTRV0gPz8gYSkgJiYgKHNbcC5CVVNJTkVTU19OQU1FXSA9IFQpLCBPYmplY3Qua2V5cyhzKS5sZW5ndGggPT09IDAgPyBVZSA6IFVlLmV4dGVuZChzKTtcbn0sIGZjID0gKGUsIHQsIHIgPSB7fSkgPT4ge1xuICBpZiAocikge1xuICAgIGRjKGBSZWNlaXZlZCBkZWZhdWx0IGZpZWxkIHZhbHVlczogJHtKU09OLnN0cmluZ2lmeShyKX1gKTtcbiAgICBjb25zdCBpID0gT2JqZWN0LmtleXMocik7XG4gICAgZm9yIChsZXQgcyA9IDA7IHMgPCBpLmxlbmd0aDsgcysrKSB7XG4gICAgICBjb25zdCBsID0gaVtzXSwgYyA9IHJbbF07XG4gICAgICBlW2xdIHx8IChlW2xdID0gYyk7XG4gICAgfVxuICB9XG4gIGVbcC5JU19TSElQUElOR19TQU1FX0FTX0JJTExJTkddID0gISFlW3AuSVNfU0hJUFBJTkdfU0FNRV9BU19CSUxMSU5HXSwgZVtwLklTX1NISVBQSU5HX1NBTUVfQVNfQklMTElOR10gJiYgKGVbcC5TSElQUElOR19MSU5FMV0gPSBlW3AuTElORTFdLCBlW3AuU0hJUFBJTkdfTElORTJdID0gZVtwLkxJTkUyXSwgZVtwLlNISVBQSU5HX0xJTkUzXSA9IGVbcC5MSU5FM10sIGVbcC5TSElQUElOR19DSVRZXSA9IGVbcC5DSVRZXSwgZVtwLlNISVBQSU5HX1NUQVRFXSA9IGVbcC5TVEFURV0sIGVbcC5TSElQUElOR19DT1VOVFJZXSA9IGVbcC5DT1VOVFJZXSwgZVtwLlNISVBQSU5HX1pJUF9DT0RFXSA9IGVbcC5aSVBfQ09ERV0pO1xuICBjb25zdCBhID0gbWMociwgZSkuc2FmZVBhcnNlKGUpO1xuICBpZiAoIWEuc3VjY2Vzcykge1xuICAgIGNvbnN0IGkgPSBhLmVycm9yLmZvcm1hdCgpLCBzID0gaWMoaSksIGwgPSBPYmplY3Qua2V5cyhzKTtcbiAgICBmb3IgKGxldCBjID0gMDsgYyA8IGwubGVuZ3RoOyBjKyspIHtcbiAgICAgIGNvbnN0IHUgPSBsW2NdLCBkID0gc1t1XTtcbiAgICAgIHQodSwgZCwgdSk7XG4gICAgfVxuICAgIHRocm93IHBjKFwiR290IHZhbGlkYXRpb24gZXJyb3JzIGluIG5vbi1DREUgZm9ybSBmaWVsZHNcIiwgcyksIG5ldyBFcnJvcihcIkFsbW9zdCB0aGVyZSEgSnVzdCBhIGZldyB0aGluZ3MgaGlnaGxpZ2h0ZWQgYWJvdmUgdG8gZml4IGJlZm9yZSB5b3UgY2FuIHN1Ym1pdC5cIik7XG4gIH1cbiAgcmV0dXJuIGEuZGF0YTtcbn0sIHsgbG9nX186IF9jLCBlcnJfXzogeWMgfSA9IGsoXCJjb21tb24tY2NcIiksIEcgPSBmYywgSm4gPSAoZSwgdCkgPT4ge1xuICBmb3IgKGNvbnN0IHIgb2YgZSlcbiAgICBpZiAoci5zdWNjZXNzID09PSBmYWxzZSlcbiAgICAgIHRocm93IHIuZXJyb3JzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgY29uc3QgYSA9IGNuLnNhZmVQYXJzZShuLmVsZW1lbnRUeXBlKTtcbiAgICAgICAgaWYgKCFhLnN1Y2Nlc3MpXG4gICAgICAgICAgeWMoYFVua25vd24gZmllbGQgbmFtZSBpbiBvblZhbGlkYXRpb25FcnJvcjogJHtuLmVsZW1lbnRUeXBlfS4gRXJyb3Igb2JqZWN0OmAsIG4pO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCBpID0gYS5kYXRhO1xuICAgICAgICAgIHQoaSwgbi5lcnJvcnMpO1xuICAgICAgICB9XG4gICAgICB9KSwgX2MoYEVycm9yIHRva2VuaXppbmcgY2FyZDogZ290IHZhbGlkYXRpb24gZXJyb3JzOiAke0pTT04uc3RyaW5naWZ5KHIuZXJyb3JzKX1gKSwgbmV3IEVycm9yKFwiR290IHZhbGlkYXRpb24gZXJyb3JzIHdoaWxlIHRva2VuaXppbmcgY2FyZFwiKTtcbn0sIHsgZXJyX186IFpuIH0gPSBrKFwiY29tbW9uXCIpLCBsdCA9IChlKSA9PiB7XG4gIGlmIChlLnBheW1lbnRfbWV0aG9kcy5sZW5ndGggIT09IDEpXG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBleGFjdGx5IG9uZSBwYXltZW50IG1ldGhvZCwgZ290ICR7ZS5wYXltZW50X21ldGhvZHMubGVuZ3RofWApO1xuICByZXR1cm4geyBwYXltZW50X21ldGhvZF9pZDogZS5wYXltZW50X21ldGhvZHNbMF0uaWQgfTtcbn0sIE8gPSAoZSwgdCkgPT4ge1xuICBjb25zdCByID0gZS5maW5kKChuKSA9PiB0LnNhZmVQYXJzZShuKS5zdWNjZXNzKTtcbiAgaWYgKCFyKVxuICAgIHRocm93IFpuKFwiTm8gQ1BNcyBmb3VuZCBmb3IgbW9kZWwuIEFsbCBtb2RlbHM6XCIsIGUpLCBuZXcgRXJyb3IoXCJObyBDUE1zIGZvdW5kIGZvciBtb2RlbFwiKTtcbiAgcmV0dXJuIHQucGFyc2Uocik7XG59LCBxID0gKGUsIHQpID0+ICh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogZS5lbWFpbCxcbiAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogZS5sYXN0TmFtZSxcbiAgbmV3X2N1c3RvbWVyX2ZpcnN0X25hbWU6IGUuZmlyc3ROYW1lLFxuICBjdXN0b21lcl9idXNpbmVzc19uYW1lOiBlLmJ1c2luZXNzTmFtZSxcbiAgY3VzdG9tZXJfdGF4X2lkOiBlLnRheElkLFxuICBjdXN0b21lcl90YXhfaWRfdHlwZTogZS50YXhJZFR5cGUsXG4gIG5ld19jdXN0b21lcl9hZGRyZXNzOiBDZShlKSxcbiAgbmV3X2N1c3RvbWVyX3NoaXBwaW5nX2FkZHJlc3M6IE90KGUsIHQpLFxuICBjdXN0b21lcl9sYW5ndWFnZTogaWUoKSxcbiAgbmV3X2N1c3RvbWVyX3Bob25lOiBlLnBob25lXG59KSwgcmUgPSBhc3luYyAoZSkgPT4ge1xuICBjb25zdCB7IGxvZ19fOiB0IH0gPSBrKGUubG9nUHJlZml4KSwgciA9IGF3YWl0IE4oZS5hbnlDZGVDb25uZWN0aW9uKSwgbiA9IGx0KGUuY29uZmlybVJlc3VsdCk7XG4gIGlmIChyLm1vZGUgPT09IFwic2V0dXBcIilcbiAgICByZXR1cm4gdChcIlNldHRpbmcgdXAgcGF5bWVudCBtZXRob2QuLi5cIiksIHsgbW9kZTogXCJzZXR1cFwiLCByZXN1bHQ6IGF3YWl0IFZzKGUuYW55Q2RlQ29ubmVjdGlvbiwge1xuICAgICAgc2VjdXJlX3Rva2VuOiByLnRva2VuLFxuICAgICAgcG1faWQ6IG4ucGF5bWVudF9tZXRob2RfaWRcbiAgICB9KSB9O1xuICB7XG4gICAgaWYgKGUudXNlUGF5Rmlyc3RGbG93KSB7XG4gICAgICBpZiAodChcIlVzaW5nIHBheS1maXJzdCBmbG93Li4uXCIpLCAhZS5jb25maXJtUmVzdWx0LnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlKVxuICAgICAgICB0aHJvdyBabihcIkNoZWNrb3V0IGZhaWxlZCwgbm8gcGF5LWZpcnN0IHN1Y2Nlc3MgcmVzcG9uc2U6XCIsIGUuY29uZmlybVJlc3VsdCksIG5ldyBFcnJvcihcIkNoZWNrb3V0IGZhaWxlZCwgcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGFub3RoZXIgcGF5bWVudCBtZXRob2QuXCIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZTogXCJjaGVja291dFwiLFxuICAgICAgICByZXN1bHQ6IGUuY29uZmlybVJlc3VsdC5wYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgYSA9IHtcbiAgICAgIHNlY3VyZV90b2tlbjogci50b2tlbixcbiAgICAgIHBheW1lbnRfaW5wdXQ6IHsgcHJvdmlkZXJfdHlwZTogZS5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIgfSxcbiAgICAgIGN1c3RvbWVyX2VtYWlsOiBlLnJlcXVpcmVkRm9ybUZpZWxkc1twLkVNQUlMXSxcbiAgICAgIGN1c3RvbWVyX2FkZHJlc3M6IENlKGUucmVxdWlyZWRGb3JtRmllbGRzKSxcbiAgICAgIGN1c3RvbWVyX3NoaXBwaW5nX2FkZHJlc3M6IE90KGUucmVxdWlyZWRGb3JtRmllbGRzLCByLmNoZWNrb3V0X3NldHRpbmdzKSxcbiAgICAgIHByb21vdGlvbl9jb2RlOiBlLnJlcXVpcmVkRm9ybUZpZWxkc1twLlBST01PVElPTl9DT0RFXSxcbiAgICAgIGxpbmVfaXRlbXM6IHIubGluZV9pdGVtcyxcbiAgICAgIHRvdGFsX2Ftb3VudF9hdG9tOiByLmFtb3VudF90b3RhbF9hdG9tLFxuICAgICAgY2FuY2VsX2F0X2VuZDogZmFsc2UsXG4gICAgICB1c2VfY29uZmlybWVkX3BtX2lkOiBuLnBheW1lbnRfbWV0aG9kX2lkLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IGUuY2hlY2tvdXRQYXltZW50TWV0aG9kXG4gICAgfTtcbiAgICByZXR1cm4gdChcIkRvaW5nIGNoZWNrb3V0Li4uXCIsIGEpLCB7IG1vZGU6IFwiY2hlY2tvdXRcIiwgcmVzdWx0OiBhd2FpdCBfcihlLmFueUNkZUNvbm5lY3Rpb24sIGEpIH07XG4gIH1cbn0sIFUgPSB6JDEuZW51bShbXCJzdHJpcGVcIiwgXCJhaXJ3YWxsZXhcIiwgXCJhdXRob3JpemVfbmV0XCIsIFwiYWR5ZW5cIiwgXCJwYXlwYWxcIiwgXCJwb2NreXRcIiwgXCJsb29wXCJdKTtcblUuRW51bS5zdHJpcGU7XG5jb25zdCBRbiA9ICh7XG4gIHNjcmlwdElkOiBlLFxuICBzcmM6IHQsXG4gIGNoZWNrTG9hZGVkRm46IHJcbn0pID0+IHtcbiAgY29uc3QgbiA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChhLCBpKSA9PiB7XG4gICAgbGV0IHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgIHMuc3JjID0gdCwgcy5pZCA9IGUsIHMuYXN5bmMgPSB0cnVlO1xuICAgIGNvbnN0IGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKTtcbiAgICByKCkgPyBhKCkgOiBsID8gcyA9IGwgOiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHMpLCBzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImxvYWRcIixcbiAgICAgICgpID0+IHtcbiAgICAgICAgbi5hYm9ydCgpLCBhKCk7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IG4uc2lnbmFsIH1cbiAgICApLCBzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImVycm9yXCIsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIG4uYWJvcnQoKSwgaShcIkZhaWxlZCB0byBsb2FkIHRoZSBzY3JpcHRcIik7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IG4uc2lnbmFsIH1cbiAgICApO1xuICB9KTtcbn0sIFZlID0gKHtcbiAgZ2F0ZXdheTogZSxcbiAgZ2F0ZXdheU1lcmNoYW50SWQ6IHQsXG4gIG1lcmNoYW50TmFtZTogcixcbiAgbWVyY2hhbnRJZDogbixcbiAgaW5pdGlhbFByZXZpZXc6IGEsXG4gIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGksXG4gIHByZWZpbGw6IHNcbn0pID0+IHtcbiAgY29uc3QgbCA9IGk/LmFtb3VudD8uYW1vdW50QXRvbSA/PyBhPy5hbW91bnRBdG9tID8/IDAsIGMgPSBNYXRoLm1heChsIC8gMTAwLCAwKSwgdSA9IChpPy5hbW91bnQ/LmN1cnJlbmN5ID8/IHM/LmN1cnJlbmN5ID8/IGEuY3VycmVuY3kpLnRvVXBwZXJDYXNlKCksIGQgPSB7XG4gICAgYXBpVmVyc2lvbjogMixcbiAgICBhcGlWZXJzaW9uTWlub3I6IDAsXG4gICAgYWxsb3dlZFBheW1lbnRNZXRob2RzOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiQ0FSRFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgYWxsb3dlZEF1dGhNZXRob2RzOiBbXCJQQU5fT05MWVwiLCBcIkNSWVBUT0dSQU1fM0RTXCJdLFxuICAgICAgICAgIGFsbG93ZWRDYXJkTmV0d29ya3M6IFtcIkFNRVhcIiwgXCJESVNDT1ZFUlwiLCBcIklOVEVSQUNcIiwgXCJKQ0JcIiwgXCJNQVNURVJDQVJEXCIsIFwiVklTQVwiXSxcbiAgICAgICAgICBiaWxsaW5nQWRkcmVzc1JlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIGJpbGxpbmdBZGRyZXNzUGFyYW1ldGVyczoge1xuICAgICAgICAgICAgZm9ybWF0OiBcIkZVTExcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWxsb3dDcmVkaXRDYXJkczogdHJ1ZSxcbiAgICAgICAgICBhbGxvd1ByZXBhaWRDYXJkczogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB0b2tlbml6YXRpb25TcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgICAgdHlwZTogXCJQQVlNRU5UX0dBVEVXQVlcIixcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBnYXRld2F5OiBlLFxuICAgICAgICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IHRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGVtYWlsUmVxdWlyZWQ6IHRydWUsXG4gICAgc2hpcHBpbmdBZGRyZXNzUmVxdWlyZWQ6IHMuY2hlY2tvdXRfc2V0dGluZ3MucmVxdWlyZV9mdWxsX3NoaXBwaW5nX2FkZHJlc3MsXG4gICAgbWVyY2hhbnRJbmZvOiB7XG4gICAgICAvLyBQUk9EIGVudiB3aWxsIG5lZWQgdGhpc1xuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcGF5L2FwaS93ZWIvcmVmZXJlbmNlL3JlcXVlc3Qtb2JqZWN0cyNNZXJjaGFudEluZm9cbiAgICAgIG1lcmNoYW50SWQ6IG4gPz8gXCJcIixcbiAgICAgIG1lcmNoYW50TmFtZTogclxuICAgIH0sXG4gICAgdHJhbnNhY3Rpb25JbmZvOiB7XG4gICAgICBjb3VudHJ5Q29kZTogXCJVU1wiLFxuICAgICAgY3VycmVuY3lDb2RlOiB1LFxuICAgICAgdG90YWxQcmljZVN0YXR1czogaT8ucGVuZGluZyA/IFwiRVNUSU1BVEVEXCIgOiBcIkZJTkFMXCIsXG4gICAgICB0b3RhbFByaWNlOiBjLnRvRml4ZWQoMilcbiAgICB9XG4gIH07XG4gIHJldHVybiBpPy5nb29nbGVQYXlQYXltZW50UmVxdWVzdCA/IHR5cGVvZiBpLmdvb2dsZVBheVBheW1lbnRSZXF1ZXN0ID09IFwiZnVuY3Rpb25cIiA/IHsgLi4uZCwgLi4uaS5nb29nbGVQYXlQYXltZW50UmVxdWVzdChkKSB9IDogeyAuLi5kLCAuLi5pLmdvb2dsZVBheVBheW1lbnRSZXF1ZXN0IH0gOiBkO1xufSwgaHIgPSAoKSA9PiBRbih7XG4gIHNjcmlwdElkOiBcIl9fb3BfaW50ZXJuYWxfZ29vZ2xlX3BheV9zZGtcIixcbiAgc3JjOiBcImh0dHBzOi8vcGF5Lmdvb2dsZS5jb20vZ3AvcC9qcy9wYXkuanNcIixcbiAgY2hlY2tMb2FkZWRGbjogKCkgPT4gISF3aW5kb3cuZ29vZ2xlPy5wYXltZW50cz8uYXBpXG59KTtcbmxldCBXdCA9IG51bGw7XG5jb25zdCBnciA9IGFzeW5jIChlKSA9PiBhd2FpdCBTbihlKSA9PT0gXCJwcm9kXCIgPyBcIlBST0RVQ1RJT05cIiA6IFwiVEVTVFwiLCB6ZSA9IGFzeW5jIChlLCB0KSA9PiB7XG4gIGNvbnN0IHIgPSBhd2FpdCBncihlKTtcbiAgcmV0dXJuIFd0ID09PSBudWxsICYmIChXdCA9IG5ldyB3aW5kb3cuZ29vZ2xlLnBheW1lbnRzLmFwaS5QYXltZW50c0NsaWVudCh7XG4gICAgZW52aXJvbm1lbnQ6IHIsXG4gICAgbWVyY2hhbnRJbmZvOiB0Lm1lcmNoYW50SW5mb1xuICB9KSksIFd0O1xufSwgQmUgPSAoZSkgPT4ge1xuICBjb25zdCB0ID0gZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMuZmluZCgocikgPT4gci50eXBlID09PSBcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIik7XG4gIHJldHVybiB0ID8gdW4ucGFyc2UodCkgOiBudWxsO1xufSwgd3IgPSAoZSwgdCkgPT4ge1xuICBjb25zdCByID0geyAuLi5lIH0sIG4gPSB0LnBheW1lbnRNZXRob2REYXRhPy5pbmZvPy5iaWxsaW5nQWRkcmVzcywgYSA9IHQuc2hpcHBpbmdBZGRyZXNzO1xuICBpZiAobikge1xuICAgIGNvbnN0IFtpLCAuLi5zXSA9IG4ubmFtZT8udHJpbSgpPy5zcGxpdCgvXFxzKy8pID8/IFtdLCBsID0gcy5qb2luKFwiIFwiKSB8fCB2b2lkIDA7XG4gICAgcltwLkVNQUlMXSA9IHJbcC5FTUFJTF0gfHwgdC5lbWFpbCB8fCBcIm9wX3VuZmlsbGVkQGdldG9wZW5wYXkuY29tXCIsIHJbcC5MSU5FMV0gPSByW3AuTElORTFdIHx8IG4uYWRkcmVzczEgfHwgXCJcIiwgcltwLkxJTkUyXSA9IHJbcC5MSU5FMl0gfHwgbi5hZGRyZXNzMiB8fCBcIlwiLCByW3AuTElORTNdID0gcltwLkxJTkUzXSB8fCBuLmFkZHJlc3MzIHx8IFwiXCIsIHJbcC5DSVRZXSA9IHJbcC5DSVRZXSB8fCBuLmxvY2FsaXR5IHx8IFwiXCIsIHJbcC5TVEFURV0gPSByW3AuU1RBVEVdIHx8IG4uYWRtaW5pc3RyYXRpdmVBcmVhIHx8IFwiXCIsIHJbcC5DT1VOVFJZXSA9IHJbcC5DT1VOVFJZXSB8fCBuLmNvdW50cnlDb2RlIHx8IFwiVVNcIiwgcltwLlpJUF9DT0RFXSA9IHJbcC5aSVBfQ09ERV0gfHwgbi5wb3N0YWxDb2RlIHx8IFwiMDAwMDBcIjtcbiAgICBjb25zdCBjID0gcltwLkZJUlNUX05BTUVdIHx8IGkgfHwgXCJcIiwgdSA9IHJbcC5MQVNUX05BTUVdIHx8IGwgfHwgXCJcIjtcbiAgICBjIHx8IHUgPyAocltwLkZJUlNUX05BTUVdID0gYywgcltwLkxBU1RfTkFNRV0gPSB1KSA6IChyW3AuRklSU1RfTkFNRV0gPSBcIl9PUF9VTktOT1dOXCIsIHJbcC5MQVNUX05BTUVdID0gXCJcIik7XG4gIH1cbiAgcmV0dXJuIGEgJiYgKHJbcC5TSElQUElOR19MSU5FMV0gPSByW3AuU0hJUFBJTkdfTElORTFdIHx8IGEuYWRkcmVzczEgfHwgXCJcIiwgcltwLlNISVBQSU5HX0xJTkUyXSA9IHJbcC5TSElQUElOR19MSU5FMl0gfHwgYS5hZGRyZXNzMiB8fCBcIlwiLCByW3AuU0hJUFBJTkdfTElORTNdID0gcltwLlNISVBQSU5HX0xJTkUzXSB8fCBhLmFkZHJlc3MzIHx8IFwiXCIsIHJbcC5TSElQUElOR19DSVRZXSA9IHJbcC5TSElQUElOR19DSVRZXSB8fCBhLmxvY2FsaXR5IHx8IFwiXCIsIHJbcC5TSElQUElOR19aSVBfQ09ERV0gPSByW3AuU0hJUFBJTkdfWklQX0NPREVdIHx8IGEucG9zdGFsQ29kZSB8fCBcIjAwMDAwXCIsIHJbcC5TSElQUElOR19TVEFURV0gPSByW3AuU0hJUFBJTkdfU1RBVEVdIHx8IGEuYWRtaW5pc3RyYXRpdmVBcmVhIHx8IFwiXCIsIHJbcC5TSElQUElOR19DT1VOVFJZXSA9IHJbcC5TSElQUElOR19DT1VOVFJZXSB8fCBhLmNvdW50cnlDb2RlIHx8IFwiVVNcIiksIHI7XG59LCB7IGxvZ19fOiB2ZSwgZXJyX186IGhjIH0gPSBrKFwiYXd4LWJhY3NcIiksIGdjID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICBjb25zdCBpID0gRyhyLCBuLmdldC5vblZhbGlkYXRpb25FcnJvciksIHMgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGwgPSBhd2FpdCBOKHMpLCBjID0gYS52ZXJpZmljYXRpb25NZXRob2QgPz8gXCJ0cnVlbGF5ZXJcIjtcbiAgICBsZXQgdSA9IG51bGw7XG4gICAgaWYgKGMgPT09IFwibWljcm9fZGVwb3NpdFwiKSB7XG4gICAgICB2ZShcIk1pY3JvIGRlcG9zaXQgdmVyaWZpY2F0aW9uIHNlbGVjdGVkLCBzaG93aW5nIGZvcm0uLi5cIik7XG4gICAgICB0cnkge1xuICAgICAgICB1ID0gYXdhaXQgR3QoXCJiYWNzX2RpcmVjdF9kZWJpdFwiLCB7XG4gICAgICAgICAgd2lkdGg6IFwiNDUwcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiMzUwcHhcIixcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmxcbiAgICAgICAgfSksIHZlKFwiTWljcm8gZGVwb3NpdCBkYXRhIGNvbGxlY3RlZFwiKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aHJvdyB2ZShcIk1pY3JvIGRlcG9zaXQgZm9ybSBjYW5jZWxsZWRcIiksIG5ldyBFcnJvcihcIk1pY3JvIGRlcG9zaXQgZm9ybSBjYW5jZWxsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGQgPSBhd2FpdCBaKHMsIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdCxcbiAgICAgIC4uLnEoaSwgbC5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICBjdXN0b21lcl9sYW5ndWFnZTogaWUoKVxuICAgIH0pLCBtID0gQmUoZCksIGYgPSBtPy5jb25zZW50X2lkLCB5ID0gbT8uYXZhaWxhYmxlX2JhbmtzO1xuICAgIGxldCBfO1xuICAgIGlmIChjID09PSBcInRydWVsYXllclwiICYmIHkgJiYgeS5sZW5ndGggPj0gMSkge1xuICAgICAgdmUoXCJNdWx0aXBsZSBiYW5rcyBhdmFpbGFibGUsIHNob3dpbmcgYmFuayBzZWxlY3Rvci4uLlwiKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIF8gPSBhd2FpdCBIbih5LCB7XG4gICAgICAgICAgd2lkdGg6IFwiNDUwcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiNTAwcHhcIixcbiAgICAgICAgICB0aXRsZTogXCJTZWxlY3QgYmFua1wiXG4gICAgICAgIH0pLCB2ZShgQmFuayBzZWxlY3RlZDogJHtfLmRpc3BsYXlfbmFtZX1gKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aHJvdyB2ZShcIkJhbmsgc2VsZWN0aW9uIGNhbmNlbGxlZFwiKSwgbmV3IEVycm9yKFwiQmFuayBzZWxlY3Rpb24gY2FuY2VsbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBnID0gQ2UoaSksIHcgPSB7XG4gICAgICB0eXBlOiBcImJhY3NfZGlyZWN0X2RlYml0XCIsXG4gICAgICBiYWNzX2RpcmVjdF9kZWJpdDoge1xuICAgICAgICAvLyBUcnVlTGF5ZXJcbiAgICAgICAgYmFua19uYW1lOiBfPy5iYW5rX25hbWUsXG4gICAgICAgIC8vIE1pY3JvZGVwb3NpdFxuICAgICAgICBvd25lcl9uYW1lOiBqdChpW3AuRklSU1RfTkFNRV0sIGlbcC5MQVNUX05BTUVdKSxcbiAgICAgICAgb3duZXJfZW1haWw6IGlbcC5FTUFJTF0sXG4gICAgICAgIGNvdW50cnlfY29kZTogaVtwLkNPVU5UUlldLFxuICAgICAgICBhY2NvdW50X251bWJlcjogdT8uYWNjb3VudF9udW1iZXIsXG4gICAgICAgIHNvcnRfY29kZTogdT8uc29ydF9jb2RlLFxuICAgICAgICBhZGRyZXNzOiB7IC4uLmcsIHRvd246IGcuY2l0eSwgcG9zdGNvZGU6IGcuemlwX2NvZGUgfVxuICAgICAgfVxuICAgIH0sIGIgPSAoYXdhaXQgeChzLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IGYsXG4gICAgICAgIHZlcmlmaWNhdGlvbl9tZXRob2Q6IGMsXG4gICAgICAgIGRpcmVjdF9kZWJpdF9kYXRhOiB3XG4gICAgICB9XG4gICAgfSkpLnJlcXVpcmVkX3VzZXJfYWN0aW9ucz8uZmluZChcbiAgICAgIChDKSA9PiBDLnR5cGUgPT09IFwiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiXG4gICAgKT8ucmVkaXJlY3RfdXJsO1xuICAgIGlmIChiKSB7XG4gICAgICB2ZShcIkJBQ1MgdmVyaWZpY2F0aW9uIHJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIik7XG4gICAgICBjb25zdCB7IHN0YXR1czogQyB9ID0gYXdhaXQgbGUoe1xuICAgICAgICB1cmw6IGIsXG4gICAgICAgIGJhc2VVcmw6IGUuYmFzZVVybCxcbiAgICAgICAgZnJhbWVXaWR0aDogXCI1MDBweFwiLFxuICAgICAgICBmcmFtZUhlaWdodDogXCI3MDBweFwiLFxuICAgICAgICBmcmFtZVRpdGxlOiBcIkJBQ1MgdmVyaWZpY2F0aW9uXCJcbiAgICAgIH0pO1xuICAgICAgaWYgKHZlKGDilbAgQkFDUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7Q31dYCksIEMgPT09IEYuQ0FOQ0VMTEVEKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCQUNTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gICAgICBpZiAoQyA9PT0gRi5GQUlMVVJFKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCQUNTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IFMgPSBhd2FpdCB4KHMsIHtcbiAgICAgIHNlY3VyZV90b2tlbjogbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogZlxuICAgICAgfVxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwiYXd4LWJhY3NcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogcyxcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IGksXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IFMsXG4gICAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKEMpIHtcbiAgICAgIHRocm93IGhjKFwiQkFDUyBwYXltZW50IGVycm9yXCIsIEMpLCB2KFwiY2hlY2tvdXRfZXJyb3JcIiwge1xuICAgICAgICBlcnJvcjogQ1xuICAgICAgfSksIG5ldyBFcnJvcihDPy5tZXNzYWdlID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICB9XG4gIH1cbiksIHsgbG9nX186IEtlLCBlcnJfXzogd2MgfSA9IGsoXCJhd3gtZWZ0XCIpLCB2YyA9IFYoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgIGN1c3RvbVBhcmFtczogYVxuICB9KSA9PiB7XG4gICAgY29uc3QgaSA9IEcociwgbi5nZXQub25WYWxpZGF0aW9uRXJyb3IpLCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBsID0gYXdhaXQgTihzKSwgYyA9IGEudmVyaWZpY2F0aW9uTWV0aG9kID8/IFwicGxhaWRcIjtcbiAgICBsZXQgdSA9IG51bGw7XG4gICAgaWYgKGMgPT09IFwibWljcm9fZGVwb3NpdFwiKSB7XG4gICAgICBLZShcIk1pY3JvIGRlcG9zaXQgdmVyaWZpY2F0aW9uIHNlbGVjdGVkLCBzaG93aW5nIGZvcm0uLi5cIik7XG4gICAgICB0cnkge1xuICAgICAgICB1ID0gYXdhaXQgR3QoXCJlZnRfZGlyZWN0X2RlYml0XCIsIHtcbiAgICAgICAgICB3aWR0aDogXCI0NTBweFwiLFxuICAgICAgICAgIGhlaWdodDogXCI0NTBweFwiLFxuICAgICAgICAgIGJhc2VVcmw6IGUuYmFzZVVybFxuICAgICAgICB9KSwgS2UoXCJNaWNybyBkZXBvc2l0IGRhdGEgY29sbGVjdGVkXCIpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRocm93IEtlKFwiTWljcm8gZGVwb3NpdCBmb3JtIGNhbmNlbGxlZFwiKSwgbmV3IEVycm9yKFwiTWljcm8gZGVwb3NpdCBmb3JtIGNhbmNlbGxlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZCA9IGF3YWl0IFoocywge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB0LFxuICAgICAgLi4ucShpLCBsLmNoZWNrb3V0X3NldHRpbmdzKSxcbiAgICAgIGN1c3RvbWVyX2xhbmd1YWdlOiBpZSgpXG4gICAgfSksIGYgPSBCZShkKT8uY29uc2VudF9pZCwgeSA9IHtcbiAgICAgIHR5cGU6IFwiZWZ0X2RpcmVjdF9kZWJpdFwiLFxuICAgICAgZWZ0X2RpcmVjdF9kZWJpdDoge1xuICAgICAgICAvLyBQbGFpZFxuICAgICAgICBidXNpbmVzc19hY2NvdW50OiBhLmlzQnVzaW5lc3NBY2NvdW50ID8/ICExLFxuICAgICAgICBvd25lcl9uYW1lOiBqdChpW3AuRklSU1RfTkFNRV0sIGlbcC5MQVNUX05BTUVdKSxcbiAgICAgICAgb3duZXJfZW1haWw6IGlbcC5FTUFJTF0sXG4gICAgICAgIC8vIE1pY3JvZGVwb3NpdFxuICAgICAgICBpbnN0aXR1dGlvbl9udW1iZXI6IHU/Lmluc3RpdHV0aW9uX251bWJlcixcbiAgICAgICAgdHJhbnNpdF9udW1iZXI6IHU/LnRyYW5zaXRfbnVtYmVyLFxuICAgICAgICBhY2NvdW50X251bWJlcjogdT8uYWNjb3VudF9udW1iZXJcbiAgICAgICAgLy8gbWFuZGF0ZV92ZXJzaW9uOiB1bmRlZmluZWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgfVxuICAgIH0sIGcgPSAoYXdhaXQgeChzLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IGYsXG4gICAgICAgIHZlcmlmaWNhdGlvbl9tZXRob2Q6IGMsXG4gICAgICAgIGRpcmVjdF9kZWJpdF9kYXRhOiB5XG4gICAgICB9XG4gICAgfSkpLnJlcXVpcmVkX3VzZXJfYWN0aW9ucz8uZmluZChcbiAgICAgIChoKSA9PiBoLnR5cGUgPT09IFwiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiXG4gICAgKT8ucmVkaXJlY3RfdXJsO1xuICAgIGlmIChnKSB7XG4gICAgICBLZShcIkVGVCB2ZXJpZmljYXRpb24gcmVxdWlyZWQsIHN0YXJ0aW5nIHZlcmlmaWNhdGlvbi4uLlwiKTtcbiAgICAgIGNvbnN0IHsgc3RhdHVzOiBoIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgIHVybDogZyxcbiAgICAgICAgYmFzZVVybDogZS5iYXNlVXJsLFxuICAgICAgICBmcmFtZVdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICAgIGZyYW1lSGVpZ2h0OiBcIjcwMHB4XCIsXG4gICAgICAgIGZyYW1lVGl0bGU6IFwiRUZUIHZlcmlmaWNhdGlvblwiXG4gICAgICB9KTtcbiAgICAgIGlmIChLZShg4pWwIEVGVCB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7aH1dYCksIGggPT09IEYuQ0FOQ0VMTEVEKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFRlQgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgIGlmIChoID09PSBGLkZBSUxVUkUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVGVCB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCB3ID0gYXdhaXQgeChzLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IGZcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHJlKHtcbiAgICAgICAgbG9nUHJlZml4OiBcImF3eC1lZnRcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogcyxcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IGksXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IHcsXG4gICAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgIHRocm93IHdjKFwiRUZUIHBheW1lbnQgZXJyb3JcIiwgaCksIHYoXCJjaGVja291dF9lcnJvclwiLCB7XG4gICAgICAgIGVycm9yOiBoXG4gICAgICB9KSwgbmV3IEVycm9yKGg/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogYmUsIGVycl9fOiBiYyB9ID0gayhcImF3eC1zZXBhXCIpLCBQYyA9IFYoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgIGN1c3RvbVBhcmFtczogYVxuICB9KSA9PiB7XG4gICAgY29uc3QgaSA9IEcociwgbi5nZXQub25WYWxpZGF0aW9uRXJyb3IpLCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBsID0gYXdhaXQgTihzKSwgYyA9IGEudmVyaWZpY2F0aW9uTWV0aG9kID8/IFwidHJ1ZWxheWVyXCI7XG4gICAgbGV0IHUgPSBudWxsO1xuICAgIGlmIChjID09PSBcIm1pY3JvX2RlcG9zaXRcIikge1xuICAgICAgYmUoXCJNaWNybyBkZXBvc2l0IHZlcmlmaWNhdGlvbiBzZWxlY3RlZCwgc2hvd2luZyBmb3JtLi4uXCIpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdSA9IGF3YWl0IEd0KFwic2VwYV9kaXJlY3RfZGViaXRcIiwge1xuICAgICAgICAgIHdpZHRoOiBcIjQ1MHB4XCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjMwMHB4XCIsXG4gICAgICAgICAgYmFzZVVybDogZS5iYXNlVXJsXG4gICAgICAgIH0pLCBiZShcIk1pY3JvIGRlcG9zaXQgZGF0YSBjb2xsZWN0ZWRcIik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhyb3cgYmUoXCJNaWNybyBkZXBvc2l0IGZvcm0gY2FuY2VsbGVkXCIpLCBuZXcgRXJyb3IoXCJNaWNybyBkZXBvc2l0IGZvcm0gY2FuY2VsbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkID0gYXdhaXQgWihzLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICAuLi5xKGksIGwuY2hlY2tvdXRfc2V0dGluZ3MpLFxuICAgICAgY3VzdG9tZXJfbGFuZ3VhZ2U6IGllKClcbiAgICB9KSwgbSA9IEJlKGQpLCBmID0gbT8uY29uc2VudF9pZCwgeSA9IG0/LmF2YWlsYWJsZV9iYW5rcztcbiAgICBsZXQgXztcbiAgICBpZiAoYyA9PT0gXCJ0cnVlbGF5ZXJcIiAmJiB5ICYmIHkubGVuZ3RoID49IDEpIHtcbiAgICAgIGJlKFwiTXVsdGlwbGUgYmFua3MgYXZhaWxhYmxlLCBzaG93aW5nIGJhbmsgc2VsZWN0b3IuLi5cIik7XG4gICAgICB0cnkge1xuICAgICAgICBfID0gYXdhaXQgSG4oeSwge1xuICAgICAgICAgIHdpZHRoOiBcIjQ1MHB4XCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjUwMHB4XCIsXG4gICAgICAgICAgdGl0bGU6IFwiU2VsZWN0IGJhbmtcIlxuICAgICAgICB9KSwgYmUoYEJhbmsgc2VsZWN0ZWQ6ICR7Xy5kaXNwbGF5X25hbWV9YCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhyb3cgYmUoXCJCYW5rIHNlbGVjdGlvbiBjYW5jZWxsZWRcIiksIG5ldyBFcnJvcihcIkJhbmsgc2VsZWN0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdyA9IChhd2FpdCB4KHMsIHtcbiAgICAgIHNlY3VyZV90b2tlbjogbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogZixcbiAgICAgICAgdmVyaWZpY2F0aW9uX21ldGhvZDogYyxcbiAgICAgICAgZGlyZWN0X2RlYml0X2RhdGE6IHtcbiAgICAgICAgICB0eXBlOiBcInNlcGFfZGlyZWN0X2RlYml0XCIsXG4gICAgICAgICAgc2VwYV9kaXJlY3RfZGViaXQ6IHtcbiAgICAgICAgICAgIC8vIHRydWVsYXllclxuICAgICAgICAgICAgYmFua19uYW1lOiBfPy5iYW5rX25hbWUsXG4gICAgICAgICAgICBjb3VudHJ5X2NvZGU6IGlbcC5DT1VOVFJZXSxcbiAgICAgICAgICAgIC8vIG1pY3JvZGVwb3NpdFxuICAgICAgICAgICAgb3duZXJfbmFtZToganQoaVtwLkZJUlNUX05BTUVdLCBpW3AuTEFTVF9OQU1FXSksXG4gICAgICAgICAgICBvd25lcl9lbWFpbDogaVtwLkVNQUlMXSxcbiAgICAgICAgICAgIGliYW46IHU/LmliYW5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSkucmVxdWlyZWRfdXNlcl9hY3Rpb25zPy5maW5kKFxuICAgICAgKGIpID0+IGIudHlwZSA9PT0gXCJhaXJ3YWxsZXhfcGF5bWVudF9jb25zZW50XCJcbiAgICApPy5yZWRpcmVjdF91cmw7XG4gICAgaWYgKHcpIHtcbiAgICAgIGJlKFwiU0VQQSB2ZXJpZmljYXRpb24gcmVxdWlyZWQsIHN0YXJ0aW5nIHZlcmlmaWNhdGlvbi4uLlwiKTtcbiAgICAgIGNvbnN0IHsgc3RhdHVzOiBiIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgIHVybDogdyxcbiAgICAgICAgYmFzZVVybDogZS5iYXNlVXJsLFxuICAgICAgICBmcmFtZVdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICAgIGZyYW1lSGVpZ2h0OiBcIjcwMHB4XCIsXG4gICAgICAgIGZyYW1lVGl0bGU6IFwiU0VQQSB2ZXJpZmljYXRpb25cIlxuICAgICAgfSk7XG4gICAgICBpZiAoYmUoYOKVsCBTRVBBIHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQgW1N0YXR1czogJHtifV1gKSwgYiA9PT0gRi5DQU5DRUxMRUQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNFUEEgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgIGlmIChiID09PSBGLkZBSUxVUkUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNFUEEgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgaCA9IGF3YWl0IHgocywge1xuICAgICAgc2VjdXJlX3Rva2VuOiBsLnRva2VuLFxuICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQucHJvdmlkZXIsXG4gICAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBmXG4gICAgICB9XG4gICAgfSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiByZSh7XG4gICAgICAgIGxvZ1ByZWZpeDogXCJhd3gtc2VwYVwiLFxuICAgICAgICBhbnlDZGVDb25uZWN0aW9uOiBzLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogaSxcbiAgICAgICAgY29uZmlybVJlc3VsdDogaCxcbiAgICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoYikge1xuICAgICAgdGhyb3cgYmMoXCJTRVBBIHBheW1lbnQgZXJyb3JcIiwgYiksIHYoXCJjaGVja291dF9lcnJvclwiLCB7XG4gICAgICAgIGVycm9yOiBiXG4gICAgICB9KSwgbmV3IEVycm9yKGI/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogRWMsIGVycl9fOiB2ciB9ID0gayhcImFpcndhbGxleC1jY1wiKSwgQ2MgPSB6JDEub2JqZWN0KHtcbiAgXCJvcC1haXJ3YWxsZXgtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWlyd2FsbGV4LWluaXRpYWwtaW50ZW50LWlkXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1haXJ3YWxsZXgtY29uc2VudC1pZFwiOiB6JDEuc3RyaW5nKClcbn0pLCBBYyA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSBDYy5zYWZlUGFyc2UoZSk7XG4gIGlmICghdC5zdWNjZXNzKSB7XG4gICAgY29uc3QgciA9IFwiVW5hYmxlIHRvIHByb2Nlc3MgeW91ciBjcmVkaXQgY2FyZC4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgbiA9IGBBaXJ3YWxsZXggM0RTIGlzIHJlcXVpcmVkIGJ1dCBoZWFkZXJzIGFyZSBtYWxmb3JtZWQuIEdvdDogJHtKU09OLnN0cmluZ2lmeShlKX1gO1xuICAgIHRocm93IHZyKG4pLCBuZXcgRXJyb3Iocik7XG4gIH1cbiAgcmV0dXJuIHQuZGF0YTtcbn0sIFhuID0gKGUpID0+IGU/LltcIm9wLWFpcndhbGxleC0zZHMtdXJsXCJdICE9PSB2b2lkIDAsIFNjID0gKGUpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB0ID0gbmV3IFVSTChlID8/IFwiXCIpLnNlYXJjaFBhcmFtcy5nZXQoXCJwYXltZW50X2ludGVudF9pZFwiKTtcbiAgICBpZiAoIXQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBpbnRlbnQgSUQgZm91bmQgaW4gQWlyd2FsbGV4IDNEUyB2ZXJpZmljYXRpb24gcmVzdWx0XCIpO1xuICAgIHJldHVybiBFYyhgQWlyd2FsbGV4IDNEUyB2ZXJpZmljYXRpb24gc3VjY2Vzcy4gW0ludGVudCBJRDogJHt0fV1gKSwgdDtcbiAgfSBjYXRjaCAodCkge1xuICAgIGNvbnN0IHIgPSBcIkVycm9yIHZlcmlmeWluZyBBaXJ3YWxsZXggM0RTIHZlcmlmaWNhdGlvbiByZXN1bHQuXCI7XG4gICAgdGhyb3cgdnIociwgYFJlc3VsdGluZyBVUkw6ICR7ZX0uXG5FcnJvcjogJHthZSh0KX1gKSwgbmV3IEVycm9yKHIpO1xuICB9XG59LCBlbyA9IGFzeW5jIChlLCB0KSA9PiB7XG4gIGNvbnN0IHIgPSBBYyh0KSwgbiA9IGF3YWl0IFluKHsgdXJsOiByW1wib3AtYWlyd2FsbGV4LTNkcy11cmxcIl0sIGJhc2VVcmw6IGUgfSksIGEgPSBTYyhuLmhyZWYgPz8gXCJcIiksIGkgPSByW1wib3AtYWlyd2FsbGV4LWluaXRpYWwtaW50ZW50LWlkXCJdO1xuICBpZiAoaSAhPT0gYSkge1xuICAgIGNvbnN0IGwgPSBcIlVuYWJsZSB0byBwcm9jZXNzIHlvdXIgY3JlZGl0IGNhcmQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuXCIsIGMgPSBgSW50ZW50IElEIGZyb20gY2FsbGJhY2sgKCR7YX0pIGRvZXMgbm90IG1hdGNoIHRoZSBpbml0aWFsIGludGVudCBJRCAoJHtpfSkuYDtcbiAgICB0aHJvdyB2cihjKSwgbmV3IEVycm9yKGwpO1xuICB9XG4gIHJldHVybiB7XG4gICAgZXhpc3RpbmdfY2M6IHtcbiAgICAgIGluaXRpYWxfaW50ZW50X2lkOiBhLFxuICAgICAgY29uc2VudF9pZDogcltcIm9wLWFpcndhbGxleC1jb25zZW50LWlkXCJdXG4gICAgfVxuICB9O1xufSwgdG8gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSksIHJvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImdvb2dsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImFpcndhbGxleFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pLCBiciA9ICgpID0+IFFuKHtcbiAgc2NyaXB0SWQ6IFwiX19vcF9pbnRlcm5hbF9hcHBsZV9wYXlfc2RrXCIsXG4gIHNyYzogXCJodHRwczovL2FwcGxlcGF5LmNkbi1hcHBsZS5jb20vanNhcGkvMS5sYXRlc3QvYXBwbGUtcGF5LXNkay5qc1wiLFxuICBjaGVja0xvYWRlZEZuOiAoKSA9PiAhIXdpbmRvdy5BcHBsZVBheVNlc3Npb25cbn0pLCBQciA9IChlLCB0KSA9PiB7XG4gIGNvbnN0IHIgPSB0LnRva2VuLnBheW1lbnRNZXRob2QuYmlsbGluZ0NvbnRhY3QsIG4gPSB0LmJpbGxpbmdDb250YWN0LCBhID0gdC5zaGlwcGluZ0NvbnRhY3QsIGkgPSB7IC4uLmUgfTtcbiAgaWYgKHIgfHwgbiB8fCBhKSB7XG4gICAgaVtwLkVNQUlMXSA9IGlbcC5FTUFJTF0gfHwgcj8uZW1haWxBZGRyZXNzIHx8IG4/LmVtYWlsQWRkcmVzcyB8fCBhPy5lbWFpbEFkZHJlc3MgfHwgXCJvcF91bmZpbGxlZEBlbWFpbC5jb21cIiwgaVtwLkNPVU5UUlldID0gaVtwLkNPVU5UUlldIHx8IHI/LmNvdW50cnlDb2RlIHx8IG4/LmNvdW50cnlDb2RlIHx8IGE/LmNvdW50cnlDb2RlIHx8IFwiVVNcIiwgaVtwLlpJUF9DT0RFXSA9IGlbcC5aSVBfQ09ERV0gfHwgcj8ucG9zdGFsQ29kZSB8fCBuPy5wb3N0YWxDb2RlIHx8IGE/LnBvc3RhbENvZGUgfHwgXCIwMDAwMFwiO1xuICAgIGNvbnN0IHMgPSBpW3AuRklSU1RfTkFNRV0gfHwgcj8uZ2l2ZW5OYW1lIHx8IG4/LmdpdmVuTmFtZSB8fCBhPy5naXZlbk5hbWUgfHwgXCJcIiwgbCA9IGlbcC5MQVNUX05BTUVdIHx8IHI/LmZhbWlseU5hbWUgfHwgbj8uZmFtaWx5TmFtZSB8fCBhPy5mYW1pbHlOYW1lIHx8IFwiXCI7XG4gICAgcyB8fCBsID8gKGlbcC5GSVJTVF9OQU1FXSA9IHMsIGlbcC5MQVNUX05BTUVdID0gbCkgOiAoaVtwLkZJUlNUX05BTUVdID0gXCJfT1BfVU5LTk9XTlwiLCBpW3AuTEFTVF9OQU1FXSA9IFwiXCIpO1xuICB9XG4gIHJldHVybiBpO1xufTtcbnokMS5vYmplY3Qoe1xuICBkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBtZXNzYWdlSGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gICAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLmFueSgpKSxcbiAgICBtZXNzYWdlVHlwZTogeiQxLnN0cmluZygpLFxuICAgIG1lc3NhZ2VCb2R5OiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKVxuICB9KSxcbiAgb3JpZ2luOiB6JDEubGl0ZXJhbChcImh0dHBzOi8vYXBwbGVwYXkuY2RuLWFwcGxlLmNvbVwiKVxufSk7XG5jb25zdCBrYyA9ICh7XG4gIHRvdGFsOiBlLFxuICBwcmVmaWxsOiB0XG59KSA9PiB7XG4gIGlmICh0Lm1vZGUgPT09IFwic2V0dXBcIilcbiAgICByZXR1cm4ge1xuICAgICAgcGF5bWVudERlc2NyaXB0aW9uOiBcIlNldHVwIHJlY3VycmluZyBwYXltZW50XCIsXG4gICAgICByZWd1bGFyQmlsbGluZzoge1xuICAgICAgICBhbW91bnQ6IGUuYW1vdW50LFxuICAgICAgICBsYWJlbDogXCJTZXR1cCByZWN1cnJpbmcgcGF5bWVudFwiLFxuICAgICAgICBwYXltZW50VGltaW5nOiBcInJlY3VycmluZ1wiLFxuICAgICAgICB0eXBlOiBcImZpbmFsXCJcbiAgICAgIH0sXG4gICAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBiaWxsaW5nIHBvcnRhbCB1cmxcbiAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3Bhc3NraXQvcGtyZWN1cnJpbmdwYXltZW50cmVxdWVzdC9tYW5hZ2VtZW50dXJsI0Rpc2N1c3Npb25cbiAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgdXNlZCB3aGVuIHVzZXIgcmVtb3ZlIGEgY2FyZCBmcm9tIHRoZWlyIEFwcGxlUGF5IHdhbGxldC5cbiAgICAgIC8vIEN1cnJlbnR5IHNldCB0byBjaGVja291dCBzZXNzaW9uIHVybCB0byBzYXRpc2Z5IEFwcGxlUGF5IHR5cGVzXG4gICAgICBtYW5hZ2VtZW50VVJMOiBuZXcgVVJMKGAvcGF5LyR7dC50b2tlbn1gLCAkbikudG9TdHJpbmcoKVxuICAgIH07XG4gIGNvbnN0IHIgPSB0LmxpbmVfaXRlbXM/LlswXTtcbiAgaWYgKHIpXG4gICAgcmV0dXJuIHtcbiAgICAgIHBheW1lbnREZXNjcmlwdGlvbjogcj8uZGVzY3JpcHRpb24gPz8gXCJcIixcbiAgICAgIHJlZ3VsYXJCaWxsaW5nOiB7XG4gICAgICAgIGFtb3VudDogZS5hbW91bnQsXG4gICAgICAgIGxhYmVsOiByPy5kZXNjcmlwdGlvbiA/PyBcIlwiLFxuICAgICAgICByZWN1cnJpbmdQYXltZW50SW50ZXJ2YWxVbml0OiByPy5iaWxsaW5nX2ludGVydmFsLFxuICAgICAgICByZWN1cnJpbmdQYXltZW50SW50ZXJ2YWxDb3VudDogcj8uYmlsbGluZ19pbnRlcnZhbF9jb3VudCA/PyB2b2lkIDAsXG4gICAgICAgIHBheW1lbnRUaW1pbmc6IFwicmVjdXJyaW5nXCIsXG4gICAgICAgIHR5cGU6IFwiZmluYWxcIlxuICAgICAgfSxcbiAgICAgIG1hbmFnZW1lbnRVUkw6IGBodHRwczovL2NkZS5nZXRvcGVucGF5LmNvbS9wYXkvJHt0LnRva2VufWBcbiAgICB9O1xufSwgcXQgPSAoe1xuICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBlLFxuICBpbml0aWFsUHJldmlldzogdCxcbiAgcHJlZmlsbDogcixcbiAgZGVmYXVsdExhYmVsOiBuID0gXCJUb3RhbFwiXG59KSA9PiB7XG4gIGNvbnN0IGEgPSAoZT8uYW1vdW50Py5jdXJyZW5jeSA/PyByPy5jdXJyZW5jeSA/PyB0LmN1cnJlbmN5KS50b1VwcGVyQ2FzZSgpLCBzID0gKChlPy5hbW91bnQ/LmFtb3VudEF0b20gPz8gdD8uYW1vdW50QXRvbSA/PyAwKSAvIDEwMCkudG9GaXhlZCgyKTtcbiAgcmV0dXJuIHtcbiAgICBjdXJyZW5jeUNvZGU6IGEsXG4gICAgdG90YWw6IHtcbiAgICAgIGxhYmVsOiBlPy5sYWJlbCA/PyBuID8/IFwiVG90YWxcIixcbiAgICAgIHR5cGU6IGU/LnBlbmRpbmcgPyBcInBlbmRpbmdcIiA6IFwiZmluYWxcIixcbiAgICAgIGFtb3VudDogc1xuICAgIH1cbiAgfTtcbn0sIEVyID0gKHtcbiAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogZSxcbiAgaW5pdGlhbFByZXZpZXc6IHQsXG4gIHByZWZpbGw6IHIsXG4gIGRlZmF1bHRMYWJlbDogblxufSkgPT4ge1xuICBjb25zdCB7IGN1cnJlbmN5Q29kZTogYSwgdG90YWw6IGkgfSA9IHF0KHtcbiAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBlLFxuICAgIGluaXRpYWxQcmV2aWV3OiB0LFxuICAgIHByZWZpbGw6IHIsXG4gICAgZGVmYXVsdExhYmVsOiBuXG4gIH0pO1xuICBsZXQgcyA9IHtcbiAgICBjb3VudHJ5Q29kZTogXCJVU1wiLFxuICAgIGN1cnJlbmN5Q29kZTogYSxcbiAgICByZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzOiBbXCJlbWFpbFwiLCBcInBvc3RhbEFkZHJlc3NcIiwgXCJuYW1lXCJdLFxuICAgIHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOiBbXG4gICAgICBcImVtYWlsXCIsXG4gICAgICAuLi5yLmNoZWNrb3V0X3NldHRpbmdzLnJlcXVpcmVfZnVsbF9zaGlwcGluZ19hZGRyZXNzID8gW1wicG9zdGFsQWRkcmVzc1wiXSA6IFtdXG4gICAgXSxcbiAgICBzdXBwb3J0ZWROZXR3b3JrczogW1widmlzYVwiLCBcIm1hc3RlckNhcmRcIiwgXCJhbWV4XCIsIFwiZGlzY292ZXJcIiwgXCJqY2JcIl0sXG4gICAgbWVyY2hhbnRDYXBhYmlsaXRpZXM6IFtcInN1cHBvcnRzM0RTXCIsIFwic3VwcG9ydHNDcmVkaXRcIiwgXCJzdXBwb3J0c0RlYml0XCJdLFxuICAgIHRvdGFsOiBpXG4gIH07XG4gIHJldHVybiByLmxpbmVfaXRlbXMuZXZlcnkoKGMpID0+IGMuYmlsbGluZ19pbnRlcnZhbCAmJiBjLmJpbGxpbmdfaW50ZXJ2YWxfY291bnQpICYmIChzLnJlY3VycmluZ1BheW1lbnRSZXF1ZXN0ID0ga2Moe1xuICAgIHRvdGFsOiBpLFxuICAgIHByZWZpbGw6IHJcbiAgfSkpLCBlPy5hcHBsZVBheVBheW1lbnRSZXF1ZXN0ICYmICh0eXBlb2YgZS5hcHBsZVBheVBheW1lbnRSZXF1ZXN0ID09IFwiZnVuY3Rpb25cIiA/IHMgPSB7XG4gICAgLi4ucyxcbiAgICAuLi5lLmFwcGxlUGF5UGF5bWVudFJlcXVlc3QocylcbiAgfSA6IHMgPSB7IC4uLnMsIC4uLmUuYXBwbGVQYXlQYXltZW50UmVxdWVzdCB9KSwgcztcbn0sIEljID0geiQxLmVudW0oW1widGVzdFwiLCBcImxpdmVcIiwgXCJsaXZlLXVzXCIsIFwibGl2ZS1pblwiLCBcImxpdmUtYXBzZVwiLCBcImxpdmUtYXVcIl0pLCBSYyA9IHokMS5lbnVtKFtcbiAgXCJhclwiLFxuICBcImJnLUJHXCIsXG4gIFwiY2EtRVNcIixcbiAgXCJjcy1DWlwiLFxuICBcImRhLURLXCIsXG4gIFwiZGUtREVcIixcbiAgXCJlbC1HUlwiLFxuICBcImVuLVVTXCIsXG4gIFwiZXMtRVNcIixcbiAgXCJldC1FRVwiLFxuICBcImZpLUZJXCIsXG4gIFwiZnItRlJcIixcbiAgXCJoci1IUlwiLFxuICBcImh1LUhVXCIsXG4gIFwiaXMtSVNcIixcbiAgXCJpdC1JVFwiLFxuICBcImphLUpQXCIsXG4gIFwia28tS1JcIixcbiAgXCJsdC1MVFwiLFxuICBcImx2LUxWXCIsXG4gIFwibmwtTkxcIixcbiAgXCJuby1OT1wiLFxuICBcInBsLVBMXCIsXG4gIFwicHQtQlJcIixcbiAgXCJwdC1QVFwiLFxuICBcInJvLVJPXCIsXG4gIFwicnUtUlVcIixcbiAgXCJzay1TS1wiLFxuICBcInNsLVNJXCIsXG4gIFwic3YtU0VcIixcbiAgXCJ6aC1DTlwiLFxuICBcInpoLVRXXCJcbl0pLCB7IGxvZ19fOiAkZSwgZXJyX186IGl0IH0gPSBrKFwiYWR5ZW4tY2NcIiksIEZjID0geiQxLm9iamVjdCh7XG4gIFwib3AtYWNjb3VudC1pZFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWR5ZW4tY2xpZW50LWtleVwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWR5ZW4tZW52aXJvbm1lbnRcIjogSWMsXG4gIFwib3AtYWR5ZW4tYWN0aW9uXCI6IHokMS5zdHJpbmcoKVxufSksIG5vID0gXCJVbmFibGUgdG8gcHJvY2VzcyB5b3VyIGNyZWRpdCBjYXJkLiBQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlLlwiLCBUYyA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSBGYy5zYWZlUGFyc2UoZSk7XG4gIGlmICghdC5zdWNjZXNzKVxuICAgIHRocm93IGl0KGBBZHllbiAzRFMgaXMgcmVxdWlyZWQgYnV0IGhlYWRlcnMgYXJlIG1hbGZvcm1lZC4gR290OiAke0pTT04uc3RyaW5naWZ5KGUpfWApLCBuZXcgRXJyb3Iobm8pO1xuICByZXR1cm4gdC5kYXRhO1xufSwgTmMgPSAoZSkgPT4gSlNPTi5wYXJzZShlKSwgJHIgPSAoKSA9PiBcIkFkeWVuV2ViXCIgaW4gd2luZG93ICYmIFwiQWR5ZW5DaGVja291dFwiIGluIHdpbmRvdy5BZHllbldlYiwgTGMgPSBhc3luYyAoKSA9PiB7XG4gICRlKFwiV2FpdGluZyBmb3IgQWR5ZW4gU0RLIHRvIGxvYWQuLi5cIik7XG4gIGZvciAobGV0IGUgPSAwOyBlIDwgMTA7IGUrKylcbiAgICAkcigpIHx8IGF3YWl0IER0KDUwMCk7XG4gIGlmICghJHIoKSlcbiAgICB0aHJvdyBpdChcIkFkeWVuIFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCBuZXcgRXJyb3Iobm8pO1xuICByZXR1cm4gJGUoXCJBZHllbiBTREsgbG9hZGVkIHN1Y2Nlc3NmdWxseVwiKSwgd2luZG93LkFkeWVuV2ViLkFkeWVuQ2hlY2tvdXQ7XG59LCBNYyA9IChlKSA9PiB7XG4gIGNvbnN0IHsgaGVhZGVyczogdCwgbG9jYWxlOiByLCBjb3VudHJ5Q29kZTogbiwgY29tcG9uZW50OiBhLCBob3N0OiBpLCBjYW5jZWxCdXR0b246IHMgfSA9IGUsIGwgPSBOYyh0W1wib3AtYWR5ZW4tYWN0aW9uXCJdKTtcbiAgcmV0dXJuICRlKGBSdW5uaW5nIEFkeWVuIDNEUyBmbG93IGZvciBhY3Rpb24gdHlwZTogJHtsLnR5cGV9YCksIG5ldyBQcm9taXNlKChjKSA9PiB7XG4gICAgY29uc3QgdSA9ICgpID0+IHtcbiAgICAgICRlKFwiQ2xlYW5pbmcgdXAgQWR5ZW4gM0RTIGZsb3dcIiksIHMucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGYpLCBpLnJlbW92ZSgpO1xuICAgIH0sIGQgPSAoXykgPT4ge1xuICAgICAgaXQoXCJBdXRoZW50aWNhdGlvbiBmYWlsZWQuIFJlc3VsdDpcIiwgXyksIGMoeyBzdGF0dXM6IEYuRkFJTFVSRSwgY2xlYW51cDogdSB9KTtcbiAgICB9LCBtID0gKF8pID0+IHtcbiAgICAgIGl0KFwiQWR5ZW4gZXJyb3I6XCIsIF8pLCBjKHsgc3RhdHVzOiBGLkZBSUxVUkUsIGNsZWFudXA6IHUgfSk7XG4gICAgfSwgZiA9ICgpID0+IHtcbiAgICAgIGMoeyBzdGF0dXM6IEYuQ0FOQ0VMTEVELCBjbGVhbnVwOiB1IH0pO1xuICAgIH07XG4gICAgcy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZik7XG4gICAgY29uc3QgeSA9IChfLCBnLCB3KSA9PiB7XG4gICAgICBpLnJlbW92ZSgpLCBjKHsgc3RhdHVzOiBGLlNVQ0NFU1MsIGFkZGl0aW9uYWxEZXRhaWxzOiBfLCBjbGVhbnVwOiB1IH0pO1xuICAgIH07XG4gICAgTGMoKS50aGVuKFxuICAgICAgKF8pID0+IF8oe1xuICAgICAgICBjbGllbnRLZXk6IHRbXCJvcC1hZHllbi1jbGllbnQta2V5XCJdLFxuICAgICAgICBlbnZpcm9ubWVudDogdFtcIm9wLWFkeWVuLWVudmlyb25tZW50XCJdLFxuICAgICAgICBsb2NhbGU6IHIsXG4gICAgICAgIGNvdW50cnlDb2RlOiBuLFxuICAgICAgICBvbkFkZGl0aW9uYWxEZXRhaWxzOiB5LFxuICAgICAgICBvblBheW1lbnRGYWlsZWQ6IGQsXG4gICAgICAgIG9uRXJyb3I6IG1cbiAgICAgIH0pXG4gICAgKS50aGVuKChfKSA9PiB7XG4gICAgICBfLmNyZWF0ZUZyb21BY3Rpb24obCwgeyBjaGFsbGVuZ2VXaW5kb3dTaXplOiBcIjAzXCIgfSkubW91bnQoYSk7XG4gICAgfSk7XG4gIH0pO1xufSwgeGMgPSAoZSkgPT4ge1xuICBjb25zdCB0ID0gbmF2aWdhdG9yLmxhbmd1YWdlcyAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aCA/IG5hdmlnYXRvci5sYW5ndWFnZXNbMF0gOiBuYXZpZ2F0b3IubGFuZ3VhZ2UsIHIgPSBlID8/IHQsIG4gPSBSYy5zYWZlUGFyc2Uocik7XG4gIHJldHVybiBuLnN1Y2Nlc3MgPyAoJGUoYFJlc29sdmVkIGxvY2FsZTogJHtuLmRhdGF9YCksIG4uZGF0YSkgOiAoaXQoYFJlc29sdmVkIGludmFsaWQgbG9jYWxlOiAke3J9LiBEZWZhdWx0aW5nIHRvIGVuLVVTLmApLCBcImVuLVVTXCIpO1xufSwgb28gPSAoZSkgPT4gZT8uW1wib3AtYWR5ZW4tYWN0aW9uXCJdICE9PSB2b2lkIDAsIGFvID0gYXN5bmMgKGUsIHQsIHIpID0+IHtcbiAgY29uc3QgbiA9IFRjKHQpLCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYS5pZCA9IFwiYWR5ZW4tY29udGFpbmVyXCI7XG4gIGNvbnN0IHsgaG9zdDogaSwgaWZyYW1lOiBzLCBjYW5jZWxCdXR0b246IGwgfSA9ICR0KFwiaHR0cDovL2V4YW1wbGUuY29tXCIpO1xuICBzLnJlcGxhY2VXaXRoKGEpO1xuICBjb25zdCBjID0gYXdhaXQgTWMoe1xuICAgIGhlYWRlcnM6IG4sXG4gICAgbG9jYWxlOiB4YyhyKSxcbiAgICBjb3VudHJ5Q29kZTogZSxcbiAgICBjb21wb25lbnQ6IGEsXG4gICAgaG9zdDogaSxcbiAgICBjYW5jZWxCdXR0b246IGxcbiAgfSk7XG4gIGlmIChjLmNsZWFudXAoKSwgYy5zdGF0dXMgPT09IEYuRkFJTFVSRSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgaWYgKGMuc3RhdHVzID09PSBGLkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKGMuc3RhdHVzID09PSBGLlNVQ0NFU1MpIHtcbiAgICBpZiAoIWMuYWRkaXRpb25hbERldGFpbHMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIHN1Y2NlZWRlZCBidXQgbm8gYWRkaXRpb25hbCBkZXRhaWxzIHdlcmUgcmV0dXJuZWRcIik7XG4gICAgcmV0dXJuICRlKFwiM0RTIHZlcmlmaWNhdGlvbiBzdWNjZWVkZWRcIiksIHtcbiAgICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICAgIGFkZGl0aW9uYWxfZGV0YWlsczogYy5hZGRpdGlvbmFsRGV0YWlscy5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlXG4gICAgY3QoYy5zdGF0dXMpO1xufSwgaW8gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhZHllblwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgc28gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWR5ZW5cIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICBnb29nbGVfcGF5X21lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpXG4gIH0pXG59KSwgeyBsb2dfXzogRGMgfSA9IGsoXCJhd3gtYXBwbGUtcGF5XCIpO1xuYXN5bmMgZnVuY3Rpb24gVWMoZSwgdCkge1xuICB0cnkge1xuICAgIGNvbnN0IGEgPSAoYXdhaXQgVXQodC5jb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdC5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgYXBwbGVfcGF5X3Nlc3Npb246IHtcbiAgICAgICAgICB2YWxpZGF0aW9uX3VybDogZS52YWxpZGF0aW9uVVJMLFxuICAgICAgICAgIGluaXRpYXRpdmVfY29udGV4dDogd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLFxuICAgICAgICAgIHRoZWlyX2FjY291bnRfaWQ6IHQucHJvY2Vzc29yQWNjb3VudC5wcm9jZXNzb3JfYWNjb3VudF9pZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpLm5leHRfYWN0aW9uX21ldGFkYXRhPy5hcHBsZV9wYXlfc2Vzc2lvbjtcbiAgICBpZiAoIWEpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBzZXNzaW9uIGRhdGEgcmVjZWl2ZWQgZnJvbSBwYXltZW50IGZsb3dcIik7XG4gICAgdC5zZXNzaW9uLmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGEpLCB2KFwiYXBwbGVfcGF5X2NvbXBsZXRlX21lcmNoYW50X3ZhbGlkYXRpb25cIiwge1xuICAgICAgLi4uYVxuICAgIH0pO1xuICB9IGNhdGNoIChyKSB7XG4gICAgdGhyb3cgdC5zZXNzaW9uLmFib3J0KCksIHI7XG4gIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIE9jKGUsIHQpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCByID0gZS5wYXltZW50LCBuID0gUHIodC5ub25DZGVGb3JtSW5wdXRzLCByKSwgYSA9IEcoXG4gICAgICBuLFxuICAgICAgdC5mb3JtQ2FsbGJhY2tzLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIHQuZGVmYXVsdEZpZWxkVmFsdWVzXG4gICAgKTtcbiAgICB2KFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgIC4uLmFcbiAgICB9KSwgYXdhaXQgWih0LmNvbm5lY3Rpb24sIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kLnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgLi4ucShhLCB0LnByZWZpbGwuY2hlY2tvdXRfc2V0dGluZ3MpXG4gICAgfSk7XG4gICAgY29uc3QgaSA9IGF3YWl0IHgodC5jb25uZWN0aW9uLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IHQucHJlZmlsbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlcixcbiAgICAgICAgYnJvd3Nlcl9pbmZvOiBSbygpLFxuICAgICAgICBtb2JpbGVfd2FsbGV0X3BheW1lbnRfZGF0YToge1xuICAgICAgICAgIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuOiBKU09OLnN0cmluZ2lmeShyLnRva2VuKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKERjKFwiWzFzdF0gQ29uZmlybSBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgaSksICFpLnBheW1lbnRfbWV0aG9kcz8uWzBdPy5pZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIFBNIElEIGZvdW5kXCIpO1xuICAgIGNvbnN0IGwgPSB7XG4gICAgICBzdGF0dXM6IEFwcGxlUGF5U2Vzc2lvbi5TVEFUVVNfU1VDQ0VTU1xuICAgIH07XG4gICAgcmV0dXJuIHQuc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQobCksIHJlKHtcbiAgICAgIGxvZ1ByZWZpeDogXCJhZHllbi1hcHBsZXBheVwiLFxuICAgICAgYW55Q2RlQ29ubmVjdGlvbjogdC5jb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogYSxcbiAgICAgIGNvbmZpcm1SZXN1bHQ6IGksXG4gICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgfSk7XG4gIH0gY2F0Y2ggKHIpIHtcbiAgICBjb25zdCBuID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX0ZBSUxVUkVcbiAgICB9O1xuICAgIHRocm93IHQuc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQobiksIHI7XG4gIH1cbn1cbmNvbnN0IHsgbG9nX186IEplLCBlcnJfXzogY28gfSA9IGsoXCJhZHllbi1hcHBsZS1wYXlcIiksIGpjID0gY2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICAgIGNvbnN0IHIgPSB7XG4gICAgICBwcm9jZXNzb3I6IFUuRW51bS5hZHllbixcbiAgICAgIGlzQXZhaWxhYmxlOiAhMSxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH1cbiAgICB9LCBuID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIGlvKTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm4gcjtcbiAgICBpZiAoSmUoXCJMb2FkaW5nIEFwcGxlIFBheSBzY3JpcHRcIiksIGF3YWl0IGJyKCksICF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uIHx8ICFBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gSmUoXCJBcHBsZSBQYXkgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS9icm93c2VyXCIpLCByO1xuICAgIGlmIChKZShcIkFwcGxlIFBheSBMb2FkZWRcIiksICFhd2FpdCBBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gSmUoXCJObyBhY3RpdmUgY2FyZHMgYXZhaWxhYmxlIGZvciBBcHBsZSBQYXlcIiksIHI7XG4gICAgaWYgKCFuLm1ldGFkYXRhLnByb2Nlc3Nvcl9hY2NvdW50X2lkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZ2F0ZXdheSBtZXJjaGFudCBJRCBmb3VuZCBpbiBwcm9jZXNzb3IgYWNjb3VudFwiKTtcbiAgICBjb25zdCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBsID0gYXdhaXQgTihzKSwgYyA9IGwubW9kZSA9PT0gXCJzZXR1cFwiLCB1ID0gYXdhaXQgUShzLCBsLnRva2VuLCBjLCB2b2lkIDApLCBkID0gYXN5bmMgKG0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFIuYWR5ZW5BcHBsZVBheS5ydW4oe1xuICAgICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0LFxuICAgICAgICAgIGN1c3RvbVBhcmFtczoge1xuICAgICAgICAgICAgLi4ubSxcbiAgICAgICAgICAgIGluaXRpYWxQcmV2aWV3OiB1XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDBcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChmKSB7XG4gICAgICAgIGNvKFwiQXBwbGUgUGF5IHBheW1lbnQgZXJyb3JcIiwgZiksIHQuZ2V0Lm9uQ2hlY2tvdXRFcnJvcihmPy5tZXNzYWdlID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IFUuRW51bS5hZHllbixcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGRcbiAgICB9O1xuICB9XG4pLCAkYyA9IFYoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICBjdXN0b21QYXJhbXM6IG4sXG4gICAgZm9ybUNhbGxiYWNrczogYVxuICB9KSA9PiB7XG4gICAgY29uc3QgaSA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBpbyksIHsgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogcywgaW5pdGlhbFByZXZpZXc6IGwgfSA9IG4sIGMgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHUgPSBhd2FpdCBOKGMpLCBkID0gdS5tb2RlID09PSBcInNldHVwXCIsIG0gPSBFcih7XG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IGwsXG4gICAgICBwcmVmaWxsOiB7XG4gICAgICAgIC4uLnVcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0TGFiZWw6IGk/Lm1ldGFkYXRhPy5wcm9jZXNzb3JfYWNjb3VudF9uYW1lXG4gICAgfSksIGYgPSBuZXcgQXBwbGVQYXlTZXNzaW9uKDMsIG0pLCB5ID0ge1xuICAgICAgc2Vzc2lvbjogZixcbiAgICAgIGNvbm5lY3Rpb246IGUuYW55Q2RlQ29ubmVjdGlvbixcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgICBwcm9jZXNzb3JBY2NvdW50OiBpLm1ldGFkYXRhLFxuICAgICAgcHJlZmlsbDogdSxcbiAgICAgIGlzU2V0dXBNb2RlOiBkLFxuICAgICAgYmFzZVVybDogZS5iYXNlVXJsLFxuICAgICAgZm9ybUNhbGxiYWNrczogYSxcbiAgICAgIGRlZmF1bHRGaWVsZFZhbHVlczogbj8uZGVmYXVsdEZpZWxkVmFsdWVzXG4gICAgfTtcbiAgICByZXR1cm4gdihcImFwcGxlX3BheV9mbG93X3N0YXJ0ZWRcIiwge1xuICAgICAgcHJvY2Vzc29yX25hbWU6IHQucHJvY2Vzc29yX25hbWUsXG4gICAgICBwcmVmaWxsOiBMdCh1LCBbXCJicmFuZFwiXSksXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzXG4gICAgfSksIG5ldyBQcm9taXNlKChfLCBnKSA9PiB7XG4gICAgICBjb25zdCB3ID0gKCkgPT4ge1xuICAgICAgICBKZShcIlBheW1lbnQgY2FuY2VsbGVkIGJ5IHVzZXJcIiksIGcobmV3IEVycm9yKFwiUGF5bWVudCBjYW5jZWxsZWQgYnkgdXNlclwiKSk7XG4gICAgICB9O1xuICAgICAgZi5vbnZhbGlkYXRlbWVyY2hhbnQgPSBhc3luYyAoaCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IFVjKGgsIHkpO1xuICAgICAgICB9IGNhdGNoIChiKSB7XG4gICAgICAgICAgZyhiKTtcbiAgICAgICAgfVxuICAgICAgfSwgZi5vbnBheW1lbnRtZXRob2RzZWxlY3RlZCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgaCA9IGF3YWl0IFEoYywgdS50b2tlbiwgZCwgdm9pZCAwKSwgYiA9IHtcbiAgICAgICAgICBuZXdUb3RhbDogcXQoe1xuICAgICAgICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogbi5vdmVycmlkZVBheW1lbnRSZXF1ZXN0LFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IGgsXG4gICAgICAgICAgICBkZWZhdWx0TGFiZWw6IGk/Lm1ldGFkYXRhPy5wcm9jZXNzb3JfYWNjb3VudF9uYW1lLFxuICAgICAgICAgICAgcHJlZmlsbDogdVxuICAgICAgICAgIH0pLnRvdGFsXG4gICAgICAgIH07XG4gICAgICAgIGYuY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGIpO1xuICAgICAgfSwgZi5vbnBheW1lbnRhdXRob3JpemVkID0gYXN5bmMgKGgpID0+IHtcbiAgICAgICAgdihcImFwcGxlX3BheV9wYXltZW50X2F1dGhvcml6ZWRcIik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYiA9IGF3YWl0IE9jKGgsIHkpO1xuICAgICAgICAgIF8oYik7XG4gICAgICAgIH0gY2F0Y2ggKGIpIHtcbiAgICAgICAgICBnKGIpO1xuICAgICAgICB9XG4gICAgICB9LCBmLm9uY2FuY2VsID0gdywgZi5iZWdpbigpO1xuICAgIH0pLmNhdGNoKChfKSA9PiB7XG4gICAgICB0aHJvdyBjbyhcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIF8pLCB2KFwiYXBwbGVfcGF5X3BheW1lbnRfZXJyb3JcIiwge1xuICAgICAgICBlcnJvcjogX1xuICAgICAgfSksIF87XG4gICAgfSk7XG4gIH1cbiksIHsgbG9nX186IGRlLCBlcnJfXzogTmUgfSA9IGsoXCJhZHllbi1nb29nbGUtcGF5XCIpLCBHYyA9IGNlKFxuICBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgICBjb25zdCByID0ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uYWR5ZW4sXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgbiA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBzbyk7XG4gICAgaWYgKCFuKVxuICAgICAgcmV0dXJuIHI7XG4gICAgZGUoXCJHb29nbGUgUGF5IENQTVwiLCBuKTtcbiAgICBjb25zdCBhID0gbi5tZXRhZGF0YTtcbiAgICBpZiAoIWEucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICByZXR1cm4gTmUoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpLCByO1xuICAgIGlmIChkZShcIkxvYWRpbmcgR29vZ2xlIFBheSBzY3JpcHRcIiksIGF3YWl0IGhyKCksICF3aW5kb3cuZ29vZ2xlPy5wYXltZW50cz8uYXBpKVxuICAgICAgcmV0dXJuIE5lKFwiR29vZ2xlIFBheSBTREsgbm90IGxvYWRlZCBwcm9wZXJseVwiKSwgcjtcbiAgICBpZiAoYXdhaXQgZ3IoZS5iYXNlVXJsKSA9PT0gXCJQUk9EVUNUSU9OXCIgJiYgIWEuZ29vZ2xlX3BheV9tZXJjaGFudF9pZClcbiAgICAgIHJldHVybiBOZShcIkdvb2dsZSBQYXkgbWVyY2hhbnQgSUQgaXMgcmVxdWlyZWQgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcIiksIHI7XG4gICAgZGUoXCJHb29nbGUgUGF5IFNESyBsb2FkZWRcIiwgd2luZG93Lmdvb2dsZS5wYXltZW50cyk7XG4gICAgY29uc3QgcyA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgbCA9IGF3YWl0IE4ocyksIGMgPSBsLm1vZGUgPT09IFwic2V0dXBcIiwgdSA9IGF3YWl0IFEocywgbC50b2tlbiwgYywgdm9pZCAwKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbSA9IFZlKHtcbiAgICAgICAgcHJlZmlsbDogbCxcbiAgICAgICAgZ2F0ZXdheTogXCJhZHllblwiLFxuICAgICAgICBnYXRld2F5TWVyY2hhbnRJZDogYS5wcm9jZXNzb3JfYWNjb3VudF9pZCxcbiAgICAgICAgbWVyY2hhbnROYW1lOiBhLnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICAgIG1lcmNoYW50SWQ6IGEuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgICAvLyBUaGlzIGlzIGZvciBpbml0aWFsIHBheW1lbnQgcmVxdWVzdCB0byBjaGVjayBhdmFpbGFiaWxpdHkuIEFjdHVhbCBgaW5pdGlhbFByZXZpZXdgIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSBVSSBpcyBzaG93blxuICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgfSksIGYgPSBhd2FpdCB6ZShlLmJhc2VVcmwsIG0pLCB7IHJlc3VsdDogeSB9ID0gYXdhaXQgZi5pc1JlYWR5VG9QYXkobSk7XG4gICAgICBpZiAoIXkpXG4gICAgICAgIHJldHVybiBkZShcIkdvb2dsZSBQYXkgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyB1c2VyXCIpLCByO1xuICAgIH0gY2F0Y2ggKG0pIHtcbiAgICAgIHJldHVybiBOZShcIkVycm9yIGNoZWNraW5nIEdvb2dsZSBQYXkgYXZhaWxhYmlsaXR5XCIsIG0pLCByO1xuICAgIH1cbiAgICBjb25zdCBkID0gYXN5bmMgKG0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFIuYWR5ZW5Hb29nbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogdCxcbiAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5tLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICBOZShcIkdvb2dsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBmKSwgdC5nZXQub25DaGVja291dEVycm9yKGY/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogVS5FbnVtLmFkeWVuLFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogZFxuICAgIH07XG4gIH1cbiksIHFjID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICBkZShcIlN0YXJ0aW5nIEdvb2dsZSBQYXkgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHNvKSwgeyBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzIH0gPSBhLCBsID0gaS5tZXRhZGF0YTtcbiAgICBpZiAoIWwucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpO1xuICAgIGNvbnN0IGMgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHUgPSBhd2FpdCBOKGMpLCBkID0gdS5tb2RlID09PSBcInNldHVwXCIsIG0gPSBhd2FpdCBRKGMsIHUudG9rZW4sIGQsIHZvaWQgMCksIGYgPSBWZSh7XG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgZ2F0ZXdheTogXCJhZHllblwiLFxuICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IGwucHJvY2Vzc29yX2FjY291bnRfaWQsXG4gICAgICBtZXJjaGFudE5hbWU6IGwucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgIG1lcmNoYW50SWQ6IGwuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IG0sXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzXG4gICAgfSk7XG4gICAgdihcImdvb2dsZV9wYXlfZmxvd19zdGFydGVkXCIsIHtcbiAgICAgIHByb2Nlc3Nvcl9uYW1lOiBpLnByb2Nlc3Nvcl9uYW1lLFxuICAgICAgcHJlZmlsbDogTHQodSwgW1wiYnJhbmRcIl0pLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogc1xuICAgIH0pO1xuICAgIGNvbnN0IHkgPSBhd2FpdCB6ZShlLmJhc2VVcmwsIGYpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBfID0gYXdhaXQgeS5sb2FkUGF5bWVudERhdGEoZik7XG4gICAgICBkZShcIkdvb2dsZSBQYXkgUGF5bWVudCBkYXRhXCIsIF8pO1xuICAgICAgY29uc3QgZyA9IHdyKHIsIF8pLCB3ID0gRyhcbiAgICAgICAgZyxcbiAgICAgICAgbi5nZXQub25WYWxpZGF0aW9uRXJyb3IsXG4gICAgICAgIGE/LmRlZmF1bHRGaWVsZFZhbHVlc1xuICAgICAgKTtcbiAgICAgIGlmICh2KFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgICAgLi4ud1xuICAgICAgfSksICFfLnBheW1lbnRNZXRob2REYXRhPy50b2tlbml6YXRpb25EYXRhPy50b2tlbilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gcGF5bWVudCB0b2tlbiByZWNlaXZlZCBmcm9tIEdvb2dsZSBQYXlcIik7XG4gICAgICBjb25zdCBiID0gYXdhaXQgWihjLCB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQucHJvdmlkZXIsXG4gICAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB0LFxuICAgICAgICAuLi5xKHcsIHUuY2hlY2tvdXRfc2V0dGluZ3MpXG4gICAgICB9KSwgUyA9IEJlKGIpO1xuICAgICAgZGUoXCJTdGFydCBmbG93IG5leHQgYWN0aW9uc1wiLCBTKTtcbiAgICAgIGxldCBDID0gYXdhaXQgeChjLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogdS50b2tlbixcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgICBicm93c2VyX2luZm86IFJvKCksXG4gICAgICAgICAgbW9iaWxlX3dhbGxldF9wYXltZW50X2RhdGE6IHtcbiAgICAgICAgICAgIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuOiBfLnBheW1lbnRNZXRob2REYXRhPy50b2tlbml6YXRpb25EYXRhPy50b2tlblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkZShcIlsxc3RdIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIEMpO1xuICAgICAgbGV0IEwgPSBDLnBheW1lbnRfbWV0aG9kcz8uWzBdPy5pZDtcbiAgICAgIGNvbnN0IEEgPSBDLnJlcXVpcmVkX3VzZXJfYWN0aW9ucz8uZmluZCgoJCkgPT4gJC50eXBlID09PSBcImFkeWVuLTNkc1wiKTtcbiAgICAgIGlmIChBICYmIEEucmVkaXJlY3RfdXJsKSB7XG4gICAgICAgIGRlKFwiQWR5ZW4gM0RTIFJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIiwgQSk7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzOiAkIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgICAgdXJsOiBBLnJlZGlyZWN0X3VybCxcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkZShg4pWwIEFkeWVuIDNEUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7JH1dYCksICQgPT09IEYuQ0FOQ0VMTEVEKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gY2FuY2VsbGVkXCIpO1xuICAgICAgICBpZiAoJCA9PT0gRi5GQUlMVVJFKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICAgICAgfVxuICAgICAgaWYgKEEgJiYgIUwgJiYgKEMgPSBhd2FpdCB4KGMsIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiB1LnRva2VuLFxuICAgICAgICB0aGVpcl9wbV9pZDogQS50aGVpcl9wbV9pZCxcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlclxuICAgICAgICB9XG4gICAgICB9KSwgZGUoXCJbMm5kXSBDb25maXJtIHBheW1lbnQgZmxvdyByZXNwb25zZSBhZnRlciAzRFNcIiwgQyksIEwgPSBDLnBheW1lbnRfbWV0aG9kcz8uWzBdPy5pZCksICFMKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBwYXltZW50IG1ldGhvZCBJRCBmb3VuZFwiKTtcbiAgICAgIHJldHVybiByZSh7XG4gICAgICAgIGxvZ1ByZWZpeDogXCJhZHllbi1nb29nbGVwYXlcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogYyxcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IHcsXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IEMsXG4gICAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgIHRocm93IE5lKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIF8pLCB2KFwiZ29vZ2xlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IF9cbiAgICAgIH0pLCBuZXcgRXJyb3IoXz8ubWVzc2FnZSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgfVxuICB9XG4pLCB7IGxvZ19fOiBZZSwgZXJyX186IFZjIH0gPSBrKFwiYXd4LWFjaFwiKSwgemMgPSBWKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogbixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIGNvbnN0IGkgPSBHKHIsIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKSwgcyA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgbCA9IGF3YWl0IE4ocyksIGMgPSBhLnZlcmlmaWNhdGlvbk1ldGhvZCA/PyBcInBsYWlkXCI7XG4gICAgbGV0IHUgPSBudWxsO1xuICAgIGlmIChjID09PSBcIm1pY3JvX2RlcG9zaXRcIikge1xuICAgICAgWWUoXCJNaWNybyBkZXBvc2l0IHZlcmlmaWNhdGlvbiBzZWxlY3RlZCwgc2hvd2luZyBmb3JtLi4uXCIpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdSA9IGF3YWl0IEd0KFwiYWNoX2RpcmVjdF9kZWJpdFwiLCB7XG4gICAgICAgICAgd2lkdGg6IFwiNDUwcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiNDAwcHhcIixcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmxcbiAgICAgICAgfSksIFllKFwiTWljcm8gZGVwb3NpdCBkYXRhIGNvbGxlY3RlZFwiKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aHJvdyBZZShcIk1pY3JvIGRlcG9zaXQgZm9ybSBjYW5jZWxsZWRcIiksIG5ldyBFcnJvcihcIk1pY3JvIGRlcG9zaXQgZm9ybSBjYW5jZWxsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGQgPSBhd2FpdCBaKHMsIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdCxcbiAgICAgIC4uLnEoaSwgbC5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICBjdXN0b21lcl9sYW5ndWFnZTogaWUoKVxuICAgIH0pLCBmID0gQmUoZCk/LmNvbnNlbnRfaWQsIF8gPSAoYXdhaXQgeChzLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IGYsXG4gICAgICAgIHZlcmlmaWNhdGlvbl9tZXRob2Q6IGMsXG4gICAgICAgIGRpcmVjdF9kZWJpdF9kYXRhOiB7XG4gICAgICAgICAgdHlwZTogXCJhY2hfZGlyZWN0X2RlYml0XCIsXG4gICAgICAgICAgYWNoX2RpcmVjdF9kZWJpdDoge1xuICAgICAgICAgICAgLy9wbGFpZCB2ZXJpZmljYXRpb24gcmVxdWlyZWQgZmllbGRzXG4gICAgICAgICAgICBidXNpbmVzc19hY2NvdW50OiBhLmlzQnVzaW5lc3NBY2NvdW50ID8/ICExLFxuICAgICAgICAgICAgb3duZXJfbmFtZToganQoaVtwLkZJUlNUX05BTUVdLCBpW3AuTEFTVF9OQU1FXSksXG4gICAgICAgICAgICBvd25lcl9lbWFpbDogaVtwLkVNQUlMXSxcbiAgICAgICAgICAgIC8vQUNIIG1pY3JvIGRlcG9zaXQgdmVyaWZpY2F0aW9uIHJlcXVpcmVkIGZpZWxkc1xuICAgICAgICAgICAgYWNjb3VudF9udW1iZXI6IHU/LmFjY291bnRfbnVtYmVyLFxuICAgICAgICAgICAgYWJhX3JvdXRpbmdfbnVtYmVyOiB1Py5hYmFfcm91dGluZ19udW1iZXJcbiAgICAgICAgICAgIC8vIG1hbmRhdGVfdmVyc2lvbjogJzEuMCcsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpLnJlcXVpcmVkX3VzZXJfYWN0aW9ucz8uZmluZChcbiAgICAgICh3KSA9PiB3LnR5cGUgPT09IFwiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiXG4gICAgKT8ucmVkaXJlY3RfdXJsO1xuICAgIGlmIChfKSB7XG4gICAgICBZZShcIlBsYWlkIHZlcmlmaWNhdGlvbiBSZXF1aXJlZCwgc3RhcnRpbmcgdmVyaWZpY2F0aW9uLi4uXCIpO1xuICAgICAgY29uc3QgeyBzdGF0dXM6IHcgfSA9IGF3YWl0IGxlKHtcbiAgICAgICAgdXJsOiBfLFxuICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmwsXG4gICAgICAgIGZyYW1lV2lkdGg6IFwiNTAwcHhcIixcbiAgICAgICAgZnJhbWVIZWlnaHQ6IFwiNzAwcHhcIixcbiAgICAgICAgZnJhbWVUaXRsZTogXCJBQ0ggdmVyaWZpY2F0aW9uXCJcbiAgICAgIH0pO1xuICAgICAgaWYgKFllKGDilbAgUGxhaWQgdmVyaWZpY2F0aW9uIGNvbXBsZXRlZCBbU3RhdHVzOiAke3d9XWApLCB3ID09PSBGLkNBTkNFTExFRClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGxhaWQgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgIGlmICh3ID09PSBGLkZBSUxVUkUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBsYWlkIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGcgPSBhd2FpdCB4KHMsIHtcbiAgICAgIHNlY3VyZV90b2tlbjogbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogZlxuICAgICAgfVxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwiYXd4LWFjaFwiLFxuICAgICAgICBhbnlDZGVDb25uZWN0aW9uOiBzLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogaSxcbiAgICAgICAgY29uZmlybVJlc3VsdDogZyxcbiAgICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAodykge1xuICAgICAgdGhyb3cgVmMoXCJBQ0ggcGF5bWVudCBlcnJvclwiLCB3KSwgdihcImNoZWNrb3V0X2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IHdcbiAgICAgIH0pLCBuZXcgRXJyb3Iodz8ubWVzc2FnZSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgfVxuICB9XG4pLCB7IGxvZ19fOiB3dCB9ID0gayhcImF3eC1hcHBsZS1wYXlcIik7XG5hc3luYyBmdW5jdGlvbiBCYyhlLCB0KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYSA9IChhd2FpdCBVdCh0LmNvbm5lY3Rpb24sIHtcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBhaXJ3YWxsZXhfcGF5bWVudF9zZXNzaW9uOiB7XG4gICAgICAgICAgdmFsaWRhdGlvbl91cmw6IGUudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICBpbml0aWF0aXZlX2NvbnRleHQ6IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgICAgICB0aGVpcl9hY2NvdW50X2lkOiB0LnByb2Nlc3NvckFjY291bnQucHJvY2Vzc29yX2FjY291bnRfaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKS5uZXh0X2FjdGlvbl9tZXRhZGF0YT8uYXBwbGVfcGF5X3Nlc3Npb247XG4gICAgaWYgKCFhKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc2Vzc2lvbiBkYXRhIHJlY2VpdmVkIGZyb20gcGF5bWVudCBmbG93XCIpO1xuICAgIHQuc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihhKSwgdihcImFwcGxlX3BheV9jb21wbGV0ZV9tZXJjaGFudF92YWxpZGF0aW9uXCIsIHtcbiAgICAgIC4uLmFcbiAgICB9KTtcbiAgfSBjYXRjaCAocikge1xuICAgIHRocm93IHQuc2Vzc2lvbi5hYm9ydCgpLCByO1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBIYyhlLCB0KSB7XG4gIGlmICghZS5yZWRpcmVjdF91cmwpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gcmVkaXJlY3QgVVJMIGZvdW5kXCIpO1xuICB3dChcIjNEUyBSZXF1aXJlZCwgc3RhcnRpbmcgdmVyaWZpY2F0aW9uLi4uXCIsIGUpO1xuICBjb25zdCB7IHN0YXR1czogciB9ID0gYXdhaXQgbGUoe1xuICAgIHVybDogZS5yZWRpcmVjdF91cmwsXG4gICAgYmFzZVVybDogdC5iYXNlVXJsXG4gIH0pO1xuICBpZiAod3QoYOKVsCAzRFMgdmVyaWZpY2F0aW9uIGNvbXBsZXRlZCBbU3RhdHVzOiAke3J9XWApLCByID09PSBGLkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKHIgPT09IEYuRkFJTFVSRSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgY29uc3QgbiA9IGF3YWl0IHgodC5jb25uZWN0aW9uLCB7XG4gICAgc2VjdXJlX3Rva2VuOiB0LnByZWZpbGwudG9rZW4sXG4gICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICB0aGVpcl9wbV9pZDogZS50aGVpcl9wbV9pZCxcbiAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBlLmNvbnNlbnRfaWQsXG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlclxuICAgIH1cbiAgfSk7XG4gIHJldHVybiB3dChcIlsybmRdIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIG4pLCBuO1xufVxuYXN5bmMgZnVuY3Rpb24gS2MoZSwgdCkge1xuICB0cnkge1xuICAgIGNvbnN0IHIgPSBlLnBheW1lbnQsIG4gPSBQcih0Lm5vbkNkZUZvcm1JbnB1dHMsIHIpLCBhID0gRyhcbiAgICAgIG4sXG4gICAgICB0LmZvcm1DYWxsYmFja3MuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgdC5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICApO1xuICAgIHYoXCJiaWxsaW5nX2RldGFpbHNfcmVjZWl2ZWRcIiwge1xuICAgICAgLi4uYVxuICAgIH0pO1xuICAgIGNvbnN0IGwgPSAoYXdhaXQgWih0LmNvbm5lY3Rpb24sIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kLnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgLi4ucShhLCB0LnByZWZpbGwuY2hlY2tvdXRfc2V0dGluZ3MpXG4gICAgfSkpLnJlcXVpcmVkX3VzZXJfYWN0aW9uc1swXS5jb25zZW50X2lkO1xuICAgIGlmICghbClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbnNlbnQgSUQgcmVjZWl2ZWQgZnJvbSBwYXltZW50IGZsb3dcIik7XG4gICAgbGV0IGMgPSBhd2FpdCB4KHQuY29ubmVjdGlvbiwge1xuICAgICAgc2VjdXJlX3Rva2VuOiB0LnByZWZpbGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBsLFxuICAgICAgICBhaXJ3YWxsZXhfcGF5bWVudF9tZXRob2RfZGF0YToge1xuICAgICAgICAgIHR5cGU6IFwiYXBwbGVwYXlcIixcbiAgICAgICAgICBhcHBsZXBheToge1xuICAgICAgICAgICAgcGF5bWVudF9kYXRhX3R5cGU6IFwiZW5jcnlwdGVkX3BheW1lbnRfdG9rZW5cIixcbiAgICAgICAgICAgIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuOiBKU09OLnN0cmluZ2lmeShyLnRva2VuKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHd0KFwiWzFzdF0gQ29uZmlybSBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgYyk7XG4gICAgbGV0IHUgPSBjLnBheW1lbnRfbWV0aG9kcz8uWzBdPy5pZDtcbiAgICBjb25zdCBkID0gYy5yZXF1aXJlZF91c2VyX2FjdGlvbnM/LmZpbmQoXG4gICAgICAoZikgPT4gZi50eXBlID09PSBcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIlxuICAgICk7XG4gICAgaWYgKGQ/LnJlZGlyZWN0X3VybCAmJiBkLmNvbnNlbnRfaWQgJiYgZC50aGVpcl9wbV9pZCAmJiAoYyA9IGF3YWl0IEhjKGQsIHQpLCB1ID0gYy5wYXltZW50X21ldGhvZHM/LlswXT8uaWQpLCAhdSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIFBNIElEIGZvdW5kXCIpO1xuICAgIGNvbnN0IG0gPSB7XG4gICAgICBzdGF0dXM6IEFwcGxlUGF5U2Vzc2lvbi5TVEFUVVNfU1VDQ0VTU1xuICAgIH07XG4gICAgcmV0dXJuIHQuc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQobSksIHJlKHtcbiAgICAgIGxvZ1ByZWZpeDogXCJhd3gtYXBwbGVwYXlcIixcbiAgICAgIGFueUNkZUNvbm5lY3Rpb246IHQuY29ubmVjdGlvbixcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdC5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IGEsXG4gICAgICBjb25maXJtUmVzdWx0OiBjLFxuICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgIH0pO1xuICB9IGNhdGNoIChyKSB7XG4gICAgY29uc3QgbiA9IHtcbiAgICAgIHN0YXR1czogQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFXG4gICAgfTtcbiAgICB0aHJvdyB0LnNlc3Npb24uY29tcGxldGVQYXltZW50KG4pLCByO1xuICB9XG59XG5jb25zdCB7IGxvZ19fOiBaZSwgZXJyX186IGxvIH0gPSBrKFwiYXd4LWFwcGxlLXBheVwiKSwgWWMgPSBjZShcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgZm9ybUNhbGxiYWNrczogdCB9KSA9PiB7XG4gICAgY29uc3QgciA9IHtcbiAgICAgIHByb2Nlc3NvcjogVS5FbnVtLmFpcndhbGxleCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMSxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH1cbiAgICB9LCBuID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHRvKTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm4gcjtcbiAgICBpZiAoWmUoXCJMb2FkaW5nIEFwcGxlIFBheSBzY3JpcHRcIiksIGF3YWl0IGJyKCksICF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uIHx8ICFBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gWmUoXCJBcHBsZSBQYXkgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS9icm93c2VyXCIpLCByO1xuICAgIGlmIChaZShcIkFwcGxlIFBheSBMb2FkZWRcIiksICFhd2FpdCBBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gWmUoXCJObyBhY3RpdmUgY2FyZHMgYXZhaWxhYmxlIGZvciBBcHBsZSBQYXlcIiksIHI7XG4gICAgaWYgKCFuLm1ldGFkYXRhLnByb2Nlc3Nvcl9hY2NvdW50X2lkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZ2F0ZXdheSBtZXJjaGFudCBJRCBmb3VuZCBpbiBwcm9jZXNzb3IgYWNjb3VudFwiKTtcbiAgICBjb25zdCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBsID0gYXdhaXQgTihzKSwgYyA9IGwubW9kZSA9PT0gXCJzZXR1cFwiLCB1ID0gYXdhaXQgUShzLCBsLnRva2VuLCBjLCB2b2lkIDApLCBkID0gYXN5bmMgKG0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFIuYWlyd2FsbGV4QXBwbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogdCxcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLm0sXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICBsbyhcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIGYpLCB0LmdldC5vbkNoZWNrb3V0RXJyb3IoZj8ubWVzc2FnZSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uYWlyd2FsbGV4LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogZFxuICAgIH07XG4gIH1cbiksIFdjID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgIGN1c3RvbVBhcmFtczogbixcbiAgICBmb3JtQ2FsbGJhY2tzOiBhXG4gIH0pID0+IHtcbiAgICBjb25zdCBpID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHRvKSwgeyBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzIH0gPSBuLCBsID0gZS5hbnlDZGVDb25uZWN0aW9uLCBjID0gYXdhaXQgTihsKSwgdSA9IGMubW9kZSA9PT0gXCJzZXR1cFwiLCBkID0gRXIoe1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogcyxcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBuLmluaXRpYWxQcmV2aWV3LFxuICAgICAgcHJlZmlsbDoge1xuICAgICAgICAuLi5jXG4gICAgICB9LFxuICAgICAgZGVmYXVsdExhYmVsOiBpPy5tZXRhZGF0YT8ucHJvY2Vzc29yX2FjY291bnRfbmFtZVxuICAgIH0pLCBtID0gbmV3IEFwcGxlUGF5U2Vzc2lvbigzLCBkKSwgZiA9IHtcbiAgICAgIHNlc3Npb246IG0sXG4gICAgICBjb25uZWN0aW9uOiBlLmFueUNkZUNvbm5lY3Rpb24sXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgICAgcHJvY2Vzc29yQWNjb3VudDogaS5tZXRhZGF0YSxcbiAgICAgIHByZWZpbGw6IGMsXG4gICAgICBpc1NldHVwTW9kZTogdSxcbiAgICAgIGJhc2VVcmw6IGUuYmFzZVVybCxcbiAgICAgIGZvcm1DYWxsYmFja3M6IGEsXG4gICAgICBkZWZhdWx0RmllbGRWYWx1ZXM6IG4/LmRlZmF1bHRGaWVsZFZhbHVlc1xuICAgIH07XG4gICAgcmV0dXJuIHYoXCJhcHBsZV9wYXlfZmxvd19zdGFydGVkXCIsIHtcbiAgICAgIHByb2Nlc3Nvcl9uYW1lOiB0LnByb2Nlc3Nvcl9uYW1lLFxuICAgICAgcHJlZmlsbDogTHQoYywgW1wiYnJhbmRcIl0pLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogc1xuICAgIH0pLCBuZXcgUHJvbWlzZSgoeSwgXykgPT4ge1xuICAgICAgY29uc3QgZyA9ICgpID0+IHtcbiAgICAgICAgWmUoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpLCBfKG5ldyBFcnJvcihcIlBheW1lbnQgY2FuY2VsbGVkIGJ5IHVzZXJcIikpO1xuICAgICAgfTtcbiAgICAgIG0ub25jYW5jZWwgPSBnLCBtLm9udmFsaWRhdGVtZXJjaGFudCA9IGFzeW5jICh3KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgQmModywgZik7XG4gICAgICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgICAgICBfKGgpO1xuICAgICAgICB9XG4gICAgICB9LCBtLm9ucGF5bWVudG1ldGhvZHNlbGVjdGVkID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB3ID0gYXdhaXQgUShsLCBjLnRva2VuLCB1LCB2b2lkIDApLCBoID0ge1xuICAgICAgICAgIG5ld1RvdGFsOiBxdCh7XG4gICAgICAgICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBuLm92ZXJyaWRlUGF5bWVudFJlcXVlc3QsXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdyxcbiAgICAgICAgICAgIGRlZmF1bHRMYWJlbDogaT8ubWV0YWRhdGE/LnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICAgICAgICBwcmVmaWxsOiBjXG4gICAgICAgICAgfSkudG90YWxcbiAgICAgICAgfTtcbiAgICAgICAgbS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oaCk7XG4gICAgICB9LCBtLm9ucGF5bWVudGF1dGhvcml6ZWQgPSBhc3luYyAodykgPT4ge1xuICAgICAgICB2KFwiYXBwbGVfcGF5X3BheW1lbnRfYXV0aG9yaXplZFwiKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBoID0gYXdhaXQgS2ModywgZik7XG4gICAgICAgICAgeShoKTtcbiAgICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICAgIF8oaCk7XG4gICAgICAgIH1cbiAgICAgIH0sIG0uYmVnaW4oKTtcbiAgICB9KS5jYXRjaCgoeSkgPT4ge1xuICAgICAgdGhyb3cgbG8oXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCB5KSwgdihcImFwcGxlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IHlcbiAgICAgIH0pLCB5O1xuICAgIH0pO1xuICB9XG4pLCB7IGxvZ19fOiBzZSwgZXJyX186IExlIH0gPSBrKFwiYXd4LWdvb2dsZS1wYXlcIiksIEpjID0gY2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICAgIGNvbnN0IHIgPSB7XG4gICAgICBwcm9jZXNzb3I6IFUuRW51bS5haXJ3YWxsZXgsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgbiA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBybyk7XG4gICAgaWYgKCFuKVxuICAgICAgcmV0dXJuIHI7XG4gICAgc2UoXCJHb29nbGUgUGF5IENQTVwiLCBuKTtcbiAgICBjb25zdCBhID0gbi5tZXRhZGF0YTtcbiAgICBpZiAoIWEucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICByZXR1cm4gTGUoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpLCByO1xuICAgIGlmIChzZShcIkxvYWRpbmcgR29vZ2xlIFBheSBzY3JpcHRcIiksIGF3YWl0IGhyKCksICF3aW5kb3cuZ29vZ2xlPy5wYXltZW50cz8uYXBpKVxuICAgICAgcmV0dXJuIExlKFwiR29vZ2xlIFBheSBTREsgbm90IGxvYWRlZCBwcm9wZXJseVwiKSwgcjtcbiAgICBpZiAoYXdhaXQgZ3IoZS5iYXNlVXJsKSA9PT0gXCJQUk9EVUNUSU9OXCIgJiYgIWEuZ29vZ2xlX3BheV9tZXJjaGFudF9pZClcbiAgICAgIHJldHVybiBMZShcIkdvb2dsZSBQYXkgbWVyY2hhbnQgSUQgaXMgcmVxdWlyZWQgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcIiksIHI7XG4gICAgc2UoXCJHb29nbGUgUGF5IFNESyBsb2FkZWRcIiwgd2luZG93Lmdvb2dsZS5wYXltZW50cyk7XG4gICAgY29uc3QgcyA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgbCA9IGF3YWl0IE4ocyksIGMgPSBsLm1vZGUgPT09IFwic2V0dXBcIiwgdSA9IGF3YWl0IFEocywgbC50b2tlbiwgYywgdm9pZCAwKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbSA9IFZlKHtcbiAgICAgICAgcHJlZmlsbDogbCxcbiAgICAgICAgZ2F0ZXdheTogXCJhaXJ3YWxsZXhcIixcbiAgICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IGEucHJvY2Vzc29yX2FjY291bnRfaWQsXG4gICAgICAgIG1lcmNoYW50TmFtZTogYS5wcm9jZXNzb3JfYWNjb3VudF9uYW1lLFxuICAgICAgICBtZXJjaGFudElkOiBhLmdvb2dsZV9wYXlfbWVyY2hhbnRfaWQgPz8gXCJcIixcbiAgICAgICAgLy8gVGhpcyBpcyBmb3IgaW5pdGlhbCBwYXltZW50IHJlcXVlc3QgdG8gY2hlY2sgYXZhaWxhYmlsaXR5LiBBY3R1YWwgYGluaXRpYWxQcmV2aWV3YCB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgVUkgaXMgc2hvd25cbiAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgIH0pLCBmID0gYXdhaXQgemUoZS5iYXNlVXJsLCBtKSwgeyByZXN1bHQ6IHkgfSA9IGF3YWl0IGYuaXNSZWFkeVRvUGF5KG0pO1xuICAgICAgaWYgKCF5KVxuICAgICAgICByZXR1cm4gc2UoXCJHb29nbGUgUGF5IGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgdXNlclwiKSwgcjtcbiAgICB9IGNhdGNoIChtKSB7XG4gICAgICByZXR1cm4gTGUoXCJFcnJvciBjaGVja2luZyBHb29nbGUgUGF5IGF2YWlsYWJpbGl0eVwiLCBtKSwgcjtcbiAgICB9XG4gICAgY29uc3QgZCA9IGFzeW5jIChtKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBSLmFpcndhbGxleEdvb2dsZVBheS5ydW4oe1xuICAgICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0LFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMCxcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLm0sXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChmKSB7XG4gICAgICAgIExlKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIGYpLCB0LmdldC5vbkNoZWNrb3V0RXJyb3IoZj8ubWVzc2FnZSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uYWlyd2FsbGV4LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogZFxuICAgIH07XG4gIH1cbiksIFpjID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICBzZShcIlN0YXJ0aW5nIEdvb2dsZSBQYXkgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHJvKSwgeyBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzIH0gPSBhLCBsID0gaS5tZXRhZGF0YTtcbiAgICBpZiAoIWwucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpO1xuICAgIGNvbnN0IGMgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHUgPSBhd2FpdCBOKGMpLCBkID0gdS5tb2RlID09PSBcInNldHVwXCIsIG0gPSBhd2FpdCBRKGMsIHUudG9rZW4sIGQsIHZvaWQgMCksIGYgPSBWZSh7XG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgZ2F0ZXdheTogXCJhaXJ3YWxsZXhcIixcbiAgICAgIGdhdGV3YXlNZXJjaGFudElkOiBsLnByb2Nlc3Nvcl9hY2NvdW50X2lkLFxuICAgICAgbWVyY2hhbnROYW1lOiBsLnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICBtZXJjaGFudElkOiBsLmdvb2dsZV9wYXlfbWVyY2hhbnRfaWQgPz8gXCJcIixcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBtLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogc1xuICAgIH0pO1xuICAgIHYoXCJnb29nbGVfcGF5X2Zsb3dfc3RhcnRlZFwiLCB7XG4gICAgICBwcm9jZXNzb3JfbmFtZTogaS5wcm9jZXNzb3JfbmFtZSxcbiAgICAgIHByZWZpbGw6IEx0KHUsIFtcImJyYW5kXCJdKSxcbiAgICAgIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IHNcbiAgICB9KTtcbiAgICBjb25zdCB5ID0gYXdhaXQgemUoZS5iYXNlVXJsLCBmKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgXyA9IGF3YWl0IHkubG9hZFBheW1lbnREYXRhKGYpO1xuICAgICAgc2UoXCJHb29nbGUgUGF5IFBheW1lbnQgZGF0YVwiLCBfKTtcbiAgICAgIGNvbnN0IGcgPSB3cihyLCBfKSwgdyA9IEcoXG4gICAgICAgIGcsXG4gICAgICAgIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgICBhPy5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICAgICk7XG4gICAgICBzZShcIl9fX1wiLCB3KSwgdihcImJpbGxpbmdfZGV0YWlsc19yZWNlaXZlZFwiLCB7XG4gICAgICAgIC4uLndcbiAgICAgIH0pO1xuICAgICAgY29uc3QgaCA9IF8ucGF5bWVudE1ldGhvZERhdGE/LnRva2VuaXphdGlvbkRhdGE/LnRva2VuO1xuICAgICAgaWYgKCFoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBwYXltZW50IHRva2VuIHJlY2VpdmVkIGZyb20gR29vZ2xlIFBheVwiKTtcbiAgICAgIGNvbnN0IGIgPSBhd2FpdCBaKGMsIHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICAgIC4uLnEodywgdS5jaGVja291dF9zZXR0aW5ncylcbiAgICAgIH0pLCBTID0gQmUoYik7XG4gICAgICBzZShcIlN0YXJ0IGZsb3cgbmV4dCBhY3Rpb25zXCIsIFMpO1xuICAgICAgbGV0IEMgPSBhd2FpdCB4KGMsIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiB1LnRva2VuLFxuICAgICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgICAgIC8vIEdvb2dsZVBheSdzIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuIHByb3ZpZGVkIHRvIHZlcmlmeSB0aGUgY29uc2VudCBmaXJzdFxuICAgICAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBTPy5jb25zZW50X2lkLFxuICAgICAgICAgIGFpcndhbGxleF9wYXltZW50X21ldGhvZF9kYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBcImdvb2dsZXBheVwiLFxuICAgICAgICAgICAgZ29vZ2xlcGF5OiB7XG4gICAgICAgICAgICAgIHBheW1lbnRfZGF0YV90eXBlOiBcImVuY3J5cHRlZF9wYXltZW50X3Rva2VuXCIsXG4gICAgICAgICAgICAgIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuOiBoXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHNlKFwiWzFzdF0gQ29uZmlybSBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgQyk7XG4gICAgICBsZXQgTCA9IEMucGF5bWVudF9tZXRob2RzPy5bMF0/LmlkO1xuICAgICAgY29uc3QgQSA9IEMucmVxdWlyZWRfdXNlcl9hY3Rpb25zPy5maW5kKFxuICAgICAgICAoJCkgPT4gJC50eXBlID09PSBcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIlxuICAgICAgKTtcbiAgICAgIGlmIChBICYmIEEucmVkaXJlY3RfdXJsKSB7XG4gICAgICAgIHNlKFwiM0RTIFJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIiwgQSk7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzOiAkIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgICAgdXJsOiBBLnJlZGlyZWN0X3VybCxcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChzZShg4pWwIDNEUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7JH1dYCksICQgPT09IEYuQ0FOQ0VMTEVEKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gY2FuY2VsbGVkXCIpO1xuICAgICAgICBpZiAoJCA9PT0gRi5GQUlMVVJFKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICAgICAgfVxuICAgICAgaWYgKEEgJiYgIUwgJiYgKEMgPSBhd2FpdCB4KGMsIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiB1LnRva2VuLFxuICAgICAgICB0aGVpcl9wbV9pZDogQS50aGVpcl9wbV9pZCxcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogQS5jb25zZW50X2lkXG4gICAgICAgIH1cbiAgICAgIH0pLCBzZShcIlsybmRdIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIEMpLCBMID0gQy5wYXltZW50X21ldGhvZHM/LlswXT8uaWQpLCAhTClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gUE0gSUQgZm91bmRcIik7XG4gICAgICByZXR1cm4gcmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwiYXd4LWdvb2dsZXBheVwiLFxuICAgICAgICBhbnlDZGVDb25uZWN0aW9uOiBjLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogdyxcbiAgICAgICAgY29uZmlybVJlc3VsdDogQyxcbiAgICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgdGhyb3cgTGUoXCJHb29nbGUgUGF5IHBheW1lbnQgZXJyb3JcIiwgXyksIHYoXCJnb29nbGVfcGF5X3BheW1lbnRfZXJyb3JcIiwge1xuICAgICAgICBlcnJvcjogX1xuICAgICAgfSksIG5ldyBFcnJvcihfPy5tZXNzYWdlID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICB9XG4gIH1cbiksIHsgbG9nX186IF90LCBlcnJfXzogUWMgfSA9IGsoXCJrbGFybmFcIiksIHVvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImtsYXJuYVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe30pLm51bGxpc2goKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWlyd2FsbGV4XCIpXG59KSwgWGMgPSBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgY29uc3QgciA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCB1byk7XG4gIGlmICghcilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJLbGFybmEgQ1BNIG5vdCBmb3VuZCBpbiBhdmFpbGFibGUgcGF5bWVudCBtZXRob2RzXCIpO1xuICByZXR1cm4ge1xuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgc3RhcnRGbG93OiAoYSkgPT4gUi5haXJ3YWxsZXhLbGFybmEucnVuKHtcbiAgICAgIGNvbnRleHQ6IGUsXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICBmb3JtQ2FsbGJhY2tzOiB0LFxuICAgICAgaW5pdFJlc3VsdDogdm9pZCAwLFxuICAgICAgY3VzdG9tUGFyYW1zOiBhID8/IHt9XG4gICAgfSlcbiAgfTtcbn0sIGVsID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHQsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgX3QoXCJSdW5uaW5nIEtsYXJuYSBmbG93Li4uXCIsIGEpO1xuICAgICAgY29uc3QgaSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgcyA9IGF3YWl0IE4oaSksIGwgPSAhMTtcbiAgICAgIF90KFwiVmVyaWZ5aW5nIENQTS4uLlwiKTtcbiAgICAgIGNvbnN0IGMgPSB1by5wYXJzZShyKTtcbiAgICAgIF90KFwi4pScIFZhbGlkYXRpbmcgbm9uLUNERSBmb3JtIGZpZWxkc1wiKTtcbiAgICAgIGNvbnN0IHUgPSBHKHQsIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLCB7XG4gICAgICAgIC4uLmwgPyBCbigpIDogdm9pZCAwLFxuICAgICAgICAuLi5zLmNoZWNrb3V0X3NldHRpbmdzXG4gICAgICB9KSwgZCA9IHEodSwgcy5jaGVja291dF9zZXR0aW5ncyk7XG4gICAgICBfdChcIk5ldyBjdXN0b21lciBmaWVsZHNcIiwgZCk7XG4gICAgICBjb25zdCBtID0gYXdhaXQgWihpLCB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHIucHJvdmlkZXIsXG4gICAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiByLFxuICAgICAgICAuLi5xKHUsIHMuY2hlY2tvdXRfc2V0dGluZ3MpXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb25zb2xlLmxvZyhcInN0YXJ0UGF5bWVudEZsb3dSZXNwb25zZVwiLCBtKSwgcmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwia2xhcm5hXCIsXG4gICAgICAgIGFueUNkZUNvbm5lY3Rpb246IGksXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogYyxcbiAgICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiB1LFxuICAgICAgICBjb25maXJtUmVzdWx0OiB7XG4gICAgICAgICAgcGF5bWVudF9tZXRob2RzOiBbXVxuICAgICAgICB9LFxuICAgICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChpKSB7XG4gICAgICB0aHJvdyBRYyhcIktsYXJuYSBwYXltZW50IGVycm9yXCIsIGkpLCB2KFwiY2hlY2tvdXRfZXJyb3JcIiwgeyBwYXltZW50X21ldGhvZDogXCJrbGFybmFcIiwgZXJyb3I6IGkgfSksIG5ldyBFcnJvcihpPy5tZXNzYWdlID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICB9XG4gIH1cbiksIHBvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgbW8gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pO1xuYXN5bmMgZnVuY3Rpb24gdGwoZSwgdCkge1xuICB0cnkge1xuICAgIGNvbnN0IGEgPSAoYXdhaXQgVXQodC5jb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdC5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgYXBwbGVfcGF5bWVudF9zZXNzaW9uOiB7XG4gICAgICAgICAgdmFsaWRhdGlvbl91cmw6IGUudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICBpbml0aWF0aXZlX2NvbnRleHQ6IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgICAgICB0aGVpcl9hY2NvdW50X2lkOiB0LnByb2Nlc3NvckFjY291bnQucHJvY2Vzc29yX2FjY291bnRfaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKS5uZXh0X2FjdGlvbl9tZXRhZGF0YT8uYXBwbGVfcGF5X3Nlc3Npb247XG4gICAgaWYgKCFhKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc2Vzc2lvbiBkYXRhIHJlY2VpdmVkIGZyb20gcGF5bWVudCBmbG93XCIpO1xuICAgIHQuc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihhKSwgdihcImFwcGxlX3BheV9jb21wbGV0ZV9tZXJjaGFudF92YWxpZGF0aW9uXCIsIHtcbiAgICAgIC4uLmFcbiAgICB9KTtcbiAgfSBjYXRjaCAocikge1xuICAgIHRocm93IHQuc2Vzc2lvbi5hYm9ydCgpLCByO1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBybChlLCB0KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgciA9IGUucGF5bWVudCwgbiA9IFByKHQubm9uQ2RlRm9ybUlucHV0cywgciksIGEgPSBHKG4sIHQuZm9ybUNhbGxiYWNrcy5nZXQub25WYWxpZGF0aW9uRXJyb3IpO1xuICAgIHYoXCJiaWxsaW5nX2RldGFpbHNfcmVjZWl2ZWRcIiwge1xuICAgICAgLi4uYVxuICAgIH0pLCBhd2FpdCBaKHQuY29ubmVjdGlvbiwge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdC5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICAuLi5xKGEsIHQucHJlZmlsbC5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICBjdXN0b21lcl9sYW5ndWFnZTogaWUoKVxuICAgIH0pO1xuICAgIGNvbnN0IGkgPSB7XG4gICAgICBkYXRhRGVzY3JpcHRvcjogXCJDT01NT04uQVBQTEUuSU5BUFAuUEFZTUVOVFwiLFxuICAgICAgZGF0YVZhbHVlOiB3aW5kb3cuYnRvYShKU09OLnN0cmluZ2lmeShyLnRva2VuLnBheW1lbnREYXRhKSlcbiAgICB9LCBzID0gYXdhaXQgeCh0LmNvbm5lY3Rpb24sIHtcbiAgICAgIHNlY3VyZV90b2tlbjogdC5wcmVmaWxsLnRva2VuLFxuICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kLnByb3ZpZGVyLFxuICAgICAgICBtb2JpbGVfd2FsbGV0X3BheW1lbnRfZGF0YTogaVxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghcy5wYXltZW50X21ldGhvZHM/LlswXT8uaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBQTSBJRCBmb3VuZFwiKTtcbiAgICBjb25zdCBjID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX1NVQ0NFU1NcbiAgICB9O1xuICAgIHJldHVybiB0LnNlc3Npb24uY29tcGxldGVQYXltZW50KGMpLCByZSh7XG4gICAgICBsb2dQcmVmaXg6IFwiYXV0aG5ldC1hcHBsZXBheVwiLFxuICAgICAgYW55Q2RlQ29ubmVjdGlvbjogdC5jb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogYSxcbiAgICAgIGNvbmZpcm1SZXN1bHQ6IHMsXG4gICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgfSk7XG4gIH0gY2F0Y2ggKHIpIHtcbiAgICBjb25zdCBuID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX0ZBSUxVUkVcbiAgICB9O1xuICAgIHRocm93IHQuc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQobiksIHI7XG4gIH1cbn1cbmNvbnN0IHsgbG9nX186IHZ0LCBlcnJfXzogZm8gfSA9IGsoXCJhdXRobmV0LWFwcGxlcGF5XCIpLCBubCA9IGNlKFxuICBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgICBjb25zdCByID0ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uYXV0aG9yaXplX25ldCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMSxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH1cbiAgICB9LCBuID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHBvKTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm4gcjtcbiAgICBpZiAodnQoXCJMb2FkaW5nIEFwcGxlIFBheSBzY3JpcHRcIiksIGF3YWl0IGJyKCksICF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uIHx8ICFBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gdnQoXCJBcHBsZSBQYXkgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS9icm93c2VyXCIpLCByO1xuICAgIGlmICghYXdhaXQgQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50cygpKVxuICAgICAgcmV0dXJuIHZ0KFwiTm8gYWN0aXZlIGNhcmRzIGF2YWlsYWJsZSBmb3IgQXBwbGUgUGF5XCIpLCByO1xuICAgIGlmICghbi5tZXRhZGF0YS5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIik7XG4gICAgY29uc3QgcyA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgbCA9IGF3YWl0IE4ocyksIGMgPSBsLm1vZGUgPT09IFwic2V0dXBcIiwgdSA9IGF3YWl0IFEocywgbC50b2tlbiwgYywgdm9pZCAwKSwgZCA9IGFzeW5jIChtKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBSLmF1dGhvcml6ZU5ldEFwcGxlUGF5LnJ1bih7XG4gICAgICAgICAgY29udGV4dDogZSxcbiAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogaihlLmZvcm1EaXYpLFxuICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHQsXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5tLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGYpIHtcbiAgICAgICAgZm8oXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBmKSwgdihcImFwcGxlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgICBlcnJvcjogZlxuICAgICAgICB9KSwgdC5nZXQub25DaGVja291dEVycm9yKGY/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogVS5FbnVtLmF1dGhvcml6ZV9uZXQsXG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBkXG4gICAgfTtcbiAgfVxuKSwgb2wgPSBWKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBuLFxuICAgIGZvcm1DYWxsYmFja3M6IGFcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHsgaW5pdGlhbFByZXZpZXc6IGksIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IHMgfSA9IG4sIGwgPSBPKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgcG8pLCBjID0gZS5hbnlDZGVDb25uZWN0aW9uLCB1ID0gYXdhaXQgTihjKSwgZCA9IHUubW9kZSA9PT0gXCJzZXR1cFwiLCBtID0gRXIoe1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogcyxcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBpLFxuICAgICAgcHJlZmlsbDogdSxcbiAgICAgIGRlZmF1bHRMYWJlbDogbD8ubWV0YWRhdGE/LnByb2Nlc3Nvcl9hY2NvdW50X25hbWVcbiAgICB9KTtcbiAgICB2KFwiYXBwbGVfcGF5X2Zsb3dfc3RhcnRlZFwiLCB7XG4gICAgICBwcm9jZXNzb3JfbmFtZTogdC5wcm9jZXNzb3JfbmFtZSxcbiAgICAgIHByZWZpbGw6IHUsXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzXG4gICAgfSk7XG4gICAgY29uc3QgZiA9IG5ldyBBcHBsZVBheVNlc3Npb24oMywgbSksIHkgPSB7XG4gICAgICBzZXNzaW9uOiBmLFxuICAgICAgY29ubmVjdGlvbjogZS5hbnlDZGVDb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICAgIHByb2Nlc3NvckFjY291bnQ6IHQubWV0YWRhdGEsXG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgaXNTZXR1cE1vZGU6IGQsXG4gICAgICBiYXNlVXJsOiBlLmJhc2VVcmwsXG4gICAgICBmb3JtQ2FsbGJhY2tzOiBhXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF8sIGcpID0+IHtcbiAgICAgIGYub25jYW5jZWwgPSAoKSA9PiB7XG4gICAgICAgIHZ0KFwiUGF5bWVudCBjYW5jZWxsZWQgYnkgdXNlclwiKSwgZyhuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpKTtcbiAgICAgIH0sIGYub252YWxpZGF0ZW1lcmNoYW50ID0gYXN5bmMgKHcpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0bCh3LCB5KTtcbiAgICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICAgIGcoaCk7XG4gICAgICAgIH1cbiAgICAgIH0sIGYub25wYXltZW50bWV0aG9kc2VsZWN0ZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHcgPSBhd2FpdCBRKGMsIHUudG9rZW4sIGQsIHZvaWQgMCksIGggPSB7XG4gICAgICAgICAgbmV3VG90YWw6IHF0KHtcbiAgICAgICAgICAgIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IG4ub3ZlcnJpZGVQYXltZW50UmVxdWVzdCxcbiAgICAgICAgICAgIGluaXRpYWxQcmV2aWV3OiB3LFxuICAgICAgICAgICAgZGVmYXVsdExhYmVsOiBsPy5tZXRhZGF0YT8ucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgICAgICAgIHByZWZpbGw6IHVcbiAgICAgICAgICB9KS50b3RhbFxuICAgICAgICB9O1xuICAgICAgICBmLmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihoKTtcbiAgICAgIH0sIGYub25wYXltZW50YXV0aG9yaXplZCA9IGFzeW5jICh3KSA9PiB7XG4gICAgICAgIHYoXCJhcHBsZV9wYXlfcGF5bWVudF9hdXRob3JpemVkXCIpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGggPSBhd2FpdCBybCh3LCB5KTtcbiAgICAgICAgICBfKGgpO1xuICAgICAgICB9IGNhdGNoIChoKSB7XG4gICAgICAgICAgZyhoKTtcbiAgICAgICAgfVxuICAgICAgfSwgZi5iZWdpbigpO1xuICAgIH0pLmNhdGNoKChfKSA9PiB7XG4gICAgICB0aHJvdyBmbyhcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIF8pLCB2KFwiYXBwbGVfcGF5X3BheW1lbnRfZXJyb3JcIiwge1xuICAgICAgICBlcnJvcjogX1xuICAgICAgfSksIF87XG4gICAgfSk7XG4gIH1cbiksIHsgbG9nX186IEllLCBlcnJfXzogUWUgfSA9IGsoXCJhdXRobmV0LWdvb2dsZXBheVwiKSwgYWwgPSBjZShcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgZm9ybUNhbGxiYWNrczogdCB9KSA9PiB7XG4gICAgSWUoXCJJbml0aWFsaXppbmcgQXV0aG5ldCBHb29nbGVQYXkgZmxvd1wiKTtcbiAgICBjb25zdCByID0ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uYXV0aG9yaXplX25ldCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMSxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH1cbiAgICB9LCBuID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIG1vKTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm4gcjtcbiAgICBJZShcIkdvb2dsZSBQYXkgQ1BNXCIsIG4pO1xuICAgIGNvbnN0IGEgPSBuLm1ldGFkYXRhO1xuICAgIGlmICghYS5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHJldHVybiBRZShcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIiksIHI7XG4gICAgaWYgKEllKFwiTG9hZGluZyBHb29nbGUgUGF5IHNjcmlwdFwiKSwgYXdhaXQgaHIoKSwgIXdpbmRvdy5nb29nbGU/LnBheW1lbnRzPy5hcGkpXG4gICAgICByZXR1cm4gUWUoXCJHb29nbGUgUGF5IFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCByO1xuICAgIEllKFwiR29vZ2xlIFBheSBTREsgbG9hZGVkXCIsIHdpbmRvdy5nb29nbGUucGF5bWVudHMpO1xuICAgIGNvbnN0IGkgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHMgPSBhd2FpdCBOKGkpLCBsID0gcy5tb2RlID09PSBcInNldHVwXCIsIGMgPSBhd2FpdCBRKGksIHMudG9rZW4sIGwsIHZvaWQgMCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGQgPSBWZSh7XG4gICAgICAgIHByZWZpbGw6IHMsXG4gICAgICAgIGdhdGV3YXk6IFwiYXV0aG9yaXplbmV0XCIsXG4gICAgICAgIGdhdGV3YXlNZXJjaGFudElkOiBhLnByb2Nlc3Nvcl9hY2NvdW50X2lkLFxuICAgICAgICBtZXJjaGFudE5hbWU6IGEucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgICAgbWVyY2hhbnRJZDogYS5nb29nbGVfcGF5X21lcmNoYW50X2lkID8/IFwiXCIsXG4gICAgICAgIC8vIFRoaXMgaXMgZm9yIGluaXRpYWwgcGF5bWVudCByZXF1ZXN0IHRvIGNoZWNrIGF2YWlsYWJpbGl0eS4gQWN0dWFsIGBpbml0aWFsUHJldmlld2Agd2lsbCBiZSB1c2VkIHdoZW4gdGhlIFVJIGlzIHNob3duXG4gICAgICAgIGluaXRpYWxQcmV2aWV3OiBjXG4gICAgICB9KSwgbSA9IGF3YWl0IHplKGUuYmFzZVVybCwgZCksIHsgcmVzdWx0OiBmIH0gPSBhd2FpdCBtLmlzUmVhZHlUb1BheShkKTtcbiAgICAgIGlmICghZilcbiAgICAgICAgcmV0dXJuIEllKFwiR29vZ2xlIFBheSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXJcIiksIHI7XG4gICAgfSBjYXRjaCAoZCkge1xuICAgICAgcmV0dXJuIFFlKFwiRXJyb3IgY2hlY2tpbmcgR29vZ2xlIFBheSBhdmFpbGFiaWxpdHlcIiwgZCksIHI7XG4gICAgfVxuICAgIGNvbnN0IHUgPSBhc3luYyAoZCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgUi5hdXRob3JpemVOZXRHb29nbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogdCxcbiAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5kLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IGNcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAobSkge1xuICAgICAgICBRZShcIkdvb2dsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBtKSwgdihcImdvb2dsZV9wYXlfcGF5bWVudF9lcnJvclwiLCB7XG4gICAgICAgICAgZXJyb3I6IG1cbiAgICAgICAgfSksIHQuZ2V0Lm9uQ2hlY2tvdXRFcnJvcihtPy5tZXNzYWdlID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IFUuRW51bS5hdXRob3JpemVfbmV0LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogdVxuICAgIH07XG4gIH1cbiksIGlsID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHQsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICBjb25zdCB7IG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGkgfSA9IGEsIGwgPSBPKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgbW8pLm1ldGFkYXRhLCBjID0gZS5hbnlDZGVDb25uZWN0aW9uLCB1ID0gYXdhaXQgTihjKSwgZCA9IHUubW9kZSA9PT0gXCJzZXR1cFwiLCBtID0gYXdhaXQgUShjLCB1LnRva2VuLCBkLCB2b2lkIDApLCBmID0gVmUoe1xuICAgICAgcHJlZmlsbDogdSxcbiAgICAgIGdhdGV3YXk6IFwiYXV0aG9yaXplbmV0XCIsXG4gICAgICBnYXRld2F5TWVyY2hhbnRJZDogbC5wcm9jZXNzb3JfYWNjb3VudF9pZCxcbiAgICAgIG1lcmNoYW50TmFtZTogbC5wcm9jZXNzb3JfYWNjb3VudF9uYW1lLFxuICAgICAgbWVyY2hhbnRJZDogbC5nb29nbGVfcGF5X21lcmNoYW50X2lkID8/IFwiXCIsXG4gICAgICBpbml0aWFsUHJldmlldzogbSxcbiAgICAgIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGlcbiAgICB9KTtcbiAgICB2KFwiZ29vZ2xlX3BheV9mbG93X3N0YXJ0ZWRcIiwge1xuICAgICAgcHJvY2Vzc29yX25hbWU6IHIucHJvY2Vzc29yX25hbWUsXG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogaVxuICAgIH0pO1xuICAgIGNvbnN0IHkgPSBhd2FpdCB6ZShlLmJhc2VVcmwsIGYpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBfID0gYXdhaXQgeS5sb2FkUGF5bWVudERhdGEoZik7XG4gICAgICBJZShcIkdvb2dsZSBQYXkgUGF5bWVudCBkYXRhXCIsIF8pO1xuICAgICAgY29uc3QgZyA9IHdyKHQsIF8pLCB3ID0gRyhnLCBuLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgICB2KFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgICAgLi4ud1xuICAgICAgfSk7XG4gICAgICBjb25zdCBoID0gXy5wYXltZW50TWV0aG9kRGF0YT8udG9rZW5pemF0aW9uRGF0YT8udG9rZW47XG4gICAgICBpZiAoIWgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHBheW1lbnQgdG9rZW4gcmVjZWl2ZWQgZnJvbSBHb29nbGUgUGF5XCIpO1xuICAgICAgY29uc3QgYiA9IGF3YWl0IFooYywge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiByLnByb3ZpZGVyLFxuICAgICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogcixcbiAgICAgICAgLi4ucSh3LCB1LmNoZWNrb3V0X3NldHRpbmdzKSxcbiAgICAgICAgY3VzdG9tZXJfbGFuZ3VhZ2U6IGllKClcbiAgICAgIH0pO1xuICAgICAgSWUoXCJTdGFydCBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgYik7XG4gICAgICBjb25zdCBTID0gYXdhaXQgeChjLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogdS50b2tlbixcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogci5wcm92aWRlcixcbiAgICAgICAgICBtb2JpbGVfd2FsbGV0X3BheW1lbnRfZGF0YToge1xuICAgICAgICAgICAgZGF0YURlc2NyaXB0b3I6IFwiQ09NTU9OLkdPT0dMRS5JTkFQUC5QQVlNRU5UXCIsXG4gICAgICAgICAgICBkYXRhVmFsdWU6IHdpbmRvdy5idG9hKGgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghUy5wYXltZW50X21ldGhvZHM/LlswXT8uaWQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIFBNIElEIGZvdW5kXCIpO1xuICAgICAgcmV0dXJuIHJlKHtcbiAgICAgICAgbG9nUHJlZml4OiBcImF1dGhuZXQtZ29vZ2xlcGF5XCIsXG4gICAgICAgIGFueUNkZUNvbm5lY3Rpb246IGMsXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiB3LFxuICAgICAgICBjb25maXJtUmVzdWx0OiBTLFxuICAgICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICB0aHJvdyBRZShcIkdvb2dsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBfKSwgdihcImdvb2dsZV9wYXlfcGF5bWVudF9lcnJvclwiLCB7XG4gICAgICAgIGVycm9yOiBfXG4gICAgICB9KSwgbmV3IEVycm9yKF8/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogeXQsIGVycl9fOiBzbCB9ID0gayhcImN5YnMtZnJhbWVcIiksIGNsID0gKGUsIHQpID0+IHtcbiAgY29uc3QgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7XG4gIHIubmFtZSA9IFwiY2FyZGluYWxfY29sbGVjdGlvbl9pZnJhbWVcIiwgci5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCIsIHIuc3R5bGUud2lkdGggPSBcIjEwcHhcIiwgci5zdHlsZS5oZWlnaHQgPSBcIjEwcHhcIjtcbiAgY29uc3QgbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmb3JtXCIpO1xuICBuLmFjdGlvbiA9IGUsIG4ubWV0aG9kID0gXCJQT1NUXCIsIG4udGFyZ2V0ID0gci5uYW1lO1xuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICByZXR1cm4gYS50eXBlID0gXCJoaWRkZW5cIiwgYS5uYW1lID0gXCJKV1RcIiwgYS52YWx1ZSA9IHQsIG4uYXBwZW5kQ2hpbGQoYSksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQociksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobiksIHsgZm9ybTogbiwgZGV0YWNoOiAoKSA9PiB7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyKSwgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChuKTtcbiAgfSB9O1xufSwgbGwgPSBhc3luYyAoZSkgPT4gbmV3IFByb21pc2UoKHQsIHIpID0+IHtcbiAgY29uc3QgeyBwb3N0VXJsOiBuLCBhY2Nlc3NUb2tlbjogYSB9ID0gZSwgaSA9IG5ldyBVUkwobikub3JpZ2luLCB7IGZvcm06IHMsIGRldGFjaDogbCB9ID0gY2wobiwgYSk7XG4gIHl0KFwiQXR0YWNoZWQgZGV2aWNlIGRhdGEgY29sbGVjdG9yXCIpO1xuICBjb25zdCBjID0gKGQpID0+IHtcbiAgICBpZiAoZC5vcmlnaW4gIT09IGkpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgbSA9IEpTT04ucGFyc2UoZC5kYXRhKTtcbiAgICBpZiAoeXQoXCJSZWNlaXZlZCBldmVudCBmcm9tIGRldmljZSBkYXRhIGNvbGxlY3RvcjpcIiwgbSksIG0uTWVzc2FnZVR5cGUgPT09IFwicHJvZmlsZS5jb21wbGV0ZWRcIikge1xuICAgICAgdChtKSwgdSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfSwgdSA9ICgpID0+IHtcbiAgICBsKCksIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBjKTtcbiAgfTtcbiAgdHJ5IHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgYyksIHl0KFwiQXR0YWNoZWQgbGlzdGVuZXIgdG8gd2luZG93XCIpLCBzLnN1Ym1pdCgpLCB5dChcIlN1Ym1pdHRlZCBmb3JtXCIpO1xuICB9IGNhdGNoIChkKSB7XG4gICAgc2woXCJFcnJvciBzdWJtaXR0aW5nIGZvcm06XCIsIGQpLCB1KCksIHIoZCk7XG4gIH1cbn0pLCB1bCA9IChlKSA9PiB7XG4gIGNvbnN0IHsgc3RlcFVwVXJsOiB0LCBhY2Nlc3NUb2tlbjogciwgbWVyY2hhbnREYXRhOiBuLCBpZnJhbWU6IGEsIGhvc3Q6IGkgfSA9IGUsIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZm9ybVwiKTtcbiAgcy5hY3Rpb24gPSB0LCBzLm1ldGhvZCA9IFwiUE9TVFwiLCBzLnRhcmdldCA9IGEubmFtZTtcbiAgY29uc3QgbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgbC50eXBlID0gXCJoaWRkZW5cIiwgbC5uYW1lID0gXCJKV1RcIiwgbC52YWx1ZSA9IHI7XG4gIGNvbnN0IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gIHJldHVybiBjLnR5cGUgPSBcImhpZGRlblwiLCBjLm5hbWUgPSBcIk1EXCIsIGMudmFsdWUgPSBuLCBzLmFwcGVuZENoaWxkKGwpLCBzLmFwcGVuZENoaWxkKGMpLCBpLmFwcGVuZENoaWxkKHMpLCBzO1xufSwgeyBsb2dfXzogRGUsIGVycl9fOiBfbyB9ID0gayhcImN5YnNcIiksIHlvID0geiQxLm9iamVjdCh7XG4gIHN0ZXBfdXBfdXJsOiB6JDEuc3RyaW5nKCksXG4gIGFjY2Vzc190b2tlbjogeiQxLnN0cmluZygpLFxuICBkZF91cmw6IEQoeiQxLnN0cmluZygpKSxcbiAgZGRfdG9rZW46IEQoeiQxLnN0cmluZygpKSxcbiAgbWVyY2hhbnRfZGF0YTogeiQxLnN0cmluZygpXG59KSwgZGwgPSBcIlVuYWJsZSB0byBwcm9jZXNzIHlvdXIgY3JlZGl0IGNhcmQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuXCIsIHBsID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IHlvLnNhZmVQYXJzZShlKTtcbiAgaWYgKCF0LnN1Y2Nlc3MpXG4gICAgdGhyb3cgX28oYEN5YmVyc291cmNlIDNEUyBpcyByZXF1aXJlZCBidXQgdXNlciBhY3Rpb24gaXMgbWFsZm9ybWVkLiBHb3Q6ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCksIG5ldyBFcnJvcihkbCk7XG4gIHJldHVybiB0LmRhdGE7XG59LCBtbCA9IChlKSA9PiBlLnR5cGUgPT09IFwiY3liZXJzb3VyY2VfcGF5ZXJfYXV0aFwiLCBmbCA9IGFzeW5jIChlKSA9PiB7XG4gIGNvbnN0IHsgc3RlcFVwVXJsOiB0LCBhY2Nlc3NUb2tlbjogciwgbWVyY2hhbnREYXRhOiBuLCBpZnJhbWU6IGEsIGhvc3Q6IGksIGNhbmNlbEJ1dHRvbjogcyB9ID0gZSwgbCA9IG5ldyBVUkwodCkub3JpZ2luO1xuICByZXR1cm4gbmV3IFByb21pc2UoKGMpID0+IHtcbiAgICBjb25zdCB1ID0gKCkgPT4ge1xuICAgICAgRGUoXCJDbGVhbmluZyB1cCBDeWJlcnNvdXJjZSAzRFMgZmxvd1wiKSwgcy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZCksIGkucmVtb3ZlKCk7XG4gICAgfSwgZCA9ICgpID0+IHtcbiAgICAgIERlKFwiQ3liZXJzb3VyY2UgM0RTIGNhbmNlbGxlZFwiKSwgYyh7IHN0YXR1czogRi5DQU5DRUxMRUQsIGNsZWFudXA6IHUgfSk7XG4gICAgfSwgZiA9IHlyKGEsIChnKSA9PiB7XG4gICAgICBEZShcIkN5YmVyc291cmNlIDNEUyBjb21wbGV0ZWQgd2l0aCBzdGF0dXM6XCIsIGcpLCBjKHsgc3RhdHVzOiBnLnN0YXR1cywgY2xlYW51cDogdSB9KSwgeSgpO1xuICAgIH0sIGwsIFwicGluZy0zZHMtc3RhdHVzXCIsIGxuKSwgeSA9IEtuKHtcbiAgICAgIGVsZW1lbnRzOiB7IGhvc3Q6IGksIGNhbmNlbEJ1dHRvbjogcyB9LFxuICAgICAgcG9sbGluZ0ludGVydmFsOiBmLFxuICAgICAgcmVzb2x2ZTogKGcpID0+IHtcbiAgICAgICAgYyh7IHN0YXR1czogZy5zdGF0dXMsIGNsZWFudXA6IHUgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZCksIHVsKHtcbiAgICAgIHN0ZXBVcFVybDogdCxcbiAgICAgIGFjY2Vzc1Rva2VuOiByLFxuICAgICAgbWVyY2hhbnREYXRhOiBuLFxuICAgICAgaWZyYW1lOiBhLFxuICAgICAgaG9zdDogaVxuICAgIH0pLnN1Ym1pdCgpO1xuICB9KTtcbn0sIGhvID0gYXN5bmMgKGUpID0+IHtcbiAgY29uc3QgdCA9IHBsKGUpLCB7IHN0ZXBfdXBfdXJsOiByLCBhY2Nlc3NfdG9rZW46IG4sIGRkX3VybDogYSwgZGRfdG9rZW46IGksIG1lcmNoYW50X2RhdGE6IHMgfSA9IHQ7XG4gIGlmIChhICYmIGkpIHtcbiAgICBjb25zdCBtID0gYXdhaXQgbGwoe1xuICAgICAgcG9zdFVybDogYSxcbiAgICAgIGFjY2Vzc1Rva2VuOiBpXG4gICAgfSk7XG4gICAgRGUoXCJEZXZpY2UgZGF0YSBjb2xsZWN0aW9uIGNvbXBsZXRlZCB3aXRoIHN0YXR1czpcIiwgbS5TdGF0dXMpO1xuICB9IGVsc2VcbiAgICBfbyhcIk5vIGRldmljZSBkYXRhIGNvbGxlY3Rpb24gVVJMIG9yIHRva2VuIHByb3ZpZGVkXCIpO1xuICBjb25zdCB7IGhvc3Q6IGwsIGlmcmFtZTogYywgY2FuY2VsQnV0dG9uOiB1IH0gPSAkdChcIlwiLCB7IG5hbWU6IFwiY2FyZGluYWxfYXV0aF9pZnJhbWVcIiB9KTtcbiAgRGUoXCJSdW5uaW5nIEN5YmVyc291cmNlIDNEUyBmbG93XCIpO1xuICBjb25zdCBkID0gYXdhaXQgZmwoe1xuICAgIHN0ZXBVcFVybDogcixcbiAgICBhY2Nlc3NUb2tlbjogbixcbiAgICBtZXJjaGFudERhdGE6IHMsXG4gICAgaWZyYW1lOiBjLFxuICAgIGhvc3Q6IGwsXG4gICAgY2FuY2VsQnV0dG9uOiB1XG4gIH0pO1xuICBpZiAoZC5jbGVhbnVwKCksIGQuc3RhdHVzID09PSBGLkZBSUxVUkUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gIGlmIChkLnN0YXR1cyA9PT0gRi5DQU5DRUxMRUQpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gIGlmIChkLnN0YXR1cyA9PT0gRi5TVUNDRVNTKSB7XG4gICAgRGUoXCIzRFMgdmVyaWZpY2F0aW9uIHN1Y2NlZWRlZFwiKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZVxuICAgIGN0KGQuc3RhdHVzKTtcbn0sIHsgbG9nX186IF9sLCBlcnJfXzogZ28gfSA9IGsoXCJwb2NreXQtY2NcIiksIHlsID0geiQxLm9iamVjdCh7XG4gIFwib3AtcG9ja3l0LTNkcy11cmxcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLXBvY2t5dC10eG4tbm9cIjogeiQxLnN0cmluZygpLFxuICBcIm9wLXBvY2t5dC1yZWYtbm9cIjogeiQxLnN0cmluZygpXG59KSwgaGwgPSAoZSkgPT4ge1xuICBjb25zdCB0ID0geWwuc2FmZVBhcnNlKGUpO1xuICBpZiAoIXQuc3VjY2Vzcykge1xuICAgIGNvbnN0IHIgPSBcIlVuYWJsZSB0byBwcm9jZXNzIHlvdXIgY3JlZGl0IGNhcmQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuXCIsIG4gPSBgUG9ja3l0IDNEUyBpcyByZXF1aXJlZCBidXQgaGVhZGVycyBhcmUgbWFsZm9ybWVkLiBHb3Q6ICR7SlNPTi5zdHJpbmdpZnkoZSl9YDtcbiAgICB0aHJvdyBnbyhuKSwgbmV3IEVycm9yKHIpO1xuICB9XG4gIHJldHVybiB0LmRhdGE7XG59LCB3byA9IChlKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdCA9IG5ldyBVUkwoZSA/PyBcIlwiKS5zZWFyY2hQYXJhbXMuZ2V0KFwidmF1bHRJZFwiKTtcbiAgICBpZiAoIXQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyB2YXVsdCBJRCBmb3VuZCBpbiAzRFMgdmVyaWZpY2F0aW9uIHJlc3VsdFwiKTtcbiAgICByZXR1cm4gX2woYDNEUyB2ZXJpZmljYXRpb24gc3VjY2Vzcy4gW1ZhdWx0IElEOiAke3R9XWApLCB0O1xuICB9IGNhdGNoICh0KSB7XG4gICAgY29uc3QgciA9IFwiRXJyb3IgdmVyaWZ5aW5nIDNEUyB2ZXJpZmljYXRpb24gcmVzdWx0LlwiO1xuICAgIHRocm93IGdvKHIsIGBSZXN1bHRpbmcgVVJMOiAke2V9LlxuRXJyb3I6ICR7YWUodCl9YCksIG5ldyBFcnJvcihyKTtcbiAgfVxufSwgcnIgPSAoZSwgdCkgPT4gbmV3IFVSTChlKS5zZWFyY2hQYXJhbXMuZ2V0KHQpLCBnbCA9IChlKSA9PiBlPy5bXCJvcC1wb2NreXQtM2RzLXVybFwiXSAhPT0gdm9pZCAwLCB3bCA9IGFzeW5jIChlLCB0KSA9PiB7XG4gIGNvbnN0IHIgPSBobCh0KSwgbiA9IGF3YWl0IFluKHsgdXJsOiByW1wib3AtcG9ja3l0LTNkcy11cmxcIl0sIGJhc2VVcmw6IGUgfSk7XG4gIHJldHVybiB7XG4gICAgZXhpc3RpbmdfY2M6IHtcbiAgICAgIHZhdWx0X2lkOiB3byhuLmhyZWYgPz8gXCJcIiksXG4gICAgICB0cmFuc2FjdGlvbl9ubzogcltcIm9wLXBvY2t5dC10eG4tbm9cIl0sXG4gICAgICByZWZlcmVuY2Vfbm86IHJbXCJvcC1wb2NreXQtcmVmLW5vXCJdXG4gICAgfVxuICB9O1xufSwgeyBsb2dfXzogR3IgfSA9IGsoXCJzdHJpcGUtY2NcIiksIHZsID0geiQxLm9iamVjdCh7XG4gIHN0cmlwZV9wazogeiQxLnN0cmluZygpLFxuICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKCksXG4gIHN0cmlwZV9wbV9pZDogeiQxLnN0cmluZygpXG59KSwgdm8gPSBhc3luYyAoZSkgPT4ge1xuICB2KFwiM2RzX3N0cmlwZV9yZWRpcmVjdFwiLCB7XG4gICAgLi4uZVxuICB9KSwgR3IoYOKUnCBVc2luZyBzdHJpcGUgM0RTIGZsb3cgW0NsaWVudCBTZWNyZXQ6ICR7ZS5jbGllbnRfc2VjcmV0LnN1YnN0cmluZygwLCA4KX0uLi5dYCksIGF3YWl0IHJzKGUpLCB2KFwiM2RzX3N0cmlwZV9jb21wbGV0ZVwiKSwgR3IoXCLilbAgU3RyaXBlIDNEUyBmbG93IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIik7XG59LCBibCA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSB2bC5zYWZlUGFyc2UoZSk7XG4gIGlmICghdC5zdWNjZXNzKVxuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaXBlIDNEUyBtZXRhZGF0YSBoYXMgdW5leHBlY3RlZCBmb3JtYXQ6ICR7SlNPTi5zdHJpbmdpZnkodC5lcnJvci5lcnJvcnMpfWApO1xuICByZXR1cm4ge1xuICAgIHN0cmlwZV9wazogdC5kYXRhLnN0cmlwZV9wayxcbiAgICBjbGllbnRfc2VjcmV0OiB0LmRhdGEuY2xpZW50X3NlY3JldCxcbiAgICBzdHJpcGVfcG1faWQ6IHQuZGF0YS5zdHJpcGVfcG1faWRcbiAgfTtcbn0sIFBsID0gNCwgeyBsb2dfXzogVGUsIGVycl9fOiBSdCB9ID0gayhcInVuaWZpZWQtY2NcIiksIEVsID0gYXN5bmMgKHtcbiAgY29udGV4dDogZSxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICBub25DZGVGb3JtSW5wdXRzOiByLFxuICBmb3JtQ2FsbGJhY2tzOiBuLFxuICBjdXN0b21QYXJhbXM6IGFcbn0pID0+IHtcbiAgVGUoXCLilJwgUnVubmluZyB1bmlmaWVkIENDIGZsb3cuLi5cIiwgeyBjaGVja291dFBheW1lbnRNZXRob2Q6IHQgfSk7XG4gIGNvbnN0IGkgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHMgPSBhd2FpdCBOKGkpO1xuICBUZShg4pScIFZhbGlkYXRpbmcgbm9uLUNERSBmb3JtIGZpZWxkcyBbTW9kZTogJHtzLm1vZGV9XWApO1xuICBjb25zdCBsID0gRyhyLCBuLmdldC5vblZhbGlkYXRpb25FcnJvciksIGMgPSB7XG4gICAgc2Vzc2lvbl9pZDogZS5lbGVtZW50c1Nlc3Npb25JZCxcbiAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdCxcbiAgICBub25fY2RlX2Zvcm1fZmllbGRzOiBsLFxuICAgIGV4dHJhX21ldGFkYXRhOiB7XG4gICAgICBvcmlnaW46IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sXG4gICAgICAvLyBGb3IgZGVidWdnaW5nIHB1cnBvc2VzIGluIHRoZSBjaGVja291dCBhdHRlbXB0IGxvZ3NcbiAgICAgIGRldmljZVRva2VuOiB6bigpXG4gICAgfSxcbiAgICB1c2VfdW5pZmllZF9jY19mbG93OiB0cnVlLFxuICAgIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzoge1xuICAgICAgbGluZV9pdGVtczogcy5saW5lX2l0ZW1zLFxuICAgICAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiBzLmFtb3VudF90b3RhbF9hdG9tXG4gICAgfSxcbiAgICBwYXltZW50X3JvdXRlX2lkOiBhLnBheW1lbnRSb3V0ZUlkXG4gIH07XG4gIFJ0KGEsIGMpLCBUZShg4pScIFRva2VuaXppbmcgY2FyZCBpbmZvIGluIFBhcnRpYWwgUE1zIFtTZXNzaW9uOiAke2UuZWxlbWVudHNTZXNzaW9uSWR9XWApO1xuICBjb25zdCB1ID0gYXdhaXQgVW4oYS5jdXJyZW50Q2RlQ29ubmVjdGlvbnMsIHtcbiAgICBzZXNzaW9uX2lkOiBlLmVsZW1lbnRzU2Vzc2lvbklkXG4gIH0pO1xuICBKbih1LCBuLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gIGNvbnN0IGQgPSBhd2FpdCBEbihpLCBjKTtcbiAgaWYgKFRlKFwi4pScIHN0YXJ0UGYgcmVzdWx0XCIsIGQpLCBkLmNoZWNrb3V0X3N1Y2Nlc3NfcmVzcG9uc2UpXG4gICAgcmV0dXJuIGJvKHMubW9kZSwgZCk7XG4gIGlmICghZC5jaGVja291dF9hdHRlbXB0X2lkKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IG5vIGNoZWNrb3V0IGF0dGVtcHQgSUQgZnJvbSBQRiByZXN1bHRcIik7XG4gIHJldHVybiBDbCh7XG4gICAgY29udGV4dDogZSxcbiAgICBwcmVmaWxsOiBzLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgY29tbW9uQ2hlY2tvdXRQYXJhbXM6IGMsXG4gICAgYW55Q2RlQ29ubmVjdGlvbjogaSxcbiAgICBzdGFydFBmUmVzdWx0OiBkLFxuICAgIGNoZWNrb3V0QXR0ZW1wdElkOiBkLmNoZWNrb3V0X2F0dGVtcHRfaWRcbiAgfSk7XG59LCBDbCA9IGFzeW5jIChlKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb250ZXh0OiB0LFxuICAgIHByZWZpbGw6IHIsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogbixcbiAgICBjb21tb25DaGVja291dFBhcmFtczogYSxcbiAgICBhbnlDZGVDb25uZWN0aW9uOiBpLFxuICAgIHN0YXJ0UGZSZXN1bHQ6IHMsXG4gICAgY2hlY2tvdXRBdHRlbXB0SWQ6IGxcbiAgfSA9IGU7XG4gIGxldCBjID0gcztcbiAgZm9yIChsZXQgdSA9IDA7IHUgPCBQbDsgdSsrKSB7XG4gICAgVGUoYOKUnCBSdW5uaW5nIGNvbmZpcm0gbG9vcCBpdGVyYXRpb24gJHt1fWApLCB2KFwidW5pZmllZF9jY19jb25maXJtX2xvb3BfaXRlcmF0aW9uXCIsIHsgaXRlcmF0aW9uOiB1IH0pO1xuICAgIGNvbnN0IHsgdXNlckFjdGlvbjogZCB9ID0ga2woYyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG0gPSBhd2FpdCBBbCh0LmJhc2VVcmwsIGQsIHIsIG4pO1xuICAgICAgYS5leHRyYV9tZXRhZGF0YSA9IHtcbiAgICAgICAgLi4uYS5leHRyYV9tZXRhZGF0YSxcbiAgICAgICAgLi4ubS5tZXRhZGF0YUZvckNvbmZpcm1TdGVwXG4gICAgICB9LCBUZShcIuKUnCBOZXcgZXh0cmEgbWV0YWRhdGFcIiwgYS5leHRyYV9tZXRhZGF0YSk7XG4gICAgfSBjYXRjaCAobSkge1xuICAgICAgY29uc3QgZiA9IGFlKG0pO1xuICAgICAgUnQoYOKUnCBFcnJvciBpbiBydW5uaW5nIHVzZXIgYWN0aW9uIGluIGl0ZXJhdGlvbiAke3V9LiBDb250aW51aW5nIHRvIGNvbmZpcm0gc3RlcC4uLmAsIGYpLCB2KFwidW5pZmllZF9jY191c2VyX2FjdGlvbl9lcnJvclwiLCB7IGVycm9yX21lc3NhZ2U6IGYsIGl0ZXJhdGlvbjogdSB9KTtcbiAgICB9XG4gICAgaWYgKGMgPSBhd2FpdCB4KGksIHtcbiAgICAgIHNlY3VyZV90b2tlbjogci50b2tlbixcbiAgICAgIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IGwsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IGEuZXh0cmFfbWV0YWRhdGFcbiAgICB9KSwgVGUoYOKUnCBjb25maXJtUGYgcmVzdWx0IChpdGVyYXRpb24gJHt1fSlgLCBjKSwgYy5jaGVja291dF9zdWNjZXNzX3Jlc3BvbnNlKVxuICAgICAgcmV0dXJuIGJvKHIubW9kZSwgYyk7XG4gIH1cbiAgdGhyb3cgdihcInVuaWZpZWRfY2NfdW5leHBlY3RlZF9icmFuY2hcIiwge1xuICAgIHNlY3VyZV90b2tlbjogci50b2tlbixcbiAgICBjaGVja291dF9hdHRlbXB0X2lkOiBjLmNoZWNrb3V0X2F0dGVtcHRfaWQsXG4gICAgY29uZmlybVBGUmVzdWx0OiBjXG4gIH0pLCBuZXcgRXJyb3IoXCJDaGVja291dCBlcnJvciwgcGxlYXNlIHRyeSBhbm90aGVyIHBheW1lbnQgbWV0aG9kXCIpO1xufSwgQWwgPSBhc3luYyAoZSwgdCwgciwgbikgPT4ge1xuICBpZiAodC5fdW5pZmllZF9jY19hY3Rpb25fbmFtZSA9PT0gXCIzRFNfUkVRVUlSRURcIikge1xuICAgIGlmICh0LnR5cGUgPT09IFwic3RyaXBlXzNkc1wiKVxuICAgICAgcmV0dXJuIGF3YWl0IHZvKGJsKHQpKSwgeyBtZXRhZGF0YUZvckNvbmZpcm1TdGVwOiB7fSB9O1xuICAgIGlmIChYbih0KSlcbiAgICAgIHJldHVybiB7IG1ldGFkYXRhRm9yQ29uZmlybVN0ZXA6IHsgYWlyd2FsbGV4OiBhd2FpdCBlbyhlLCB0KSB9IH07XG4gICAgaWYgKG9vKHQpKVxuICAgICAgcmV0dXJuIHsgbWV0YWRhdGFGb3JDb25maXJtU3RlcDogeyBhZHllbjogYXdhaXQgYW8oXG4gICAgICAgIG5bcC5DT1VOVFJZXSxcbiAgICAgICAgdCxcbiAgICAgICAgci5sb2NhbGVcbiAgICAgICkgfSB9O1xuICAgIGlmIChtbCh0KSlcbiAgICAgIHJldHVybiBhd2FpdCBobyh0KSwgeyBtZXRhZGF0YUZvckNvbmZpcm1TdGVwOiB7fSB9O1xuICAgIGlmIChTbCh0KSlcbiAgICAgIHJldHVybiBhd2FpdCBFbyh7IHJlcXVpcmVkX3VzZXJfYWN0aW9uczogW3RdIH0sIGUpLCB7IG1ldGFkYXRhRm9yQ29uZmlybVN0ZXA6IHt9IH07XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQgM0RTIHVzZXIgYWN0aW9uOiAke0pTT04uc3RyaW5naWZ5KHQpfWApO1xuICB9IGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVxdWlyZWQgdXNlciBhY3Rpb246ICR7SlNPTi5zdHJpbmdpZnkodCl9YCk7XG59LCBTbCA9IChlKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIFBvKFtlXSksICEwO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0sIGtsID0gKGUpID0+IHtcbiAgaWYgKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zKSB7XG4gICAgaWYgKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IG5vIHJlcXVpcmVkIHVzZXIgYWN0aW9uc1wiKTtcbiAgICBpZiAoZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IG11bHRpcGxlIHJlcXVpcmVkIHVzZXIgYWN0aW9uc1wiKTtcbiAgfSBlbHNlIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IG5vIHJlcXVpcmVkIHVzZXIgYWN0aW9uc1wiKTtcbiAgY29uc3QgdCA9IE1hLnNhZmVQYXJzZShlLnJlcXVpcmVkX3VzZXJfYWN0aW9uc1swXSk7XG4gIGlmICghdC5zdWNjZXNzKVxuICAgIHRocm93IFJ0KFwiVXNlciBhY3Rpb24gcmF3IHBheWxvYWRcIiwgZS5yZXF1aXJlZF91c2VyX2FjdGlvbnNbMF0pLCBSdChcIlBhcnNpbmcgZXJyb3JcIiwgdC5lcnJvciksIG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IHNjaGVtYSBvZiB1c2VyIGFjdGlvbiBwYXlsb2FkIGlzIG5vdCB2YWxpZFwiKTtcbiAgcmV0dXJuIHtcbiAgICB1c2VyQWN0aW9uOiB0LmRhdGFcbiAgfTtcbn0sIGJvID0gKGUsIHQpID0+IHtcbiAgaWYgKGUgPT09IFwic2V0dXBcIikge1xuICAgIGNvbnN0IHIgPSB0LmNjX3BtX2lkID8/IHQucGF5bWVudF9tZXRob2RzPy5bMF0uaWQ7XG4gICAgaWYgKCFyKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZTogbm8gQ0MgUE0gSUQgb3IgcGF5bWVudF9tZXRob2RzIGZvdW5kIGluIFBGIHJlc3VsdFwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kZTogXCJzZXR1cFwiLFxuICAgICAgcmVzdWx0OiB7XG4gICAgICAgIHBheW1lbnRfbWV0aG9kX2lkOiByXG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXQuY2hlY2tvdXRfc3VjY2Vzc19yZXNwb25zZSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IG5vIGNoZWNrb3V0IHN1Y2Nlc3MgcmVzcG9uc2UgZnJvbSBzdGFydFBGXCIpO1xuICAgIHJldHVybiB7XG4gICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICByZXN1bHQ6IHQuY2hlY2tvdXRfc3VjY2Vzc19yZXNwb25zZVxuICAgIH07XG4gIH1cbn0sIHsgbG9nX186IE0sIGVycl9fOiBxciB9ID0gayhcImNvbW1vbi1jY1wiKTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuY29uc3QgSWwgPSBWKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogbixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIE0oXCLilJwgUnVubmluZyBjb21tb24gQ0MgZmxvdy4uLlwiLCB7IGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCB9KTtcbiAgICBjb25zdCBpID0gZS5hbnlDZGVDb25uZWN0aW9uLCBzID0gYXdhaXQgTihpKTtcbiAgICB2KFwiY29tbW9uX2NjX2Zsb3dfc3RhcnRlZFwiLCB7XG4gICAgICAuLi50LFxuICAgICAgcHJlZmlsbDogc1xuICAgIH0pO1xuICAgIGNvbnN0IGwgPSBzLmZpbmFsX2ZlYXR1cmVfcm9sbG91dF9zZXR0aW5ncz8udW5pZmllZF9jYyA/PyAwO1xuICAgIE0oYOKUnCBVbmlmaWVkIENDIHJvbGxvdXQ6ICR7TWF0aC5yb3VuZChsICogMTAwKX0lYCk7XG4gICAgY29uc3QgYyA9IE1hdGgucmFuZG9tKCksIHUgPSBjIDwgbCwgZCA9IHtcbiAgICAgIHJvbGw6IGMsXG4gICAgICB1bmlmaWVkQ0NSb2xsb3V0UmF0aW86IGwsXG4gICAgICB1c2VVbmlmaWVkQ0NGbG93OiB1XG4gICAgfTtcbiAgICBpZiAodSlcbiAgICAgIHJldHVybiBNKGDilJwgUGlja2VkIHVuaWZpZWQgQ0MgZmxvdyAoJHtjfSB2cyAke2x9KWApLCB2KFwidW5pZmllZF9jY19mbG93X3BpY2tlZFwiLCBkKSwgRWwoe1xuICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgICAgIGN1c3RvbVBhcmFtczogYSxcbiAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICB9KTtcbiAgICBNKGDilJwgUGlja2VkIGxlZ2FjeSBDQyBmbG93ICgke2N9IHZzICR7bH0pYCksIHYoXCJsZWdhY3lfY2NfZmxvd19waWNrZWRcIiwgZCksIE0oYOKUnCBWYWxpZGF0aW5nIG5vbi1DREUgZm9ybSBmaWVsZHMgW01vZGU6ICR7cy5tb2RlfV1gKTtcbiAgICBjb25zdCBtID0gRyhcbiAgICAgIHIsXG4gICAgICBuLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIHMuY2hlY2tvdXRfc2V0dGluZ3NcbiAgICApO1xuICAgIHYoXCJiaWxsaW5nX2RldGFpbHNfcmVjZWl2ZWRcIiwge1xuICAgICAgLi4ubVxuICAgIH0pO1xuICAgIGNvbnN0IGYgPSB7XG4gICAgICBzZXNzaW9uX2lkOiBlLmVsZW1lbnRzU2Vzc2lvbklkLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICBub25fY2RlX2Zvcm1fZmllbGRzOiBtLFxuICAgICAgZXh0cmFfbWV0YWRhdGE6IHtcbiAgICAgICAgb3JpZ2luOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICAgICB9LFxuICAgICAgdXNlX3VuaWZpZWRfY2NfZmxvdzogITEsXG4gICAgICBwYXltZW50X3JvdXRlX2lkOiBhLnBheW1lbnRSb3V0ZUlkLFxuICAgICAgY3VzdG9tZXJfbGFuZ3VhZ2U6IGllKCksXG4gICAgICAuLi5xKG0sIHMuY2hlY2tvdXRfc2V0dGluZ3MpXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgTShg4pScIFRva2VuaXppbmcgY2FyZCBpbmZvIGluIENERSBbU2Vzc2lvbjogJHtlLmVsZW1lbnRzU2Vzc2lvbklkfV1gKTtcbiAgICAgIGNvbnN0IHkgPSBhd2FpdCBVbihhLmN1cnJlbnRDZGVDb25uZWN0aW9ucywge1xuICAgICAgICBzZXNzaW9uX2lkOiBlLmVsZW1lbnRzU2Vzc2lvbklkXG4gICAgICB9KTtcbiAgICAgIGlmIChKbih5LCBuLmdldC5vblZhbGlkYXRpb25FcnJvciksIHMubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICAgIE0oYOKUnCBTZXR0aW5nIHVwIHBheW1lbnQgbWV0aG9kIGluIENERSBbVG9rZW46ICR7cy50b2tlbn1dYCk7XG4gICAgICAgIGNvbnN0IF8gPSBhd2FpdCBIcyhpLCBmKTtcbiAgICAgICAgcmV0dXJuIE0oYOKVsCBTZXR1cCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IFtQTSBJRDogJHtfLnBheW1lbnRfbWV0aG9kX2lkfV1gKSwgeyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogXyB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTShg4pScIEluaXRpYWwgY2hlY2tvdXQgZmxvdy4gQ2hlY2tpbmcgb3V0IGNhcmQgaW5mbyBpbiBDREUgW1Nlc3Npb246ICR7ZS5lbGVtZW50c1Nlc3Npb25JZH1dYCk7XG4gICAgICAgIGNvbnN0IF8gPSBhd2FpdCBPcihpLCBmKTtcbiAgICAgICAgcmV0dXJuIE0oXCLilbAgQ2hlY2tvdXQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5cIiksIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IF8gfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoICh5KSB7XG4gICAgICBpZiAoeSBpbnN0YW5jZW9mIHhuICYmIHkub3JpZ2luYWxFcnJvck1lc3NhZ2UuaW5jbHVkZXMoXCIzRFNfUkVRVUlSRURcIikpIHtcbiAgICAgICAgTShcIuKUnCBDYXJkIHJlcXVpcmVzIDNEUywgc3RhcnRpbmcgbm9uLWxlZ2FjeSBwYXltZW50IGZsb3dcIiksIE0oXCJSZWNlaXZlZCAzRFMgZXJyb3IgcmVzcG9uc2UgaGVhZGVyczpcIiwgeS5yZXNwb25zZS5oZWFkZXJzKSwgdihcIjNkc19yZXF1aXJlZFwiLCB7XG4gICAgICAgICAgLi4udCxcbiAgICAgICAgICAuLi55LnJlc3BvbnNlLmhlYWRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IF8gPSB5LnJlc3BvbnNlLmhlYWRlcnMgPz8ge307XG4gICAgICAgIFwib3AtZXhpc3RpbmctY2MtcG0taWRcIiBpbiBfICYmIChmLmV4aXN0aW5nX2NjX3BtX2lkID0gX1tcIm9wLWV4aXN0aW5nLWNjLXBtLWlkXCJdLCBNKGDilJwgRXhpc3RpbmcgQ0MgUE0gSUQ6ICR7Zi5leGlzdGluZ19jY19wbV9pZH1gKSk7XG4gICAgICAgIGNvbnN0IGcgPSBnbCh5LnJlc3BvbnNlLmhlYWRlcnMpO1xuICAgICAgICBpZiAoZykge1xuICAgICAgICAgIE0oXCLilJwgUG9ja3l0IDNEUyBjYXNlIGRldGVjdGVkLiBHb2luZyB0aHJvdWdoIFBvY2t5dCAzRFMgZmxvdy5cIik7XG4gICAgICAgICAgY29uc3QgQSA9IGF3YWl0IHdsKGUuYmFzZVVybCwgeS5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgICBmLmV4dHJhX21ldGFkYXRhLnBvY2t5dCA9IEE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFhuKHkucmVzcG9uc2UuaGVhZGVycykpIHtcbiAgICAgICAgICBNKFwi4pScIEFpcndhbGxleCAzRFMgY2FzZSBkZXRlY3RlZC4gR29pbmcgdGhyb3VnaCBBaXJ3YWxsZXggM0RTIGZsb3cuXCIpO1xuICAgICAgICAgIGNvbnN0IEEgPSBhd2FpdCBlbyhlLmJhc2VVcmwsIHkucmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICAgICAgZi5leHRyYV9tZXRhZGF0YS5haXJ3YWxsZXggPSBBO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvbyh5LnJlc3BvbnNlLmhlYWRlcnMpKSB7XG4gICAgICAgICAgTShcIuKUnCBBZHllbiAzRFMgY2FzZSBkZXRlY3RlZC4gR29pbmcgdGhyb3VnaCBBZHllbiAzRFMgZmxvdy5cIik7XG4gICAgICAgICAgY29uc3QgQSA9IGF3YWl0IGFvKFxuICAgICAgICAgICAgcltwLkNPVU5UUlldLFxuICAgICAgICAgICAgeS5yZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgICAgcy5sb2NhbGVcbiAgICAgICAgICApO1xuICAgICAgICAgIGYuZXh0cmFfbWV0YWRhdGEuYWR5ZW4gPSBBO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBEbihpLCBmKTtcbiAgICAgICAgTShcIuKUnCBTdGFydCBwYXltZW50IGZsb3cgcmVzdWx0OlwiLCBiKTtcbiAgICAgICAgY29uc3QgUyA9IGIucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmZpbmQoXG4gICAgICAgICAgKEEpID0+IEEudHlwZSA9PT0gXCJjeWJlcnNvdXJjZV9wYXllcl9hdXRoXCJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKFMpIHtcbiAgICAgICAgICBNKFwi4pScIEN5YmVyc291cmNlIDNEUyBjYXNlIGRldGVjdGVkLiBHb2luZyB0aHJvdWdoIEN5YmVyc291cmNlIDNEUyBmbG93LlwiKTtcbiAgICAgICAgICBjb25zdCBBID0geW8ucGFyc2UoUyksICQgPSBhd2FpdCBobyh7XG4gICAgICAgICAgICAuLi5BLFxuICAgICAgICAgICAgX3VuaWZpZWRfY2NfYWN0aW9uX25hbWU6IFwiXCIsXG4gICAgICAgICAgICBfdW5pZmllZF9jY19wY2NzX2lkOiBcIlwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZi5leHRyYV9tZXRhZGF0YS5jeWJlcnNvdXJjZSA9ICQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgQyA9IHkucmVzcG9uc2UuaGVhZGVycz8uW1wib3Atc2hvdWxkLXVzZS1uZXctZmxvd1wiXSAhPT0gXCJ0cnVlXCI7XG4gICAgICAgICFnICYmICFTID8gQyA/IChNKFwi4pScIFVzaW5nIHN0cmlwZSAzRFMgZmxvd1wiKSwgYXdhaXQgdm8oUmwoYikpKSA6IChNKFwi4pScIFVzaW5nIGNvbW1vbiAzRFMgZmxvd1wiKSwgYXdhaXQgRW8oYiwgZS5iYXNlVXJsKSkgOiBNKFwi4pScIFByZS1zdGFydCAzRFMgaXMgc3VjY2Vzc2Z1bCwgb3RoZXIgM0RTIGZsb3dzIHdpbGwgYmUgc2tpcHBlZC5cIik7XG4gICAgICAgIGNvbnN0IEwgPSBiLmNjX3BtX2lkO1xuICAgICAgICBpZiAocy5tb2RlID09PSBcInNldHVwXCIpIHtcbiAgICAgICAgICBNKGDilJwgQ29uZmlybWluZyBwYXltZW50IGZsb3cgW2NjX3BtX2lkOiAke0x9XWApO1xuICAgICAgICAgIGNvbnN0IEEgPSBhd2FpdCB4KGksIHtcbiAgICAgICAgICAgIHNlY3VyZV90b2tlbjogcy50b2tlbixcbiAgICAgICAgICAgIGV4aXN0aW5nX2NjX3BtX2lkOiBMXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgTShcIuKUnCBDb25maXJtIHBheW1lbnQgZmxvdyByZXN1bHQgcmVjZWl2ZWQgUmVzdWx0OlwiLCBBKTtcbiAgICAgICAgICBjb25zdCAkID0gbHQoQSk7XG4gICAgICAgICAgcmV0dXJuIE0oYOKVsCBTZXR1cCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IFtQTSBJRDogJHskLnBheW1lbnRfbWV0aG9kX2lkfV1gKSwgeyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogJCB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIE0oYOKUnCBDaGVja2luZyBvdXQgYWZ0ZXIgM0RTIGZsb3cgW0Zsb3c6ICR7QyA/IFwibGVnYWN5XCIgOiBcIm5ld1wifV1gKTtcbiAgICAgICAgICBjb25zdCBBID0gYXdhaXQgT3IoaSwge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIGV4aXN0aW5nX2NjX3BtX2lkOiBMLFxuICAgICAgICAgICAgZG9fbm90X3VzZV9sZWdhY3lfY2NfZmxvdzogQ1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBNKFwi4pWwIENoZWNrb3V0IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuXCIpLCB7IG1vZGU6IFwiY2hlY2tvdXRcIiwgcmVzdWx0OiBBIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IHFyKFwi4pWwIEVycm9yIGNoZWNraW5nIG91dCBjYXJkIGluZm8gaW4gQ0RFXCIpLCBxcih5KSwgeTtcbiAgICB9XG4gIH1cbiksIFJsID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmZpbmQoKHIpID0+IHIudHlwZSA9PT0gXCJzdHJpcGVfM2RzXCIpO1xuICBpZiAoIXQpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3RyaXBlIDNEUyBhY3Rpb24gZm91bmRcIik7XG4gIHJldHVybiBKaS5wYXJzZSh0KTtcbn0sIEZsID0gW1wiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiLCBcImFkeWVuXCJdLCBQbyA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSBlLmZpbmQoKHIpID0+IEZsLmluY2x1ZGVzKHIudHlwZSkpO1xuICBpZiAoIXQpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gY29tbW9uIDNEUyBhY3Rpb24gZm91bmRcIik7XG4gIHJldHVybiBvYS5wYXJzZSh0KTtcbn0sIEVvID0gYXN5bmMgKGUsIHQpID0+IHtcbiAgY29uc3QgciA9IFBvKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zKTtcbiAgaWYgKHIucmVkaXJlY3RfdXJsID09PSBcIjNEU19DT01QTEVURVwiKSB7XG4gICAgTShcIuKUnCAzRFMgZmxvdyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIpLCB2KFwiM2RzX2NvbXBsZXRlXCIpO1xuICAgIHJldHVybjtcbiAgfVxuICBNKGDilJwgVXNpbmcgY29tbW9uIDNEUyBmbG93IFtVUkw6ICR7ci5yZWRpcmVjdF91cmx9XWApLCB2KFwiM2RzX3JlZGlyZWN0XCIsIHtcbiAgICAuLi5yXG4gIH0pO1xuICBjb25zdCB7IHN0YXR1czogbiB9ID0gYXdhaXQgbGUoeyB1cmw6IHIucmVkaXJlY3RfdXJsLCBiYXNlVXJsOiB0IH0pO1xuICBpZiAoTShg4pWwIDNEUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7bn1dYCksIG4gPT09IEYuQ0FOQ0VMTEVEKVxuICAgIHRocm93IHYoXCIzZHNfY2FuY2VsbGVkXCIpLCBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKG4gPT09IEYuRkFJTFVSRSlcbiAgICB0aHJvdyB2KFwiM2RzX2ZhaWx1cmVcIiksIG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICB2KFwiY29tbW9uXzNkc19jb21wbGV0ZWRcIik7XG59LCBUbCA9IHokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJsb29wXCIpLFxuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJjcnlwdG9cIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBtZXJjaGFudF9pZDogeiQxLnN0cmluZygpLFxuICAgIGVudGl0eV9pZDogeiQxLnN0cmluZygpLFxuICAgIGFwaV90b2tlbjogeiQxLnN0cmluZygpLFxuICAgIHN1cHBvcnRlZF9jdXJyZW5jaWVzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgICBlbnZpcm9ubWVudDogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgeyBsb2dfXzogZWUsIGVycl9fOiBObCB9ID0gayhcImxvb3AtY3J5cHRvXCIpLCBMbCA9IGNlKFxuICBhc3luYyAoeyBjb250ZXh0OiBlIH0pID0+IHtcbiAgICBlZShcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgTG9vcCBDcnlwdG8uLi5cIik7XG4gICAgY29uc3QgdCA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBUbCk7XG4gICAgZWUoYGNoZWNrb3V0UGF5bWVudE1ldGhvZDogJHtKU09OLnN0cmluZ2lmeSh0KX1gKSwgZWUoXCJTdGFydGluZyBMb29wIENyeXB0byBmbG93Li4uXCIpO1xuICAgIGNvbnN0IHIgPSBhd2FpdCBOKGUuYW55Q2RlQ29ubmVjdGlvbiksIG4gPSByLm1vZGUgPT09IFwic2V0dXBcIiwgYSA9IGF3YWl0IFV0KGUuYW55Q2RlQ29ubmVjdGlvbiwge1xuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHRcbiAgICB9KSwgaSA9IGF3YWl0IFEoXG4gICAgICBlLmFueUNkZUNvbm5lY3Rpb24sXG4gICAgICByLnRva2VuLFxuICAgICAgbixcbiAgICAgIHZvaWQgMFxuICAgICk7XG4gICAgaWYgKCFuICYmICF0Lm1ldGFkYXRhLnN1cHBvcnRlZF9jdXJyZW5jaWVzLmluY2x1ZGVzKHIuY3VycmVuY3kpKVxuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBDdXJyZW5jeSAke3IuY3VycmVuY3l9IG5vdCBlbmFibGVkIGZvciBMb29wLiBFbmFibGVkIGN1cnJlbmNpZXM6ICR7dC5tZXRhZGF0YS5zdXBwb3J0ZWRfY3VycmVuY2llc31gXG4gICAgICApO1xuICAgIGlmICghYSB8fCAhYS5uZXh0X2FjdGlvbl9tZXRhZGF0YSlcbiAgICAgIHRocm93IEVycm9yKFwiRmFpbGVkIHRvIGZldGNoIG5lY2Vzc2FyeSBzZXR1cCBkYXRhIGZvciBMb29wXCIpO1xuICAgIGNvbnN0IHMgPSBhLm5leHRfYWN0aW9uX21ldGFkYXRhO1xuICAgIGxldCBsID0gcy5hdXRob3JpemF0aW9uX2Ftb3VudCwgYyA9IHMubWluX2F1dGhvcml6YXRpb25fYW1vdW50O1xuICAgIGNvbnN0IHUgPSBzLmFsbG93X2N1c3RvbWVyX3RvX2Nob29zZV9hdXRoO1xuICAgIGxldCBkO1xuICAgIG4gPyAoZCA9IDAsIGwgPSBNYXRoLm1heChsLCBjKSkgOiAoZCA9IChpID8gaS5hbW91bnRBdG9tIDogci5hbW91bnRfdG90YWxfYXRvbSkgKiBzLnRva2VuX3ByaWNlLCBjID0gTWF0aC5tYXgoYywgZCksIGwgPSBNYXRoLm1heChsLCBjKSk7XG4gICAgY29uc3QgbSA9IGQsIGYgPSB2NCgpLCB5ID0ge1xuICAgICAgcGF5bWVudFVzZEFtb3VudDogbSxcbiAgICAgIHN1Z2dlc3RlZEF1dGhvcml6YXRpb25Vc2RBbW91bnQ6IGwsXG4gICAgICBjdXN0b21lclJlZklkOiBmLFxuICAgICAgbWluQXV0aG9yaXphdGlvblVzZEFtb3VudDogYyxcbiAgICAgIGFsbG93Q3VzdG9tZXJUb0Nob29zZUF1dGg6IHVcbiAgICB9LCBfID0ge1xuICAgICAgYXBpVG9rZW46IHQubWV0YWRhdGEuYXBpX3Rva2VuLFxuICAgICAgZW50aXR5SWQ6IHQubWV0YWRhdGEuZW50aXR5X2lkLFxuICAgICAgbWVyY2hhbnRJZDogdC5tZXRhZGF0YS5tZXJjaGFudF9pZCxcbiAgICAgIGVudmlyb25tZW50OiB0Lm1ldGFkYXRhLmVudmlyb25tZW50XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgd2lkZ2V0UHJvcHM6IHksXG4gICAgICBpbml0TG9vcENvbm5lY3RQcm9wczogX1xuICAgIH07XG4gIH1cbiksIE1sID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICBlZShcIlJ1bm5pbmcgTG9vcCBmbG93Li4uXCIpLCBlZShcImNvbnRleHRcIiwgZSksIGVlKFwiY2hlY2tvdXRQYXltZW50TWV0aG9kXCIsIHQpLCBlZShcIm5vbkNkZUZvcm1JbnB1dHNcIiwgciksIGVlKFwiZmxvd0NhbGxiYWNrc1wiLCBuKSwgZWUoXCJjdXN0b21QYXJhbXNcIiwgYSk7XG4gICAgY29uc3QgaSA9IGF3YWl0IE4oZS5hbnlDZGVDb25uZWN0aW9uKTtcbiAgICBlZShg4pScIFZhbGlkYXRpbmcgbm9uLUNERSBmb3JtIGZpZWxkcyBbTW9kZTogJHtpLm1vZGV9XWApO1xuICAgIGNvbnN0IHMgPSBHKFxuICAgICAgcixcbiAgICAgIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgaS5jaGVja291dF9zZXR0aW5nc1xuICAgICksIGwgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGMgPSBpLm1vZGUgIT09IFwic2V0dXBcIiwgdSA9IHEocywgaS5jaGVja291dF9zZXR0aW5ncyk7XG4gICAgaWYgKCFhKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2hlY2tvdXQgZmFpbGVkLiBGYWlsZWQgdG8gcHJvcGVybHkgc3VibWl0IGZvcm0gZGF0YS5cIik7XG4gICAgaWYgKCFhLnN1Y2Nlc3MpXG4gICAgICB0aHJvdyB2KFwibG9vcF9wYXlfZmxvd19mYWlsdXJlXCIsIGEpLCBuZXcgRXJyb3IoXCJDaGVja291dCBmYWlsZWQuIFN1Y2Nlc3MgaXMgbm90IHRydWUuXCIpO1xuICAgIGNvbnN0IGQgPSBhd2FpdCBaKGUuYW55Q2RlQ29ubmVjdGlvbiwge1xuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgLi4udSxcbiAgICAgIHVzZV9wYXlfZmlyc3RfZmxvdzogYyxcbiAgICAgIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogYyA/IHtcbiAgICAgICAgLy8gVE9ETyBhZGQgY291cG9uIGFuZCBjYXJ0IGFkanVzdGVkIGxpbmUgaXRlbXMgbGF0ZXJcbiAgICAgICAgbGluZV9pdGVtczogaS5saW5lX2l0ZW1zLFxuICAgICAgICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IGkuYW1vdW50X3RvdGFsX2F0b20sXG4gICAgICAgIHByb21vdGlvbl9jb2RlOiBzW3AuUFJPTU9USU9OX0NPREVdXG4gICAgICB9IDogdm9pZCAwLFxuICAgICAgY3VzdG9tZXJfbGFuZ3VhZ2U6IGllKClcbiAgICB9KSwgbSA9IGF3YWl0IHgobCwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBpLnRva2VuLFxuICAgICAgdGhlaXJfcG1faWQ6IGEucGF5bWVudE1ldGhvZC5wYXltZW50TWV0aG9kSWQsXG4gICAgICAvLyBOT1RFOiB3ZSBkbyBoYXZlIHRoZSBjaGVja291dCBhdHRlbXB0IGlkIGhlcmUgZXZlbiBpZiBpdHMgYSBzZXR1cCwgYnV0IGZvciBub3cgd2UgZG9uJ3QgaW5jbHVkZSBpdFxuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGNoZWNrb3V0IGF0dGVtcHQgc3VwcG9ydCBmb3Igc2V0dXAgaW50ZW50cy5cbiAgICAgIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IGMgPyBkLmNoZWNrb3V0X2F0dGVtcHRfaWQgOiB2b2lkIDAsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgbG9vcF9jdXN0b21lcjogYS5jdXN0b21lcixcbiAgICAgICAgbG9vcF9wYXltZW50X21ldGhvZDogYS5wYXltZW50TWV0aG9kLFxuICAgICAgICBsb29wX3N1Y2Nlc3M6IGEuc3VjY2VzcyxcbiAgICAgICAgbG9vcF9wYXlpbl9pZDogYS5wYXlpbklkXG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGVlKGBDb25maXJtIHJlc3VsdDogJHttfWApLCBpLm1vZGUgPT09IFwic2V0dXBcIikge1xuICAgICAgZWUoXCJEb2luZyBwYXltZW50IHNldHVwLi4uXCIpLCBlZShcIuKUnCBDb25maXJtIHBheW1lbnQgZmxvdyByZXN1bHQgcmVjZWl2ZWQgUmVzdWx0OlwiLCBtKTtcbiAgICAgIGNvbnN0IGYgPSBsdChtKTtcbiAgICAgIHJldHVybiBlZShg4pWwIFNldHVwIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgW1BNIElEOiAke2YucGF5bWVudF9tZXRob2RfaWR9XWApLCB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBmIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChlZShcIkRvaW5nIGNoZWNrb3V0Li4uXCIpLCAhbS5wYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZSlcbiAgICAgICAgdGhyb3cgTmwoXCJDaGVja291dCBmYWlsZWQsIG5vIHBheS1maXJzdCBzdWNjZXNzIHJlc3BvbnNlOlwiLCBtKSwgbmV3IEVycm9yKFwiQ2hlY2tvdXQgZmFpbGVkLCBwbGVhc2UgdHJ5IGFnYWluIHdpdGggYW5vdGhlciBwYXltZW50IG1ldGhvZC5cIik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICAgIHJlc3VsdDogbS5wYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZVxuICAgICAgfTtcbiAgICB9XG4gIH1cbiksIHsgbG9nX186IFNlLCBlcnJfXzogeGwgfSA9IGsoXCJwYXlwYWxcIiksIENvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcInBheXBhbFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3QoeyBjbGllbnRfaWQ6IHokMS5zdHJpbmcoKSB9KSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwicGF5cGFsXCIpXG59KSwgRGwgPSBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgY29uc3QgciA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBDbyk7XG4gIGlmICghcilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXlQYWwgQ1BNIG5vdCBmb3VuZCBpbiBhdmFpbGFibGUgcGF5bWVudCBtZXRob2RzXCIpO1xuICByZXR1cm4ge1xuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgc3RhcnRGbG93OiAoKSA9PiBSLnBheXBhbC5ydW4oe1xuICAgICAgY29udGV4dDogZSxcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgIGZvcm1DYWxsYmFja3M6IHQsXG4gICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICBjdXN0b21QYXJhbXM6IHsgc2V0dGluZ3M6IHt9IH1cbiAgICB9KVxuICB9O1xufSwgVWwgPSBWKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogbixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBTZShcIlJ1bm5pbmcgUGF5UGFsIGZsb3cuLi5cIik7XG4gICAgICBjb25zdCBpID0gZS5hbnlDZGVDb25uZWN0aW9uLCBzID0gYXdhaXQgTihpKSwgeyBpc0Fub255bW91czogbCwgdXNlUmVkaXJlY3RGbG93OiBjIH0gPSBhLnNldHRpbmdzID8/IHt9O1xuICAgICAgU2UoXCJWZXJpZnlpbmcgQ1BNLi4uXCIpO1xuICAgICAgY29uc3QgdSA9IENvLnBhcnNlKHIpO1xuICAgICAgU2UoXCLilJwgVmFsaWRhdGluZyBub24tQ0RFIGZvcm0gZmllbGRzXCIpO1xuICAgICAgY29uc3QgZCA9IEcodCwgbi5nZXQub25WYWxpZGF0aW9uRXJyb3IsIHtcbiAgICAgICAgLi4ubCA/IEJuKCkgOiB2b2lkIDAsXG4gICAgICAgIC4uLnMuY2hlY2tvdXRfc2V0dGluZ3NcbiAgICAgIH0pLCBtID0gcShkLCBzLmNoZWNrb3V0X3NldHRpbmdzKTtcbiAgICAgIFNlKGBTdGFydGluZyBwYXltZW50IGZsb3cuLi4gTW9kZTogJHtzLm1vZGV9YCk7XG4gICAgICBjb25zdCBmID0gdjQoKSwgeSA9ICExLCBfID0ge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB1LnByb3ZpZGVyLFxuICAgICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdSxcbiAgICAgICAgdXNlX3BheV9maXJzdF9mbG93OiB5LFxuICAgICAgICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IHkgPyB7XG4gICAgICAgICAgbGluZV9pdGVtczogcy5saW5lX2l0ZW1zLFxuICAgICAgICAgIGRpc3BsYXllZF90b3RhbF9hbW91bnRfYXRvbTogcy5hbW91bnRfdG90YWxfYXRvbVxuICAgICAgICB9IDogdm9pZCAwLFxuICAgICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgICB1c2VfcGF5cGFsX3JlZGlyZWN0X2Zsb3c6IGMsXG4gICAgICAgICAgZnJvbnRlbmRfdG9rZW5fZm9yX3JlZGlyZWN0X2Zsb3c6IGZcbiAgICAgICAgfSxcbiAgICAgICAgLi4ubVxuICAgICAgfSwgZyA9IG5ldyBVUkwoXCIvYXBwL3ByZS1hY3Rpb24vc3RhcnQvXCIsIGUuYmFzZVVybCkudG9TdHJpbmcoKSwgdyA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoXykpLCBoID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgIHN0OiBzLnRva2VuLFxuICAgICAgICByOiB3XG4gICAgICB9KSwgYiA9IGAke2d9PyR7aC50b1N0cmluZygpfWA7XG4gICAgICBpZiAoYylcbiAgICAgICAgdGhyb3cgU2UoXCJTdGFydGluZyByZWRpcmVjdCBtb2RlIGZvciBQYXlQYWwuLi5cIiksIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYiwgYXdhaXQgRHQoMjAgKiAxZTMpLCBuZXcgRXJyb3IoXCJQYXlwYWwgZmxvdyB0aW1lZCBvdXQsIHBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIHBheW1lbnQgbWV0aG9kLlwiKTtcbiAgICAgIGNvbnN0IFMgPSBhd2FpdCBXbihcbiAgICAgICAgXCJQYXlQYWxcIixcbiAgICAgICAgaSxcbiAgICAgICAgZixcbiAgICAgICAgYlxuICAgICAgKTtcbiAgICAgIFNlKFwiUGF5cGFsIGZsb3cgcmVzdWx0XCIsIFMpO1xuICAgICAgY29uc3QgQyA9IHJyKFMuaHJlZiwgXCJjYXR0XCIpLCBMID0gcnIoUy5ocmVmLCBcImFwcHJvdmFsX3Nlc3Npb25faWRcIiksIEEgPSBhd2FpdCB4KGksIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBzLnRva2VuLFxuICAgICAgICBjaGVja291dF9hdHRlbXB0X2lkOiB5ID8gQyA6IHZvaWQgMCxcbiAgICAgICAgdGhlaXJfcG1faWQ6IHkgPyBMIDogdm9pZCAwXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBTZShcIkNvbmZpcm0gcGF5bWVudCBmbG93IHJlc3VsdFwiLCBBKSwgcmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwicGF5cGFsXCIsXG4gICAgICAgIGFueUNkZUNvbm5lY3Rpb246IGksXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdSxcbiAgICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiBkLFxuICAgICAgICBjb25maXJtUmVzdWx0OiBBLFxuICAgICAgICB1c2VQYXlGaXJzdEZsb3c6IHlcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgIHRocm93IHhsKFwiUGF5UGFsIHBheW1lbnQgZXJyb3JcIiwgaSksIHYoXCJjaGVja291dF9lcnJvclwiLCB7IHBheW1lbnRfbWV0aG9kOiBcInBheXBhbFwiLCBlcnJvcjogaSB9KSwgbmV3IEVycm9yKGk/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogbWUsIGVycl9fOiBWciB9ID0gayhcInBvY2t5dC1wYXlwYWxcIiksIEFvID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInBvY2t5dFwiKSxcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwicGF5cGFsXCIpXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgcGF5cGFsX2lmcmFtZV91cmw6IHokMS5zdHJpbmcoKSxcbiAgICB2ZXJpZnlfdG9rZW46IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5jb25zdCBPbCA9IGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICBjb25zdCByID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIEFvKTtcbiAgaWYgKCFyKVxuICAgIHRocm93IG5ldyBFcnJvcihcIlBvY2t5dCBQYXlQYWwgQ1BNIG5vdCBmb3VuZCBpbiBhdmFpbGFibGUgcGF5bWVudCBtZXRob2RzXCIpO1xuICByZXR1cm4ge1xuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgc3RhcnRGbG93OiAoKSA9PiBSLnBvY2t5dFBheXBhbC5ydW4oe1xuICAgICAgY29udGV4dDogZSxcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgIGZvcm1DYWxsYmFja3M6IHQsXG4gICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICBjdXN0b21QYXJhbXM6IHsgc2V0dGluZ3M6IHt9IH1cbiAgICB9KVxuICB9O1xufSwgamwgPSBWKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogbixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIG1lKFwiUnVubmluZyBQb2NreXQgUGF5cGFsIGZsb3cuLi5cIik7XG4gICAgY29uc3QgaSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgcyA9IGF3YWl0IE4oaSk7XG4gICAgbWUoXCJWZXJpZnlpbmcgQ1BNLi4uXCIpO1xuICAgIGNvbnN0IGwgPSBBby5wYXJzZSh0KTtcbiAgICBtZShcIuKUnCBWYWxpZGF0aW5nIG5vbi1DREUgZm9ybSBmaWVsZHNcIik7XG4gICAgY29uc3QgYyA9IGE/LnNldHRpbmdzLCB1ID0gRyhcbiAgICAgIHIsXG4gICAgICBuLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIGM/LmRlZmF1bHRGaWVsZFZhbHVlc1xuICAgICksIGQgPSBxKHUsIHMuY2hlY2tvdXRfc2V0dGluZ3MpO1xuICAgIG1lKGBTdGFydGluZyBwYXltZW50IGZsb3cuLi4gTW9kZTogJHtzLm1vZGV9YCk7XG4gICAgY29uc3QgbSA9IHY0KCksIGYgPSBzLm1vZGUgIT09IFwic2V0dXBcIiwgeSA9IHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IGwucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbCxcbiAgICAgIHVzZV9wYXlfZmlyc3RfZmxvdzogZixcbiAgICAgIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogZiA/IHtcbiAgICAgICAgLy8gVE9ETyBhZGQgY291cG9uIGFuZCBjYXJ0IGFkanVzdGVkIGxpbmUgaXRlbXMgbGF0ZXJcbiAgICAgICAgbGluZV9pdGVtczogcy5saW5lX2l0ZW1zLFxuICAgICAgICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IHMuYW1vdW50X3RvdGFsX2F0b21cbiAgICAgIH0gOiB2b2lkIDAsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgdXNlX3BheXBhbF9yZWRpcmVjdF9mbG93OiAhIWE/LnNldHRpbmdzPy51c2VSZWRpcmVjdEZsb3csXG4gICAgICAgIGZyb250ZW5kX3Rva2VuX2Zvcl9yZWRpcmVjdF9mbG93OiBtXG4gICAgICB9LFxuICAgICAgLi4uZFxuICAgIH0sIF8gPSBuZXcgVVJMKFwiL2FwcC9wcmUtYWN0aW9uL3N0YXJ0L1wiLCBlLmJhc2VVcmwpLnRvU3RyaW5nKCksIGcgPSBidG9hKEpTT04uc3RyaW5naWZ5KHkpKSwgdyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgc3Q6IHMudG9rZW4sXG4gICAgICByOiBnXG4gICAgfSksIGggPSBgJHtffT8ke3cudG9TdHJpbmcoKX1gO1xuICAgIGlmIChhPy5zZXR0aW5ncz8udXNlUmVkaXJlY3RGbG93KVxuICAgICAgdGhyb3cgbWUoXCJTdGFydGluZyByZWRpcmVjdCBtb2RlIGZvciBQYXlQYWwuLi5cIiksIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaCwgYXdhaXQgRHQoMjAgKiAxZTMpLCBuZXcgRXJyb3IoXCJQYXlwYWwgZmxvdyB0aW1lZCBvdXQsIHBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIHBheW1lbnQgbWV0aG9kLlwiKTtcbiAgICBtZShcIlN0YXJ0aW5nIHBvcHVwIG1vZGUgZm9yIFBheVBhbC4uLlwiKSwgbWUoXCJPcGVuaW5nIHBheXBhbCBpZnJhbWUuLi5cIik7XG4gICAgY29uc3QgYiA9IGF3YWl0IFduKFxuICAgICAgXCJQYXlQYWxcIixcbiAgICAgIGksXG4gICAgICBtLFxuICAgICAgaFxuICAgICk7XG4gICAgbWUoXCJQYXlwYWwgZmxvdyByZXN1bHRcIiwgYik7XG4gICAgY29uc3QgUyA9IHdvKGIuaHJlZiksIEMgPSBycihiLmhyZWYsIFwiY2F0dFwiKTtcbiAgICBpZiAoIUMpXG4gICAgICB0aHJvdyBWcihcIkNoZWNrb3V0IGF0dGVtcHQgSUQgbm90IGZvdW5kIGluIHJlZGlyZWN0IFVSTDpcIiwgYi5ocmVmKSwgbmV3IEVycm9yKFwiQ2hlY2tvdXQgYXR0ZW1wdCBJRCBub3QgZm91bmQgaW4gcmVkaXJlY3QgVVJMXCIpO1xuICAgIG1lKGBDb25maXJtaW5nIHBheW1lbnQgZmxvdyB1c2luZyB2YXVsdCBJRCAke1N9YCk7XG4gICAgY29uc3QgTCA9IGF3YWl0IHgoaSwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBzLnRva2VuLFxuICAgICAgdGhlaXJfcG1faWQ6IFMsXG4gICAgICBjaGVja291dF9hdHRlbXB0X2lkOiBmID8gQyA6IHZvaWQgMFxuICAgIH0pO1xuICAgIGlmIChtZShcIkNvbmZpcm0gcGF5bWVudCBmbG93IHJlc3VsdFwiLCBMKSwgcy5tb2RlID09PSBcInNldHVwXCIpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBcInNldHVwXCIsXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIHBheW1lbnRfbWV0aG9kX2lkOiBMLnBheW1lbnRfbWV0aG9kc1swXS5pZFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIGlmICghTC5wYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZSlcbiAgICAgIHRocm93IFZyKFwiQ2hlY2tvdXQgZmFpbGVkLCBubyBwYXktZmlyc3Qgc3VjY2VzcyByZXNwb25zZTpcIiwgTCksIG5ldyBFcnJvcihcIkNoZWNrb3V0IGZhaWxlZCwgcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGFub3RoZXIgcGF5bWVudCBtZXRob2QuXCIpO1xuICAgIHJldHVybiB7XG4gICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICByZXN1bHQ6IEwucGF5X2ZpcnN0X3N1Y2Nlc3NfcmVzcG9uc2VcbiAgICB9O1xuICB9XG4pLCB7IGxvZ19fOiBXLCBlcnJfXzogYnQgfSA9IGsoXCJzdHJpcGUtYWZmaXJtXCIpLCBTbyA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJhZmZpcm1cIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgJGwgPSB6JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIG91cl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm51bGxpc2goKSxcbiAgICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpLCBHbCA9IGNlKFxuICBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgICBXKFwiQ2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBDUE1zIGZvciBTdHJpcGUgQWZmaXJtLi4uXCIpO1xuICAgIGNvbnN0IHIgPSBPKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgU28pO1xuICAgIGlmICghcilcbiAgICAgIHJldHVybiBXKFwiTm8gU3RyaXBlIEFmZmlybSBDUE0gZm91bmRcIiksIHsgaXNBdmFpbGFibGU6ICExLCBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH0gfTtcbiAgICBXKFwiU3RhcnRpbmcgc3RyaXBlIGFmZmlybSBmbG93Li4uXCIpO1xuICAgIGNvbnN0IG4gPSBlLmFueUNkZUNvbm5lY3Rpb247XG4gICAgcmV0dXJuIChhd2FpdCBOKG4pKS5tb2RlID09PSBcInNldHVwXCIgPyAoVyhcIlNldHVwIG1vZGUgaXMgbm90IHN1cHBvcnRlZCBmb3IgU3RyaXBlIEFmZmlybSBmbG93XCIpLCB7IGlzQXZhaWxhYmxlOiAhMSwgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgfSB9KSA6IHtcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKGwpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gUi5zdHJpcGVBZmZpcm0ucnVuKHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0LFxuICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBsID8/IHt9LFxuICAgICAgICAgICAgaW5pdFJlc3VsdDogeyBpc0F2YWlsYWJsZTogITAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChjKSB7XG4gICAgICAgICAgdGhyb3cgYnQoXCJFcnJvciBzdGFydGluZyBBZmZpcm0gZmxvdzpcIiwgYyksIGM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG4pLCBxbCA9IFYoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCwgbm9uQ2RlRm9ybUlucHV0czogciwgZm9ybUNhbGxiYWNrczogbiB9KSA9PiB7XG4gICAgVyhcIlJ1bm5pbmcgU3RyaXBlIEFmZmlybSBwYXktZmlyc3QgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBhID0gZS5hbnlDZGVDb25uZWN0aW9uLCBpID0gYXdhaXQgTihhKTtcbiAgICBXKFwiVmFsaWRhdGluZyBmb3JtIGZpZWxkcy4uLlwiKTtcbiAgICBjb25zdCBzID0gRyhyLCBuLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgdihcImJpbGxpbmdfZGV0YWlsc19yZWNlaXZlZFwiLCB7XG4gICAgICAuLi5zXG4gICAgfSksIFcoXCJDcmVhdGluZyBjYXJ0IGluZm8gZm9yIHBheS1maXJzdCBmbG93Li4uXCIpO1xuICAgIGNvbnN0IGwgPSB7XG4gICAgICBsaW5lX2l0ZW1zOiBpLmxpbmVfaXRlbXMubWFwKChoKSA9PiAoe1xuICAgICAgICBwcmljZV9pZDogaC5wcmljZV9pZCxcbiAgICAgICAgcXVhbnRpdHk6IGgucXVhbnRpdHlcbiAgICAgIH0pKSxcbiAgICAgIHByb21vdGlvbl9jb2RlOiBzW3AuUFJPTU9USU9OX0NPREVdIHx8IHZvaWQgMCxcbiAgICAgIGRpc3BsYXllZF90b3RhbF9hbW91bnRfYXRvbTogaS5hbW91bnRfdG90YWxfYXRvbVxuICAgIH07XG4gICAgVyhcIlN0YXJ0aW5nIHBheS1maXJzdCBwYXltZW50IGZsb3cgZm9yIEFmZmlybS4uLlwiKTtcbiAgICBjb25zdCBjID0gYXdhaXQgWihhLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICB1c2VfcGF5X2ZpcnN0X2Zsb3c6ICEwLFxuICAgICAgcGF5X2ZpcnN0X2Zsb3dfY2FydF9pbmZvOiBsLFxuICAgICAgLi4ucShzLCBpLmNoZWNrb3V0X3NldHRpbmdzKSxcbiAgICAgIGN1c3RvbWVyX2xhbmd1YWdlOiBpZSgpXG4gICAgfSk7XG4gICAgVyhcIlN0YXJ0IHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCBjKTtcbiAgICBjb25zdCB1ID0gJGwucGFyc2UoYy5yZXF1aXJlZF91c2VyX2FjdGlvbnMpLCB7IGNsaWVudF9zZWNyZXQ6IGQgfSA9IHVbMF07XG4gICAgVyhcIkNsaWVudCBzZWNyZXQgZm9yIHBheW1lbnQgaW50ZW50XCIsIGQpO1xuICAgIGNvbnN0IG0gPSBPKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgU28pO1xuICAgIGlmICghbSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlN0cmlwZSBBZmZpcm0gQ1BNIG5vdCBmb3VuZFwiKTtcbiAgICBjb25zdCB7IHN0cmlwZTogZiB9ID0gYXdhaXQgeHQobS5tZXRhZGF0YS5zdHJpcGVfcGssIHtcbiAgICAgIG1vZGU6IFwicGF5bWVudFwiLFxuICAgICAgLy8gVXNlIHBheW1lbnQgbW9kZSBmb3IgcGF5LWZpcnN0IGZsb3dcbiAgICAgIGN1cnJlbmN5OiBpLmN1cnJlbmN5ID8/IFwidXNkXCIsXG4gICAgICBhbW91bnQ6IGkuYW1vdW50X3RvdGFsX2F0b21cbiAgICB9KTtcbiAgICBXKFwiU3RyaXBlIGluc3RhbmNlIGNyZWF0ZWRcIiwgZik7XG4gICAgY29uc3QgeSA9IENlKHMpLCBfID0gYCR7c1twLkZJUlNUX05BTUVdfSAke3NbcC5MQVNUX05BTUVdfWAsIGcgPSB7XG4gICAgICByZXR1cm5fdXJsOiBuZXcgVVJMKFwiL2FwcC8zZHMvc3VjY2Vzcy9cIiwgZS5iYXNlVXJsKS50b1N0cmluZygpLFxuICAgICAgcGF5bWVudF9tZXRob2Q6IHtcbiAgICAgICAgYmlsbGluZ19kZXRhaWxzOiB7XG4gICAgICAgICAgZW1haWw6IHNbcC5FTUFJTF0sXG4gICAgICAgICAgbmFtZTogXyxcbiAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICBsaW5lMTogeS5saW5lMSxcbiAgICAgICAgICAgIGxpbmUyOiB5LmxpbmUyIHx8IHZvaWQgMCxcbiAgICAgICAgICAgIGNpdHk6IHkuY2l0eSxcbiAgICAgICAgICAgIHN0YXRlOiB5LnN0YXRlLFxuICAgICAgICAgICAgY291bnRyeTogeS5jb3VudHJ5LFxuICAgICAgICAgICAgcG9zdGFsX2NvZGU6IHkuemlwX2NvZGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB3ID0ge1xuICAgICAgaGFuZGxlQWN0aW9uczogITFcbiAgICB9O1xuICAgIFcoYENvbmZpcm1pbmcgQWZmaXJtIHBheW1lbnQgd2l0aCBjbGllbnQgc2VjcmV0OiAke2R9YCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZXJyb3I6IGgsIHBheW1lbnRJbnRlbnQ6IGIgfSA9IGF3YWl0IGYuY29uZmlybUFmZmlybVBheW1lbnQoXG4gICAgICAgIGQsXG4gICAgICAgIGcsXG4gICAgICAgIHdcbiAgICAgICk7XG4gICAgICBpZiAoaClcbiAgICAgICAgdGhyb3cgYnQoXCJBZmZpcm0gcGF5bWVudCBjb25maXJtYXRpb24gZXJyb3I6XCIsIGgpLCBuZXcgRXJyb3IoYEFmZmlybSBwYXltZW50IGZhaWxlZDogJHtoLm1lc3NhZ2V9YCk7XG4gICAgICBXKFwiQWZmaXJtIHBheW1lbnQgY29uZmlybWVkIHN1Y2Nlc3NmdWxseVwiLCBiKTtcbiAgICAgIGNvbnN0IFMgPSBiPy5uZXh0X2FjdGlvbj8ucmVkaXJlY3RfdG9fdXJsPy51cmw7XG4gICAgICBpZiAoIVMpXG4gICAgICAgIHJldHVybiBidChcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZCBpbiBLbGFybmEgcGF5bWVudCBjb25maXJtYXRpb25cIiksIG4uZ2V0Lm9uQ2hlY2tvdXRFcnJvcihcIktsYXJuYSBwYXltZW50IGZhaWxlZFwiKSwge1xuICAgICAgICAgIG1vZGU6IFwiY2hlY2tvdXRcIixcbiAgICAgICAgICByZXN1bHQ6IHsgaW52b2ljZV91cmxzOiBbXSwgc3Vic2NyaXB0aW9uX2lkczogW10sIGN1c3RvbWVyX2lkOiBcIlwiLCBwYXltZW50X21ldGhvZF9pZDogXCJcIiB9XG4gICAgICAgIH07XG4gICAgICBXKFwiUGF5bWVudCByZXF1aXJlcyBhZGRpdGlvbmFsIGFjdGlvbiwgc3RhcnRpbmcgM0RTIHZlcmlmaWNhdGlvbi4uLlwiKTtcbiAgICAgIGNvbnN0IHsgc3RhdHVzOiBDIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgIHVybDogUyxcbiAgICAgICAgYmFzZVVybDogZS5iYXNlVXJsLFxuICAgICAgICBmcmFtZVdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICAgIGZyYW1lSGVpZ2h0OiBcIjcwMHB4XCIsXG4gICAgICAgIGZyYW1lVGl0bGU6IFwiQWZmaXJtIHZlcmlmaWNhdGlvblwiXG4gICAgICB9KTtcbiAgICAgIGlmIChDID09PSBGLkZBSUxVUkUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gICAgICBpZiAoQyA9PT0gRi5DQU5DRUxMRUQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gICAgICBXKFwiM0RTIHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuICAgICAgY29uc3QgTCA9IGI/LnBheW1lbnRfbWV0aG9kPy50b1N0cmluZygpID8/IHZvaWQgMCwgQSA9IGF3YWl0IHgoYSwge1xuICAgICAgICBzZWN1cmVfdG9rZW46IGkudG9rZW4sXG4gICAgICAgIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IGMuY2hlY2tvdXRfYXR0ZW1wdF9pZCxcbiAgICAgICAgdGhlaXJfcG1faWQ6IExcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIFcoXCJQYXltZW50IGZsb3cgY29uZmlybWVkXCIsIEEpLCByZSh7XG4gICAgICAgIGxvZ1ByZWZpeDogXCJzdHJpcGUtYWZmaXJtXCIsXG4gICAgICAgIGFueUNkZUNvbm5lY3Rpb246IGEsXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiBzLFxuICAgICAgICBjb25maXJtUmVzdWx0OiBBLFxuICAgICAgICB1c2VQYXlGaXJzdEZsb3c6ICEwXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChoKSB7XG4gICAgICB0aHJvdyBidChcIkVycm9yIGluIEFmZmlybSBwYXltZW50IGZsb3c6XCIsIGgpLCBoO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogSCwgZXJyX186IG5yIH0gPSBrKFwic3RyaXBlLWFmdGVycGF5XCIpLCBrbyA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJhZnRlcnBheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBWbCA9IHokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpLFxuICAgIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSksIHpsID0gY2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICAgIEgoXCJDaGVja2luZyBpZiB0aGVyZSBhcmUgYW55IENQTXMgZm9yIFN0cmlwZSBBZnRlcnBheS4uLlwiKTtcbiAgICBjb25zdCByID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIGtvKTtcbiAgICBpZiAoIXIpXG4gICAgICByZXR1cm4gSChcIk5vIFN0cmlwZSBBZnRlcnBheSBDUE0gZm91bmRcIiksIHsgaXNBdmFpbGFibGU6ICExLCBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH0gfTtcbiAgICBIKFwiU3RhcnRpbmcgc3RyaXBlIGFmdGVycGF5IGZsb3cuLi5cIik7XG4gICAgY29uc3QgbiA9IGUuYW55Q2RlQ29ubmVjdGlvbjtcbiAgICByZXR1cm4gKGF3YWl0IE4obikpLm1vZGUgPT09IFwic2V0dXBcIiA/IChIKFwiU2V0dXAgbW9kZSBub3Qgc3VwcG9ydGVkIGZvciBTdHJpcGUgQWZ0ZXJwYXkgZmxvd1wiKSwgeyBpc0F2YWlsYWJsZTogITEsIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgIH0gfSkgOiB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jIChsKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIFIuc3RyaXBlQWZ0ZXJwYXkucnVuKHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0LFxuICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBsID8/IHt9LFxuICAgICAgICAgICAgaW5pdFJlc3VsdDogeyBpc0F2YWlsYWJsZTogITAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChjKSB7XG4gICAgICAgICAgdGhyb3cgbnIoXCJFcnJvciBzdGFydGluZyBBZnRlcnBheSBmbG93OlwiLCBjKSwgYztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbiksIEJsID0gVihcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LCBub25DZGVGb3JtSW5wdXRzOiByLCBmb3JtQ2FsbGJhY2tzOiBuIH0pID0+IHtcbiAgICBIKFwiUnVubmluZyBTdHJpcGUgQWZ0ZXJwYXkgcGF5LWZpcnN0IGZsb3cuLi5cIik7XG4gICAgY29uc3QgYSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgaSA9IGF3YWl0IE4oYSk7XG4gICAgSChcIlZhbGlkYXRpbmcgZm9ybSBmaWVsZHMuLi5cIik7XG4gICAgY29uc3QgcyA9IEcociwgbi5nZXQub25WYWxpZGF0aW9uRXJyb3IpO1xuICAgIHYoXCJiaWxsaW5nX2RldGFpbHNfcmVjZWl2ZWRcIiwge1xuICAgICAgLi4uc1xuICAgIH0pLCBIKFwiQ3JlYXRpbmcgY2FydCBpbmZvIGZvciBwYXktZmlyc3QgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBsID0ge1xuICAgICAgbGluZV9pdGVtczogaS5saW5lX2l0ZW1zLm1hcCgoaCkgPT4gKHtcbiAgICAgICAgcHJpY2VfaWQ6IGgucHJpY2VfaWQsXG4gICAgICAgIHF1YW50aXR5OiBoLnF1YW50aXR5XG4gICAgICB9KSksXG4gICAgICBwcm9tb3Rpb25fY29kZTogc1twLlBST01PVElPTl9DT0RFXSB8fCB2b2lkIDAsXG4gICAgICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IGkuYW1vdW50X3RvdGFsX2F0b21cbiAgICB9O1xuICAgIEgoXCJTdGFydGluZyBwYXktZmlyc3QgcGF5bWVudCBmbG93IGZvciBBZnRlcnBheS4uLlwiKTtcbiAgICBjb25zdCBjID0gYXdhaXQgWihhLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICB1c2VfcGF5X2ZpcnN0X2Zsb3c6ICEwLFxuICAgICAgcGF5X2ZpcnN0X2Zsb3dfY2FydF9pbmZvOiBsLFxuICAgICAgLi4ucShzLCBpLmNoZWNrb3V0X3NldHRpbmdzKSxcbiAgICAgIGN1c3RvbWVyX2xhbmd1YWdlOiBpZSgpXG4gICAgfSk7XG4gICAgSChcIlN0YXJ0IHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCBjKTtcbiAgICBjb25zdCB1ID0gVmwucGFyc2UoXG4gICAgICBjLnJlcXVpcmVkX3VzZXJfYWN0aW9uc1xuICAgICksIHsgY2xpZW50X3NlY3JldDogZCB9ID0gdVswXTtcbiAgICBIKFwiQ2xpZW50IHNlY3JldCBmb3IgcGF5bWVudCBpbnRlbnRcIiwgZCk7XG4gICAgY29uc3QgbSA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBrbyk7XG4gICAgaWYgKCFtKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3RyaXBlIEFmdGVycGF5IENQTSBub3QgZm91bmRcIik7XG4gICAgY29uc3QgeyBzdHJpcGU6IGYgfSA9IGF3YWl0IHh0KG0ubWV0YWRhdGEuc3RyaXBlX3BrLCB7XG4gICAgICBtb2RlOiBcInBheW1lbnRcIixcbiAgICAgIC8vIFVzZSBwYXltZW50IG1vZGUgZm9yIHBheS1maXJzdCBmbG93XG4gICAgICBjdXJyZW5jeTogaS5jdXJyZW5jeSA/PyBcInVzZFwiLFxuICAgICAgYW1vdW50OiBpLmFtb3VudF90b3RhbF9hdG9tXG4gICAgfSk7XG4gICAgSChcIlN0cmlwZSBpbnN0YW5jZSBjcmVhdGVkXCIsIGYpO1xuICAgIGNvbnN0IHkgPSBDZShzKSwgXyA9IGAke3NbcC5GSVJTVF9OQU1FXX0gJHtzW3AuTEFTVF9OQU1FXX1gLCBnID0ge1xuICAgICAgcmV0dXJuX3VybDogbmV3IFVSTChcIi9hcHAvM2RzL3N1Y2Nlc3MvXCIsIGUuYmFzZVVybCkudG9TdHJpbmcoKSxcbiAgICAgIHBheW1lbnRfbWV0aG9kOiB7XG4gICAgICAgIGJpbGxpbmdfZGV0YWlsczoge1xuICAgICAgICAgIGVtYWlsOiBzW3AuRU1BSUxdLFxuICAgICAgICAgIG5hbWU6IF8sXG4gICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgbGluZTE6IHkubGluZTEsXG4gICAgICAgICAgICBsaW5lMjogeS5saW5lMiB8fCB2b2lkIDAsXG4gICAgICAgICAgICBjaXR5OiB5LmNpdHksXG4gICAgICAgICAgICBzdGF0ZTogeS5zdGF0ZSxcbiAgICAgICAgICAgIGNvdW50cnk6IHkuY291bnRyeSxcbiAgICAgICAgICAgIHBvc3RhbF9jb2RlOiB5LnppcF9jb2RlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgdyA9IHtcbiAgICAgIGhhbmRsZUFjdGlvbnM6ICExXG4gICAgfTtcbiAgICBIKGBDb25maXJtaW5nIEFmdGVycGF5IHBheW1lbnQgd2l0aCBjbGllbnQgc2VjcmV0OiAke2R9YCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGggPSBhd2FpdCBmLmNvbmZpcm1BZnRlcnBheUNsZWFycGF5UGF5bWVudChcbiAgICAgICAgZCxcbiAgICAgICAgZyxcbiAgICAgICAgd1xuICAgICAgKTtcbiAgICAgIGlmIChIKFwiQWZ0ZXJwYXkgcGF5bWVudCBjb25maXJtYXRpb24gcmVzdWx0OlwiLCBoKSwgaC5wYXltZW50SW50ZW50Py5uZXh0X2FjdGlvbj8udHlwZSA9PT0gXCJyZWRpcmVjdF90b191cmxcIikge1xuICAgICAgICBjb25zdCBiID0gaC5wYXltZW50SW50ZW50Py5uZXh0X2FjdGlvbj8ucmVkaXJlY3RfdG9fdXJsPy51cmw7XG4gICAgICAgIGlmICghYilcbiAgICAgICAgICByZXR1cm4gbnIoXCJObyByZWRpcmVjdCBVUkwgZm91bmQgaW4gQWZ0ZXJwYXkgcGF5bWVudCBjb25maXJtYXRpb25cIiksIG4uZ2V0Lm9uQ2hlY2tvdXRFcnJvcihcIkFmdGVycGF5IHBheW1lbnQgZmFpbGVkXCIpLCB7XG4gICAgICAgICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICAgICAgICByZXN1bHQ6IHsgaW52b2ljZV91cmxzOiBbXSwgc3Vic2NyaXB0aW9uX2lkczogW10sIGN1c3RvbWVyX2lkOiBcIlwiLCBwYXltZW50X21ldGhvZF9pZDogXCJcIiB9XG4gICAgICAgICAgfTtcbiAgICAgICAgSChcIkFmdGVycGF5IHZlcmlmaWNhdGlvbiBSZXF1aXJlZCwgc3RhcnRpbmcgdmVyaWZpY2F0aW9uLi4uXCIpO1xuICAgICAgICBjb25zdCB7IHN0YXR1czogUyB9ID0gYXdhaXQgbGUoe1xuICAgICAgICAgIHVybDogYixcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmwsXG4gICAgICAgICAgZnJhbWVXaWR0aDogXCI1MDBweFwiLFxuICAgICAgICAgIGZyYW1lSGVpZ2h0OiBcIjcwMHB4XCIsXG4gICAgICAgICAgZnJhbWVUaXRsZTogXCJBZnRlcnBheSB2ZXJpZmljYXRpb25cIlxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKEgoYOKVsCBBZnRlcnBheSB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7U31dYCksIFMgPT09IEYuQ0FOQ0VMTEVEKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkFmdGVycGF5IHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gICAgICAgIGlmIChTID09PSBGLkZBSUxVUkUpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQWZ0ZXJwYXkgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgICAgICAgSChcIkFmdGVycGF5IHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQsIGNvbmZpcm1pbmcgd2l0aCBiYWNrZW5kLi4uXCIpO1xuICAgICAgICBjb25zdCBDID0gaC5wYXltZW50SW50ZW50Py5wYXltZW50X21ldGhvZD8udG9TdHJpbmcoKSA/PyB2b2lkIDAsIEwgPSBhd2FpdCB4KGEsIHtcbiAgICAgICAgICBzZWN1cmVfdG9rZW46IGkudG9rZW4sXG4gICAgICAgICAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogYy5jaGVja291dF9hdHRlbXB0X2lkLFxuICAgICAgICAgIHRoZWlyX3BtX2lkOiBDXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmUoe1xuICAgICAgICAgIGxvZ1ByZWZpeDogXCJzdHJpcGUtYWZ0ZXJwYXlcIixcbiAgICAgICAgICBhbnlDZGVDb25uZWN0aW9uOiBhLFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IHMsXG4gICAgICAgICAgY29uZmlybVJlc3VsdDogTCxcbiAgICAgICAgICB1c2VQYXlGaXJzdEZsb3c6ICEwXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlXG4gICAgICAgIHRocm93IEgoXCJObyByZWRpcmVjdCBVUkwgZm91bmQgaW4gQWZ0ZXJwYXkgcGF5bWVudCBjb25maXJtYXRpb25cIiksIG5ldyBFcnJvcihcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZCBpbiBBZnRlcnBheSBwYXltZW50IGNvbmZpcm1hdGlvblwiKTtcbiAgICB9IGNhdGNoIChoKSB7XG4gICAgICBucihcIkVycm9yIGluIEFmdGVycGF5IGNoZWNrb3V0IGZsb3c6XCIsIGgpO1xuICAgICAgY29uc3QgYiA9IGggaW5zdGFuY2VvZiBFcnJvciA/IGgubWVzc2FnZSA6IFwiQWZ0ZXJwYXkgcGF5bWVudCBmYWlsZWRcIjtcbiAgICAgIHRocm93IG5ldyBFcnJvcihiKTtcbiAgICB9XG4gIH1cbiksIHsgbG9nX186IEssIGVycl9fOiBvciB9ID0gayhcInN0cmlwZS1rbGFybmFcIiksIElvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImtsYXJuYVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBIbCA9IHokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpLFxuICAgIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSksIEtsID0gY2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICAgIEsoXCJDaGVja2luZyBpZiB0aGVyZSBhcmUgYW55IENQTXMgZm9yIFN0cmlwZSBLbGFybmEuLi5cIik7XG4gICAgY29uc3QgciA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBJbyk7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIEsoXCJObyBTdHJpcGUgS2xhcm5hIENQTSBmb3VuZFwiKSwgeyBpc0F2YWlsYWJsZTogITEsIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgfSB9O1xuICAgIEsoXCJTdGFydGluZyBzdHJpcGUga2xhcm5hIGZsb3cuLi5cIik7XG4gICAgY29uc3QgbiA9IGUuYW55Q2RlQ29ubmVjdGlvbjtcbiAgICByZXR1cm4gKGF3YWl0IE4obikpLm1vZGUgPT09IFwic2V0dXBcIiA/IChLKFwiU2V0dXAgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBTdHJpcGUgS2xhcm5hIGZsb3dcIiksIHsgaXNBdmFpbGFibGU6ICExLCBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICB9IH0pIDoge1xuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAobCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBSLnN0cmlwZUtsYXJuYS5ydW4oe1xuICAgICAgICAgICAgY29udGV4dDogZSxcbiAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHQsXG4gICAgICAgICAgICBjdXN0b21QYXJhbXM6IGwgPz8ge30sXG4gICAgICAgICAgICBpbml0UmVzdWx0OiB7IGlzQXZhaWxhYmxlOiAhMCB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGMpIHtcbiAgICAgICAgICB0aHJvdyBvcihcIkVycm9yIHN0YXJ0aW5nIEtsYXJuYSBmbG93OlwiLCBjKSwgYztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbiksIFlsID0gVihcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LCBub25DZGVGb3JtSW5wdXRzOiByLCBmb3JtQ2FsbGJhY2tzOiBuIH0pID0+IHtcbiAgICBLKFwiUnVubmluZyBTdHJpcGUgS2xhcm5hIHBheS1maXJzdCBmbG93Li4uXCIpO1xuICAgIGNvbnN0IGEgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGkgPSBhd2FpdCBOKGEpO1xuICAgIEsoXCJWYWxpZGF0aW5nIGZvcm0gZmllbGRzLi4uXCIpO1xuICAgIGNvbnN0IHMgPSBHKHIsIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKTtcbiAgICB2KFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgIC4uLnNcbiAgICB9KSwgSyhcIkNyZWF0aW5nIGNhcnQgaW5mbyBmb3IgcGF5LWZpcnN0IGZsb3cuLi5cIik7XG4gICAgY29uc3QgbCA9IHtcbiAgICAgIGxpbmVfaXRlbXM6IGkubGluZV9pdGVtcy5tYXAoKGgpID0+ICh7XG4gICAgICAgIHByaWNlX2lkOiBoLnByaWNlX2lkLFxuICAgICAgICBxdWFudGl0eTogaC5xdWFudGl0eVxuICAgICAgfSkpLFxuICAgICAgcHJvbW90aW9uX2NvZGU6IHNbcC5QUk9NT1RJT05fQ09ERV0gfHwgdm9pZCAwLFxuICAgICAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiBpLmFtb3VudF90b3RhbF9hdG9tXG4gICAgfTtcbiAgICBLKFwiU3RhcnRpbmcgcGF5LWZpcnN0IHBheW1lbnQgZmxvdyBmb3IgS2xhcm5hLi4uXCIpO1xuICAgIGNvbnN0IGMgPSBhd2FpdCBaKGEsIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdCxcbiAgICAgIHVzZV9wYXlfZmlyc3RfZmxvdzogITAsXG4gICAgICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IGwsXG4gICAgICAuLi5xKHMsIGkuY2hlY2tvdXRfc2V0dGluZ3MpLFxuICAgICAgY3VzdG9tZXJfbGFuZ3VhZ2U6IGllKClcbiAgICB9KTtcbiAgICBLKFwiU3RhcnQgcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIGMpO1xuICAgIGNvbnN0IHUgPSBIbC5wYXJzZShjLnJlcXVpcmVkX3VzZXJfYWN0aW9ucyksIHsgY2xpZW50X3NlY3JldDogZCB9ID0gdVswXTtcbiAgICBLKFwiQ2xpZW50IHNlY3JldCBmb3IgcGF5bWVudCBpbnRlbnRcIiwgZCk7XG4gICAgY29uc3QgbSA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBJbyk7XG4gICAgaWYgKCFtKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3RyaXBlIEtsYXJuYSBDUE0gbm90IGZvdW5kXCIpO1xuICAgIGNvbnN0IHsgc3RyaXBlOiBmIH0gPSBhd2FpdCB4dChtLm1ldGFkYXRhLnN0cmlwZV9waywge1xuICAgICAgbW9kZTogXCJwYXltZW50XCIsXG4gICAgICAvLyBVc2UgcGF5bWVudCBtb2RlIGZvciBwYXktZmlyc3QgZmxvd1xuICAgICAgY3VycmVuY3k6IGkuY3VycmVuY3kgPz8gXCJ1c2RcIixcbiAgICAgIGFtb3VudDogaS5hbW91bnRfdG90YWxfYXRvbVxuICAgIH0pO1xuICAgIEsoXCJTdHJpcGUgaW5zdGFuY2UgY3JlYXRlZFwiLCBmKTtcbiAgICBjb25zdCB5ID0gQ2UocyksIF8gPSBgJHtzW3AuRklSU1RfTkFNRV19ICR7c1twLkxBU1RfTkFNRV19YCwgZyA9IHtcbiAgICAgIHJldHVybl91cmw6IG5ldyBVUkwoXCIvYXBwLzNkcy9zdWNjZXNzL1wiLCBlLmJhc2VVcmwpLnRvU3RyaW5nKCksXG4gICAgICBwYXltZW50X21ldGhvZDoge1xuICAgICAgICBiaWxsaW5nX2RldGFpbHM6IHtcbiAgICAgICAgICBlbWFpbDogc1twLkVNQUlMXSxcbiAgICAgICAgICBuYW1lOiBfLFxuICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgIGxpbmUxOiB5LmxpbmUxLFxuICAgICAgICAgICAgbGluZTI6IHkubGluZTIgfHwgdm9pZCAwLFxuICAgICAgICAgICAgY2l0eTogeS5jaXR5LFxuICAgICAgICAgICAgc3RhdGU6IHkuc3RhdGUsXG4gICAgICAgICAgICBjb3VudHJ5OiB5LmNvdW50cnksXG4gICAgICAgICAgICBwb3N0YWxfY29kZTogeS56aXBfY29kZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHcgPSB7XG4gICAgICBoYW5kbGVBY3Rpb25zOiAhMVxuICAgIH07XG4gICAgSyhgQ29uZmlybWluZyBLbGFybmEgcGF5bWVudCB3aXRoIGNsaWVudCBzZWNyZXQ6ICR7ZH1gKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaCA9IGF3YWl0IGYuY29uZmlybUtsYXJuYVBheW1lbnQoZCwgZywgdyk7XG4gICAgICBpZiAoSyhcIktsYXJuYSBwYXltZW50IGNvbmZpcm1hdGlvbiByZXN1bHQ6XCIsIGgpLCBoLnBheW1lbnRJbnRlbnQ/Lm5leHRfYWN0aW9uPy50eXBlID09PSBcInJlZGlyZWN0X3RvX3VybFwiKSB7XG4gICAgICAgIGNvbnN0IGIgPSBoLnBheW1lbnRJbnRlbnQ/Lm5leHRfYWN0aW9uPy5yZWRpcmVjdF90b191cmw/LnVybDtcbiAgICAgICAgaWYgKCFiKVxuICAgICAgICAgIHJldHVybiBvcihcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZCBpbiBLbGFybmEgcGF5bWVudCBjb25maXJtYXRpb25cIiksIG4uZ2V0Lm9uQ2hlY2tvdXRFcnJvcihcIktsYXJuYSBwYXltZW50IGZhaWxlZFwiKSwge1xuICAgICAgICAgICAgbW9kZTogXCJjaGVja291dFwiLFxuICAgICAgICAgICAgcmVzdWx0OiB7IGludm9pY2VfdXJsczogW10sIHN1YnNjcmlwdGlvbl9pZHM6IFtdLCBjdXN0b21lcl9pZDogXCJcIiwgcGF5bWVudF9tZXRob2RfaWQ6IFwiXCIgfVxuICAgICAgICAgIH07XG4gICAgICAgIEsoXCJLbGFybmEgdmVyaWZpY2F0aW9uIFJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIik7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzOiBTIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgICAgdXJsOiBiLFxuICAgICAgICAgIGJhc2VVcmw6IGUuYmFzZVVybCxcbiAgICAgICAgICBmcmFtZVdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICAgICAgZnJhbWVIZWlnaHQ6IFwiNzAwcHhcIixcbiAgICAgICAgICBmcmFtZVRpdGxlOiBcIktsYXJuYSB2ZXJpZmljYXRpb25cIlxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKEsoYOKVsCBLbGFybmEgdmVyaWZpY2F0aW9uIGNvbXBsZXRlZCBbU3RhdHVzOiAke1N9XWApLCBTID09PSBGLkNBTkNFTExFRClcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJLbGFybmEgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgICAgaWYgKFMgPT09IEYuRkFJTFVSRSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJLbGFybmEgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgICAgICAgSyhcIktsYXJuYSB2ZXJpZmljYXRpb24gY29tcGxldGVkLCBjb25maXJtaW5nIHdpdGggYmFja2VuZC4uLlwiKTtcbiAgICAgICAgY29uc3QgQyA9IGgucGF5bWVudEludGVudD8ucGF5bWVudF9tZXRob2Q/LnRvU3RyaW5nKCkgPz8gdm9pZCAwLCBMID0gYXdhaXQgeChhLCB7XG4gICAgICAgICAgc2VjdXJlX3Rva2VuOiBpLnRva2VuLFxuICAgICAgICAgIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IGMuY2hlY2tvdXRfYXR0ZW1wdF9pZCxcbiAgICAgICAgICB0aGVpcl9wbV9pZDogQ1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlKHtcbiAgICAgICAgICBsb2dQcmVmaXg6IFwic3RyaXBlLWtsYXJuYVwiLFxuICAgICAgICAgIGFueUNkZUNvbm5lY3Rpb246IGEsXG4gICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogcyxcbiAgICAgICAgICBjb25maXJtUmVzdWx0OiBMLFxuICAgICAgICAgIHVzZVBheUZpcnN0RmxvdzogITBcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgdGhyb3cgSyhcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZCBpbiBLbGFybmEgcGF5bWVudCBjb25maXJtYXRpb25cIiksIG5ldyBFcnJvcihcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZCBpbiBLbGFybmEgcGF5bWVudCBjb25maXJtYXRpb25cIik7XG4gICAgfSBjYXRjaCAoaCkge1xuICAgICAgb3IoXCJFcnJvciBpbiBLbGFybmEgY2hlY2tvdXQgZmxvdzpcIiwgaCk7XG4gICAgICBjb25zdCBiID0gaCBpbnN0YW5jZW9mIEVycm9yID8gaC5tZXNzYWdlIDogXCJLbGFybmEgcGF5bWVudCBmYWlsZWRcIjtcbiAgICAgIHRocm93IG5ldyBFcnJvcihiKTtcbiAgICB9XG4gIH1cbiksIGh0ID0gXCJvanMtc3RyaXBlLWxpbmstYnRuXCIsIHsgbG9nX186IHosIGVycl9fOiB6ciB9ID0gayhcInN0cmlwZS1saW5rXCIpLCBXbCA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJzdHJpcGVfbGlua1wiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBKbCA9IHokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpLCBabCA9IGNlKFxuICBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgICBjb25zdCByID0gZS5jdXN0b21Jbml0UGFyYW1zLnN0cmlwZUxpbms7XG4gICAgeihcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgU3RyaXBlIExpbmsuLi5cIik7XG4gICAgY29uc3QgbiA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBXbCk7XG4gICAgeihcIlN0YXJ0aW5nIHN0cmlwZSBsaW5rIGZsb3cuLi5cIik7XG4gICAgY29uc3QgYSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgaSA9IGF3YWl0IE4oYSksIHMgPSBpLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICB6KFwiQ3JlYXRpbmcgc3RyaXBlIGVsZW1lbnRzLi4uXCIpO1xuICAgIGNvbnN0IGwgPSBhd2FpdCBRKGEsIGkudG9rZW4sIHMsIHZvaWQgMCksIHsgZWxlbWVudHM6IGMsIHN0cmlwZTogdSB9ID0gYXdhaXQgeHQobi5tZXRhZGF0YS5zdHJpcGVfcGssIHtcbiAgICAgIG1vZGU6IFwic2V0dXBcIixcbiAgICAgIGN1cnJlbmN5OiBsLmN1cnJlbmN5LFxuICAgICAgc2V0dXBfZnV0dXJlX3VzYWdlOiBcIm9mZl9zZXNzaW9uXCIsXG4gICAgICBwYXltZW50TWV0aG9kQ3JlYXRpb246IFwibWFudWFsXCJcbiAgICB9KSwgZCA9IGMuY3JlYXRlKFwibGlua0F1dGhlbnRpY2F0aW9uXCIpO1xuICAgIHooXCJDcmVhdGluZyBleHByZXNzIGNoZWNrb3V0Li4uXCIpO1xuICAgIGNvbnN0IG0gPSBjLmNyZWF0ZShcImV4cHJlc3NDaGVja291dFwiLCB7XG4gICAgICBidXR0b25IZWlnaHQ6IHI/LmJ1dHRvbkhlaWdodCxcbiAgICAgIHBheW1lbnRNZXRob2RzOiB7XG4gICAgICAgIGFtYXpvblBheTogXCJuZXZlclwiLFxuICAgICAgICBhcHBsZVBheTogXCJuZXZlclwiLFxuICAgICAgICBnb29nbGVQYXk6IFwibmV2ZXJcIixcbiAgICAgICAgcGF5cGFsOiBcIm5ldmVyXCJcbiAgICAgIH1cbiAgICB9KSwgZiA9IChnLCB3KSA9PiB7XG4gICAgICBsZXQgaCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZyk7XG4gICAgICBoIHx8ICh6cihgUmVjb21tYW5kZWQgdG8gcmVuZGVyIGEgY29udGFpbmVyIHdpdGggJHtnfSB0byBhdm9pZCByZW5kZXJpbmcgaW4gdGhlIGJvZHlgKSwgaCA9IGRvY3VtZW50LmJvZHkpO1xuICAgICAgY29uc3QgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICBoPy5hcHBlbmRDaGlsZChiKSwgZC5tb3VudChiKTtcbiAgICAgIGxldCBTID0gITEsIEMgPSAhMTtcbiAgICAgIGlmIChkLm9uY2UoXCJyZWFkeVwiLCAoKSA9PiB7XG4gICAgICAgIEMgPSAhMCwgcj8ub25BdXRoZW50aWNhdGlvbkVsZW1lbnRSZWFkeT8uKCk7XG4gICAgICB9KSwgdykge1xuICAgICAgICBiLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiLCBiLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiLCBiLnN0eWxlLnRvcCA9IFwiLTEwMDBweFwiLCBiLnN0eWxlLmxlZnQgPSBcIi0xMDAwcHhcIiwgYi5zdHlsZS56SW5kZXggPSBcIi0xXCIsIGQub24oXCJjaGFuZ2VcIiwgKEEpID0+IHtcbiAgICAgICAgICBTID0gQS5jb21wbGV0ZSB8fCAhIUEudmFsdWUuZW1haWwsIEMgJiYgcj8ub25BdXRoZW50aWNhdGlvblN0YXR1c0NoYW5nZT8uKFMpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgTCA9IGIucXVlcnlTZWxlY3RvcihcImlmcmFtZVwiKTtcbiAgICAgICAgTCAmJiBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdXQgPSBMLm9mZnNldEhlaWdodCA+IDE2MDtcbiAgICAgICAgICBDICYmIHI/Lm9uQXV0aGVudGljYXRpb25TdGF0dXNDaGFuZ2U/LihTIHx8IHV0KTtcbiAgICAgICAgfSkub2JzZXJ2ZShMLCB7IGF0dHJpYnV0ZXM6ICEwLCBhdHRyaWJ1dGVGaWx0ZXI6IFtcInN0eWxlXCJdIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGQ7XG4gICAgfSwgeSA9IChnKSA9PiB7XG4gICAgICBtLm1vdW50KGcgfHwgYCMke2h0fWApO1xuICAgIH0sIF8gPSAoKSA9PiB7XG4gICAgICBtLnVubW91bnQoKTtcbiAgICB9O1xuICAgIHJldHVybiByPy5kb05vdE1vdW50T25Jbml0ID8geihcIk5PVCBtb3VudGluZyBzdHJpcGUgbGluayBidXR0b24gKGRvTm90TW91bnRPbkluaXQgaXMgdHJ1ZSlcIikgOiAoeihcIk1vdW50aW5nIHN0cmlwZSBsaW5rIGJ1dHRvbi4uLlwiKSwgeSgpKSwgcj8uc2lsZW50bHlDaGVja0F1dGhlbnRpY2F0aW9uICYmICh6KGBTaWxlbnRseSBtb3VudGluZyBsaW5rIGF1dGhlbnRpY2F0aW9uIGVsZW1lbnQgYXQgIyR7aHR9Li4uYCksIGYoYCMke2h0fWAsICEwKSksIG0ub24oXCJjbGlja1wiLCBhc3luYyAoZykgPT4ge1xuICAgICAgaWYgKHooXCJTdHJpcGUgTGluayBidXR0b24gY2xpY2tlZFwiKSwgcj8ub3ZlcnJpZGVMaW5rU3VibWl0ICYmICFhd2FpdCByLm92ZXJyaWRlTGlua1N1Ym1pdCgpKSB7XG4gICAgICAgIHooXCJTdHJpcGUgTGluayBzdWJtaXQgYWJvcnRlZCBieSBvdmVycmlkZUxpbmtTdWJtaXRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGcucmVzb2x2ZSgpO1xuICAgIH0pLCBtLm9uKFwiY29uZmlybVwiLCBhc3luYyAoZykgPT4ge1xuICAgICAgeihcIlN0cmlwZSBMaW5rIHdpbmRvdyBjb25maXJtZWRcIiwgZyk7XG4gICAgICBjb25zdCB3ID0gYXdhaXQgdS5jcmVhdGVQYXltZW50TWV0aG9kKHtcbiAgICAgICAgZWxlbWVudHM6IGMsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGJpbGxpbmdfZGV0YWlsczogZy5iaWxsaW5nRGV0YWlsc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHcuZXJyb3IgPyAoenIoXCJlcnJvclwiLCB3LmVycm9yKSwgdC5nZXQub25DaGVja291dEVycm9yKHcuZXJyb3IubWVzc2FnZSA/PyBcIlN0cmlwZSBMaW5rIHVua25vd24gZXJyb3JcIikpIDogKHooXCJwYXltZW50TWV0aG9kXCIsIHcucGF5bWVudE1ldGhvZCksIFIuc3RyaXBlTGluay5ydW4oe1xuICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgICAgZm9ybUNhbGxiYWNrczogdCxcbiAgICAgICAgY3VzdG9tUGFyYW1zOiB7IHN0cmlwZVBNOiB3LnBheW1lbnRNZXRob2QgfSxcbiAgICAgICAgaW5pdFJlc3VsdDogeyBpc0F2YWlsYWJsZTogITAgfVxuICAgICAgfSkpO1xuICAgIH0pLCB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBjb250cm9sbGVyOiB7XG4gICAgICAgIG1vdW50QnV0dG9uOiB5LFxuICAgICAgICBkaXNtb3VudEJ1dHRvbjogXyxcbiAgICAgICAgbW91bnRMaW5rQXV0aGVudGljYXRpb25FbGVtZW50OiAoZykgPT4gZihnLCAhMSksXG4gICAgICAgIHdhaXRGb3JCdXR0b25Ub01vdW50OiBhc3luYyAoKSA9PiBhd2FpdCBldShodClcbiAgICAgIH1cbiAgICB9O1xuICB9XG4pLCBRbCA9IFYoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgIGN1c3RvbVBhcmFtczogYVxuICB9KSA9PiB7XG4gICAgeihcIlJ1bm5pbmcgU3RyaXBlIExpbmsgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gZS5hbnlDZGVDb25uZWN0aW9uLCBzID0gYXdhaXQgTihpKTtcbiAgICB6KFwiTWVyZ2luZyBQTSBmaWVsZHMgd2l0aCBmb3JtIGZpZWxkcy4uLlwiKTtcbiAgICBjb25zdCBsID0gWGwociwgYS5zdHJpcGVQTSksIGMgPSBHKGwsIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKTtcbiAgICB2KFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgIC4uLmNcbiAgICB9KSwgeihcIlN0YXJ0aW5nIHBheW1lbnQgZmxvdy4uLlwiKTtcbiAgICBjb25zdCB1ID0gYXdhaXQgWihpLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICB0aGVpcl9leGlzdGluZ19wbV9pZDogYS5zdHJpcGVQTS5pZCxcbiAgICAgIC4uLnEoYywgcy5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICBjdXN0b21lcl9sYW5ndWFnZTogaWUoKVxuICAgIH0pO1xuICAgIHooXCJTdGFydCBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgdSk7XG4gICAgY29uc3QgbSA9IEpsLnBhcnNlKHUucmVxdWlyZWRfdXNlcl9hY3Rpb25zKVswXS5vdXJfZXhpc3RpbmdfcG1faWQ7XG4gICAgaWYgKHMubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICB6KFwiRG9pbmcgcGF5bWVudCBzZXR1cC4uLlwiKTtcbiAgICAgIGNvbnN0IGYgPSBhd2FpdCB4KGksIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBzLnRva2VuLFxuICAgICAgICBleGlzdGluZ19jY19wbV9pZDogbVxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogbHQoZikgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgeihcIkRvaW5nIGNoZWNrb3V0Li4uXCIpO1xuICAgICAgY29uc3QgZiA9IHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBzLnRva2VuLFxuICAgICAgICBwYXltZW50X2lucHV0OiB7XG4gICAgICAgICAgcHJvdmlkZXJfdHlwZTogdC5wcm92aWRlclxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21lcl9lbWFpbDogY1twLkVNQUlMXSxcbiAgICAgICAgY3VzdG9tZXJfZmlyc3RfbmFtZTogY1twLkZJUlNUX05BTUVdLFxuICAgICAgICBjdXN0b21lcl9sYXN0X25hbWU6IGNbcC5MQVNUX05BTUVdLFxuICAgICAgICBjdXN0b21lcl9hZGRyZXNzOiBDZShjKSxcbiAgICAgICAgY3VzdG9tZXJfc2hpcHBpbmdfYWRkcmVzczogT3QoYywgcy5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICAgIHByb21vdGlvbl9jb2RlOiBjW3AuUFJPTU9USU9OX0NPREVdLFxuICAgICAgICBsaW5lX2l0ZW1zOiBzLmxpbmVfaXRlbXMsXG4gICAgICAgIHRvdGFsX2Ftb3VudF9hdG9tOiBzLmFtb3VudF90b3RhbF9hdG9tLFxuICAgICAgICBjYW5jZWxfYXRfZW5kOiAhMSxcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHRcbiAgICAgIH07XG4gICAgICByZXR1cm4geyBtb2RlOiBcImNoZWNrb3V0XCIsIHJlc3VsdDogYXdhaXQgX3IoaSwgZikgfTtcbiAgICB9XG4gIH1cbiksIFhsID0gKGUsIHQpID0+IHtcbiAgY29uc3QgciA9IHsgLi4uZSB9LCBbbiwgLi4uYV0gPSB0LmJpbGxpbmdfZGV0YWlscy5uYW1lPy50cmltKCk/LnNwbGl0KC9cXHMrLykgPz8gW10sIGkgPSBhLmpvaW4oXCIgXCIpIHx8IHZvaWQgMDtcbiAgcltwLkVNQUlMXSA9IHJbcC5FTUFJTF0gfHwgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgdC5saW5rPy5lbWFpbCB8fCB0LmJpbGxpbmdfZGV0YWlscy5lbWFpbCB8fCBcIm9wX3VuZmlsbGVkQGdldG9wZW5wYXkuY29tXCIsIHJbcC5aSVBfQ09ERV0gPSByW3AuWklQX0NPREVdIHx8IHQuYmlsbGluZ19kZXRhaWxzLmFkZHJlc3M/LnBvc3RhbF9jb2RlIHx8IFwiMDAwMDBcIiwgcltwLkNPVU5UUlldID0gcltwLkNPVU5UUlldIHx8IHQuYmlsbGluZ19kZXRhaWxzLmFkZHJlc3M/LmNvdW50cnkgfHwgXCJVU1wiO1xuICBjb25zdCBzID0gcltwLkZJUlNUX05BTUVdIHx8IG4gfHwgXCJcIiwgbCA9IHJbcC5MQVNUX05BTUVdIHx8IGkgfHwgXCJcIjtcbiAgcmV0dXJuIHMgfHwgbCA/IChyW3AuRklSU1RfTkFNRV0gPSBzLCByW3AuTEFTVF9OQU1FXSA9IGwpIDogKHJbcC5GSVJTVF9OQU1FXSA9IFwiX09QX1VOS05PV05cIiwgcltwLkxBU1RfTkFNRV0gPSBcIlwiKSwgeihcIkZpbmFsIGZvcm0gaW5wdXRzOlwiLCByKSwgcjtcbn0sIGV1ID0gKGUpID0+IG5ldyBQcm9taXNlKCh0KSA9PiB7XG4gIGNvbnN0IHIgPSAoKSA9PiB7XG4gICAgY29uc3QgbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO1xuICAgIG4gPyB0KG4pIDogcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHIpO1xuICB9O1xuICByKCk7XG59KSwgeyBsb2dfXzogdGUsIGVycl9fOiB0dSB9ID0gayhcInN0cmlwZS1wclwiKSwgcnUgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS51bmlvbihbeiQxLmxpdGVyYWwoXCJhcHBsZV9wYXlcIiksIHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKV0pLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJzdHJpcGVcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBzdHJpcGVfcGs6IHokMS5zdHJpbmcoKVxuICB9KVxufSksIG51ID0gY2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICAgIHRlKFwiQ2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBDUE1zIGZvciBTdHJpcGUgUFIuLi5cIik7XG4gICAgY29uc3QgciA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBydSk7XG4gICAgdGUoXCJJbml0aWFsaXppbmcgU3RyaXBlIFBSIGZsb3cuLi5cIik7XG4gICAgY29uc3QgbiA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgYSA9IGF3YWl0IE4obiksIGkgPSBhLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICB0ZShcIkdldHRpbmcgaW5pdGlhbCBwcmV2aWV3IGFtb3VudFwiKTtcbiAgICBjb25zdCBzID0gYXdhaXQgUShuLCBhLnRva2VuLCBpLCB2b2lkIDApLCBsID0gYXdhaXQgWGkoXG4gICAgICByLm1ldGFkYXRhLnN0cmlwZV9wayxcbiAgICAgIHMuYW1vdW50QXRvbSxcbiAgICAgIHMuY3VycmVuY3ksXG4gICAgICBpXG4gICAgKTtcbiAgICB0ZShcIkNoZWNraW5nIGlmIGNhbiBtYWtlIHBheW1lbnRcIik7XG4gICAgY29uc3QgYyA9IGF3YWl0IGwuY2FuTWFrZVBheW1lbnQoKTtcbiAgICBpZiAoYyA9PT0gbnVsbClcbiAgICAgIHJldHVybiB0dShcImNhbk1ha2VQYXltZW50IHJldHVybmVkIG51bGxcIiksIHsgaXNBdmFpbGFibGU6ICExLCByZWFzb246IFwiY2FuTWFrZVBheW1lbnQgcmV0dXJuZWQgbnVsbFwiIH07XG4gICAgdGUoXCJTdHJpcGUgUFIgZmxvdyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuIENhbiBtYWtlIHBheW1lbnRcIiwgYyk7XG4gICAgY29uc3QgdSA9IChkLCBtKSA9PiBSLnN0cmlwZVBSLnJ1bih7XG4gICAgICBjb250ZXh0OiBlLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBfZShlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIGQpLFxuICAgICAgbm9uQ2RlRm9ybUlucHV0czogaihlLmZvcm1EaXYpLFxuICAgICAgZm9ybUNhbGxiYWNrczogdCxcbiAgICAgIGN1c3RvbVBhcmFtczogeyBwcm92aWRlcjogZCwgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogbT8ub3ZlcnJpZGVQYXltZW50UmVxdWVzdCB9LFxuICAgICAgaW5pdFJlc3VsdDoge1xuICAgICAgICBwcm9jZXNzb3I6IFUuRW51bS5zdHJpcGUsXG4gICAgICAgIHByOiBsLFxuICAgICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICAgIGF2YWlsYWJsZVByb3ZpZGVyczogeyBhcHBsZVBheTogYy5hcHBsZVBheSwgZ29vZ2xlUGF5OiBjLmdvb2dsZVBheSB9LFxuICAgICAgICBzdGFydEZsb3c6IHVcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uc3RyaXBlLFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgcHI6IGwsXG4gICAgICBhdmFpbGFibGVQcm92aWRlcnM6IHtcbiAgICAgICAgYXBwbGVQYXk6IGMuYXBwbGVQYXksXG4gICAgICAgIGdvb2dsZVBheTogYy5nb29nbGVQYXlcbiAgICAgIH0sXG4gICAgICBzdGFydEZsb3c6IHVcbiAgICB9O1xuICB9XG4pLCBvdSA9IFYoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgIGN1c3RvbVBhcmFtczogYSxcbiAgICBpbml0UmVzdWx0OiBpXG4gIH0pID0+IHtcbiAgICBpZiAodGUoXCJSdW5uaW5nIFN0cmlwZSBQUiBmbG93Li4uXCIpLCBhLnByb3ZpZGVyICE9PSB0LnByb3ZpZGVyKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlciBtaXNtYXRjaC4gRXhwZWN0ZWQgJHthLnByb3ZpZGVyfSwgZ290ICR7dC5wcm92aWRlcn1gKTtcbiAgICBjb25zdCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBsID0gaS5wcjtcbiAgICBpZiAoYT8ub3ZlcnJpZGVQYXltZW50UmVxdWVzdCkge1xuICAgICAgY29uc3QgXyA9IGEub3ZlcnJpZGVQYXltZW50UmVxdWVzdDtcbiAgICAgIHRlKFwiT3ZlcnJpZGluZyBQUiBhbW91bnQgd2l0aFwiLCBfKTtcbiAgICAgIGNvbnN0IGcgPSB0eXBlb2YgXy5hcHBsZVBheVBheW1lbnRSZXF1ZXN0ID09IFwiZnVuY3Rpb25cIiA/IF8uYXBwbGVQYXlQYXltZW50UmVxdWVzdCh7fSkgOiBfLmFwcGxlUGF5UGF5bWVudFJlcXVlc3Q7XG4gICAgICBCcihsLCBfLmFtb3VudCwgXy5wZW5kaW5nLCBnLCBfLmxhYmVsKTtcbiAgICB9XG4gICAgY29uc3QgYyA9IGF3YWl0IE4ocyk7XG4gICAgaWYgKCFhLm92ZXJyaWRlUGF5bWVudFJlcXVlc3QpIHtcbiAgICAgIGNvbnN0IF8gPSBjLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICAgIFEocywgYy50b2tlbiwgXywgdm9pZCAwKS50aGVuKChnKSA9PiB7XG4gICAgICAgIGwuaXNTaG93aW5nKCkgfHwgQnIobCwgZywgITEsIHZvaWQgMCwgXCJUb3RhbFwiKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0ZShcIlNob3dpbmcgUFIgZGlhbG9nLi4uXCIpLCBsLnNob3coKTtcbiAgICBjb25zdCB1ID0gYXdhaXQgZXMobCk7XG4gICAgdGUoXCJTdHJpcGUgUE0gYWRkZWQgZXZlbnQ6XCIsIHUpLCB0ZShcIk1lcmdpbmcgUE0gZmllbGRzIHdpdGggZm9ybSBmaWVsZHMuLi5cIik7XG4gICAgY29uc3QgZCA9IGF1KHIsIHUpLCBtID0gRyhkLCBuLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgdihcImJpbGxpbmdfZGV0YWlsc19yZWNlaXZlZFwiLCB7XG4gICAgICAuLi5tXG4gICAgfSksIHRlKFwiUFIgZGlhbG9nIGZpbmlzaGVkLiBTdGFydGluZyBwIGF5bWVudCBmbG93Li4uXCIsIG0pO1xuICAgIGNvbnN0IGYgPSBhd2FpdCBxcyhzLCB7XG4gICAgICBmaWVsZHM6IG0sXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHRcbiAgICB9KSwgeSA9IGl1KGYpO1xuICAgIGlmICh0ZShcIkNvbmZpcm1pbmcgUFIgd2l0aCBTdHJpcGUuLi5cIiksIGF3YWl0IHRzKHksIHUpLCBjLm1vZGUgPT09IFwic2V0dXBcIikge1xuICAgICAgdGUoXCJDb25maXJtaW5nIHBheW1lbnQgZmxvdyBmb3Igc2V0dXAuLi5cIik7XG4gICAgICBjb25zdCBfID0gYXdhaXQgeChzLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogYy50b2tlblxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogbHQoXykgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGUoXCJQZXJmb3JtaW5nIGNoZWNrb3V0Li4uXCIpO1xuICAgICAgY29uc3QgXyA9IHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBjLnRva2VuLFxuICAgICAgICBwYXltZW50X2lucHV0OiB7XG4gICAgICAgICAgcHJvdmlkZXJfdHlwZTogdC5wcm92aWRlclxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21lcl9maXJzdF9uYW1lOiBtW3AuRklSU1RfTkFNRV0sXG4gICAgICAgIGN1c3RvbWVyX2xhc3RfbmFtZTogbVtwLkxBU1RfTkFNRV0sXG4gICAgICAgIGN1c3RvbWVyX2VtYWlsOiBtW3AuRU1BSUxdLFxuICAgICAgICBjdXN0b21lcl9hZGRyZXNzOiBDZShtKSxcbiAgICAgICAgY3VzdG9tZXJfc2hpcHBpbmdfYWRkcmVzczogT3QobSwgYy5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICAgIHByb21vdGlvbl9jb2RlOiBtW3AuUFJPTU9USU9OX0NPREVdLFxuICAgICAgICBsaW5lX2l0ZW1zOiBjLmxpbmVfaXRlbXMsXG4gICAgICAgIHRvdGFsX2Ftb3VudF9hdG9tOiBjLmFtb3VudF90b3RhbF9hdG9tLFxuICAgICAgICBjYW5jZWxfYXRfZW5kOiAhMSxcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHRcbiAgICAgIH07XG4gICAgICByZXR1cm4geyBtb2RlOiBcImNoZWNrb3V0XCIsIHJlc3VsdDogYXdhaXQgX3IocywgXykgfTtcbiAgICB9XG4gIH1cbiksIGF1ID0gKGUsIHQpID0+IHtcbiAgY29uc3QgciA9IHsgLi4uZSB9LCBbbiwgLi4uYV0gPSB0LnBheWVyTmFtZT8udHJpbSgpPy5zcGxpdCgvXFxzKy8pID8/IFtdLCBpID0gYS5qb2luKFwiIFwiKSB8fCB2b2lkIDAsIHMgPSB0LnBheW1lbnRNZXRob2Q/LmJpbGxpbmdfZGV0YWlscz8uYWRkcmVzcywgbCA9IHQuc2hpcHBpbmdBZGRyZXNzO1xuICByW3AuRU1BSUxdID0gcltwLkVNQUlMXSB8fCB0LnBheWVyRW1haWwgfHwgXCJvcF91bmZpbGxlZEBnZXRvcGVucGF5LmNvbVwiLCByW3AuWklQX0NPREVdID0gcltwLlpJUF9DT0RFXSB8fCBzPy5wb3N0YWxfY29kZSB8fCBsPy5wb3N0YWxDb2RlIHx8IFwiMDAwMDBcIiwgcltwLkNPVU5UUlldID0gcltwLkNPVU5UUlldIHx8IHM/LmNvdW50cnkgfHwgbD8uY291bnRyeSB8fCBcIlVTXCI7XG4gIGNvbnN0IGMgPSByW3AuRklSU1RfTkFNRV0gfHwgbiB8fCBcIlwiLCB1ID0gcltwLkxBU1RfTkFNRV0gfHwgaSB8fCBcIlwiO1xuICByZXR1cm4gYyB8fCB1ID8gKHJbcC5GSVJTVF9OQU1FXSA9IGMsIHJbcC5MQVNUX05BTUVdID0gdSkgOiAocltwLkZJUlNUX05BTUVdID0gXCJfT1BfVU5LTk9XTlwiLCByW3AuTEFTVF9OQU1FXSA9IFwiXCIpLCB0ZShcIkZpbmFsIGZvcm0gaW5wdXRzOlwiLCByKSwgcjtcbn0sIEJyID0gKGUsIHQsIHIsIG4sIGEpID0+IHtcbiAgZS51cGRhdGUoe1xuICAgIHRvdGFsOiB0ID8ge1xuICAgICAgYW1vdW50OiB0LmFtb3VudEF0b20sXG4gICAgICBsYWJlbDogYSA/PyBcIlRvdGFsXCIsXG4gICAgICBwZW5kaW5nOiByXG4gICAgfSA6IHZvaWQgMCxcbiAgICBjdXJyZW5jeTogdD8uY3VycmVuY3ksXG4gICAgLy8gU3RyaXBlJ3MgYXBwbGVQYXkgb3B0aW9uIG9ubHkgc3VwcG9ydHMgJ3JlY3VycmluZ1BheW1lbnRSZXF1ZXN0JyB8ICdkZWZlcnJlZFBheW1lbnRSZXF1ZXN0JyB8ICdhdXRvbWF0aWNSZWxvYWRQYXltZW50UmVxdWVzdCcgb2YgbmF0aXZlIEFwcGxlUGF5IHBheW1lbnQgcmVxdWVzdFxuICAgIC8vIFdlJ3JlIGFjY2VwdGluZyBuYXRpdmUgUGF5bWVudCBSZXF1ZXN0IGhlcmUgZm9yIG1vcmUgY29tbW9uIHR5cGluZy5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gc3RyaXBlIGRvIG5vdCBleHBlY3QgYWRkaXRpb25hbCBmaWVsZHNcbiAgICBhcHBsZVBheTogblxuICB9KTtcbn0sIGl1ID0gKGUpID0+IHtcbiAgaWYgKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIG9jY3VycmVkLlxuRGV0YWlsczogZ290ICR7ZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMubGVuZ3RofSByZXF1aXJlZCB1c2VyIGFjdGlvbnNgKTtcbiAgcmV0dXJuIFppLnBhcnNlKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zWzBdKTtcbn0sIF9lID0gKGUsIHQsIHIpID0+IHtcbiAgY29uc3QgbiA9IGUuZmlsdGVyKChhKSA9PiB7XG4gICAgY29uc3QgaSA9IHIgPT09IHZvaWQgMCA/IHRydWUgOiBhLnByb2Nlc3Nvcl9uYW1lID09PSByLCBzID0gYS5wcm92aWRlciA9PT0gdDtcbiAgICByZXR1cm4gaSAmJiBzO1xuICB9KTtcbiAgaWYgKG4ubGVuZ3RoID09PSAwKVxuICAgIHRocm93IGNvbnNvbGUud2FybihcIkNQTXMgbGlzdFwiLCBlKSwgbmV3IEVycm9yKGBObyBDUE1zIGZvdW5kIHdpdGggcHJvdmlkZXIgJyR7dH0nIGFuZCBwcm9jZXNzb3IgJyR7cn0nYCk7XG4gIHJldHVybiBuLmxlbmd0aCAhPT0gMSAmJiAoY29uc29sZS53YXJuKFwiQ1BNcyBsaXN0XCIsIGUpLCBjb25zb2xlLndhcm4oYE1vcmUgdGhhbiBvbmUgQ1BNIGZvdW5kIHdpdGggcHJvdmlkZXIgJyR7dH0nIGFuZCBwcm9jZXNzb3IgJyR7cn0nYCksIHYoXCJtb3JlX3RoYW5fb25lX2NwbV9mb3VuZFwiLCB7XG4gICAgcHJvdmlkZXI6IHQsXG4gICAgcHJvY2Vzc29yOiByLFxuICAgIGNwbXM6IGVcbiAgfSkpLCBuWzBdO1xufSwgUiA9IHtcbiAgLy8g4pyLIE5vdGU6IEZvciBmbG93cyB0aGF0IHJlcXVpcmUgaW5pdGlhbGl6YXRpb24sIHBsZWFzZSBhZGQgdGhlbSB0byBgaW5pdC1mbG93cy50c2BcbiAgLy8gQ29tbW9uXG4gIGNvbW1vbkNDOiB7XG4gICAgaW5pdDogYXN5bmMgKCkgPT4ge1xuICAgIH0sXG4gICAgcnVuOiBJbFxuICB9LFxuICAvLyBTdHJpcGVcbiAgc3RyaXBlUFI6IHtcbiAgICBpbml0OiBudSxcbiAgICBydW46IG91XG4gIH0sXG4gIHN0cmlwZUxpbms6IHtcbiAgICBpbml0OiBabCxcbiAgICBydW46IFFsXG4gIH0sXG4gIHN0cmlwZUtsYXJuYToge1xuICAgIGluaXQ6IEtsLFxuICAgIHJ1bjogWWxcbiAgfSxcbiAgc3RyaXBlQWZmaXJtOiB7XG4gICAgaW5pdDogR2wsXG4gICAgcnVuOiBxbFxuICB9LFxuICBzdHJpcGVBZnRlcnBheToge1xuICAgIGluaXQ6IHpsLFxuICAgIHJ1bjogQmxcbiAgfSxcbiAgLy8gUG9ja3l0XG4gIHBvY2t5dFBheXBhbDoge1xuICAgIGluaXQ6IE9sLFxuICAgIHJ1bjogamxcbiAgfSxcbiAgLy8gUGF5UGFsXG4gIHBheXBhbDoge1xuICAgIGluaXQ6IERsLFxuICAgIHJ1bjogVWxcbiAgfSxcbiAgLy8gS2xhcm5hXG4gIGFpcndhbGxleEtsYXJuYToge1xuICAgIGluaXQ6IFhjLFxuICAgIHJ1bjogZWxcbiAgfSxcbiAgLy8gQWlyd2FsbGV4XG4gIGFpcndhbGxleEdvb2dsZVBheToge1xuICAgIGluaXQ6IEpjLFxuICAgIHJ1bjogWmNcbiAgfSxcbiAgYWlyd2FsbGV4QXBwbGVQYXk6IHtcbiAgICBpbml0OiBZYyxcbiAgICBydW46IFdjXG4gIH0sXG4gIGFpcndhbGxleEFDSDoge1xuICAgIGluaXQ6IGFzeW5jICgpID0+IHtcbiAgICB9LFxuICAgIHJ1bjogemNcbiAgfSxcbiAgYWlyd2FsbGV4RUZUOiB7XG4gICAgaW5pdDogYXN5bmMgKCkgPT4ge1xuICAgIH0sXG4gICAgcnVuOiB2Y1xuICB9LFxuICBhaXJ3YWxsZXhCQUNTOiB7XG4gICAgaW5pdDogYXN5bmMgKCkgPT4ge1xuICAgIH0sXG4gICAgcnVuOiBnY1xuICB9LFxuICBhaXJ3YWxsZXhTRVBBOiB7XG4gICAgaW5pdDogYXN5bmMgKCkgPT4ge1xuICAgIH0sXG4gICAgcnVuOiBQY1xuICB9LFxuICAvLyBMb29wXG4gIGxvb3BDcnlwdG86IHtcbiAgICBpbml0OiBMbCxcbiAgICBydW46IE1sXG4gIH0sXG4gIGF1dGhvcml6ZU5ldEFwcGxlUGF5OiB7XG4gICAgaW5pdDogbmwsXG4gICAgcnVuOiBvbFxuICB9LFxuICBhdXRob3JpemVOZXRHb29nbGVQYXk6IHtcbiAgICBpbml0OiBhbCxcbiAgICBydW46IGlsXG4gIH0sXG4gIGFkeWVuR29vZ2xlUGF5OiB7XG4gICAgaW5pdDogR2MsXG4gICAgcnVuOiBxY1xuICB9LFxuICBhZHllbkFwcGxlUGF5OiB7XG4gICAgaW5pdDogamMsXG4gICAgcnVuOiAkY1xuICB9XG4gIC8vIPCfkYkgQWRkIG1vcmUgZmxvd3MgaGVyZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxufSwgeyBsb2dfXzogc3UsIGVycl9fOiBjdSB9ID0gayhcImluaXQtZmxvd3NcIiksIFggPSAoZSwgdCkgPT4ge1xuICBjb25zdCByID0gbmV3IFhlKCk7XG4gIHJldHVybiB7XG4gICAgcHVibGlzaGVyOiByLFxuICAgIGluaXRpYWxpemU6IGFzeW5jIChuKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoci5jdXJyZW50LmlzU3VjY2VzcylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGZsb3cgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC5cIik7XG4gICAgICAgIGNvbnN0IGEgPSBhd2FpdCB0KG4pO1xuICAgICAgICBzdShg4pyUICR7ZX0gZmxvdyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuIFJlc3VsdDpgLCBhKSwgci5zZXQoYSk7XG4gICAgICB9IGNhdGNoIChhKSB7XG4gICAgICAgIGN1KGDwnZmtICR7ZX0gZmxvdyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIEVycm9yOmAsIGFlKGEpLCBcIkRldGFpbHM6XCIsIGEpLCByLnRocm93KGEsIGFlKGEpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59LCBsdSA9IGFzeW5jIChlLCB0LCByKSA9PiB7XG4gIGF3YWl0IFByb21pc2UuYWxsKE9iamVjdC52YWx1ZXMoZSkubWFwKChuKSA9PiBuLmluaXRpYWxpemUoeyBjb250ZXh0OiB0LCBmb3JtQ2FsbGJhY2tzOiByIH0pKSk7XG59LCB1dSA9ICgpID0+ICh7XG4gIC8vIPCfkqEgQWRkIG5ldyBpbml0IGZsb3dzIGhlcmVcbiAgLy8gU3RyaXBlIFBSXG4gIHN0cmlwZVBSOiBYKFwiU3RyaXBlIFBSXCIsIFIuc3RyaXBlUFIuaW5pdCksXG4gIC8vIFN0cmlwZSBMaW5rXG4gIHN0cmlwZUxpbms6IFgoXCJTdHJpcGUgTGlua1wiLCBSLnN0cmlwZUxpbmsuaW5pdCksXG4gIC8vIFN0cmlwZSBLbGFybmFcbiAgc3RyaXBlS2xhcm5hOiBYKFwiU3RyaXBlIEtsYXJuYVwiLCBSLnN0cmlwZUtsYXJuYS5pbml0KSxcbiAgLy8gU3RyaXBlIEFmZmlybVxuICBzdHJpcGVBZmZpcm06IFgoXCJTdHJpcGUgQWZmaXJtXCIsIFIuc3RyaXBlQWZmaXJtLmluaXQpLFxuICAvLyBTdHJpcGUgQWZ0ZXJwYXlcbiAgc3RyaXBlQWZ0ZXJwYXk6IFgoXCJTdHJpcGUgQWZ0ZXJwYXlcIiwgUi5zdHJpcGVBZnRlcnBheS5pbml0KSxcbiAgLy8gQWlyd2FsbGV4IEdvb2dsZVBheVxuICBhaXJ3YWxsZXhHb29nbGVQYXk6IFgoXCJBaXJ3YWxsZXggR29vZ2xlUGF5XCIsIFIuYWlyd2FsbGV4R29vZ2xlUGF5LmluaXQpLFxuICAvLyBBaXJ3YWxsZXggQXBwbGVQYXlcbiAgYWlyd2FsbGV4QXBwbGVQYXk6IFgoXCJBaXJ3YWxsZXggQXBwbGVQYXlcIiwgUi5haXJ3YWxsZXhBcHBsZVBheS5pbml0KSxcbiAgLy8gTG9vcFxuICBsb29wOiBYKFwiTG9vcFwiLCBSLmxvb3BDcnlwdG8uaW5pdCksXG4gIC8vIFBheVBhbFxuICBwYXlwYWw6IFgoXCJQYXlQYWxcIiwgUi5wYXlwYWwuaW5pdCksXG4gIC8vIEtsYXJuYVxuICBhaXJ3YWxsZXhLbGFybmE6IFgoXCJLbGFybmFcIiwgUi5haXJ3YWxsZXhLbGFybmEuaW5pdCksXG4gIC8vIFBvY2t5dCBQYXlQYWxcbiAgcG9ja3l0UGF5cGFsOiBYKFwiUG9ja3l0IFBheVBhbFwiLCBSLnBvY2t5dFBheXBhbC5pbml0KSxcbiAgLy8gQXV0aG5ldCBHb29nbGVQYXlcbiAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiBYKFwiQXV0aG5ldCBHb29nbGVQYXlcIiwgUi5hdXRob3JpemVOZXRHb29nbGVQYXkuaW5pdCksXG4gIC8vIEF1dGhuZXQgQXBwbGVQYXlcbiAgYXV0aG9yaXplTmV0QXBwbGVQYXk6IFgoXCJBdXRobmV0IEFwcGxlUGF5XCIsIFIuYXV0aG9yaXplTmV0QXBwbGVQYXkuaW5pdCksXG4gIC8vIEFkeWVuIEdvb2dsZVBheVxuICBhZHllbkdvb2dsZVBheTogWChcIkFkeWVuIEdvb2dsZVBheVwiLCBSLmFkeWVuR29vZ2xlUGF5LmluaXQpLFxuICAvLyBBZHllbiBBcHBsZVBheVxuICBhZHllbkFwcGxlUGF5OiBYKFwiQWR5ZW4gQXBwbGVQYXlcIiwgUi5hZHllbkFwcGxlUGF5LmluaXQpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG59KSwgeyBlcnJfXzogZHUgfSA9IGsoXCJmb3JtLWNhbGxiYWNrc1wiKSwgdWUgPSB6JDEuZnVuY3Rpb24oKS5vcHRpb25hbCgpLCBIciA9IHokMS5vYmplY3Qoe1xuICBvbkZvY3VzOiB1ZSxcbiAgb25CbHVyOiB1ZSxcbiAgb25DaGFuZ2U6IHVlLFxuICBvbkxvYWQ6IHVlLFxuICBvbkxvYWRFcnJvcjogdWUsXG4gIG9uVmFsaWRhdGlvbkVycm9yOiB1ZSxcbiAgb25DaGVja291dFN0YXJ0ZWQ6IHVlLFxuICBvbkNoZWNrb3V0U3VjY2VzczogdWUsXG4gIG9uU2V0dXBQYXltZW50TWV0aG9kU3VjY2VzczogdWUsXG4gIG9uQ2hlY2tvdXRFcnJvcjogdWUsXG4gIG9uUGF5bWVudFJlcXVlc3RMb2FkOiB1ZVxufSksIHllID0gY2xhc3MgeWUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNldENhbGxiYWNrcyA9ICh0KSA9PiB7XG4gICAgICB0aGlzLl9jYWxsYmFja3MgPSB5ZS5jcmVhdGVFbXB0eUNhbGxiYWNrcygpLCBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbciwgbl0pID0+IHtcbiAgICAgICAgY29uc3QgYSA9IFZhKHIsIG4gPz8geWUuTk9PUCwgZHUpO1xuICAgICAgICB0aGlzLl9jYWxsYmFja3Nbcl0gPSBhO1xuICAgICAgfSk7XG4gICAgfSwgdGhpcy5fY2FsbGJhY2tzID0geWUuY3JlYXRlRW1wdHlDYWxsYmFja3MoKTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyBhIHJlYWQtb25seSB2ZXJzaW9uIG9mIHRoZSBjYWxsYmFja3Mgb2JqZWN0LlxuICAgKi9cbiAgZ2V0IGdldCgpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLl9jYWxsYmFja3MgfTtcbiAgfVxufTtcbnllLk5PT1AgPSAoKSA9PiB7XG59LCB5ZS5jcmVhdGVFbXB0eUNhbGxiYWNrcyA9ICgpID0+IHtcbiAgY29uc3QgdCA9IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMoSHIua2V5b2YoKS5lbnVtKS5mb3JFYWNoKChyKSA9PiB7XG4gICAgdFtyXSA9IHllLk5PT1A7XG4gIH0pLCB0O1xufSwgeWUuZnJvbU9iamVjdCA9ICh0KSA9PiB7XG4gIGNvbnN0IHIgPSBuZXcgeWUoKTtcbiAgcmV0dXJuIHIuc2V0Q2FsbGJhY2tzKEhyLnBhcnNlKHQpKSwgcjtcbn07XG5sZXQgYXIgPSB5ZTtcbmZ1bmN0aW9uIHB1KCkge1xuICB0cnkge1xuICAgIGNvbnN0IGUgPSBCKCksIHQgPSBlO1xuICAgIGlmICh0Py5uZXh0IHx8IHQ/Ll9fTkVYVF9EQVRBX18gfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNfX25leHRcIikpXG4gICAgICByZXR1cm4gXCJuZXh0anNcIjtcbiAgICBpZiAoZT8uX19OVVhUX18gfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNfX251eHRcIikpXG4gICAgICByZXR1cm4gXCJudXh0XCI7XG4gICAgaWYgKE9iamVjdC5rZXlzKGRvY3VtZW50KS5maW5kKChhKSA9PiBhLmluY2x1ZGVzKFwicmVhY3RcIikpIHx8IEFycmF5LmZyb20oZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKFwiYm9keSA+ICpcIikpLmZpbmQoXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gX3JlYWN0Um9vdENvbnRhaW5lciBkb2Vzbid0IGV4aXN0XG4gICAgICAoYSkgPT4gYS5fcmVhY3RSb290Q29udGFpbmVyXG4gICAgKSlcbiAgICAgIHJldHVybiBcInJlYWN0XCI7XG4gICAgY29uc3QgbiA9IGU7XG4gICAgcmV0dXJuIG4/LlZ1ZSB8fCBuPy5fX1ZVRV9fID8gXCJ2dWVcIiA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbbmctdmVyc2lvbl1cIikgPyBcImFuZ3VsYXJcIiA6IFwidmFuaWxsYVwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gIH1cbn1cbmZ1bmN0aW9uIG11KGUpIHtcbiAgdHJ5IHtcbiAgICBzd2l0Y2ggKGUpIHtcbiAgICAgIGNhc2UgXCJyZWFjdFwiOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgXCJuZXh0anNcIjoge1xuICAgICAgICBjb25zdCByID0gQigpO1xuICAgICAgICByZXR1cm4gcj8ubmV4dD8udmVyc2lvbiB8fCByPy5fX05FWFRfREFUQV9fPy5idWlsZElkIHx8IG51bGw7XG4gICAgICB9XG4gICAgICBjYXNlIFwibnV4dFwiOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgXCJ2dWVcIjpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlIFwiYW5ndWxhclwiOiB7XG4gICAgICAgIGNvbnN0IHIgPSBCKCk/LmRvY3VtZW50Py5xdWVyeVNlbGVjdG9yKFwiW25nLXZlcnNpb25dXCIpO1xuICAgICAgICByZXR1cm4gciA/IHIuZ2V0QXR0cmlidXRlKFwibmctdmVyc2lvblwiKSA6IG51bGw7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5mdW5jdGlvbiBmdSgpIHtcbiAgY29uc3QgZSA9IHB1KCksIHQgPSBtdShlKTtcbiAgcmV0dXJuIHsgZnJhbWV3b3JrOiBlLCB2ZXJzaW9uOiB0IH07XG59XG5jb25zdCBSbyA9ICgpID0+IHtcbiAgY29uc3QgZSA9IHdpbmRvdyAmJiB3aW5kb3cuc2NyZWVuID8gd2luZG93LnNjcmVlbi5oZWlnaHQgOiBudWxsLCB0ID0gd2luZG93ICYmIHdpbmRvdy5zY3JlZW4gPyB3aW5kb3cuc2NyZWVuLndpZHRoIDogbnVsbCwgciA9IHdpbmRvdyAmJiB3aW5kb3cuc2NyZWVuID8gd2luZG93LnNjcmVlbi5jb2xvckRlcHRoIDogbnVsbCwgbiA9IHdpbmRvdyAmJiB3aW5kb3cubmF2aWdhdG9yID8gd2luZG93Lm5hdmlnYXRvci5qYXZhRW5hYmxlZCgpIDogZmFsc2UsIGEgPSB3aW5kb3cgJiYgd2luZG93Lm5hdmlnYXRvciA/IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50IDogbnVsbCwgaSA9IFwidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOFwiO1xuICBsZXQgcyA9IG51bGw7XG4gIHdpbmRvdyAmJiB3aW5kb3cubmF2aWdhdG9yICYmIChzID0gd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZSA/IHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2UgOiB3aW5kb3cubmF2aWdhdG9yLmJyb3dzZXJMYW5ndWFnZSk7XG4gIGNvbnN0IGwgPSAoLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCkpLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gIHJldHVybiB7XG4gICAgY29sb3JfZGVwdGg6IHIsXG4gICAgamF2YV9lbmFibGVkOiBuLFxuICAgIGphdmFzY3JpcHRfZW5hYmxlZDogdHJ1ZSxcbiAgICBsYW5ndWFnZTogcyxcbiAgICBzY3JlZW5faGVpZ2h0OiBlLFxuICAgIHNjcmVlbl93aWR0aDogdCxcbiAgICB0aW1lX3pvbmVfb2Zmc2V0OiBsLFxuICAgIHVzZXJfYWdlbnQ6IGEsXG4gICAgYWNjZXB0X2hlYWRlcjogaVxuICB9O1xufTtcbnZhciBJID0gLyogQF9fUFVSRV9fICovICgoZSkgPT4gKGUuY2FyZCA9IFwiY2FyZFwiLCBlLnBvY2t5dFBheXBhbCA9IFwicG9ja3l0LXBheXBhbFwiLCBlLmFwcGxlUGF5ID0gXCJhcHBsZS1wYXlcIiwgZS5nb29nbGVQYXkgPSBcImdvb2dsZS1wYXlcIiwgZS5sb29wQ3J5cHRvID0gXCJsb29wLWNyeXB0b1wiLCBlLnBheXBhbCA9IFwicGF5cGFsXCIsIGUua2xhcm5hID0gXCJrbGFybmFcIiwgZS5hZmZpcm0gPSBcImFmZmlybVwiLCBlLmFmdGVycGF5ID0gXCJhZnRlcnBheVwiLCBlLnN0cmlwZUxpbmsgPSBcInN0cmlwZS1saW5rXCIsIGUuYWlyd2FsbGV4R29vZ2xlUGF5ID0gXCJhaXJ3YWxsZXgtZ29vZ2xlLXBheVwiLCBlLmFpcndhbGxleEFwcGxlUGF5ID0gXCJhaXJ3YWxsZXgtYXBwbGUtcGF5XCIsIGUuYXV0aG9yaXplbmV0R29vZ2xlUGF5ID0gXCJhdXRob3JpemVuZXQtZ29vZ2xlLXBheVwiLCBlLmF1dGhvcml6ZW5ldEFwcGxlUGF5ID0gXCJhdXRob3JpemVuZXQtYXBwbGUtcGF5XCIsIGUuYWR5ZW5Hb29nbGVQYXkgPSBcImFkeWVuLWdvb2dsZS1wYXlcIiwgZS5hZHllbkFwcGxlUGF5ID0gXCJhZHllbi1hcHBsZS1wYXlcIiwgZS5haXJ3YWxsZXhBQ0ggPSBcImFpcndhbGxleC1hY2hcIiwgZS5haXJ3YWxsZXhFRlQgPSBcImFpcndhbGxleC1lZnRcIiwgZS5haXJ3YWxsZXhCQUNTID0gXCJhaXJ3YWxsZXgtYmFjc1wiLCBlLmFpcndhbGxleFNFUEEgPSBcImFpcndhbGxleC1zZXBhXCIsIGUpKShJIHx8IHt9KTtcbnokMS5uYXRpdmVFbnVtKEkpO1xudmFyIGtlID0gLyogQF9fUFVSRV9fICovICgoZSkgPT4gKGUuQUNIID0gXCJhY2hcIiwgZS5FRlQgPSBcImVmdFwiLCBlLkJBQ1MgPSBcImJhY3NcIiwgZS5TRVBBID0gXCJzZXBhXCIsIGUuQVBQTEVfUEFZID0gXCJhcHBsZV9wYXlcIiwgZS5DUkVESVRfQ0FSRCA9IFwiY3JlZGl0X2NhcmRcIiwgZS5HT09HTEVfUEFZID0gXCJnb29nbGVfcGF5XCIsIGUuU1RSSVBFX0xJTksgPSBcInN0cmlwZV9saW5rXCIsIGUuQ1JZUFRPID0gXCJjcnlwdG9cIiwgZS5QQVlQQUwgPSBcInBheXBhbFwiLCBlKSkoa2UgfHwge30pO1xuY29uc3QgS3IgPSAoZSkgPT4ge1xuICBjb25zdCB0ID0gW2UuYWlyd2FsbGV4QXBwbGVQYXksIGUuYXV0aG9yaXplTmV0QXBwbGVQYXksIGUuYWR5ZW5BcHBsZVBheV0sIHIgPSBbXTtcbiAgdC5mb3JFYWNoKChhKSA9PiB7XG4gICAgY29uc3QgaSA9IGEucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgIGk/LmlzQXZhaWxhYmxlICYmIHIucHVzaChpKTtcbiAgfSk7XG4gIGNvbnN0IG4gPSBlLnN0cmlwZVBSLnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgcmV0dXJuIG4/LmlzQXZhaWxhYmxlICYmIG4uYXZhaWxhYmxlUHJvdmlkZXJzLmFwcGxlUGF5ICYmIHIucHVzaCh7XG4gICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBwcm9jZXNzb3I6IFUuRW51bS5zdHJpcGUsXG4gICAgc3RhcnRGbG93OiAoaSkgPT4gbi5zdGFydEZsb3coXCJhcHBsZV9wYXlcIiwge1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogaT8ub3ZlcnJpZGVQYXltZW50UmVxdWVzdFxuICAgIH0pXG4gIH0pLCB7XG4gICAgcHJvY2Vzc29yczogci5tYXAoKGEpID0+IGEucHJvY2Vzc29yKSxcbiAgICBpc0F2YWlsYWJsZTogci5sZW5ndGggPiAwLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgc3RhcnRGbG93OiAoYSkgPT4gX3UociwgYSlcbiAgfTtcbn0sIFlyID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IFtlLmFpcndhbGxleEdvb2dsZVBheSwgZS5hdXRob3JpemVOZXRHb29nbGVQYXksIGUuYWR5ZW5Hb29nbGVQYXldLCByID0gW107XG4gIHQuZm9yRWFjaCgoYSkgPT4ge1xuICAgIGNvbnN0IGkgPSBhLnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICBpPy5pc0F2YWlsYWJsZSAmJiByLnB1c2goaSk7XG4gIH0pO1xuICBjb25zdCBuID0gZS5zdHJpcGVQUi5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gIHJldHVybiBuPy5pc0F2YWlsYWJsZSAmJiBuLmF2YWlsYWJsZVByb3ZpZGVycy5nb29nbGVQYXkgJiYgci5wdXNoKHtcbiAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHByb2Nlc3NvcjogVS5FbnVtLnN0cmlwZSxcbiAgICBzdGFydEZsb3c6IChpKSA9PiBuLnN0YXJ0RmxvdyhcImdvb2dsZV9wYXlcIiwge1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogaT8ub3ZlcnJpZGVQYXltZW50UmVxdWVzdFxuICAgIH0pXG4gIH0pLCB7XG4gICAgcHJvY2Vzc29yczogci5tYXAoKGEpID0+IGEucHJvY2Vzc29yKSxcbiAgICBpc0F2YWlsYWJsZTogci5sZW5ndGggPiAwLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgc3RhcnRGbG93OiAoYSkgPT4geXUociwgYSlcbiAgfTtcbn0sIF91ID0gKGUsIHQpID0+IHtcbiAgaWYgKHQ/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IG4gPSBlLmZpbmQoKGEpID0+IGEucHJvY2Vzc29yID09PSB0LnByb2Nlc3Nvcik7XG4gICAgaWYgKG4/LmlzQXZhaWxhYmxlKVxuICAgICAgcmV0dXJuIG4uc3RhcnRGbG93KHQpO1xuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEFwcGxlIFBheSBwcm9jZXNzb3IgJHt0LnByb2Nlc3Nvcn0gaXMgbm90IGF2YWlsYWJsZWApO1xuICB9XG4gIGNvbnN0IHIgPSBlLmZpbmQoKG4pID0+IG4uaXNBdmFpbGFibGUpO1xuICBpZiAocilcbiAgICByZXR1cm4gci5zdGFydEZsb3codCk7XG4gIHRocm93IG5ldyBFcnJvcihcIk5vIGF2YWlsYWJsZSBBcHBsZSBQYXkgcHJvY2Vzc29yIGZvdW5kXCIpO1xufSwgeXUgPSAoZSwgdCkgPT4ge1xuICBpZiAodD8ucHJvY2Vzc29yKSB7XG4gICAgY29uc3QgbiA9IGUuZmluZCgoYSkgPT4gYS5wcm9jZXNzb3IgPT09IHQucHJvY2Vzc29yKTtcbiAgICBpZiAobj8uaXNBdmFpbGFibGUpXG4gICAgICByZXR1cm4gbi5zdGFydEZsb3codCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTcGVjaWZpZWQgR29vZ2xlIFBheSBwcm9jZXNzb3IgJHt0LnByb2Nlc3Nvcn0gaXMgbm90IGF2YWlsYWJsZWApO1xuICB9XG4gIGNvbnN0IHIgPSBlLmZpbmQoKG4pID0+IG4uaXNBdmFpbGFibGUpO1xuICBpZiAocilcbiAgICByZXR1cm4gci5zdGFydEZsb3codCk7XG4gIHRocm93IG5ldyBFcnJvcihcIk5vIGF2YWlsYWJsZSBHb29nbGUgUGF5IHByb2Nlc3NvciBmb3VuZFwiKTtcbn0sIFdyID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IFtdLCByID0gZS5haXJ3YWxsZXhLbGFybmEucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICByPy5pc0F2YWlsYWJsZSAmJiB0LnB1c2goe1xuICAgIGlzQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgcHJvY2Vzc29yOiBVLkVudW0uYWlyd2FsbGV4LFxuICAgIHN0YXJ0RmxvdzogKGEpID0+IHIuc3RhcnRGbG93KGEpXG4gIH0pO1xuICBjb25zdCBuID0gZS5zdHJpcGVLbGFybmEucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICByZXR1cm4gbj8uaXNBdmFpbGFibGUgJiYgdC5wdXNoKHtcbiAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHByb2Nlc3NvcjogVS5FbnVtLnN0cmlwZSxcbiAgICBzdGFydEZsb3c6IChhKSA9PiBuLnN0YXJ0RmxvdyhhKVxuICB9KSwge1xuICAgIHByb2Nlc3NvcnM6IHQubWFwKChhKSA9PiBhLnByb2Nlc3NvciksXG4gICAgaXNBdmFpbGFibGU6IHQubGVuZ3RoID4gMCxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHN0YXJ0RmxvdzogKGEpID0+IGh1KHQsIGEpXG4gIH07XG59LCBodSA9IChlLCB0KSA9PiB7XG4gIGlmICh0Py5wcm9jZXNzb3IpIHtcbiAgICBjb25zdCBuID0gZS5maW5kKChhKSA9PiBhLnByb2Nlc3NvciA9PT0gdC5wcm9jZXNzb3IpO1xuICAgIGlmIChuPy5pc0F2YWlsYWJsZSlcbiAgICAgIHJldHVybiBuLnN0YXJ0Rmxvdyh0KTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNwZWNpZmllZCBLbGFybmEgcHJvY2Vzc29yICR7dC5wcm9jZXNzb3J9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgfVxuICBjb25zdCByID0gZS5maW5kKChuKSA9PiBuLmlzQXZhaWxhYmxlKTtcbiAgaWYgKHIpXG4gICAgcmV0dXJuIHIuc3RhcnRGbG93KHQpO1xuICB0aHJvdyBuZXcgRXJyb3IoXCJObyBhdmFpbGFibGUgS2xhcm5hIHByb2Nlc3NvciBmb3VuZFwiKTtcbn0sIEpyID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IFtdLCByID0gZS5zdHJpcGVBZmZpcm0ucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICByZXR1cm4gcj8uaXNBdmFpbGFibGUgJiYgdC5wdXNoKHtcbiAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHByb2Nlc3NvcjogVS5FbnVtLnN0cmlwZSxcbiAgICBzdGFydEZsb3c6IChuKSA9PiByLnN0YXJ0RmxvdyhuKVxuICB9KSwge1xuICAgIHByb2Nlc3NvcnM6IHQubWFwKChuKSA9PiBuLnByb2Nlc3NvciksXG4gICAgaXNBdmFpbGFibGU6IHQubGVuZ3RoID4gMCxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHN0YXJ0RmxvdzogKG4pID0+IGd1KHQsIG4pXG4gIH07XG59LCBndSA9IChlLCB0KSA9PiB7XG4gIGlmICh0Py5wcm9jZXNzb3IpIHtcbiAgICBjb25zdCBuID0gZS5maW5kKChhKSA9PiBhLnByb2Nlc3NvciA9PT0gdC5wcm9jZXNzb3IpO1xuICAgIGlmIChuPy5pc0F2YWlsYWJsZSlcbiAgICAgIHJldHVybiBuLnN0YXJ0Rmxvdyh0KTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNwZWNpZmllZCBBZmZpcm0gcHJvY2Vzc29yICR7dC5wcm9jZXNzb3J9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgfVxuICBjb25zdCByID0gZS5maW5kKChuKSA9PiBuLmlzQXZhaWxhYmxlKTtcbiAgaWYgKHIpXG4gICAgcmV0dXJuIHIuc3RhcnRGbG93KHQpO1xuICB0aHJvdyBuZXcgRXJyb3IoXCJObyBhdmFpbGFibGUgQWZmaXJtIHByb2Nlc3NvciBmb3VuZFwiKTtcbn0sIFpyID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IFtdLCByID0gZS5zdHJpcGVBZnRlcnBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gIHJldHVybiByPy5pc0F2YWlsYWJsZSAmJiB0LnB1c2goe1xuICAgIGlzQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgcHJvY2Vzc29yOiBVLkVudW0uc3RyaXBlLFxuICAgIHN0YXJ0RmxvdzogKG4pID0+IHIuc3RhcnRGbG93KG4pXG4gIH0pLCB7XG4gICAgcHJvY2Vzc29yczogdC5tYXAoKG4pID0+IG4ucHJvY2Vzc29yKSxcbiAgICBpc0F2YWlsYWJsZTogdC5sZW5ndGggPiAwLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgc3RhcnRGbG93OiAobikgPT4gd3UodCwgbilcbiAgfTtcbn0sIHd1ID0gKGUsIHQpID0+IHtcbiAgaWYgKHQ/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IG4gPSBlLmZpbmQoKGEpID0+IGEucHJvY2Vzc29yID09PSB0LnByb2Nlc3Nvcik7XG4gICAgaWYgKG4/LmlzQXZhaWxhYmxlKVxuICAgICAgcmV0dXJuIG4uc3RhcnRGbG93KHQpO1xuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEFmdGVycGF5IHByb2Nlc3NvciAke3QucHJvY2Vzc29yfSBpcyBub3QgYXZhaWxhYmxlYCk7XG4gIH1cbiAgY29uc3QgciA9IGUuZmluZCgobikgPT4gbi5pc0F2YWlsYWJsZSk7XG4gIGlmIChyKVxuICAgIHJldHVybiByLnN0YXJ0Rmxvdyh0KTtcbiAgdGhyb3cgbmV3IEVycm9yKFwiTm8gYXZhaWxhYmxlIEFmdGVycGF5IHByb2Nlc3NvciBmb3VuZFwiKTtcbn0sIHZ1ID0gKGUpID0+IEpTT04uc3RyaW5naWZ5KGUpLCB7IGxvZ19fOiBKdCwgZXJyX186IGJ1IH0gPSBrKFwidHJhY2VyXCIpLCBQdSA9IChlLCB0KSA9PiB7XG4gIHRyeSB7XG4gICAgRXUoZSwgdCk7XG4gIH0gY2F0Y2ggKHIpIHtcbiAgICBidShgRXJyb3IgaW5pdGlhbGl6aW5nIHRyYWNlcjogJHtyfWApO1xuICB9XG59O1xubGV0IFFyO1xuY29uc3QgRXUgPSBhc3luYyAoZSwgdCkgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA+IFwidVwiKVxuICAgIHJldHVybjtcbiAgY29uc3QgciA9IGF3YWl0IGltcG9ydCgnLi9pbmRleC1QWG1BZGl1Ni0hfnswMDZ9fi5qcycpLCB7IENvbnNvbGVTcGFuRXhwb3J0ZXI6IG4sIFNpbXBsZVNwYW5Qcm9jZXNzb3I6IGEsIFdlYlRyYWNlclByb3ZpZGVyOiBpIH0gPSByLCBzID0gYXdhaXQgaW1wb3J0KCcuL2luZGV4LXlNRXFkNHJWLSF+ezAwOX1+LmpzJyksIHsgRmV0Y2hJbnN0cnVtZW50YXRpb246IGwgfSA9IHMsIGMgPSBhd2FpdCBpbXBvcnQoJy4vaW5kZXgtQjF4SXpUaUMtIX57MDBkfX4uanMnKSwgeyBab25lQ29udGV4dE1hbmFnZXI6IHUgfSA9IGMsIGQgPSBhd2FpdCBpbXBvcnQoJy4vaW5kZXgtMU1UUTRGZ0gtIX57MDBlfX4uanMnKSwgeyByZWdpc3Rlckluc3RydW1lbnRhdGlvbnM6IG0gfSA9IGQsIGYgPSBhd2FpdCBpbXBvcnQoJy4vaW5kZXgtQzd1Vm5aeVktIX57MDAxfX4uanMnKSwgeyBSZXNvdXJjZTogeSB9ID0gZiwgXyA9IGF3YWl0IGltcG9ydCgnLi9kZXRlY3QtcmVzb3VyY2VzLUNxQ3NXN3hLLSF+ezAwZ31+LmpzJykudGhlbigoVnQpID0+IFZ0LmQpLCB7IGRldGVjdFJlc291cmNlc1N5bmM6IGcgfSA9IF8sIHcgPSBhd2FpdCBpbXBvcnQoJy4vaW5kZXgtRGlRVWNhdlUtIX57MDBrfX4uanMnKSwgeyBPVExQVHJhY2VFeHBvcnRlcjogaCB9ID0gdywgYiA9IGF3YWl0IGltcG9ydCgnLi9pbmRleC1DQUM2aUdMbC0hfnswMG19fi5qcycpLCB7IEIzUHJvcGFnYXRvcjogUywgQjNJbmplY3RFbmNvZGluZzogQyB9ID0gYiwgTCA9IGF3YWl0IGltcG9ydCgnLi9pbmRleC1ET19jUkZvcy0hfnswMDN9fi5qcycpLCB7IEJhdGNoU3BhblByb2Nlc3NvcjogQSB9ID0gTDtcbiAgSnQoYEluaXRpYWxpemluZyB0cmFjZXIgd2l0aCB2ZXJzaW9uICR7ZX0gYW5kIGJhc2VVcmwgJHt0fWApO1xuICBjb25zdCAkID0gQ3UodCk7XG4gIEp0KGBVc2luZyBjb2xsZWN0b3IgVVJMICR7JH1gKTtcbiAgY29uc3QgdXQgPSBuZXcgaCh7IHVybDogJCB9KSwgQWUgPSB7XG4gICAgXCJzZXJ2aWNlLnZlcnNpb25cIjogZSxcbiAgICBcInNlcnZpY2UubmFtZVwiOiBcIm9qc1wiXG4gIH07XG4gIHJldHVybiBuZXcgaSh7XG4gICAgcmVzb3VyY2U6IG5ldyB5KEFlKS5tZXJnZShnKCkpLFxuICAgIHNwYW5Qcm9jZXNzb3JzOiBbXG4gICAgICBuZXcgYShuZXcgbigpKSxcbiAgICAgIG5ldyBBKHV0LCB7XG4gICAgICAgIHNjaGVkdWxlZERlbGF5TWlsbGlzOiA1MDBcbiAgICAgIH0pXG4gICAgXVxuICB9KS5yZWdpc3Rlcih7XG4gICAgY29udGV4dE1hbmFnZXI6IG5ldyB1KCksXG4gICAgcHJvcGFnYXRvcjogbmV3IFMoeyBpbmplY3RFbmNvZGluZzogQy5NVUxUSV9IRUFERVIgfSlcbiAgfSksIG0oe1xuICAgIGluc3RydW1lbnRhdGlvbnM6IFtcbiAgICAgIG5ldyBsKHtcbiAgICAgICAgcHJvcGFnYXRlVHJhY2VIZWFkZXJDb3JzVXJsczogWy8uKi9dLFxuICAgICAgICAvLyBQcm9wYWdhdGUgdG8gYWxsIFVSTHNcbiAgICAgICAgLy8gRXhjbHVkZSBBZHllbiBVUkxzIC0gdGhleSBkbyBub3QgYWxsb3cgT1BUSU9OUyByZXF1ZXN0c1xuICAgICAgICAvLyBBbHNvIGV4Y2x1ZGUgbG9vcGNyeXB0by54eXpcbiAgICAgICAgaWdub3JlVXJsczogWy9eaHR0cHM6XFwvXFwvKC4qXFwuKT9hZHllblxcLmNvbS8sIC9eaHR0cHM6XFwvXFwvKC4qXFwuKT9sb29wY3J5cHRvXFwueHl6L11cbiAgICAgIH0pXG4gICAgXVxuICB9KSwgUXIgPSBqZS5nZXRUcmFjZXIoXCJvcGVucGF5LWpzXCIpLCBKdChcIlRyYWNlciBpbml0aWFsaXplZFwiKSwgUXI7XG59LCBDdSA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSBuZXcgVVJMKGUpLmhvc3RuYW1lO1xuICByZXR1cm4gdCA9PT0gXCJjZGUub3BlbnBheXN0YWdpbmcuY29tXCIgPyBcImh0dHBzOi8vb3RlbC5vcGVucGF5c2FuZGJveC5jb20vdjEvdHJhY2VzXCIgOiB0ID09PSBcImNkZS5nZXRvcGVucGF5LmNvbVwiID8gXCJodHRwczovL290ZWwuZ2V0b3BlbnBheS5jb20vdjEvdHJhY2VzXCIgOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOS92MS90cmFjZXNcIjtcbn07XG5jbGFzcyBBdSB7XG4gIGNvbnN0cnVjdG9yKHQsIHIsIG4sIGEpIHtcbiAgICB0aGlzLmhhbmRsZU1lc3NhZ2UgPSAoaSkgPT4ge1xuICAgICAgaWYgKCFpLnNvdXJjZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJbT0pTXSBObyBzb3VyY2UgZm91bmRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChYcihpLm9yaWdpbikgIT09IFhyKHRoaXMuYmFzZVVybCkgfHwgdHlwZW9mIGkuZGF0YSA9PSBcIm9iamVjdFwiICYmIGkuZGF0YS5wZW5wYWwgfHwgdHlwZW9mIGkuZGF0YSA9PSBcIm9iamVjdFwiICYmIGkuZGF0YS5zb3VyY2UgJiYgaS5kYXRhLnNvdXJjZSA9PT0gXCJyZWFjdC1kZXZ0b29scy1icmlkZ2VcIilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IHMgPSBudWxsO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcyA9IHNjKEpTT04ucGFyc2UoaS5kYXRhKSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlRXZlbnQocykpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgZWxlbWVudElkOiBjLCBwYXlsb2FkOiB1IH0gPSBzLCBkID0gdS50eXBlO1xuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgIGNhc2UgXCJMQVlPVVRcIjpcbiAgICAgICAgICB0aGlzLmludGVybmFsQ2FsbGJhY2tzLnNldEZvcm1IZWlnaHQodS5oZWlnaHQgPyBgJHt1LmhlaWdodH1weGAgOiBcIjEwMCVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJGT0NVU1wiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25Gb2N1cyhjLCB1LmVsZW1lbnRUeXBlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkJMVVJcIjpcbiAgICAgICAgICB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQmx1cihjLCB1LmVsZW1lbnRUeXBlLCB7XG4gICAgICAgICAgICBvYmZ1c2NhdGVkVmFsdWU6IHUub2JmdXNjYXRlZFZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDSEFOR0VcIjpcbiAgICAgICAgICB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQ2hhbmdlKGMsIHUuZWxlbWVudFR5cGUsIHUuZXJyb3JzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkxPQURFRFwiOlxuICAgICAgICAgIHRoaXMuZXZlbnRUYXJnZXRzW2NdID0gaS5zb3VyY2UsIHRoaXMuaW50ZXJuYWxDYWxsYmFja3Mub25DZGVMb2FkZWQodSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJMT0FEX0VSUk9SXCI6XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbENhbGxiYWNrcy5vbkNkZUxvYWRFcnJvcih1Lm1lc3NhZ2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVkFMSURBVElPTl9FUlJPUlwiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25WYWxpZGF0aW9uRXJyb3IodS5lbGVtZW50VHlwZSwgdS5lcnJvcnMsIGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybihcIltmb3JtXSBVbmhhbmRsZWQgZXZlbnQgdHlwZTpcIiwgZCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy52YWxpZGF0ZUV2ZW50ID0gKGkpID0+IGkuZm9ybUlkICE9PSB0aGlzLmZvcm1JZCB8fCAhaS5lbGVtZW50SWQgPyAoY29uc29sZS5sb2coXCJbT0pTXSBmb3JtSWRcIiwgdGhpcy5mb3JtSWQsIGkuZm9ybUlkKSwgY29uc29sZS53YXJuKFwiW2Zvcm1dIElnbm9yaW5nIHVua25vd24gZXZlbnQ6XCIsIGkpLCBmYWxzZSkgOiB0aGlzLm5vbmNlcy5oYXMoaS5ub25jZSkgPyAoY29uc29sZS53YXJuKFwiW2Zvcm1dIElnbm9yaW5nIGR1cGxpY2F0ZSBldmVudDpcIiwgaSksIGZhbHNlKSA6ICh0aGlzLm5vbmNlcy5hZGQoaS5ub25jZSksIHRydWUpLCB0aGlzLmV2ZW50VGFyZ2V0cyA9IHt9LCB0aGlzLm5vbmNlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksIHRoaXMuZm9ybUlkID0gdCwgdGhpcy5iYXNlVXJsID0gciwgdGhpcy5mb3JtQ2FsbGJhY2tzID0gbiwgdGhpcy5pbnRlcm5hbENhbGxiYWNrcyA9IGE7XG4gIH1cbn1cbmNvbnN0IFhyID0gKGUpID0+IG5ldyBVUkwoZSkub3JpZ2luO1xuYXN5bmMgZnVuY3Rpb24gU3UoZSwgdCkge1xuICBjb25zdCBuID0gYXdhaXQgY29ubmVjdFRvQ2hpbGQoe1xuICAgIGlmcmFtZTogZSxcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgY2hpbGRPcmlnaW46IHRcbiAgfSkucHJvbWlzZSwgYSA9IGF3YWl0IFdzKG4pO1xuICBpZiAoIUpzKG4sIGEpKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkdvdCBpbnZhbGlkIENERSBjb25uZWN0aW9uIG9iamVjdFwiKTtcbiAgcmV0dXJuIG47XG59XG5jbGFzcyBrdSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICB9XG4gIGFkZENvbm5lY3Rpb24odCwgcikge1xuICAgIHRoaXMuY29ubmVjdGlvbnMuc2V0KHQsIHIpO1xuICB9XG4gIGdldENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3QgdCA9IHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgIGlmICghdClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbm5lY3Rpb24gbm90IGZvdW5kXCIpO1xuICAgIHJldHVybiB0O1xuICB9XG4gIGdldEFsbENvbm5lY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zO1xuICB9XG59XG5jb25zdCBJdSA9IChlLCB0LCByKSA9PiB7XG4gIGNvbnN0IHsgc3RyaXBlUFI6IG4gfSA9IGU7XG4gIG4ucHVibGlzaGVyLnN1YnNjcmliZSgoYSkgPT4ge1xuICAgIGlmIChhLmlzU3VjY2Vzcykge1xuICAgICAgY29uc3QgaSA9IGEubG9hZGVkVmFsdWUsIHMgPSBpLmlzQXZhaWxhYmxlICYmIGkuYXZhaWxhYmxlUHJvdmlkZXJzLmFwcGxlUGF5LCBsID0gaS5pc0F2YWlsYWJsZSAmJiBpLmF2YWlsYWJsZVByb3ZpZGVycy5nb29nbGVQYXksIGMgPSB7XG4gICAgICAgIGFwcGxlX3BheToge1xuICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgaXNBdmFpbGFibGU6IHMsXG4gICAgICAgICAgc3RhcnRGbG93OiBhc3luYyAodSkgPT4ge1xuICAgICAgICAgICAgcyAmJiBlbihcImFwcGxlX3BheVwiLCBpLCB0LCByLCB1KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdvb2dsZV9wYXk6IHtcbiAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIGlzQXZhaWxhYmxlOiBsLFxuICAgICAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKHUpID0+IHtcbiAgICAgICAgICAgIGwgJiYgZW4oXCJnb29nbGVfcGF5XCIsIGksIHQsIHIsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHIuZ2V0Lm9uUGF5bWVudFJlcXVlc3RMb2FkKGMpO1xuICAgIH1cbiAgfSk7XG59LCBlbiA9IChlLCB0LCByLCBuLCBhKSA9PiBSLnN0cmlwZVBSLnJ1bih7XG4gIGNvbnRleHQ6IHIsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogX2Uoci5jaGVja291dFBheW1lbnRNZXRob2RzLCBlKSxcbiAgbm9uQ2RlRm9ybUlucHV0czogaihyLmZvcm1EaXYpLFxuICBmb3JtQ2FsbGJhY2tzOiBuLFxuICBjdXN0b21QYXJhbXM6IHsgcHJvdmlkZXI6IGUsIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGE/Lm92ZXJyaWRlUGF5bWVudFJlcXVlc3QgfSxcbiAgaW5pdFJlc3VsdDogdFxufSksIHRuID0gXCJUaGUgc2VjdXJlIGZvcm0gZmFpbGVkIHRvIGxvYWQgcHJvcGVybHkuIFBsZWFzZSBjaGVjayB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24sIG9yIHRyeSBhZ2FpbiBsYXRlci5cIiwgeyBsb2dfXzogZmUsIGVycl9fOiBuZSB9ID0gayhcIm9wLWZvcm1cIiksIGhlID0gY2xhc3MgaGUge1xuICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgdGhpcy5pc0Rlc3Ryb3llZCA9IGZhbHNlLCB0aGlzLmNkZUxvYWRFdmVudCA9IG5ldyBYZSgpLCB0aGlzLmFueUNkZUNvbm4gPSBuZXcgWGUoKSwgdGhpcy5jb250ZXh0ID0gbmV3IFhlKCksIHRoaXMuaW5pdEZsb3dzID0gdXUoKSwgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZSwgdGhpcy5zdGFydEZvcm1Jbml0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYSA9IGplLmdldFRyYWNlcihcIm9wZW5wYXktanNcIiksIGkgPSBhLnN0YXJ0U3BhbihcImZvcm0uaW5pdGlhbGl6ZVwiLCB7XG4gICAgICAgIGtpbmQ6IGF0LkNMSUVOVCxcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgIFwib2pzLmNoZWNrb3V0U2VjdXJlVG9rZW5cIjogdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgICBcIm9qcy5kZXZpY2VUb2tlblwiOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICAgIFwib2pzLmZvcm1JZFwiOiB0aGlzLmZvcm1JZCxcbiAgICAgICAgICBcIm9qcy52ZXJzaW9uXCI6IHRoaXMub2pzVmVyc2lvbixcbiAgICAgICAgICBcIm9qcy5yZWxlYXNlX3ZlcnNpb25cIjogdGhpcy5vanNSZWxlYXNlVmVyc2lvbixcbiAgICAgICAgICBcIm9qcy5iYXNlX3VybFwiOiB0aGlzLmJhc2VVcmwsXG4gICAgICAgICAgXCJvanMucmVmZXJyZXJcIjogdGhpcy5yZWZlcnJlclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB4ZS53aXRoKGplLnNldFNwYW4oeGUuYWN0aXZlKCksIGkpLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcyA9IHRoaXMuY3JlYXRlRWxlbWVudChnZS5DREVfQlJJREdFKTtcbiAgICAgICAgICBzLm5vZGUuaWQgPSBcIl9fb3BfaW50ZXJuYWxfY2RlX2JyaWRnZVwiLCBzLm5vZGUuYXJpYUhpZGRlbiA9IFwidHJ1ZVwiLCBPYmplY3QuYXNzaWduKHMubm9kZS5zdHlsZSwge1xuICAgICAgICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgICAgICAgIG1hcmdpbjogXCIwcHhcIixcbiAgICAgICAgICAgIHBhZGRpbmc6IFwiMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIxcHhcIixcbiAgICAgICAgICAgIGhlaWdodDogXCIxcHhcIixcbiAgICAgICAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgIHBvc2l0aW9uOiBcImZpeGVkXCIsXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIixcbiAgICAgICAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiXG4gICAgICAgICAgfSksIHMubW91bnQoXCJib2R5XCIpLCBmZShcIkNERSBicmlkZ2UgZWxlbWVudCBtb3VudGVkXCIpLCBmZShcIkluaXRpYWxpemluZyBPcGVuUGF5IGZvcm06XCIpLCBmZShcIuKUnCBXYWl0aW5nIGZvciBDREUgbG9hZCBldmVudC4uLlwiKTtcbiAgICAgICAgICBjb25zdCBsID0gYXdhaXQgdGhpcy5jZGVMb2FkRXZlbnQud2FpdEZvckxvYWQoe1xuICAgICAgICAgICAgdGltZW91dFNlYzogMTIwLFxuICAgICAgICAgICAgdGltZW91dEVyck1zZzogdG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBmZShcIuKUnCBDREUgbG9hZCBldmVudCByZWNlaXZlZFwiKSwgaT8uYWRkRXZlbnQoXCJ3YWl0aW5nX2Zvcl9jZGVfY29ubmVjdGlvblwiKSwgZmUoXCLilJwgV2FpdGluZyBmb3IgQ0RFIGNvbm5lY3Rpb24uLi5cIik7XG4gICAgICAgICAgY29uc3QgYyA9IGE/LnN0YXJ0U3BhbihcImNkZS5jb25uZWN0XCIsIHZvaWQgMCwgeGUuYWN0aXZlKCkpLCB1ID0gYXdhaXQgdGhpcy5hbnlDZGVDb25uLndhaXRGb3JMb2FkKHtcbiAgICAgICAgICAgIHRpbWVvdXRTZWM6IDEyMCxcbiAgICAgICAgICAgIHRpbWVvdXRFcnJNc2c6IHRuXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYz8uZW5kKCksIGk/LmFkZEV2ZW50KFwiY2RlX2Nvbm5lY3RlZFwiKSwgZmUoXCLilJwgQ0RFIGNvbm5lY3Rpb24gcmVjZWl2ZWRcIiksIGF3YWl0IFlzKHUsIHRoaXMuZGV2aWNlVG9rZW4pLCBmZShcIuKUnCBDcmVhdGluZyBPSlMgY29udGV4dCwgc2V0dGluZyB1cCBoYW5kbGVycy4uLlwiKTtcbiAgICAgICAgICBjb25zdCBkID0gaGUuYnVpbGRPanNGbG93Q29udGV4dChcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIHUsXG4gICAgICAgICAgICB0aGlzLmdldEZvcm1EaXYoKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LnNldChkKSwgSXUodGhpcy5pbml0Rmxvd3MsIGQsIHRoaXMuZm9ybUNhbGxiYWNrcyksIGZlKFwi4pScIFN0YXJ0aW5nIE9KUyBpbml0IGZsb3dzLi4uXCIpLCBhd2FpdCBsdSh0aGlzLmluaXRGbG93cywgZCwgdGhpcy5mb3JtQ2FsbGJhY2tzKSwgdGhpcy5mb3JtQ2FsbGJhY2tzLmdldC5vbkxvYWQobC50b3RhbEFtb3VudEF0b21zLCBsLmN1cnJlbmN5KSwgZmUoXCLilbAgRG9uZSBpbml0aWFsaXppbmcgT0pTIGZsb3dzLlwiKSwgaT8uc2V0U3RhdHVzKHsgY29kZTogUGUuT0sgfSksIHYoXCJmb3JtX2xvYWRlZFwiKTtcbiAgICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICAgIGNvbnN0IGwgPSBhZShzKTtcbiAgICAgICAgICBpPy5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgY29kZTogUGUuRVJST1IsXG4gICAgICAgICAgICBtZXNzYWdlOiBsXG4gICAgICAgICAgfSksIG5lKFwi4pWwIEVycm9yIGluaXRpYWxpemluZyBPUCBmb3JtOlwiLCBsKSwgdihcImZvcm1faW5pdF9lcnJvclwiLCB7XG4gICAgICAgICAgICBlcnJvcjogbFxuICAgICAgICAgIH0pLCB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uTG9hZEVycm9yKGwpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGk/LmVuZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCB0aGlzLnNldEZvcm1IZWlnaHQgPSAoYSkgPT4ge1xuICAgICAgdGhpcy5mb3JtUHJvcGVydGllcy5oZWlnaHQgPSBhLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyAmJiBPYmplY3QudmFsdWVzKHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzKS5mb3JFYWNoKChpKSA9PiB7XG4gICAgICAgICFpIHx8IGkudHlwZSA9PT0gZ2UuQ0RFX0JSSURHRSB8fCAoaS5ub2RlLnN0eWxlLmhlaWdodCA9IGEpO1xuICAgICAgfSk7XG4gICAgfSwgdGhpcy5vbkNkZUxvYWRlZCA9IChhKSA9PiB7XG4gICAgICB0aGlzLmNkZUxvYWRFdmVudC5jdXJyZW50LmlzU3VjY2VzcyB8fCAodGhpcy5jZGVMb2FkRXZlbnQuc2V0KGEpLCB2KFwiY2RlX2xvYWRlZFwiKSk7XG4gICAgfSwgdGhpcy5vbkNkZUxvYWRFcnJvciA9IChhKSA9PiB7XG4gICAgICB0aGlzLmNkZUxvYWRFdmVudC5jdXJyZW50LmlzU3VjY2VzcyB8fCAodGhpcy5jZGVMb2FkRXZlbnQudGhyb3cobmV3IEVycm9yKGEpLCBhKSwgdihcImNkZV9sb2FkX2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IGFcbiAgICAgIH0pKTtcbiAgICB9LCB0aGlzLmNyZWF0ZUVsZW1lbnQgPSAoYSwgaSA9IHt9KSA9PiB7XG4gICAgICBpZiAodGhpcy5jaGVja1ZhbGlkRm9ybUluc3RhbmNlKFwiY3JlYXRlRWxlbWVudFwiKSwgIXRoaXMuY29uZmlnKSB0aHJvdyBuZXcgRXJyb3IoXCJPcGVuUGF5IGZvcm0gbm90IGluaXRpYWxpemVkXCIpO1xuICAgICAgY29uc3QgcyA9IE1vLnBhcnNlKGEpLCBsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKSwgYyA9IHRoaXMuYnVpbGRRdWVyeVN0cmluZyhpKTtcbiAgICAgIGwubmFtZSA9IGAke3N9LWVsZW1lbnRgO1xuICAgICAgY29uc3QgdSA9IG5ldyBVUkwoYC9hcHAvdjEvJHtsLm5hbWV9L2AsIHRoaXMuY29uZmlnLmJhc2VVcmwpO1xuICAgICAgcmV0dXJuIHUuc2VhcmNoID0gYy50b1N0cmluZygpLCBsLnNyYyA9IHUuaHJlZiwgbC5zdHlsZS5ib3JkZXIgPSBcIm5vbmVcIiwgbC5zdHlsZS53aWR0aCA9IFwiMTAwJVwiLCB0aGlzLnJlZ2lzdGVySWZyYW1lKHMsIGwpO1xuICAgIH0sIHRoaXMucmVnaXN0ZXJJZnJhbWUgPSAoYSwgaSkgPT4ge1xuICAgICAgY29uc3QgcyA9IHtcbiAgICAgICAgdHlwZTogYSxcbiAgICAgICAgbm9kZTogaSxcbiAgICAgICAgbW91bnQ6IChsKSA9PiB7XG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihsKT8uYXBwZW5kQ2hpbGQoaSksIHYoXCJlbGVtZW50X21vdW50ZWRcIiwge1xuICAgICAgICAgICAgZWxlbWVudF90eXBlOiBhXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0VG9FbGVtZW50KHsgdHlwZTogcy50eXBlLCBub2RlOiBzLm5vZGUgfSksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzIHx8ICh0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyA9IHtcbiAgICAgICAgW2dlLkNBUkRdOiB2b2lkIDAsXG4gICAgICAgIFtnZS5DQVJEX05VTUJFUl06IHZvaWQgMCxcbiAgICAgICAgW2dlLkNBUkRfRVhQSVJZXTogdm9pZCAwLFxuICAgICAgICBbZ2UuQ0FSRF9DVkNdOiB2b2lkIDAsXG4gICAgICAgIFtnZS5DREVfQlJJREdFXTogdm9pZCAwXG4gICAgICB9KSwgdGhpcy5yZWdpc3RlcmVkRWxlbWVudHNbYV0gPSBzLCBzO1xuICAgIH0sIHRoaXMuYnVpbGRRdWVyeVN0cmluZyA9IChhKSA9PiB7XG4gICAgICBjb25zdCBpID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgcmV0dXJuIGkuYXBwZW5kKFwicmVmZXJlclwiLCB0aGlzLnJlZmVycmVyKSwgaS5hcHBlbmQoXCJmb3JtSWRcIiwgdGhpcy5mb3JtSWQpLCBhLnN0eWxlcyAmJiBpLmFwcGVuZChcInN0eWxlc1wiLCB2dShhLnN0eWxlcykpLCBpLmFwcGVuZChcInNlY3VyZVRva2VuXCIsIHRoaXMuY29uZmlnLmNoZWNrb3V0U2VjdXJlVG9rZW4pLCBpO1xuICAgIH0sIHRoaXMuY29ubmVjdFRvRWxlbWVudCA9IChhKSA9PiBmdChcbiAgICAgIHtcbiAgICAgICAgc3Bhbk5hbWU6IFwiY29ubmVjdF90b19lbGVtZW50XCIsXG4gICAgICAgIGNoZWNrb3V0U2VjdXJlVG9rZW46IHRoaXMuY29uZmlnLmNoZWNrb3V0U2VjdXJlVG9rZW4sXG4gICAgICAgIGRldmljZVRva2VuOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICBmb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgICB2ZXJzaW9uOiB0aGlzLm9qc1ZlcnNpb24sXG4gICAgICAgIHJlbGVhc2VWZXJzaW9uOiB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uLFxuICAgICAgICBiYXNlVXJsOiB0aGlzLmJhc2VVcmwsXG4gICAgICAgIHJlZmVycmVyOiB0aGlzLnJlZmVycmVyXG4gICAgICB9LFxuICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBpID0gYXdhaXQgU3UoYS5ub2RlKTtcbiAgICAgICAgaS50cmFjaW5nQ29udGV4dCA9IHtcbiAgICAgICAgICBjaGVja291dFNlY3VyZVRva2VuOiB0aGlzLmNvbmZpZy5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgIGRldmljZVRva2VuOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICAgIGZvcm1JZDogdGhpcy5mb3JtSWQsXG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5vanNWZXJzaW9uLFxuICAgICAgICAgIHJlbGVhc2VWZXJzaW9uOiB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uLFxuICAgICAgICAgIGJhc2VVcmw6IHRoaXMuYmFzZVVybCxcbiAgICAgICAgICByZWZlcnJlcjogdGhpcy5yZWZlcnJlclxuICAgICAgICB9LCB0aGlzLmNvbm5lY3Rpb25NYW5hZ2VyLmFkZENvbm5lY3Rpb24oYS50eXBlLCBpKSwgIXRoaXMuYW55Q2RlQ29ubi5jdXJyZW50LmlzU3VjY2VzcyAmJiBhLnR5cGUgPT09IGdlLkNERV9CUklER0UgJiYgdGhpcy5hbnlDZGVDb25uLnNldChpKTtcbiAgICAgIH1cbiAgICApLmNhdGNoKChpKSA9PiBuZShcIltGT1JNXSBFcnJvciBjb25uZWN0aW5nIHRvIENERSBpZnJhbWVcIiwgaSkpLCB0aGlzLmdldEZvcm1EaXYgPSAoKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZm9ybVRhcmdldCkgPz8gZG9jdW1lbnQuYm9keSwgdGhpcy5zdWJtaXRDYXJkID0gYXN5bmMgKGEpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzU3VibWl0dGluZykge1xuICAgICAgICBuZShcIkZvcm0gaXMgYWxyZWFkeSBzdWJtaXR0aW5nLiBQbGVhc2Ugd2FpdCBmb3IgdGhlIHN1Ym1pc3Npb24gdG8gZmluaXNoIGJlZm9yZSBzdWJtaXR0aW5nIGFnYWluLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaSA9IGF3YWl0IGZ0KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNwYW5OYW1lOiBcInN1Ym1pdF9jYXJkXCIsXG4gICAgICAgICAgICBjaGVja291dFNlY3VyZVRva2VuOiB0aGlzLmNvbmZpZy5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgICAgZGV2aWNlVG9rZW46IHRoaXMuZGV2aWNlVG9rZW4sXG4gICAgICAgICAgICBmb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy5vanNWZXJzaW9uLFxuICAgICAgICAgICAgcmVsZWFzZVZlcnNpb246IHRoaXMub2pzUmVsZWFzZVZlcnNpb24sXG4gICAgICAgICAgICBiYXNlVXJsOiB0aGlzLmJhc2VVcmwsXG4gICAgICAgICAgICByZWZlcnJlcjogdGhpcy5yZWZlcnJlcixcbiAgICAgICAgICAgIHBheW1lbnRSb3V0ZUlkOiBhPy5wYXltZW50Um91dGVJZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdihcInN1Ym1pdF9jYXJkXCIsIHsgLi4uYSB9KSwgdGhpcy5jaGVja1ZhbGlkRm9ybUluc3RhbmNlKFwic3VibWl0Q2FyZFwiKTtcbiAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLmNvbnRleHQuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgICBpZiAoIXMpXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBsZWFzZSB3YWl0IGZvciB0aGUgZm9ybSB0byBmaW5pc2ggbG9hZGluZyBiZWZvcmUgc3VibWl0dGluZy5cIik7XG4gICAgICAgICAgICBhd2FpdCBSLmNvbW1vbkNDLnJ1bih7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHMsXG4gICAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogX2Uocy5jaGVja291dFBheW1lbnRNZXRob2RzLCBcImNyZWRpdF9jYXJkXCIpLFxuICAgICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKHMuZm9ybURpdiksXG4gICAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgY3VycmVudENkZUNvbm5lY3Rpb25zOiB0aGlzLmNvbm5lY3Rpb25NYW5hZ2VyLmdldEFsbENvbm5lY3Rpb25zKCksXG4gICAgICAgICAgICAgICAgcGF5bWVudFJvdXRlSWQ6IGE/LnBheW1lbnRSb3V0ZUlkXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1N1Ym1pdHRpbmcgPSAhMSwgaTtcbiAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgdGhyb3cgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZSwgaTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLmdldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzID0gKCkgPT4gZnQoXG4gICAgICB7XG4gICAgICAgIHNwYW5OYW1lOiBcImdldF9hdmFpbGFibGVfcGF5bWVudF9tZXRob2RzXCIsXG4gICAgICAgIGNoZWNrb3V0U2VjdXJlVG9rZW46IHRoaXMuY29uZmlnLmNoZWNrb3V0U2VjdXJlVG9rZW4sXG4gICAgICAgIGRldmljZVRva2VuOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICBmb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgICB2ZXJzaW9uOiB0aGlzLm9qc1ZlcnNpb24sXG4gICAgICAgIHJlbGVhc2VWZXJzaW9uOiB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uLFxuICAgICAgICBiYXNlVXJsOiB0aGlzLmJhc2VVcmwsXG4gICAgICAgIHJlZmVycmVyOiB0aGlzLnJlZmVycmVyXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrVmFsaWRGb3JtSW5zdGFuY2UoXCJnZXRBdmFpbGFibGVQYXltZW50TWV0aG9kc1wiKTtcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuY29udGV4dC5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICAgICAgaWYgKCFhKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBsZWFzZSB3YWl0IGZvciB0aGUgZm9ybSB0byBmaW5pc2ggbG9hZGluZyBiZWZvcmUgZ2V0dGluZyBhdmFpbGFibGUgcGF5bWVudCBtZXRob2RzLlwiKTtcbiAgICAgICAgY29uc3QgeyBwcm9jZXNzb3JzOiBpLCBpc0F2YWlsYWJsZTogcyB9ID0gS3IoXG4gICAgICAgICAgdGhpcy5pbml0Rmxvd3NcbiAgICAgICAgKSwgeyBwcm9jZXNzb3JzOiBsLCBpc0F2YWlsYWJsZTogYyB9ID0gWXIoXG4gICAgICAgICAgdGhpcy5pbml0Rmxvd3NcbiAgICAgICAgKSwgZCA9IHRoaXMuaW5pdEZsb3dzLnBheXBhbC5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk/LmlzQXZhaWxhYmxlID8/ICExLCB7IHByb2Nlc3NvcnM6IG0sIGlzQXZhaWxhYmxlOiBmIH0gPSBXcih0aGlzLmluaXRGbG93cyksIHsgcHJvY2Vzc29yczogeSwgaXNBdmFpbGFibGU6IF8gfSA9IEpyKHRoaXMuaW5pdEZsb3dzKSwgeyBwcm9jZXNzb3JzOiBnLCBpc0F2YWlsYWJsZTogdyB9ID0gWnIoXG4gICAgICAgICAgdGhpcy5pbml0Rmxvd3NcbiAgICAgICAgKSwgaCA9IGEuY2hlY2tvdXRQYXltZW50TWV0aG9kcy5zb21lKFxuICAgICAgICAgIChBZSkgPT4gQWUucHJvY2Vzc29yX25hbWUgPT09IFwicG9ja3l0XCIgJiYgQWUucHJvdmlkZXIgPT09IFwicGF5cGFsXCJcbiAgICAgICAgKSwgUyA9IHRoaXMuaW5pdEZsb3dzLmxvb3AucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpPy5pc0F2YWlsYWJsZSA/PyAhMSwgQyA9IHRoaXMuaW5pdEZsb3dzLnN0cmlwZUxpbmsucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpLCBMID0gQz8uaXNBdmFpbGFibGUgPz8gITEsIEEgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogSS5jYXJkLFxuICAgICAgICAgICAgcHJvY2Vzc29yczogW10sXG4gICAgICAgICAgICBpc0F2YWlsYWJsZTogITBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IEkuYXBwbGVQYXksXG4gICAgICAgICAgICBwcm9jZXNzb3JzOiBpLFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IHNcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IEkuZ29vZ2xlUGF5LFxuICAgICAgICAgICAgcHJvY2Vzc29yczogbCxcbiAgICAgICAgICAgIGlzQXZhaWxhYmxlOiBjXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBJLnBheXBhbCxcbiAgICAgICAgICAgIHByb2Nlc3NvcnM6IGQgPyBbVS5FbnVtLnBheXBhbF0gOiBbXSxcbiAgICAgICAgICAgIGlzQXZhaWxhYmxlOiBkXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBJLmtsYXJuYSxcbiAgICAgICAgICAgIHByb2Nlc3NvcnM6IG0sXG4gICAgICAgICAgICBpc0F2YWlsYWJsZTogZlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogSS5hZmZpcm0sXG4gICAgICAgICAgICBwcm9jZXNzb3JzOiB5LFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IF9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IEkuYWZ0ZXJwYXksXG4gICAgICAgICAgICBwcm9jZXNzb3JzOiBnLFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IHdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IEkucG9ja3l0UGF5cGFsLFxuICAgICAgICAgICAgcHJvY2Vzc29yczogaCA/IFtVLkVudW0ucG9ja3l0XSA6IFtdLFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IGhcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IEkubG9vcENyeXB0byxcbiAgICAgICAgICAgIHByb2Nlc3NvcnM6IFMgPyBbVS5FbnVtLmxvb3BdIDogW10sXG4gICAgICAgICAgICBpc0F2YWlsYWJsZTogU1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogSS5zdHJpcGVMaW5rLFxuICAgICAgICAgICAgcHJvY2Vzc29yczogW1UuRW51bS5zdHJpcGVdLFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IEwsXG4gICAgICAgICAgICBjb250cm9sbGVyOiBDPy5pc0F2YWlsYWJsZSA/IEMuY29udHJvbGxlciA6IHZvaWQgMFxuICAgICAgICAgIH1cbiAgICAgICAgXSwgJCA9IHtcbiAgICAgICAgICBwYXlwYWw6IEkucGF5cGFsLFxuICAgICAgICAgIGFpcndhbGxleEdvb2dsZVBheTogSS5haXJ3YWxsZXhHb29nbGVQYXksXG4gICAgICAgICAgYWlyd2FsbGV4QXBwbGVQYXk6IEkuYWlyd2FsbGV4QXBwbGVQYXksXG4gICAgICAgICAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiBJLmF1dGhvcml6ZW5ldEdvb2dsZVBheSxcbiAgICAgICAgICBhdXRob3JpemVOZXRBcHBsZVBheTogSS5hdXRob3JpemVuZXRBcHBsZVBheSxcbiAgICAgICAgICBhZHllbkdvb2dsZVBheTogSS5hZHllbkdvb2dsZVBheSxcbiAgICAgICAgICBhZHllbkFwcGxlUGF5OiBJLmFkeWVuQXBwbGVQYXlcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFsuLi5PYmplY3QuZW50cmllcyh0aGlzLmluaXRGbG93cykubWFwKChbQWUsIENyXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFZ0ID0gQ3IucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiAkW0FlXSA/PyBBZSxcbiAgICAgICAgICAgIHByb2Nlc3NvcnM6IFtdLFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IFZ0Py5pc0F2YWlsYWJsZSA/PyAhMVxuICAgICAgICAgIH07XG4gICAgICAgIH0pLCAuLi5BXTtcbiAgICAgIH1cbiAgICApLCB0aGlzLmdlbmVyYWxTdWJtaXQgPSBhc3luYyAoYSwgaSkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNTdWJtaXR0aW5nKSB7XG4gICAgICAgIG5lKFwiRm9ybSBpcyBhbHJlYWR5IHN1Ym1pdHRpbmcuIFBsZWFzZSB3YWl0IGZvciB0aGUgc3VibWlzc2lvbiB0byBmaW5pc2ggYmVmb3JlIHN1Ym1pdHRpbmcgYWdhaW4uXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzID0gYXdhaXQgZnQoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3Bhbk5hbWU6IFwiZ2VuZXJhbF9mb3JtX3N1Ym1pdFwiLFxuICAgICAgICAgICAgY2hlY2tvdXRTZWN1cmVUb2tlbjogdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgICAgIGRldmljZVRva2VuOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICAgICAgZm9ybUlkOiB0aGlzLmZvcm1JZCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMub2pzVmVyc2lvbixcbiAgICAgICAgICAgIHJlbGVhc2VWZXJzaW9uOiB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uLFxuICAgICAgICAgICAgYmFzZVVybDogdGhpcy5iYXNlVXJsLFxuICAgICAgICAgICAgcmVmZXJyZXI6IHRoaXMucmVmZXJyZXJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHYoXCJnZW5lcmFsX2Zvcm1fc3VibWl0XCIsIHsgbWV0aG9kOiBhLCBzZXR0aW5nczogaSB9KSwgdGhpcy5jaGVja1ZhbGlkRm9ybUluc3RhbmNlKFwiZ2VuZXJhbFN1Ym1pdFwiKTtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0aGlzLmNvbnRleHQuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgICBpZiAoIWwpXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBsZWFzZSB3YWl0IGZvciB0aGUgZm9ybSB0byBmaW5pc2ggbG9hZGluZyBiZWZvcmUgc3VibWl0dGluZy5cIik7XG4gICAgICAgICAgICBzd2l0Y2ggKGEpIHtcbiAgICAgICAgICAgICAgY2FzZSBJLmNhcmQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VibWl0Q2FyZChpKTtcbiAgICAgICAgICAgICAgY2FzZSBJLnBvY2t5dFBheXBhbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gUi5wb2NreXRQYXlwYWwucnVuKHtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGwsXG4gICAgICAgICAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IF9lKFxuICAgICAgICAgICAgICAgICAgICBsLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsXG4gICAgICAgICAgICAgICAgICAgIGtlLlBBWVBBTCxcbiAgICAgICAgICAgICAgICAgICAgXCJwb2NreXRcIlxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGoobC5mb3JtRGl2KSxcbiAgICAgICAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgICAgICAgICAgIGN1c3RvbVBhcmFtczogeyBzZXR0aW5nczogaSB9LFxuICAgICAgICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNhc2UgSS5wYXlwYWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFIucGF5cGFsLnJ1bih7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiBsLFxuICAgICAgICAgICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBfZShcbiAgICAgICAgICAgICAgICAgICAgbC5jaGVja291dFBheW1lbnRNZXRob2RzLFxuICAgICAgICAgICAgICAgICAgICBrZS5QQVlQQUwsXG4gICAgICAgICAgICAgICAgICAgIFwicGF5cGFsXCJcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGwuZm9ybURpdiksXG4gICAgICAgICAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgICBjdXN0b21QYXJhbXM6IHsgc2V0dGluZ3M6IGkgfSxcbiAgICAgICAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjYXNlIEkua2xhcm5hOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGFydEZsb3c6IGMgfSA9IFdyKHRoaXMuaW5pdEZsb3dzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYyhpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIEkuYWZmaXJtOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGFydEZsb3c6IGMgfSA9IEpyKHRoaXMuaW5pdEZsb3dzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYyhpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIEkuYWZ0ZXJwYXk6IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXJ0RmxvdzogYyB9ID0gWnIodGhpcy5pbml0Rmxvd3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjKGkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgSS5sb29wQ3J5cHRvOlxuICAgICAgICAgICAgICAgIHJldHVybiBSLmxvb3BDcnlwdG8ucnVuKHtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGwsXG4gICAgICAgICAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IF9lKFxuICAgICAgICAgICAgICAgICAgICBsLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsXG4gICAgICAgICAgICAgICAgICAgIFwiY3J5cHRvXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibG9vcFwiXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogaihsLmZvcm1EaXYpLFxuICAgICAgICAgICAgICAgICAgZm9ybUNhbGxiYWNrczogdGhpcy5mb3JtQ2FsbGJhY2tzLFxuICAgICAgICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBpLFxuICAgICAgICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNhc2UgSS5hcHBsZVBheToge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhcnRGbG93OiBjIH0gPSBLcih0aGlzLmluaXRGbG93cyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMoaSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSBJLmdvb2dsZVBheToge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhcnRGbG93OiBjIH0gPSBZcih0aGlzLmluaXRGbG93cyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMoaSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gS2VlcGluZyBleGlzdGluZyBjb21tZW50ZWQgY29kZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgdGhpcyBpbiB0aGUgZnV0dXJlIHZlcnNpb25cbiAgICAgICAgICAgICAgY2FzZSBJLmFpcndhbGxleEdvb2dsZVBheToge1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSB0aGlzLmluaXRGbG93cy5haXJ3YWxsZXhHb29nbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgICAgICAgIGlmICghYykge1xuICAgICAgICAgICAgICAgICAgbmUoXG4gICAgICAgICAgICAgICAgICAgIFwiYWlyd2FsbGV4LWdvb2dsZS1wYXkgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgdXNpbmcgJ2dldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzKCknXCJcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjLnN0YXJ0RmxvdyhpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIEkuYWlyd2FsbGV4QXBwbGVQYXk6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gdGhpcy5pbml0Rmxvd3MuYWlyd2FsbGV4QXBwbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgICAgICAgIGlmICghYykge1xuICAgICAgICAgICAgICAgICAgbmUoXG4gICAgICAgICAgICAgICAgICAgIFwiYWlyd2FsbGV4LWFwcGxlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuc3RhcnRGbG93KGkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgSS5hdXRob3JpemVuZXRHb29nbGVQYXk6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gdGhpcy5pbml0Rmxvd3MuYXV0aG9yaXplTmV0R29vZ2xlUGF5LnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICAgICAgICAgICAgICBpZiAoIWMpIHtcbiAgICAgICAgICAgICAgICAgIG5lKFxuICAgICAgICAgICAgICAgICAgICBcImF1dGhvcml6ZS1uZXQtZ29vZ2xlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuc3RhcnRGbG93KGkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgSS5hdXRob3JpemVuZXRBcHBsZVBheToge1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSB0aGlzLmluaXRGbG93cy5hdXRob3JpemVOZXRBcHBsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFjKSB7XG4gICAgICAgICAgICAgICAgICBuZShcbiAgICAgICAgICAgICAgICAgICAgXCJhdXRob3JpemUtbmV0LWFwcGxlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuc3RhcnRGbG93KGkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgSS5hZHllbkdvb2dsZVBheToge1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSB0aGlzLmluaXRGbG93cy5hZHllbkdvb2dsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFjKSB7XG4gICAgICAgICAgICAgICAgICBuZShcbiAgICAgICAgICAgICAgICAgICAgXCJhZHllbi1nb29nbGUtcGF5IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IHVzaW5nICdnZXRBdmFpbGFibGVQYXltZW50TWV0aG9kcygpJ1wiXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYy5zdGFydEZsb3coaSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSBJLmFkeWVuQXBwbGVQYXk6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gdGhpcy5pbml0Rmxvd3MuYWR5ZW5BcHBsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFjKSB7XG4gICAgICAgICAgICAgICAgICBuZShcbiAgICAgICAgICAgICAgICAgICAgXCJhZHllbi1hcHBsZS1wYXkgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgdXNpbmcgJ2dldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzKCknXCJcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjLnN0YXJ0RmxvdyhpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIEkuYWlyd2FsbGV4QUNIOlxuICAgICAgICAgICAgICAgIHJldHVybiBSLmFpcndhbGxleEFDSC5ydW4oe1xuICAgICAgICAgICAgICAgICAgY29udGV4dDogbCxcbiAgICAgICAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogX2UoXG4gICAgICAgICAgICAgICAgICAgIGwuY2hlY2tvdXRQYXltZW50TWV0aG9kcyxcbiAgICAgICAgICAgICAgICAgICAga2UuQUNILFxuICAgICAgICAgICAgICAgICAgICBcImFpcndhbGxleFwiXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogaihsLmZvcm1EaXYpLFxuICAgICAgICAgICAgICAgICAgZm9ybUNhbGxiYWNrczogdGhpcy5mb3JtQ2FsbGJhY2tzLFxuICAgICAgICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBpLFxuICAgICAgICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNhc2UgSS5haXJ3YWxsZXhFRlQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFIuYWlyd2FsbGV4RUZULnJ1bih7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiBsLFxuICAgICAgICAgICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBfZShcbiAgICAgICAgICAgICAgICAgICAgbC5jaGVja291dFBheW1lbnRNZXRob2RzLFxuICAgICAgICAgICAgICAgICAgICBrZS5FRlQsXG4gICAgICAgICAgICAgICAgICAgIFwiYWlyd2FsbGV4XCJcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGwuZm9ybURpdiksXG4gICAgICAgICAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0aGlzLmZvcm1DYWxsYmFja3MsXG4gICAgICAgICAgICAgICAgICBjdXN0b21QYXJhbXM6IGksXG4gICAgICAgICAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY2FzZSBJLmFpcndhbGxleEJBQ1M6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFIuYWlyd2FsbGV4QkFDUy5ydW4oe1xuICAgICAgICAgICAgICAgICAgY29udGV4dDogbCxcbiAgICAgICAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogX2UoXG4gICAgICAgICAgICAgICAgICAgIGwuY2hlY2tvdXRQYXltZW50TWV0aG9kcyxcbiAgICAgICAgICAgICAgICAgICAga2UuQkFDUyxcbiAgICAgICAgICAgICAgICAgICAgXCJhaXJ3YWxsZXhcIlxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGoobC5mb3JtRGl2KSxcbiAgICAgICAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgICAgICAgICAgIGN1c3RvbVBhcmFtczogaSxcbiAgICAgICAgICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjYXNlIEkuYWlyd2FsbGV4U0VQQTpcbiAgICAgICAgICAgICAgICByZXR1cm4gUi5haXJ3YWxsZXhTRVBBLnJ1bih7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiBsLFxuICAgICAgICAgICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBfZShcbiAgICAgICAgICAgICAgICAgICAgbC5jaGVja291dFBheW1lbnRNZXRob2RzLFxuICAgICAgICAgICAgICAgICAgICBrZS5TRVBBLFxuICAgICAgICAgICAgICAgICAgICBcImFpcndhbGxleFwiXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogaihsLmZvcm1EaXYpLFxuICAgICAgICAgICAgICAgICAgZm9ybUNhbGxiYWNrczogdGhpcy5mb3JtQ2FsbGJhY2tzLFxuICAgICAgICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBpLFxuICAgICAgICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNhc2UgSS5zdHJpcGVMaW5rOiB7XG4gICAgICAgICAgICAgICAgbmUoXG4gICAgICAgICAgICAgICAgICBcIlN0cmlwZUxpbmsgY2Fubm90IGJlIHN1Ym1pdHRlZCBtYW51YWxseS4gUGxlYXNlIG1vdW50IHRoZSBidXR0b24gcHJvcGVybHkgYW5kIGlmIHVzZXIgY29tcGxldGVkIHRoZSBwYXltZW50IGZsb3cgdmlhIFN0cmlwZUxpbmsgYnV0dG9uLCB0aGUgcGF5bWVudCB3aWxsIGJlIHN1Ym1pdHRlZCBhdXRvbWF0aWNhbGx5LlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjdChhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU3VibWl0dGluZyA9ICExLCBzO1xuICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICB0aHJvdyB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlLCBzO1xuICAgICAgfVxuICAgIH0sIHRoaXMuc3VibWl0V2l0aCA9IHRoaXMuZ2VuZXJhbFN1Ym1pdCwgdGhpcy5zdWJtaXQgPSB0aGlzLnN1Ym1pdENhcmQsIHRoaXMuZGVzdHJveSA9ICgpID0+IHtcbiAgICAgIGZlKFwiRGVzdHJveWluZyBPcGVuUGF5IGZvcm0uLi5cIiksIHRoaXMuY2hlY2tWYWxpZEZvcm1JbnN0YW5jZShcImRlc3Ryb3lcIiksIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgZm9yIChjb25zdCBhIG9mIE9iamVjdC52YWx1ZXModGhpcy5yZWdpc3RlcmVkRWxlbWVudHMgPz8ge30pKVxuICAgICAgICBhICYmIGEubm9kZS5yZW1vdmUoKTtcbiAgICAgIEIoKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5ldmVudEhhbmRsZXIuaGFuZGxlTWVzc2FnZS5iaW5kKHRoaXMuZXZlbnRIYW5kbGVyKSksIFdpKCksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzID0gbnVsbCwgZGVsZXRlIHdpbmRvdy5vanMsIHYoXCJmb3JtX2Rlc3Ryb3llZFwiKTtcbiAgICB9LCB0aGlzLnVwZGF0ZUNhbGxiYWNrcyA9IChhKSA9PiB7XG4gICAgICB0aGlzLmZvcm1DYWxsYmFja3Muc2V0Q2FsbGJhY2tzKGEpO1xuICAgIH0sIGhlLmFzc2lnbkFzU2luZ2xldG9uKHRoaXMpLCB0aGlzLm9qc1ZlcnNpb24gPSBcIjAuNS4yM1wiLCB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uID0gXCJsb2NhbF9idWlsZFwiLCB0aGlzLmJhc2VVcmwgPSB0LmJhc2VVcmwgPz8gXCJodHRwczovL2NkZS5nZXRvcGVucGF5LmNvbVwiLCB0aGlzLmNvbmZpZyA9IHsgLi4udCwgYmFzZVVybDogdGhpcy5iYXNlVXJsIH0sIHRoaXMuZm9ybUNhbGxiYWNrcyA9IGFyLmZyb21PYmplY3QodCksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzID0gbnVsbCwgdGhpcy5mb3JtSWQgPSBgb3Bqcy1mb3JtLSR7djQoKX1gLCB0aGlzLnJlZmVycmVyID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiwgdGhpcy5mb3JtVGFyZ2V0ID0gdC5mb3JtVGFyZ2V0ID8/IFwiYm9keVwiLCB0aGlzLmZvcm1Qcm9wZXJ0aWVzID0geyBoZWlnaHQ6IFwiMXB4XCIgfSwgdGhpcy5jb25uZWN0aW9uTWFuYWdlciA9IG5ldyBrdSgpLCB0aGlzLmRldmljZVRva2VuID0gem4oKSwgWWkoKTtcbiAgICBjb25zdCB7IGZyYW1ld29yazogciwgdmVyc2lvbjogbiB9ID0gZnUoKTtcbiAgICBTbih0aGlzLmJhc2VVcmwpLnRoZW4oKGEpID0+IHtcbiAgICAgIGlmICghZXIuY3VycmVudC5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgY29uc3QgaSA9IHtcbiAgICAgICAgICBjaGVja291dFNlY3VyZVRva2VuOiB0aGlzLmNvbmZpZy5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgIGRldmljZVRva2VuOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICAgIGVudmlyb25tZW50OiBhLFxuICAgICAgICAgIGZyYW1ld29yazogcixcbiAgICAgICAgICBmcmFtZXdvcmtWZXJzaW9uOiBuLFxuICAgICAgICAgIG9qc1ZlcnNpb246IHRoaXMub2pzVmVyc2lvbixcbiAgICAgICAgICBvanNSZWxlYXNlVmVyc2lvbjogdGhpcy5vanNSZWxlYXNlVmVyc2lvbixcbiAgICAgICAgICByZWZlcnJlcjogdGhpcy5yZWZlcnJlcixcbiAgICAgICAgICBiYXNlVXJsOiB0aGlzLmJhc2VVcmxcbiAgICAgICAgfTtcbiAgICAgICAgZXIuc2V0KGkpO1xuICAgICAgfVxuICAgIH0pLCB2KFwiZm9ybV9pbml0XCIpLCBjb25zb2xlLmxvZyhcIk9KUyBWRVJTSU9OXCIsIHRoaXMub2pzVmVyc2lvbiksIHQuYWxsb3dUcmFjaW5nID09PSB0cnVlICYmIFB1KHRoaXMub2pzVmVyc2lvbiwgdGhpcy5iYXNlVXJsKSwgdGhpcy5ldmVudEhhbmRsZXIgPSBuZXcgQXUodGhpcy5mb3JtSWQsIHRoaXMuYmFzZVVybCwgdGhpcy5mb3JtQ2FsbGJhY2tzLCB7XG4gICAgICBzZXRGb3JtSGVpZ2h0OiB0aGlzLnNldEZvcm1IZWlnaHQsXG4gICAgICBvbkNkZUxvYWRlZDogdGhpcy5vbkNkZUxvYWRlZCxcbiAgICAgIG9uQ2RlTG9hZEVycm9yOiB0aGlzLm9uQ2RlTG9hZEVycm9yXG4gICAgfSksIEIoKT8uYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5ldmVudEhhbmRsZXIuaGFuZGxlTWVzc2FnZS5iaW5kKHRoaXMuZXZlbnRIYW5kbGVyKSksIHRoaXMuc3RhcnRGb3JtSW5pdCgpO1xuICB9XG4gIGdldCBjaGVja291dFNlY3VyZVRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jaGVja291dFNlY3VyZVRva2VuO1xuICB9XG4gIGNoZWNrVmFsaWRGb3JtSW5zdGFuY2UodCA9IFwidW5rbm93blwiKSB7XG4gICAgY29uc3QgciA9IGhlLmdldEluc3RhbmNlKCksIG4gPSB7XG4gICAgICB0aGlzRm9ybUlkOiB0aGlzLmZvcm1JZCxcbiAgICAgIGN1cnJlbnRGb3JtSWQ6IHI/LmZvcm1JZCB8fCBcIm5vLWN1cnJlbnQtaW5zdGFuY2VcIixcbiAgICAgIGlzRGVzdHJveWVkOiB0aGlzLmlzRGVzdHJveWVkLFxuICAgICAgY2hlY2tvdXRUb2tlbjogdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbi5zdWJzdHJpbmcoMCwgMTApICsgXCIuLi5cIlxuICAgIH0sIGEgPSBgXG4gICAgICBbV2FybmluZ10gSW52YWxpZCBmb3JtIGluc3RhbmNlIGRldGVjdGVkLlxuICAgICAgSXQgbG9va3MgbGlrZSB5b3UgYXJlIHN0aWxsIHVzaW5nIGFuIG9sZCBpbnN0YW5jZSB0aGF0IGhhcyBiZWVuIGRlc3Ryb3llZC5cbiAgICAgIFBsZWFzZSBtYWtlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgbGF0ZXN0IGluc3RhbmNlIG9mIHRoZSBmb3JtIGFuZCBjbGVhbnVwIGV2ZW50IGxpc3RlbmVycy5cbiAgICAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICAgRGVidWcgSW5mbzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgLSBjYWxsZXI6ICR7dH1cbiAgICAgIC0gY2FsbGVyX2Zvcm1faWQ6ICR7bi50aGlzRm9ybUlkfVxuICAgICAgLSBjdXJyZW50X2FjdGl2ZV9mb3JtX2lkOiAke24uY3VycmVudEZvcm1JZH1cbiAgICAgIC0gaXNfZGVzdHJveWVkOiAke24uaXNEZXN0cm95ZWR9XG4gICAgICAtIGNoZWNrb3V0X3Rva2VuOiAke24uY2hlY2tvdXRUb2tlbn1cbiAgICBgO1xuICAgIHJldHVybiB0aGlzLmlzRGVzdHJveWVkID8gKG5lKGEpLCB2KFwib3V0ZGF0ZWRfZm9ybV9pbnN0YW5jZVwiLCB7IGVycm9yOiBhIH0pLCBmYWxzZSkgOiAhciB8fCByLmZvcm1JZCAhPT0gdGhpcy5mb3JtSWQgPyAobmUoYSksIHYoXCJvdXRkYXRlZF9mb3JtX2luc3RhbmNlXCIsIHsgZXJyb3I6IGEgfSksIGZhbHNlKSA6IHRydWU7XG4gIH1cbn07XG5oZS5vanNGbG93cyA9IFIsIGhlLmFzc2lnbkFzU2luZ2xldG9uID0gKHQpID0+IHtcbiAgaWYgKGhlLmdldEluc3RhbmNlKCkpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiT3BlblBheSBpbnN0YW5jZSBhbHJlYWR5IGV4aXN0cy4gT25seSBvbmUgaW5zdGFuY2UgaXMgYWxsb3dlZC5cIik7XG4gIHdpbmRvdy5vanMgPSB0O1xufSwgaGUuZ2V0SW5zdGFuY2UgPSAoKSA9PiB3aW5kb3cub2pzID8/IG51bGwsIGhlLmJ1aWxkT2pzRmxvd0NvbnRleHQgPSAodCwgciwgbiwgYSkgPT4gKHtcbiAgY2hlY2tvdXRTZWN1cmVUb2tlbjogdC5jaGVja291dFNlY3VyZVRva2VuLFxuICBiYXNlVXJsOiBuZXcgVVJMKHQuYmFzZVVybCA/PyAkbikub3JpZ2luLFxuICBmb3JtRGl2OiBhLFxuICBlbGVtZW50c1Nlc3Npb25JZDogci5zZXNzaW9uSWQsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZHM6IHIuY2hlY2tvdXRQYXltZW50TWV0aG9kcyxcbiAgYW55Q2RlQ29ubmVjdGlvbjogbixcbiAgY3VzdG9tSW5pdFBhcmFtczogdC5jdXN0b21Jbml0UGFyYW1zID8/IHt9LFxuICBwcmV2ZW50TmF2aWdhdGlvbkR1cmluZ1N1Ym1pc3Npb246IHQucHJldmVudE5hdmlnYXRpb25EdXJpbmdTdWJtaXNzaW9uXG59KTtcbmxldCBybiA9IGhlO1xuXG5jb25zdCB1c2VSZWFjdGl2ZUZvcm1DYWxsYmFja3MgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgZm9ybUNhbGxiYWNrcyA9IEZvcm1DYWxsYmFja3MuZnJvbU9iamVjdCh7XG4gICAgb25Gb2N1czogcHJvcHMub25Gb2N1cyxcbiAgICBvbkJsdXI6IHByb3BzLm9uQmx1cixcbiAgICBvbkNoYW5nZTogcHJvcHMub25DaGFuZ2UsXG4gICAgb25Mb2FkOiBwcm9wcy5vbkxvYWQsXG4gICAgb25Mb2FkRXJyb3I6IHByb3BzLm9uTG9hZEVycm9yLFxuICAgIG9uVmFsaWRhdGlvbkVycm9yOiBwcm9wcy5vblZhbGlkYXRpb25FcnJvcixcbiAgICBvbkNoZWNrb3V0U3RhcnRlZDogcHJvcHMub25DaGVja291dFN0YXJ0ZWQsXG4gICAgb25DaGVja291dFN1Y2Nlc3M6IHByb3BzLm9uQ2hlY2tvdXRTdWNjZXNzLFxuICAgIG9uU2V0dXBQYXltZW50TWV0aG9kU3VjY2VzczogcHJvcHMub25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzLFxuICAgIG9uQ2hlY2tvdXRFcnJvcjogcHJvcHMub25DaGVja291dEVycm9yLFxuICAgIG9uUGF5bWVudFJlcXVlc3RMb2FkOiBwcm9wcy5vblBheW1lbnRSZXF1ZXN0TG9hZFxuICB9KTtcbiAgaWYgKHJuLmdldEluc3RhbmNlKCkpIHtcbiAgICBybi5nZXRJbnN0YW5jZSgpPy51cGRhdGVDYWxsYmFja3MoZm9ybUNhbGxiYWNrcy5nZXQpO1xuICB9XG4gIHJldHVybiBmb3JtQ2FsbGJhY2tzLmdldDtcbn07XG5cbmNvbnN0IEZPUk1fVEFSR0VUID0gXCJvcF9vanNfZm9ybVwiO1xuY29uc3QgRWxlbWVudHNGb3JtID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcEZvcm0sIHNldE9wRm9ybV0gPSB1c2VTdGF0ZSgpO1xuICBjb25zdCBbZWxlbWVudHNDb250ZXh0VmFsdWUsIHNldEVsZW1lbnRzQ29udGV4dFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbbG9hZGVkLCBzZXRMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbYXBwbGVQYXlSZXN1bHQsIHNldEFwcGxlUGF5UmVzdWx0XSA9IHVzZVN0YXRlKE1PQklMRV9XQUxMRVRfTE9BRElOR19TVEFURSk7XG4gIGNvbnN0IFtnb29nbGVQYXlSZXN1bHQsIHNldEdvb2dsZVBheVJlc3VsdF0gPSB1c2VTdGF0ZShNT0JJTEVfV0FMTEVUX0xPQURJTkdfU1RBVEUpO1xuICBjb25zdCBbc3RyaXBlTGlua0N0cmwsIHNldFN0cmlwZUxpbmtDdHJsXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBba2xhcm5hUmVzdWx0LCBzZXRLbGFybmFSZXN1bHRdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthZmZpcm1SZXN1bHQsIHNldEFmZmlybVJlc3VsdF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2FmdGVycGF5UmVzdWx0LCBzZXRBZnRlcnBheVJlc3VsdF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2xvb3BDb25maWcsIHNldExvb3BDb25maWddID0gdXNlU3RhdGUoTE9PUF9MT0FESU5HKTtcbiAgY29uc3QgW2FpcndhbGxleCwgc2V0QWlyd2FsbGV4XSA9IHVzZVN0YXRlKHtcbiAgICBnb29nbGVQYXk6IEFXWF9MT0FESU5HLFxuICAgIGFwcGxlUGF5OiBBV1hfTE9BRElOR1xuICB9KTtcbiAgY29uc3QgZm9ybUNhbGxiYWNrcyA9IHVzZVJlYWN0aXZlRm9ybUNhbGxiYWNrcyh7XG4gICAgLi4ucHJvcHMsXG4gICAgb25Mb2FkOiAodG90YWxBbW91bnRBdG9tcywgY3VycmVuY3kpID0+IHtcbiAgICAgIHNldExvYWRlZCh0cnVlKTtcbiAgICAgIHByb3BzLm9uTG9hZD8uKHRvdGFsQW1vdW50QXRvbXMsIGN1cnJlbmN5KTtcbiAgICAgIGlmIChvcEZvcm0pIHtcbiAgICAgICAgY29uc3QgYXBwbGVQYXlSZXN1bHQyID0gZ2V0QXBwbGVQYXlQcm9jZXNzb3JzKG9wRm9ybS5pbml0Rmxvd3MpO1xuICAgICAgICBzZXRBcHBsZVBheVJlc3VsdChhcHBsZVBheVJlc3VsdDIpO1xuICAgICAgICBjb25zdCBnb29nbGVQYXlSZXN1bHQyID0gZ2V0R29vZ2xlUGF5UHJvY2Vzc29ycyhvcEZvcm0uaW5pdEZsb3dzKTtcbiAgICAgICAgc2V0R29vZ2xlUGF5UmVzdWx0KGdvb2dsZVBheVJlc3VsdDIpO1xuICAgICAgICBjb25zdCBrbGFybmFSZXN1bHQyID0gZ2V0S2xhcm5hUHJvY2Vzc29ycyhvcEZvcm0uaW5pdEZsb3dzKTtcbiAgICAgICAgc2V0S2xhcm5hUmVzdWx0KGtsYXJuYVJlc3VsdDIpO1xuICAgICAgICBjb25zdCBhZmZpcm1SZXN1bHQyID0gZ2V0QWZmaXJtUHJvY2Vzc29ycyhvcEZvcm0uaW5pdEZsb3dzKTtcbiAgICAgICAgc2V0QWZmaXJtUmVzdWx0KGFmZmlybVJlc3VsdDIpO1xuICAgICAgICBjb25zdCBhZnRlcnBheVJlc3VsdDIgPSBnZXRBZnRlcnBheVByb2Nlc3NvcnMob3BGb3JtLmluaXRGbG93cyk7XG4gICAgICAgIHNldEFmdGVycGF5UmVzdWx0KGFmdGVycGF5UmVzdWx0Mik7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BGb3JtKSByZXR1cm47XG4gICAgY29uc3QgZm9ybSA9IHJuLmdldEluc3RhbmNlKCkgPz8gbmV3IHJuKHtcbiAgICAgIGNoZWNrb3V0U2VjdXJlVG9rZW46IHByb3BzLmNoZWNrb3V0U2VjdXJlVG9rZW4sXG4gICAgICBmb3JtVGFyZ2V0OiBgIyR7Rk9STV9UQVJHRVR9YCxcbiAgICAgIGJhc2VVcmw6IHByb3BzLmJhc2VVcmwsXG4gICAgICBjdXN0b21Jbml0UGFyYW1zOiBwcm9wcy5jdXN0b21Jbml0UGFyYW1zLFxuICAgICAgYWxsb3dUcmFjaW5nOiBwcm9wcy5hbGxvd1RyYWNpbmcgPz8gZmFsc2UsXG4gICAgICBwcmV2ZW50TmF2aWdhdGlvbkR1cmluZ1N1Ym1pc3Npb246IHByb3BzLnByZXZlbnROYXZpZ2F0aW9uRHVyaW5nU3VibWlzc2lvbixcbiAgICAgIC4uLmZvcm1DYWxsYmFja3NcbiAgICB9KTtcbiAgICBzZXRPcEZvcm0oZm9ybSk7XG4gICAgY29uc3QgdmFsdWUgPSBnZXRFbGVtZW50c0NvbnRleHRWYWx1ZShmb3JtKTtcbiAgICBzZXRFbGVtZW50c0NvbnRleHRWYWx1ZSh2YWx1ZSk7XG4gICAgZm9ybS5pbml0Rmxvd3Muc3RyaXBlTGluay5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZS5pc0F2YWlsYWJsZSkge1xuICAgICAgICBzZXRTdHJpcGVMaW5rQ3RybChyZXN1bHQubG9hZGVkVmFsdWUuY29udHJvbGxlcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZm9ybS5pbml0Rmxvd3MubG9vcC5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZS5pc0F2YWlsYWJsZSkge1xuICAgICAgICBzZXRMb29wQ29uZmlnKHtcbiAgICAgICAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIHdpZGdldDogcmVzdWx0LmxvYWRlZFZhbHVlLndpZGdldFByb3BzLFxuICAgICAgICAgIGNvbmZpZzogcmVzdWx0LmxvYWRlZFZhbHVlLmluaXRMb29wQ29ubmVjdFByb3BzXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmICFyZXN1bHQubG9hZGVkVmFsdWUuaXNBdmFpbGFibGUpIHtcbiAgICAgICAgc2V0TG9vcENvbmZpZyh7XG4gICAgICAgICAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgd2lkZ2V0OiBudWxsLFxuICAgICAgICAgIGNvbmZpZzogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmb3JtLmluaXRGbG93cy5haXJ3YWxsZXhHb29nbGVQYXkucHVibGlzaGVyLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcyAmJiByZXN1bHQubG9hZGVkVmFsdWUpIHtcbiAgICAgICAgc2V0QWlyd2FsbGV4KChwcmV2KSA9PiAoe1xuICAgICAgICAgIGFwcGxlUGF5OiBwcmV2LmFwcGxlUGF5LFxuICAgICAgICAgIGdvb2dsZVBheTogcmVzdWx0LmxvYWRlZFZhbHVlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmb3JtLmluaXRGbG93cy5haXJ3YWxsZXhBcHBsZVBheS5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZSkge1xuICAgICAgICBzZXRBaXJ3YWxsZXgoKHByZXYpID0+ICh7XG4gICAgICAgICAgZ29vZ2xlUGF5OiBwcmV2Lmdvb2dsZVBheSxcbiAgICAgICAgICBhcHBsZVBheTogcmVzdWx0LmxvYWRlZFZhbHVlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZm9ybS5kZXN0cm95KCk7XG4gICAgfTtcbiAgfSwgW10pO1xuICBpZiAoIW9wRm9ybSkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7fSk7XG4gIH1cbiAgY29uc3QgY2hpbGRyZW5Qcm9wcyA9IHtcbiAgICBzdWJtaXQ6IG9wRm9ybS5zdWJtaXRDYXJkLFxuICAgIHN1Ym1pdFdpdGg6IG9wRm9ybS5nZW5lcmFsU3VibWl0LFxuICAgIGFwcGxlUGF5OiBhcHBsZVBheVJlc3VsdCxcbiAgICBnb29nbGVQYXk6IGdvb2dsZVBheVJlc3VsdCxcbiAgICBsb2FkZWQsXG4gICAgLy8gRGlzYWJsZSBkeW5hbWljIHByZXZpZXdzIGZlYXR1cmUgZm9yIG5vd1xuICAgIHByZXZpZXc6IHtcbiAgICAgIGFtb3VudDogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBlcnJvcjogbnVsbFxuICAgIH0sXG4gICAgc3RyaXBlTGluazogc3RyaXBlTGlua0N0cmwsXG4gICAga2xhcm5hOiBrbGFybmFSZXN1bHQsXG4gICAgYWlyd2FsbGV4LFxuICAgIGxvb3A6IGxvb3BDb25maWcsXG4gICAgYWZmaXJtOiBhZmZpcm1SZXN1bHQsXG4gICAgYWZ0ZXJwYXk6IGFmdGVycGF5UmVzdWx0XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7IGNoaWxkcmVuOiBlbGVtZW50c0NvbnRleHRWYWx1ZSA/IC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudHNDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBlbGVtZW50c0NvbnRleHRWYWx1ZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBpZDogRk9STV9UQVJHRVQsIGNsYXNzTmFtZTogcHJvcHMuY2xhc3NOYW1lLCBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW4oY2hpbGRyZW5Qcm9wcykgfSkgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7fSkgfSk7XG59O1xuY29uc3QgZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUgPSAob3BGb3JtKSA9PiB7XG4gIHJldHVybiB7XG4gICAgZm9ybUlkOiBvcEZvcm0uZm9ybUlkLFxuICAgIGZvcm1IZWlnaHQ6IG9wRm9ybS5mb3JtUHJvcGVydGllcy5oZWlnaHQsXG4gICAgcmVmZXJyZXI6IG9wRm9ybS5yZWZlcnJlcixcbiAgICBjaGVja291dFNlY3VyZVRva2VuOiBvcEZvcm0uY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICByZWdpc3RlcklmcmFtZTogb3BGb3JtLnJlZ2lzdGVySWZyYW1lLFxuICAgIGJhc2VVcmw6IG9wRm9ybS5iYXNlVXJsXG4gIH07XG59O1xuXG5leHBvcnQgeyBDYXJkQ3ZjRWxlbWVudCBhcyBDLCBFcyBhcyBFLCBGcyBhcyBGLCBMbiBhcyBMLCBNcyBhcyBNLCBQZSBhcyBQLCBScyBhcyBSLCBTdWJtaXRNZXRob2RzIGFzIFMsIFRuIGFzIFQsIFVyIGFzIFUsIGF0IGFzIGEsIEZuIGFzIGIsIG90IGFzIGMsIGRyIGFzIGQsIENhcmRFbGVtZW50IGFzIGUsIGZzIGFzIGYsIENhcmRFeHBpcnlFbGVtZW50IGFzIGcsIENhcmROdW1iZXJFbGVtZW50IGFzIGgsIEVsZW1lbnRzRm9ybSBhcyBpLCBqZSBhcyBqLCBrdCBhcyBrLCBsciBhcyBsLCBGaWVsZE5hbWUgYXMgbSwgRW52aXJvbm1lbnQgYXMgbiwgb2UgYXMgbywgUGF5SW5GYWlsZWQgYXMgcCwgUGF5SW5TdGF0ZSBhcyBxLCB1c2VPcGVuUGF5RWxlbWVudHMgYXMgciwgdHIgYXMgdCwgdXIgYXMgdSwgdmFsaWRhdGVOb25DZGVGb3JtRmllbGRz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QU87QUFBQSxJQUNuQixVQUFVTTtBQUFBLElBQ1YsV0FBV0U7QUFBQSxJQUNYLFFBQUFKO0FBQUE7QUFBQSxJQUVBLFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLFdBQVc7QUFBQSxNQUNYLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxZQUFZTTtBQUFBLElBQ1osUUFBUUU7QUFBQSxJQUNSLFdBQUFRO0FBQUEsSUFDQSxNQUFNRjtBQUFBLElBQ04sUUFBUUo7QUFBQSxJQUNSLFVBQVVFO0FBQUEsRUFDWjtBQUNBLFNBQXVCLGdCQUFBN25CLEdBQUk0b0IsSUFBVSxFQUFFLFVBQVU3QixJQUF1QyxnQkFBQS9tQixHQUFJekIsR0FBZ0IsVUFBVSxFQUFFLE9BQU93b0IsR0FBc0IsVUFBMEIsZ0JBQUEvbUIsR0FBSSxPQUFPLEVBQUUsSUFBSTJtQixJQUFhLFdBQVcvbkIsRUFBTSxXQUFXLFVBQVVBLEVBQU0sU0FBU2lxQixFQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBb0IsZ0JBQUE3b0IsR0FBSTRvQixJQUFVLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDOVQsR0FDTUQsS0FBMEIsQ0FBQzlCLE9BQ3hCO0FBQUEsRUFDTCxRQUFRQSxFQUFPO0FBQUEsRUFDZixZQUFZQSxFQUFPLGVBQWU7QUFBQSxFQUNsQyxVQUFVQSxFQUFPO0FBQUEsRUFDakIscUJBQXFCQSxFQUFPO0FBQUEsRUFDNUIsZ0JBQWdCQSxFQUFPO0FBQUEsRUFDdkIsU0FBU0EsRUFBTztBQUNsQjsiLAogICJuYW1lcyI6IFsiY29ubmVjdFRvQ2hpbGQiLCAieiQxIiwgImNoYWxrIiwgInY0IiwgImpzeCIsICJGcmFnbWVudCIsICJjcmVhdGVDb250ZXh0IiwgInVzZUNvbnRleHQiLCAidXNlU3RhdGUiLCAidXNlUmVmIiwgInVzZU1lbW8iLCAidXNlRWZmZWN0IiwgImZpeFByb3RvIiwgInRhcmdldCIsICJwcm90b3R5cGUiLCAic2V0UHJvdG90eXBlT2YiLCAiZml4U3RhY2siLCAiZm4iLCAiY2FwdHVyZVN0YWNrVHJhY2UiLCAiX19leHRlbmRzJDEiLCAiX2V4dGVuZFN0YXRpY3MiLCAiZCIsICJiIiwgInAiLCAiX18iLCAiX3N1cGVyIiwgIkN1c3RvbUVycm9yIiwgIm1lc3NhZ2UiLCAib3B0aW9ucyIsICJfbmV3VGFyZ2V0IiwgIl90aGlzIiwgIlJlcXVpcmVkU3RyaW5nIiwgIk9wdGlvbmFsU3RyaW5nIiwgIm51bGxPclVuZGVmT3IkMSIsICJ6VHlwZSIsICJGaWVsZE5hbWUiLCAiRmllbGROYW1lMiIsICJGaWVsZE5hbWVFbnVtIiwgIlByaXZhdGVGaWVsZE5hbWUiLCAiUHJpdmF0ZUZpZWxkTmFtZTIiLCAiUHJpdmF0ZUZpZWxkTmFtZUVudW0iLCAiQWxsRmllbGROYW1lcyIsICJFbGVtZW50VHlwZUVudW0iLCAiRWxlbWVudFR5cGVFbnVtMiIsICJDaGVja291dFBheW1lbnRNZXRob2QkMSIsICJQYXltZW50TWV0aG9kTWluaW1hbCIsICJCYXNlRWxlbWVudHNTdHlsZSIsICJFdmVudFR5cGUiLCAiR2VuZXJpY0V2ZW50VHlwZSIsICJHZW5lcmljRXZlbnRQYXlsb2FkIiwgIklucHV0RXZlbnRUeXBlIiwgIklucHV0RXZlbnRQYXlsb2FkIiwgIkVycm9yRXZlbnRUeXBlIiwgIkVycm9yRXZlbnRQYXlsb2FkIiwgIlZhbGlkYXRpb25FcnJvckV2ZW50VHlwZSIsICJWYWxpZGF0aW9uRXJyb3JFdmVudFBheWxvYWQiLCAiTGF5b3V0RXZlbnRQYXlsb2FkIiwgIkxvYWRlZEV2ZW50UGF5bG9hZCIsICJQYXltZW50Rmxvd1N0YXJ0ZWRFdmVudFBheWxvYWQiLCAiU2V0dXBDaGVja291dFN1Y2Nlc3NFdmVudFBheWxvYWQiLCAiUmVxdWlyZWRGb3JtRmllbGRzIiwgIlBSRm9ybUZpZWxkcyIsICJTdWJtaXRFdmVudFR5cGUiLCAiU3VibWl0RXZlbnRQYXlsb2FkIiwgIlRva2VuaXplU3VjY2Vzc0V2ZW50UGF5bG9hZCIsICJDaGVja291dFN1Y2Nlc3NFdmVudFBheWxvYWQiLCAiRXZlbnRQYXlsb2FkIiwgIkNoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlIiwgIkZpZWxkVmFsaWRhdGlvbkVycm9yIiwgIlRva2VuaXplQ2FyZEVycm9yUmVzcG9uc2UiLCAiQVdYQmFuayIsICJDb21tb25OZXh0QWN0aW9uTWV0YWRhdGEiLCAiRUZURm9ybURhdGEiLCAiQkFDU0Zvcm1EYXRhIiwgIlNFUEFGb3JtRGF0YSIsICJBQ0hNaWNyb0RlcG9zaXRGb3JtRGF0YSIsICJFRlRNaWNyb0RlcG9zaXRGb3JtRGF0YSIsICJCQUNTTWljcm9EZXBvc2l0Rm9ybURhdGEiLCAiU0VQQU1pY3JvRGVwb3NpdEZvcm1EYXRhIiwgIm51bGxPclVuZGVmT3IiLCAiQ291cG9uTWluaW1hbCIsICJMaW5lSXRlbSIsICJCcmFuZFNldHRpbmdzIiwgIkJyYW5kIiwgIkNoZWNrb3V0UGF5bWVudE1ldGhvZCIsICJTdWJzY3JpcHRpb25JdGVtTWluaW1hbCIsICJTdWJzY3JpcHRpb25NaW5pbWFsIiwgIkludm9pY2VJdGVtRGlzY291bnRBbW91bnRzTWluaW1hbCIsICJJbnZvaWNlTGluZUl0ZW1NaW5pbWFsIiwgIkRpc2NvdW50TWluaW1hbCIsICJJbnZvaWNlTWluaW1hbCIsICJDcmVhdGVTdWJzY3JpcHRpb25SZXNwb25zZU1pbmltYWwiLCAiUHJldmlld0NoZWNrb3V0UmVzcG9uc2UiLCAiX1BheW1lbnRGb3JtUHJlZmlsbENvbW1vbiIsICJQYXltZW50Rm9ybVByZWZpbGwiLCAiQ29tcGxldGVkRm9ybVByZWZpbGwiLCAiRXhwaXJlZEZvcm1QcmVmaWxsIiwgIkNvbXBsZXRlQWRkcmVzcyIsICJQeWRhbnRpY1ZhbGlkYXRpb25FcnJvciQxIiwgIk5ld0N1c3RvbWVyRmllbGRzIiwgIlByaWNlUXR5IiwgIkNhcnRJbmZvIiwgIlByb2Nlc3NvclNwZWNpZmljTWV0YWRhdGEiLCAiUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IiLCAiWm9kRmllbGRFcnJvciIsICJtYWtlQ2FsbGJhY2tTYWZlIiwgImNhbGxiYWNrTmFtZSIsICJlcnJvckxvZ2dlciIsICJhcmdzIiwgImVycm9yIiwgImNyZWF0ZU9qc0Zsb3dMb2dnZXJzIiwgInByZWZpeCIsICJsb2ciLCAiZXJyIiwgImV4dGVuZFN0YXRpY3MiLCAiX19leHRlbmRzIiwgIl9fYXdhaXRlciIsICJ0aGlzQXJnIiwgIl9hcmd1bWVudHMiLCAiUCIsICJnZW5lcmF0b3IiLCAiYWRvcHQiLCAidmFsdWUiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAiZnVsZmlsbGVkIiwgInN0ZXAiLCAiZSIsICJyZWplY3RlZCIsICJyZXN1bHQiLCAiX19nZW5lcmF0b3IiLCAiYm9keSIsICJfIiwgInQiLCAiZiIsICJ5IiwgImciLCAidmVyYiIsICJuIiwgInYiLCAib3AiLCAiX192YWx1ZXMiLCAibyIsICJzIiwgIm0iLCAiaSIsICJfX3JlYWQiLCAiciIsICJhciIsICJfX3NwcmVhZEFycmF5IiwgInRvIiwgImZyb20iLCAicGFjayIsICJsIiwgIl9fYXdhaXQiLCAiX19hc3luY0dlbmVyYXRvciIsICJxIiwgImF3YWl0UmV0dXJuIiwgImEiLCAicmVzdW1lIiwgInNldHRsZSIsICJmdWxmaWxsIiwgIl9fYXN5bmNWYWx1ZXMiLCAiaXNGdW5jdGlvbiIsICJ2YWx1ZSIsICJjcmVhdGVFcnJvckNsYXNzIiwgImNyZWF0ZUltcGwiLCAiX3N1cGVyIiwgImluc3RhbmNlIiwgImN0b3JGdW5jIiwgIlVuc3Vic2NyaXB0aW9uRXJyb3IiLCAiZXJyb3JzIiwgImVyciIsICJpIiwgImFyclJlbW92ZSIsICJhcnIiLCAiaXRlbSIsICJpbmRleCIsICJTdWJzY3JpcHRpb24iLCAiaW5pdGlhbFRlYXJkb3duIiwgImVfMSIsICJfYSIsICJlXzIiLCAiX2IiLCAiX3BhcmVudGFnZSIsICJfcGFyZW50YWdlXzEiLCAiX192YWx1ZXMiLCAiX3BhcmVudGFnZV8xXzEiLCAicGFyZW50XzEiLCAiZV8xXzEiLCAiaW5pdGlhbEZpbmFsaXplciIsICJlIiwgIl9maW5hbGl6ZXJzIiwgIl9maW5hbGl6ZXJzXzEiLCAiX2ZpbmFsaXplcnNfMV8xIiwgImZpbmFsaXplciIsICJleGVjRmluYWxpemVyIiwgIl9fc3ByZWFkQXJyYXkiLCAiX19yZWFkIiwgImVfMl8xIiwgInRlYXJkb3duIiwgInBhcmVudCIsICJlbXB0eSIsICJFTVBUWV9TVUJTQ1JJUFRJT04iLCAiaXNTdWJzY3JpcHRpb24iLCAiY29uZmlnIiwgInRpbWVvdXRQcm92aWRlciIsICJoYW5kbGVyIiwgInRpbWVvdXQiLCAiYXJncyIsICJfaSIsICJoYW5kbGUiLCAicmVwb3J0VW5oYW5kbGVkRXJyb3IiLCAibm9vcCIsICJlcnJvckNvbnRleHQiLCAiY2IiLCAiU3Vic2NyaWJlciIsICJfX2V4dGVuZHMiLCAiZGVzdGluYXRpb24iLCAiX3RoaXMiLCAiRU1QVFlfT0JTRVJWRVIiLCAibmV4dCIsICJlcnJvciIsICJjb21wbGV0ZSIsICJTYWZlU3Vic2NyaWJlciIsICJDb25zdW1lck9ic2VydmVyIiwgInBhcnRpYWxPYnNlcnZlciIsICJoYW5kbGVVbmhhbmRsZWRFcnJvciIsICJvYnNlcnZlck9yTmV4dCIsICJkZWZhdWx0RXJyb3JIYW5kbGVyIiwgIm9ic2VydmFibGUiLCAiaWRlbnRpdHkiLCAieCIsICJwaXBlRnJvbUFycmF5IiwgImZucyIsICJpbnB1dCIsICJwcmV2IiwgImZuIiwgIk9ic2VydmFibGUiLCAic3Vic2NyaWJlIiwgIm9wZXJhdG9yIiwgInN1YnNjcmliZXIiLCAiaXNTdWJzY3JpYmVyIiwgInNvdXJjZSIsICJzaW5rIiwgInByb21pc2VDdG9yIiwgImdldFByb21pc2VDdG9yIiwgInJlc29sdmUiLCAicmVqZWN0IiwgIm9wZXJhdGlvbnMiLCAiaXNPYnNlcnZlciIsICJoYXNMaWZ0IiwgIm9wZXJhdGUiLCAiaW5pdCIsICJsaWZ0ZWRTb3VyY2UiLCAiY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyIiwgIm9uTmV4dCIsICJvbkNvbXBsZXRlIiwgIm9uRXJyb3IiLCAib25GaW5hbGl6ZSIsICJPcGVyYXRvclN1YnNjcmliZXIiLCAic2hvdWxkVW5zdWJzY3JpYmUiLCAiY2xvc2VkXzEiLCAiT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IiLCAiU3ViamVjdCIsICJzdWJqZWN0IiwgIkFub255bW91c1N1YmplY3QiLCAiX2MiLCAib2JzZXJ2ZXIiLCAib2JzZXJ2ZXJzIiwgImhhc0Vycm9yIiwgImlzU3RvcHBlZCIsICJ0aHJvd25FcnJvciIsICJkYXRlVGltZXN0YW1wUHJvdmlkZXIiLCAiQWN0aW9uIiwgInNjaGVkdWxlciIsICJ3b3JrIiwgInN0YXRlIiwgImRlbGF5IiwgImludGVydmFsUHJvdmlkZXIiLCAiQXN5bmNBY3Rpb24iLCAiaWQiLCAiX2lkIiwgIl9zY2hlZHVsZXIiLCAiX2RlbGF5IiwgImVycm9yZWQiLCAiZXJyb3JWYWx1ZSIsICJhY3Rpb25zIiwgIlNjaGVkdWxlciIsICJzY2hlZHVsZXJBY3Rpb25DdG9yIiwgIm5vdyIsICJBc3luY1NjaGVkdWxlciIsICJTY2hlZHVsZXJBY3Rpb24iLCAiYWN0aW9uIiwgImFzeW5jU2NoZWR1bGVyIiwgImlzQXJyYXlMaWtlIiwgImlzUHJvbWlzZSIsICJpc0ludGVyb3BPYnNlcnZhYmxlIiwgImlzQXN5bmNJdGVyYWJsZSIsICJvYmoiLCAiY3JlYXRlSW52YWxpZE9ic2VydmFibGVUeXBlRXJyb3IiLCAiZ2V0U3ltYm9sSXRlcmF0b3IiLCAiaXRlcmF0b3IiLCAiaXNJdGVyYWJsZSIsICJyZWFkYWJsZVN0cmVhbUxpa2VUb0FzeW5jR2VuZXJhdG9yIiwgInJlYWRhYmxlU3RyZWFtIiwgIl9fYXN5bmNHZW5lcmF0b3IiLCAicmVhZGVyIiwgImRvbmUiLCAiX19nZW5lcmF0b3IiLCAiX19hd2FpdCIsICJpc1JlYWRhYmxlU3RyZWFtTGlrZSIsICJpbm5lckZyb20iLCAiZnJvbUludGVyb3BPYnNlcnZhYmxlIiwgImZyb21BcnJheUxpa2UiLCAiZnJvbVByb21pc2UiLCAiZnJvbUFzeW5jSXRlcmFibGUiLCAiZnJvbUl0ZXJhYmxlIiwgImZyb21SZWFkYWJsZVN0cmVhbUxpa2UiLCAib2JzIiwgImFycmF5IiwgInByb21pc2UiLCAiaXRlcmFibGUiLCAiaXRlcmFibGVfMSIsICJpdGVyYWJsZV8xXzEiLCAiYXN5bmNJdGVyYWJsZSIsICJwcm9jZXNzIiwgImFzeW5jSXRlcmFibGVfMSIsICJhc3luY0l0ZXJhYmxlXzFfMSIsICJfX2F3YWl0ZXIiLCAiX19hc3luY1ZhbHVlcyIsICJleGVjdXRlU2NoZWR1bGUiLCAicGFyZW50U3Vic2NyaXB0aW9uIiwgInJlcGVhdCIsICJzY2hlZHVsZVN1YnNjcmlwdGlvbiIsICJ0aHJvd0Vycm9yIiwgImVycm9yT3JFcnJvckZhY3RvcnkiLCAiZXJyb3JGYWN0b3J5IiwgIkVtcHR5RXJyb3IiLCAibGFzdFZhbHVlRnJvbSIsICJfaGFzVmFsdWUiLCAiX3ZhbHVlIiwgImlzVmFsaWREYXRlIiwgIlRpbWVvdXRFcnJvciIsICJpbmZvIiwgInNjaGVkdWxlckFyZyIsICJmaXJzdCIsICJlYWNoIiwgIl93aXRoIiwgInRpbWVvdXRFcnJvckZhY3RvcnkiLCAiX2QiLCAibWV0YSIsICJvcmlnaW5hbFNvdXJjZVN1YnNjcmlwdGlvbiIsICJ0aW1lclN1YnNjcmlwdGlvbiIsICJsYXN0VmFsdWUiLCAic2VlbiIsICJzdGFydFRpbWVyIiwgIkxvYWRlZE9uY2VQdWJsaXNoZXIiLCAiZXJyTXNnIiwgInZhbHVlSWZOb3RMb2FkZWQiLCAic3Vic2NyaXB0aW9uIiwgInRpbWVvdXRDb25maWciLCAiYXNzZXJ0TmV2ZXIiLCAidGltZW91dFBhcmFtcyIsICJ6JDEiLCAiY29ubnRvQmFzZVVybHMiLCAiZ2V0Q29ubnRvVXJsIiwgImVudiIsICJnZXRXaW5kb3dTYWZlIiwgIm1ldHJpY3NQdWJsaXNoZXIiLCAiTUVUUklDU19RVUVVRV9LRVkiLCAiTUFYX1JFVFJZX0FUVEVNUFRTIiwgIkJBVENIX1NJWkUiLCAiQkFUQ0hfSU5URVJWQUxfTVMiLCAibG9nX18kMSIsICJjcmVhdGVPanNGbG93TG9nZ2VycyIsICJNZXRyaWNzUXVldWUiLCAiZXZlbnROYW1lIiwgInByb3BlcnRpZXMiLCAiY29udGV4dFByb3BlcnRpZXMiLCAiZXZlbnQiLCAidjQiLCAic3RvcmVkUXVldWUiLCAic2FmZVdpbmRvdyIsICJjb250ZXh0IiwgImJhdGNoIiwgImJhdGNoUGF5bG9hZCIsICJjb25udG9VcmwiLCAibWV0cmljc1JvdXRlciIsICJldmVudHNUb0tlZXAiLCAiZXh0cmFjdElzc3Vlc1BlckZpZWxkIiwgImlzc3Vlc1BlckZpZWxkIiwgImtleSIsICJmaWVsZE5hbWUiLCAiRmllbGROYW1lRW51bSIsICJsb2dfXyIsICJlcnJfXyQxIiwgImNyZWF0ZUR5bmFtaWNWYWxpZGF0aW9uU2NoZW1hIiwgInJlcXVpcmVfemlwX2NvZGUiLCAicmVxdWlyZV9mdWxsX2JpbGxpbmdfYWRkcmVzcyIsICJyZXF1aXJlX2Z1bGxfc2hpcHBpbmdfYWRkcmVzcyIsICJwYXltZW50X21ldGhvZCIsICJpc0J1c2luZXNzUHVyY2hhc2UiLCAibm9uQ2RlRm9ybUlucHV0cyIsICJjb25kaXRpb25hbEZpZWxkcyIsICJGaWVsZE5hbWUiLCAiUmVxdWlyZWRTdHJpbmciLCAiUmVxdWlyZWRGb3JtRmllbGRzIiwgInZhbGlkYXRlTm9uQ2RlRm9ybUZpZWxkcyIsICJvblZhbGlkYXRpb25FcnJvciIsICJkZWZhdWx0RmllbGRWYWx1ZXMiLCAia2V5cyIsICJyZXN1bHQiLCAiZm9ybWF0dGVkIiwgImlzc3VlcyIsICJpc3N1ZUtleXMiLCAiUGF5bWVudFByb2Nlc3NvciIsICJBV1hfTE9BRElORyIsICJBZHllbkVudmlyb25tZW50IiwgIm51bGxPclVuZGVmT3IkMSIsICJFbnZpcm9ubWVudCIsICJFbnZpcm9ubWVudDIiLCAiUGF5SW5GYWlsZWQiLCAiUGF5SW5GYWlsZWQyIiwgIlBheUluU3RhdGUiLCAiUGF5SW5TdGF0ZTIiLCAiTE9PUF9MT0FESU5HIiwgImVycl9fIiwgIk9wdGlvbmFsRm4iLCAiWm9kRm9ybUNhbGxiYWNrcyIsICJfRm9ybUNhbGxiYWNrcyIsICJyYXdDYWxsYmFja3MiLCAicmF3Q2FsbGJhY2siLCAic2FmZUNhbGxiYWNrIiwgIm1ha2VDYWxsYmFja1NhZmUiLCAiRm9ybUNhbGxiYWNrcyIsICJTdWJtaXRNZXRob2RzIiwgIlN1Ym1pdE1ldGhvZHMyIiwgIk1PQklMRV9XQUxMRVRfTE9BRElOR19TVEFURSIsICJnZXRBcHBsZVBheVByb2Nlc3NvcnMiLCAiaW5pdEZsb3dzIiwgImFwcGxlUGF5SW5pdEZsb3dzIiwgImFwcGxlUGF5SW5pdFJlc3VsdHMiLCAiZmxvdyIsICJmbG93VmFsdWUiLCAic3RyaXBlUFJGbG93UmVzdWx0IiwgImN1c3RvbVBhcmFtcyIsICJzdGFydEFwcGxlUGF5RmxvdyIsICJnZXRHb29nbGVQYXlQcm9jZXNzb3JzIiwgImdvb2dsZVBheUluaXRGbG93cyIsICJnb29nbGVQYXlJbml0UmVzdWx0cyIsICJzdGFydEdvb2dsZVBheUZsb3ciLCAiaW5pdFJlc3VsdHMiLCAiYXZhaWxhYmxlRmxvdyIsICJnZXRLbGFybmFQcm9jZXNzb3JzIiwgImtsYXJuYUluaXRSZXN1bHRzIiwgImFpcndhbGxleEtsYXJuYUZsb3dSZXN1bHQiLCAic3RyaXBlS2xhcm5hRmxvd1Jlc3VsdCIsICJzdGFydEtsYXJuYUZsb3ciLCAiZ2V0QWZmaXJtUHJvY2Vzc29ycyIsICJhZmZpcm1Jbml0UmVzdWx0cyIsICJzdHJpcGVBZmZpcm1GbG93UmVzdWx0IiwgInN0YXJ0QWZmaXJtRmxvdyIsICJnZXRBZnRlcnBheVByb2Nlc3NvcnMiLCAiYWZ0ZXJwYXlJbml0UmVzdWx0cyIsICJzdHJpcGVBZnRlcnBheUZsb3dSZXN1bHQiLCAic3RhcnRBZnRlcnBheUZsb3ciLCAiY29udmVydFN0eWxlc1RvUXVlcnlTdHJpbmciLCAic3R5bGVzIiwgIkVsZW1lbnRzQ29udGV4dCIsICJjcmVhdGVDb250ZXh0IiwgInVzZU9wZW5QYXlFbGVtZW50cyIsICJ1c2VDb250ZXh0IiwgIkVsZW1lbnRGcmFtZSIsICJwcm9wcyIsICJlbGVtZW50VHlwZSIsICJmb3JtSWQiLCAicmVmZXJyZXIiLCAiZm9ybUhlaWdodCIsICJjaGVja291dFNlY3VyZVRva2VuIiwgInJlZ2lzdGVySWZyYW1lIiwgImJhc2VVcmwiLCAic3ViUGF0aCIsICJoYXNMb2FkZWQiLCAic2V0SGFzTG9hZGVkIiwgInVzZVN0YXRlIiwgImlmcmFtZVJlZiIsICJ1c2VSZWYiLCAiZWxlbWVudFN0eWxlIiwgInVzZU1lbW8iLCAiZnJhbWVTdHlsZSIsICJxdWVyeVN0cmluZyIsICJwYXJhbXMiLCAidXNlRWZmZWN0IiwgImpzeCIsICJ1cmwiLCAiQ2FyZEVsZW1lbnQiLCAiRWxlbWVudFR5cGVFbnVtIiwgIkNhcmRDdmNFbGVtZW50IiwgIkNhcmRFeHBpcnlFbGVtZW50IiwgIkNhcmROdW1iZXJFbGVtZW50IiwgIkZvIiwgIlRvIiwgIk5vIiwgInIiLCAibiIsICJhIiwgInMiLCAiTG8iLCAiVCIsICJEIiwgInAiLCAib24iLCAiYW4iLCAic24iLCAiY24iLCAiZ2UiLCAiTW8iLCAiRnQiLCAieG8iLCAiVHQiLCAicGUiLCAiRG8iLCAiVW8iLCAiT28iLCAiam8iLCAiJG8iLCAiR28iLCAicW8iLCAiVm8iLCAiem8iLCAiQm8iLCAiSG8iLCAiS28iLCAiVWUiLCAiWW8iLCAiV28iLCAiSm8iLCAiWm8iLCAiUW8iLCAiWG8iLCAiZWEiLCAidHQiLCAidGEiLCAicmEiLCAibmEiLCAiRiIsICJsbiIsICJvYSIsICJhYSIsICJ1biIsICJpYSIsICJzYSIsICJjYSIsICJsYSIsICJ1YSIsICJkYSIsICJwYSIsICJtYSIsICJmYSIsICJFIiwgInlhIiwgImRuIiwgInBuIiwgImhhIiwgImdhIiwgInFlIiwgIndhIiwgInZhIiwgIm1uIiwgImJhIiwgIlBhIiwgIkVhIiwgIkFyIiwgIlNyIiwgIl9uIiwgIkNhIiwgIkFhIiwgIlB0IiwgInluIiwgIlNhIiwgImthIiwgIklhIiwgImhuIiwgIlJhIiwgImduIiwgIkZhIiwgIlRhIiwgIk5hIiwgIkxhIiwgIk1hIiwgInhhIiwgIkRhIiwgIlVhIiwgIk9hIiwgImphIiwgIlp0IiwgIiRhIiwgIkdhIiwgInFhIiwgImFlIiwgIlZhIiwgInphIiwgInduIiwgIkJhIiwgIkhhIiwgIlYiLCAidiIsICJIaSIsICJqbiIsICJjZSIsICJrIiwgImNoYWxrIiwgIlF0IiwgIkVlIiwgIkthIiwgImwiLCAibSIsICJjIiwgInZuIiwgIk9lIiwgIkV0IiwgIkN0IiwgIk1lIiwgIllhIiwgInkiLCAiXyIsICJnIiwgImgiLCAiZiIsICJXYSIsICJZIiwgIk50IiwgInp0IiwgIkF0IiwgInN0IiwgImtyIiwgImJuIiwgIlBuIiwgIkphIiwgIlphIiwgIkVuIiwgIklyIiwgImd0IiwgImlyIiwgImVpIiwgIlh0IiwgIlFhIiwgInB0IiwgIlhhIiwgInNyIiwgInRpIiwgInJpIiwgIndlIiwgIm9pIiwgIlJyIiwgIm5pIiwgImFpIiwgImlpIiwgInNpIiwgImNpIiwgImxpIiwgIkNuIiwgIkZyIiwgInVpIiwgImRpIiwgIlRyIiwgInBpIiwgIk5yIiwgIm1pIiwgImZpIiwgInlpIiwgImhpIiwgImdpIiwgIndpIiwgInZpIiwgImJpIiwgIlBpIiwgIkVpIiwgIkNpIiwgIkFpIiwgIlNpIiwgImtpIiwgIklpIiwgIkFuIiwgIlJpIiwgIkZpIiwgIlRpIiwgIk5pIiwgIkxpIiwgIk1pIiwgInhpIiwgIkRpIiwgIlVpIiwgIk9pIiwgImppIiwgImIiLCAiUyIsICJYZSIsICJjdCIsICJMciIsICIkaSIsICJHaSIsICJCdCIsICJTbiIsICJMdCIsICJCIiwgImVyIiwgIk1yIiwgInFpIiwgIlZpIiwgInppIiwgIm10IiwgIkJpIiwgImNyIiwgImtuIiwgIkluIiwgIlN0IiwgIktpIiwgIlJuIiwgIllpIiwgIldpIiwgIkppIiwgIlppIiwgIlFpIiwgIk10IiwgInhyIiwgIkR0IiwgInh0IiwgIlhpIiwgImVzIiwgInRzIiwgInJzIiwgIm5zIiwgIlJlIiwgIkRyIiwgIm9zIiwgInUiLCAiZCIsICJhcyIsICJpcyIsICJydCIsICJudCIsICJsciIsICJvdCIsICJ1ciIsICJzcyIsICJjcyIsICJscyIsICJIZSIsICJvZSIsICJ1cyIsICJkcyIsICJwcyIsICJtcyIsICJrdCIsICJmcyIsICJfcyIsICJ5cyIsICJocyIsICJncyIsICJ3cyIsICJ2cyIsICJicyIsICJIdCIsICJQcyIsICJkciIsICJ0ciIsICJGbiIsICJUbiIsICJFcyIsICJldCIsICJwciIsICJtciIsICJDcyIsICJmciIsICJBcyIsICJTcyIsICJObiIsICJrcyIsICJJcyIsICJScyIsICJGcyIsICJMbiIsICJUcyIsICJLdCIsICJNbiIsICJOcyIsICJMcyIsICJNcyIsICJ4cyIsICJEcyIsICJVciIsICJhdCIsICJQZSIsICJ4ZSIsICJZdCIsICJVcyIsICJqZSIsICJPcyIsICJmdCIsICJ4biIsICJKIiwgIiRzIiwgImpzIiwgIkdzIiwgIk4iLCAiWiIsICJEbiIsICJxcyIsICJWcyIsICJ6cyIsICJCcyIsICJRIiwgIlVuIiwgIk9yIiwgIkhzIiwgIl9yIiwgIk9uIiwgIktzIiwgImNvbm5lY3RUb0NoaWxkIiwgIlV0IiwgIllzIiwgIldzIiwgIkpzIiwgIiRuIiwgIkduIiwgIkl0IiwgIlpzIiwgInFuIiwgImpyIiwgIkZlIiwgIldlIiwgIlFzIiwgIlhzIiwgImVjIiwgIm5jIiwgInRjIiwgInJjIiwgIm9jIiwgIlZuIiwgInpuIiwgImFjIiwgImljIiwgImoiLCAic2MiLCAiQm4iLCAiQ2UiLCAiT3QiLCAianQiLCAiY2MiLCAibGMiLCAiJHQiLCAiSG4iLCAiR3QiLCAieXIiLCAiS24iLCAibGUiLCAiWW4iLCAidWMiLCAiV24iLCAiaWUiLCAidCIsICJkYyIsICJwYyIsICJtYyIsICJmYyIsICJ5YyIsICJHIiwgIkpuIiwgIlpuIiwgImx0IiwgIk8iLCAicSIsICJyZSIsICJVIiwgIlFuIiwgIlZlIiwgImhyIiwgIld0IiwgImdyIiwgInplIiwgIkJlIiwgIndyIiwgInZlIiwgImhjIiwgImdjIiwgIktlIiwgIndjIiwgInZjIiwgInciLCAiYmUiLCAiYmMiLCAiUGMiLCAiRWMiLCAidnIiLCAiQ2MiLCAiQWMiLCAiWG4iLCAiU2MiLCAiZW8iLCAidG8iLCAicm8iLCAiYnIiLCAiUHIiLCAia2MiLCAicXQiLCAiRXIiLCAiSWMiLCAiUmMiLCAiJGUiLCAiaXQiLCAiRmMiLCAibm8iLCAiVGMiLCAiTmMiLCAiJHIiLCAiTGMiLCAiTWMiLCAieGMiLCAib28iLCAiYW8iLCAiaW8iLCAic28iLCAiRGMiLCAiVWMiLCAiT2MiLCAiUm8iLCAiSmUiLCAiY28iLCAiamMiLCAiJGMiLCAiZGUiLCAiTmUiLCAiR2MiLCAicWMiLCAiTCIsICJBIiwgIiQiLCAiWWUiLCAiVmMiLCAiemMiLCAid3QiLCAiQmMiLCAiSGMiLCAiS2MiLCAiWmUiLCAibG8iLCAiWWMiLCAiV2MiLCAic2UiLCAiTGUiLCAiSmMiLCAiWmMiLCAiQyIsICJfdCIsICJRYyIsICJ1byIsICJYYyIsICJlbCIsICJwbyIsICJtbyIsICJ0bCIsICJybCIsICJ2dCIsICJmbyIsICJubCIsICJvbCIsICJJZSIsICJRZSIsICJhbCIsICJpbCIsICJ5dCIsICJzbCIsICJjbCIsICJsbCIsICJ1bCIsICJEZSIsICJfbyIsICJ5byIsICJkbCIsICJwbCIsICJtbCIsICJmbCIsICJobyIsICJfbCIsICJnbyIsICJ5bCIsICJobCIsICJ3byIsICJyciIsICJnbCIsICJ3bCIsICJHciIsICJ2bCIsICJ2byIsICJibCIsICJQbCIsICJUZSIsICJSdCIsICJFbCIsICJibyIsICJDbCIsICJrbCIsICJBbCIsICJTbCIsICJFbyIsICJQbyIsICJNIiwgInFyIiwgIklsIiwgIlJsIiwgIkZsIiwgIlRsIiwgImVlIiwgIk5sIiwgIkxsIiwgIk1sIiwgIlNlIiwgInhsIiwgIkNvIiwgIkRsIiwgIlVsIiwgIm1lIiwgIlZyIiwgIkFvIiwgIk9sIiwgImpsIiwgIlciLCAiYnQiLCAiU28iLCAiJGwiLCAiR2wiLCAicWwiLCAiSCIsICJuciIsICJrbyIsICJWbCIsICJ6bCIsICJCbCIsICJLIiwgIm9yIiwgIklvIiwgIkhsIiwgIktsIiwgIllsIiwgImh0IiwgInoiLCAienIiLCAiV2wiLCAiSmwiLCAiWmwiLCAidXQiLCAiZXUiLCAiUWwiLCAiWGwiLCAidGUiLCAidHUiLCAicnUiLCAibnUiLCAiX2UiLCAib3UiLCAiQnIiLCAiYXUiLCAiaXUiLCAic3UiLCAiY3UiLCAiWCIsICJsdSIsICJ1dSIsICJkdSIsICJ1ZSIsICJIciIsICJ5ZSIsICJhciIsICJwdSIsICJtdSIsICJmdSIsICJJIiwgImtlIiwgIktyIiwgIl91IiwgIllyIiwgInl1IiwgIldyIiwgImh1IiwgIkpyIiwgImd1IiwgIlpyIiwgInd1IiwgInZ1IiwgIkp0IiwgImJ1IiwgIlB1IiwgIkV1IiwgIlFyIiwgIlZ0IiwgIkN1IiwgIkFlIiwgIkF1IiwgIlhyIiwgIlN1IiwgImt1IiwgIkl1IiwgImVuIiwgInRuIiwgImZlIiwgIm5lIiwgImhlIiwgIkNyIiwgInJuIiwgInVzZVJlYWN0aXZlRm9ybUNhbGxiYWNrcyIsICJmb3JtQ2FsbGJhY2tzIiwgIkZPUk1fVEFSR0VUIiwgIkVsZW1lbnRzRm9ybSIsICJvcEZvcm0iLCAic2V0T3BGb3JtIiwgImVsZW1lbnRzQ29udGV4dFZhbHVlIiwgInNldEVsZW1lbnRzQ29udGV4dFZhbHVlIiwgImxvYWRlZCIsICJzZXRMb2FkZWQiLCAiYXBwbGVQYXlSZXN1bHQiLCAic2V0QXBwbGVQYXlSZXN1bHQiLCAiZ29vZ2xlUGF5UmVzdWx0IiwgInNldEdvb2dsZVBheVJlc3VsdCIsICJzdHJpcGVMaW5rQ3RybCIsICJzZXRTdHJpcGVMaW5rQ3RybCIsICJrbGFybmFSZXN1bHQiLCAic2V0S2xhcm5hUmVzdWx0IiwgImFmZmlybVJlc3VsdCIsICJzZXRBZmZpcm1SZXN1bHQiLCAiYWZ0ZXJwYXlSZXN1bHQiLCAic2V0QWZ0ZXJwYXlSZXN1bHQiLCAibG9vcENvbmZpZyIsICJzZXRMb29wQ29uZmlnIiwgImFpcndhbGxleCIsICJzZXRBaXJ3YWxsZXgiLCAidG90YWxBbW91bnRBdG9tcyIsICJjdXJyZW5jeSIsICJhcHBsZVBheVJlc3VsdDIiLCAiZ29vZ2xlUGF5UmVzdWx0MiIsICJrbGFybmFSZXN1bHQyIiwgImFmZmlybVJlc3VsdDIiLCAiYWZ0ZXJwYXlSZXN1bHQyIiwgImZvcm0iLCAiZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUiLCAiRnJhZ21lbnQiLCAiY2hpbGRyZW5Qcm9wcyJdCn0K
|
|
10131
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDA3fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNvbm5lY3RUb0NoaWxkIH0gZnJvbSAncGVucGFsJztcbmltcG9ydCB7IHogYXMgeiQxIH0gZnJvbSAnem9kJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsganN4LCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0L2pzeC1ydW50aW1lJztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZVN0YXRlLCB1c2VSZWYsIHVzZU1lbW8sIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuZnVuY3Rpb24gZml4UHJvdG8odGFyZ2V0LCBwcm90b3R5cGUpIHtcbiAgdmFyIHNldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mO1xuICBzZXRQcm90b3R5cGVPZiA/IHNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG90eXBlKSA6IHRhcmdldC5fX3Byb3RvX18gPSBwcm90b3R5cGU7XG59XG5mdW5jdGlvbiBmaXhTdGFjayh0YXJnZXQsIGZuKSB7XG4gIGlmIChmbiA9PT0gdm9pZCAwKSB7XG4gICAgZm4gPSB0YXJnZXQuY29uc3RydWN0b3I7XG4gIH1cblxuICB2YXIgY2FwdHVyZVN0YWNrVHJhY2UgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcbiAgY2FwdHVyZVN0YWNrVHJhY2UgJiYgY2FwdHVyZVN0YWNrVHJhY2UodGFyZ2V0LCBmbik7XG59XG5cbnZhciBfX2V4dGVuZHMkMSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9leHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gZXh0ZW5kU3RhdGljcyhkLCBiKSB7XG4gICAgX2V4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgZC5fX3Byb3RvX18gPSBiO1xuICAgIH0gfHwgZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgIGZvciAodmFyIHAgaW4gYikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcblxuICAgIF9leHRlbmRTdGF0aWNzKGQsIGIpO1xuXG4gICAgZnVuY3Rpb24gX18oKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcbiAgICB9XG5cbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG4gIH07XG59KCk7XG5cbihmdW5jdGlvbiAoX3N1cGVyKSB7XG4gIF9fZXh0ZW5kcyQxKEN1c3RvbUVycm9yLCBfc3VwZXIpO1xuXG4gIGZ1bmN0aW9uIEN1c3RvbUVycm9yKG1lc3NhZ2UsIG9wdGlvbnMpIHtcbiAgICB2YXIgX25ld1RhcmdldCA9IHRoaXMuY29uc3RydWN0b3I7XG5cbiAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBtZXNzYWdlLCBvcHRpb25zKSB8fCB0aGlzO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF90aGlzLCAnbmFtZScsIHtcbiAgICAgIHZhbHVlOiBfbmV3VGFyZ2V0Lm5hbWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGZpeFByb3RvKF90aGlzLCBfbmV3VGFyZ2V0LnByb3RvdHlwZSk7XG4gICAgZml4U3RhY2soX3RoaXMpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHJldHVybiBDdXN0b21FcnJvcjtcbn0pKEVycm9yKTtcblxuY29uc3QgUmVxdWlyZWRTdHJpbmcgPSB6JDEuc3RyaW5nKCkudHJpbSgpLm1pbigxLCB7IG1lc3NhZ2U6IGBQbGVhc2UgZmlsbCBpbiB0aGlzIGZpZWxkYCB9KTtcbmNvbnN0IE9wdGlvbmFsU3RyaW5nID0geiQxLnN0cmluZygpLnRyaW0oKS5vcHRpb25hbCgpO1xuY29uc3QgbnVsbE9yVW5kZWZPciQxID0gKHpUeXBlKSA9PiB6JDEubnVsbGFibGUoelR5cGUub3B0aW9uYWwoKSk7XG52YXIgRmllbGROYW1lID0gLyogQF9fUFVSRV9fICovICgoRmllbGROYW1lMikgPT4ge1xuICBGaWVsZE5hbWUyW1wiRklSU1RfTkFNRVwiXSA9IFwiZmlyc3ROYW1lXCI7XG4gIEZpZWxkTmFtZTJbXCJMQVNUX05BTUVcIl0gPSBcImxhc3ROYW1lXCI7XG4gIEZpZWxkTmFtZTJbXCJQSE9ORVwiXSA9IFwicGhvbmVcIjtcbiAgRmllbGROYW1lMltcIkVNQUlMXCJdID0gXCJlbWFpbFwiO1xuICBGaWVsZE5hbWUyW1wiTElORTFcIl0gPSBcImxpbmUxXCI7XG4gIEZpZWxkTmFtZTJbXCJMSU5FMlwiXSA9IFwibGluZTJcIjtcbiAgRmllbGROYW1lMltcIkxJTkUzXCJdID0gXCJsaW5lM1wiO1xuICBGaWVsZE5hbWUyW1wiQ0lUWVwiXSA9IFwiY2l0eVwiO1xuICBGaWVsZE5hbWUyW1wiU1RBVEVcIl0gPSBcInN0YXRlXCI7XG4gIEZpZWxkTmFtZTJbXCJDT1VOVFJZXCJdID0gXCJjb3VudHJ5XCI7XG4gIEZpZWxkTmFtZTJbXCJaSVBfQ09ERVwiXSA9IFwiemlwQ29kZVwiO1xuICBGaWVsZE5hbWUyW1wiU0hJUFBJTkdfTElORTFcIl0gPSBcInNoaXBwaW5nQWRkcmVzc0xpbmUxXCI7XG4gIEZpZWxkTmFtZTJbXCJTSElQUElOR19MSU5FMlwiXSA9IFwic2hpcHBpbmdBZGRyZXNzTGluZTJcIjtcbiAgRmllbGROYW1lMltcIlNISVBQSU5HX0xJTkUzXCJdID0gXCJzaGlwcGluZ0FkZHJlc3NMaW5lM1wiO1xuICBGaWVsZE5hbWUyW1wiU0hJUFBJTkdfQ0lUWVwiXSA9IFwic2hpcHBpbmdBZGRyZXNzQ2l0eVwiO1xuICBGaWVsZE5hbWUyW1wiU0hJUFBJTkdfU1RBVEVcIl0gPSBcInNoaXBwaW5nQWRkcmVzc1N0YXRlXCI7XG4gIEZpZWxkTmFtZTJbXCJTSElQUElOR19DT1VOVFJZXCJdID0gXCJzaGlwcGluZ0FkZHJlc3NDb3VudHJ5XCI7XG4gIEZpZWxkTmFtZTJbXCJTSElQUElOR19aSVBfQ09ERVwiXSA9IFwic2hpcHBpbmdBZGRyZXNzWmlwQ29kZVwiO1xuICBGaWVsZE5hbWUyW1wiSVNfU0hJUFBJTkdfU0FNRV9BU19CSUxMSU5HXCJdID0gXCJpc1NoaXBwaW5nU2FtZUFzQmlsbGluZ1wiO1xuICBGaWVsZE5hbWUyW1wiUFJPTU9USU9OX0NPREVcIl0gPSBcInByb21vdGlvbkNvZGVcIjtcbiAgRmllbGROYW1lMltcIklTX0JVU0lORVNTX1BVUkNIQVNFXCJdID0gXCJpc0J1c2luZXNzUHVyY2hhc2VcIjtcbiAgRmllbGROYW1lMltcIkJVU0lORVNTX05BTUVcIl0gPSBcImJ1c2luZXNzTmFtZVwiO1xuICBGaWVsZE5hbWUyW1wiVEFYX0lEXCJdID0gXCJ0YXhJZFwiO1xuICBGaWVsZE5hbWUyW1wiVEFYX0lEX1RZUEVcIl0gPSBcInRheElkVHlwZVwiO1xuICByZXR1cm4gRmllbGROYW1lMjtcbn0pKEZpZWxkTmFtZSB8fCB7fSk7XG5jb25zdCBGaWVsZE5hbWVFbnVtID0geiQxLm5hdGl2ZUVudW0oRmllbGROYW1lKTtcbnZhciBQcml2YXRlRmllbGROYW1lID0gLyogQF9fUFVSRV9fICovICgoUHJpdmF0ZUZpZWxkTmFtZTIpID0+IHtcbiAgUHJpdmF0ZUZpZWxkTmFtZTJbXCJDQVJEX05VTUJFUlwiXSA9IFwiY2FyZE51bWJlclwiO1xuICBQcml2YXRlRmllbGROYW1lMltcIkNBUkRfRVhQSVJZXCJdID0gXCJjYXJkRXhwaXJ5XCI7XG4gIFByaXZhdGVGaWVsZE5hbWUyW1wiQ0FSRF9DVkNcIl0gPSBcImNhcmRDdmNcIjtcbiAgcmV0dXJuIFByaXZhdGVGaWVsZE5hbWUyO1xufSkoUHJpdmF0ZUZpZWxkTmFtZSB8fCB7fSk7XG5jb25zdCBQcml2YXRlRmllbGROYW1lRW51bSA9IHokMS5uYXRpdmVFbnVtKFByaXZhdGVGaWVsZE5hbWUpO1xuY29uc3QgQWxsRmllbGROYW1lcyA9IHokMS51bmlvbihbRmllbGROYW1lRW51bSwgUHJpdmF0ZUZpZWxkTmFtZUVudW1dKTtcbnZhciBFbGVtZW50VHlwZUVudW0gPSAvKiBAX19QVVJFX18gKi8gKChFbGVtZW50VHlwZUVudW0yKSA9PiB7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEXCJdID0gXCJjYXJkXCI7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDQVJEX05VTUJFUlwiXSA9IFwiY2FyZC1udW1iZXJcIjtcbiAgRWxlbWVudFR5cGVFbnVtMltcIkNBUkRfRVhQSVJZXCJdID0gXCJjYXJkLWV4cGlyeVwiO1xuICBFbGVtZW50VHlwZUVudW0yW1wiQ0FSRF9DVkNcIl0gPSBcImNhcmQtY3ZjXCI7XG4gIEVsZW1lbnRUeXBlRW51bTJbXCJDREVfQlJJREdFXCJdID0gXCJjZGUtYnJpZGdlXCI7XG4gIHJldHVybiBFbGVtZW50VHlwZUVudW0yO1xufSkoRWxlbWVudFR5cGVFbnVtIHx8IHt9KTtcbnokMS5lbnVtKFtcImNhcmRcIiwgXCJjYXJkLW51bWJlclwiLCBcImNhcmQtZXhwaXJ5XCIsIFwiY2FyZC1jdmNcIiwgXCJjZGUtYnJpZGdlXCJdKTtcbmNvbnN0IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIHByb2Nlc3Nvcl9uYW1lOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgbWV0YWRhdGE6IG51bGxPclVuZGVmT3IkMSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgUGF5bWVudE1ldGhvZE1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBCYXNlRWxlbWVudHNTdHlsZSA9IHokMS5vYmplY3Qoe1xuICBiYWNrZ3JvdW5kQ29sb3I6IE9wdGlvbmFsU3RyaW5nLFxuICBjb2xvcjogT3B0aW9uYWxTdHJpbmcsXG4gIGZvbnRGYW1pbHk6IE9wdGlvbmFsU3RyaW5nLFxuICBmb250U2l6ZTogT3B0aW9uYWxTdHJpbmcsXG4gIGZvbnRXZWlnaHQ6IE9wdGlvbmFsU3RyaW5nLFxuICBtYXJnaW46IE9wdGlvbmFsU3RyaW5nLFxuICBwYWRkaW5nOiBPcHRpb25hbFN0cmluZyxcbiAgbGV0dGVyU3BhY2luZzogT3B0aW9uYWxTdHJpbmcsXG4gIGxpbmVIZWlnaHQ6IE9wdGlvbmFsU3RyaW5nLFxuICBoaWRlSWNvbjogT3B0aW9uYWxTdHJpbmcsXG4gIHBsYWNlaG9sZGVyU3R5bGU6IHokMS5vYmplY3Qoe1xuICAgIGNvbG9yOiBPcHRpb25hbFN0cmluZyxcbiAgICBmb250U2l6ZTogT3B0aW9uYWxTdHJpbmcsXG4gICAgZm9udFdlaWdodDogT3B0aW9uYWxTdHJpbmcsXG4gICAgZm9udEZhbWlseTogT3B0aW9uYWxTdHJpbmcsXG4gICAgbGV0dGVyU3BhY2luZzogT3B0aW9uYWxTdHJpbmcsXG4gICAgbGluZUhlaWdodDogT3B0aW9uYWxTdHJpbmdcbiAgfSkub3B0aW9uYWwoKVxufSk7XG5CYXNlRWxlbWVudHNTdHlsZS5leHRlbmQoe1xuICBkaXNhYmxlQXV0b0ZpbGw6IE9wdGlvbmFsU3RyaW5nLFxuICBwbGFjZWhvbGRlcjogeiQxLm9iamVjdCh7XG4gICAgY2FyZE51bWJlcjogT3B0aW9uYWxTdHJpbmcsXG4gICAgZXhwaXJ5OiBPcHRpb25hbFN0cmluZyxcbiAgICBjdmM6IE9wdGlvbmFsU3RyaW5nXG4gIH0pLm9wdGlvbmFsKClcbn0pO1xuQmFzZUVsZW1lbnRzU3R5bGUuZXh0ZW5kKHtcbiAgZGlzYWJsZUF1dG9GaWxsOiBPcHRpb25hbFN0cmluZyxcbiAgcGxhY2Vob2xkZXI6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAvKipcbiAgICogVGhlIGNhcmQgaWNvbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGNhcmQgbnVtYmVyIGlucHV0IGZpZWxkXG4gICAqIEl0IHdvbid0IGFmZmVjdCBhZnRlciB0aGUgaWNvbiBjaGFuZ2VkIHRvIGNhcmQgYnJhbmQgYWZ0ZXIgdGhlIHVzZXIgaW5wdXQgdGhlIGNhcmQgbnVtYmVyXG4gICAqL1xuICBpY29uOiB6JDEub2JqZWN0KHtcbiAgICBjb2xvcjogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbiAgfSkub3B0aW9uYWwoKVxufSk7XG5CYXNlRWxlbWVudHNTdHlsZS5leHRlbmQoe1xuICBkaXNhYmxlQXV0b0ZpbGw6IE9wdGlvbmFsU3RyaW5nLFxuICBwbGFjZWhvbGRlcjogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuQmFzZUVsZW1lbnRzU3R5bGUuZXh0ZW5kKHtcbiAgZGlzYWJsZUF1dG9GaWxsOiBPcHRpb25hbFN0cmluZyxcbiAgcGxhY2Vob2xkZXI6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IEV2ZW50VHlwZSA9IHokMS5lbnVtKFtcbiAgLy8gRWxlbWVudCAtPiBGb3JtXG4gIFwiTEFZT1VUXCIsXG4gIFwiTE9BREVEXCIsXG4gIFwiQkxVUlwiLFxuICBcIkZPQ1VTXCIsXG4gIFwiQ0hBTkdFXCIsXG4gIFwiVE9LRU5JWkVfU1RBUlRFRFwiLFxuICBcIkNIRUNLT1VUX1NUQVJURURcIixcbiAgXCJQQVlNRU5UX0ZMT1dfU1RBUlRFRFwiLFxuICBcIlRPS0VOSVpFX1NVQ0NFU1NcIixcbiAgXCJDSEVDS09VVF9TVUNDRVNTXCIsXG4gIFwiTE9BRF9FUlJPUlwiLFxuICBcIlZBTElEQVRJT05fRVJST1JcIixcbiAgXCJUT0tFTklaRV9FUlJPUlwiLFxuICBcIkNIRUNLT1VUX0VSUk9SXCIsXG4gIFwiU0VUVVBfUEFZTUVOVF9NRVRIT0RfU1VDQ0VTU1wiLFxuICAvLyBGb3JtIC0+IEVsZW1lbnRcbiAgXCJUT0tFTklaRVwiLFxuICBcIkNIRUNLT1VUXCIsXG4gIFwiU1RBUlRfUEFZTUVOVF9GTE9XXCJcbl0pO1xuY29uc3QgR2VuZXJpY0V2ZW50VHlwZSA9IEV2ZW50VHlwZS5leHRyYWN0KFtcIlRPS0VOSVpFX1NUQVJURURcIiwgXCJDSEVDS09VVF9TVEFSVEVEXCJdKTtcbmNvbnN0IEdlbmVyaWNFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHsgdHlwZTogR2VuZXJpY0V2ZW50VHlwZSB9KTtcbmNvbnN0IElucHV0RXZlbnRUeXBlID0gRXZlbnRUeXBlLmV4dHJhY3QoW1wiQkxVUlwiLCBcIkZPQ1VTXCIsIFwiQ0hBTkdFXCJdKTtcbmNvbnN0IElucHV0RXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IElucHV0RXZlbnRUeXBlLFxuICBlbGVtZW50VHlwZTogUHJpdmF0ZUZpZWxkTmFtZUVudW0sXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKSxcbiAgb2JmdXNjYXRlZFZhbHVlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBFcnJvckV2ZW50VHlwZSA9IEV2ZW50VHlwZS5leHRyYWN0KFtcIkxPQURfRVJST1JcIiwgXCJUT0tFTklaRV9FUlJPUlwiLCBcIkNIRUNLT1VUX0VSUk9SXCJdKTtcbmNvbnN0IEVycm9yRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IEVycm9yRXZlbnRUeXBlLFxuICBtZXNzYWdlOiBSZXF1aXJlZFN0cmluZyxcbiAgaGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUgPSBFdmVudFR5cGUuZXh0cmFjdChbXCJWQUxJREFUSU9OX0VSUk9SXCJdKTtcbmNvbnN0IFZhbGlkYXRpb25FcnJvckV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUsXG4gIGVsZW1lbnRUeXBlOiBBbGxGaWVsZE5hbWVzLFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbmNvbnN0IExheW91dEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5MQVlPVVQpLFxuICBoZWlnaHQ6IFJlcXVpcmVkU3RyaW5nXG59KTtcbmNvbnN0IExvYWRlZEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChFdmVudFR5cGUuZW51bS5MT0FERUQpLFxuICBzZXNzaW9uSWQ6IFJlcXVpcmVkU3RyaW5nLFxuICB0b3RhbEFtb3VudEF0b21zOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiBPcHRpb25hbFN0cmluZyxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kczogeiQxLmFycmF5KENoZWNrb3V0UGF5bWVudE1ldGhvZCQxKVxufSk7XG5jb25zdCBQYXltZW50Rmxvd1N0YXJ0ZWRFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uUEFZTUVOVF9GTE9XX1NUQVJURUQpLFxuICBuZXh0QWN0aW9uTWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBwYXltZW50Rmxvd01ldGFkYXRhOiB6JDEuYW55KCkub3B0aW9uYWwoKSxcbiAgc3RhcnRQRk1ldGFkYXRhOiB6JDEub3B0aW9uYWwoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KTtcbmNvbnN0IFNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKEV2ZW50VHlwZS5lbnVtLlNFVFVQX1BBWU1FTlRfTUVUSE9EX1NVQ0NFU1MpLFxuICBwYXltZW50TWV0aG9kSWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBSZXF1aXJlZEZvcm1GaWVsZHMgPSB6JDEub2JqZWN0KHtcbiAgW1wiZW1haWxcIiAvKiBFTUFJTCAqL106IFJlcXVpcmVkU3RyaW5nLmVtYWlsKHsgbWVzc2FnZTogXCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzXCIgfSksXG4gIFtcImZpcnN0TmFtZVwiIC8qIEZJUlNUX05BTUUgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wibGFzdE5hbWVcIiAvKiBMQVNUX05BTUUgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wicGhvbmVcIiAvKiBQSE9ORSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJwcm9tb3Rpb25Db2RlXCIgLyogUFJPTU9USU9OX0NPREUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wibGluZTFcIiAvKiBMSU5FMSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJsaW5lMlwiIC8qIExJTkUyICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImxpbmUzXCIgLyogTElORTMgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wiY2l0eVwiIC8qIENJVFkgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wic3RhdGVcIiAvKiBTVEFURSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJjb3VudHJ5XCIgLyogQ09VTlRSWSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJ6aXBDb2RlXCIgLyogWklQX0NPREUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wiaXNTaGlwcGluZ1NhbWVBc0JpbGxpbmdcIiAvKiBJU19TSElQUElOR19TQU1FX0FTX0JJTExJTkcgKi9dOiB6JDEuY3VzdG9tKCkub3B0aW9uYWwoKS5kZWZhdWx0KHRydWUpLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NMaW5lMVwiIC8qIFNISVBQSU5HX0xJTkUxICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInNoaXBwaW5nQWRkcmVzc0xpbmUyXCIgLyogU0hJUFBJTkdfTElORTIgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzTGluZTNcIiAvKiBTSElQUElOR19MSU5FMyAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NDaXR5XCIgLyogU0hJUFBJTkdfQ0lUWSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NTdGF0ZVwiIC8qIFNISVBQSU5HX1NUQVRFICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInNoaXBwaW5nQWRkcmVzc0NvdW50cnlcIiAvKiBTSElQUElOR19DT1VOVFJZICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInNoaXBwaW5nQWRkcmVzc1ppcENvZGVcIiAvKiBTSElQUElOR19aSVBfQ09ERSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJidXNpbmVzc05hbWVcIiAvKiBCVVNJTkVTU19OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInRheElkXCIgLyogVEFYX0lEICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInRheElkVHlwZVwiIC8qIFRBWF9JRF9UWVBFICovXTogT3B0aW9uYWxTdHJpbmdcbn0pO1xuY29uc3QgUFJGb3JtRmllbGRzID0geiQxLm9iamVjdCh7XG4gIFtcImVtYWlsXCIgLyogRU1BSUwgKi9dOiBSZXF1aXJlZFN0cmluZy5lbWFpbCh7IG1lc3NhZ2U6IFwiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiIH0pLFxuICBbXCJmaXJzdE5hbWVcIiAvKiBGSVJTVF9OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImxhc3ROYW1lXCIgLyogTEFTVF9OQU1FICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInBob25lXCIgLyogUEhPTkUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wicHJvbW90aW9uQ29kZVwiIC8qIFBST01PVElPTl9DT0RFICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImxpbmUxXCIgLyogTElORTEgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wibGluZTJcIiAvKiBMSU5FMiAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJsaW5lM1wiIC8qIExJTkUzICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImNpdHlcIiAvKiBDSVRZICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInN0YXRlXCIgLyogU1RBVEUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wiY291bnRyeVwiIC8qIENPVU5UUlkgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wiemlwQ29kZVwiIC8qIFpJUF9DT0RFICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcImlzU2hpcHBpbmdTYW1lQXNCaWxsaW5nXCIgLyogSVNfU0hJUFBJTkdfU0FNRV9BU19CSUxMSU5HICovXTogeiQxLmN1c3RvbSgpLm9wdGlvbmFsKCkuZGVmYXVsdCh0cnVlKSxcbiAgW1wic2hpcHBpbmdBZGRyZXNzTGluZTFcIiAvKiBTSElQUElOR19MSU5FMSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NMaW5lMlwiIC8qIFNISVBQSU5HX0xJTkUyICovXTogT3B0aW9uYWxTdHJpbmcsXG4gIFtcInNoaXBwaW5nQWRkcmVzc0xpbmUzXCIgLyogU0hJUFBJTkdfTElORTMgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzQ2l0eVwiIC8qIFNISVBQSU5HX0NJVFkgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzU3RhdGVcIiAvKiBTSElQUElOR19TVEFURSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NDb3VudHJ5XCIgLyogU0hJUFBJTkdfQ09VTlRSWSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NaaXBDb2RlXCIgLyogU0hJUFBJTkdfWklQX0NPREUgKi9dOiBPcHRpb25hbFN0cmluZyxcbiAgW1wiYnVzaW5lc3NOYW1lXCIgLyogQlVTSU5FU1NfTkFNRSAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJ0YXhJZFwiIC8qIFRBWF9JRCAqL106IE9wdGlvbmFsU3RyaW5nLFxuICBbXCJ0YXhJZFR5cGVcIiAvKiBUQVhfSURfVFlQRSAqL106IE9wdGlvbmFsU3RyaW5nXG59KTtcbnokMS5vYmplY3Qoe1xuICBbXCJsaW5lMVwiIC8qIExJTkUxICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcImNpdHlcIiAvKiBDSVRZICovXTogUmVxdWlyZWRTdHJpbmcsXG4gIFtcInN0YXRlXCIgLyogU1RBVEUgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wiY291bnRyeVwiIC8qIENPVU5UUlkgKi9dOiBSZXF1aXJlZFN0cmluZ1xufSk7XG56JDEub2JqZWN0KHtcbiAgW1wic2hpcHBpbmdBZGRyZXNzQ291bnRyeVwiIC8qIFNISVBQSU5HX0NPVU5UUlkgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzWmlwQ29kZVwiIC8qIFNISVBQSU5HX1pJUF9DT0RFICovXTogUmVxdWlyZWRTdHJpbmdcbn0pO1xueiQxLm9iamVjdCh7XG4gIFtcInNoaXBwaW5nQWRkcmVzc0xpbmUxXCIgLyogU0hJUFBJTkdfTElORTEgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzQ2l0eVwiIC8qIFNISVBQSU5HX0NJVFkgKi9dOiBSZXF1aXJlZFN0cmluZyxcbiAgW1wic2hpcHBpbmdBZGRyZXNzU3RhdGVcIiAvKiBTSElQUElOR19TVEFURSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NDb3VudHJ5XCIgLyogU0hJUFBJTkdfQ09VTlRSWSAqL106IFJlcXVpcmVkU3RyaW5nLFxuICBbXCJzaGlwcGluZ0FkZHJlc3NaaXBDb2RlXCIgLyogU0hJUFBJTkdfWklQX0NPREUgKi9dOiBSZXF1aXJlZFN0cmluZ1xufSk7XG5jb25zdCBTdWJtaXRFdmVudFR5cGUgPSBFdmVudFR5cGUuZXh0cmFjdChbXCJUT0tFTklaRVwiLCBcIkNIRUNLT1VUXCIsIFwiU1RBUlRfUEFZTUVOVF9GTE9XXCJdKTtcbmNvbnN0IFN1Ym1pdEV2ZW50UGF5bG9hZCA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiBTdWJtaXRFdmVudFR5cGUsXG4gIHNlc3Npb25JZDogUmVxdWlyZWRTdHJpbmcsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEsXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBkb05vdFVzZUxlZ2FjeUNDRmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBleGlzdGluZ0NDUE1JZDogT3B0aW9uYWxTdHJpbmcsXG4gIHBheW1lbnRSb3V0ZUlkOiBPcHRpb25hbFN0cmluZ1xufSkuZXh0ZW5kKFJlcXVpcmVkRm9ybUZpZWxkcy5zaGFwZSk7XG5jb25zdCBUb2tlbml6ZVN1Y2Nlc3NFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uVE9LRU5JWkVfU1VDQ0VTUyksXG4gIGlzUmVhZHlGb3JDaGVja291dDogeiQxLmJvb2xlYW4oKVxufSk7XG5jb25zdCBDaGVja291dFN1Y2Nlc3NFdmVudFBheWxvYWQgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwoRXZlbnRUeXBlLmVudW0uQ0hFQ0tPVVRfU1VDQ0VTUyksXG4gIGludm9pY2VVcmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uSWRzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJJZDogeiQxLnN0cmluZygpLFxuICBwYXltZW50TWV0aG9kSWQ6IE9wdGlvbmFsU3RyaW5nXG59KTtcbmNvbnN0IEV2ZW50UGF5bG9hZCA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgR2VuZXJpY0V2ZW50UGF5bG9hZCxcbiAgSW5wdXRFdmVudFBheWxvYWQsXG4gIEVycm9yRXZlbnRQYXlsb2FkLFxuICBWYWxpZGF0aW9uRXJyb3JFdmVudFBheWxvYWQsXG4gIExheW91dEV2ZW50UGF5bG9hZCxcbiAgTG9hZGVkRXZlbnRQYXlsb2FkLFxuICBTdWJtaXRFdmVudFBheWxvYWQsXG4gIFRva2VuaXplU3VjY2Vzc0V2ZW50UGF5bG9hZCxcbiAgQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkLFxuICBQYXltZW50Rmxvd1N0YXJ0ZWRFdmVudFBheWxvYWQsXG4gIFNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkXG5dKTtcbnokMS5vYmplY3Qoe1xuICBwYXlsb2FkOiBFdmVudFBheWxvYWQsXG4gIG5vbmNlOiBSZXF1aXJlZFN0cmluZyxcbiAgZm9ybUlkOiBSZXF1aXJlZFN0cmluZyxcbiAgZWxlbWVudElkOiBSZXF1aXJlZFN0cmluZ1xufSk7XG56JDEub2JqZWN0KHtcbiAgYW1vdW50QXRvbTogeiQxLm51bWJlcigpLFxuICAvKipcbiAgICogVGhlIHRocmVlLWxldHRlciBJU08gNDIxNyBjdXJyZW5jeSBjb2RlIGZvciB0aGUgcGF5bWVudC5cbiAgICovXG4gIGN1cnJlbmN5OiBSZXF1aXJlZFN0cmluZ1xufSk7XG56JDEuZW51bShbXCJhcHBsZV9wYXlcIiwgXCJnb29nbGVfcGF5XCJdKTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICB0aGVpcl9wbV9pZDogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSksXG4gIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IG51bGxPclVuZGVmT3IkMSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgQ2hlY2tvdXRTdWNjZXNzUmVzcG9uc2UgPSB6JDEub2JqZWN0KHtcbiAgaW52b2ljZV91cmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uX2lkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2lkOiB6JDEuc3RyaW5nKCksXG4gIHBheW1lbnRfbWV0aG9kX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgcHJvY2Vzc29yc191c2VkOiBudWxsT3JVbmRlZk9yJDEoeiQxLmFycmF5KHokMS5zdHJpbmcoKSkpXG59KTtcbmNvbnN0IEZpZWxkVmFsaWRhdGlvbkVycm9yID0geiQxLm9iamVjdCh7XG4gIGVsZW1lbnRUeXBlOiB6JDEuc3RyaW5nKCksXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBUb2tlbml6ZUNhcmRFcnJvclJlc3BvbnNlID0geiQxLm9iamVjdCh7XG4gIHN1Y2Nlc3M6IHokMS5saXRlcmFsKGZhbHNlKSxcbiAgZXJyb3JfdHlwZTogeiQxLmxpdGVyYWwoXCJ2YWxpZGF0aW9uX2Vycm9yXCIpLFxuICBlcnJvcnM6IHokMS5hcnJheShGaWVsZFZhbGlkYXRpb25FcnJvcilcbn0pO1xueiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInN1Y2Nlc3NcIiwgW1xuICB6JDEub2JqZWN0KHsgc3VjY2VzczogeiQxLmxpdGVyYWwodHJ1ZSkgfSksXG4gIFRva2VuaXplQ2FyZEVycm9yUmVzcG9uc2Vcbl0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxLFxuICBub25fY2RlX2Zvcm1fZmllbGRzOiBSZXF1aXJlZEZvcm1GaWVsZHMsXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBleHRyYV9tZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gIHBheW1lbnRfcm91dGVfaWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBjdXN0b21lcl9sYW5ndWFnZTogbnVsbE9yVW5kZWZPciQxKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCQxLFxuICBub25fY2RlX2Zvcm1fZmllbGRzOiBSZXF1aXJlZEZvcm1GaWVsZHMsXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJfbGFuZ3VhZ2U6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5lbnVtKFtcInN1Y2Nlc3NcIiAvKiBTVUNDRVNTICovLCBcImZhaWx1cmVcIiAvKiBGQUlMVVJFICovLCBcImNhbmNlbGxlZFwiIC8qIENBTkNFTExFRCAqL10pLFxuICBocmVmOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpXG59KTtcbnokMS5vYmplY3Qoe1xuICBocmVmOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKS5udWxsYWJsZSgpXG59KTtcbnokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogeiQxLnN0cmluZygpLFxuICBpbml0aWFsX2ludGVudF9pZDogeiQxLnN0cmluZygpLFxuICBjb25zZW50X2lkOiB6JDEuc3RyaW5nKCksXG4gIHRoZWlyX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBBV1hCYW5rID0geiQxLm9iamVjdCh7XG4gIGJhbmtfbmFtZTogeiQxLnN0cmluZygpLFxuICBkaXNwbGF5X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgcmVzb3VyY2VzOiB6JDEub2JqZWN0KHtcbiAgICBsb2dvX3VybDogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbiAgfSlcbn0pO1xuY29uc3QgQ29tbW9uTmV4dEFjdGlvbk1ldGFkYXRhID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgcmVkaXJlY3RfdXJsOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgaW5pdGlhbF9pbnRlbnRfaWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBjb25zZW50X2lkOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgdGhlaXJfcG1faWQ6IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3Nlc3Npb246IG51bGxPclVuZGVmT3IkMSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSksXG4gIGF2YWlsYWJsZV9iYW5rczogbnVsbE9yVW5kZWZPciQxKHokMS5hcnJheShBV1hCYW5rKSlcbn0pO1xueiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwodHJ1ZSksIGhyZWY6IHokMS5zdHJpbmcoKSB9KSxcbiAgeiQxLm9iamVjdCh7IHByZXNlbnQ6IHokMS5saXRlcmFsKGZhbHNlKSB9KVxuXSk7XG56JDEub2JqZWN0KHtcbiAgcGF5bWVudF9tZXRob2RzOiB6JDEuYXJyYXkoUGF5bWVudE1ldGhvZE1pbmltYWwpLFxuICBwYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZTogbnVsbE9yVW5kZWZPciQxKENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlKSxcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiBudWxsT3JVbmRlZk9yJDEoeiQxLmFycmF5KENvbW1vbk5leHRBY3Rpb25NZXRhZGF0YSkpLFxuICBwb3N0X2NoZWNrb3V0X3JlZGlyZWN0X3RvOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgY2hlY2tvdXRfc3VjY2Vzc19yZXNwb25zZTogbnVsbE9yVW5kZWZPciQxKENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlKVxufSk7XG5jb25zdCBFRlRGb3JtRGF0YSA9IHokMS5vYmplY3Qoe1xuICBpbnN0aXR1dGlvbk51bWJlcjogeiQxLnN0cmluZygpLFxuICB0cmFuc2l0TnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIGFjY291bnROdW1iZXI6IHokMS5zdHJpbmcoKSxcbiAgYWNjb3VudFR5cGU6IHokMS5lbnVtKFtcInBlcnNvbmFsXCIsIFwiYnVzaW5lc3NcIl0pXG59KTtcbnokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5lbnVtKFtcInN1Y2Nlc3NcIiwgXCJmYWlsdXJlXCJdKSxcbiAgcGF5bG9hZDogRUZURm9ybURhdGEub3B0aW9uYWwoKVxufSk7XG5jb25zdCBCQUNTRm9ybURhdGEgPSB6JDEub2JqZWN0KHtcbiAgc29ydENvZGU6IHokMS5zdHJpbmcoKSxcbiAgYWNjb3VudE51bWJlcjogeiQxLnN0cmluZygpLFxuICBhY2NvdW50VHlwZTogeiQxLmVudW0oW1wicGVyc29uYWxcIiwgXCJidXNpbmVzc1wiXSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmVudW0oW1wic3VjY2Vzc1wiLCBcImZhaWx1cmVcIl0pLFxuICBwYXlsb2FkOiBCQUNTRm9ybURhdGEub3B0aW9uYWwoKVxufSk7XG5jb25zdCBTRVBBRm9ybURhdGEgPSB6JDEub2JqZWN0KHtcbiAgaWJhbjogeiQxLnN0cmluZygpLFxuICBhY2NvdW50VHlwZTogeiQxLmVudW0oW1wicGVyc29uYWxcIiwgXCJidXNpbmVzc1wiXSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmVudW0oW1wic3VjY2Vzc1wiLCBcImZhaWx1cmVcIl0pLFxuICBwYXlsb2FkOiBTRVBBRm9ybURhdGEub3B0aW9uYWwoKVxufSk7XG5jb25zdCBBQ0hNaWNyb0RlcG9zaXRGb3JtRGF0YSA9IHokMS5vYmplY3Qoe1xuICBhY2NvdW50X251bWJlcjogeiQxLnN0cmluZygpLFxuICBhYmFfcm91dGluZ19udW1iZXI6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBFRlRNaWNyb0RlcG9zaXRGb3JtRGF0YSA9IHokMS5vYmplY3Qoe1xuICBpbnN0aXR1dGlvbl9udW1iZXI6IHokMS5zdHJpbmcoKSxcbiAgdHJhbnNpdF9udW1iZXI6IHokMS5zdHJpbmcoKSxcbiAgYWNjb3VudF9udW1iZXI6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBCQUNTTWljcm9EZXBvc2l0Rm9ybURhdGEgPSB6JDEub2JqZWN0KHtcbiAgYWNjb3VudF9udW1iZXI6IHokMS5zdHJpbmcoKSxcbiAgc29ydF9jb2RlOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgU0VQQU1pY3JvRGVwb3NpdEZvcm1EYXRhID0geiQxLm9iamVjdCh7XG4gIGliYW46IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXCJzdWNjZXNzXCIsIFwiZmFpbHVyZVwiXSksXG4gIHBheWxvYWQ6IHokMS51bmlvbihbXG4gICAgQUNITWljcm9EZXBvc2l0Rm9ybURhdGEsXG4gICAgRUZUTWljcm9EZXBvc2l0Rm9ybURhdGEsXG4gICAgQkFDU01pY3JvRGVwb3NpdEZvcm1EYXRhLFxuICAgIFNFUEFNaWNyb0RlcG9zaXRGb3JtRGF0YSxcbiAgICB6JDEub2JqZWN0KHsgZXJyb3I6IHokMS5zdHJpbmcoKSB9KVxuICBdKS5vcHRpb25hbCgpXG59KTtcblxuY29uc3QgbnVsbE9yVW5kZWZPciA9ICh6VHlwZSkgPT4geiQxLm51bGxhYmxlKHpUeXBlLm9wdGlvbmFsKCkpO1xueiQxLnN0cmluZygpLnRyaW0oKS5taW4oMSwgeyBtZXNzYWdlOiBgQ2Fubm90IGJlIGJsYW5rYCB9KTtcbnokMS5vYmplY3Qoe1xuICBjZGVfcmVzcG9uc2VfdHlwZTogeiQxLmxpdGVyYWwoXCJlcnJvclwiKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBoZWFkZXJzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLnN0cmluZygpKS5vcHRpb25hbCgpXG59KTtcbnokMS5lbnVtKFtcInVzZFwiLCBcImJybFwiXSk7XG5jb25zdCBDb3Vwb25NaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgYW1vdW50X2F0b21fb2ZmOiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKSksXG4gIHBlcmNlbnRfb2ZmOiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKSksXG4gIGN1cnJlbmN5OiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGR1cmF0aW9uOiB6JDEuc3RyaW5nKCksXG4gIGR1cmF0aW9uX2luX21vbnRoczogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkpXG59KTtcbmNvbnN0IExpbmVJdGVtID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9zdWJ0b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGFtb3VudF90b3RhbF9hdG9tOiB6JDEubnVtYmVyKCkuaW50KCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHByaWNlX2lkOiB6JDEuc3RyaW5nKCksXG4gIGJpbGxpbmdfaW50ZXJ2YWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbF9jb3VudDogbnVsbE9yVW5kZWZPcih6JDEubnVtYmVyKCkuaW50KCkpLFxuICBxdWFudGl0eTogeiQxLm51bWJlcigpLmludCgpXG59KTtcbmNvbnN0IEJyYW5kU2V0dGluZ3MgPSB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKTtcbmNvbnN0IEJyYW5kID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgc2V0dGluZ3M6IG51bGxPclVuZGVmT3IoQnJhbmRTZXR0aW5ncylcbn0pO1xuY29uc3QgQ2hlY2tvdXRQYXltZW50TWV0aG9kID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEuc3RyaW5nKCksXG4gIHByb2Nlc3Nvcl9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIG1ldGFkYXRhOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBTdWJzY3JpcHRpb25JdGVtTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBxdWFudGl0eTogeiQxLm51bWJlcigpXG59KTtcbmNvbnN0IFN1YnNjcmlwdGlvbk1pbmltYWwgPSB6JDEub2JqZWN0KHtcbiAgaWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBiaWxsaW5nX2ludGVydmFsX2NvdW50OiBudWxsT3JVbmRlZk9yKHokMS5udW1iZXIoKS5pbnQoKSksXG4gIHN1YnNjcmlwdGlvbl9pdGVtczogeiQxLmFycmF5KFN1YnNjcmlwdGlvbkl0ZW1NaW5pbWFsKSxcbiAgdHJpYWxfc3RhcnQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdHJpYWxfZW5kOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgSW52b2ljZUl0ZW1EaXNjb3VudEFtb3VudHNNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9hdG9tOiB6JDEubnVtYmVyKClcbn0pO1xuY29uc3QgSW52b2ljZUxpbmVJdGVtTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICBhbW91bnRfYXRvbV9jb25zaWRlcmluZ19kaXNjb3VudF9hcHBsaWVkOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRpc2NvdW50X2Ftb3VudF9hdG9tczogeiQxLmFycmF5KEludm9pY2VJdGVtRGlzY291bnRBbW91bnRzTWluaW1hbCksXG4gIHN1YnNjcmlwdGlvbl9pdGVtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgRGlzY291bnRNaW5pbWFsID0geiQxLm9iamVjdCh7XG4gIGNvdXBvbjogQ291cG9uTWluaW1hbFxufSk7XG5jb25zdCBJbnZvaWNlTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkaXNjb3VudHM6IHokMS5hcnJheShEaXNjb3VudE1pbmltYWwpLFxuICBob3N0ZWRfaW52b2ljZV91cmw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgbGluZXM6IHokMS5hcnJheShJbnZvaWNlTGluZUl0ZW1NaW5pbWFsKSxcbiAgcmVtYWluaW5nX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRheF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLFxuICB0b3RhbF9kaXNjb3VudF9hbW91bnRfYXRvbXM6IHokMS5hcnJheShJbnZvaWNlSXRlbURpc2NvdW50QW1vdW50c01pbmltYWwpXG59KTtcbmNvbnN0IENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCA9IHokMS5vYmplY3Qoe1xuICBjcmVhdGVkOiB6JDEuYXJyYXkoU3Vic2NyaXB0aW9uTWluaW1hbCksXG4gIGludm9pY2VzOiB6JDEuYXJyYXkoSW52b2ljZU1pbmltYWwpLFxuICBwcm9jZXNzb3JzX3VzZWQ6IG51bGxPclVuZGVmT3IoeiQxLmFycmF5KHokMS5zdHJpbmcoKSkpLFxuICBwYXltZW50X21ldGhvZF9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbmNvbnN0IFByZXZpZXdDaGVja291dFJlc3BvbnNlID0geiQxLm9iamVjdCh7XG4gIHByZXZpZXc6IENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCxcbiAgcHJldmlld19wb3N0X3RyaWFsOiBudWxsT3JVbmRlZk9yKENyZWF0ZVN1YnNjcmlwdGlvblJlc3BvbnNlTWluaW1hbCksXG4gIGNvdXBvbnM6IHokMS5hcnJheShDb3Vwb25NaW5pbWFsKVxufSk7XG5jb25zdCBfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmxpdGVyYWwoXCJvcGVuXCIpLFxuICBsb2NhbGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgY2hlY2tvdXRfc2V0dGluZ3M6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoTGluZUl0ZW0pLFxuICBhbW91bnRfc3VidG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBhbW91bnRfdG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBicmFuZDogQnJhbmQsXG4gIHN1YnNfcHJldmlldzogbnVsbE9yVW5kZWZPcihQcmV2aWV3Q2hlY2tvdXRSZXNwb25zZSksXG4gIC8vIE51bGwgaW4gc2V0dXAgbW9kZVxuICBtZXRob2RzX2F2YWlsYWJsZTogeiQxLmFycmF5KENoZWNrb3V0UGF5bWVudE1ldGhvZCksXG4gIHJldHVybl91cmw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgc3VjY2Vzc191cmw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgZmluYWxfZmVhdHVyZV9yb2xsb3V0X3NldHRpbmdzOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSk7XG5jb25zdCBQYXltZW50Rm9ybVByZWZpbGwgPSB6JDEuZGlzY3JpbWluYXRlZFVuaW9uKFwibW9kZVwiLCBbXG4gIHokMS5vYmplY3Qoe1xuICAgIG1vZGU6IHokMS5saXRlcmFsKFwic2V0dXBcIiksXG4gICAgY3VycmVuY3k6IHokMS5udWxsYWJsZSh6JDEudW5kZWZpbmVkKCkpXG4gIH0pLmV4dGVuZChfUGF5bWVudEZvcm1QcmVmaWxsQ29tbW9uLnNoYXBlKSxcbiAgeiQxLm9iamVjdCh7XG4gICAgbW9kZTogeiQxLmVudW0oW1wicGF5bWVudFwiLCBcInN1YnNjcmlwdGlvblwiXSksXG4gICAgY3VycmVuY3k6IHokMS5zdHJpbmcoKVxuICB9KS5leHRlbmQoX1BheW1lbnRGb3JtUHJlZmlsbENvbW1vbi5zaGFwZSlcbl0pO1xuY29uc3QgQ29tcGxldGVkRm9ybVByZWZpbGwgPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEubGl0ZXJhbChcImNvbXBsZXRlXCIpXG59KTtcbmNvbnN0IEV4cGlyZWRGb3JtUHJlZmlsbCA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiZXhwaXJlZFwiKVxufSk7XG56JDEudW5pb24oW1BheW1lbnRGb3JtUHJlZmlsbCwgQ29tcGxldGVkRm9ybVByZWZpbGwsIEV4cGlyZWRGb3JtUHJlZmlsbF0pO1xueiQxLm9iamVjdCh7XG4gIGxvZ286IHokMS5zdHJpbmcoKSxcbiAgaWNvbjogeiQxLnN0cmluZygpLFxuICBwcmltYXJ5X2NvbG9yOiB6JDEuc3RyaW5nKCksXG4gIHNlY29uZGFyeV9jb2xvcjogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZWN1cmVfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgcG1faWQ6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBDb21wbGV0ZUFkZHJlc3MgPSB6JDEub2JqZWN0KHtcbiAgbGluZTE6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBsaW5lMjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGxpbmUzOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY2l0eTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHN0YXRlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY291bnRyeTogeiQxLnN0cmluZygpLFxuICB6aXBfY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwYXltZW50X2lucHV0OiB6JDEuYW55KCksXG4gIC8vIFNob3VsZCBmb2xsb3cgQW55UGF5bWVudElucHV0IGZyb20gQ0RFXG4gIGN1c3RvbWVyX2VtYWlsOiB6JDEuc3RyaW5nKCksXG4gIGN1c3RvbWVyX2xhc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGN1c3RvbWVyX2ZpcnN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9hZGRyZXNzOiBDb21wbGV0ZUFkZHJlc3MsXG4gIGN1c3RvbWVyX3NoaXBwaW5nX2FkZHJlc3M6IENvbXBsZXRlQWRkcmVzcy5vcHRpb25hbCgpLFxuICBsaW5lX2l0ZW1zOiB6JDEuYXJyYXkoTGluZUl0ZW0pLFxuICB0b3RhbF9hbW91bnRfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBjYW5jZWxfYXRfZW5kOiB6JDEuYm9vbGVhbigpLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdXNlX2NvbmZpcm1lZF9wbV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHBheW1lbnRfbWV0aG9kX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGlkOiB6JDEuc3RyaW5nKCksXG4gIHJldHVybl91cmw6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBQeWRhbnRpY1ZhbGlkYXRpb25FcnJvciQxID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgbG9jOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgbXNnOiB6JDEuc3RyaW5nKCksXG4gIHVybDogeiQxLnN0cmluZygpXG59KTtcbnokMS5hcnJheShQeWRhbnRpY1ZhbGlkYXRpb25FcnJvciQxKTtcbmNvbnN0IE5ld0N1c3RvbWVyRmllbGRzID0geiQxLm9iamVjdCh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9sYXN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfZmlyc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGN1c3RvbWVyX2J1c2luZXNzX25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl90YXhfaWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl90YXhfaWRfdHlwZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9hZGRyZXNzOiBDb21wbGV0ZUFkZHJlc3MsXG4gIG5ld19jdXN0b21lcl9zaGlwcGluZ19hZGRyZXNzOiBDb21wbGV0ZUFkZHJlc3Mub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfbGFuZ3VhZ2U6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfcGhvbmU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IFByaWNlUXR5ID0geiQxLm9iamVjdCh7XG4gIHByaWNlX2lkOiB6JDEuc3RyaW5nKCksXG4gIHF1YW50aXR5OiB6JDEubnVtYmVyKCkuaW50KClcbn0pO1xuY29uc3QgQ2FydEluZm8gPSB6JDEub2JqZWN0KHtcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KFByaWNlUXR5KSxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKS5pbnQoKVxufSk7XG5jb25zdCBQcm9jZXNzb3JTcGVjaWZpY01ldGFkYXRhID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogbnVsbE9yVW5kZWZPcih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHBheW1lbnRfcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0aGVpcl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZV9wYXlfZmlyc3RfZmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IENhcnRJbmZvLm9wdGlvbmFsKCksXG4gIGN1c3RvbWVyX2xhbmd1YWdlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSkuZXh0ZW5kKE5ld0N1c3RvbWVyRmllbGRzLnNoYXBlKS5leHRlbmQoUHJvY2Vzc29yU3BlY2lmaWNNZXRhZGF0YS5zaGFwZSk7XG56JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjaGVja291dF9hdHRlbXB0X2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIGZpZWxkczogUFJGb3JtRmllbGRzLFxuICBjaGVja291dFBheW1lbnRNZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgcGF5bWVudF9yb3V0ZV9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFJlcXVpcmVkRm9ybUZpZWxkcyxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IENoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICAvLyBUaGlzIGlzIG9wdGlvbmFsIGluIENERSwgYnV0IG5vdCBpbiBPSlMgbW92aW5nIGZvcndhcmRcbiAgdXNlX3VuaWZpZWRfY2NfZmxvdzogbnVsbE9yVW5kZWZPcih6JDEuYm9vbGVhbigpKSxcbiAgcGF5X2ZpcnN0X2Zsb3dfY2FydF9pbmZvOiBDYXJ0SW5mby5vcHRpb25hbCgpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2xhbmd1YWdlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjY19wbV9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9zdWNjZXNzX3Jlc3BvbnNlOiBudWxsT3JVbmRlZk9yKENoZWNrb3V0U3VjY2Vzc1Jlc3BvbnNlKSxcbiAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5yZWNvcmQoeiQxLmFueSgpKTtcbnokMS5vYmplY3Qoe1xuICBmaXJzdF9uYW1lOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGxhc3RfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsaW5lMTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsaW5lMjogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsaW5lMzogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBjaXR5OiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIHN0YXRlOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGNvdW50cnk6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgemlwX2NvZGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19lbWFpbDogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBwaG9uZV9udW1iZXI6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYnVzaW5lc3NfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICB0YXhfaWQ6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdGF4X2lkX3R5cGU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgdXBkYXRlX3Byb2Nlc3Nvcl9jdXN0b21lcjogbnVsbE9yVW5kZWZPcih6JDEuYm9vbGVhbigpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgZmlyc3RfbmFtZTogbnVsbE9yVW5kZWZPcih6JDEuc3RyaW5nKCkpLFxuICBsYXN0X25hbWU6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgcGhvbmVfbnVtYmVyOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfZW1haWw6IG51bGxPclVuZGVmT3IoeiQxLnN0cmluZygpKSxcbiAgYWRkcmVzczogbnVsbE9yVW5kZWZPcih6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgZXJyb3JfY29kZTogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe1xuICBjaGVja291dF9wYXltZW50X21ldGhvZDogQ2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLmFueSgpKS5vcHRpb25hbCgpLFxuICBwYXltZW50X3JvdXRlX2lkOiBudWxsT3JVbmRlZk9yKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIG5leHRfYWN0aW9uX21ldGFkYXRhOiBudWxsT3JVbmRlZk9yKHokMS5yZWNvcmQoeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIGV2ZW50czogeiQxLmFycmF5KFxuICAgIHokMS5vYmplY3Qoe1xuICAgICAgZXZlbnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgICAgZGV2aWNlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gICAgICBwcm9wZXJ0aWVzOiB6JDEucmVjb3JkKHokMS5hbnkoKSkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRleHRfcHJvcGVydGllczogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKClcbiAgICB9KVxuICApXG59KTtcbnokMS5hbnkoKS5vcHRpb25hbCgpO1xueiQxLm9iamVjdCh7XG4gIGRldmljZV90b2tlbjogeiQxLnN0cmluZygpXG59KTtcbnokMS5vYmplY3Qoe30pO1xueiQxLm9iamVjdCh7XG4gIF91bmlmaWVkX2NjX2FjdGlvbl9uYW1lOiB6JDEuc3RyaW5nKCksXG4gIF91bmlmaWVkX2NjX3BjY3NfaWQ6IHokMS5zdHJpbmcoKVxufSkuY2F0Y2hhbGwoeiQxLmFueSgpKTtcblxuY29uc3QgUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLmFycmF5KFB5ZGFudGljVmFsaWRhdGlvbkVycm9yKTtcbmNvbnN0IFpvZEZpZWxkRXJyb3IgPSB6JDEub2JqZWN0KHtcbiAgY29kZTogeiQxLnN0cmluZygpLFxuICBtZXNzYWdlOiB6JDEuc3RyaW5nKCksXG4gIHBhdGg6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5hcnJheShab2RGaWVsZEVycm9yKTtcbmNvbnN0IG1ha2VDYWxsYmFja1NhZmUgPSAoY2FsbGJhY2tOYW1lLCBmbiwgZXJyb3JMb2dnZXIpID0+IHtcbiAgcmV0dXJuICgoLi4uYXJncykgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGVycm9yTG9nZ2VyKGBbZm9ybV0gRXJyb3IgcnVubmluZyBjYWxsYmFjayAoJHtjYWxsYmFja05hbWV9KTpgLCBlcnJvcik7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCBjcmVhdGVPanNGbG93TG9nZ2VycyA9IChwcmVmaXgpID0+IHtcbiAgY29uc3QgbG9nID0gKC4uLmFyZ3MpID0+IHtcbiAgICB3aW5kb3dbXCJjb25zb2xlXCJdLmxvZyhgJHtjaGFsay5ncmVlbi5ib2xkKFwib2pzL1wiKX0ke2NoYWxrLmJvbGQuZ3JheShgJHtwcmVmaXh9YCl9XHRgLCAuLi5hcmdzKTtcbiAgfTtcbiAgY29uc3QgZXJyID0gKC4uLmFyZ3MpID0+IHtcbiAgICB3aW5kb3dbXCJjb25zb2xlXCJdLndhcm4oYCR7Y2hhbGsucmVkLmJvbGQoXCJvanMvXCIpfSR7Y2hhbGsuYm9sZC5ncmF5KGAke3ByZWZpeH1gKX1cdGAsIC4uLmFyZ3MpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGxvZyxcbiAgICBlcnIsXG4gICAgbG9nX186IGxvZyxcbiAgICBlcnJfXzogZXJyXG4gIH07XG59O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cblxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXG5cbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xuICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbn07XG5cbmZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XG4gIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxuICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XG59XG5cbmZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xuICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEl0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKTtcbiAgcmV0dXJuIGcubmV4dCA9IHZlcmIoMCksIGdbXCJ0aHJvd1wiXSA9IHZlcmIoMSksIGdbXCJyZXR1cm5cIl0gPSB2ZXJiKDIpLCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xuICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gX192YWx1ZXMobykge1xuICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59XG5cbmZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XG4gIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFtKSByZXR1cm4gbztcbiAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gIHRyeSB7XG4gICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgfVxuICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgfVxuICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gIH1cbiAgcmV0dXJuIGFyO1xufVxuXG5mdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XG4gIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59XG5cbmZ1bmN0aW9uIF9fYXdhaXQodikge1xuICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcbn1cblxuZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcbiAgcmV0dXJuIGkgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgQXN5bmNJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gQXN5bmNJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiLCBhd2FpdFJldHVybiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcbiAgZnVuY3Rpb24gYXdhaXRSZXR1cm4oZikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGYsIHJlamVjdCk7IH07IH1cbiAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlmIChnW25dKSB7IGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IGlmIChmKSBpW25dID0gZihpW25dKTsgfSB9XG4gIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cbiAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XG4gIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cbiAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxuICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XG59XG5cbmZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xuICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XG4gIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cbiAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxufVxuXG50eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcbiAgdmFyIGUgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XG59O1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXJyb3JDbGFzcyhjcmVhdGVJbXBsKSB7XG4gICAgdmFyIF9zdXBlciA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgICAgICBFcnJvci5jYWxsKGluc3RhbmNlKTtcbiAgICAgICAgaW5zdGFuY2Uuc3RhY2sgPSBuZXcgRXJyb3IoKS5zdGFjaztcbiAgICB9O1xuICAgIHZhciBjdG9yRnVuYyA9IGNyZWF0ZUltcGwoX3N1cGVyKTtcbiAgICBjdG9yRnVuYy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7XG4gICAgY3RvckZ1bmMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvckZ1bmM7XG4gICAgcmV0dXJuIGN0b3JGdW5jO1xufVxuXG52YXIgVW5zdWJzY3JpcHRpb25FcnJvciA9IGNyZWF0ZUVycm9yQ2xhc3MoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIHJldHVybiBmdW5jdGlvbiBVbnN1YnNjcmlwdGlvbkVycm9ySW1wbChlcnJvcnMpIHtcbiAgICAgICAgX3N1cGVyKHRoaXMpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBlcnJvcnNcbiAgICAgICAgICAgID8gZXJyb3JzLmxlbmd0aCArIFwiIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XFxuXCIgKyBlcnJvcnMubWFwKGZ1bmN0aW9uIChlcnIsIGkpIHsgcmV0dXJuIGkgKyAxICsgXCIpIFwiICsgZXJyLnRvU3RyaW5nKCk7IH0pLmpvaW4oJ1xcbiAgJylcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgIHRoaXMubmFtZSA9ICdVbnN1YnNjcmlwdGlvbkVycm9yJztcbiAgICAgICAgdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gICAgfTtcbn0pO1xuXG5mdW5jdGlvbiBhcnJSZW1vdmUoYXJyLCBpdGVtKSB7XG4gICAgaWYgKGFycikge1xuICAgICAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgMCA8PSBpbmRleCAmJiBhcnIuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG59XG5cbnZhciBTdWJzY3JpcHRpb24gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN1YnNjcmlwdGlvbihpbml0aWFsVGVhcmRvd24pIHtcbiAgICAgICAgdGhpcy5pbml0aWFsVGVhcmRvd24gPSBpbml0aWFsVGVhcmRvd247XG4gICAgICAgIHRoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgIH1cbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICAgICAgdmFyIGVycm9ycztcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgICAgICBpZiAoX3BhcmVudGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX3BhcmVudGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9wYXJlbnRhZ2VfMSA9IF9fdmFsdWVzKF9wYXJlbnRhZ2UpLCBfcGFyZW50YWdlXzFfMSA9IF9wYXJlbnRhZ2VfMS5uZXh0KCk7ICFfcGFyZW50YWdlXzFfMS5kb25lOyBfcGFyZW50YWdlXzFfMSA9IF9wYXJlbnRhZ2VfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50XzEgPSBfcGFyZW50YWdlXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRfMS5yZW1vdmUodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfcGFyZW50YWdlXzFfMSAmJiAhX3BhcmVudGFnZV8xXzEuZG9uZSAmJiAoX2EgPSBfcGFyZW50YWdlXzEucmV0dXJuKSkgX2EuY2FsbChfcGFyZW50YWdlXzEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfcGFyZW50YWdlLnJlbW92ZSh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaW5pdGlhbEZpbmFsaXplciA9IHRoaXMuaW5pdGlhbFRlYXJkb3duO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oaW5pdGlhbEZpbmFsaXplcikpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpbml0aWFsRmluYWxpemVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGUgaW5zdGFuY2VvZiBVbnN1YnNjcmlwdGlvbkVycm9yID8gZS5lcnJvcnMgOiBbZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9maW5hbGl6ZXJzID0gdGhpcy5fZmluYWxpemVycztcbiAgICAgICAgICAgIGlmIChfZmluYWxpemVycykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9maW5hbGl6ZXJzXzEgPSBfX3ZhbHVlcyhfZmluYWxpemVycyksIF9maW5hbGl6ZXJzXzFfMSA9IF9maW5hbGl6ZXJzXzEubmV4dCgpOyAhX2ZpbmFsaXplcnNfMV8xLmRvbmU7IF9maW5hbGl6ZXJzXzFfMSA9IF9maW5hbGl6ZXJzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmluYWxpemVyID0gX2ZpbmFsaXplcnNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjRmluYWxpemVyKGZpbmFsaXplcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyb3JzICE9PSBudWxsICYmIGVycm9ycyAhPT0gdm9pZCAwID8gZXJyb3JzIDogW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFVuc3Vic2NyaXB0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoZXJyb3JzKSksIF9fcmVhZChlcnIuZXJyb3JzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9maW5hbGl6ZXJzXzFfMSAmJiAhX2ZpbmFsaXplcnNfMV8xLmRvbmUgJiYgKF9iID0gX2ZpbmFsaXplcnNfMS5yZXR1cm4pKSBfYi5jYWxsKF9maW5hbGl6ZXJzXzEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3Vic2NyaXB0aW9uRXJyb3IoZXJyb3JzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAodGVhcmRvd24pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodGVhcmRvd24gJiYgdGVhcmRvd24gIT09IHRoaXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIGV4ZWNGaW5hbGl6ZXIodGVhcmRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRlYXJkb3duIGluc3RhbmNlb2YgU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZWFyZG93bi5jbG9zZWQgfHwgdGVhcmRvd24uX2hhc1BhcmVudCh0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRlYXJkb3duLl9hZGRQYXJlbnQodGhpcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICh0aGlzLl9maW5hbGl6ZXJzID0gKF9hID0gdGhpcy5fZmluYWxpemVycykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW10pLnB1c2godGVhcmRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLl9oYXNQYXJlbnQgPSBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgIHZhciBfcGFyZW50YWdlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgICAgICByZXR1cm4gX3BhcmVudGFnZSA9PT0gcGFyZW50IHx8IChBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpICYmIF9wYXJlbnRhZ2UuaW5jbHVkZXMocGFyZW50KSk7XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLl9hZGRQYXJlbnQgPSBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgIHZhciBfcGFyZW50YWdlID0gdGhpcy5fcGFyZW50YWdlO1xuICAgICAgICB0aGlzLl9wYXJlbnRhZ2UgPSBBcnJheS5pc0FycmF5KF9wYXJlbnRhZ2UpID8gKF9wYXJlbnRhZ2UucHVzaChwYXJlbnQpLCBfcGFyZW50YWdlKSA6IF9wYXJlbnRhZ2UgPyBbX3BhcmVudGFnZSwgcGFyZW50XSA6IHBhcmVudDtcbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUuX3JlbW92ZVBhcmVudCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgdmFyIF9wYXJlbnRhZ2UgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgICAgIGlmIChfcGFyZW50YWdlID09PSBwYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhcmVudGFnZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfcGFyZW50YWdlKSkge1xuICAgICAgICAgICAgYXJyUmVtb3ZlKF9wYXJlbnRhZ2UsIHBhcmVudCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKHRlYXJkb3duKSB7XG4gICAgICAgIHZhciBfZmluYWxpemVycyA9IHRoaXMuX2ZpbmFsaXplcnM7XG4gICAgICAgIF9maW5hbGl6ZXJzICYmIGFyclJlbW92ZShfZmluYWxpemVycywgdGVhcmRvd24pO1xuICAgICAgICBpZiAodGVhcmRvd24gaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRlYXJkb3duLl9yZW1vdmVQYXJlbnQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbi5FTVBUWSA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlbXB0eSA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgZW1wdHkuY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGVtcHR5O1xuICAgIH0pKCk7XG4gICAgcmV0dXJuIFN1YnNjcmlwdGlvbjtcbn0oKSk7XG52YXIgRU1QVFlfU1VCU0NSSVBUSU9OID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuZnVuY3Rpb24gaXNTdWJzY3JpcHRpb24odmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlIGluc3RhbmNlb2YgU3Vic2NyaXB0aW9uIHx8XG4gICAgICAgICh2YWx1ZSAmJiAnY2xvc2VkJyBpbiB2YWx1ZSAmJiBpc0Z1bmN0aW9uKHZhbHVlLnJlbW92ZSkgJiYgaXNGdW5jdGlvbih2YWx1ZS5hZGQpICYmIGlzRnVuY3Rpb24odmFsdWUudW5zdWJzY3JpYmUpKSk7XG59XG5mdW5jdGlvbiBleGVjRmluYWxpemVyKGZpbmFsaXplcikge1xuICAgIGlmIChpc0Z1bmN0aW9uKGZpbmFsaXplcikpIHtcbiAgICAgICAgZmluYWxpemVyKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmaW5hbGl6ZXIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG5cbnZhciBjb25maWcgPSB7XG4gICAgUHJvbWlzZTogdW5kZWZpbmVkfTtcblxudmFyIHRpbWVvdXRQcm92aWRlciA9IHtcbiAgICBzZXRUaW1lb3V0OiBmdW5jdGlvbiAoaGFuZGxlciwgdGltZW91dCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2V0VGltZW91dC5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW2hhbmRsZXIsIHRpbWVvdXRdLCBfX3JlYWQoYXJncykpKTtcbiAgICB9LFxuICAgIGNsZWFyVGltZW91dDogZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICByZXR1cm4gKGNsZWFyVGltZW91dCkoaGFuZGxlKTtcbiAgICB9LFxuICAgIGRlbGVnYXRlOiB1bmRlZmluZWQsXG59O1xuXG5mdW5jdGlvbiByZXBvcnRVbmhhbmRsZWRFcnJvcihlcnIpIHtcbiAgICB0aW1lb3V0UHJvdmlkZXIuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBub29wKCkgeyB9XG5cbmZ1bmN0aW9uIGVycm9yQ29udGV4dChjYikge1xuICAgIHtcbiAgICAgICAgY2IoKTtcbiAgICB9XG59XG5cbnZhciBTdWJzY3JpYmVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU3Vic2NyaWJlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBTdWJzY3JpYmVyKGRlc3RpbmF0aW9uKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmlzU3RvcHBlZCA9IGZhbHNlO1xuICAgICAgICBpZiAoZGVzdGluYXRpb24pIHtcbiAgICAgICAgICAgIF90aGlzLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247XG4gICAgICAgICAgICBpZiAoaXNTdWJzY3JpcHRpb24oZGVzdGluYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb24uYWRkKF90aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzLmRlc3RpbmF0aW9uID0gRU1QVFlfT0JTRVJWRVI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBTdWJzY3JpYmVyLmNyZWF0ZSA9IGZ1bmN0aW9uIChuZXh0LCBlcnJvciwgY29tcGxldGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTYWZlU3Vic2NyaWJlcihuZXh0LCBlcnJvciwgY29tcGxldGUpO1xuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5pc1N0b3BwZWQpIDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaWJlci5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RvcHBlZCkgO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yKGVycik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5pc1N0b3BwZWQpIDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0cnVlO1xuICAgICAgICAgICAgX3N1cGVyLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kZXN0aW5hdGlvbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLl9uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGVzdGluYXRpb24ubmV4dCh2YWx1ZSk7XG4gICAgfTtcbiAgICBTdWJzY3JpYmVyLnByb3RvdHlwZS5fZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmliZXIucHJvdG90eXBlLl9jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIFN1YnNjcmliZXI7XG59KFN1YnNjcmlwdGlvbikpO1xudmFyIENvbnN1bWVyT2JzZXJ2ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENvbnN1bWVyT2JzZXJ2ZXIocGFydGlhbE9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMucGFydGlhbE9ic2VydmVyID0gcGFydGlhbE9ic2VydmVyO1xuICAgIH1cbiAgICBDb25zdW1lck9ic2VydmVyLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsT2JzZXJ2ZXIgPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICAgICAgaWYgKHBhcnRpYWxPYnNlcnZlci5uZXh0KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnRpYWxPYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGhhbmRsZVVuaGFuZGxlZEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29uc3VtZXJPYnNlcnZlci5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsT2JzZXJ2ZXIgPSB0aGlzLnBhcnRpYWxPYnNlcnZlcjtcbiAgICAgICAgaWYgKHBhcnRpYWxPYnNlcnZlci5lcnJvcikge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsT2JzZXJ2ZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGhhbmRsZVVuaGFuZGxlZEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGhhbmRsZVVuaGFuZGxlZEVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbnN1bWVyT2JzZXJ2ZXIucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcGFydGlhbE9ic2VydmVyID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgICAgIGlmIChwYXJ0aWFsT2JzZXJ2ZXIuY29tcGxldGUpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVVbmhhbmRsZWRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBDb25zdW1lck9ic2VydmVyO1xufSgpKTtcbnZhciBTYWZlU3Vic2NyaWJlciA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFNhZmVTdWJzY3JpYmVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFNhZmVTdWJzY3JpYmVyKG9ic2VydmVyT3JOZXh0LCBlcnJvciwgY29tcGxldGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgdmFyIHBhcnRpYWxPYnNlcnZlcjtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob2JzZXJ2ZXJPck5leHQpIHx8ICFvYnNlcnZlck9yTmV4dCkge1xuICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyID0ge1xuICAgICAgICAgICAgICAgIG5leHQ6IChvYnNlcnZlck9yTmV4dCAhPT0gbnVsbCAmJiBvYnNlcnZlck9yTmV4dCAhPT0gdm9pZCAwID8gb2JzZXJ2ZXJPck5leHQgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvciAhPT0gbnVsbCAmJiBlcnJvciAhPT0gdm9pZCAwID8gZXJyb3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgY29tcGxldGU6IGNvbXBsZXRlICE9PSBudWxsICYmIGNvbXBsZXRlICE9PSB2b2lkIDAgPyBjb21wbGV0ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGFydGlhbE9ic2VydmVyID0gb2JzZXJ2ZXJPck5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgX3RoaXMuZGVzdGluYXRpb24gPSBuZXcgQ29uc3VtZXJPYnNlcnZlcihwYXJ0aWFsT2JzZXJ2ZXIpO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIHJldHVybiBTYWZlU3Vic2NyaWJlcjtcbn0oU3Vic2NyaWJlcikpO1xuZnVuY3Rpb24gaGFuZGxlVW5oYW5kbGVkRXJyb3IoZXJyb3IpIHtcbiAgICB7XG4gICAgICAgIHJlcG9ydFVuaGFuZGxlZEVycm9yKGVycm9yKTtcbiAgICB9XG59XG5mdW5jdGlvbiBkZWZhdWx0RXJyb3JIYW5kbGVyKGVycikge1xuICAgIHRocm93IGVycjtcbn1cbnZhciBFTVBUWV9PQlNFUlZFUiA9IHtcbiAgICBjbG9zZWQ6IHRydWUsXG4gICAgbmV4dDogbm9vcCxcbiAgICBlcnJvcjogZGVmYXVsdEVycm9ySGFuZGxlcixcbiAgICBjb21wbGV0ZTogbm9vcCxcbn07XG5cbnZhciBvYnNlcnZhYmxlID0gKGZ1bmN0aW9uICgpIHsgcmV0dXJuICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5vYnNlcnZhYmxlKSB8fCAnQEBvYnNlcnZhYmxlJzsgfSkoKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkoeCkge1xuICAgIHJldHVybiB4O1xufVxuXG5mdW5jdGlvbiBwaXBlRnJvbUFycmF5KGZucykge1xuICAgIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICB9XG4gICAgaWYgKGZucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGZuc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBpcGVkKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBmbnMucmVkdWNlKGZ1bmN0aW9uIChwcmV2LCBmbikgeyByZXR1cm4gZm4ocHJldik7IH0sIGlucHV0KTtcbiAgICB9O1xufVxuXG52YXIgT2JzZXJ2YWJsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT2JzZXJ2YWJsZShzdWJzY3JpYmUpIHtcbiAgICAgICAgaWYgKHN1YnNjcmliZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlID0gc3Vic2NyaWJlO1xuICAgICAgICB9XG4gICAgfVxuICAgIE9ic2VydmFibGUucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbiAob3BlcmF0b3IpIHtcbiAgICAgICAgdmFyIG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgpO1xuICAgICAgICBvYnNlcnZhYmxlLnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIG9ic2VydmFibGUub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGU7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiAob2JzZXJ2ZXJPck5leHQsIGVycm9yLCBjb21wbGV0ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgc3Vic2NyaWJlciA9IGlzU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCkgPyBvYnNlcnZlck9yTmV4dCA6IG5ldyBTYWZlU3Vic2NyaWJlcihvYnNlcnZlck9yTmV4dCwgZXJyb3IsIGNvbXBsZXRlKTtcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLCBvcGVyYXRvciA9IF9hLm9wZXJhdG9yLCBzb3VyY2UgPSBfYS5zb3VyY2U7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmFkZChvcGVyYXRvclxuICAgICAgICAgICAgICAgID9cbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IuY2FsbChzdWJzY3JpYmVyLCBzb3VyY2UpXG4gICAgICAgICAgICAgICAgOiBzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3N1YnNjcmliZShzdWJzY3JpYmVyKVxuICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fdHJ5U3Vic2NyaWJlKHN1YnNjcmliZXIpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzdWJzY3JpYmVyO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uIChzaW5rKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc3Vic2NyaWJlKHNpbmspO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHNpbmsuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChuZXh0LCBwcm9taXNlQ3Rvcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBwcm9taXNlQ3RvciA9IGdldFByb21pc2VDdG9yKHByb21pc2VDdG9yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBwcm9taXNlQ3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgc3Vic2NyaWJlciA9IG5ldyBTYWZlU3Vic2NyaWJlcih7XG4gICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IHJlamVjdCxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX3RoaXMuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLl9zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlW29ic2VydmFibGVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIE9ic2VydmFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBvcGVyYXRpb25zID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBvcGVyYXRpb25zW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBpcGVGcm9tQXJyYXkob3BlcmF0aW9ucykodGhpcyk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZS50b1Byb21pc2UgPSBmdW5jdGlvbiAocHJvbWlzZUN0b3IpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcHJvbWlzZUN0b3IgPSBnZXRQcm9taXNlQ3Rvcihwcm9taXNlQ3Rvcik7XG4gICAgICAgIHJldHVybiBuZXcgcHJvbWlzZUN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICAgICAgX3RoaXMuc3Vic2NyaWJlKGZ1bmN0aW9uICh4KSB7IHJldHVybiAodmFsdWUgPSB4KTsgfSwgZnVuY3Rpb24gKGVycikgeyByZXR1cm4gcmVqZWN0KGVycik7IH0sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc29sdmUodmFsdWUpOyB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLmNyZWF0ZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKHN1YnNjcmliZSk7XG4gICAgfTtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZTtcbn0oKSk7XG5mdW5jdGlvbiBnZXRQcm9taXNlQ3Rvcihwcm9taXNlQ3Rvcikge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gcHJvbWlzZUN0b3IgIT09IG51bGwgJiYgcHJvbWlzZUN0b3IgIT09IHZvaWQgMCA/IHByb21pc2VDdG9yIDogY29uZmlnLlByb21pc2UpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFByb21pc2U7XG59XG5mdW5jdGlvbiBpc09ic2VydmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICYmIGlzRnVuY3Rpb24odmFsdWUubmV4dCkgJiYgaXNGdW5jdGlvbih2YWx1ZS5lcnJvcikgJiYgaXNGdW5jdGlvbih2YWx1ZS5jb21wbGV0ZSk7XG59XG5mdW5jdGlvbiBpc1N1YnNjcmliZXIodmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgU3Vic2NyaWJlcikgfHwgKGlzT2JzZXJ2ZXIodmFsdWUpICYmIGlzU3Vic2NyaXB0aW9uKHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIGhhc0xpZnQoc291cmNlKSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oc291cmNlID09PSBudWxsIHx8IHNvdXJjZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc291cmNlLmxpZnQpO1xufVxuZnVuY3Rpb24gb3BlcmF0ZShpbml0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc0xpZnQoc291cmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5saWZ0KGZ1bmN0aW9uIChsaWZ0ZWRTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5pdChsaWZ0ZWRTb3VyY2UsIHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmFibGUgdG8gbGlmdCB1bmtub3duIE9ic2VydmFibGUgdHlwZScpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU9wZXJhdG9yU3Vic2NyaWJlcihkZXN0aW5hdGlvbiwgb25OZXh0LCBvbkNvbXBsZXRlLCBvbkVycm9yLCBvbkZpbmFsaXplKSB7XG4gICAgcmV0dXJuIG5ldyBPcGVyYXRvclN1YnNjcmliZXIoZGVzdGluYXRpb24sIG9uTmV4dCwgb25Db21wbGV0ZSwgb25FcnJvciwgb25GaW5hbGl6ZSk7XG59XG52YXIgT3BlcmF0b3JTdWJzY3JpYmVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoT3BlcmF0b3JTdWJzY3JpYmVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE9wZXJhdG9yU3Vic2NyaWJlcihkZXN0aW5hdGlvbiwgb25OZXh0LCBvbkNvbXBsZXRlLCBvbkVycm9yLCBvbkZpbmFsaXplLCBzaG91bGRVbnN1YnNjcmliZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBkZXN0aW5hdGlvbikgfHwgdGhpcztcbiAgICAgICAgX3RoaXMub25GaW5hbGl6ZSA9IG9uRmluYWxpemU7XG4gICAgICAgIF90aGlzLnNob3VsZFVuc3Vic2NyaWJlID0gc2hvdWxkVW5zdWJzY3JpYmU7XG4gICAgICAgIF90aGlzLl9uZXh0ID0gb25OZXh0XG4gICAgICAgICAgICA/IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIG9uTmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IF9zdXBlci5wcm90b3R5cGUuX25leHQ7XG4gICAgICAgIF90aGlzLl9lcnJvciA9IG9uRXJyb3JcbiAgICAgICAgICAgID8gZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogX3N1cGVyLnByb3RvdHlwZS5fZXJyb3I7XG4gICAgICAgIF90aGlzLl9jb21wbGV0ZSA9IG9uQ29tcGxldGVcbiAgICAgICAgICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogX3N1cGVyLnByb3RvdHlwZS5fY29tcGxldGU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT3BlcmF0b3JTdWJzY3JpYmVyLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIXRoaXMuc2hvdWxkVW5zdWJzY3JpYmUgfHwgdGhpcy5zaG91bGRVbnN1YnNjcmliZSgpKSB7XG4gICAgICAgICAgICB2YXIgY2xvc2VkXzEgPSB0aGlzLmNsb3NlZDtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICFjbG9zZWRfMSAmJiAoKF9hID0gdGhpcy5vbkZpbmFsaXplKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBPcGVyYXRvclN1YnNjcmliZXI7XG59KFN1YnNjcmliZXIpKTtcblxudmFyIE9iamVjdFVuc3Vic2NyaWJlZEVycm9yID0gY3JlYXRlRXJyb3JDbGFzcyhmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIE9iamVjdFVuc3Vic2NyaWJlZEVycm9ySW1wbCgpIHtcbiAgICAgICAgX3N1cGVyKHRoaXMpO1xuICAgICAgICB0aGlzLm5hbWUgPSAnT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3InO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnb2JqZWN0IHVuc3Vic2NyaWJlZCc7XG4gICAgfTtcbn0pO1xuXG52YXIgU3ViamVjdCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFN1YmplY3QsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3ViamVjdCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuY2xvc2VkID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgICAgICBfdGhpcy5vYnNlcnZlcnMgPSBbXTtcbiAgICAgICAgX3RoaXMuaXNTdG9wcGVkID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIF90aGlzLnRocm93bkVycm9yID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBTdWJqZWN0LnByb3RvdHlwZS5saWZ0ID0gZnVuY3Rpb24gKG9wZXJhdG9yKSB7XG4gICAgICAgIHZhciBzdWJqZWN0ID0gbmV3IEFub255bW91c1N1YmplY3QodGhpcywgdGhpcyk7XG4gICAgICAgIHN1YmplY3Qub3BlcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgcmV0dXJuIHN1YmplY3Q7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5fdGhyb3dJZkNsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBlcnJvckNvbnRleHQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgICAgICBfdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmN1cnJlbnRPYnNlcnZlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuY3VycmVudE9ic2VydmVycyA9IEFycmF5LmZyb20oX3RoaXMub2JzZXJ2ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhfdGhpcy5jdXJyZW50T2JzZXJ2ZXJzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9ic2VydmVyID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGVycm9yQ29udGV4dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5fdGhyb3dJZkNsb3NlZCgpO1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5pc1N0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5oYXNFcnJvciA9IF90aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgX3RoaXMudGhyb3duRXJyb3IgPSBlcnI7XG4gICAgICAgICAgICAgICAgdmFyIG9ic2VydmVycyA9IF90aGlzLm9ic2VydmVycztcbiAgICAgICAgICAgICAgICB3aGlsZSAob2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMuc2hpZnQoKS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgZXJyb3JDb250ZXh0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLl90aHJvd0lmQ2xvc2VkKCk7XG4gICAgICAgICAgICBpZiAoIV90aGlzLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgICAgIF90aGlzLmlzU3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIG9ic2VydmVycyA9IF90aGlzLm9ic2VydmVycztcbiAgICAgICAgICAgICAgICB3aGlsZSAob2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlcnMuc2hpZnQoKS5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJqZWN0LnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pc1N0b3BwZWQgPSB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXJzID0gdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTdWJqZWN0LnByb3RvdHlwZSwgXCJvYnNlcnZlZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuICgoX2EgPSB0aGlzLm9ic2VydmVycykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgPiAwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHRoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5wcm90b3R5cGUuX3RyeVN1YnNjcmliZS5jYWxsKHRoaXMsIHN1YnNjcmliZXIpO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHRoaXMuX3Rocm93SWZDbG9zZWQoKTtcbiAgICAgICAgdGhpcy5fY2hlY2tGaW5hbGl6ZWRTdGF0dXNlcyhzdWJzY3JpYmVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubmVyU3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hID0gdGhpcywgaGFzRXJyb3IgPSBfYS5oYXNFcnJvciwgaXNTdG9wcGVkID0gX2EuaXNTdG9wcGVkLCBvYnNlcnZlcnMgPSBfYS5vYnNlcnZlcnM7XG4gICAgICAgIGlmIChoYXNFcnJvciB8fCBpc1N0b3BwZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBFTVBUWV9TVUJTQ1JJUFRJT047XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbDtcbiAgICAgICAgb2JzZXJ2ZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsO1xuICAgICAgICAgICAgYXJyUmVtb3ZlKG9ic2VydmVycywgc3Vic2NyaWJlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3ViamVjdC5wcm90b3R5cGUuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBoYXNFcnJvciA9IF9hLmhhc0Vycm9yLCB0aHJvd25FcnJvciA9IF9hLnRocm93bkVycm9yLCBpc1N0b3BwZWQgPSBfYS5pc1N0b3BwZWQ7XG4gICAgICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcih0aHJvd25FcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YmplY3QucHJvdG90eXBlLmFzT2JzZXJ2YWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZSgpO1xuICAgICAgICBvYnNlcnZhYmxlLnNvdXJjZSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlO1xuICAgIH07XG4gICAgU3ViamVjdC5jcmVhdGUgPSBmdW5jdGlvbiAoZGVzdGluYXRpb24sIHNvdXJjZSkge1xuICAgICAgICByZXR1cm4gbmV3IEFub255bW91c1N1YmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSk7XG4gICAgfTtcbiAgICByZXR1cm4gU3ViamVjdDtcbn0oT2JzZXJ2YWJsZSkpO1xudmFyIEFub255bW91c1N1YmplY3QgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhBbm9ueW1vdXNTdWJqZWN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEFub255bW91c1N1YmplY3QoZGVzdGluYXRpb24sIHNvdXJjZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICBfdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmV4dCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHZhbHVlKTtcbiAgICB9O1xuICAgIEFub255bW91c1N1YmplY3QucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZXJyb3IpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBlcnIpO1xuICAgIH07XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMuZGVzdGluYXRpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb21wbGV0ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpO1xuICAgIH07XG4gICAgQW5vbnltb3VzU3ViamVjdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSB0aGlzLnNvdXJjZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN1YnNjcmliZShzdWJzY3JpYmVyKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogRU1QVFlfU1VCU0NSSVBUSU9OO1xuICAgIH07XG4gICAgcmV0dXJuIEFub255bW91c1N1YmplY3Q7XG59KFN1YmplY3QpKTtcblxudmFyIGRhdGVUaW1lc3RhbXBQcm92aWRlciA9IHtcbiAgICBub3c6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChEYXRlKS5ub3coKTtcbiAgICB9fTtcblxudmFyIEFjdGlvbiA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEFjdGlvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBBY3Rpb24oc2NoZWR1bGVyLCB3b3JrKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBBY3Rpb24ucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24gKHN0YXRlLCBkZWxheSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBBY3Rpb247XG59KFN1YnNjcmlwdGlvbikpO1xuXG52YXIgaW50ZXJ2YWxQcm92aWRlciA9IHtcbiAgICBzZXRJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZXIsIHRpbWVvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldEludGVydmFsLmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbaGFuZGxlciwgdGltZW91dF0sIF9fcmVhZChhcmdzKSkpO1xuICAgIH0sXG4gICAgY2xlYXJJbnRlcnZhbDogZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICByZXR1cm4gKGNsZWFySW50ZXJ2YWwpKGhhbmRsZSk7XG4gICAgfSxcbiAgICBkZWxlZ2F0ZTogdW5kZWZpbmVkLFxufTtcblxudmFyIEFzeW5jQWN0aW9uID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXN5bmNBY3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXN5bmNBY3Rpb24oc2NoZWR1bGVyLCB3b3JrKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHNjaGVkdWxlciwgd29yaykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyO1xuICAgICAgICBfdGhpcy53b3JrID0gd29yaztcbiAgICAgICAgX3RoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uIChzdGF0ZSwgZGVsYXkpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoZGVsYXkgPT09IHZvaWQgMCkgeyBkZWxheSA9IDA7IH1cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgICAgIHZhciBpZCA9IHRoaXMuaWQ7XG4gICAgICAgIHZhciBzY2hlZHVsZXIgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKHNjaGVkdWxlciwgaWQsIGRlbGF5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmRlbGF5ID0gZGVsYXk7XG4gICAgICAgIHRoaXMuaWQgPSAoX2EgPSB0aGlzLmlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLnJlcXVlc3RBc3luY0lkKHNjaGVkdWxlciwgdGhpcy5pZCwgZGVsYXkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZCA9IGZ1bmN0aW9uIChzY2hlZHVsZXIsIF9pZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBpbnRlcnZhbFByb3ZpZGVyLnNldEludGVydmFsKHNjaGVkdWxlci5mbHVzaC5iaW5kKHNjaGVkdWxlciwgdGhpcyksIGRlbGF5KTtcbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZCA9IGZ1bmN0aW9uIChfc2NoZWR1bGVyLCBpZCwgZGVsYXkpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIGlmIChkZWxheSAhPSBudWxsICYmIHRoaXMuZGVsYXkgPT09IGRlbGF5ICYmIHRoaXMucGVuZGluZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW50ZXJ2YWxQcm92aWRlci5jbGVhckludGVydmFsKGlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgQXN5bmNBY3Rpb24ucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoc3RhdGUsIGRlbGF5KSB7XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcignZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlO1xuICAgICAgICB2YXIgZXJyb3IgPSB0aGlzLl9leGVjdXRlKHN0YXRlLCBkZWxheSk7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGVuZGluZyA9PT0gZmFsc2UgJiYgdGhpcy5pZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlciwgdGhpcy5pZCwgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS5fZXhlY3V0ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgX2RlbGF5KSB7XG4gICAgICAgIHZhciBlcnJvcmVkID0gZmFsc2U7XG4gICAgICAgIHZhciBlcnJvclZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy53b3JrKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZXJyb3JlZCA9IHRydWU7XG4gICAgICAgICAgICBlcnJvclZhbHVlID0gZSA/IGUgOiBuZXcgRXJyb3IoJ1NjaGVkdWxlZCBhY3Rpb24gdGhyZXcgZmFsc3kgZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JlZCkge1xuICAgICAgICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFzeW5jQWN0aW9uLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgaWQgPSBfYS5pZCwgc2NoZWR1bGVyID0gX2Euc2NoZWR1bGVyO1xuICAgICAgICAgICAgdmFyIGFjdGlvbnMgPSBzY2hlZHVsZXIuYWN0aW9ucztcbiAgICAgICAgICAgIHRoaXMud29yayA9IHRoaXMuc3RhdGUgPSB0aGlzLnNjaGVkdWxlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGFyclJlbW92ZShhY3Rpb25zLCB0aGlzKTtcbiAgICAgICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQoc2NoZWR1bGVyLCBpZCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRlbGF5ID0gbnVsbDtcbiAgICAgICAgICAgIF9zdXBlci5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEFzeW5jQWN0aW9uO1xufShBY3Rpb24pKTtcblxudmFyIFNjaGVkdWxlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2NoZWR1bGVyKHNjaGVkdWxlckFjdGlvbkN0b3IsIG5vdykge1xuICAgICAgICBpZiAobm93ID09PSB2b2lkIDApIHsgbm93ID0gU2NoZWR1bGVyLm5vdzsgfVxuICAgICAgICB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSBzY2hlZHVsZXJBY3Rpb25DdG9yO1xuICAgICAgICB0aGlzLm5vdyA9IG5vdztcbiAgICB9XG4gICAgU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uICh3b3JrLCBkZWxheSwgc3RhdGUpIHtcbiAgICAgICAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHsgZGVsYXkgPSAwOyB9XG4gICAgICAgIHJldHVybiBuZXcgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yKHRoaXMsIHdvcmspLnNjaGVkdWxlKHN0YXRlLCBkZWxheSk7XG4gICAgfTtcbiAgICBTY2hlZHVsZXIubm93ID0gZGF0ZVRpbWVzdGFtcFByb3ZpZGVyLm5vdztcbiAgICByZXR1cm4gU2NoZWR1bGVyO1xufSgpKTtcblxudmFyIEFzeW5jU2NoZWR1bGVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXN5bmNTY2hlZHVsZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXN5bmNTY2hlZHVsZXIoU2NoZWR1bGVyQWN0aW9uLCBub3cpIHtcbiAgICAgICAgaWYgKG5vdyA9PT0gdm9pZCAwKSB7IG5vdyA9IFNjaGVkdWxlci5ub3c7IH1cbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgU2NoZWR1bGVyQWN0aW9uLCBub3cpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmFjdGlvbnMgPSBbXTtcbiAgICAgICAgX3RoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEFzeW5jU2NoZWR1bGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uIChhY3Rpb24pIHtcbiAgICAgICAgdmFyIGFjdGlvbnMgPSB0aGlzLmFjdGlvbnM7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlcnJvcjtcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKChlcnJvciA9IGFjdGlvbi5leGVjdXRlKGFjdGlvbi5zdGF0ZSwgYWN0aW9uLmRlbGF5KSkpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoKGFjdGlvbiA9IGFjdGlvbnMuc2hpZnQoKSkpO1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICB3aGlsZSAoKGFjdGlvbiA9IGFjdGlvbnMuc2hpZnQoKSkpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gQXN5bmNTY2hlZHVsZXI7XG59KFNjaGVkdWxlcikpO1xuXG52YXIgYXN5bmNTY2hlZHVsZXIgPSBuZXcgQXN5bmNTY2hlZHVsZXIoQXN5bmNBY3Rpb24pO1xuXG52YXIgaXNBcnJheUxpa2UgPSAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggJiYgdHlwZW9mIHgubGVuZ3RoID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgeCAhPT0gJ2Z1bmN0aW9uJzsgfSk7XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSh2YWx1ZSkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWx1ZS50aGVuKTtcbn1cblxuZnVuY3Rpb24gaXNJbnRlcm9wT2JzZXJ2YWJsZShpbnB1dCkge1xuICAgIHJldHVybiBpc0Z1bmN0aW9uKGlucHV0W29ic2VydmFibGVdKTtcbn1cblxuZnVuY3Rpb24gaXNBc3luY0l0ZXJhYmxlKG9iaikge1xuICAgIHJldHVybiBTeW1ib2wuYXN5bmNJdGVyYXRvciAmJiBpc0Z1bmN0aW9uKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9ialtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVJbnZhbGlkT2JzZXJ2YWJsZVR5cGVFcnJvcihpbnB1dCkge1xuICAgIHJldHVybiBuZXcgVHlwZUVycm9yKFwiWW91IHByb3ZpZGVkIFwiICsgKGlucHV0ICE9PSBudWxsICYmIHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgPyAnYW4gaW52YWxpZCBvYmplY3QnIDogXCInXCIgKyBpbnB1dCArIFwiJ1wiKSArIFwiIHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21pc2UsIFJlYWRhYmxlU3RyZWFtLCBBcnJheSwgQXN5bmNJdGVyYWJsZSwgb3IgSXRlcmFibGUuXCIpO1xufVxuXG5mdW5jdGlvbiBnZXRTeW1ib2xJdGVyYXRvcigpIHtcbiAgICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCAhU3ltYm9sLml0ZXJhdG9yKSB7XG4gICAgICAgIHJldHVybiAnQEBpdGVyYXRvcic7XG4gICAgfVxuICAgIHJldHVybiBTeW1ib2wuaXRlcmF0b3I7XG59XG52YXIgaXRlcmF0b3IgPSBnZXRTeW1ib2xJdGVyYXRvcigpO1xuXG5mdW5jdGlvbiBpc0l0ZXJhYmxlKGlucHV0KSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oaW5wdXQgPT09IG51bGwgfHwgaW5wdXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGlucHV0W2l0ZXJhdG9yXSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtTGlrZVRvQXN5bmNHZW5lcmF0b3IocmVhZGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gX19hc3luY0dlbmVyYXRvcih0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtTGlrZVRvQXN5bmNHZW5lcmF0b3JfMSgpIHtcbiAgICAgICAgdmFyIHJlYWRlciwgX2EsIHZhbHVlLCBkb25lO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICByZWFkZXIgPSByZWFkYWJsZVN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAxO1xuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFsxLCAsIDksIDEwXSk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMjtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgX19hd2FpdChyZWFkZXIucmVhZCgpKV07XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBfYSA9IF9iLnNlbnQoKSwgdmFsdWUgPSBfYS52YWx1ZSwgZG9uZSA9IF9hLmRvbmU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZG9uZSkgcmV0dXJuIFszLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBfX2F3YWl0KHZvaWQgMCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyLCBfYi5zZW50KCldO1xuICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFs0LCBfX2F3YWl0KHZhbHVlKV07XG4gICAgICAgICAgICAgICAgY2FzZSA2OiByZXR1cm4gWzQsIF9iLnNlbnQoKV07XG4gICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMl07XG4gICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzMsIDEwXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWxlYXNlTG9jaygpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICAgICAgICAgIGNhc2UgMTA6IHJldHVybiBbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gaXNSZWFkYWJsZVN0cmVhbUxpa2Uob2JqKSB7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24ob2JqID09PSBudWxsIHx8IG9iaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb2JqLmdldFJlYWRlcik7XG59XG5cbmZ1bmN0aW9uIGlubmVyRnJvbShpbnB1dCkge1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgIH1cbiAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoaXNJbnRlcm9wT2JzZXJ2YWJsZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tSW50ZXJvcE9ic2VydmFibGUoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FycmF5TGlrZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcm9taXNlKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21Qcm9taXNlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNBc3luY0l0ZXJhYmxlKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21Bc3luY0l0ZXJhYmxlKGlucHV0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNJdGVyYWJsZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tSXRlcmFibGUoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1JlYWRhYmxlU3RyZWFtTGlrZShpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tUmVhZGFibGVTdHJlYW1MaWtlKGlucHV0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBjcmVhdGVJbnZhbGlkT2JzZXJ2YWJsZVR5cGVFcnJvcihpbnB1dCk7XG59XG5mdW5jdGlvbiBmcm9tSW50ZXJvcE9ic2VydmFibGUob2JqKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHZhciBvYnMgPSBvYmpbb2JzZXJ2YWJsZV0oKTtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob2JzLnN1YnNjcmliZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnMuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlJyk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBmcm9tQXJyYXlMaWtlKGFycmF5KSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoICYmICFzdWJzY3JpYmVyLmNsb3NlZDsgaSsrKSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoYXJyYXlbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21Qcm9taXNlKHByb21pc2UpIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gKHN1YnNjcmliZXIpIHtcbiAgICAgICAgcHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoIXN1YnNjcmliZXIuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHsgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZXJyKTsgfSlcbiAgICAgICAgICAgIC50aGVuKG51bGwsIHJlcG9ydFVuaGFuZGxlZEVycm9yKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21JdGVyYWJsZShpdGVyYWJsZSkge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGl0ZXJhYmxlXzEgPSBfX3ZhbHVlcyhpdGVyYWJsZSksIGl0ZXJhYmxlXzFfMSA9IGl0ZXJhYmxlXzEubmV4dCgpOyAhaXRlcmFibGVfMV8xLmRvbmU7IGl0ZXJhYmxlXzFfMSA9IGl0ZXJhYmxlXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gaXRlcmFibGVfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHN1YnNjcmliZXIuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYWJsZV8xXzEgJiYgIWl0ZXJhYmxlXzFfMS5kb25lICYmIChfYSA9IGl0ZXJhYmxlXzEucmV0dXJuKSkgX2EuY2FsbChpdGVyYWJsZV8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBmcm9tQXN5bmNJdGVyYWJsZShhc3luY0l0ZXJhYmxlKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gICAgICAgIHByb2Nlc3MoYXN5bmNJdGVyYWJsZSwgc3Vic2NyaWJlcikuY2F0Y2goZnVuY3Rpb24gKGVycikgeyByZXR1cm4gc3Vic2NyaWJlci5lcnJvcihlcnIpOyB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21SZWFkYWJsZVN0cmVhbUxpa2UocmVhZGFibGVTdHJlYW0pIHtcbiAgICByZXR1cm4gZnJvbUFzeW5jSXRlcmFibGUocmVhZGFibGVTdHJlYW1MaWtlVG9Bc3luY0dlbmVyYXRvcihyZWFkYWJsZVN0cmVhbSkpO1xufVxuZnVuY3Rpb24gcHJvY2Vzcyhhc3luY0l0ZXJhYmxlLCBzdWJzY3JpYmVyKSB7XG4gICAgdmFyIGFzeW5jSXRlcmFibGVfMSwgYXN5bmNJdGVyYWJsZV8xXzE7XG4gICAgdmFyIGVfMiwgX2E7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdmFsdWUsIGVfMl8xO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9iLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBfYi50cnlzLnB1c2goWzAsIDUsIDYsIDExXSk7XG4gICAgICAgICAgICAgICAgICAgIGFzeW5jSXRlcmFibGVfMSA9IF9fYXN5bmNWYWx1ZXMoYXN5bmNJdGVyYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIF9iLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBbNCwgYXN5bmNJdGVyYWJsZV8xLm5leHQoKV07XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIShhc3luY0l0ZXJhYmxlXzFfMSA9IF9iLnNlbnQoKSwgIWFzeW5jSXRlcmFibGVfMV8xLmRvbmUpKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzeW5jSXRlcmFibGVfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3Vic2NyaWJlci5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX2IubGFiZWwgPSAzO1xuICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFszLCAxXTtcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgZV8yXzEgPSBfYi5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMTFdO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgX2IudHJ5cy5wdXNoKFs2LCAsIDksIDEwXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGFzeW5jSXRlcmFibGVfMV8xICYmICFhc3luY0l0ZXJhYmxlXzFfMS5kb25lICYmIChfYSA9IGFzeW5jSXRlcmFibGVfMS5yZXR1cm4pKSkgcmV0dXJuIFszLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBfYS5jYWxsKGFzeW5jSXRlcmFibGVfMSldO1xuICAgICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICAgICAgX2Iuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBfYi5sYWJlbCA9IDg7XG4gICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzMsIDEwXTtcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs3XTtcbiAgICAgICAgICAgICAgICBjYXNlIDEwOiByZXR1cm4gWzddO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVTY2hlZHVsZShwYXJlbnRTdWJzY3JpcHRpb24sIHNjaGVkdWxlciwgd29yaywgZGVsYXksIHJlcGVhdCkge1xuICAgIGlmIChkZWxheSA9PT0gdm9pZCAwKSB7IGRlbGF5ID0gMDsgfVxuICAgIGlmIChyZXBlYXQgPT09IHZvaWQgMCkgeyByZXBlYXQgPSBmYWxzZTsgfVxuICAgIHZhciBzY2hlZHVsZVN1YnNjcmlwdGlvbiA9IHNjaGVkdWxlci5zY2hlZHVsZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdvcmsoKTtcbiAgICAgICAgaWYgKHJlcGVhdCkge1xuICAgICAgICAgICAgcGFyZW50U3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNjaGVkdWxlKG51bGwsIGRlbGF5KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9LCBkZWxheSk7XG4gICAgcGFyZW50U3Vic2NyaXB0aW9uLmFkZChzY2hlZHVsZVN1YnNjcmlwdGlvbik7XG4gICAgaWYgKCFyZXBlYXQpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVkdWxlU3Vic2NyaXB0aW9uO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdGhyb3dFcnJvcihlcnJvck9yRXJyb3JGYWN0b3J5LCBzY2hlZHVsZXIpIHtcbiAgICB2YXIgZXJyb3JGYWN0b3J5ID0gaXNGdW5jdGlvbihlcnJvck9yRXJyb3JGYWN0b3J5KSA/IGVycm9yT3JFcnJvckZhY3RvcnkgOiBmdW5jdGlvbiAoKSB7IHJldHVybiBlcnJvck9yRXJyb3JGYWN0b3J5OyB9O1xuICAgIHZhciBpbml0ID0gZnVuY3Rpb24gKHN1YnNjcmliZXIpIHsgcmV0dXJuIHN1YnNjcmliZXIuZXJyb3IoZXJyb3JGYWN0b3J5KCkpOyB9O1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShpbml0KTtcbn1cblxudmFyIEVtcHR5RXJyb3IgPSBjcmVhdGVFcnJvckNsYXNzKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gRW1wdHlFcnJvckltcGwoKSB7XG4gICAgICAgIF9zdXBlcih0aGlzKTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ0VtcHR5RXJyb3InO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSAnbm8gZWxlbWVudHMgaW4gc2VxdWVuY2UnO1xuICAgIH07XG59KTtcblxuZnVuY3Rpb24gbGFzdFZhbHVlRnJvbShzb3VyY2UsIGNvbmZpZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciBfaGFzVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdmFyIF92YWx1ZTtcbiAgICAgICAgc291cmNlLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBfdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBfaGFzVmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChfaGFzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShfdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFbXB0eUVycm9yKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkRGF0ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKHZhbHVlKTtcbn1cblxudmFyIFRpbWVvdXRFcnJvciA9IGNyZWF0ZUVycm9yQ2xhc3MoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIHJldHVybiBmdW5jdGlvbiBUaW1lb3V0RXJyb3JJbXBsKGluZm8pIHtcbiAgICAgICAgaWYgKGluZm8gPT09IHZvaWQgMCkgeyBpbmZvID0gbnVsbDsgfVxuICAgICAgICBfc3VwZXIodGhpcyk7XG4gICAgICAgIHRoaXMubWVzc2FnZSA9ICdUaW1lb3V0IGhhcyBvY2N1cnJlZCc7XG4gICAgICAgIHRoaXMubmFtZSA9ICdUaW1lb3V0RXJyb3InO1xuICAgICAgICB0aGlzLmluZm8gPSBpbmZvO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIHRpbWVvdXQoY29uZmlnLCBzY2hlZHVsZXJBcmcpIHtcbiAgICB2YXIgX2EgPSAoaXNWYWxpZERhdGUoY29uZmlnKSA/IHsgZmlyc3Q6IGNvbmZpZyB9IDogdHlwZW9mIGNvbmZpZyA9PT0gJ251bWJlcicgPyB7IGVhY2g6IGNvbmZpZyB9IDogY29uZmlnKSwgZmlyc3QgPSBfYS5maXJzdCwgZWFjaCA9IF9hLmVhY2gsIF9iID0gX2Eud2l0aCwgX3dpdGggPSBfYiA9PT0gdm9pZCAwID8gdGltZW91dEVycm9yRmFjdG9yeSA6IF9iLCBfYyA9IF9hLnNjaGVkdWxlciwgc2NoZWR1bGVyID0gX2MgPT09IHZvaWQgMCA/IGFzeW5jU2NoZWR1bGVyIDogX2MsIF9kID0gX2EubWV0YSwgbWV0YSA9IF9kID09PSB2b2lkIDAgPyBudWxsIDogX2Q7XG4gICAgaWYgKGZpcnN0ID09IG51bGwgJiYgZWFjaCA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ05vIHRpbWVvdXQgcHJvdmlkZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiBvcGVyYXRlKGZ1bmN0aW9uIChzb3VyY2UsIHN1YnNjcmliZXIpIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsU291cmNlU3Vic2NyaXB0aW9uO1xuICAgICAgICB2YXIgdGltZXJTdWJzY3JpcHRpb247XG4gICAgICAgIHZhciBsYXN0VmFsdWUgPSBudWxsO1xuICAgICAgICB2YXIgc2VlbiA9IDA7XG4gICAgICAgIHZhciBzdGFydFRpbWVyID0gZnVuY3Rpb24gKGRlbGF5KSB7XG4gICAgICAgICAgICB0aW1lclN1YnNjcmlwdGlvbiA9IGV4ZWN1dGVTY2hlZHVsZShzdWJzY3JpYmVyLCBzY2hlZHVsZXIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFNvdXJjZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICBpbm5lckZyb20oX3dpdGgoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YTogbWV0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RWYWx1ZTogbGFzdFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbjogc2VlbixcbiAgICAgICAgICAgICAgICAgICAgfSkpLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZGVsYXkpO1xuICAgICAgICB9O1xuICAgICAgICBvcmlnaW5hbFNvdXJjZVN1YnNjcmlwdGlvbiA9IHNvdXJjZS5zdWJzY3JpYmUoY3JlYXRlT3BlcmF0b3JTdWJzY3JpYmVyKHN1YnNjcmliZXIsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgdGltZXJTdWJzY3JpcHRpb24gPT09IG51bGwgfHwgdGltZXJTdWJzY3JpcHRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBzZWVuKys7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQoKGxhc3RWYWx1ZSA9IHZhbHVlKSk7XG4gICAgICAgICAgICBlYWNoID4gMCAmJiBzdGFydFRpbWVyKGVhY2gpO1xuICAgICAgICB9LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCEodGltZXJTdWJzY3JpcHRpb24gPT09IG51bGwgfHwgdGltZXJTdWJzY3JpcHRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRpbWVyU3Vic2NyaXB0aW9uLmNsb3NlZCkpIHtcbiAgICAgICAgICAgICAgICB0aW1lclN1YnNjcmlwdGlvbiA9PT0gbnVsbCB8fCB0aW1lclN1YnNjcmlwdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RWYWx1ZSA9IG51bGw7XG4gICAgICAgIH0pKTtcbiAgICAgICAgIXNlZW4gJiYgc3RhcnRUaW1lcihmaXJzdCAhPSBudWxsID8gKHR5cGVvZiBmaXJzdCA9PT0gJ251bWJlcicgPyBmaXJzdCA6ICtmaXJzdCAtIHNjaGVkdWxlci5ub3coKSkgOiBlYWNoKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHRpbWVvdXRFcnJvckZhY3RvcnkoaW5mbykge1xuICAgIHRocm93IG5ldyBUaW1lb3V0RXJyb3IoaW5mbyk7XG59XG5cbmNsYXNzIExvYWRlZE9uY2VQdWJsaXNoZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNldCA9ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2FkZWRPbmNlIGlzIGFscmVhZHkgaW4gc3VjY2VzcyBzdGF0ZVwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2N1cnJlbnQgPSB7IHN0YXR1czogXCJzdWNjZXNzXCIsIGlzU3VjY2VzczogdHJ1ZSwgbG9hZGVkVmFsdWU6IHZhbHVlIH07XG4gICAgICB0aGlzLl9zdWJqZWN0Lm5leHQodmFsdWUpO1xuICAgICAgdGhpcy5fc3ViamVjdC5jb21wbGV0ZSgpO1xuICAgIH07XG4gICAgdGhpcy50aHJvdyA9IChlcnJvciwgZXJyTXNnKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcImVycm9yXCIsIGlzU3VjY2VzczogZmFsc2UsIGVycm9yLCBlcnJNc2cgfTtcbiAgICAgIHRoaXMuX3N1YmplY3QuZXJyb3IoZXJyb3IpO1xuICAgIH07XG4gICAgdGhpcy5nZXRWYWx1ZUlmTG9hZGVkRWxzZSA9ICh2YWx1ZUlmTm90TG9hZGVkKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSByZXR1cm4gdGhpcy5fY3VycmVudC5sb2FkZWRWYWx1ZTtcbiAgICAgIHJldHVybiB2YWx1ZUlmTm90TG9hZGVkO1xuICAgIH07XG4gICAgdGhpcy5zdWJzY3JpYmUgPSAoZm4pID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgICAgZm4odGhpcy5fY3VycmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJlcnJvclwiKSB7XG4gICAgICAgIGZuKHRoaXMuX2N1cnJlbnQpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZSAobmV4dCk6IHBsZWFzZSBtYWtlIHN1cmUgdG8gdXBkYXRlIF9jdXJyZW50IGJlZm9yZSB0aGUgc3ViamVjdFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm4odGhpcy5fY3VycmVudCk7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcImVycm9yXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGUgKGVycm9yKTogcGxlYXNlIG1ha2Ugc3VyZSB0byB1cGRhdGUgX2N1cnJlbnQgYmVmb3JlIHRoZSBzdWJqZWN0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbih0aGlzLl9jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLndhaXRGb3JMb2FkID0gKHRpbWVvdXRDb25maWcpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fY3VycmVudC5sb2FkZWRWYWx1ZSk7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwiZXJyb3JcIikgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoaXMuX2N1cnJlbnQuZXJyb3IpO1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcImluaXRpYWxcIikgYXNzZXJ0TmV2ZXIodGhpcy5fY3VycmVudCk7XG4gICAgICBjb25zdCB0aW1lb3V0UGFyYW1zID0ge1xuICAgICAgICBmaXJzdDogdGltZW91dENvbmZpZy50aW1lb3V0U2VjICogMWUzLFxuICAgICAgICB3aXRoOiAoKSA9PiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcih0aW1lb3V0Q29uZmlnLnRpbWVvdXRFcnJNc2cpKVxuICAgICAgfTtcbiAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuX3N1YmplY3QucGlwZSh0aW1lb3V0KHRpbWVvdXRQYXJhbXMpKSk7XG4gICAgfTtcbiAgICB0aGlzLl9jdXJyZW50ID0geyBzdGF0dXM6IFwiaW5pdGlhbFwiLCBpc1N1Y2Nlc3M6IGZhbHNlIH07XG4gICAgdGhpcy5fc3ViamVjdCA9IG5ldyBTdWJqZWN0KCk7XG4gIH1cbiAgZ2V0IGN1cnJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQ7XG4gIH1cbn1cblxueiQxLmVudW0oW1wiZGV2XCIsIFwic3RnXCIsIFwicHJvZFwiXSk7XG5jb25zdCBjb25udG9CYXNlVXJscyA9IHtcbiAgcHJvZDogXCJodHRwczovL2Nvbm50by5nZXRvcGVucGF5LmNvbVwiLFxuICBzdGc6IFwiaHR0cHM6Ly9jb25udG8ub3BlbnBheXN0YWdpbmcuY29tXCIsXG4gIGRldjogXCJodHRwOi8vbG9jYWxob3N0OjgwMDBcIlxufTtcbmNvbnN0IGdldENvbm50b1VybCA9IChlbnYpID0+IHtcbiAgcmV0dXJuIGNvbm50b0Jhc2VVcmxzW2Vudl07XG59O1xuXG5mdW5jdGlvbiBhc3NlcnROZXZlcih2YWx1ZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBjYXNlOiAke3ZhbHVlfWApO1xufVxuY29uc3QgZ2V0V2luZG93U2FmZSA9ICgpID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIHJldHVybiB3aW5kb3c7XG59O1xuXG5jb25zdCBtZXRyaWNzUHVibGlzaGVyID0gbmV3IExvYWRlZE9uY2VQdWJsaXNoZXIoKTtcbmNvbnN0IE1FVFJJQ1NfUVVFVUVfS0VZID0gXCJvcF9tZXRyaWNzX3F1ZXVlXCI7XG5jb25zdCBNQVhfUkVUUllfQVRURU1QVFMgPSAzO1xuY29uc3QgQkFUQ0hfU0laRSA9IDM7XG5jb25zdCBCQVRDSF9JTlRFUlZBTF9NUyA9IDFlMztcbmNvbnN0IHsgbG9nX186IGxvZ19fJDEgfSA9IGNyZWF0ZU9qc0Zsb3dMb2dnZXJzKFwib3AtbWV0cmljc1wiKTtcbmNsYXNzIE1ldHJpY3NRdWV1ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucXVldWUgPSBbXTtcbiAgICB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9IGZhbHNlO1xuICAgIHRoaXMuYmF0Y2hUaW1lb3V0ID0gbnVsbDtcbiAgICB0aGlzLmxhc3RFdmVudFRpbWVzdGFtcCA9IDA7XG4gICAgdGhpcy5vZmZsaW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBsb2dfXyQxKFwiTmV0d29yayBvZmZsaW5lLCBtZXRyaWNzIHdpbGwgYmUgcXVldWVkXCIpO1xuICAgICAgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICB9O1xuICAgIHRoaXMub25saW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBsb2dfXyQxKFwiTmV0d29yayBvbmxpbmUsIHByb2Nlc3NpbmcgbWV0cmljcyBxdWV1ZVwiKTtcbiAgICAgIHRoaXMucHJvY2Vzc1F1ZXVlKCk7XG4gICAgfTtcbiAgICB0aGlzLmxvYWRRdWV1ZUZyb21TdG9yYWdlKCk7XG4gICAgZ2V0V2luZG93U2FmZSgpPy5hZGRFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCB0aGlzLm9mZmxpbmVMaXN0ZW5lcik7XG4gICAgZ2V0V2luZG93U2FmZSgpPy5hZGRFdmVudExpc3RlbmVyKFwib25saW5lXCIsIHRoaXMub25saW5lTGlzdGVuZXIpO1xuICB9XG4gIGFkZEV2ZW50KGV2ZW50TmFtZSwgcHJvcGVydGllcywgY29udGV4dFByb3BlcnRpZXMpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50TmFtZSxcbiAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMgfHwge30sXG4gICAgICBjb250ZXh0UHJvcGVydGllczogY29udGV4dFByb3BlcnRpZXMgfHwge30sXG4gICAgICBub25jZTogdjQoKSxcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgIGRhdGV0aW1lOiAoLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCksXG4gICAgICBhdHRlbXB0Q291bnQ6IDAsXG4gICAgICB0aW1lRGlmZkZyb21QcmV2aW91c0V2ZW50OiB0aGlzLmxhc3RFdmVudFRpbWVzdGFtcCA/IERhdGUubm93KCkgLSB0aGlzLmxhc3RFdmVudFRpbWVzdGFtcCA6IDBcbiAgICB9O1xuICAgIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID0gZXZlbnQudGltZXN0YW1wO1xuICAgIHRoaXMucXVldWUucHVzaChldmVudCk7XG4gICAgdGhpcy5zYXZlUXVldWVUb1N0b3JhZ2UoKTtcbiAgICB0aGlzLnNjaGVkdWxlQmF0Y2hQcm9jZXNzaW5nKCk7XG4gIH1cbiAgbG9hZFF1ZXVlRnJvbVN0b3JhZ2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JlZFF1ZXVlID0gZ2V0V2luZG93U2FmZSgpPy5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oTUVUUklDU19RVUVVRV9LRVkpO1xuICAgICAgaWYgKHN0b3JlZFF1ZXVlKSB7XG4gICAgICAgIHRoaXMucXVldWUgPSBKU09OLnBhcnNlKHN0b3JlZFF1ZXVlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5xdWV1ZSA9IFtdO1xuICAgICAgdGhpcy5zYXZlUXVldWVUb1N0b3JhZ2UoKTtcbiAgICB9XG4gIH1cbiAgc2F2ZVF1ZXVlVG9TdG9yYWdlKCkge1xuICAgIGdldFdpbmRvd1NhZmUoKT8ubG9jYWxTdG9yYWdlLnNldEl0ZW0oTUVUUklDU19RVUVVRV9LRVksIEpTT04uc3RyaW5naWZ5KHRoaXMucXVldWUpKTtcbiAgfVxuICBzY2hlZHVsZUJhdGNoUHJvY2Vzc2luZygpIHtcbiAgICBjb25zdCBzYWZlV2luZG93ID0gZ2V0V2luZG93U2FmZSgpO1xuICAgIGlmIChzYWZlV2luZG93ICYmIG5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMucHJvY2Vzc2luZ1F1ZXVlICYmIHRoaXMucXVldWUubGVuZ3RoID4gMCAmJiAhdGhpcy5iYXRjaFRpbWVvdXQpIHtcbiAgICAgIHRoaXMuYmF0Y2hUaW1lb3V0ID0gc2FmZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5iYXRjaFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgICAgfSwgQkFUQ0hfSU5URVJWQUxfTVMpO1xuICAgIH1cbiAgfVxuICBjYW5jZWxCYXRjaFByb2Nlc3NpbmcoKSB7XG4gICAgaWYgKHRoaXMuYmF0Y2hUaW1lb3V0KSB7XG4gICAgICBnZXRXaW5kb3dTYWZlKCk/LmNsZWFyVGltZW91dCh0aGlzLmJhdGNoVGltZW91dCk7XG4gICAgICB0aGlzLmJhdGNoVGltZW91dCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gZmFsc2U7XG4gIH1cbiAgcHJvY2Vzc1F1ZXVlKCkge1xuICAgIGlmICghbmF2aWdhdG9yLm9uTGluZSB8fCB0aGlzLnByb2Nlc3NpbmdRdWV1ZSB8fCB0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9IHRydWU7XG4gICAgdGhpcy5zZW5kQmF0Y2goKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc2luZ1F1ZXVlID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5xdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBhc3luYyBzZW5kQmF0Y2goKSB7XG4gICAgaWYgKHRoaXMucXVldWUubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgY29udGV4dCA9IG1ldHJpY3NQdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2Uodm9pZCAwKTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIGxvZ19fJDEoXCJNZXRyaWNzIGNvbnRleHQgbm90IGF2YWlsYWJsZSwgd2lsbCByZXRyeSBsYXRlclwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYmF0Y2ggPSB0aGlzLnF1ZXVlLnNsaWNlKDAsIEJBVENIX1NJWkUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXRjaFBheWxvYWQgPSB7XG4gICAgICAgIGV2ZW50czogYmF0Y2gubWFwKChldmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBldmVudF9uYW1lOiBldmVudC5ldmVudE5hbWUsXG4gICAgICAgICAgICBkZXZpY2VfdG9rZW46IGNvbnRleHQuZGV2aWNlVG9rZW4sXG4gICAgICAgICAgICBjb250ZXh0X3Byb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgLi4uY29udGV4dCxcbiAgICAgICAgICAgICAgLi4uZXZlbnQuY29udGV4dFByb3BlcnRpZXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIG5vbmNlOiBldmVudC5ub25jZSxcbiAgICAgICAgICAgICAgZGF0ZXRpbWU6IGV2ZW50LmRhdGV0aW1lLFxuICAgICAgICAgICAgICB0aW1lc3RhbXA6IGV2ZW50LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgdGltZV9kaWZmX2Zyb21fcHJldmlvdXNfZXZlbnQ6IGV2ZW50LnRpbWVEaWZmRnJvbVByZXZpb3VzRXZlbnQsXG4gICAgICAgICAgICAgIGNoZWNrb3V0X3NlY3VyZV90b2tlbjogY29udGV4dC5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgICAgICAuLi5ldmVudC5wcm9wZXJ0aWVzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgICBjb25zdCBjb25udG9VcmwgPSBnZXRDb25udG9VcmwoY29udGV4dC5lbnZpcm9ubWVudCk7XG4gICAgICBjb25zdCBtZXRyaWNzUm91dGVyID0gbmV3IFVSTChcIi9tZXRyaWNzL3B1YmxpYy9jYXB0dXJlXCIsIGNvbm50b1VybCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKG1ldHJpY3NSb3V0ZXIudG9TdHJpbmcoKSwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYmF0Y2hQYXlsb2FkKSxcbiAgICAgICAga2VlcGFsaXZlOiB0cnVlXG4gICAgICAgIC8vIFRvIHNlbmQgZXZlbnRzIGV2ZW4gaWYgdGhlIHBhZ2UgaXMgdW5sb2FkZWRcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRoaXMucXVldWUgPSB0aGlzLnF1ZXVlLnNsaWNlKGJhdGNoLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuc2F2ZVF1ZXVlVG9TdG9yYWdlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhhbmRsZUZhaWxlZEJhdGNoKGJhdGNoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nX18kMShcIkVycm9yIHNlbmRpbmcgbWV0cmljcyBiYXRjaDpcIiwgZXJyb3IpO1xuICAgICAgdGhpcy5oYW5kbGVGYWlsZWRCYXRjaChiYXRjaCk7XG4gICAgfVxuICB9XG4gIGhhbmRsZUZhaWxlZEJhdGNoKGJhdGNoKSB7XG4gICAgYmF0Y2guZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgIGV2ZW50LmF0dGVtcHRDb3VudCsrO1xuICAgIH0pO1xuICAgIGNvbnN0IGV2ZW50c1RvS2VlcCA9IGJhdGNoLmZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmF0dGVtcHRDb3VudCA8IE1BWF9SRVRSWV9BVFRFTVBUUyk7XG4gICAgdGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuc2xpY2UoYmF0Y2gubGVuZ3RoKTtcbiAgICB0aGlzLnF1ZXVlID0gWy4uLmV2ZW50c1RvS2VlcCwgLi4udGhpcy5xdWV1ZV07XG4gICAgdGhpcy5zYXZlUXVldWVUb1N0b3JhZ2UoKTtcbiAgfVxuICBjbGVhbnVwKCkge1xuICAgIGdldFdpbmRvd1NhZmUoKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm9mZmxpbmVcIiwgdGhpcy5vZmZsaW5lTGlzdGVuZXIpO1xuICAgIGdldFdpbmRvd1NhZmUoKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCB0aGlzLm9ubGluZUxpc3RlbmVyKTtcbiAgICB0aGlzLmNhbmNlbEJhdGNoUHJvY2Vzc2luZygpO1xuICB9XG59XG5uZXcgTWV0cmljc1F1ZXVlKCk7XG5cbnokMS5vYmplY3Qoe1xuICBzdHJpcGVfcGs6IHokMS5zdHJpbmcoKSxcbiAgY2xpZW50X3NlY3JldDogeiQxLnN0cmluZygpLFxuICBzdHJpcGVfcG1faWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKCksXG4gIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG59KTtcblxuY29uc3QgZXh0cmFjdElzc3Vlc1BlckZpZWxkID0gKGVycm9yKSA9PiB7XG4gIGNvbnN0IGlzc3Vlc1BlckZpZWxkID0ge307XG4gIE9iamVjdC5lbnRyaWVzKGVycm9yKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gRmllbGROYW1lRW51bS5wYXJzZShrZXkpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGlzc3Vlc1BlckZpZWxkW2ZpZWxkTmFtZV0gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZS5fZXJyb3JzKSkge1xuICAgICAgICBpc3N1ZXNQZXJGaWVsZFtmaWVsZE5hbWVdID0gdmFsdWUuX2Vycm9ycztcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gaXNzdWVzUGVyRmllbGQ7XG59O1xuXG5jb25zdCB7IGxvZ19fLCBlcnJfXzogZXJyX18kMSB9ID0gY3JlYXRlT2pzRmxvd0xvZ2dlcnMoXCJjb21tb24tY2NcIik7XG5jb25zdCBjcmVhdGVEeW5hbWljVmFsaWRhdGlvblNjaGVtYSA9ICh7XG4gIHJlcXVpcmVfemlwX2NvZGUsXG4gIHJlcXVpcmVfZnVsbF9iaWxsaW5nX2FkZHJlc3MsXG4gIHJlcXVpcmVfZnVsbF9zaGlwcGluZ19hZGRyZXNzLFxuICBwYXltZW50X21ldGhvZCxcbiAgaXNCdXNpbmVzc1B1cmNoYXNlXG59LCBub25DZGVGb3JtSW5wdXRzKSA9PiB7XG4gIGNvbnN0IGNvbmRpdGlvbmFsRmllbGRzID0ge307XG4gIGlmIChwYXltZW50X21ldGhvZCA9PT0gXCJhY2hcIikge1xuICAgIGNvbmRpdGlvbmFsRmllbGRzW0ZpZWxkTmFtZS5GSVJTVF9OQU1FXSA9IHokMS5zdHJpbmcoKS5taW4oMiwgeyBtZXNzYWdlOiBcIk1pbmltdW0gbGVuZ3RoIGlzIDJcIiB9KTtcbiAgICBjb25kaXRpb25hbEZpZWxkc1tGaWVsZE5hbWUuTEFTVF9OQU1FXSA9IHokMS5zdHJpbmcoKS5taW4oMiwgeyBtZXNzYWdlOiBcIk1pbmltdW0gbGVuZ3RoIGlzIDJcIiB9KTtcbiAgfVxuICBpZiAocmVxdWlyZV96aXBfY29kZSkge1xuICAgIGNvbmRpdGlvbmFsRmllbGRzW0ZpZWxkTmFtZS5aSVBfQ09ERV0gPSBSZXF1aXJlZFN0cmluZztcbiAgfVxuICBpZiAocmVxdWlyZV9mdWxsX2JpbGxpbmdfYWRkcmVzcykge1xuICAgIGNvbmRpdGlvbmFsRmllbGRzW0ZpZWxkTmFtZS5MSU5FMV0gPSBSZXF1aXJlZFN0cmluZztcbiAgICBjb25kaXRpb25hbEZpZWxkc1tGaWVsZE5hbWUuQ0lUWV0gPSBSZXF1aXJlZFN0cmluZztcbiAgICBjb25kaXRpb25hbEZpZWxkc1tGaWVsZE5hbWUuU1RBVEVdID0gUmVxdWlyZWRTdHJpbmc7XG4gICAgY29uZGl0aW9uYWxGaWVsZHNbRmllbGROYW1lLkNPVU5UUlldID0gUmVxdWlyZWRTdHJpbmc7XG4gICAgY29uZGl0aW9uYWxGaWVsZHNbRmllbGROYW1lLlpJUF9DT0RFXSA9IFJlcXVpcmVkU3RyaW5nO1xuICB9XG4gIGlmIChyZXF1aXJlX2Z1bGxfc2hpcHBpbmdfYWRkcmVzcykge1xuICAgIGNvbmRpdGlvbmFsRmllbGRzW0ZpZWxkTmFtZS5TSElQUElOR19MSU5FMV0gPSBSZXF1aXJlZFN0cmluZztcbiAgICBjb25kaXRpb25hbEZpZWxkc1tGaWVsZE5hbWUuU0hJUFBJTkdfQ0lUWV0gPSBSZXF1aXJlZFN0cmluZztcbiAgICBjb25kaXRpb25hbEZpZWxkc1tGaWVsZE5hbWUuU0hJUFBJTkdfU1RBVEVdID0gUmVxdWlyZWRTdHJpbmc7XG4gICAgY29uZGl0aW9uYWxGaWVsZHNbRmllbGROYW1lLlNISVBQSU5HX0NPVU5UUlldID0gUmVxdWlyZWRTdHJpbmc7XG4gICAgY29uZGl0aW9uYWxGaWVsZHNbRmllbGROYW1lLlNISVBQSU5HX1pJUF9DT0RFXSA9IFJlcXVpcmVkU3RyaW5nO1xuICB9XG4gIGlmIChub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5JU19CVVNJTkVTU19QVVJDSEFTRV0gPz8gaXNCdXNpbmVzc1B1cmNoYXNlKSB7XG4gICAgY29uZGl0aW9uYWxGaWVsZHNbRmllbGROYW1lLkJVU0lORVNTX05BTUVdID0gUmVxdWlyZWRTdHJpbmc7XG4gIH1cbiAgaWYgKE9iamVjdC5rZXlzKGNvbmRpdGlvbmFsRmllbGRzKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gUmVxdWlyZWRGb3JtRmllbGRzO1xuICB9XG4gIHJldHVybiBSZXF1aXJlZEZvcm1GaWVsZHMuZXh0ZW5kKGNvbmRpdGlvbmFsRmllbGRzKTtcbn07XG5jb25zdCB2YWxpZGF0ZU5vbkNkZUZvcm1GaWVsZHMgPSAobm9uQ2RlRm9ybUlucHV0cywgb25WYWxpZGF0aW9uRXJyb3IsIGRlZmF1bHRGaWVsZFZhbHVlcyA9IHt9KSA9PiB7XG4gIGlmIChkZWZhdWx0RmllbGRWYWx1ZXMpIHtcbiAgICBsb2dfXyhgUmVjZWl2ZWQgZGVmYXVsdCBmaWVsZCB2YWx1ZXM6ICR7SlNPTi5zdHJpbmdpZnkoZGVmYXVsdEZpZWxkVmFsdWVzKX1gKTtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZGVmYXVsdEZpZWxkVmFsdWVzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBjb25zdCB2YWx1ZSA9IGRlZmF1bHRGaWVsZFZhbHVlc1trZXldO1xuICAgICAgaWYgKCFub25DZGVGb3JtSW5wdXRzW2tleV0pIHtcbiAgICAgICAgbm9uQ2RlRm9ybUlucHV0c1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIG5vbkNkZUZvcm1JbnB1dHNbRmllbGROYW1lLklTX1NISVBQSU5HX1NBTUVfQVNfQklMTElOR10gPSAhIW5vbkNkZUZvcm1JbnB1dHNbRmllbGROYW1lLklTX1NISVBQSU5HX1NBTUVfQVNfQklMTElOR107XG4gIGlmIChub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5JU19TSElQUElOR19TQU1FX0FTX0JJTExJTkddKSB7XG4gICAgbm9uQ2RlRm9ybUlucHV0c1tGaWVsZE5hbWUuU0hJUFBJTkdfTElORTFdID0gbm9uQ2RlRm9ybUlucHV0c1tGaWVsZE5hbWUuTElORTFdO1xuICAgIG5vbkNkZUZvcm1JbnB1dHNbRmllbGROYW1lLlNISVBQSU5HX0xJTkUyXSA9IG5vbkNkZUZvcm1JbnB1dHNbRmllbGROYW1lLkxJTkUyXTtcbiAgICBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5TSElQUElOR19MSU5FM10gPSBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5MSU5FM107XG4gICAgbm9uQ2RlRm9ybUlucHV0c1tGaWVsZE5hbWUuU0hJUFBJTkdfQ0lUWV0gPSBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5DSVRZXTtcbiAgICBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5TSElQUElOR19TVEFURV0gPSBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5TVEFURV07XG4gICAgbm9uQ2RlRm9ybUlucHV0c1tGaWVsZE5hbWUuU0hJUFBJTkdfQ09VTlRSWV0gPSBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5DT1VOVFJZXTtcbiAgICBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5TSElQUElOR19aSVBfQ09ERV0gPSBub25DZGVGb3JtSW5wdXRzW0ZpZWxkTmFtZS5aSVBfQ09ERV07XG4gIH1cbiAgY29uc3QgdmFsaWRhdGlvblNjaGVtYSA9IGNyZWF0ZUR5bmFtaWNWYWxpZGF0aW9uU2NoZW1hKGRlZmF1bHRGaWVsZFZhbHVlcywgbm9uQ2RlRm9ybUlucHV0cyk7XG4gIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRpb25TY2hlbWEuc2FmZVBhcnNlKG5vbkNkZUZvcm1JbnB1dHMpO1xuICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkID0gcmVzdWx0LmVycm9yLmZvcm1hdCgpO1xuICAgIGNvbnN0IGlzc3VlcyA9IGV4dHJhY3RJc3N1ZXNQZXJGaWVsZChmb3JtYXR0ZWQpO1xuICAgIGNvbnN0IGlzc3VlS2V5cyA9IE9iamVjdC5rZXlzKGlzc3Vlcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpc3N1ZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGlzc3VlS2V5c1tpXTtcbiAgICAgIGNvbnN0IGVycm9ycyA9IGlzc3Vlc1tmaWVsZE5hbWVdO1xuICAgICAgb25WYWxpZGF0aW9uRXJyb3IoZmllbGROYW1lLCBlcnJvcnMsIGZpZWxkTmFtZSk7XG4gICAgfVxuICAgIGVycl9fJDEoXCJHb3QgdmFsaWRhdGlvbiBlcnJvcnMgaW4gbm9uLUNERSBmb3JtIGZpZWxkc1wiLCBpc3N1ZXMpO1xuICAgIHRocm93IG5ldyBFcnJvcihcIkFsbW9zdCB0aGVyZSEgSnVzdCBhIGZldyB0aGluZ3MgaGlnaGxpZ2h0ZWQgYWJvdmUgdG8gZml4IGJlZm9yZSB5b3UgY2FuIHN1Ym1pdC5cIik7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5kYXRhO1xufTtcblxuY29uc3QgUGF5bWVudFByb2Nlc3NvciA9IHokMS5lbnVtKFtcInN0cmlwZVwiLCBcImFpcndhbGxleFwiLCBcImF1dGhvcml6ZV9uZXRcIiwgXCJhZHllblwiLCBcInBheXBhbFwiLCBcInBvY2t5dFwiLCBcImxvb3BcIl0pO1xuKHtcbiAgcHJvY2Vzc29yOiBQYXltZW50UHJvY2Vzc29yLkVudW0uc3RyaXBlfSk7XG5cbnokMS5vYmplY3Qoe1xuICBcIm9wLWFpcndhbGxleC0zZHMtdXJsXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1haXJ3YWxsZXgtaW5pdGlhbC1pbnRlbnQtaWRcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLWFpcndhbGxleC1jb25zZW50LWlkXCI6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSk7XG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWlyd2FsbGV4XCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgcHJvY2Vzc29yX2FjY291bnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9uYW1lOiB6JDEuc3RyaW5nKCksXG4gICAgZ29vZ2xlX3BheV9tZXJjaGFudF9pZDogeiQxLnN0cmluZygpLm51bGxpc2goKVxuICB9KVxufSk7XG5jb25zdCBBV1hfTE9BRElORyA9IHtcbiAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICBpc0xvYWRpbmc6IHRydWUsXG4gIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICB9XG59O1xuXG56JDEub2JqZWN0KHtcbiAgZGF0YTogeiQxLm9iamVjdCh7XG4gICAgbWVzc2FnZUhlYWRlcnM6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICAgIGVycm9yczogeiQxLmFycmF5KHokMS5hbnkoKSksXG4gICAgbWVzc2FnZVR5cGU6IHokMS5zdHJpbmcoKSxcbiAgICBtZXNzYWdlQm9keTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSlcbiAgfSksXG4gIG9yaWdpbjogeiQxLmxpdGVyYWwoXCJodHRwczovL2FwcGxlcGF5LmNkbi1hcHBsZS5jb21cIilcbn0pO1xuXG5jb25zdCBBZHllbkVudmlyb25tZW50ID0geiQxLmVudW0oW1widGVzdFwiLCBcImxpdmVcIiwgXCJsaXZlLXVzXCIsIFwibGl2ZS1pblwiLCBcImxpdmUtYXBzZVwiLCBcImxpdmUtYXVcIl0pO1xueiQxLmVudW0oW1xuICBcImFyXCIsXG4gIFwiYmctQkdcIixcbiAgXCJjYS1FU1wiLFxuICBcImNzLUNaXCIsXG4gIFwiZGEtREtcIixcbiAgXCJkZS1ERVwiLFxuICBcImVsLUdSXCIsXG4gIFwiZW4tVVNcIixcbiAgXCJlcy1FU1wiLFxuICBcImV0LUVFXCIsXG4gIFwiZmktRklcIixcbiAgXCJmci1GUlwiLFxuICBcImhyLUhSXCIsXG4gIFwiaHUtSFVcIixcbiAgXCJpcy1JU1wiLFxuICBcIml0LUlUXCIsXG4gIFwiamEtSlBcIixcbiAgXCJrby1LUlwiLFxuICBcImx0LUxUXCIsXG4gIFwibHYtTFZcIixcbiAgXCJubC1OTFwiLFxuICBcIm5vLU5PXCIsXG4gIFwicGwtUExcIixcbiAgXCJwdC1CUlwiLFxuICBcInB0LVBUXCIsXG4gIFwicm8tUk9cIixcbiAgXCJydS1SVVwiLFxuICBcInNrLVNLXCIsXG4gIFwic2wtU0lcIixcbiAgXCJzdi1TRVwiLFxuICBcInpoLUNOXCIsXG4gIFwiemgtVFdcIlxuXSk7XG56JDEub2JqZWN0KHtcbiAgXCJvcC1hY2NvdW50LWlkXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1hZHllbi1jbGllbnQta2V5XCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1hZHllbi1lbnZpcm9ubWVudFwiOiBBZHllbkVudmlyb25tZW50LFxuICBcIm9wLWFkeWVuLWFjdGlvblwiOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWR5ZW5cIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSk7XG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWR5ZW5cIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICBnb29nbGVfcGF5X21lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpXG4gIH0pXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImtsYXJuYVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe30pLm51bGxpc2goKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWlyd2FsbGV4XCIpXG59KTtcblxueiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhdXRob3JpemVfbmV0XCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgcHJvY2Vzc29yX2FjY291bnRfaWQ6IHokMS5zdHJpbmcoKSxcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9uYW1lOiB6JDEuc3RyaW5nKCksXG4gICAgZ29vZ2xlX3BheV9tZXJjaGFudF9pZDogeiQxLnN0cmluZygpLm51bGxpc2goKVxuICB9KVxufSk7XG5cbnokMS5vYmplY3Qoe1xuICBzdGVwX3VwX3VybDogeiQxLnN0cmluZygpLFxuICBhY2Nlc3NfdG9rZW46IHokMS5zdHJpbmcoKSxcbiAgZGRfdXJsOiBudWxsT3JVbmRlZk9yJDEoeiQxLnN0cmluZygpKSxcbiAgZGRfdG9rZW46IG51bGxPclVuZGVmT3IkMSh6JDEuc3RyaW5nKCkpLFxuICBtZXJjaGFudF9kYXRhOiB6JDEuc3RyaW5nKClcbn0pO1xuXG56JDEub2JqZWN0KHtcbiAgXCJvcC1wb2NreXQtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXR4bi1ub1wiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtcG9ja3l0LXJlZi1ub1wiOiB6JDEuc3RyaW5nKClcbn0pO1xuXG56JDEub2JqZWN0KHtcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuXG56JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIG91cl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpXG4gIH0pXG4pLmxlbmd0aCgxKTtcblxueiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImxvb3BcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImNyeXB0b1wiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIG1lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgZW50aXR5X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgYXBpX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gICAgc3VwcG9ydGVkX2N1cnJlbmNpZXM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICAgIGVudmlyb25tZW50OiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xudmFyIEVudmlyb25tZW50ID0gLyogQF9fUFVSRV9fICovICgoRW52aXJvbm1lbnQyKSA9PiB7XG4gIEVudmlyb25tZW50MltcIkxvY2FsXCJdID0gXCJsb2NhbFwiO1xuICBFbnZpcm9ubWVudDJbXCJEZXZlbG9wbWVudFwiXSA9IFwiZGV2ZWxvcG1lbnRcIjtcbiAgRW52aXJvbm1lbnQyW1wiU3RhZ2luZ1wiXSA9IFwic3RhZ2luZ1wiO1xuICBFbnZpcm9ubWVudDJbXCJEZW1vXCJdID0gXCJkZW1vXCI7XG4gIEVudmlyb25tZW50MltcIlByb2R1Y3Rpb25cIl0gPSBcInByb2R1Y3Rpb25cIjtcbiAgcmV0dXJuIEVudmlyb25tZW50Mjtcbn0pKEVudmlyb25tZW50IHx8IHt9KTtcbnZhciBQYXlJbkZhaWxlZCA9IC8qIEBfX1BVUkVfXyAqLyAoKFBheUluRmFpbGVkMikgPT4ge1xuICBQYXlJbkZhaWxlZDJbXCJNRVRIT0RfQ1JFQVRJT05fRkFJTEVEXCJdID0gXCJtZXRob2RDcmVhdGlvbkZhaWxlZFwiO1xuICBQYXlJbkZhaWxlZDJbXCJJTlNVRkZJQ0lFTlRfQkFMQU5DRVwiXSA9IFwiaW5zdWZmaWNpZW50QmFsYW5jZVwiO1xuICBQYXlJbkZhaWxlZDJbXCJJTlNVRkZJQ0lFTlRfQVVUSE9SSVpBVElPTlwiXSA9IFwiaW5zdWZmaWNpZW50QXV0aG9yaXphdGlvblwiO1xuICBQYXlJbkZhaWxlZDJbXCJTSUdORURfTUVTU0FHRV9SRVFVSVJFRFwiXSA9IFwic2lnbmVkTWVzc2FnZVJlcXVpcmVkXCI7XG4gIFBheUluRmFpbGVkMltcIkNVU1RPTUVSX0NSRUFUSU9OX0ZBSUxFRFwiXSA9IFwiY3VzdG9tZXJDcmVhdGlvbkZhaWxlZFwiO1xuICBQYXlJbkZhaWxlZDJbXCJQQVlNRU5UX0ZBSUxFRFwiXSA9IFwicGF5bWVudEZhaWxlZFwiO1xuICBQYXlJbkZhaWxlZDJbXCJUUkFOU0FDVElPTl9GQUlMRURcIl0gPSBcInRyYW5zYWN0aW9uRmFpbGVkXCI7XG4gIHJldHVybiBQYXlJbkZhaWxlZDI7XG59KShQYXlJbkZhaWxlZCB8fCB7fSk7XG52YXIgUGF5SW5TdGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyAoKFBheUluU3RhdGUyKSA9PiB7XG4gIFBheUluU3RhdGUyW1wiSURMRVwiXSA9IFwiaWRsZVwiO1xuICBQYXlJblN0YXRlMltcIkNPTkZJUk1JTkdfQkFMQU5DRVwiXSA9IFwiY29uZmlybWluZ0JhbGFuY2VcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDT05GSVJNSU5HX0FVVEhPUklaQVRJT05cIl0gPSBcImNvbmZpcm1pbmdBdXRob3JpemF0aW9uXCI7XG4gIFBheUluU3RhdGUyW1wiVVBEQVRJTkdfQVVUSE9SSVpBVElPTlwiXSA9IFwidXBkYXRpbmdBdXRob3JpemF0aW9uXCI7XG4gIFBheUluU3RhdGUyW1wiU0lHTklOR19NRVNTQUdFXCJdID0gXCJzaWduaW5nTWVzc2FnZVwiO1xuICBQYXlJblN0YXRlMltcIkNSRUFUSU5HX0NVU1RPTUVSXCJdID0gXCJjcmVhdGluZ0N1c3RvbWVyXCI7XG4gIFBheUluU3RhdGUyW1wiQ1JFQVRJTkdfUEFZTUVOVF9NRVRIT0RcIl0gPSBcImNyZWF0aW5nUGF5bWVudE1ldGhvZFwiO1xuICBQYXlJblN0YXRlMltcIlBST0NFU1NJTkdfUEFZTUVOVFwiXSA9IFwicHJvY2Vzc2luZ1BheW1lbnRcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDUkVBVElOR19QQVlNRU5UXCJdID0gXCJjcmVhdGluZ1BheW1lbnRcIjtcbiAgUGF5SW5TdGF0ZTJbXCJDT05GSVJNSU5HX1BBWU1FTlRcIl0gPSBcImNvbmZpcm1pbmdQYXltZW50XCI7XG4gIFBheUluU3RhdGUyW1wiQ09NUExFVEVcIl0gPSBcImNvbXBsZXRlXCI7XG4gIFBheUluU3RhdGUyW1wiQVVUSE9SSVpFRFwiXSA9IFwiYXV0aG9yaXplZFwiO1xuICByZXR1cm4gUGF5SW5TdGF0ZTI7XG59KShQYXlJblN0YXRlIHx8IHt9KTtcblxuY29uc3QgTE9PUF9MT0FESU5HID0ge1xuICBpc0F2YWlsYWJsZTogZmFsc2UsXG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgY29uZmlnOiBudWxsLFxuICB3aWRnZXQ6IG51bGxcbn07XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJwYXlwYWxcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHsgY2xpZW50X2lkOiB6JDEuc3RyaW5nKCkgfSksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInBheXBhbFwiKVxufSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJwb2NreXRcIiksXG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcInBheXBhbFwiKVxufSk7XG56JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIHBheXBhbF9pZnJhbWVfdXJsOiB6JDEuc3RyaW5nKCksXG4gICAgdmVyaWZ5X3Rva2VuOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuXG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYWZmaXJtXCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJzdHJpcGVcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBzdHJpcGVfcGs6IHokMS5zdHJpbmcoKVxuICB9KVxufSk7XG56JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIG91cl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm51bGxpc2goKSxcbiAgICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuXG56JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYWZ0ZXJwYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpLFxuICAgIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJrbGFybmFcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpLFxuICAgIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJzdHJpcGVfbGlua1wiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pO1xueiQxLmFycmF5KFxuICB6JDEub2JqZWN0KHtcbiAgICBvdXJfZXhpc3RpbmdfcG1faWQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5cbnokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLnVuaW9uKFt6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSwgeiQxLmxpdGVyYWwoXCJnb29nbGVfcGF5XCIpXSksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KTtcblxuY29uc3QgeyBlcnJfXyB9ID0gY3JlYXRlT2pzRmxvd0xvZ2dlcnMoXCJmb3JtLWNhbGxiYWNrc1wiKTtcbmNvbnN0IE9wdGlvbmFsRm4gPSB6JDEuZnVuY3Rpb24oKS5vcHRpb25hbCgpO1xuY29uc3QgWm9kRm9ybUNhbGxiYWNrcyA9IHokMS5vYmplY3Qoe1xuICBvbkZvY3VzOiBPcHRpb25hbEZuLFxuICBvbkJsdXI6IE9wdGlvbmFsRm4sXG4gIG9uQ2hhbmdlOiBPcHRpb25hbEZuLFxuICBvbkxvYWQ6IE9wdGlvbmFsRm4sXG4gIG9uTG9hZEVycm9yOiBPcHRpb25hbEZuLFxuICBvblZhbGlkYXRpb25FcnJvcjogT3B0aW9uYWxGbixcbiAgb25DaGVja291dFN0YXJ0ZWQ6IE9wdGlvbmFsRm4sXG4gIG9uQ2hlY2tvdXRTdWNjZXNzOiBPcHRpb25hbEZuLFxuICBvblNldHVwUGF5bWVudE1ldGhvZFN1Y2Nlc3M6IE9wdGlvbmFsRm4sXG4gIG9uQ2hlY2tvdXRFcnJvcjogT3B0aW9uYWxGbixcbiAgb25QYXltZW50UmVxdWVzdExvYWQ6IE9wdGlvbmFsRm5cbn0pO1xuY2xhc3MgRm9ybUNhbGxiYWNrcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8qKlxuICAgICAqIFNldHMgQUxMIGZvcm0gY2FsbGJhY2tzLiBOb3RlIHRoYXQgYWxsIG9sZCBjYWxsYmFja3MgYXJlIHJlbW92ZWQuXG4gICAgICovXG4gICAgdGhpcy5zZXRDYWxsYmFja3MgPSAocmF3Q2FsbGJhY2tzKSA9PiB7XG4gICAgICB0aGlzLl9jYWxsYmFja3MgPSBGb3JtQ2FsbGJhY2tzLmNyZWF0ZUVtcHR5Q2FsbGJhY2tzKCk7XG4gICAgICBPYmplY3QuZW50cmllcyhyYXdDYWxsYmFja3MpLmZvckVhY2goKFtrZXksIHJhd0NhbGxiYWNrXSkgPT4ge1xuICAgICAgICBjb25zdCBzYWZlQ2FsbGJhY2sgPSBtYWtlQ2FsbGJhY2tTYWZlKGtleSwgcmF3Q2FsbGJhY2sgPz8gRm9ybUNhbGxiYWNrcy5OT09QLCBlcnJfXyk7XG4gICAgICAgIHRoaXMuX2NhbGxiYWNrc1trZXldID0gc2FmZUNhbGxiYWNrO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICB0aGlzLl9jYWxsYmFja3MgPSBGb3JtQ2FsbGJhY2tzLmNyZWF0ZUVtcHR5Q2FsbGJhY2tzKCk7XG4gIH1cbiAgc3RhdGljIHtcbiAgICB0aGlzLk5PT1AgPSAoKSA9PiB7XG4gICAgfTtcbiAgfVxuICBzdGF0aWMge1xuICAgIHRoaXMuY3JlYXRlRW1wdHlDYWxsYmFja3MgPSAoKSA9PiB7XG4gICAgICBjb25zdCB4ID0ge307XG4gICAgICBPYmplY3Qua2V5cyhab2RGb3JtQ2FsbGJhY2tzLmtleW9mKCkuZW51bSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHhba2V5XSA9IEZvcm1DYWxsYmFja3MuTk9PUDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHg7XG4gICAgfTtcbiAgfVxuICBzdGF0aWMge1xuICAgIHRoaXMuZnJvbU9iamVjdCA9IChvYmopID0+IHtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IEZvcm1DYWxsYmFja3MoKTtcbiAgICAgIGluc3RhbmNlLnNldENhbGxiYWNrcyhab2RGb3JtQ2FsbGJhY2tzLnBhcnNlKG9iaikpO1xuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgYSByZWFkLW9ubHkgdmVyc2lvbiBvZiB0aGUgY2FsbGJhY2tzIG9iamVjdC5cbiAgICovXG4gIGdldCBnZXQoKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5fY2FsbGJhY2tzIH07XG4gIH1cbn1cblxudmFyIFN1Ym1pdE1ldGhvZHMgPSAvKiBAX19QVVJFX18gKi8gKChTdWJtaXRNZXRob2RzMikgPT4ge1xuICBTdWJtaXRNZXRob2RzMltcImNhcmRcIl0gPSBcImNhcmRcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJwb2NreXRQYXlwYWxcIl0gPSBcInBvY2t5dC1wYXlwYWxcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhcHBsZVBheVwiXSA9IFwiYXBwbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiZ29vZ2xlUGF5XCJdID0gXCJnb29nbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wibG9vcENyeXB0b1wiXSA9IFwibG9vcC1jcnlwdG9cIjtcbiAgU3VibWl0TWV0aG9kczJbXCJwYXlwYWxcIl0gPSBcInBheXBhbFwiO1xuICBTdWJtaXRNZXRob2RzMltcImtsYXJuYVwiXSA9IFwia2xhcm5hXCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWZmaXJtXCJdID0gXCJhZmZpcm1cIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhZnRlcnBheVwiXSA9IFwiYWZ0ZXJwYXlcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJzdHJpcGVMaW5rXCJdID0gXCJzdHJpcGUtbGlua1wiO1xuICBTdWJtaXRNZXRob2RzMltcImFpcndhbGxleEdvb2dsZVBheVwiXSA9IFwiYWlyd2FsbGV4LWdvb2dsZS1wYXlcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhaXJ3YWxsZXhBcHBsZVBheVwiXSA9IFwiYWlyd2FsbGV4LWFwcGxlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImF1dGhvcml6ZW5ldEdvb2dsZVBheVwiXSA9IFwiYXV0aG9yaXplbmV0LWdvb2dsZS1wYXlcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhdXRob3JpemVuZXRBcHBsZVBheVwiXSA9IFwiYXV0aG9yaXplbmV0LWFwcGxlLXBheVwiO1xuICBTdWJtaXRNZXRob2RzMltcImFkeWVuR29vZ2xlUGF5XCJdID0gXCJhZHllbi1nb29nbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWR5ZW5BcHBsZVBheVwiXSA9IFwiYWR5ZW4tYXBwbGUtcGF5XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWlyd2FsbGV4QUNIXCJdID0gXCJhaXJ3YWxsZXgtYWNoXCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWlyd2FsbGV4RUZUXCJdID0gXCJhaXJ3YWxsZXgtZWZ0XCI7XG4gIFN1Ym1pdE1ldGhvZHMyW1wiYWlyd2FsbGV4QkFDU1wiXSA9IFwiYWlyd2FsbGV4LWJhY3NcIjtcbiAgU3VibWl0TWV0aG9kczJbXCJhaXJ3YWxsZXhTRVBBXCJdID0gXCJhaXJ3YWxsZXgtc2VwYVwiO1xuICByZXR1cm4gU3VibWl0TWV0aG9kczI7XG59KShTdWJtaXRNZXRob2RzIHx8IHt9KTtcbnokMS5uYXRpdmVFbnVtKFN1Ym1pdE1ldGhvZHMpO1xuXG5jb25zdCBNT0JJTEVfV0FMTEVUX0xPQURJTkdfU1RBVEUgPSB7XG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICBwcm9jZXNzb3JzOiBbXSxcbiAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYHN0YXJ0RmxvdyB0cmlnZ2VyZWQgd2hpbGUgcGF5bWVudCByZXF1ZXN0IGlzIHN0aWxsIG5vdCByZWFkeS4gXG4gICAgICBZb3UgY2FuIGNoZWNrIHRoZSBcIi5pc0xvYWRpbmdcIiBwYXJhbSB0byBrbm93IHdoZW4gYSBwYXltZW50IHJlcXVlc3QgaXMgc3RpbGwgbG9hZGluZywgXG4gICAgICBhbmQgXCIuaXNBdmFpbGFibGVcIiB0byBrbm93IGlmIGEgcGF5bWVudCByZXF1ZXN0IGlzIGF2YWlsYWJsZS5gXG4gICAgKTtcbiAgfVxufTtcbmNvbnN0IGdldEFwcGxlUGF5UHJvY2Vzc29ycyA9IChpbml0Rmxvd3MpID0+IHtcbiAgY29uc3QgYXBwbGVQYXlJbml0Rmxvd3MgPSBbaW5pdEZsb3dzLmFpcndhbGxleEFwcGxlUGF5LCBpbml0Rmxvd3MuYXV0aG9yaXplTmV0QXBwbGVQYXksIGluaXRGbG93cy5hZHllbkFwcGxlUGF5XTtcbiAgY29uc3QgYXBwbGVQYXlJbml0UmVzdWx0cyA9IFtdO1xuICBhcHBsZVBheUluaXRGbG93cy5mb3JFYWNoKChmbG93KSA9PiB7XG4gICAgY29uc3QgZmxvd1ZhbHVlID0gZmxvdy5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgaWYgKGZsb3dWYWx1ZT8uaXNBdmFpbGFibGUpIHtcbiAgICAgIGFwcGxlUGF5SW5pdFJlc3VsdHMucHVzaChmbG93VmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHN0cmlwZVBSRmxvd1Jlc3VsdCA9IGluaXRGbG93cy5zdHJpcGVQUi5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gIGlmIChzdHJpcGVQUkZsb3dSZXN1bHQ/LmlzQXZhaWxhYmxlKSB7XG4gICAgY29uc3QgaXNBcHBsZVBheUF2YWlsYWJsZSA9IHN0cmlwZVBSRmxvd1Jlc3VsdC5hdmFpbGFibGVQcm92aWRlcnMuYXBwbGVQYXk7XG4gICAgaWYgKGlzQXBwbGVQYXlBdmFpbGFibGUpIHtcbiAgICAgIGFwcGxlUGF5SW5pdFJlc3VsdHMucHVzaCh7XG4gICAgICAgIGlzQXZhaWxhYmxlOiB0cnVlLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBwcm9jZXNzb3I6IFBheW1lbnRQcm9jZXNzb3IuRW51bS5zdHJpcGUsXG4gICAgICAgIHN0YXJ0RmxvdzogKGN1c3RvbVBhcmFtcykgPT4gc3RyaXBlUFJGbG93UmVzdWx0LnN0YXJ0RmxvdyhcImFwcGxlX3BheVwiLCB7XG4gICAgICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogY3VzdG9tUGFyYW1zPy5vdmVycmlkZVBheW1lbnRSZXF1ZXN0XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzb3JzOiBhcHBsZVBheUluaXRSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQucHJvY2Vzc29yKSxcbiAgICBpc0F2YWlsYWJsZTogYXBwbGVQYXlJbml0UmVzdWx0cy5sZW5ndGggPiAwLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgc3RhcnRGbG93OiAoY3VzdG9tUGFyYW1zKSA9PiB7XG4gICAgICByZXR1cm4gc3RhcnRBcHBsZVBheUZsb3coYXBwbGVQYXlJbml0UmVzdWx0cywgY3VzdG9tUGFyYW1zKTtcbiAgICB9XG4gIH07XG59O1xuY29uc3QgZ2V0R29vZ2xlUGF5UHJvY2Vzc29ycyA9IChpbml0Rmxvd3MpID0+IHtcbiAgY29uc3QgZ29vZ2xlUGF5SW5pdEZsb3dzID0gW2luaXRGbG93cy5haXJ3YWxsZXhHb29nbGVQYXksIGluaXRGbG93cy5hdXRob3JpemVOZXRHb29nbGVQYXksIGluaXRGbG93cy5hZHllbkdvb2dsZVBheV07XG4gIGNvbnN0IGdvb2dsZVBheUluaXRSZXN1bHRzID0gW107XG4gIGdvb2dsZVBheUluaXRGbG93cy5mb3JFYWNoKChmbG93KSA9PiB7XG4gICAgY29uc3QgZmxvd1ZhbHVlID0gZmxvdy5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgaWYgKGZsb3dWYWx1ZT8uaXNBdmFpbGFibGUpIHtcbiAgICAgIGdvb2dsZVBheUluaXRSZXN1bHRzLnB1c2goZmxvd1ZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBzdHJpcGVQUkZsb3dSZXN1bHQgPSBpbml0Rmxvd3Muc3RyaXBlUFIucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICBpZiAoc3RyaXBlUFJGbG93UmVzdWx0Py5pc0F2YWlsYWJsZSkge1xuICAgIGNvbnN0IGlzR29vZ2xlUGF5QXZhaWxhYmxlID0gc3RyaXBlUFJGbG93UmVzdWx0LmF2YWlsYWJsZVByb3ZpZGVycy5nb29nbGVQYXk7XG4gICAgaWYgKGlzR29vZ2xlUGF5QXZhaWxhYmxlKSB7XG4gICAgICBnb29nbGVQYXlJbml0UmVzdWx0cy5wdXNoKHtcbiAgICAgICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIHByb2Nlc3NvcjogUGF5bWVudFByb2Nlc3Nvci5FbnVtLnN0cmlwZSxcbiAgICAgICAgc3RhcnRGbG93OiAoY3VzdG9tUGFyYW1zKSA9PiBzdHJpcGVQUkZsb3dSZXN1bHQuc3RhcnRGbG93KFwiZ29vZ2xlX3BheVwiLCB7XG4gICAgICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogY3VzdG9tUGFyYW1zPy5vdmVycmlkZVBheW1lbnRSZXF1ZXN0XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzb3JzOiBnb29nbGVQYXlJbml0UmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnByb2Nlc3NvciksXG4gICAgaXNBdmFpbGFibGU6IGdvb2dsZVBheUluaXRSZXN1bHRzLmxlbmd0aCA+IDAsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBzdGFydEZsb3c6IChjdXN0b21QYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiBzdGFydEdvb2dsZVBheUZsb3coZ29vZ2xlUGF5SW5pdFJlc3VsdHMsIGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICB9O1xufTtcbmNvbnN0IHN0YXJ0QXBwbGVQYXlGbG93ID0gKGluaXRSZXN1bHRzLCBjdXN0b21QYXJhbXMpID0+IHtcbiAgaWYgKGN1c3RvbVBhcmFtcz8ucHJvY2Vzc29yKSB7XG4gICAgY29uc3QgZmxvdyA9IGluaXRSZXN1bHRzLmZpbmQoKHJlc3VsdCkgPT4gcmVzdWx0LnByb2Nlc3NvciA9PT0gY3VzdG9tUGFyYW1zLnByb2Nlc3Nvcik7XG4gICAgaWYgKGZsb3c/LmlzQXZhaWxhYmxlKSB7XG4gICAgICByZXR1cm4gZmxvdy5zdGFydEZsb3coY3VzdG9tUGFyYW1zKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTcGVjaWZpZWQgQXBwbGUgUGF5IHByb2Nlc3NvciAke2N1c3RvbVBhcmFtcy5wcm9jZXNzb3J9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgfVxuICBjb25zdCBhdmFpbGFibGVGbG93ID0gaW5pdFJlc3VsdHMuZmluZCgocmVzdWx0KSA9PiByZXN1bHQuaXNBdmFpbGFibGUpO1xuICBpZiAoYXZhaWxhYmxlRmxvdykge1xuICAgIHJldHVybiBhdmFpbGFibGVGbG93LnN0YXJ0RmxvdyhjdXN0b21QYXJhbXMpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIk5vIGF2YWlsYWJsZSBBcHBsZSBQYXkgcHJvY2Vzc29yIGZvdW5kXCIpO1xufTtcbmNvbnN0IHN0YXJ0R29vZ2xlUGF5RmxvdyA9IChpbml0UmVzdWx0cywgY3VzdG9tUGFyYW1zKSA9PiB7XG4gIGlmIChjdXN0b21QYXJhbXM/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IGZsb3cgPSBpbml0UmVzdWx0cy5maW5kKChyZXN1bHQpID0+IHJlc3VsdC5wcm9jZXNzb3IgPT09IGN1c3RvbVBhcmFtcy5wcm9jZXNzb3IpO1xuICAgIGlmIChmbG93Py5pc0F2YWlsYWJsZSkge1xuICAgICAgcmV0dXJuIGZsb3cuc3RhcnRGbG93KGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEdvb2dsZSBQYXkgcHJvY2Vzc29yICR7Y3VzdG9tUGFyYW1zLnByb2Nlc3Nvcn0gaXMgbm90IGF2YWlsYWJsZWApO1xuICB9XG4gIGNvbnN0IGF2YWlsYWJsZUZsb3cgPSBpbml0UmVzdWx0cy5maW5kKChyZXN1bHQpID0+IHJlc3VsdC5pc0F2YWlsYWJsZSk7XG4gIGlmIChhdmFpbGFibGVGbG93KSB7XG4gICAgcmV0dXJuIGF2YWlsYWJsZUZsb3cuc3RhcnRGbG93KGN1c3RvbVBhcmFtcyk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiTm8gYXZhaWxhYmxlIEdvb2dsZSBQYXkgcHJvY2Vzc29yIGZvdW5kXCIpO1xufTtcbmNvbnN0IGdldEtsYXJuYVByb2Nlc3NvcnMgPSAoaW5pdEZsb3dzKSA9PiB7XG4gIGNvbnN0IGtsYXJuYUluaXRSZXN1bHRzID0gW107XG4gIGNvbnN0IGFpcndhbGxleEtsYXJuYUZsb3dSZXN1bHQgPSBpbml0Rmxvd3MuYWlyd2FsbGV4S2xhcm5hLnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgaWYgKGFpcndhbGxleEtsYXJuYUZsb3dSZXN1bHQ/LmlzQXZhaWxhYmxlKSB7XG4gICAga2xhcm5hSW5pdFJlc3VsdHMucHVzaCh7XG4gICAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBwcm9jZXNzb3I6IFBheW1lbnRQcm9jZXNzb3IuRW51bS5haXJ3YWxsZXgsXG4gICAgICBzdGFydEZsb3c6IChjdXN0b21QYXJhbXMpID0+IGFpcndhbGxleEtsYXJuYUZsb3dSZXN1bHQuc3RhcnRGbG93KGN1c3RvbVBhcmFtcylcbiAgICB9KTtcbiAgfVxuICBjb25zdCBzdHJpcGVLbGFybmFGbG93UmVzdWx0ID0gaW5pdEZsb3dzLnN0cmlwZUtsYXJuYS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gIGlmIChzdHJpcGVLbGFybmFGbG93UmVzdWx0Py5pc0F2YWlsYWJsZSkge1xuICAgIGtsYXJuYUluaXRSZXN1bHRzLnB1c2goe1xuICAgICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgcHJvY2Vzc29yOiBQYXltZW50UHJvY2Vzc29yLkVudW0uc3RyaXBlLFxuICAgICAgc3RhcnRGbG93OiAoY3VzdG9tUGFyYW1zKSA9PiBzdHJpcGVLbGFybmFGbG93UmVzdWx0LnN0YXJ0RmxvdyhjdXN0b21QYXJhbXMpXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzb3JzOiBrbGFybmFJbml0UmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnByb2Nlc3NvciksXG4gICAgaXNBdmFpbGFibGU6IGtsYXJuYUluaXRSZXN1bHRzLmxlbmd0aCA+IDAsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBzdGFydEZsb3c6IChjdXN0b21QYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiBzdGFydEtsYXJuYUZsb3coa2xhcm5hSW5pdFJlc3VsdHMsIGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICB9O1xufTtcbmNvbnN0IHN0YXJ0S2xhcm5hRmxvdyA9IChpbml0UmVzdWx0cywgY3VzdG9tUGFyYW1zKSA9PiB7XG4gIGlmIChjdXN0b21QYXJhbXM/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IGZsb3cgPSBpbml0UmVzdWx0cy5maW5kKChyZXN1bHQpID0+IHJlc3VsdC5wcm9jZXNzb3IgPT09IGN1c3RvbVBhcmFtcy5wcm9jZXNzb3IpO1xuICAgIGlmIChmbG93Py5pc0F2YWlsYWJsZSkge1xuICAgICAgcmV0dXJuIGZsb3cuc3RhcnRGbG93KGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEtsYXJuYSBwcm9jZXNzb3IgJHtjdXN0b21QYXJhbXMucHJvY2Vzc29yfSBpcyBub3QgYXZhaWxhYmxlYCk7XG4gIH1cbiAgY29uc3QgYXZhaWxhYmxlRmxvdyA9IGluaXRSZXN1bHRzLmZpbmQoKHJlc3VsdCkgPT4gcmVzdWx0LmlzQXZhaWxhYmxlKTtcbiAgaWYgKGF2YWlsYWJsZUZsb3cpIHtcbiAgICByZXR1cm4gYXZhaWxhYmxlRmxvdy5zdGFydEZsb3coY3VzdG9tUGFyYW1zKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJObyBhdmFpbGFibGUgS2xhcm5hIHByb2Nlc3NvciBmb3VuZFwiKTtcbn07XG5jb25zdCBnZXRBZmZpcm1Qcm9jZXNzb3JzID0gKGluaXRGbG93cykgPT4ge1xuICBjb25zdCBhZmZpcm1Jbml0UmVzdWx0cyA9IFtdO1xuICBjb25zdCBzdHJpcGVBZmZpcm1GbG93UmVzdWx0ID0gaW5pdEZsb3dzLnN0cmlwZUFmZmlybS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gIGlmIChzdHJpcGVBZmZpcm1GbG93UmVzdWx0Py5pc0F2YWlsYWJsZSkge1xuICAgIGFmZmlybUluaXRSZXN1bHRzLnB1c2goe1xuICAgICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgcHJvY2Vzc29yOiBQYXltZW50UHJvY2Vzc29yLkVudW0uc3RyaXBlLFxuICAgICAgc3RhcnRGbG93OiAoY3VzdG9tUGFyYW1zKSA9PiBzdHJpcGVBZmZpcm1GbG93UmVzdWx0LnN0YXJ0RmxvdyhjdXN0b21QYXJhbXMpXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzb3JzOiBhZmZpcm1Jbml0UmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnByb2Nlc3NvciksXG4gICAgaXNBdmFpbGFibGU6IGFmZmlybUluaXRSZXN1bHRzLmxlbmd0aCA+IDAsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBzdGFydEZsb3c6IChjdXN0b21QYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiBzdGFydEFmZmlybUZsb3coYWZmaXJtSW5pdFJlc3VsdHMsIGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICB9O1xufTtcbmNvbnN0IHN0YXJ0QWZmaXJtRmxvdyA9IChpbml0UmVzdWx0cywgY3VzdG9tUGFyYW1zKSA9PiB7XG4gIGlmIChjdXN0b21QYXJhbXM/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IGZsb3cgPSBpbml0UmVzdWx0cy5maW5kKChyZXN1bHQpID0+IHJlc3VsdC5wcm9jZXNzb3IgPT09IGN1c3RvbVBhcmFtcy5wcm9jZXNzb3IpO1xuICAgIGlmIChmbG93Py5pc0F2YWlsYWJsZSkge1xuICAgICAgcmV0dXJuIGZsb3cuc3RhcnRGbG93KGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEFmZmlybSBwcm9jZXNzb3IgJHtjdXN0b21QYXJhbXMucHJvY2Vzc29yfSBpcyBub3QgYXZhaWxhYmxlYCk7XG4gIH1cbiAgY29uc3QgYXZhaWxhYmxlRmxvdyA9IGluaXRSZXN1bHRzLmZpbmQoKHJlc3VsdCkgPT4gcmVzdWx0LmlzQXZhaWxhYmxlKTtcbiAgaWYgKGF2YWlsYWJsZUZsb3cpIHtcbiAgICByZXR1cm4gYXZhaWxhYmxlRmxvdy5zdGFydEZsb3coY3VzdG9tUGFyYW1zKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJObyBhdmFpbGFibGUgQWZmaXJtIHByb2Nlc3NvciBmb3VuZFwiKTtcbn07XG5jb25zdCBnZXRBZnRlcnBheVByb2Nlc3NvcnMgPSAoaW5pdEZsb3dzKSA9PiB7XG4gIGNvbnN0IGFmdGVycGF5SW5pdFJlc3VsdHMgPSBbXTtcbiAgY29uc3Qgc3RyaXBlQWZ0ZXJwYXlGbG93UmVzdWx0ID0gaW5pdEZsb3dzLnN0cmlwZUFmdGVycGF5LnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgaWYgKHN0cmlwZUFmdGVycGF5Rmxvd1Jlc3VsdD8uaXNBdmFpbGFibGUpIHtcbiAgICBhZnRlcnBheUluaXRSZXN1bHRzLnB1c2goe1xuICAgICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgcHJvY2Vzc29yOiBQYXltZW50UHJvY2Vzc29yLkVudW0uc3RyaXBlLFxuICAgICAgc3RhcnRGbG93OiAoY3VzdG9tUGFyYW1zKSA9PiBzdHJpcGVBZnRlcnBheUZsb3dSZXN1bHQuc3RhcnRGbG93KGN1c3RvbVBhcmFtcylcbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHByb2Nlc3NvcnM6IGFmdGVycGF5SW5pdFJlc3VsdHMubWFwKChyZXN1bHQpID0+IHJlc3VsdC5wcm9jZXNzb3IpLFxuICAgIGlzQXZhaWxhYmxlOiBhZnRlcnBheUluaXRSZXN1bHRzLmxlbmd0aCA+IDAsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBzdGFydEZsb3c6IChjdXN0b21QYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiBzdGFydEFmdGVycGF5RmxvdyhhZnRlcnBheUluaXRSZXN1bHRzLCBjdXN0b21QYXJhbXMpO1xuICAgIH1cbiAgfTtcbn07XG5jb25zdCBzdGFydEFmdGVycGF5RmxvdyA9IChpbml0UmVzdWx0cywgY3VzdG9tUGFyYW1zKSA9PiB7XG4gIGlmIChjdXN0b21QYXJhbXM/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IGZsb3cgPSBpbml0UmVzdWx0cy5maW5kKChyZXN1bHQpID0+IHJlc3VsdC5wcm9jZXNzb3IgPT09IGN1c3RvbVBhcmFtcy5wcm9jZXNzb3IpO1xuICAgIGlmIChmbG93Py5pc0F2YWlsYWJsZSkge1xuICAgICAgcmV0dXJuIGZsb3cuc3RhcnRGbG93KGN1c3RvbVBhcmFtcyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEFmdGVycGF5IHByb2Nlc3NvciAke2N1c3RvbVBhcmFtcy5wcm9jZXNzb3J9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgfVxuICBjb25zdCBhdmFpbGFibGVGbG93ID0gaW5pdFJlc3VsdHMuZmluZCgocmVzdWx0KSA9PiByZXN1bHQuaXNBdmFpbGFibGUpO1xuICBpZiAoYXZhaWxhYmxlRmxvdykge1xuICAgIHJldHVybiBhdmFpbGFibGVGbG93LnN0YXJ0RmxvdyhjdXN0b21QYXJhbXMpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIk5vIGF2YWlsYWJsZSBBZnRlcnBheSBwcm9jZXNzb3IgZm91bmRcIik7XG59O1xuXG5jb25zdCBjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyA9IChzdHlsZXMpID0+IHtcbiAgY29uc3Qgc2VyaWFsaXplZFN0eWxlcyA9IEpTT04uc3RyaW5naWZ5KHN0eWxlcyk7XG4gIHJldHVybiBzZXJpYWxpemVkU3R5bGVzO1xufTtcblxuY29uc3QgRWxlbWVudHNDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7XG4gIGZvcm1JZDogXCJcIixcbiAgZm9ybUhlaWdodDogXCJcIixcbiAgcmVmZXJyZXI6IHZvaWQgMCxcbiAgY2hlY2tvdXRTZWN1cmVUb2tlbjogdm9pZCAwLFxuICByZWdpc3RlcklmcmFtZTogKCkgPT4ge1xuICB9LFxuICBiYXNlVXJsOiBcIlwiXG59KTtcblxuY29uc3QgdXNlT3BlblBheUVsZW1lbnRzID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChFbGVtZW50c0NvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VPcGVuUGF5RWxlbWVudHMgbXVzdCBiZSB1c2VkIHdpdGhpbiBhbiBPcGVuUGF5RWxlbWVudHNQcm92aWRlclwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG5cbmNvbnN0IEVsZW1lbnRGcmFtZSA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGVsZW1lbnRUeXBlLCBzdHlsZXMgfSA9IHByb3BzO1xuICBjb25zdCB7IGZvcm1JZCwgcmVmZXJyZXIsIGZvcm1IZWlnaHQsIGNoZWNrb3V0U2VjdXJlVG9rZW4sIHJlZ2lzdGVySWZyYW1lLCBiYXNlVXJsIH0gPSB1c2VPcGVuUGF5RWxlbWVudHMoKTtcbiAgY29uc3Qgc3ViUGF0aCA9IGVsZW1lbnRUeXBlLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IFtoYXNMb2FkZWQsIHNldEhhc0xvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGlmcmFtZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgZWxlbWVudFN0eWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFzdHlsZXMpIHJldHVybiBcIlwiO1xuICAgIHJldHVybiBjb252ZXJ0U3R5bGVzVG9RdWVyeVN0cmluZyhzdHlsZXMpO1xuICB9LCBbc3R5bGVzXSk7XG4gIGNvbnN0IGZyYW1lU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGhlaWdodDogZm9ybUhlaWdodFxuICAgIH07XG4gIH0sIFtmb3JtSGVpZ2h0XSk7XG4gIGNvbnN0IHF1ZXJ5U3RyaW5nID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFjaGVja291dFNlY3VyZVRva2VuIHx8ICFyZWZlcnJlcikgcmV0dXJuIFwiXCI7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIHBhcmFtcy5hcHBlbmQoXCJyZWZlcmVyXCIsIHJlZmVycmVyKTtcbiAgICBwYXJhbXMuYXBwZW5kKFwic3R5bGVzXCIsIGVsZW1lbnRTdHlsZSk7XG4gICAgcGFyYW1zLmFwcGVuZChcImZvcm1JZFwiLCBmb3JtSWQpO1xuICAgIHBhcmFtcy5hcHBlbmQoXCJzZWN1cmVUb2tlblwiLCBjaGVja291dFNlY3VyZVRva2VuKTtcbiAgICByZXR1cm4gcGFyYW1zLnRvU3RyaW5nKCk7XG4gIH0sIFtlbGVtZW50U3R5bGUsIGZvcm1JZCwgcmVmZXJyZXIsIGNoZWNrb3V0U2VjdXJlVG9rZW5dKTtcbiAgdXNlRWZmZWN0KCgpID0+IHNldEhhc0xvYWRlZCh0cnVlKSwgW10pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaWZyYW1lUmVmLmN1cnJlbnQgfHwgIWhhc0xvYWRlZCkgcmV0dXJuO1xuICAgIHJlZ2lzdGVySWZyYW1lKGVsZW1lbnRUeXBlLCBpZnJhbWVSZWYuY3VycmVudCk7XG4gIH0sIFtoYXNMb2FkZWRdKTtcbiAgaWYgKCFjaGVja291dFNlY3VyZVRva2VuKSB7XG4gICAgY29uc29sZS5lcnJvcihcIltmb3JtXSBDYW5ub3QgcmVuZGVyIHBhcnRpYWxseSBpbml0aWFsaXplZCBmcmFtZVwiKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChcImRpdlwiLCB7fSk7XG4gIH1cbiAgY29uc3QgdXJsID0gbmV3IFVSTChgL2FwcC92MS8ke3N1YlBhdGh9LWVsZW1lbnQvYCwgYmFzZVVybCk7XG4gIHVybC5zZWFyY2ggPSBxdWVyeVN0cmluZztcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goXG4gICAgXCJpZnJhbWVcIixcbiAgICB7XG4gICAgICBpZDogYG9qcy0ke3N1YlBhdGh9LWVsZW1lbnRgLFxuICAgICAgbmFtZTogYCR7c3ViUGF0aH0tZWxlbWVudGAsXG4gICAgICBjbGFzc05hbWU6IFwib2pzLWlmcmFtZVwiLFxuICAgICAgc3JjOiB1cmwudG9TdHJpbmcoKSxcbiAgICAgIHN0eWxlOiBmcmFtZVN0eWxlLFxuICAgICAgcmVmOiBpZnJhbWVSZWZcbiAgICB9XG4gICk7XG59O1xuXG5jb25zdCBDYXJkRWxlbWVudCA9ICh7IHN0eWxlcyB9KSA9PiB7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEVsZW1lbnRGcmFtZSwgeyBzdHlsZXMsIGVsZW1lbnRUeXBlOiBFbGVtZW50VHlwZUVudW0uQ0FSRCB9KTtcbn07XG5cbmNvbnN0IENhcmRDdmNFbGVtZW50ID0gKHsgc3R5bGVzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudEZyYW1lLCB7IHN0eWxlcywgZWxlbWVudFR5cGU6IEVsZW1lbnRUeXBlRW51bS5DQVJEX0NWQyB9KTtcbn07XG5cbmNvbnN0IENhcmRFeHBpcnlFbGVtZW50ID0gKHsgc3R5bGVzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudEZyYW1lLCB7IHN0eWxlcywgZWxlbWVudFR5cGU6IEVsZW1lbnRUeXBlRW51bS5DQVJEX0VYUElSWSB9KTtcbn07XG5cbmNvbnN0IENhcmROdW1iZXJFbGVtZW50ID0gKHsgc3R5bGVzIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudEZyYW1lLCB7IHN0eWxlcywgZWxlbWVudFR5cGU6IEVsZW1lbnRUeXBlRW51bS5DQVJEX05VTUJFUiB9KTtcbn07XG5cbmZ1bmN0aW9uIEZvKGUsIHQpIHtcbiAgdmFyIHIgPSBPYmplY3Quc2V0UHJvdG90eXBlT2Y7XG4gIHIgPyByKGUsIHQpIDogZS5fX3Byb3RvX18gPSB0O1xufVxuZnVuY3Rpb24gVG8oZSwgdCkge1xuICB0ID09PSB2b2lkIDAgJiYgKHQgPSBlLmNvbnN0cnVjdG9yKTtcbiAgdmFyIHIgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcbiAgciAmJiByKGUsIHQpO1xufVxudmFyIE5vID0gLyogQF9fUFVSRV9fICovIChmdW5jdGlvbigpIHtcbiAgdmFyIGUgPSBmdW5jdGlvbihyLCBuKSB7XG4gICAgcmV0dXJuIGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwge1xuICAgICAgX19wcm90b19fOiBbXVxuICAgIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihhLCBpKSB7XG4gICAgICBhLl9fcHJvdG9fXyA9IGk7XG4gICAgfSB8fCBmdW5jdGlvbihhLCBpKSB7XG4gICAgICBmb3IgKHZhciBzIGluIGkpXG4gICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLCBzKSAmJiAoYVtzXSA9IGlbc10pO1xuICAgIH0sIGUociwgbik7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbih0LCByKSB7XG4gICAgaWYgKHR5cGVvZiByICE9IFwiZnVuY3Rpb25cIiAmJiByICE9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhyKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgZSh0LCByKTtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IHQ7XG4gICAgfVxuICAgIHQucHJvdG90eXBlID0gciA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUocikgOiAobi5wcm90b3R5cGUgPSByLnByb3RvdHlwZSwgbmV3IG4oKSk7XG4gIH07XG59KSgpLCBMbyA9IChmdW5jdGlvbihlKSB7XG4gIE5vKHQsIGUpO1xuICBmdW5jdGlvbiB0KHIsIG4pIHtcbiAgICB2YXIgYSA9IHRoaXMuY29uc3RydWN0b3IsIGkgPSBlLmNhbGwodGhpcywgciwgbikgfHwgdGhpcztcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGksIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYS5uYW1lLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KSwgRm8oaSwgYS5wcm90b3R5cGUpLCBUbyhpKSwgaTtcbiAgfVxuICByZXR1cm4gdDtcbn0pKEVycm9yKTtcbmNvbnN0IFQgPSB6JDEuc3RyaW5nKCkudHJpbSgpLm1pbigxLCB7IG1lc3NhZ2U6IFwiUGxlYXNlIGZpbGwgaW4gdGhpcyBmaWVsZFwiIH0pLCBQID0geiQxLnN0cmluZygpLnRyaW0oKS5vcHRpb25hbCgpLCBEID0gKGUpID0+IHokMS5udWxsYWJsZShlLm9wdGlvbmFsKCkpO1xudmFyIHAgPSAvKiBAX19QVVJFX18gKi8gKChlKSA9PiAoZS5GSVJTVF9OQU1FID0gXCJmaXJzdE5hbWVcIiwgZS5MQVNUX05BTUUgPSBcImxhc3ROYW1lXCIsIGUuUEhPTkUgPSBcInBob25lXCIsIGUuRU1BSUwgPSBcImVtYWlsXCIsIGUuTElORTEgPSBcImxpbmUxXCIsIGUuTElORTIgPSBcImxpbmUyXCIsIGUuTElORTMgPSBcImxpbmUzXCIsIGUuQ0lUWSA9IFwiY2l0eVwiLCBlLlNUQVRFID0gXCJzdGF0ZVwiLCBlLkNPVU5UUlkgPSBcImNvdW50cnlcIiwgZS5aSVBfQ09ERSA9IFwiemlwQ29kZVwiLCBlLlNISVBQSU5HX0xJTkUxID0gXCJzaGlwcGluZ0FkZHJlc3NMaW5lMVwiLCBlLlNISVBQSU5HX0xJTkUyID0gXCJzaGlwcGluZ0FkZHJlc3NMaW5lMlwiLCBlLlNISVBQSU5HX0xJTkUzID0gXCJzaGlwcGluZ0FkZHJlc3NMaW5lM1wiLCBlLlNISVBQSU5HX0NJVFkgPSBcInNoaXBwaW5nQWRkcmVzc0NpdHlcIiwgZS5TSElQUElOR19TVEFURSA9IFwic2hpcHBpbmdBZGRyZXNzU3RhdGVcIiwgZS5TSElQUElOR19DT1VOVFJZID0gXCJzaGlwcGluZ0FkZHJlc3NDb3VudHJ5XCIsIGUuU0hJUFBJTkdfWklQX0NPREUgPSBcInNoaXBwaW5nQWRkcmVzc1ppcENvZGVcIiwgZS5JU19TSElQUElOR19TQU1FX0FTX0JJTExJTkcgPSBcImlzU2hpcHBpbmdTYW1lQXNCaWxsaW5nXCIsIGUuUFJPTU9USU9OX0NPREUgPSBcInByb21vdGlvbkNvZGVcIiwgZS5JU19CVVNJTkVTU19QVVJDSEFTRSA9IFwiaXNCdXNpbmVzc1B1cmNoYXNlXCIsIGUuQlVTSU5FU1NfTkFNRSA9IFwiYnVzaW5lc3NOYW1lXCIsIGUuVEFYX0lEID0gXCJ0YXhJZFwiLCBlLlRBWF9JRF9UWVBFID0gXCJ0YXhJZFR5cGVcIiwgZSkpKHAgfHwge30pO1xuY29uc3Qgb24gPSB6JDEubmF0aXZlRW51bShwKTtcbnZhciBhbiA9IC8qIEBfX1BVUkVfXyAqLyAoKGUpID0+IChlLkNBUkRfTlVNQkVSID0gXCJjYXJkTnVtYmVyXCIsIGUuQ0FSRF9FWFBJUlkgPSBcImNhcmRFeHBpcnlcIiwgZS5DQVJEX0NWQyA9IFwiY2FyZEN2Y1wiLCBlKSkoYW4gfHwge30pO1xuY29uc3Qgc24gPSB6JDEubmF0aXZlRW51bShhbiksIGNuID0geiQxLnVuaW9uKFtvbiwgc25dKTtcbnZhciBnZSA9IC8qIEBfX1BVUkVfXyAqLyAoKGUpID0+IChlLkNBUkQgPSBcImNhcmRcIiwgZS5DQVJEX05VTUJFUiA9IFwiY2FyZC1udW1iZXJcIiwgZS5DQVJEX0VYUElSWSA9IFwiY2FyZC1leHBpcnlcIiwgZS5DQVJEX0NWQyA9IFwiY2FyZC1jdmNcIiwgZS5DREVfQlJJREdFID0gXCJjZGUtYnJpZGdlXCIsIGUpKShnZSB8fCB7fSk7XG5jb25zdCBNbyA9IHokMS5lbnVtKFtcImNhcmRcIiwgXCJjYXJkLW51bWJlclwiLCBcImNhcmQtZXhwaXJ5XCIsIFwiY2FyZC1jdmNcIiwgXCJjZGUtYnJpZGdlXCJdKSwgRnQgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgcHJvY2Vzc29yX25hbWU6IEQoeiQxLnN0cmluZygpKSxcbiAgbWV0YWRhdGE6IEQoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KSwgeG8gPSB6JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKVxufSksIFR0ID0geiQxLm9iamVjdCh7XG4gIGJhY2tncm91bmRDb2xvcjogUCxcbiAgY29sb3I6IFAsXG4gIGZvbnRGYW1pbHk6IFAsXG4gIGZvbnRTaXplOiBQLFxuICBmb250V2VpZ2h0OiBQLFxuICBtYXJnaW46IFAsXG4gIHBhZGRpbmc6IFAsXG4gIGxldHRlclNwYWNpbmc6IFAsXG4gIGxpbmVIZWlnaHQ6IFAsXG4gIGhpZGVJY29uOiBQLFxuICBwbGFjZWhvbGRlclN0eWxlOiB6JDEub2JqZWN0KHtcbiAgICBjb2xvcjogUCxcbiAgICBmb250U2l6ZTogUCxcbiAgICBmb250V2VpZ2h0OiBQLFxuICAgIGZvbnRGYW1pbHk6IFAsXG4gICAgbGV0dGVyU3BhY2luZzogUCxcbiAgICBsaW5lSGVpZ2h0OiBQXG4gIH0pLm9wdGlvbmFsKClcbn0pO1xuVHQuZXh0ZW5kKHtcbiAgZGlzYWJsZUF1dG9GaWxsOiBQLFxuICBwbGFjZWhvbGRlcjogeiQxLm9iamVjdCh7XG4gICAgY2FyZE51bWJlcjogUCxcbiAgICBleHBpcnk6IFAsXG4gICAgY3ZjOiBQXG4gIH0pLm9wdGlvbmFsKClcbn0pO1xuVHQuZXh0ZW5kKHtcbiAgZGlzYWJsZUF1dG9GaWxsOiBQLFxuICBwbGFjZWhvbGRlcjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIC8qKlxuICAgKiBUaGUgY2FyZCBpY29uIGF0IHRoZSBzdGFydCBvZiB0aGUgY2FyZCBudW1iZXIgaW5wdXQgZmllbGRcbiAgICogSXQgd29uJ3QgYWZmZWN0IGFmdGVyIHRoZSBpY29uIGNoYW5nZWQgdG8gY2FyZCBicmFuZCBhZnRlciB0aGUgdXNlciBpbnB1dCB0aGUgY2FyZCBudW1iZXJcbiAgICovXG4gIGljb246IHokMS5vYmplY3Qoe1xuICAgIGNvbG9yOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxuICB9KS5vcHRpb25hbCgpXG59KTtcblR0LmV4dGVuZCh7XG4gIGRpc2FibGVBdXRvRmlsbDogUCxcbiAgcGxhY2Vob2xkZXI6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcblR0LmV4dGVuZCh7XG4gIGRpc2FibGVBdXRvRmlsbDogUCxcbiAgcGxhY2Vob2xkZXI6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IHBlID0geiQxLmVudW0oW1xuICAvLyBFbGVtZW50IC0+IEZvcm1cbiAgXCJMQVlPVVRcIixcbiAgXCJMT0FERURcIixcbiAgXCJCTFVSXCIsXG4gIFwiRk9DVVNcIixcbiAgXCJDSEFOR0VcIixcbiAgXCJUT0tFTklaRV9TVEFSVEVEXCIsXG4gIFwiQ0hFQ0tPVVRfU1RBUlRFRFwiLFxuICBcIlBBWU1FTlRfRkxPV19TVEFSVEVEXCIsXG4gIFwiVE9LRU5JWkVfU1VDQ0VTU1wiLFxuICBcIkNIRUNLT1VUX1NVQ0NFU1NcIixcbiAgXCJMT0FEX0VSUk9SXCIsXG4gIFwiVkFMSURBVElPTl9FUlJPUlwiLFxuICBcIlRPS0VOSVpFX0VSUk9SXCIsXG4gIFwiQ0hFQ0tPVVRfRVJST1JcIixcbiAgXCJTRVRVUF9QQVlNRU5UX01FVEhPRF9TVUNDRVNTXCIsXG4gIC8vIEZvcm0gLT4gRWxlbWVudFxuICBcIlRPS0VOSVpFXCIsXG4gIFwiQ0hFQ0tPVVRcIixcbiAgXCJTVEFSVF9QQVlNRU5UX0ZMT1dcIlxuXSksIERvID0gcGUuZXh0cmFjdChbXCJUT0tFTklaRV9TVEFSVEVEXCIsIFwiQ0hFQ0tPVVRfU1RBUlRFRFwiXSksIFVvID0geiQxLm9iamVjdCh7IHR5cGU6IERvIH0pLCBPbyA9IHBlLmV4dHJhY3QoW1wiQkxVUlwiLCBcIkZPQ1VTXCIsIFwiQ0hBTkdFXCJdKSwgam8gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogT28sXG4gIGVsZW1lbnRUeXBlOiBzbixcbiAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKS5vcHRpb25hbCgpLFxuICBvYmZ1c2NhdGVkVmFsdWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KSwgJG8gPSBwZS5leHRyYWN0KFtcIkxPQURfRVJST1JcIiwgXCJUT0tFTklaRV9FUlJPUlwiLCBcIkNIRUNLT1VUX0VSUk9SXCJdKSwgR28gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogJG8sXG4gIG1lc3NhZ2U6IFQsXG4gIGhlYWRlcnM6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuc3RyaW5nKCkpLm9wdGlvbmFsKClcbn0pLCBxbyA9IHBlLmV4dHJhY3QoW1wiVkFMSURBVElPTl9FUlJPUlwiXSksIFZvID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHFvLFxuICBlbGVtZW50VHlwZTogY24sXG4gIGVycm9yczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSlcbn0pLCB6byA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChwZS5lbnVtLkxBWU9VVCksXG4gIGhlaWdodDogVFxufSksIEJvID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKHBlLmVudW0uTE9BREVEKSxcbiAgc2Vzc2lvbklkOiBULFxuICB0b3RhbEFtb3VudEF0b21zOiB6JDEubnVtYmVyKCksXG4gIGN1cnJlbmN5OiBQLFxuICBjaGVja291dFBheW1lbnRNZXRob2RzOiB6JDEuYXJyYXkoRnQpXG59KSwgSG8gPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLmxpdGVyYWwocGUuZW51bS5QQVlNRU5UX0ZMT1dfU1RBUlRFRCksXG4gIG5leHRBY3Rpb25NZXRhZGF0YTogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBzdGFydFBGTWV0YWRhdGE6IHokMS5vcHRpb25hbCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pLCBLbyA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEubGl0ZXJhbChwZS5lbnVtLlNFVFVQX1BBWU1FTlRfTUVUSE9EX1NVQ0NFU1MpLFxuICBwYXltZW50TWV0aG9kSWQ6IHokMS5zdHJpbmcoKVxufSksIFVlID0geiQxLm9iamVjdCh7XG4gIGVtYWlsOiBULmVtYWlsKHsgbWVzc2FnZTogXCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzXCIgfSksXG4gIGZpcnN0TmFtZTogVCxcbiAgbGFzdE5hbWU6IFQsXG4gIHBob25lOiBQLFxuICBwcm9tb3Rpb25Db2RlOiBQLFxuICBsaW5lMTogUCxcbiAgbGluZTI6IFAsXG4gIGxpbmUzOiBQLFxuICBjaXR5OiBQLFxuICBzdGF0ZTogUCxcbiAgY291bnRyeTogVCxcbiAgemlwQ29kZTogUCxcbiAgaXNTaGlwcGluZ1NhbWVBc0JpbGxpbmc6IHokMS5jdXN0b20oKS5vcHRpb25hbCgpLmRlZmF1bHQodHJ1ZSksXG4gIHNoaXBwaW5nQWRkcmVzc0xpbmUxOiBQLFxuICBzaGlwcGluZ0FkZHJlc3NMaW5lMjogUCxcbiAgc2hpcHBpbmdBZGRyZXNzTGluZTM6IFAsXG4gIHNoaXBwaW5nQWRkcmVzc0NpdHk6IFAsXG4gIHNoaXBwaW5nQWRkcmVzc1N0YXRlOiBQLFxuICBzaGlwcGluZ0FkZHJlc3NDb3VudHJ5OiBQLFxuICBzaGlwcGluZ0FkZHJlc3NaaXBDb2RlOiBQLFxuICBidXNpbmVzc05hbWU6IFAsXG4gIHRheElkOiBQLFxuICB0YXhJZFR5cGU6IFBcbn0pLCBZbyA9IHokMS5vYmplY3Qoe1xuICBlbWFpbDogVC5lbWFpbCh7IG1lc3NhZ2U6IFwiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiIH0pLFxuICBmaXJzdE5hbWU6IFAsXG4gIGxhc3ROYW1lOiBQLFxuICBwaG9uZTogUCxcbiAgcHJvbW90aW9uQ29kZTogUCxcbiAgbGluZTE6IFAsXG4gIGxpbmUyOiBQLFxuICBsaW5lMzogUCxcbiAgY2l0eTogUCxcbiAgc3RhdGU6IFAsXG4gIGNvdW50cnk6IFQsXG4gIHppcENvZGU6IFAsXG4gIGlzU2hpcHBpbmdTYW1lQXNCaWxsaW5nOiB6JDEuY3VzdG9tKCkub3B0aW9uYWwoKS5kZWZhdWx0KHRydWUpLFxuICBzaGlwcGluZ0FkZHJlc3NMaW5lMTogUCxcbiAgc2hpcHBpbmdBZGRyZXNzTGluZTI6IFAsXG4gIHNoaXBwaW5nQWRkcmVzc0xpbmUzOiBQLFxuICBzaGlwcGluZ0FkZHJlc3NDaXR5OiBQLFxuICBzaGlwcGluZ0FkZHJlc3NTdGF0ZTogUCxcbiAgc2hpcHBpbmdBZGRyZXNzQ291bnRyeTogUCxcbiAgc2hpcHBpbmdBZGRyZXNzWmlwQ29kZTogUCxcbiAgYnVzaW5lc3NOYW1lOiBQLFxuICB0YXhJZDogUCxcbiAgdGF4SWRUeXBlOiBQXG59KTtcbnokMS5vYmplY3Qoe1xuICBsaW5lMTogVCxcbiAgY2l0eTogVCxcbiAgc3RhdGU6IFQsXG4gIGNvdW50cnk6IFRcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNoaXBwaW5nQWRkcmVzc0NvdW50cnk6IFQsXG4gIHNoaXBwaW5nQWRkcmVzc1ppcENvZGU6IFRcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNoaXBwaW5nQWRkcmVzc0xpbmUxOiBULFxuICBzaGlwcGluZ0FkZHJlc3NDaXR5OiBULFxuICBzaGlwcGluZ0FkZHJlc3NTdGF0ZTogVCxcbiAgc2hpcHBpbmdBZGRyZXNzQ291bnRyeTogVCxcbiAgc2hpcHBpbmdBZGRyZXNzWmlwQ29kZTogVFxufSk7XG5jb25zdCBXbyA9IHBlLmV4dHJhY3QoW1wiVE9LRU5JWkVcIiwgXCJDSEVDS09VVFwiLCBcIlNUQVJUX1BBWU1FTlRfRkxPV1wiXSksIEpvID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IFdvLFxuICBzZXNzaW9uSWQ6IFQsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogRnQsXG4gIHBheW1lbnRGbG93TWV0YWRhdGE6IHokMS5hbnkoKS5vcHRpb25hbCgpLFxuICBkb05vdFVzZUxlZ2FjeUNDRmxvdzogeiQxLmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBleGlzdGluZ0NDUE1JZDogUCxcbiAgcGF5bWVudFJvdXRlSWQ6IFBcbn0pLmV4dGVuZChVZS5zaGFwZSksIFpvID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKHBlLmVudW0uVE9LRU5JWkVfU1VDQ0VTUyksXG4gIGlzUmVhZHlGb3JDaGVja291dDogeiQxLmJvb2xlYW4oKVxufSksIFFvID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5saXRlcmFsKHBlLmVudW0uQ0hFQ0tPVVRfU1VDQ0VTUyksXG4gIGludm9pY2VVcmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uSWRzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJJZDogeiQxLnN0cmluZygpLFxuICBwYXltZW50TWV0aG9kSWQ6IFBcbn0pLCBYbyA9IHokMS5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgVW8sXG4gIGpvLFxuICBHbyxcbiAgVm8sXG4gIHpvLFxuICBCbyxcbiAgSm8sXG4gIFpvLFxuICBRbyxcbiAgSG8sXG4gIEtvXG5dKSwgZWEgPSB6JDEub2JqZWN0KHtcbiAgcGF5bG9hZDogWG8sXG4gIG5vbmNlOiBULFxuICBmb3JtSWQ6IFQsXG4gIGVsZW1lbnRJZDogVFxufSk7XG56JDEub2JqZWN0KHtcbiAgYW1vdW50QXRvbTogeiQxLm51bWJlcigpLFxuICAvKipcbiAgICogVGhlIHRocmVlLWxldHRlciBJU08gNDIxNyBjdXJyZW5jeSBjb2RlIGZvciB0aGUgcGF5bWVudC5cbiAgICovXG4gIGN1cnJlbmN5OiBUXG59KTtcbnokMS5lbnVtKFtcImFwcGxlX3BheVwiLCBcImdvb2dsZV9wYXlcIl0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBleGlzdGluZ19jY19wbV9pZDogRCh6JDEuc3RyaW5nKCkpLFxuICB0aGVpcl9wbV9pZDogRCh6JDEuc3RyaW5nKCkpLFxuICBjaGVja291dF9hdHRlbXB0X2lkOiBEKHokMS5zdHJpbmcoKSksXG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogRCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xuY29uc3QgdHQgPSB6JDEub2JqZWN0KHtcbiAgaW52b2ljZV91cmxzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgc3Vic2NyaXB0aW9uX2lkczogeiQxLmFycmF5KHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2lkOiB6JDEuc3RyaW5nKCksXG4gIHBheW1lbnRfbWV0aG9kX2lkOiBEKHokMS5zdHJpbmcoKSksXG4gIHByb2Nlc3NvcnNfdXNlZDogRCh6JDEuYXJyYXkoeiQxLnN0cmluZygpKSlcbn0pLCB0YSA9IHokMS5vYmplY3Qoe1xuICBlbGVtZW50VHlwZTogeiQxLnN0cmluZygpLFxuICBlcnJvcnM6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgcmEgPSB6JDEub2JqZWN0KHtcbiAgc3VjY2VzczogeiQxLmxpdGVyYWwoZmFsc2UpLFxuICBlcnJvcl90eXBlOiB6JDEubGl0ZXJhbChcInZhbGlkYXRpb25fZXJyb3JcIiksXG4gIGVycm9yczogeiQxLmFycmF5KHRhKVxufSksIG5hID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInN1Y2Nlc3NcIiwgW1xuICB6JDEub2JqZWN0KHsgc3VjY2VzczogeiQxLmxpdGVyYWwodHJ1ZSkgfSksXG4gIHJhXG5dKTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBGdCxcbiAgbm9uX2NkZV9mb3JtX2ZpZWxkczogVWUsXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZXhpc3RpbmdfY2NfcG1faWQ6IEQoeiQxLnN0cmluZygpKSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLFxuICBwYXltZW50X3JvdXRlX2lkOiBEKHokMS5zdHJpbmcoKSksXG4gIGN1c3RvbWVyX2xhbmd1YWdlOiBEKHokMS5zdHJpbmcoKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlc3Npb25faWQ6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IEZ0LFxuICBub25fY2RlX2Zvcm1fZmllbGRzOiBVZSxcbiAgZXh0cmFfbWV0YWRhdGE6IHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpLm9wdGlvbmFsKCksXG4gIHBheW1lbnRfcm91dGVfaWQ6IEQoeiQxLnN0cmluZygpKSxcbiAgY3VzdG9tZXJfbGFuZ3VhZ2U6IEQoeiQxLnN0cmluZygpKVxufSk7XG52YXIgRiA9IC8qIEBfX1BVUkVfXyAqLyAoKGUpID0+IChlLlNVQ0NFU1MgPSBcInN1Y2Nlc3NcIiwgZS5GQUlMVVJFID0gXCJmYWlsdXJlXCIsIGUuQ0FOQ0VMTEVEID0gXCJjYW5jZWxsZWRcIiwgZSkpKEYgfHwge30pO1xuY29uc3QgbG4gPSB6JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXG4gICAgXCJzdWNjZXNzXCIsXG4gICAgXCJmYWlsdXJlXCIsXG4gICAgXCJjYW5jZWxsZWRcIlxuICAgIC8qIENBTkNFTExFRCAqL1xuICBdKSxcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaHJlZjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCkubnVsbGFibGUoKVxufSk7XG5jb25zdCBvYSA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogeiQxLnN0cmluZygpLFxuICBpbml0aWFsX2ludGVudF9pZDogeiQxLnN0cmluZygpLFxuICBjb25zZW50X2lkOiB6JDEuc3RyaW5nKCksXG4gIHRoZWlyX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKVxufSksIGFhID0geiQxLm9iamVjdCh7XG4gIGJhbmtfbmFtZTogeiQxLnN0cmluZygpLFxuICBkaXNwbGF5X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgcmVzb3VyY2VzOiB6JDEub2JqZWN0KHtcbiAgICBsb2dvX3VybDogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbiAgfSlcbn0pLCB1biA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIHJlZGlyZWN0X3VybDogRCh6JDEuc3RyaW5nKCkpLFxuICBpbml0aWFsX2ludGVudF9pZDogRCh6JDEuc3RyaW5nKCkpLFxuICBjb25zZW50X2lkOiBEKHokMS5zdHJpbmcoKSksXG4gIHRoZWlyX3BtX2lkOiBEKHokMS5zdHJpbmcoKSksXG4gIHBheW1lbnRfc2Vzc2lvbjogRCh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSksXG4gIGF2YWlsYWJsZV9iYW5rczogRCh6JDEuYXJyYXkoYWEpKVxufSksIGlhID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcInByZXNlbnRcIiwgW1xuICB6JDEub2JqZWN0KHsgcHJlc2VudDogeiQxLmxpdGVyYWwodHJ1ZSksIGhyZWY6IHokMS5zdHJpbmcoKSB9KSxcbiAgeiQxLm9iamVjdCh7IHByZXNlbnQ6IHokMS5saXRlcmFsKGZhbHNlKSB9KVxuXSksIHNhID0geiQxLm9iamVjdCh7XG4gIHBheW1lbnRfbWV0aG9kczogeiQxLmFycmF5KHhvKSxcbiAgcGF5X2ZpcnN0X3N1Y2Nlc3NfcmVzcG9uc2U6IEQodHQpLFxuICByZXF1aXJlZF91c2VyX2FjdGlvbnM6IEQoeiQxLmFycmF5KHVuKSksXG4gIHBvc3RfY2hlY2tvdXRfcmVkaXJlY3RfdG86IEQoeiQxLnN0cmluZygpKSxcbiAgY2hlY2tvdXRfc3VjY2Vzc19yZXNwb25zZTogRCh0dClcbn0pLCBjYSA9IHokMS5vYmplY3Qoe1xuICBpbnN0aXR1dGlvbk51bWJlcjogeiQxLnN0cmluZygpLFxuICB0cmFuc2l0TnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIGFjY291bnROdW1iZXI6IHokMS5zdHJpbmcoKSxcbiAgYWNjb3VudFR5cGU6IHokMS5lbnVtKFtcInBlcnNvbmFsXCIsIFwiYnVzaW5lc3NcIl0pXG59KTtcbnokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5lbnVtKFtcInN1Y2Nlc3NcIiwgXCJmYWlsdXJlXCJdKSxcbiAgcGF5bG9hZDogY2Eub3B0aW9uYWwoKVxufSk7XG5jb25zdCBsYSA9IHokMS5vYmplY3Qoe1xuICBzb3J0Q29kZTogeiQxLnN0cmluZygpLFxuICBhY2NvdW50TnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIGFjY291bnRUeXBlOiB6JDEuZW51bShbXCJwZXJzb25hbFwiLCBcImJ1c2luZXNzXCJdKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc3RhdHVzOiB6JDEuZW51bShbXCJzdWNjZXNzXCIsIFwiZmFpbHVyZVwiXSksXG4gIHBheWxvYWQ6IGxhLm9wdGlvbmFsKClcbn0pO1xuY29uc3QgdWEgPSB6JDEub2JqZWN0KHtcbiAgaWJhbjogeiQxLnN0cmluZygpLFxuICBhY2NvdW50VHlwZTogeiQxLmVudW0oW1wicGVyc29uYWxcIiwgXCJidXNpbmVzc1wiXSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmVudW0oW1wic3VjY2Vzc1wiLCBcImZhaWx1cmVcIl0pLFxuICBwYXlsb2FkOiB1YS5vcHRpb25hbCgpXG59KTtcbmNvbnN0IGRhID0geiQxLm9iamVjdCh7XG4gIGFjY291bnRfbnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIGFiYV9yb3V0aW5nX251bWJlcjogeiQxLnN0cmluZygpXG59KSwgcGEgPSB6JDEub2JqZWN0KHtcbiAgaW5zdGl0dXRpb25fbnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIHRyYW5zaXRfbnVtYmVyOiB6JDEuc3RyaW5nKCksXG4gIGFjY291bnRfbnVtYmVyOiB6JDEuc3RyaW5nKClcbn0pLCBtYSA9IHokMS5vYmplY3Qoe1xuICBhY2NvdW50X251bWJlcjogeiQxLnN0cmluZygpLFxuICBzb3J0X2NvZGU6IHokMS5zdHJpbmcoKVxufSksIGZhID0geiQxLm9iamVjdCh7XG4gIGliYW46IHokMS5zdHJpbmcoKVxufSksIF9hID0geiQxLm9iamVjdCh7XG4gIHN0YXR1czogeiQxLmVudW0oW1wic3VjY2Vzc1wiLCBcImZhaWx1cmVcIl0pLFxuICBwYXlsb2FkOiB6JDEudW5pb24oW1xuICAgIGRhLFxuICAgIHBhLFxuICAgIG1hLFxuICAgIGZhLFxuICAgIHokMS5vYmplY3QoeyBlcnJvcjogeiQxLnN0cmluZygpIH0pXG4gIF0pLm9wdGlvbmFsKClcbn0pLCBFID0gKGUpID0+IHokMS5udWxsYWJsZShlLm9wdGlvbmFsKCkpO1xueiQxLnN0cmluZygpLnRyaW0oKS5taW4oMSwgeyBtZXNzYWdlOiBcIkNhbm5vdCBiZSBibGFua1wiIH0pO1xuY29uc3QgeWEgPSB6JDEub2JqZWN0KHtcbiAgY2RlX3Jlc3BvbnNlX3R5cGU6IHokMS5saXRlcmFsKFwiZXJyb3JcIiksXG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKSxcbiAgaGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5zdHJpbmcoKSkub3B0aW9uYWwoKVxufSk7XG56JDEuZW51bShbXCJ1c2RcIiwgXCJicmxcIl0pO1xuY29uc3QgZG4gPSB6JDEub2JqZWN0KHtcbiAgbmFtZTogeiQxLnN0cmluZygpLFxuICBhbW91bnRfYXRvbV9vZmY6IEUoeiQxLm51bWJlcigpKSxcbiAgcGVyY2VudF9vZmY6IEUoeiQxLm51bWJlcigpKSxcbiAgY3VycmVuY3k6IEUoeiQxLnN0cmluZygpKSxcbiAgZHVyYXRpb246IHokMS5zdHJpbmcoKSxcbiAgZHVyYXRpb25faW5fbW9udGhzOiBFKHokMS5udW1iZXIoKSlcbn0pLCBwbiA9IHokMS5vYmplY3Qoe1xuICBhbW91bnRfc3VidG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBhbW91bnRfdG90YWxfYXRvbTogeiQxLm51bWJlcigpLmludCgpLFxuICBjdXJyZW5jeTogeiQxLnN0cmluZygpLFxuICBkZXNjcmlwdGlvbjogRSh6JDEuc3RyaW5nKCkpLFxuICBwcmljZV9pZDogeiQxLnN0cmluZygpLFxuICBiaWxsaW5nX2ludGVydmFsOiBFKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfaW50ZXJ2YWxfY291bnQ6IEUoeiQxLm51bWJlcigpLmludCgpKSxcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKS5pbnQoKVxufSksIGhhID0geiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksIGdhID0geiQxLm9iamVjdCh7XG4gIG5hbWU6IHokMS5zdHJpbmcoKSxcbiAgc2V0dGluZ3M6IEUoaGEpXG59KSwgcWUgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgcHJvY2Vzc29yX25hbWU6IEUoeiQxLnN0cmluZygpKSxcbiAgbWV0YWRhdGE6IEUoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpXG59KSwgd2EgPSB6JDEub2JqZWN0KHtcbiAgcXVhbnRpdHk6IHokMS5udW1iZXIoKVxufSksIHZhID0geiQxLm9iamVjdCh7XG4gIGlkOiBFKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfaW50ZXJ2YWw6IEUoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19pbnRlcnZhbF9jb3VudDogRSh6JDEubnVtYmVyKCkuaW50KCkpLFxuICBzdWJzY3JpcHRpb25faXRlbXM6IHokMS5hcnJheSh3YSksXG4gIHRyaWFsX3N0YXJ0OiBFKHokMS5zdHJpbmcoKSksXG4gIHRyaWFsX2VuZDogRSh6JDEuc3RyaW5nKCkpXG59KSwgbW4gPSB6JDEub2JqZWN0KHtcbiAgYW1vdW50X2F0b206IHokMS5udW1iZXIoKVxufSksIGJhID0geiQxLm9iamVjdCh7XG4gIGFtb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIGFtb3VudF9hdG9tX2NvbnNpZGVyaW5nX2Rpc2NvdW50X2FwcGxpZWQ6IHokMS5udW1iZXIoKSxcbiAgY3VycmVuY3k6IHokMS5zdHJpbmcoKSxcbiAgZGlzY291bnRfYW1vdW50X2F0b21zOiB6JDEuYXJyYXkobW4pLFxuICBzdWJzY3JpcHRpb25faXRlbV9pZDogeiQxLnN0cmluZygpXG59KSwgUGEgPSB6JDEub2JqZWN0KHtcbiAgY291cG9uOiBkblxufSksIEVhID0geiQxLm9iamVjdCh7XG4gIGN1cnJlbmN5OiB6JDEuc3RyaW5nKCksXG4gIGRpc2NvdW50czogeiQxLmFycmF5KFBhKSxcbiAgaG9zdGVkX2ludm9pY2VfdXJsOiBFKHokMS5zdHJpbmcoKSksXG4gIGxpbmVzOiB6JDEuYXJyYXkoYmEpLFxuICByZW1haW5pbmdfYW1vdW50X2F0b206IHokMS5udW1iZXIoKSxcbiAgdGF4X2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRvdGFsX2Ftb3VudF9hdG9tOiB6JDEubnVtYmVyKCksXG4gIHRvdGFsX2Rpc2NvdW50X2Ftb3VudF9hdG9tczogeiQxLmFycmF5KG1uKVxufSksIEFyID0geiQxLm9iamVjdCh7XG4gIGNyZWF0ZWQ6IHokMS5hcnJheSh2YSksXG4gIGludm9pY2VzOiB6JDEuYXJyYXkoRWEpLFxuICBwcm9jZXNzb3JzX3VzZWQ6IEUoeiQxLmFycmF5KHokMS5zdHJpbmcoKSkpLFxuICBwYXltZW50X21ldGhvZF9pZDogRSh6JDEuc3RyaW5nKCkpXG59KSwgZm4gPSB6JDEub2JqZWN0KHtcbiAgcHJldmlldzogQXIsXG4gIHByZXZpZXdfcG9zdF90cmlhbDogRShBciksXG4gIGNvdXBvbnM6IHokMS5hcnJheShkbilcbn0pLCBTciA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwib3BlblwiKSxcbiAgbG9jYWxlOiBFKHokMS5zdHJpbmcoKSksXG4gIHRva2VuOiB6JDEuc3RyaW5nKCksXG4gIGVtYWlsOiBFKHokMS5zdHJpbmcoKSksXG4gIGNoZWNrb3V0X3NldHRpbmdzOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSxcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KHBuKSxcbiAgYW1vdW50X3N1YnRvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYW1vdW50X3RvdGFsX2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgYnJhbmQ6IGdhLFxuICBzdWJzX3ByZXZpZXc6IEUoZm4pLFxuICAvLyBOdWxsIGluIHNldHVwIG1vZGVcbiAgbWV0aG9kc19hdmFpbGFibGU6IHokMS5hcnJheShxZSksXG4gIHJldHVybl91cmw6IEUoeiQxLnN0cmluZygpKSxcbiAgc3VjY2Vzc191cmw6IEUoeiQxLnN0cmluZygpKSxcbiAgZmluYWxfZmVhdHVyZV9yb2xsb3V0X3NldHRpbmdzOiBFKHokMS5yZWNvcmQoeiQxLnN0cmluZygpLCB6JDEuYW55KCkpKVxufSksIF9uID0geiQxLmRpc2NyaW1pbmF0ZWRVbmlvbihcIm1vZGVcIiwgW1xuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEubGl0ZXJhbChcInNldHVwXCIpLFxuICAgIGN1cnJlbmN5OiB6JDEubnVsbGFibGUoeiQxLnVuZGVmaW5lZCgpKVxuICB9KS5leHRlbmQoU3Iuc2hhcGUpLFxuICB6JDEub2JqZWN0KHtcbiAgICBtb2RlOiB6JDEuZW51bShbXCJwYXltZW50XCIsIFwic3Vic2NyaXB0aW9uXCJdKSxcbiAgICBjdXJyZW5jeTogeiQxLnN0cmluZygpXG4gIH0pLmV4dGVuZChTci5zaGFwZSlcbl0pLCBDYSA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiY29tcGxldGVcIilcbn0pLCBBYSA9IHokMS5vYmplY3Qoe1xuICBzdGF0dXM6IHokMS5saXRlcmFsKFwiZXhwaXJlZFwiKVxufSk7XG56JDEudW5pb24oW19uLCBDYSwgQWFdKTtcbnokMS5vYmplY3Qoe1xuICBsb2dvOiB6JDEuc3RyaW5nKCksXG4gIGljb246IHokMS5zdHJpbmcoKSxcbiAgcHJpbWFyeV9jb2xvcjogeiQxLnN0cmluZygpLFxuICBzZWNvbmRhcnlfY29sb3I6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgc2VjdXJlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gIHBtX2lkOiB6JDEuc3RyaW5nKClcbn0pO1xuY29uc3QgUHQgPSB6JDEub2JqZWN0KHtcbiAgbGluZTE6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBsaW5lMjogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGxpbmUzOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY2l0eTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHN0YXRlOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY291bnRyeTogeiQxLnN0cmluZygpLFxuICB6aXBfY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIHNlY3VyZV90b2tlbjogeiQxLnN0cmluZygpLFxuICBwYXltZW50X2lucHV0OiB6JDEuYW55KCksXG4gIC8vIFNob3VsZCBmb2xsb3cgQW55UGF5bWVudElucHV0IGZyb20gQ0RFXG4gIGN1c3RvbWVyX2VtYWlsOiB6JDEuc3RyaW5nKCksXG4gIGN1c3RvbWVyX2xhc3RfbmFtZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGN1c3RvbWVyX2ZpcnN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9hZGRyZXNzOiBQdCxcbiAgY3VzdG9tZXJfc2hpcHBpbmdfYWRkcmVzczogUHQub3B0aW9uYWwoKSxcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KHBuKSxcbiAgdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKS5pbnQoKSxcbiAgY2FuY2VsX2F0X2VuZDogeiQxLmJvb2xlYW4oKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHFlLFxuICBwcm9tb3Rpb25fY29kZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRvX25vdF91c2VfbGVnYWN5X2NjX2Zsb3c6IHokMS5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdXNlX2NvbmZpcm1lZF9wbV9pZDogRSh6JDEuc3RyaW5nKCkpLFxuICBwYXltZW50X3JvdXRlX2lkOiBFKHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgeW4gPSB6JDEub2JqZWN0KHtcbiAgcGF5bWVudF9tZXRob2RfaWQ6IHokMS5zdHJpbmcoKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKSxcbiAgcmV0dXJuX3VybDogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IFNhID0geiQxLm9iamVjdCh7XG4gIHR5cGU6IHokMS5zdHJpbmcoKSxcbiAgbG9jOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgbXNnOiB6JDEuc3RyaW5nKCksXG4gIHVybDogeiQxLnN0cmluZygpXG59KTtcbnokMS5hcnJheShTYSk7XG5jb25zdCBrYSA9IHokMS5vYmplY3Qoe1xuICBuZXdfY3VzdG9tZXJfZW1haWw6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfbGFzdF9uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbmV3X2N1c3RvbWVyX2ZpcnN0X25hbWU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9idXNpbmVzc19uYW1lOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfdGF4X2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfdGF4X2lkX3R5cGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuZXdfY3VzdG9tZXJfYWRkcmVzczogUHQsXG4gIG5ld19jdXN0b21lcl9zaGlwcGluZ19hZGRyZXNzOiBQdC5vcHRpb25hbCgpLFxuICBjdXN0b21lcl9sYW5ndWFnZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5ld19jdXN0b21lcl9waG9uZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKClcbn0pLCBJYSA9IHokMS5vYmplY3Qoe1xuICBwcmljZV9pZDogeiQxLnN0cmluZygpLFxuICBxdWFudGl0eTogeiQxLm51bWJlcigpLmludCgpXG59KSwgaG4gPSB6JDEub2JqZWN0KHtcbiAgbGluZV9pdGVtczogeiQxLmFycmF5KElhKSxcbiAgcHJvbW90aW9uX2NvZGU6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IHokMS5udW1iZXIoKS5pbnQoKVxufSksIFJhID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YTogRSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIHBheW1lbnRfcHJvdmlkZXI6IHokMS5zdHJpbmcoKSxcbiAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHFlLFxuICBleGlzdGluZ19jY19wbV9pZDogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRoZWlyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdXNlX3BheV9maXJzdF9mbG93OiB6JDEuYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogaG4ub3B0aW9uYWwoKSxcbiAgY3VzdG9tZXJfbGFuZ3VhZ2U6IHokMS5zdHJpbmcoKS5vcHRpb25hbCgpXG59KS5leHRlbmQoa2Euc2hhcGUpLmV4dGVuZChSYS5zaGFwZSk7XG5jb25zdCBnbiA9IHokMS5vYmplY3Qoe1xuICByZXF1aXJlZF91c2VyX2FjdGlvbnM6IHokMS5hcnJheSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSksXG4gIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IEUoeiQxLnN0cmluZygpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgZmllbGRzOiBZbyxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBxZSxcbiAgcGF5bWVudF9yb3V0ZV9pZDogRSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5vYmplY3Qoe1xuICBzZXNzaW9uX2lkOiB6JDEuc3RyaW5nKCksXG4gIG5vbl9jZGVfZm9ybV9maWVsZHM6IFVlLFxuICBjaGVja291dF9wYXltZW50X21ldGhvZDogcWUsXG4gIGV4dHJhX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSxcbiAgLy8gVGhpcyBpcyBvcHRpb25hbCBpbiBDREUsIGJ1dCBub3QgaW4gT0pTIG1vdmluZyBmb3J3YXJkXG4gIHVzZV91bmlmaWVkX2NjX2Zsb3c6IEUoeiQxLmJvb2xlYW4oKSksXG4gIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogaG4ub3B0aW9uYWwoKSxcbiAgcGF5bWVudF9yb3V0ZV9pZDogRSh6JDEuc3RyaW5nKCkpLFxuICBjdXN0b21lcl9sYW5ndWFnZTogeiQxLnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGV4aXN0aW5nX2NjX3BtX2lkOiBFKHokMS5zdHJpbmcoKSlcbn0pO1xuY29uc3QgRmEgPSB6JDEub2JqZWN0KHtcbiAgcmVxdWlyZWRfdXNlcl9hY3Rpb25zOiB6JDEuYXJyYXkoeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSkpLFxuICBjY19wbV9pZDogeiQxLnN0cmluZygpLFxuICBjaGVja291dF9zdWNjZXNzX3Jlc3BvbnNlOiBFKHR0KSxcbiAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogRSh6JDEuc3RyaW5nKCkpXG59KTtcbnokMS5yZWNvcmQoeiQxLmFueSgpKTtcbnokMS5vYmplY3Qoe1xuICBmaXJzdF9uYW1lOiBFKHokMS5zdHJpbmcoKSksXG4gIGxhc3RfbmFtZTogRSh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMTogRSh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMjogRSh6JDEuc3RyaW5nKCkpLFxuICBsaW5lMzogRSh6JDEuc3RyaW5nKCkpLFxuICBjaXR5OiBFKHokMS5zdHJpbmcoKSksXG4gIHN0YXRlOiBFKHokMS5zdHJpbmcoKSksXG4gIGNvdW50cnk6IEUoeiQxLnN0cmluZygpKSxcbiAgemlwX2NvZGU6IEUoeiQxLnN0cmluZygpKSxcbiAgZW1haWw6IEUoeiQxLnN0cmluZygpKSxcbiAgYmlsbGluZ19lbWFpbDogRSh6JDEuc3RyaW5nKCkpLFxuICBwaG9uZV9udW1iZXI6IEUoeiQxLnN0cmluZygpKSxcbiAgYnVzaW5lc3NfbmFtZTogRSh6JDEuc3RyaW5nKCkpLFxuICB0YXhfaWQ6IEUoeiQxLnN0cmluZygpKSxcbiAgdGF4X2lkX3R5cGU6IEUoeiQxLnN0cmluZygpKSxcbiAgdXBkYXRlX3Byb2Nlc3Nvcl9jdXN0b21lcjogRSh6JDEuYm9vbGVhbigpKVxufSk7XG56JDEub2JqZWN0KHtcbiAgaWQ6IHokMS5zdHJpbmcoKSxcbiAgZW1haWw6IEUoeiQxLnN0cmluZygpKSxcbiAgZmlyc3RfbmFtZTogRSh6JDEuc3RyaW5nKCkpLFxuICBsYXN0X25hbWU6IEUoeiQxLnN0cmluZygpKSxcbiAgcGhvbmVfbnVtYmVyOiBFKHokMS5zdHJpbmcoKSksXG4gIGJpbGxpbmdfZW1haWw6IEUoeiQxLnN0cmluZygpKSxcbiAgYWRkcmVzczogRSh6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIG1lc3NhZ2U6IHokMS5zdHJpbmcoKVxufSk7XG5jb25zdCBUYSA9IHokMS5vYmplY3Qoe1xuICBlcnJvcl9jb2RlOiB6JDEuc3RyaW5nKClcbn0pO1xueiQxLm9iamVjdCh7XG4gIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiBxZSxcbiAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB6JDEucmVjb3JkKHokMS5hbnkoKSkub3B0aW9uYWwoKSxcbiAgcGF5bWVudF9yb3V0ZV9pZDogRSh6JDEuc3RyaW5nKCkpXG59KTtcbmNvbnN0IE5hID0geiQxLm9iamVjdCh7XG4gIG5leHRfYWN0aW9uX21ldGFkYXRhOiBFKHokMS5yZWNvcmQoeiQxLmFueSgpKSlcbn0pO1xueiQxLm9iamVjdCh7XG4gIGV2ZW50czogeiQxLmFycmF5KFxuICAgIHokMS5vYmplY3Qoe1xuICAgICAgZXZlbnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgICAgZGV2aWNlX3Rva2VuOiB6JDEuc3RyaW5nKCksXG4gICAgICBwcm9wZXJ0aWVzOiB6JDEucmVjb3JkKHokMS5hbnkoKSkub3B0aW9uYWwoKSxcbiAgICAgIGNvbnRleHRfcHJvcGVydGllczogeiQxLnJlY29yZCh6JDEuYW55KCkpLm9wdGlvbmFsKClcbiAgICB9KVxuICApXG59KTtcbnokMS5hbnkoKS5vcHRpb25hbCgpO1xueiQxLm9iamVjdCh7XG4gIGRldmljZV90b2tlbjogeiQxLnN0cmluZygpXG59KTtcbmNvbnN0IExhID0geiQxLm9iamVjdCh7fSksIE1hID0geiQxLm9iamVjdCh7XG4gIF91bmlmaWVkX2NjX2FjdGlvbl9uYW1lOiB6JDEuc3RyaW5nKCksXG4gIF91bmlmaWVkX2NjX3BjY3NfaWQ6IHokMS5zdHJpbmcoKVxufSkuY2F0Y2hhbGwoeiQxLmFueSgpKSwgeGEgPSB6JDEub2JqZWN0KHtcbiAgdHlwZTogeiQxLnN0cmluZygpLFxuICBsb2M6IHokMS5hcnJheSh6JDEuc3RyaW5nKCkpLFxuICBtc2c6IHokMS5zdHJpbmcoKSxcbiAgdXJsOiB6JDEuc3RyaW5nKClcbn0pLCBEYSA9IHokMS5hcnJheSh4YSksIFVhID0geiQxLm9iamVjdCh7XG4gIGNvZGU6IHokMS5zdHJpbmcoKSxcbiAgbWVzc2FnZTogeiQxLnN0cmluZygpLFxuICBwYXRoOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKVxufSksIE9hID0geiQxLmFycmF5KFVhKSwgamEgPSB7XG4gIFwiZmFpbGVkIHRvIGZldGNoXCI6IFwiQ29ubmVjdGlvbiBlcnJvcjogcGxlYXNlIGRvdWJsZSBjaGVjayBpZiB5b3UgYXJlIGNvbm5lY3RlZCB0byB0aGUgaW50ZXJuZXQsIHRoZW4gdHJ5IGFnYWluXCJcbn0sIFp0ID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IGUudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gIHJldHVybiBqYVt0XSA/PyBlO1xufSwgJGEgPSAoZSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2YgSlNPTi5wYXJzZShlKSA9PSBcIm9iamVjdFwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0sIEdhID0gKGUpID0+IGUubGVuZ3RoID09PSAxID8gWnQoZVswXS5tc2cpIDogYFBsZWFzZSBmaXggdGhlIGZvbGxvd2luZyBlcnJvcnM6XG4ke2UubWFwKChyKSA9PiBg4oCiICR7WnQoci5tc2cpfWApLmpvaW4oYFxuYCl9YCwgcWEgPSAoZSkgPT4gYEVuY291bnRlcmVkIHRoZSBmb2xsb3dpbmcgZXJyb3JzOlxuJHtlLm1hcCgocikgPT4gYC0gJHtyLnBhdGguam9pbihcIi9cIil9OiAke3IubWVzc2FnZX1gKS5qb2luKGBcbmApfWAsIGFlID0gKGUpID0+IHtcbiAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcilcbiAgICBpZiAoJGEoZS5tZXNzYWdlKSkge1xuICAgICAgY29uc3QgdCA9IEpTT04ucGFyc2UoZS5tZXNzYWdlKTtcbiAgICAgIHJldHVybiBEYS5zYWZlUGFyc2UodCkuc3VjY2VzcyA/IEdhKHQpIDogT2Euc2FmZVBhcnNlKHQpLnN1Y2Nlc3MgPyBxYSh0KSA6IChjb25zb2xlLndhcm4oYEVuY291bnRlcmVkIHVua25vd24gc3RyaW5naWZpZWQgSlNPTiBvYmplY3Q6XG4ke2UubWVzc2FnZX1gKSwgZS5tZXNzYWdlKTtcbiAgICB9IGVsc2VcbiAgICAgIHJldHVybiBadChlLm1lc3NhZ2UpO1xuICBpZiAodHlwZW9mIGUgPT0gXCJvYmplY3RcIilcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpO1xuICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgIHJldHVybiB0ICsgXCJcIjtcbiAgICB9XG4gIGVsc2VcbiAgICByZXR1cm4gZSArIFwiXCI7XG59LCBWYSA9IChlLCB0LCByKSA9PiAoKC4uLm4pID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdCguLi5uKTtcbiAgfSBjYXRjaCAoYSkge1xuICAgIHIoYFtmb3JtXSBFcnJvciBydW5uaW5nIGNhbGxiYWNrICgke2V9KTpgLCBhKTtcbiAgICByZXR1cm47XG4gIH1cbn0pLCB6YSA9IChlKSA9PiBlLnJlZHVjZSgodCwgcikgPT4gdCArIHIsIDApLCB3biA9IChlKSA9PiB7XG4gIGUucHJldmVudERlZmF1bHQoKSwgZS5yZXR1cm5WYWx1ZSA9IHRydWU7XG59LCBCYSA9ICgpID0+IHtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwgd24pO1xufSwgSGEgPSAoKSA9PiB7XG4gIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIHduKTtcbn0sIFYgPSAoZSkgPT4ge1xuICBsZXQgdCA9IGZhbHNlO1xuICByZXR1cm4gYXN5bmMgKHIpID0+IHtcbiAgICBpZiAodCkge1xuICAgICAgY29uc29sZS53YXJuKFwiU2tpcHBpbmcgc3VibWlzc2lvbiBiZWNhdXNlIGl0IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICByLmNvbnRleHQucHJldmVudE5hdmlnYXRpb25EdXJpbmdTdWJtaXNzaW9uICYmIEJhKCksIHIuZm9ybUNhbGxiYWNrcy5nZXQub25DaGVja291dFN0YXJ0ZWQ/LigpLCB2KFwiY2hlY2tvdXRfc3RhcnRlZFwiLCB7XG4gICAgICAgIGNwbTogci5jaGVja291dFBheW1lbnRNZXRob2RcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbiA9IGF3YWl0IGUocik7XG4gICAgICBpZiAodihcImNoZWNrb3V0X3N1Y2Nlc3NcIiwge1xuICAgICAgICBjcG06IHIuY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgICAuLi5uXG4gICAgICB9KSwgSGkoKSwgbi5tb2RlID09PSBcInNldHVwXCIpXG4gICAgICAgIHIuZm9ybUNhbGxiYWNrcy5nZXQub25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzKG4ucmVzdWx0LnBheW1lbnRfbWV0aG9kX2lkKTtcbiAgICAgIGVsc2UgaWYgKG4ubW9kZSA9PT0gXCJjaGVja291dFwiKVxuICAgICAgICByLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQ2hlY2tvdXRTdWNjZXNzKFxuICAgICAgICAgIG4ucmVzdWx0Lmludm9pY2VfdXJscyxcbiAgICAgICAgICBuLnJlc3VsdC5zdWJzY3JpcHRpb25faWRzLFxuICAgICAgICAgIG4ucmVzdWx0LmN1c3RvbWVyX2lkLFxuICAgICAgICAgIG4ucmVzdWx0LnByb2Nlc3NvcnNfdXNlZCA/PyBbXSxcbiAgICAgICAgICBuLnJlc3VsdC5wYXltZW50X21ldGhvZF9pZCA/PyBcIlwiXG4gICAgICAgICk7XG4gICAgICBlbHNlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIG1vZGU6ICR7bn1gKTtcbiAgICB9IGNhdGNoIChuKSB7XG4gICAgICB0ID0gZmFsc2U7XG4gICAgICBjb25zdCBhID0gYWUobiksIGkgPSBhd2FpdCBqbihyLmNvbnRleHQuYW55Q2RlQ29ubmVjdGlvbiwgYSk7XG4gICAgICByLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQ2hlY2tvdXRFcnJvcihhLCBpKSwgdihcImNoZWNrb3V0X2Vycm9yXCIsIHsgY3BtOiByLmNoZWNrb3V0UGF5bWVudE1ldGhvZCwgZXJyb3JNZXNzYWdlOiBhLCBlcnJvckNvZGU6IGksIGVycm9yOiBuIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0ID0gZmFsc2UsIHIuY29udGV4dC5wcmV2ZW50TmF2aWdhdGlvbkR1cmluZ1N1Ym1pc3Npb24gJiYgSGEoKTtcbiAgICB9XG4gIH07XG59LCBjZSA9IChlKSA9PiBhc3luYyAodCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBlKHQpO1xuICB9IGNhdGNoIChyKSB7XG4gICAgY29uc3QgeyBlcnJfXzogbiB9ID0gayhcImluaXQtZXJyb3ItY2F0Y2hlclwiKSwgYSA9IGFlKHIpLCBpID0gYXdhaXQgam4odC5jb250ZXh0LmFueUNkZUNvbm5lY3Rpb24sIGEpO1xuICAgIHJldHVybiBuKGksIGEsIHIpLCB2KFwiaW5pdF9mbG93X2Vycm9yXCIsIHsgZXJyb3JNZXNzYWdlOiBhLCBlcnJvckNvZGU6IGksIGVycm9yOiByIH0pLCB7IGlzQXZhaWxhYmxlOiBmYWxzZSwgcmVhc29uOiBhLCBlcnJvckNvZGU6IGksIGlzTG9hZGluZzogZmFsc2UgfTtcbiAgfVxufSwgayA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSAoLi4ubikgPT4ge1xuICAgIHdpbmRvdy5jb25zb2xlLmxvZyhgJHtjaGFsay5ncmVlbi5ib2xkKFwib2pzL1wiKX0ke2NoYWxrLmJvbGQuZ3JheShgJHtlfWApfVx0YCwgLi4ubik7XG4gIH0sIHIgPSAoLi4ubikgPT4ge1xuICAgIHdpbmRvdy5jb25zb2xlLndhcm4oYCR7Y2hhbGsucmVkLmJvbGQoXCJvanMvXCIpfSR7Y2hhbGsuYm9sZC5ncmF5KGAke2V9YCl9XHRgLCAuLi5uKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBsb2c6IHQsXG4gICAgZXJyOiByLFxuICAgIGxvZ19fOiB0LFxuICAgIGVycl9fOiByXG4gIH07XG59O1xudmFyIFF0ID0gZnVuY3Rpb24oZSwgdCkge1xuICByZXR1cm4gUXQgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihyLCBuKSB7XG4gICAgci5fX3Byb3RvX18gPSBuO1xuICB9IHx8IGZ1bmN0aW9uKHIsIG4pIHtcbiAgICBmb3IgKHZhciBhIGluIG4pIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCBhKSAmJiAoclthXSA9IG5bYV0pO1xuICB9LCBRdChlLCB0KTtcbn07XG5mdW5jdGlvbiBFZShlLCB0KSB7XG4gIGlmICh0eXBlb2YgdCAhPSBcImZ1bmN0aW9uXCIgJiYgdCAhPT0gbnVsbClcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyh0KSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gIFF0KGUsIHQpO1xuICBmdW5jdGlvbiByKCkge1xuICAgIHRoaXMuY29uc3RydWN0b3IgPSBlO1xuICB9XG4gIGUucHJvdG90eXBlID0gdCA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUodCkgOiAoci5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IHIoKSk7XG59XG5mdW5jdGlvbiBLYShlLCB0LCByLCBuKSB7XG4gIGZ1bmN0aW9uIGEoaSkge1xuICAgIHJldHVybiBpIGluc3RhbmNlb2YgciA/IGkgOiBuZXcgcihmdW5jdGlvbihzKSB7XG4gICAgICBzKGkpO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBuZXcgKHIgfHwgKHIgPSBQcm9taXNlKSkoZnVuY3Rpb24oaSwgcykge1xuICAgIGZ1bmN0aW9uIGwoZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdShuLm5leHQoZCkpO1xuICAgICAgfSBjYXRjaCAobSkge1xuICAgICAgICBzKG0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBjKGQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHUobi50aHJvdyhkKSk7XG4gICAgICB9IGNhdGNoIChtKSB7XG4gICAgICAgIHMobSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHUoZCkge1xuICAgICAgZC5kb25lID8gaShkLnZhbHVlKSA6IGEoZC52YWx1ZSkudGhlbihsLCBjKTtcbiAgICB9XG4gICAgdSgobiA9IG4uYXBwbHkoZSwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHZuKGUsIHQpIHtcbiAgdmFyIHIgPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHtcbiAgICBpZiAoaVswXSAmIDEpIHRocm93IGlbMV07XG4gICAgcmV0dXJuIGlbMV07XG4gIH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIG4sIGEsIGksIHMgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgSXRlcmF0b3IgPT0gXCJmdW5jdGlvblwiID8gSXRlcmF0b3IgOiBPYmplY3QpLnByb3RvdHlwZSk7XG4gIHJldHVybiBzLm5leHQgPSBsKDApLCBzLnRocm93ID0gbCgxKSwgcy5yZXR1cm4gPSBsKDIpLCB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiAoc1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pLCBzO1xuICBmdW5jdGlvbiBsKHUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oZCkge1xuICAgICAgcmV0dXJuIGMoW3UsIGRdKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGModSkge1xuICAgIGlmIChuKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICBmb3IgKDsgcyAmJiAocyA9IDAsIHVbMF0gJiYgKHIgPSAwKSksIHI7ICkgdHJ5IHtcbiAgICAgIGlmIChuID0gMSwgYSAmJiAoaSA9IHVbMF0gJiAyID8gYS5yZXR1cm4gOiB1WzBdID8gYS50aHJvdyB8fCAoKGkgPSBhLnJldHVybikgJiYgaS5jYWxsKGEpLCAwKSA6IGEubmV4dCkgJiYgIShpID0gaS5jYWxsKGEsIHVbMV0pKS5kb25lKSByZXR1cm4gaTtcbiAgICAgIHN3aXRjaCAoYSA9IDAsIGkgJiYgKHUgPSBbdVswXSAmIDIsIGkudmFsdWVdKSwgdVswXSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpID0gdTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiByLmxhYmVsKyssIHsgdmFsdWU6IHVbMV0sIGRvbmU6ICExIH07XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgICByLmxhYmVsKyssIGEgPSB1WzFdLCB1ID0gWzBdO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgdSA9IHIub3BzLnBvcCgpLCByLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGkgPSByLnRyeXMsICEoaSA9IGkubGVuZ3RoID4gMCAmJiBpW2kubGVuZ3RoIC0gMV0pICYmICh1WzBdID09PSA2IHx8IHVbMF0gPT09IDIpKSB7XG4gICAgICAgICAgICByID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gMyAmJiAoIWkgfHwgdVsxXSA+IGlbMF0gJiYgdVsxXSA8IGlbM10pKSB7XG4gICAgICAgICAgICByLmxhYmVsID0gdVsxXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodVswXSA9PT0gNiAmJiByLmxhYmVsIDwgaVsxXSkge1xuICAgICAgICAgICAgci5sYWJlbCA9IGlbMV0sIGkgPSB1O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpICYmIHIubGFiZWwgPCBpWzJdKSB7XG4gICAgICAgICAgICByLmxhYmVsID0gaVsyXSwgci5vcHMucHVzaCh1KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpWzJdICYmIHIub3BzLnBvcCgpLCByLnRyeXMucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB1ID0gdC5jYWxsKGUsIHIpO1xuICAgIH0gY2F0Y2ggKGQpIHtcbiAgICAgIHUgPSBbNiwgZF0sIGEgPSAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBuID0gaSA9IDA7XG4gICAgfVxuICAgIGlmICh1WzBdICYgNSkgdGhyb3cgdVsxXTtcbiAgICByZXR1cm4geyB2YWx1ZTogdVswXSA/IHVbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgfVxufVxuZnVuY3Rpb24gT2UoZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgciA9IHQgJiYgZVt0XSwgbiA9IDA7XG4gIGlmIChyKSByZXR1cm4gci5jYWxsKGUpO1xuICBpZiAoZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBlICYmIG4gPj0gZS5sZW5ndGggJiYgKGUgPSB2b2lkIDApLCB7IHZhbHVlOiBlICYmIGVbbisrXSwgZG9uZTogIWUgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IodCA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn1cbmZ1bmN0aW9uIEV0KGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBhLCBpID0gW10sIHM7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoIChsKSB7XG4gICAgcyA9IHsgZXJyb3I6IGwgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHMpIHRocm93IHMuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufVxuZnVuY3Rpb24gQ3QoZSwgdCwgcikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSB0Lmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gdCkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwgMCwgbikpLCBpW25dID0gdFtuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKTtcbn1cbmZ1bmN0aW9uIE1lKGUpIHtcbiAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBNZSA/ICh0aGlzLnYgPSBlLCB0aGlzKSA6IG5ldyBNZShlKTtcbn1cbmZ1bmN0aW9uIFlhKGUsIHQsIHIpIHtcbiAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgdmFyIG4gPSByLmFwcGx5KGUsIHQgfHwgW10pLCBhLCBpID0gW107XG4gIHJldHVybiBhID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEFzeW5jSXRlcmF0b3IgPT0gXCJmdW5jdGlvblwiID8gQXN5bmNJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKSwgbChcIm5leHRcIiksIGwoXCJ0aHJvd1wiKSwgbChcInJldHVyblwiLCBzKSwgYVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSwgYTtcbiAgZnVuY3Rpb24gcyh5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXykudGhlbih5LCBtKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGwoeSwgXykge1xuICAgIG5beV0gJiYgKGFbeV0gPSBmdW5jdGlvbihnKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odywgaCkge1xuICAgICAgICBpLnB1c2goW3ksIGcsIHcsIGhdKSA+IDEgfHwgYyh5LCBnKTtcbiAgICAgIH0pO1xuICAgIH0sIF8gJiYgKGFbeV0gPSBfKGFbeV0pKSk7XG4gIH1cbiAgZnVuY3Rpb24gYyh5LCBfKSB7XG4gICAgdHJ5IHtcbiAgICAgIHUoblt5XShfKSk7XG4gICAgfSBjYXRjaCAoZykge1xuICAgICAgZihpWzBdWzNdLCBnKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gdSh5KSB7XG4gICAgeS52YWx1ZSBpbnN0YW5jZW9mIE1lID8gUHJvbWlzZS5yZXNvbHZlKHkudmFsdWUudikudGhlbihkLCBtKSA6IGYoaVswXVsyXSwgeSk7XG4gIH1cbiAgZnVuY3Rpb24gZCh5KSB7XG4gICAgYyhcIm5leHRcIiwgeSk7XG4gIH1cbiAgZnVuY3Rpb24gbSh5KSB7XG4gICAgYyhcInRocm93XCIsIHkpO1xuICB9XG4gIGZ1bmN0aW9uIGYoeSwgXykge1xuICAgIHkoXyksIGkuc2hpZnQoKSwgaS5sZW5ndGggJiYgYyhpWzBdWzBdLCBpWzBdWzFdKTtcbiAgfVxufVxuZnVuY3Rpb24gV2EoZSkge1xuICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xuICB2YXIgdCA9IGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCByO1xuICByZXR1cm4gdCA/IHQuY2FsbChlKSA6IChlID0gdHlwZW9mIE9lID09IFwiZnVuY3Rpb25cIiA/IE9lKGUpIDogZVtTeW1ib2wuaXRlcmF0b3JdKCksIHIgPSB7fSwgbihcIm5leHRcIiksIG4oXCJ0aHJvd1wiKSwgbihcInJldHVyblwiKSwgcltTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSwgcik7XG4gIGZ1bmN0aW9uIG4oaSkge1xuICAgIHJbaV0gPSBlW2ldICYmIGZ1bmN0aW9uKHMpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihsLCBjKSB7XG4gICAgICAgIHMgPSBlW2ldKHMpLCBhKGwsIGMsIHMuZG9uZSwgcy52YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGEoaSwgcywgbCwgYykge1xuICAgIFByb21pc2UucmVzb2x2ZShjKS50aGVuKGZ1bmN0aW9uKHUpIHtcbiAgICAgIGkoeyB2YWx1ZTogdSwgZG9uZTogbCB9KTtcbiAgICB9LCBzKTtcbiAgfVxufVxuZnVuY3Rpb24gWShlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcImZ1bmN0aW9uXCI7XG59XG5mdW5jdGlvbiBOdChlKSB7XG4gIHZhciB0ID0gZnVuY3Rpb24obikge1xuICAgIEVycm9yLmNhbGwobiksIG4uc3RhY2sgPSBuZXcgRXJyb3IoKS5zdGFjaztcbiAgfSwgciA9IGUodCk7XG4gIHJldHVybiByLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSwgci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSByLCByO1xufVxudmFyIHp0ID0gTnQoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24ocikge1xuICAgIGUodGhpcyksIHRoaXMubWVzc2FnZSA9IHIgPyByLmxlbmd0aCArIGAgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcbmAgKyByLm1hcChmdW5jdGlvbihuLCBhKSB7XG4gICAgICByZXR1cm4gYSArIDEgKyBcIikgXCIgKyBuLnRvU3RyaW5nKCk7XG4gICAgfSkuam9pbihgXG4gIGApIDogXCJcIiwgdGhpcy5uYW1lID0gXCJVbnN1YnNjcmlwdGlvbkVycm9yXCIsIHRoaXMuZXJyb3JzID0gcjtcbiAgfTtcbn0pO1xuZnVuY3Rpb24gQXQoZSwgdCkge1xuICBpZiAoZSkge1xuICAgIHZhciByID0gZS5pbmRleE9mKHQpO1xuICAgIDAgPD0gciAmJiBlLnNwbGljZShyLCAxKTtcbiAgfVxufVxudmFyIHN0ID0gKGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBlKHQpIHtcbiAgICB0aGlzLmluaXRpYWxUZWFyZG93biA9IHQsIHRoaXMuY2xvc2VkID0gZmFsc2UsIHRoaXMuX3BhcmVudGFnZSA9IG51bGwsIHRoaXMuX2ZpbmFsaXplcnMgPSBudWxsO1xuICB9XG4gIHJldHVybiBlLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciB0LCByLCBuLCBhLCBpO1xuICAgIGlmICghdGhpcy5jbG9zZWQpIHtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICAgIHZhciBzID0gdGhpcy5fcGFyZW50YWdlO1xuICAgICAgaWYgKHMpXG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnRhZ2UgPSBudWxsLCBBcnJheS5pc0FycmF5KHMpKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBsID0gT2UocyksIGMgPSBsLm5leHQoKTsgIWMuZG9uZTsgYyA9IGwubmV4dCgpKSB7XG4gICAgICAgICAgICAgIHZhciB1ID0gYy52YWx1ZTtcbiAgICAgICAgICAgICAgdS5yZW1vdmUodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZykge1xuICAgICAgICAgICAgdCA9IHsgZXJyb3I6IGcgfTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYyAmJiAhYy5kb25lICYmIChyID0gbC5yZXR1cm4pICYmIHIuY2FsbChsKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGlmICh0KSB0aHJvdyB0LmVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHMucmVtb3ZlKHRoaXMpO1xuICAgICAgdmFyIGQgPSB0aGlzLmluaXRpYWxUZWFyZG93bjtcbiAgICAgIGlmIChZKGQpKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGQoKTtcbiAgICAgICAgfSBjYXRjaCAoZykge1xuICAgICAgICAgIGkgPSBnIGluc3RhbmNlb2YgenQgPyBnLmVycm9ycyA6IFtnXTtcbiAgICAgICAgfVxuICAgICAgdmFyIG0gPSB0aGlzLl9maW5hbGl6ZXJzO1xuICAgICAgaWYgKG0pIHtcbiAgICAgICAgdGhpcy5fZmluYWxpemVycyA9IG51bGw7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZm9yICh2YXIgZiA9IE9lKG0pLCB5ID0gZi5uZXh0KCk7ICF5LmRvbmU7IHkgPSBmLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIF8gPSB5LnZhbHVlO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAga3IoXyk7XG4gICAgICAgICAgICB9IGNhdGNoIChnKSB7XG4gICAgICAgICAgICAgIGkgPSBpID8/IFtdLCBnIGluc3RhbmNlb2YgenQgPyBpID0gQ3QoQ3QoW10sIEV0KGkpKSwgRXQoZy5lcnJvcnMpKSA6IGkucHVzaChnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGcpIHtcbiAgICAgICAgICBuID0geyBlcnJvcjogZyB9O1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5ICYmICF5LmRvbmUgJiYgKGEgPSBmLnJldHVybikgJiYgYS5jYWxsKGYpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAobikgdGhyb3cgbi5lcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpKVxuICAgICAgICB0aHJvdyBuZXcgenQoaSk7XG4gICAgfVxuICB9LCBlLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHI7XG4gICAgaWYgKHQgJiYgdCAhPT0gdGhpcylcbiAgICAgIGlmICh0aGlzLmNsb3NlZClcbiAgICAgICAga3IodCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKHQgaW5zdGFuY2VvZiBlKSB7XG4gICAgICAgICAgaWYgKHQuY2xvc2VkIHx8IHQuX2hhc1BhcmVudCh0aGlzKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB0Ll9hZGRQYXJlbnQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgKHRoaXMuX2ZpbmFsaXplcnMgPSAociA9IHRoaXMuX2ZpbmFsaXplcnMpICE9PSBudWxsICYmIHIgIT09IHZvaWQgMCA/IHIgOiBbXSkucHVzaCh0KTtcbiAgICAgIH1cbiAgfSwgZS5wcm90b3R5cGUuX2hhc1BhcmVudCA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciA9IHRoaXMuX3BhcmVudGFnZTtcbiAgICByZXR1cm4gciA9PT0gdCB8fCBBcnJheS5pc0FycmF5KHIpICYmIHIuaW5jbHVkZXModCk7XG4gIH0sIGUucHJvdG90eXBlLl9hZGRQYXJlbnQgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgdGhpcy5fcGFyZW50YWdlID0gQXJyYXkuaXNBcnJheShyKSA/IChyLnB1c2godCksIHIpIDogciA/IFtyLCB0XSA6IHQ7XG4gIH0sIGUucHJvdG90eXBlLl9yZW1vdmVQYXJlbnQgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSB0aGlzLl9wYXJlbnRhZ2U7XG4gICAgciA9PT0gdCA/IHRoaXMuX3BhcmVudGFnZSA9IG51bGwgOiBBcnJheS5pc0FycmF5KHIpICYmIEF0KHIsIHQpO1xuICB9LCBlLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSB0aGlzLl9maW5hbGl6ZXJzO1xuICAgIHIgJiYgQXQociwgdCksIHQgaW5zdGFuY2VvZiBlICYmIHQuX3JlbW92ZVBhcmVudCh0aGlzKTtcbiAgfSwgZS5FTVBUWSA9IChmdW5jdGlvbigpIHtcbiAgICB2YXIgdCA9IG5ldyBlKCk7XG4gICAgcmV0dXJuIHQuY2xvc2VkID0gdHJ1ZSwgdDtcbiAgfSkoKSwgZTtcbn0pKCksIGJuID0gc3QuRU1QVFk7XG5mdW5jdGlvbiBQbihlKSB7XG4gIHJldHVybiBlIGluc3RhbmNlb2Ygc3QgfHwgZSAmJiBcImNsb3NlZFwiIGluIGUgJiYgWShlLnJlbW92ZSkgJiYgWShlLmFkZCkgJiYgWShlLnVuc3Vic2NyaWJlKTtcbn1cbmZ1bmN0aW9uIGtyKGUpIHtcbiAgWShlKSA/IGUoKSA6IGUudW5zdWJzY3JpYmUoKTtcbn1cbnZhciBKYSA9IHtcbiAgUHJvbWlzZTogdm9pZCAwXG59LCBaYSA9IHtcbiAgc2V0VGltZW91dDogZnVuY3Rpb24oZSwgdCkge1xuICAgIGZvciAodmFyIHIgPSBbXSwgbiA9IDI7IG4gPCBhcmd1bWVudHMubGVuZ3RoOyBuKyspXG4gICAgICByW24gLSAyXSA9IGFyZ3VtZW50c1tuXTtcbiAgICByZXR1cm4gc2V0VGltZW91dC5hcHBseSh2b2lkIDAsIEN0KFtlLCB0XSwgRXQocikpKTtcbiAgfSxcbiAgY2xlYXJUaW1lb3V0OiBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIGNsZWFyVGltZW91dChlKTtcbiAgfSxcbiAgZGVsZWdhdGU6IHZvaWQgMFxufTtcbmZ1bmN0aW9uIEVuKGUpIHtcbiAgWmEuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICB0aHJvdyBlO1xuICB9KTtcbn1cbmZ1bmN0aW9uIElyKCkge1xufVxuZnVuY3Rpb24gZ3QoZSkge1xuICBlKCk7XG59XG52YXIgaXIgPSAoZnVuY3Rpb24oZSkge1xuICBFZSh0LCBlKTtcbiAgZnVuY3Rpb24gdChyKSB7XG4gICAgdmFyIG4gPSBlLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICByZXR1cm4gbi5pc1N0b3BwZWQgPSBmYWxzZSwgciA/IChuLmRlc3RpbmF0aW9uID0gciwgUG4ocikgJiYgci5hZGQobikpIDogbi5kZXN0aW5hdGlvbiA9IGVpLCBuO1xuICB9XG4gIHJldHVybiB0LmNyZWF0ZSA9IGZ1bmN0aW9uKHIsIG4sIGEpIHtcbiAgICByZXR1cm4gbmV3IFh0KHIsIG4sIGEpO1xuICB9LCB0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24ocikge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8IHRoaXMuX25leHQocik7XG4gIH0sIHQucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24ocikge1xuICAgIHRoaXMuaXNTdG9wcGVkIHx8ICh0aGlzLmlzU3RvcHBlZCA9IHRydWUsIHRoaXMuX2Vycm9yKHIpKTtcbiAgfSwgdC5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmlzU3RvcHBlZCB8fCAodGhpcy5pc1N0b3BwZWQgPSB0cnVlLCB0aGlzLl9jb21wbGV0ZSgpKTtcbiAgfSwgdC5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmNsb3NlZCB8fCAodGhpcy5pc1N0b3BwZWQgPSB0cnVlLCBlLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpLCB0aGlzLmRlc3RpbmF0aW9uID0gbnVsbCk7XG4gIH0sIHQucHJvdG90eXBlLl9uZXh0ID0gZnVuY3Rpb24ocikge1xuICAgIHRoaXMuZGVzdGluYXRpb24ubmV4dChyKTtcbiAgfSwgdC5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24ocikge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9LCB0LnByb3RvdHlwZS5fY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9LCB0O1xufSkoc3QpLCBRYSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gZSh0KSB7XG4gICAgdGhpcy5wYXJ0aWFsT2JzZXJ2ZXIgPSB0O1xuICB9XG4gIHJldHVybiBlLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgaWYgKHIubmV4dClcbiAgICAgIHRyeSB7XG4gICAgICAgIHIubmV4dCh0KTtcbiAgICAgIH0gY2F0Y2ggKG4pIHtcbiAgICAgICAgcHQobik7XG4gICAgICB9XG4gIH0sIGUucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByID0gdGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7XG4gICAgaWYgKHIuZXJyb3IpXG4gICAgICB0cnkge1xuICAgICAgICByLmVycm9yKHQpO1xuICAgICAgfSBjYXRjaCAobikge1xuICAgICAgICBwdChuKTtcbiAgICAgIH1cbiAgICBlbHNlXG4gICAgICBwdCh0KTtcbiAgfSwgZS5wcm90b3R5cGUuY29tcGxldGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdCA9IHRoaXMucGFydGlhbE9ic2VydmVyO1xuICAgIGlmICh0LmNvbXBsZXRlKVxuICAgICAgdHJ5IHtcbiAgICAgICAgdC5jb21wbGV0ZSgpO1xuICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICBwdChyKTtcbiAgICAgIH1cbiAgfSwgZTtcbn0pKCksIFh0ID0gKGZ1bmN0aW9uKGUpIHtcbiAgRWUodCwgZSk7XG4gIGZ1bmN0aW9uIHQociwgbiwgYSkge1xuICAgIHZhciBpID0gZS5jYWxsKHRoaXMpIHx8IHRoaXMsIHM7XG4gICAgcmV0dXJuIFkocikgfHwgIXIgPyBzID0ge1xuICAgICAgbmV4dDogciA/PyB2b2lkIDAsXG4gICAgICBlcnJvcjogbiA/PyB2b2lkIDAsXG4gICAgICBjb21wbGV0ZTogYSA/PyB2b2lkIDBcbiAgICB9IDogcyA9IHIsIGkuZGVzdGluYXRpb24gPSBuZXcgUWEocyksIGk7XG4gIH1cbiAgcmV0dXJuIHQ7XG59KShpcik7XG5mdW5jdGlvbiBwdChlKSB7XG4gIEVuKGUpO1xufVxuZnVuY3Rpb24gWGEoZSkge1xuICB0aHJvdyBlO1xufVxudmFyIGVpID0ge1xuICBjbG9zZWQ6IHRydWUsXG4gIG5leHQ6IElyLFxuICBlcnJvcjogWGEsXG4gIGNvbXBsZXRlOiBJclxufSwgc3IgPSAoZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wub2JzZXJ2YWJsZSB8fCBcIkBAb2JzZXJ2YWJsZVwiO1xufSkoKTtcbmZ1bmN0aW9uIHRpKGUpIHtcbiAgcmV0dXJuIGU7XG59XG5mdW5jdGlvbiByaShlKSB7XG4gIHJldHVybiBlLmxlbmd0aCA9PT0gMCA/IHRpIDogZS5sZW5ndGggPT09IDEgPyBlWzBdIDogZnVuY3Rpb24ocikge1xuICAgIHJldHVybiBlLnJlZHVjZShmdW5jdGlvbihuLCBhKSB7XG4gICAgICByZXR1cm4gYShuKTtcbiAgICB9LCByKTtcbiAgfTtcbn1cbnZhciB3ZSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gZSh0KSB7XG4gICAgdCAmJiAodGhpcy5fc3Vic2NyaWJlID0gdCk7XG4gIH1cbiAgcmV0dXJuIGUucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSBuZXcgZSgpO1xuICAgIHJldHVybiByLnNvdXJjZSA9IHRoaXMsIHIub3BlcmF0b3IgPSB0LCByO1xuICB9LCBlLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgdmFyIGEgPSB0aGlzLCBpID0gb2kodCkgPyB0IDogbmV3IFh0KHQsIHIsIG4pO1xuICAgIHJldHVybiBndChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzID0gYSwgbCA9IHMub3BlcmF0b3IsIGMgPSBzLnNvdXJjZTtcbiAgICAgIGkuYWRkKGwgPyBsLmNhbGwoaSwgYykgOiBjID8gYS5fc3Vic2NyaWJlKGkpIDogYS5fdHJ5U3Vic2NyaWJlKGkpKTtcbiAgICB9KSwgaTtcbiAgfSwgZS5wcm90b3R5cGUuX3RyeVN1YnNjcmliZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuX3N1YnNjcmliZSh0KTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICB0LmVycm9yKHIpO1xuICAgIH1cbiAgfSwgZS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICB2YXIgbiA9IHRoaXM7XG4gICAgcmV0dXJuIHIgPSBScihyKSwgbmV3IHIoZnVuY3Rpb24oYSwgaSkge1xuICAgICAgdmFyIHMgPSBuZXcgWHQoe1xuICAgICAgICBuZXh0OiBmdW5jdGlvbihsKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHQobCk7XG4gICAgICAgICAgfSBjYXRjaCAoYykge1xuICAgICAgICAgICAgaShjKSwgcy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGksXG4gICAgICAgIGNvbXBsZXRlOiBhXG4gICAgICB9KTtcbiAgICAgIG4uc3Vic2NyaWJlKHMpO1xuICAgIH0pO1xuICB9LCBlLnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24odCkge1xuICAgIHZhciByO1xuICAgIHJldHVybiAociA9IHRoaXMuc291cmNlKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLnN1YnNjcmliZSh0KTtcbiAgfSwgZS5wcm90b3R5cGVbc3JdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sIGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciB0ID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgICAgdFtyXSA9IGFyZ3VtZW50c1tyXTtcbiAgICByZXR1cm4gcmkodCkodGhpcyk7XG4gIH0sIGUucHJvdG90eXBlLnRvUHJvbWlzZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgcmV0dXJuIHQgPSBScih0KSwgbmV3IHQoZnVuY3Rpb24obiwgYSkge1xuICAgICAgdmFyIGk7XG4gICAgICByLnN1YnNjcmliZShmdW5jdGlvbihzKSB7XG4gICAgICAgIHJldHVybiBpID0gcztcbiAgICAgIH0sIGZ1bmN0aW9uKHMpIHtcbiAgICAgICAgcmV0dXJuIGEocyk7XG4gICAgICB9LCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG4oaSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSwgZS5jcmVhdGUgPSBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIG5ldyBlKHQpO1xuICB9LCBlO1xufSkoKTtcbmZ1bmN0aW9uIFJyKGUpIHtcbiAgdmFyIHQ7XG4gIHJldHVybiAodCA9IGUgPz8gSmEuUHJvbWlzZSkgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IFByb21pc2U7XG59XG5mdW5jdGlvbiBuaShlKSB7XG4gIHJldHVybiBlICYmIFkoZS5uZXh0KSAmJiBZKGUuZXJyb3IpICYmIFkoZS5jb21wbGV0ZSk7XG59XG5mdW5jdGlvbiBvaShlKSB7XG4gIHJldHVybiBlICYmIGUgaW5zdGFuY2VvZiBpciB8fCBuaShlKSAmJiBQbihlKTtcbn1cbmZ1bmN0aW9uIGFpKGUpIHtcbiAgcmV0dXJuIFkoZT8ubGlmdCk7XG59XG5mdW5jdGlvbiBpaShlKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgaWYgKGFpKHQpKVxuICAgICAgcmV0dXJuIHQubGlmdChmdW5jdGlvbihyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGUociwgdGhpcyk7XG4gICAgICAgIH0gY2F0Y2ggKG4pIHtcbiAgICAgICAgICB0aGlzLmVycm9yKG4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGVcIik7XG4gIH07XG59XG5mdW5jdGlvbiBzaShlLCB0LCByLCBuLCBhKSB7XG4gIHJldHVybiBuZXcgY2koZSwgdCwgciwgbiwgYSk7XG59XG52YXIgY2kgPSAoZnVuY3Rpb24oZSkge1xuICBFZSh0LCBlKTtcbiAgZnVuY3Rpb24gdChyLCBuLCBhLCBpLCBzLCBsKSB7XG4gICAgdmFyIGMgPSBlLmNhbGwodGhpcywgcikgfHwgdGhpcztcbiAgICByZXR1cm4gYy5vbkZpbmFsaXplID0gcywgYy5zaG91bGRVbnN1YnNjcmliZSA9IGwsIGMuX25leHQgPSBuID8gZnVuY3Rpb24odSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbih1KTtcbiAgICAgIH0gY2F0Y2ggKGQpIHtcbiAgICAgICAgci5lcnJvcihkKTtcbiAgICAgIH1cbiAgICB9IDogZS5wcm90b3R5cGUuX25leHQsIGMuX2Vycm9yID0gaSA/IGZ1bmN0aW9uKHUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGkodSk7XG4gICAgICB9IGNhdGNoIChkKSB7XG4gICAgICAgIHIuZXJyb3IoZCk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSA6IGUucHJvdG90eXBlLl9lcnJvciwgYy5fY29tcGxldGUgPSBhID8gZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhKCk7XG4gICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgIHIuZXJyb3IodSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSA6IGUucHJvdG90eXBlLl9jb21wbGV0ZSwgYztcbiAgfVxuICByZXR1cm4gdC5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcjtcbiAgICBpZiAoIXRoaXMuc2hvdWxkVW5zdWJzY3JpYmUgfHwgdGhpcy5zaG91bGRVbnN1YnNjcmliZSgpKSB7XG4gICAgICB2YXIgbiA9IHRoaXMuY2xvc2VkO1xuICAgICAgZS5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSwgIW4gJiYgKChyID0gdGhpcy5vbkZpbmFsaXplKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgfHwgci5jYWxsKHRoaXMpKTtcbiAgICB9XG4gIH0sIHQ7XG59KShpciksIGxpID0gTnQoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZSh0aGlzKSwgdGhpcy5uYW1lID0gXCJPYmplY3RVbnN1YnNjcmliZWRFcnJvclwiLCB0aGlzLm1lc3NhZ2UgPSBcIm9iamVjdCB1bnN1YnNjcmliZWRcIjtcbiAgfTtcbn0pLCBDbiA9IChmdW5jdGlvbihlKSB7XG4gIEVlKHQsIGUpO1xuICBmdW5jdGlvbiB0KCkge1xuICAgIHZhciByID0gZS5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgcmV0dXJuIHIuY2xvc2VkID0gZmFsc2UsIHIuY3VycmVudE9ic2VydmVycyA9IG51bGwsIHIub2JzZXJ2ZXJzID0gW10sIHIuaXNTdG9wcGVkID0gZmFsc2UsIHIuaGFzRXJyb3IgPSBmYWxzZSwgci50aHJvd25FcnJvciA9IG51bGwsIHI7XG4gIH1cbiAgcmV0dXJuIHQucHJvdG90eXBlLmxpZnQgPSBmdW5jdGlvbihyKSB7XG4gICAgdmFyIG4gPSBuZXcgRnIodGhpcywgdGhpcyk7XG4gICAgcmV0dXJuIG4ub3BlcmF0b3IgPSByLCBuO1xuICB9LCB0LnByb3RvdHlwZS5fdGhyb3dJZkNsb3NlZCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZClcbiAgICAgIHRocm93IG5ldyBsaSgpO1xuICB9LCB0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuID0gdGhpcztcbiAgICBndChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBhLCBpO1xuICAgICAgaWYgKG4uX3Rocm93SWZDbG9zZWQoKSwgIW4uaXNTdG9wcGVkKSB7XG4gICAgICAgIG4uY3VycmVudE9ic2VydmVycyB8fCAobi5jdXJyZW50T2JzZXJ2ZXJzID0gQXJyYXkuZnJvbShuLm9ic2VydmVycykpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZvciAodmFyIHMgPSBPZShuLmN1cnJlbnRPYnNlcnZlcnMpLCBsID0gcy5uZXh0KCk7ICFsLmRvbmU7IGwgPSBzLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIGMgPSBsLnZhbHVlO1xuICAgICAgICAgICAgYy5uZXh0KHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICAgIGEgPSB7IGVycm9yOiB1IH07XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGwgJiYgIWwuZG9uZSAmJiAoaSA9IHMucmV0dXJuKSAmJiBpLmNhbGwocyk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmIChhKSB0aHJvdyBhLmVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9LCB0LnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uKHIpIHtcbiAgICB2YXIgbiA9IHRoaXM7XG4gICAgZ3QoZnVuY3Rpb24oKSB7XG4gICAgICBpZiAobi5fdGhyb3dJZkNsb3NlZCgpLCAhbi5pc1N0b3BwZWQpIHtcbiAgICAgICAgbi5oYXNFcnJvciA9IG4uaXNTdG9wcGVkID0gdHJ1ZSwgbi50aHJvd25FcnJvciA9IHI7XG4gICAgICAgIGZvciAodmFyIGEgPSBuLm9ic2VydmVyczsgYS5sZW5ndGg7IClcbiAgICAgICAgICBhLnNoaWZ0KCkuZXJyb3Iocik7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIHQucHJvdG90eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIGd0KGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHIuX3Rocm93SWZDbG9zZWQoKSwgIXIuaXNTdG9wcGVkKSB7XG4gICAgICAgIHIuaXNTdG9wcGVkID0gdHJ1ZTtcbiAgICAgICAgZm9yICh2YXIgbiA9IHIub2JzZXJ2ZXJzOyBuLmxlbmd0aDsgKVxuICAgICAgICAgIG4uc2hpZnQoKS5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCB0LnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaXNTdG9wcGVkID0gdGhpcy5jbG9zZWQgPSB0cnVlLCB0aGlzLm9ic2VydmVycyA9IHRoaXMuY3VycmVudE9ic2VydmVycyA9IG51bGw7XG4gIH0sIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwgXCJvYnNlcnZlZFwiLCB7XG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByO1xuICAgICAgcmV0dXJuICgociA9IHRoaXMub2JzZXJ2ZXJzKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLmxlbmd0aCkgPiAwO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pLCB0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24ocikge1xuICAgIHJldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksIGUucHJvdG90eXBlLl90cnlTdWJzY3JpYmUuY2FsbCh0aGlzLCByKTtcbiAgfSwgdC5wcm90b3R5cGUuX3N1YnNjcmliZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLCB0aGlzLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzKHIpLCB0aGlzLl9pbm5lclN1YnNjcmliZShyKTtcbiAgfSwgdC5wcm90b3R5cGUuX2lubmVyU3Vic2NyaWJlID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuID0gdGhpcywgYSA9IHRoaXMsIGkgPSBhLmhhc0Vycm9yLCBzID0gYS5pc1N0b3BwZWQsIGwgPSBhLm9ic2VydmVycztcbiAgICByZXR1cm4gaSB8fCBzID8gYm4gOiAodGhpcy5jdXJyZW50T2JzZXJ2ZXJzID0gbnVsbCwgbC5wdXNoKHIpLCBuZXcgc3QoZnVuY3Rpb24oKSB7XG4gICAgICBuLmN1cnJlbnRPYnNlcnZlcnMgPSBudWxsLCBBdChsLCByKTtcbiAgICB9KSk7XG4gIH0sIHQucHJvdG90eXBlLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuID0gdGhpcywgYSA9IG4uaGFzRXJyb3IsIGkgPSBuLnRocm93bkVycm9yLCBzID0gbi5pc1N0b3BwZWQ7XG4gICAgYSA/IHIuZXJyb3IoaSkgOiBzICYmIHIuY29tcGxldGUoKTtcbiAgfSwgdC5wcm90b3R5cGUuYXNPYnNlcnZhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHIgPSBuZXcgd2UoKTtcbiAgICByZXR1cm4gci5zb3VyY2UgPSB0aGlzLCByO1xuICB9LCB0LmNyZWF0ZSA9IGZ1bmN0aW9uKHIsIG4pIHtcbiAgICByZXR1cm4gbmV3IEZyKHIsIG4pO1xuICB9LCB0O1xufSkod2UpLCBGciA9IChmdW5jdGlvbihlKSB7XG4gIEVlKHQsIGUpO1xuICBmdW5jdGlvbiB0KHIsIG4pIHtcbiAgICB2YXIgYSA9IGUuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgIHJldHVybiBhLmRlc3RpbmF0aW9uID0gciwgYS5zb3VyY2UgPSBuLCBhO1xuICB9XG4gIHJldHVybiB0LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuLCBhO1xuICAgIChhID0gKG4gPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBuLm5leHQpID09PSBudWxsIHx8IGEgPT09IHZvaWQgMCB8fCBhLmNhbGwobiwgcik7XG4gIH0sIHQucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuLCBhO1xuICAgIChhID0gKG4gPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBuLmVycm9yKSA9PT0gbnVsbCB8fCBhID09PSB2b2lkIDAgfHwgYS5jYWxsKG4sIHIpO1xuICB9LCB0LnByb3RvdHlwZS5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByLCBuO1xuICAgIChuID0gKHIgPSB0aGlzLmRlc3RpbmF0aW9uKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByLmNvbXBsZXRlKSA9PT0gbnVsbCB8fCBuID09PSB2b2lkIDAgfHwgbi5jYWxsKHIpO1xuICB9LCB0LnByb3RvdHlwZS5fc3Vic2NyaWJlID0gZnVuY3Rpb24ocikge1xuICAgIHZhciBuLCBhO1xuICAgIHJldHVybiAoYSA9IChuID0gdGhpcy5zb3VyY2UpID09PSBudWxsIHx8IG4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG4uc3Vic2NyaWJlKHIpKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogYm47XG4gIH0sIHQ7XG59KShDbiksIHVpID0ge1xuICBub3c6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBEYXRlLm5vdygpO1xuICB9XG59LCBkaSA9IChmdW5jdGlvbihlKSB7XG4gIEVlKHQsIGUpO1xuICBmdW5jdGlvbiB0KHIsIG4pIHtcbiAgICByZXR1cm4gZS5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gIH1cbiAgcmV0dXJuIHQucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24ociwgbikge1xuICAgIHJldHVybiB0aGlzO1xuICB9LCB0O1xufSkoc3QpLCBUciA9IHtcbiAgc2V0SW50ZXJ2YWw6IGZ1bmN0aW9uKGUsIHQpIHtcbiAgICBmb3IgKHZhciByID0gW10sIG4gPSAyOyBuIDwgYXJndW1lbnRzLmxlbmd0aDsgbisrKVxuICAgICAgcltuIC0gMl0gPSBhcmd1bWVudHNbbl07XG4gICAgcmV0dXJuIHNldEludGVydmFsLmFwcGx5KHZvaWQgMCwgQ3QoW2UsIHRdLCBFdChyKSkpO1xuICB9LFxuICBjbGVhckludGVydmFsOiBmdW5jdGlvbihlKSB7XG4gICAgcmV0dXJuIGNsZWFySW50ZXJ2YWwoZSk7XG4gIH0sXG4gIGRlbGVnYXRlOiB2b2lkIDBcbn0sIHBpID0gKGZ1bmN0aW9uKGUpIHtcbiAgRWUodCwgZSk7XG4gIGZ1bmN0aW9uIHQociwgbikge1xuICAgIHZhciBhID0gZS5jYWxsKHRoaXMsIHIsIG4pIHx8IHRoaXM7XG4gICAgcmV0dXJuIGEuc2NoZWR1bGVyID0gciwgYS53b3JrID0gbiwgYS5wZW5kaW5nID0gZmFsc2UsIGE7XG4gIH1cbiAgcmV0dXJuIHQucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24ociwgbikge1xuICAgIHZhciBhO1xuICAgIGlmIChuID09PSB2b2lkIDAgJiYgKG4gPSAwKSwgdGhpcy5jbG9zZWQpXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB0aGlzLnN0YXRlID0gcjtcbiAgICB2YXIgaSA9IHRoaXMuaWQsIHMgPSB0aGlzLnNjaGVkdWxlcjtcbiAgICByZXR1cm4gaSAhPSBudWxsICYmICh0aGlzLmlkID0gdGhpcy5yZWN5Y2xlQXN5bmNJZChzLCBpLCBuKSksIHRoaXMucGVuZGluZyA9IHRydWUsIHRoaXMuZGVsYXkgPSBuLCB0aGlzLmlkID0gKGEgPSB0aGlzLmlkKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogdGhpcy5yZXF1ZXN0QXN5bmNJZChzLCB0aGlzLmlkLCBuKSwgdGhpcztcbiAgfSwgdC5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQgPSBmdW5jdGlvbihyLCBuLCBhKSB7XG4gICAgcmV0dXJuIGEgPT09IHZvaWQgMCAmJiAoYSA9IDApLCBUci5zZXRJbnRlcnZhbChyLmZsdXNoLmJpbmQociwgdGhpcyksIGEpO1xuICB9LCB0LnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZCA9IGZ1bmN0aW9uKHIsIG4sIGEpIHtcbiAgICBpZiAoYSA9PT0gdm9pZCAwICYmIChhID0gMCksIGEgIT0gbnVsbCAmJiB0aGlzLmRlbGF5ID09PSBhICYmIHRoaXMucGVuZGluZyA9PT0gZmFsc2UpXG4gICAgICByZXR1cm4gbjtcbiAgICBuICE9IG51bGwgJiYgVHIuY2xlYXJJbnRlcnZhbChuKTtcbiAgfSwgdC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uKHIsIG4pIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpXG4gICAgICByZXR1cm4gbmV3IEVycm9yKFwiZXhlY3V0aW5nIGEgY2FuY2VsbGVkIGFjdGlvblwiKTtcbiAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICB2YXIgYSA9IHRoaXMuX2V4ZWN1dGUociwgbik7XG4gICAgaWYgKGEpXG4gICAgICByZXR1cm4gYTtcbiAgICB0aGlzLnBlbmRpbmcgPT09IGZhbHNlICYmIHRoaXMuaWQgIT0gbnVsbCAmJiAodGhpcy5pZCA9IHRoaXMucmVjeWNsZUFzeW5jSWQodGhpcy5zY2hlZHVsZXIsIHRoaXMuaWQsIG51bGwpKTtcbiAgfSwgdC5wcm90b3R5cGUuX2V4ZWN1dGUgPSBmdW5jdGlvbihyLCBuKSB7XG4gICAgdmFyIGEgPSBmYWxzZSwgaTtcbiAgICB0cnkge1xuICAgICAgdGhpcy53b3JrKHIpO1xuICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgIGEgPSB0cnVlLCBpID0gcyB8fCBuZXcgRXJyb3IoXCJTY2hlZHVsZWQgYWN0aW9uIHRocmV3IGZhbHN5IGVycm9yXCIpO1xuICAgIH1cbiAgICBpZiAoYSlcbiAgICAgIHJldHVybiB0aGlzLnVuc3Vic2NyaWJlKCksIGk7XG4gIH0sIHQucHJvdG90eXBlLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLmNsb3NlZCkge1xuICAgICAgdmFyIHIgPSB0aGlzLCBuID0gci5pZCwgYSA9IHIuc2NoZWR1bGVyLCBpID0gYS5hY3Rpb25zO1xuICAgICAgdGhpcy53b3JrID0gdGhpcy5zdGF0ZSA9IHRoaXMuc2NoZWR1bGVyID0gbnVsbCwgdGhpcy5wZW5kaW5nID0gZmFsc2UsIEF0KGksIHRoaXMpLCBuICE9IG51bGwgJiYgKHRoaXMuaWQgPSB0aGlzLnJlY3ljbGVBc3luY0lkKGEsIG4sIG51bGwpKSwgdGhpcy5kZWxheSA9IG51bGwsIGUucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyk7XG4gICAgfVxuICB9LCB0O1xufSkoZGkpLCBOciA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gZSh0LCByKSB7XG4gICAgciA9PT0gdm9pZCAwICYmIChyID0gZS5ub3cpLCB0aGlzLnNjaGVkdWxlckFjdGlvbkN0b3IgPSB0LCB0aGlzLm5vdyA9IHI7XG4gIH1cbiAgcmV0dXJuIGUucHJvdG90eXBlLnNjaGVkdWxlID0gZnVuY3Rpb24odCwgciwgbikge1xuICAgIHJldHVybiByID09PSB2b2lkIDAgJiYgKHIgPSAwKSwgbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLCB0KS5zY2hlZHVsZShuLCByKTtcbiAgfSwgZS5ub3cgPSB1aS5ub3csIGU7XG59KSgpLCBtaSA9IChmdW5jdGlvbihlKSB7XG4gIEVlKHQsIGUpO1xuICBmdW5jdGlvbiB0KHIsIG4pIHtcbiAgICBuID09PSB2b2lkIDAgJiYgKG4gPSBOci5ub3cpO1xuICAgIHZhciBhID0gZS5jYWxsKHRoaXMsIHIsIG4pIHx8IHRoaXM7XG4gICAgcmV0dXJuIGEuYWN0aW9ucyA9IFtdLCBhLl9hY3RpdmUgPSBmYWxzZSwgYTtcbiAgfVxuICByZXR1cm4gdC5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbihyKSB7XG4gICAgdmFyIG4gPSB0aGlzLmFjdGlvbnM7XG4gICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xuICAgICAgbi5wdXNoKHIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgYTtcbiAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgIGRvXG4gICAgICBpZiAoYSA9IHIuZXhlY3V0ZShyLnN0YXRlLCByLmRlbGF5KSlcbiAgICAgICAgYnJlYWs7XG4gICAgd2hpbGUgKHIgPSBuLnNoaWZ0KCkpO1xuICAgIGlmICh0aGlzLl9hY3RpdmUgPSBmYWxzZSwgYSkge1xuICAgICAgZm9yICg7IHIgPSBuLnNoaWZ0KCk7IClcbiAgICAgICAgci51bnN1YnNjcmliZSgpO1xuICAgICAgdGhyb3cgYTtcbiAgICB9XG4gIH0sIHQ7XG59KShOciksIGZpID0gbmV3IG1pKHBpKSwgX2kgPSAoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIiAmJiB0eXBlb2YgZSAhPSBcImZ1bmN0aW9uXCI7XG59KTtcbmZ1bmN0aW9uIHlpKGUpIHtcbiAgcmV0dXJuIFkoZT8udGhlbik7XG59XG5mdW5jdGlvbiBoaShlKSB7XG4gIHJldHVybiBZKGVbc3JdKTtcbn1cbmZ1bmN0aW9uIGdpKGUpIHtcbiAgcmV0dXJuIFN5bWJvbC5hc3luY0l0ZXJhdG9yICYmIFkoZT8uW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSk7XG59XG5mdW5jdGlvbiB3aShlKSB7XG4gIHJldHVybiBuZXcgVHlwZUVycm9yKFwiWW91IHByb3ZpZGVkIFwiICsgKGUgIT09IG51bGwgJiYgdHlwZW9mIGUgPT0gXCJvYmplY3RcIiA/IFwiYW4gaW52YWxpZCBvYmplY3RcIiA6IFwiJ1wiICsgZSArIFwiJ1wiKSArIFwiIHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21pc2UsIFJlYWRhYmxlU3RyZWFtLCBBcnJheSwgQXN5bmNJdGVyYWJsZSwgb3IgSXRlcmFibGUuXCIpO1xufVxuZnVuY3Rpb24gdmkoKSB7XG4gIHJldHVybiB0eXBlb2YgU3ltYm9sICE9IFwiZnVuY3Rpb25cIiB8fCAhU3ltYm9sLml0ZXJhdG9yID8gXCJAQGl0ZXJhdG9yXCIgOiBTeW1ib2wuaXRlcmF0b3I7XG59XG52YXIgYmkgPSB2aSgpO1xuZnVuY3Rpb24gUGkoZSkge1xuICByZXR1cm4gWShlPy5bYmldKTtcbn1cbmZ1bmN0aW9uIEVpKGUpIHtcbiAgcmV0dXJuIFlhKHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHIsIG4sIGEsIGk7XG4gICAgcmV0dXJuIHZuKHRoaXMsIGZ1bmN0aW9uKHMpIHtcbiAgICAgIHN3aXRjaCAocy5sYWJlbCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgciA9IGUuZ2V0UmVhZGVyKCksIHMubGFiZWwgPSAxO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcy50cnlzLnB1c2goWzEsICwgOSwgMTBdKSwgcy5sYWJlbCA9IDI7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICByZXR1cm4gWzQsIE1lKHIucmVhZCgpKV07XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICByZXR1cm4gbiA9IHMuc2VudCgpLCBhID0gbi52YWx1ZSwgaSA9IG4uZG9uZSwgaSA/IFs0LCBNZSh2b2lkIDApXSA6IFszLCA1XTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBbMiwgcy5zZW50KCldO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgcmV0dXJuIFs0LCBNZShhKV07XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICByZXR1cm4gWzQsIHMuc2VudCgpXTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIHJldHVybiBzLnNlbnQoKSwgWzMsIDJdO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgcmV0dXJuIFszLCAxMF07XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICByZXR1cm4gci5yZWxlYXNlTG9jaygpLCBbN107XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBDaShlKSB7XG4gIHJldHVybiBZKGU/LmdldFJlYWRlcik7XG59XG5mdW5jdGlvbiBBaShlKSB7XG4gIGlmIChlIGluc3RhbmNlb2Ygd2UpXG4gICAgcmV0dXJuIGU7XG4gIGlmIChlICE9IG51bGwpIHtcbiAgICBpZiAoaGkoZSkpXG4gICAgICByZXR1cm4gU2koZSk7XG4gICAgaWYgKF9pKGUpKVxuICAgICAgcmV0dXJuIGtpKGUpO1xuICAgIGlmICh5aShlKSlcbiAgICAgIHJldHVybiBJaShlKTtcbiAgICBpZiAoZ2koZSkpXG4gICAgICByZXR1cm4gQW4oZSk7XG4gICAgaWYgKFBpKGUpKVxuICAgICAgcmV0dXJuIFJpKGUpO1xuICAgIGlmIChDaShlKSlcbiAgICAgIHJldHVybiBGaShlKTtcbiAgfVxuICB0aHJvdyB3aShlKTtcbn1cbmZ1bmN0aW9uIFNpKGUpIHtcbiAgcmV0dXJuIG5ldyB3ZShmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIgPSBlW3NyXSgpO1xuICAgIGlmIChZKHIuc3Vic2NyaWJlKSlcbiAgICAgIHJldHVybiByLnN1YnNjcmliZSh0KTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJvdmlkZWQgb2JqZWN0IGRvZXMgbm90IGNvcnJlY3RseSBpbXBsZW1lbnQgU3ltYm9sLm9ic2VydmFibGVcIik7XG4gIH0pO1xufVxuZnVuY3Rpb24ga2koZSkge1xuICByZXR1cm4gbmV3IHdlKGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKHZhciByID0gMDsgciA8IGUubGVuZ3RoICYmICF0LmNsb3NlZDsgcisrKVxuICAgICAgdC5uZXh0KGVbcl0pO1xuICAgIHQuY29tcGxldGUoKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBJaShlKSB7XG4gIHJldHVybiBuZXcgd2UoZnVuY3Rpb24odCkge1xuICAgIGUudGhlbihmdW5jdGlvbihyKSB7XG4gICAgICB0LmNsb3NlZCB8fCAodC5uZXh0KHIpLCB0LmNvbXBsZXRlKCkpO1xuICAgIH0sIGZ1bmN0aW9uKHIpIHtcbiAgICAgIHJldHVybiB0LmVycm9yKHIpO1xuICAgIH0pLnRoZW4obnVsbCwgRW4pO1xuICB9KTtcbn1cbmZ1bmN0aW9uIFJpKGUpIHtcbiAgcmV0dXJuIG5ldyB3ZShmdW5jdGlvbih0KSB7XG4gICAgdmFyIHIsIG47XG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIGEgPSBPZShlKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgICAgdmFyIHMgPSBpLnZhbHVlO1xuICAgICAgICBpZiAodC5uZXh0KHMpLCB0LmNsb3NlZClcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBjYXRjaCAobCkge1xuICAgICAgciA9IHsgZXJyb3I6IGwgfTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaSAmJiAhaS5kb25lICYmIChuID0gYS5yZXR1cm4pICYmIG4uY2FsbChhKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChyKSB0aHJvdyByLmVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgICB0LmNvbXBsZXRlKCk7XG4gIH0pO1xufVxuZnVuY3Rpb24gQW4oZSkge1xuICByZXR1cm4gbmV3IHdlKGZ1bmN0aW9uKHQpIHtcbiAgICBUaShlLCB0KS5jYXRjaChmdW5jdGlvbihyKSB7XG4gICAgICByZXR1cm4gdC5lcnJvcihyKTtcbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBGaShlKSB7XG4gIHJldHVybiBBbihFaShlKSk7XG59XG5mdW5jdGlvbiBUaShlLCB0KSB7XG4gIHZhciByLCBuLCBhLCBpO1xuICByZXR1cm4gS2EodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzLCBsO1xuICAgIHJldHVybiB2bih0aGlzLCBmdW5jdGlvbihjKSB7XG4gICAgICBzd2l0Y2ggKGMubGFiZWwpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIGMudHJ5cy5wdXNoKFswLCA1LCA2LCAxMV0pLCByID0gV2EoZSksIGMubGFiZWwgPSAxO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgcmV0dXJuIFs0LCByLm5leHQoKV07XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAobiA9IGMuc2VudCgpLCAhIW4uZG9uZSkgcmV0dXJuIFszLCA0XTtcbiAgICAgICAgICBpZiAocyA9IG4udmFsdWUsIHQubmV4dChzKSwgdC5jbG9zZWQpXG4gICAgICAgICAgICByZXR1cm4gWzJdO1xuICAgICAgICAgIGMubGFiZWwgPSAzO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgcmV0dXJuIFszLCAxXTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBbMywgMTFdO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgcmV0dXJuIGwgPSBjLnNlbnQoKSwgYSA9IHsgZXJyb3I6IGwgfSwgWzMsIDExXTtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIHJldHVybiBjLnRyeXMucHVzaChbNiwgLCA5LCAxMF0pLCBuICYmICFuLmRvbmUgJiYgKGkgPSByLnJldHVybikgPyBbNCwgaS5jYWxsKHIpXSA6IFszLCA4XTtcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIGMuc2VudCgpLCBjLmxhYmVsID0gODtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIHJldHVybiBbMywgMTBdO1xuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgICAgICAgcmV0dXJuIFs3XTtcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIHJldHVybiB0LmNvbXBsZXRlKCksIFsyXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5mdW5jdGlvbiBOaShlLCB0LCByLCBuLCBhKSB7XG4gIG4gPT09IHZvaWQgMCAmJiAobiA9IDApLCBhID09PSB2b2lkIDAgJiYgKGEgPSBmYWxzZSk7XG4gIHZhciBpID0gdC5zY2hlZHVsZShmdW5jdGlvbigpIHtcbiAgICByKCksIGEgPyBlLmFkZCh0aGlzLnNjaGVkdWxlKG51bGwsIG4pKSA6IHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgfSwgbik7XG4gIGlmIChlLmFkZChpKSwgIWEpXG4gICAgcmV0dXJuIGk7XG59XG5mdW5jdGlvbiBMaShlLCB0KSB7XG4gIHZhciByID0gWShlKSA/IGUgOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZTtcbiAgfSwgbiA9IGZ1bmN0aW9uKGEpIHtcbiAgICByZXR1cm4gYS5lcnJvcihyKCkpO1xuICB9O1xuICByZXR1cm4gbmV3IHdlKG4pO1xufVxudmFyIE1pID0gTnQoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZSh0aGlzKSwgdGhpcy5uYW1lID0gXCJFbXB0eUVycm9yXCIsIHRoaXMubWVzc2FnZSA9IFwibm8gZWxlbWVudHMgaW4gc2VxdWVuY2VcIjtcbiAgfTtcbn0pO1xuZnVuY3Rpb24geGkoZSwgdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ociwgbikge1xuICAgIHZhciBhID0gZmFsc2UsIGk7XG4gICAgZS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogZnVuY3Rpb24ocykge1xuICAgICAgICBpID0gcywgYSA9IHRydWU7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IG4sXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIGEgPyByKGkpIDogbihuZXcgTWkoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gRGkoZSkge1xuICByZXR1cm4gZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGUpO1xufVxudmFyIFVpID0gTnQoZnVuY3Rpb24oZSkge1xuICByZXR1cm4gZnVuY3Rpb24ocikge1xuICAgIHIgPT09IHZvaWQgMCAmJiAociA9IG51bGwpLCBlKHRoaXMpLCB0aGlzLm1lc3NhZ2UgPSBcIlRpbWVvdXQgaGFzIG9jY3VycmVkXCIsIHRoaXMubmFtZSA9IFwiVGltZW91dEVycm9yXCIsIHRoaXMuaW5mbyA9IHI7XG4gIH07XG59KTtcbmZ1bmN0aW9uIE9pKGUsIHQpIHtcbiAgdmFyIHIgPSBEaShlKSA/IHsgZmlyc3Q6IGUgfSA6IHR5cGVvZiBlID09IFwibnVtYmVyXCIgPyB7IGVhY2g6IGUgfSA6IGUsIG4gPSByLmZpcnN0LCBhID0gci5lYWNoLCBpID0gci53aXRoLCBzID0gaSA9PT0gdm9pZCAwID8gamkgOiBpLCBsID0gci5zY2hlZHVsZXIsIGMgPSBsID09PSB2b2lkIDAgPyBmaSA6IGwsIHUgPSByLm1ldGEsIGQgPSB1ID09PSB2b2lkIDAgPyBudWxsIDogdTtcbiAgaWYgKG4gPT0gbnVsbCAmJiBhID09IG51bGwpXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk5vIHRpbWVvdXQgcHJvdmlkZWQuXCIpO1xuICByZXR1cm4gaWkoZnVuY3Rpb24obSwgZikge1xuICAgIHZhciB5LCBfLCBnID0gbnVsbCwgdyA9IDAsIGggPSBmdW5jdGlvbihiKSB7XG4gICAgICBfID0gTmkoZiwgYywgZnVuY3Rpb24oKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgeS51bnN1YnNjcmliZSgpLCBBaShzKHtcbiAgICAgICAgICAgIG1ldGE6IGQsXG4gICAgICAgICAgICBsYXN0VmFsdWU6IGcsXG4gICAgICAgICAgICBzZWVuOiB3XG4gICAgICAgICAgfSkpLnN1YnNjcmliZShmKTtcbiAgICAgICAgfSBjYXRjaCAoUykge1xuICAgICAgICAgIGYuZXJyb3IoUyk7XG4gICAgICAgIH1cbiAgICAgIH0sIGIpO1xuICAgIH07XG4gICAgeSA9IG0uc3Vic2NyaWJlKHNpKGYsIGZ1bmN0aW9uKGIpIHtcbiAgICAgIF8/LnVuc3Vic2NyaWJlKCksIHcrKywgZi5uZXh0KGcgPSBiKSwgYSA+IDAgJiYgaChhKTtcbiAgICB9LCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24oKSB7XG4gICAgICBfPy5jbG9zZWQgfHwgXz8udW5zdWJzY3JpYmUoKSwgZyA9IG51bGw7XG4gICAgfSkpLCAhdyAmJiBoKG4gIT0gbnVsbCA/IHR5cGVvZiBuID09IFwibnVtYmVyXCIgPyBuIDogK24gLSBjLm5vdygpIDogYSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gamkoZSkge1xuICB0aHJvdyBuZXcgVWkoZSk7XG59XG5jbGFzcyBYZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2V0ID0gKHQpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcInN1Y2Nlc3NcIiwgaXNTdWNjZXNzOiB0cnVlLCBsb2FkZWRWYWx1ZTogdCB9LCB0aGlzLl9zdWJqZWN0Lm5leHQodCksIHRoaXMuX3N1YmplY3QuY29tcGxldGUoKTtcbiAgICB9LCB0aGlzLnRocm93ID0gKHQsIHIpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvYWRlZE9uY2UgaXMgYWxyZWFkeSBpbiBzdWNjZXNzIHN0YXRlXCIpO1xuICAgICAgdGhpcy5fY3VycmVudCA9IHsgc3RhdHVzOiBcImVycm9yXCIsIGlzU3VjY2VzczogZmFsc2UsIGVycm9yOiB0LCBlcnJNc2c6IHIgfSwgdGhpcy5fc3ViamVjdC5lcnJvcih0KTtcbiAgICB9LCB0aGlzLmdldFZhbHVlSWZMb2FkZWRFbHNlID0gKHQpID0+IHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcInN1Y2Nlc3NcIiA/IHRoaXMuX2N1cnJlbnQubG9hZGVkVmFsdWUgOiB0LCB0aGlzLnN1YnNjcmliZSA9ICh0KSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgIHQodGhpcy5fY3VycmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2N1cnJlbnQuc3RhdHVzID09PSBcImVycm9yXCIgJiYgdCh0aGlzLl9jdXJyZW50KTtcbiAgICAgIGNvbnN0IHIgPSB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwic3VjY2Vzc1wiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZSAobmV4dCk6IHBsZWFzZSBtYWtlIHN1cmUgdG8gdXBkYXRlIF9jdXJyZW50IGJlZm9yZSB0aGUgc3ViamVjdFwiKTtcbiAgICAgICAgICB0KHRoaXMuX2N1cnJlbnQpLCByLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnQuc3RhdHVzICE9PSBcImVycm9yXCIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0YXRlIChlcnJvcik6IHBsZWFzZSBtYWtlIHN1cmUgdG8gdXBkYXRlIF9jdXJyZW50IGJlZm9yZSB0aGUgc3ViamVjdFwiKTtcbiAgICAgICAgICB0KHRoaXMuX2N1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCB0aGlzLndhaXRGb3JMb2FkID0gKHQpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fY3VycmVudC5sb2FkZWRWYWx1ZSk7XG4gICAgICBpZiAodGhpcy5fY3VycmVudC5zdGF0dXMgPT09IFwiZXJyb3JcIikgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoaXMuX2N1cnJlbnQuZXJyb3IpO1xuICAgICAgdGhpcy5fY3VycmVudC5zdGF0dXMgIT09IFwiaW5pdGlhbFwiICYmIGN0KHRoaXMuX2N1cnJlbnQpO1xuICAgICAgY29uc3QgciA9IHtcbiAgICAgICAgZmlyc3Q6IHQudGltZW91dFNlYyAqIDFlMyxcbiAgICAgICAgd2l0aDogKCkgPT4gTGkoKCkgPT4gbmV3IEVycm9yKHQudGltZW91dEVyck1zZykpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHhpKHRoaXMuX3N1YmplY3QucGlwZShPaShyKSkpO1xuICAgIH0sIHRoaXMuX2N1cnJlbnQgPSB7IHN0YXR1czogXCJpbml0aWFsXCIsIGlzU3VjY2VzczogZmFsc2UgfSwgdGhpcy5fc3ViamVjdCA9IG5ldyBDbigpO1xuICB9XG4gIGdldCBjdXJyZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50O1xuICB9XG59XG5jb25zdCBMciA9IHokMS5lbnVtKFtcImRldlwiLCBcInN0Z1wiLCBcInByb2RcIl0pLCAkaSA9IHtcbiAgcHJvZDogXCJodHRwczovL2Nvbm50by5nZXRvcGVucGF5LmNvbVwiLFxuICBzdGc6IFwiaHR0cHM6Ly9jb25udG8ub3BlbnBheXN0YWdpbmcuY29tXCIsXG4gIGRldjogXCJodHRwOi8vbG9jYWxob3N0OjgwMDBcIlxufSwgR2kgPSAoZSkgPT4gJGlbZV0sIEJ0ID0ge30sIFNuID0gYXN5bmMgKGUpID0+IHtcbiAgaWYgKEJ0W2VdKVxuICAgIHJldHVybiBCdFtlXTtcbiAgdHJ5IHtcbiAgICBjb25zdCB0ID0gYXdhaXQgZmV0Y2gobmV3IFVSTChcIi9oZWFsdGgvZW52aXJvbm1lbnRcIiwgZSkpLnRoZW4oKG4pID0+IG4uanNvbigpKSwgciA9IExyLnBhcnNlKHQuZW52aXJvbm1lbnQpO1xuICAgIHJldHVybiBCdFtlXSA9IHIsIHI7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBMci5WYWx1ZXMucHJvZDtcbiAgfVxufTtcbmZ1bmN0aW9uIGN0KGUpIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQgY2FzZTogJHtlfWApO1xufVxuY29uc3QgTHQgPSAoZSwgdCkgPT4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGUpLmZpbHRlcigoW3JdKSA9PiAhdC5pbmNsdWRlcyhyKSkpLCBCID0gKCkgPT4ge1xuICBpZiAoISh0eXBlb2Ygd2luZG93ID4gXCJ1XCIpKVxuICAgIHJldHVybiB3aW5kb3c7XG59LCBlciA9IG5ldyBYZSgpLCBNciA9IFwib3BfbWV0cmljc19xdWV1ZVwiLCBxaSA9IDMsIFZpID0gMywgemkgPSAxZTMsIHsgbG9nX186IG10IH0gPSBrKFwib3AtbWV0cmljc1wiKTtcbmNsYXNzIEJpIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5xdWV1ZSA9IFtdLCB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9IGZhbHNlLCB0aGlzLmJhdGNoVGltZW91dCA9IG51bGwsIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID0gMCwgdGhpcy5vZmZsaW5lTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBtdChcIk5ldHdvcmsgb2ZmbGluZSwgbWV0cmljcyB3aWxsIGJlIHF1ZXVlZFwiKSwgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICB9LCB0aGlzLm9ubGluZUxpc3RlbmVyID0gKCkgPT4ge1xuICAgICAgbXQoXCJOZXR3b3JrIG9ubGluZSwgcHJvY2Vzc2luZyBtZXRyaWNzIHF1ZXVlXCIpLCB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgIH0sIHRoaXMubG9hZFF1ZXVlRnJvbVN0b3JhZ2UoKSwgQigpPy5hZGRFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCB0aGlzLm9mZmxpbmVMaXN0ZW5lciksIEIoKT8uYWRkRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCB0aGlzLm9ubGluZUxpc3RlbmVyKTtcbiAgfVxuICBhZGRFdmVudCh0LCByLCBuKSB7XG4gICAgY29uc3QgYSA9IHtcbiAgICAgIGV2ZW50TmFtZTogdCxcbiAgICAgIHByb3BlcnRpZXM6IHIgfHwge30sXG4gICAgICBjb250ZXh0UHJvcGVydGllczogbiB8fCB7fSxcbiAgICAgIG5vbmNlOiB2NCgpLFxuICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgZGF0ZXRpbWU6ICgvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKSkudG9JU09TdHJpbmcoKSxcbiAgICAgIGF0dGVtcHRDb3VudDogMCxcbiAgICAgIHRpbWVEaWZmRnJvbVByZXZpb3VzRXZlbnQ6IHRoaXMubGFzdEV2ZW50VGltZXN0YW1wID8gRGF0ZS5ub3coKSAtIHRoaXMubGFzdEV2ZW50VGltZXN0YW1wIDogMFxuICAgIH07XG4gICAgdGhpcy5sYXN0RXZlbnRUaW1lc3RhbXAgPSBhLnRpbWVzdGFtcCwgdGhpcy5xdWV1ZS5wdXNoKGEpLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpLCB0aGlzLnNjaGVkdWxlQmF0Y2hQcm9jZXNzaW5nKCk7XG4gIH1cbiAgbG9hZFF1ZXVlRnJvbVN0b3JhZ2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHQgPSBCKCk/LmxvY2FsU3RvcmFnZT8uZ2V0SXRlbShNcik7XG4gICAgICB0ICYmICh0aGlzLnF1ZXVlID0gSlNPTi5wYXJzZSh0KSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLnF1ZXVlID0gW10sIHRoaXMuc2F2ZVF1ZXVlVG9TdG9yYWdlKCk7XG4gICAgfVxuICB9XG4gIHNhdmVRdWV1ZVRvU3RvcmFnZSgpIHtcbiAgICBCKCk/LmxvY2FsU3RvcmFnZS5zZXRJdGVtKE1yLCBKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXVlKSk7XG4gIH1cbiAgc2NoZWR1bGVCYXRjaFByb2Nlc3NpbmcoKSB7XG4gICAgY29uc3QgdCA9IEIoKTtcbiAgICB0ICYmIG5hdmlnYXRvci5vbkxpbmUgJiYgIXRoaXMucHJvY2Vzc2luZ1F1ZXVlICYmIHRoaXMucXVldWUubGVuZ3RoID4gMCAmJiAhdGhpcy5iYXRjaFRpbWVvdXQgJiYgKHRoaXMuYmF0Y2hUaW1lb3V0ID0gdC5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYmF0Y2hUaW1lb3V0ID0gbnVsbCwgdGhpcy5wcm9jZXNzUXVldWUoKTtcbiAgICB9LCB6aSkpO1xuICB9XG4gIGNhbmNlbEJhdGNoUHJvY2Vzc2luZygpIHtcbiAgICB0aGlzLmJhdGNoVGltZW91dCAmJiAoQigpPy5jbGVhclRpbWVvdXQodGhpcy5iYXRjaFRpbWVvdXQpLCB0aGlzLmJhdGNoVGltZW91dCA9IG51bGwpLCB0aGlzLnByb2Nlc3NpbmdRdWV1ZSA9IGZhbHNlO1xuICB9XG4gIHByb2Nlc3NRdWV1ZSgpIHtcbiAgICAhbmF2aWdhdG9yLm9uTGluZSB8fCB0aGlzLnByb2Nlc3NpbmdRdWV1ZSB8fCB0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCB8fCAodGhpcy5wcm9jZXNzaW5nUXVldWUgPSB0cnVlLCB0aGlzLnNlbmRCYXRjaCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzaW5nUXVldWUgPSBmYWxzZSwgdGhpcy5xdWV1ZS5sZW5ndGggPiAwICYmIHRoaXMuc2NoZWR1bGVCYXRjaFByb2Nlc3NpbmcoKTtcbiAgICB9KSk7XG4gIH1cbiAgYXN5bmMgc2VuZEJhdGNoKCkge1xuICAgIGlmICh0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IHQgPSBlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZSh2b2lkIDApO1xuICAgIGlmICghdCkge1xuICAgICAgbXQoXCJNZXRyaWNzIGNvbnRleHQgbm90IGF2YWlsYWJsZSwgd2lsbCByZXRyeSBsYXRlclwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgciA9IHRoaXMucXVldWUuc2xpY2UoMCwgVmkpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBuID0ge1xuICAgICAgICBldmVudHM6IHIubWFwKChsKSA9PiAoe1xuICAgICAgICAgIGV2ZW50X25hbWU6IGwuZXZlbnROYW1lLFxuICAgICAgICAgIGRldmljZV90b2tlbjogdC5kZXZpY2VUb2tlbixcbiAgICAgICAgICBjb250ZXh0X3Byb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIC4uLnQsXG4gICAgICAgICAgICAuLi5sLmNvbnRleHRQcm9wZXJ0aWVzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBub25jZTogbC5ub25jZSxcbiAgICAgICAgICAgIGRhdGV0aW1lOiBsLmRhdGV0aW1lLFxuICAgICAgICAgICAgdGltZXN0YW1wOiBsLnRpbWVzdGFtcCxcbiAgICAgICAgICAgIHRpbWVfZGlmZl9mcm9tX3ByZXZpb3VzX2V2ZW50OiBsLnRpbWVEaWZmRnJvbVByZXZpb3VzRXZlbnQsXG4gICAgICAgICAgICBjaGVja291dF9zZWN1cmVfdG9rZW46IHQuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgICAgIC4uLmwucHJvcGVydGllc1xuICAgICAgICAgIH1cbiAgICAgICAgfSkpXG4gICAgICB9LCBhID0gR2kodC5lbnZpcm9ubWVudCksIGkgPSBuZXcgVVJMKFwiL21ldHJpY3MvcHVibGljL2NhcHR1cmVcIiwgYSk7XG4gICAgICAoYXdhaXQgZmV0Y2goaS50b1N0cmluZygpLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShuKSxcbiAgICAgICAga2VlcGFsaXZlOiAhMFxuICAgICAgICAvLyBUbyBzZW5kIGV2ZW50cyBldmVuIGlmIHRoZSBwYWdlIGlzIHVubG9hZGVkXG4gICAgICB9KSkub2sgPyAodGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuc2xpY2Uoci5sZW5ndGgpLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpKSA6IHRoaXMuaGFuZGxlRmFpbGVkQmF0Y2gocik7XG4gICAgfSBjYXRjaCAobikge1xuICAgICAgbXQoXCJFcnJvciBzZW5kaW5nIG1ldHJpY3MgYmF0Y2g6XCIsIG4pLCB0aGlzLmhhbmRsZUZhaWxlZEJhdGNoKHIpO1xuICAgIH1cbiAgfVxuICBoYW5kbGVGYWlsZWRCYXRjaCh0KSB7XG4gICAgdC5mb3JFYWNoKChuKSA9PiB7XG4gICAgICBuLmF0dGVtcHRDb3VudCsrO1xuICAgIH0pO1xuICAgIGNvbnN0IHIgPSB0LmZpbHRlcigobikgPT4gbi5hdHRlbXB0Q291bnQgPCBxaSk7XG4gICAgdGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuc2xpY2UodC5sZW5ndGgpLCB0aGlzLnF1ZXVlID0gWy4uLnIsIC4uLnRoaXMucXVldWVdLCB0aGlzLnNhdmVRdWV1ZVRvU3RvcmFnZSgpO1xuICB9XG4gIGNsZWFudXAoKSB7XG4gICAgQigpPy5yZW1vdmVFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCB0aGlzLm9mZmxpbmVMaXN0ZW5lciksIEIoKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm9ubGluZVwiLCB0aGlzLm9ubGluZUxpc3RlbmVyKSwgdGhpcy5jYW5jZWxCYXRjaFByb2Nlc3NpbmcoKTtcbiAgfVxufVxuY29uc3QgY3IgPSBuZXcgQmkoKSwgdiA9IChlLCB0LCByKSA9PiB7XG4gIGNyLmFkZEV2ZW50KGUsIHQsIHIpO1xufSwgSGkgPSAoKSA9PiB7XG4gIGNyLnByb2Nlc3NRdWV1ZSgpO1xufSwga24gPSAoZSkgPT4ge1xuICBjb25zdCB0ID0gYWUoZS5yZWFzb24pO1xuICB2KFwidW5oYW5kbGVkX3JlamVjdGlvbl9lcnJvclwiLCB7XG4gICAgZXJyb3JfbWVzc2FnZTogdCxcbiAgICBlcnJvcl9uYW1lOiBlLnJlYXNvblxuICB9KTtcbn0sIEluID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IGFlKGUuZXJyb3IpO1xuICB2KFwidW5jYXVnaHRfZXJyb3JcIiwge1xuICAgIGVycm9yX21lc3NhZ2U6IHQsXG4gICAgZXJyb3JfbmFtZTogZS5lcnJvcj8ubmFtZSxcbiAgICBlcnJvcl9zdGFjazogZS5lcnJvcj8uc3RhY2ssXG4gICAgZmlsZV9uYW1lOiBlLmZpbGVuYW1lLFxuICAgIGxpbmVfbnVtYmVyOiBlLmxpbmVubyxcbiAgICBjb2x1bW5fbnVtYmVyOiBlLmNvbG5vXG4gIH0pO1xufTtcbmxldCBTdCA9IG51bGw7XG5jb25zdCBLaSA9IGFzeW5jICgpID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPiBcInVcIikgcmV0dXJuIG51bGw7XG4gIHRyeSB7XG4gICAgcmV0dXJuIFN0ID0gKGF3YWl0IGltcG9ydCgnLi9saWZlY3ljbGUtRDFCZEViWnMtIX57MDA1fX4uanMnKSkuZGVmYXVsdCwgU3Q7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gY29uc29sZS53YXJuKFwiRmFpbGVkIHRvIGxvYWQgcGFnZS1saWZlY3ljbGU6XCIsIGUpLCBudWxsO1xuICB9XG59LCBSbiA9IChlKSA9PiB7XG4gIHYoXCJwYWdlX2xpZmVjeWNsZV9zdGF0ZV9jaGFuZ2VcIiwge1xuICAgIG9sZF9zdGF0ZTogZS5vbGRTdGF0ZSxcbiAgICBuZXdfc3RhdGU6IGUubmV3U3RhdGVcbiAgfSksIChlLm5ld1N0YXRlID09PSBcImhpZGRlblwiIHx8IGUubmV3U3RhdGUgPT09IFwicGFzc2l2ZVwiKSAmJiBjci5wcm9jZXNzUXVldWUoKTtcbn0sIFlpID0gYXN5bmMgKCkgPT4ge1xuICBCKCk/LmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBJbiksIEIoKT8uYWRkRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLCBrbik7XG4gIGNvbnN0IGUgPSBhd2FpdCBLaSgpO1xuICBlICYmIGUuYWRkRXZlbnRMaXN0ZW5lcihcInN0YXRlY2hhbmdlXCIsIFJuKTtcbn0sIFdpID0gYXN5bmMgKCkgPT4ge1xuICBCKCk/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBJbiksIEIoKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLCBrbiksIEIoKSAmJiBTdCAmJiBTdC5yZW1vdmVFdmVudExpc3RlbmVyKFwic3RhdGVjaGFuZ2VcIiwgUm4pO1xufSwgSmkgPSB6JDEub2JqZWN0KHtcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BtX2lkOiB6JDEuc3RyaW5nKClcbn0pLCBaaSA9IHokMS5vYmplY3Qoe1xuICB0eXBlOiB6JDEuc3RyaW5nKCksXG4gIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKSxcbiAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbn0pLCBRaSA9IHtcbiAgdXNkOiBcInVzZFwiLFxuICBicmw6IFwiYnJsXCJcbn0sIE10ID0gYXN5bmMgKGUpID0+IHtcbiAgZm9yIChsZXQgciA9IDA7IHIgPCAxMDsgcisrKVxuICAgIHhyKCkgfHwgYXdhaXQgRHQoNTAwKTtcbiAgaWYgKCF4cigpKVxuICAgIHRocm93IGNvbnNvbGUubG9nKFwiU3RyaXBlIEpTIG5vdCBmb3VuZC5cIiksIG5ldyBFcnJvcihcIlN0cmlwZSBKUyBub3QgZm91bmQuXCIpO1xuICByZXR1cm4gbmV3IFN0cmlwZShlKTtcbn0sIHh0ID0gYXN5bmMgKGUsIHQpID0+IHtcbiAgY29uc3QgciA9IGF3YWl0IE10KGUpO1xuICByZXR1cm4ge1xuICAgIGVsZW1lbnRzOiByLmVsZW1lbnRzKHQpLFxuICAgIHN0cmlwZTogclxuICB9O1xufSwgWGkgPSBhc3luYyAoZSwgdCwgciwgbiwgYSkgPT4ge1xuICBjb25zdCBpID0gYXdhaXQgTXQoZSksIHMgPSBRaVtyLnRvTG93ZXJDYXNlKCkudHJpbSgpXTtcbiAgcmV0dXJuIGkucGF5bWVudFJlcXVlc3Qoe1xuICAgIC8vIFRPRE86IHJlcGxhY2UgdGhpcyB3aXRoIHN0cmlwZSBhY2NvdW50IGNvdW50cnkgYXMgc29vbiBhcyB3ZSBzdXBwb3J0IGl0XG4gICAgY291bnRyeTogXCJVU1wiLFxuICAgIGN1cnJlbmN5OiBzLFxuICAgIHRvdGFsOiB7XG4gICAgICBsYWJlbDogXCJUb3RhbFwiLFxuICAgICAgYW1vdW50OiB0LFxuICAgICAgcGVuZGluZzogblxuICAgIH0sXG4gICAgLy8gcmVxdWVzdFNoaXBwaW5nOiB0cnVlLFxuICAgIHJlcXVlc3RQYXllck5hbWU6IHRydWUsXG4gICAgcmVxdWVzdFBheWVyRW1haWw6IHRydWUsXG4gICAgZGlzYWJsZVdhbGxldHM6IFtdXG4gIH0pO1xufSwgRHQgPSAoZSkgPT4gbmV3IFByb21pc2UoKHQpID0+IHtcbiAgc2V0VGltZW91dCh0LCBlKTtcbn0pLCB4ciA9ICgpID0+IFwiU3RyaXBlXCIgaW4gd2luZG93LCBlcyA9IGFzeW5jIChlKSA9PiBuZXcgUHJvbWlzZSgodCwgcikgPT4ge1xuICB0cnkge1xuICAgIGUub24oXCJwYXltZW50bWV0aG9kXCIsIGFzeW5jIChuKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcInBheW1lbnRtZXRob2QgRVZUOjogXCIsIG4pLCB0KG4pO1xuICAgIH0pLCBlLm9uKFwidG9rZW5cIiwgYXN5bmMgKG4pID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwidG9rZW4gRVZUOjogXCIsIG4pO1xuICAgIH0pLCBlLm9uKFwiY2FuY2VsXCIsICgpID0+IHtcbiAgICAgIHIobmV3IEVycm9yKFwiUGF5bWVudCBjYW5jZWxsZWQsIHBsZWFzZSBjbGljayBTdWJtaXQgYWdhaW4gdG8gcGF5XCIpKTtcbiAgICB9KTtcbiAgfSBjYXRjaCAobikge1xuICAgIHIobik7XG4gIH1cbn0pLCB0cyA9IGFzeW5jIChlLCB0KSA9PiB7XG4gIGlmICghZS5zdHJpcGVfcGsgfHwgIWUuY2xpZW50X3NlY3JldClcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbmV4dCBhY3Rpb24gbWV0YWRhdGEgZm9ybWF0OiAke0pTT04uc3RyaW5naWZ5KGUpfWApO1xuICBjb25zdCBuID0gYXdhaXQgKGF3YWl0IE10KGUuc3RyaXBlX3BrKSkuY29uZmlybUNhcmRTZXR1cChlLmNsaWVudF9zZWNyZXQsIHtcbiAgICBwYXltZW50X21ldGhvZDogdC5wYXltZW50TWV0aG9kLmlkXG4gIH0pO1xuICBpZiAobi5lcnJvcilcbiAgICB0aHJvdyB0LmNvbXBsZXRlKFwiZmFpbFwiKSwgbmV3IEVycm9yKGBQYXltZW50IGZhaWxlZDogJHtuLmVycm9yLm1lc3NhZ2UgPz8gXCJ1bmtub3duXCJ9YCk7XG4gIHJldHVybiB0LmNvbXBsZXRlKFwic3VjY2Vzc1wiKSwgbjtcbn0sIHJzID0gYXN5bmMgKGUpID0+IHtcbiAgY29uc3QgciA9IGF3YWl0IChhd2FpdCBNdChlLnN0cmlwZV9waykpLmNvbmZpcm1DYXJkU2V0dXAoZS5jbGllbnRfc2VjcmV0LCB7XG4gICAgcGF5bWVudF9tZXRob2Q6IGUuc3RyaXBlX3BtX2lkXG4gIH0pLCBuID0gci5zZXR1cEludGVudD8uc3RhdHVzO1xuICBpZiAobiA9PT0gXCJzdWNjZWVkZWRcIilcbiAgICBjb25zb2xlLmxvZyhcIlszRFNdIENPTkZJUk1JTkcgUE06XCIsIGUuc3RyaXBlX3BtX2lkKSwgY29uc29sZS5sb2coXCJbM0RTXSBTZXR1cCBpbnRlbnQgY3JlYXRlZDpcIiwgci5zZXR1cEludGVudCk7XG4gIGVsc2UgdGhyb3cgbiA9PT0gXCJjYW5jZWxlZFwiID8gbmV3IEVycm9yKFwiUGF5bWVudCBjYW5jZWxsZWQsIHBsZWFzZSBjbGljayBTdWJtaXQgYWdhaW4gdG8gcGF5XCIpIDogbmV3IEVycm9yKFxuICAgIGAke3IuZXJyb3I/Lm1lc3NhZ2UgPz8gci5zZXR1cEludGVudD8ubGFzdF9zZXR1cF9lcnJvcj8ubWVzc2FnZSA/PyBcIlBheW1lbnQgZmFpbGVkLCBwbGVhc2UgY2xpY2sgc3VibWl0IGFnYWluIHRvIHBheS5cIn1gXG4gICk7XG59O1xudmFyIG5zID0gdHlwZW9mIGdsb2JhbFRoaXMgPT0gXCJvYmplY3RcIiA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygc2VsZiA9PSBcIm9iamVjdFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgPT0gXCJvYmplY3RcIiA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgPT0gXCJvYmplY3RcIiA/IGdsb2JhbCA6IHt9LCBSZSA9IFwiMS45LjBcIiwgRHIgPSAvXihcXGQrKVxcLihcXGQrKVxcLihcXGQrKSgtKC4rKSk/JC87XG5mdW5jdGlvbiBvcyhlKSB7XG4gIHZhciB0ID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoW2VdKSwgciA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksIG4gPSBlLm1hdGNoKERyKTtcbiAgaWYgKCFuKVxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICB2YXIgYSA9IHtcbiAgICBtYWpvcjogK25bMV0sXG4gICAgbWlub3I6ICtuWzJdLFxuICAgIHBhdGNoOiArblszXSxcbiAgICBwcmVyZWxlYXNlOiBuWzRdXG4gIH07XG4gIGlmIChhLnByZXJlbGVhc2UgIT0gbnVsbClcbiAgICByZXR1cm4gZnVuY3Rpb24oYykge1xuICAgICAgcmV0dXJuIGMgPT09IGU7XG4gICAgfTtcbiAgZnVuY3Rpb24gaShsKSB7XG4gICAgcmV0dXJuIHIuYWRkKGwpLCBmYWxzZTtcbiAgfVxuICBmdW5jdGlvbiBzKGwpIHtcbiAgICByZXR1cm4gdC5hZGQobCksIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKGMpIHtcbiAgICBpZiAodC5oYXMoYykpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoci5oYXMoYykpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgdmFyIHUgPSBjLm1hdGNoKERyKTtcbiAgICBpZiAoIXUpXG4gICAgICByZXR1cm4gaShjKTtcbiAgICB2YXIgZCA9IHtcbiAgICAgIG1ham9yOiArdVsxXSxcbiAgICAgIG1pbm9yOiArdVsyXSxcbiAgICAgIHBhdGNoOiArdVszXSxcbiAgICAgIHByZXJlbGVhc2U6IHVbNF1cbiAgICB9O1xuICAgIHJldHVybiBkLnByZXJlbGVhc2UgIT0gbnVsbCB8fCBhLm1ham9yICE9PSBkLm1ham9yID8gaShjKSA6IGEubWFqb3IgPT09IDAgPyBhLm1pbm9yID09PSBkLm1pbm9yICYmIGEucGF0Y2ggPD0gZC5wYXRjaCA/IHMoYykgOiBpKGMpIDogYS5taW5vciA8PSBkLm1pbm9yID8gcyhjKSA6IGkoYyk7XG4gIH07XG59XG52YXIgYXMgPSBvcyhSZSksIGlzID0gUmUuc3BsaXQoXCIuXCIpWzBdLCBydCA9IFN5bWJvbC5mb3IoXCJvcGVudGVsZW1ldHJ5LmpzLmFwaS5cIiArIGlzKSwgbnQgPSBucztcbmZ1bmN0aW9uIGxyKGUsIHQsIHIsIG4pIHtcbiAgdmFyIGE7XG4gIG4gPT09IHZvaWQgMCAmJiAobiA9IGZhbHNlKTtcbiAgdmFyIGkgPSBudFtydF0gPSAoYSA9IG50W3J0XSkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IHtcbiAgICB2ZXJzaW9uOiBSZVxuICB9O1xuICBpZiAoIW4gJiYgaVtlXSkge1xuICAgIHZhciBzID0gbmV3IEVycm9yKFwiQG9wZW50ZWxlbWV0cnkvYXBpOiBBdHRlbXB0ZWQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiBvZiBBUEk6IFwiICsgZSk7XG4gICAgcmV0dXJuIHIuZXJyb3Iocy5zdGFjayB8fCBzLm1lc3NhZ2UpLCBmYWxzZTtcbiAgfVxuICBpZiAoaS52ZXJzaW9uICE9PSBSZSkge1xuICAgIHZhciBzID0gbmV3IEVycm9yKFwiQG9wZW50ZWxlbWV0cnkvYXBpOiBSZWdpc3RyYXRpb24gb2YgdmVyc2lvbiB2XCIgKyBpLnZlcnNpb24gKyBcIiBmb3IgXCIgKyBlICsgXCIgZG9lcyBub3QgbWF0Y2ggcHJldmlvdXNseSByZWdpc3RlcmVkIEFQSSB2XCIgKyBSZSk7XG4gICAgcmV0dXJuIHIuZXJyb3Iocy5zdGFjayB8fCBzLm1lc3NhZ2UpLCBmYWxzZTtcbiAgfVxuICByZXR1cm4gaVtlXSA9IHQsIHIuZGVidWcoXCJAb3BlbnRlbGVtZXRyeS9hcGk6IFJlZ2lzdGVyZWQgYSBnbG9iYWwgZm9yIFwiICsgZSArIFwiIHZcIiArIFJlICsgXCIuXCIpLCB0cnVlO1xufVxuZnVuY3Rpb24gb3QoZSkge1xuICB2YXIgdCwgciwgbiA9ICh0ID0gbnRbcnRdKSA9PT0gbnVsbCB8fCB0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0LnZlcnNpb247XG4gIGlmICghKCFuIHx8ICFhcyhuKSkpXG4gICAgcmV0dXJuIChyID0gbnRbcnRdKSA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByW2VdO1xufVxuZnVuY3Rpb24gdXIoZSwgdCkge1xuICB0LmRlYnVnKFwiQG9wZW50ZWxlbWV0cnkvYXBpOiBVbnJlZ2lzdGVyaW5nIGEgZ2xvYmFsIGZvciBcIiArIGUgKyBcIiB2XCIgKyBSZSArIFwiLlwiKTtcbiAgdmFyIHIgPSBudFtydF07XG4gIHIgJiYgZGVsZXRlIHJbZV07XG59XG52YXIgc3MgPSBmdW5jdGlvbihlLCB0KSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXIpIHJldHVybiBlO1xuICB2YXIgbiA9IHIuY2FsbChlKSwgYSwgaSA9IFtdLCBzO1xuICB0cnkge1xuICAgIGZvciAoOyAodCA9PT0gdm9pZCAwIHx8IHQtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAobCkge1xuICAgIHMgPSB7IGVycm9yOiBsIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAociA9IG4ucmV0dXJuKSAmJiByLmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChzKSB0aHJvdyBzLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIGNzID0gZnVuY3Rpb24oZSwgdCwgcikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSB0Lmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gdCkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwgMCwgbikpLCBpW25dID0gdFtuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKTtcbn0sIGxzID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHQpIHtcbiAgICAgIHRoaXMuX25hbWVzcGFjZSA9IHQubmFtZXNwYWNlIHx8IFwiRGlhZ0NvbXBvbmVudExvZ2dlclwiO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZGVidWcgPSBmdW5jdGlvbigpIHtcbiAgICAgIGZvciAodmFyIHQgPSBbXSwgciA9IDA7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspXG4gICAgICAgIHRbcl0gPSBhcmd1bWVudHNbcl07XG4gICAgICByZXR1cm4gSGUoXCJkZWJ1Z1wiLCB0aGlzLl9uYW1lc3BhY2UsIHQpO1xuICAgIH0sIGUucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciB0ID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgICAgICB0W3JdID0gYXJndW1lbnRzW3JdO1xuICAgICAgcmV0dXJuIEhlKFwiZXJyb3JcIiwgdGhpcy5fbmFtZXNwYWNlLCB0KTtcbiAgICB9LCBlLnByb3RvdHlwZS5pbmZvID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciB0ID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgICAgICB0W3JdID0gYXJndW1lbnRzW3JdO1xuICAgICAgcmV0dXJuIEhlKFwiaW5mb1wiLCB0aGlzLl9uYW1lc3BhY2UsIHQpO1xuICAgIH0sIGUucHJvdG90eXBlLndhcm4gPSBmdW5jdGlvbigpIHtcbiAgICAgIGZvciAodmFyIHQgPSBbXSwgciA9IDA7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspXG4gICAgICAgIHRbcl0gPSBhcmd1bWVudHNbcl07XG4gICAgICByZXR1cm4gSGUoXCJ3YXJuXCIsIHRoaXMuX25hbWVzcGFjZSwgdCk7XG4gICAgfSwgZS5wcm90b3R5cGUudmVyYm9zZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgZm9yICh2YXIgdCA9IFtdLCByID0gMDsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKylcbiAgICAgICAgdFtyXSA9IGFyZ3VtZW50c1tyXTtcbiAgICAgIHJldHVybiBIZShcInZlcmJvc2VcIiwgdGhpcy5fbmFtZXNwYWNlLCB0KTtcbiAgICB9LCBlO1xuICB9KSgpXG4pO1xuZnVuY3Rpb24gSGUoZSwgdCwgcikge1xuICB2YXIgbiA9IG90KFwiZGlhZ1wiKTtcbiAgaWYgKG4pXG4gICAgcmV0dXJuIHIudW5zaGlmdCh0KSwgbltlXS5hcHBseShuLCBjcyhbXSwgc3MociksIGZhbHNlKSk7XG59XG52YXIgb2U7XG4oZnVuY3Rpb24oZSkge1xuICBlW2UuTk9ORSA9IDBdID0gXCJOT05FXCIsIGVbZS5FUlJPUiA9IDMwXSA9IFwiRVJST1JcIiwgZVtlLldBUk4gPSA1MF0gPSBcIldBUk5cIiwgZVtlLklORk8gPSA2MF0gPSBcIklORk9cIiwgZVtlLkRFQlVHID0gNzBdID0gXCJERUJVR1wiLCBlW2UuVkVSQk9TRSA9IDgwXSA9IFwiVkVSQk9TRVwiLCBlW2UuQUxMID0gOTk5OV0gPSBcIkFMTFwiO1xufSkob2UgfHwgKG9lID0ge30pKTtcbmZ1bmN0aW9uIHVzKGUsIHQpIHtcbiAgZSA8IG9lLk5PTkUgPyBlID0gb2UuTk9ORSA6IGUgPiBvZS5BTEwgJiYgKGUgPSBvZS5BTEwpLCB0ID0gdCB8fCB7fTtcbiAgZnVuY3Rpb24gcihuLCBhKSB7XG4gICAgdmFyIGkgPSB0W25dO1xuICAgIHJldHVybiB0eXBlb2YgaSA9PSBcImZ1bmN0aW9uXCIgJiYgZSA+PSBhID8gaS5iaW5kKHQpIDogZnVuY3Rpb24oKSB7XG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGVycm9yOiByKFwiZXJyb3JcIiwgb2UuRVJST1IpLFxuICAgIHdhcm46IHIoXCJ3YXJuXCIsIG9lLldBUk4pLFxuICAgIGluZm86IHIoXCJpbmZvXCIsIG9lLklORk8pLFxuICAgIGRlYnVnOiByKFwiZGVidWdcIiwgb2UuREVCVUcpLFxuICAgIHZlcmJvc2U6IHIoXCJ2ZXJib3NlXCIsIG9lLlZFUkJPU0UpXG4gIH07XG59XG52YXIgZHMgPSBmdW5jdGlvbihlLCB0KSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXIpIHJldHVybiBlO1xuICB2YXIgbiA9IHIuY2FsbChlKSwgYSwgaSA9IFtdLCBzO1xuICB0cnkge1xuICAgIGZvciAoOyAodCA9PT0gdm9pZCAwIHx8IHQtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAobCkge1xuICAgIHMgPSB7IGVycm9yOiBsIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAociA9IG4ucmV0dXJuKSAmJiByLmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChzKSB0aHJvdyBzLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIHBzID0gZnVuY3Rpb24oZSwgdCwgcikge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSB0Lmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gdCkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwgMCwgbikpLCBpW25dID0gdFtuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKTtcbn0sIG1zID0gXCJkaWFnXCIsIGt0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgICAgZnVuY3Rpb24gdChhKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gW10sIHMgPSAwOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKVxuICAgICAgICAgICAgaVtzXSA9IGFyZ3VtZW50c1tzXTtcbiAgICAgICAgICB2YXIgbCA9IG90KFwiZGlhZ1wiKTtcbiAgICAgICAgICBpZiAobClcbiAgICAgICAgICAgIHJldHVybiBsW2FdLmFwcGx5KGwsIHBzKFtdLCBkcyhpKSwgZmFsc2UpKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHZhciByID0gdGhpcywgbiA9IGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgICAgdmFyIHMsIGwsIGM7XG4gICAgICAgIGlmIChpID09PSB2b2lkIDAgJiYgKGkgPSB7IGxvZ0xldmVsOiBvZS5JTkZPIH0pLCBhID09PSByKSB7XG4gICAgICAgICAgdmFyIHUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIGRpYWcgYXMgdGhlIGxvZ2dlciBmb3IgaXRzZWxmLiBQbGVhc2UgdXNlIGEgRGlhZ0xvZ2dlciBpbXBsZW1lbnRhdGlvbiBsaWtlIENvbnNvbGVEaWFnTG9nZ2VyIG9yIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uXCIpO1xuICAgICAgICAgIHJldHVybiByLmVycm9yKChzID0gdS5zdGFjaykgIT09IG51bGwgJiYgcyAhPT0gdm9pZCAwID8gcyA6IHUubWVzc2FnZSksIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHR5cGVvZiBpID09IFwibnVtYmVyXCIgJiYgKGkgPSB7XG4gICAgICAgICAgbG9nTGV2ZWw6IGlcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkID0gb3QoXCJkaWFnXCIpLCBtID0gdXMoKGwgPSBpLmxvZ0xldmVsKSAhPT0gbnVsbCAmJiBsICE9PSB2b2lkIDAgPyBsIDogb2UuSU5GTywgYSk7XG4gICAgICAgIGlmIChkICYmICFpLnN1cHByZXNzT3ZlcnJpZGVNZXNzYWdlKSB7XG4gICAgICAgICAgdmFyIGYgPSAoYyA9IG5ldyBFcnJvcigpLnN0YWNrKSAhPT0gbnVsbCAmJiBjICE9PSB2b2lkIDAgPyBjIDogXCI8ZmFpbGVkIHRvIGdlbmVyYXRlIHN0YWNrdHJhY2U+XCI7XG4gICAgICAgICAgZC53YXJuKFwiQ3VycmVudCBsb2dnZXIgd2lsbCBiZSBvdmVyd3JpdHRlbiBmcm9tIFwiICsgZiksIG0ud2FybihcIkN1cnJlbnQgbG9nZ2VyIHdpbGwgb3ZlcndyaXRlIG9uZSBhbHJlYWR5IHJlZ2lzdGVyZWQgZnJvbSBcIiArIGYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBscihcImRpYWdcIiwgbSwgciwgdHJ1ZSk7XG4gICAgICB9O1xuICAgICAgci5zZXRMb2dnZXIgPSBuLCByLmRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdXIobXMsIHIpO1xuICAgICAgfSwgci5jcmVhdGVDb21wb25lbnRMb2dnZXIgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIHJldHVybiBuZXcgbHMoYSk7XG4gICAgICB9LCByLnZlcmJvc2UgPSB0KFwidmVyYm9zZVwiKSwgci5kZWJ1ZyA9IHQoXCJkZWJ1Z1wiKSwgci5pbmZvID0gdChcImluZm9cIiksIHIud2FybiA9IHQoXCJ3YXJuXCIpLCByLmVycm9yID0gdChcImVycm9yXCIpO1xuICAgIH1cbiAgICByZXR1cm4gZS5pbnN0YW5jZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlIHx8ICh0aGlzLl9pbnN0YW5jZSA9IG5ldyBlKCkpLCB0aGlzLl9pbnN0YW5jZTtcbiAgICB9LCBlO1xuICB9KSgpXG4pO1xuZnVuY3Rpb24gZnMoZSkge1xuICByZXR1cm4gU3ltYm9sLmZvcihlKTtcbn1cbnZhciBfcyA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAvKiBAX19QVVJFX18gKi8gKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUodCkge1xuICAgICAgdmFyIHIgPSB0aGlzO1xuICAgICAgci5fY3VycmVudENvbnRleHQgPSB0ID8gbmV3IE1hcCh0KSA6IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCksIHIuZ2V0VmFsdWUgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiByLl9jdXJyZW50Q29udGV4dC5nZXQobik7XG4gICAgICB9LCByLnNldFZhbHVlID0gZnVuY3Rpb24obiwgYSkge1xuICAgICAgICB2YXIgaSA9IG5ldyBlKHIuX2N1cnJlbnRDb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGkuX2N1cnJlbnRDb250ZXh0LnNldChuLCBhKSwgaTtcbiAgICAgIH0sIHIuZGVsZXRlVmFsdWUgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHZhciBhID0gbmV3IGUoci5fY3VycmVudENvbnRleHQpO1xuICAgICAgICByZXR1cm4gYS5fY3VycmVudENvbnRleHQuZGVsZXRlKG4pLCBhO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGU7XG4gIH0pKClcbiksIHlzID0gbmV3IF9zKCksIGhzID0gZnVuY3Rpb24oZSwgdCkge1xuICB2YXIgciA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCFyKSByZXR1cm4gZTtcbiAgdmFyIG4gPSByLmNhbGwoZSksIGEsIGkgPSBbXSwgcztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHQgPT09IHZvaWQgMCB8fCB0LS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKGwpIHtcbiAgICBzID0geyBlcnJvcjogbCB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHIgPSBuLnJldHVybikgJiYgci5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAocykgdGhyb3cgcy5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBncyA9IGZ1bmN0aW9uKGUsIHQsIHIpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBhID0gdC5sZW5ndGgsIGk7IG4gPCBhOyBuKyspXG4gICAgKGkgfHwgIShuIGluIHQpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQsIDAsIG4pKSwgaVtuXSA9IHRbbl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSk7XG59LCB3cyA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmFjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHlzO1xuICAgIH0sIGUucHJvdG90eXBlLndpdGggPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgICBmb3IgKHZhciBhID0gW10sIGkgPSAzOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgICAgICBhW2kgLSAzXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIHJldHVybiByLmNhbGwuYXBwbHkociwgZ3MoW25dLCBocyhhKSwgZmFsc2UpKTtcbiAgICB9LCBlLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHI7XG4gICAgfSwgZS5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LCBlLnByb3RvdHlwZS5kaXNhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LCBlO1xuICB9KSgpXG4pLCB2cyA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghcikgcmV0dXJuIGU7XG4gIHZhciBuID0gci5jYWxsKGUpLCBhLCBpID0gW10sIHM7XG4gIHRyeSB7XG4gICAgZm9yICg7ICh0ID09PSB2b2lkIDAgfHwgdC0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoIChsKSB7XG4gICAgcyA9IHsgZXJyb3I6IGwgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmIChyID0gbi5yZXR1cm4pICYmIHIuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHMpIHRocm93IHMuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufSwgYnMgPSBmdW5jdGlvbihlLCB0LCByKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBuID0gMCwgYSA9IHQubGVuZ3RoLCBpOyBuIDwgYTsgbisrKVxuICAgIChpIHx8ICEobiBpbiB0KSkgJiYgKGkgfHwgKGkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LCAwLCBuKSksIGlbbl0gPSB0W25dKTtcbiAgcmV0dXJuIGUuY29uY2F0KGkgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpO1xufSwgSHQgPSBcImNvbnRleHRcIiwgUHMgPSBuZXcgd3MoKSwgZHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLmdldEluc3RhbmNlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UgfHwgKHRoaXMuX2luc3RhbmNlID0gbmV3IGUoKSksIHRoaXMuX2luc3RhbmNlO1xuICAgIH0sIGUucHJvdG90eXBlLnNldEdsb2JhbENvbnRleHRNYW5hZ2VyID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIGxyKEh0LCB0LCBrdC5pbnN0YW5jZSgpKTtcbiAgICB9LCBlLnByb3RvdHlwZS5hY3RpdmUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9nZXRDb250ZXh0TWFuYWdlcigpLmFjdGl2ZSgpO1xuICAgIH0sIGUucHJvdG90eXBlLndpdGggPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgICBmb3IgKHZhciBhLCBpID0gW10sIHMgPSAzOyBzIDwgYXJndW1lbnRzLmxlbmd0aDsgcysrKVxuICAgICAgICBpW3MgLSAzXSA9IGFyZ3VtZW50c1tzXTtcbiAgICAgIHJldHVybiAoYSA9IHRoaXMuX2dldENvbnRleHRNYW5hZ2VyKCkpLndpdGguYXBwbHkoYSwgYnMoW3QsIHIsIG5dLCB2cyhpKSwgZmFsc2UpKTtcbiAgICB9LCBlLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHRoaXMuX2dldENvbnRleHRNYW5hZ2VyKCkuYmluZCh0LCByKTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZ2V0Q29udGV4dE1hbmFnZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBvdChIdCkgfHwgUHM7XG4gICAgfSwgZS5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5fZ2V0Q29udGV4dE1hbmFnZXIoKS5kaXNhYmxlKCksIHVyKEh0LCBrdC5pbnN0YW5jZSgpKTtcbiAgICB9LCBlO1xuICB9KSgpXG4pLCB0cjtcbihmdW5jdGlvbihlKSB7XG4gIGVbZS5OT05FID0gMF0gPSBcIk5PTkVcIiwgZVtlLlNBTVBMRUQgPSAxXSA9IFwiU0FNUExFRFwiO1xufSkodHIgfHwgKHRyID0ge30pKTtcbnZhciBGbiA9IFwiMDAwMDAwMDAwMDAwMDAwMFwiLCBUbiA9IFwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIiwgRXMgPSB7XG4gIHRyYWNlSWQ6IFRuLFxuICBzcGFuSWQ6IEZuLFxuICB0cmFjZUZsYWdzOiB0ci5OT05FXG59LCBldCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0KSB7XG4gICAgICB0ID09PSB2b2lkIDAgJiYgKHQgPSBFcyksIHRoaXMuX3NwYW5Db250ZXh0ID0gdDtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNwYW5Db250ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3BhbkNvbnRleHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlcyA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLmFkZEV2ZW50ID0gZnVuY3Rpb24odCwgcikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgZS5wcm90b3R5cGUuYWRkTGluayA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLmFkZExpbmtzID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0U3RhdHVzID0gZnVuY3Rpb24odCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgZS5wcm90b3R5cGUudXBkYXRlTmFtZSA9IGZ1bmN0aW9uKHQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKHQpIHtcbiAgICB9LCBlLnByb3RvdHlwZS5pc1JlY29yZGluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sIGUucHJvdG90eXBlLnJlY29yZEV4Y2VwdGlvbiA9IGZ1bmN0aW9uKHQsIHIpIHtcbiAgICB9LCBlO1xuICB9KSgpXG4pLCBwciA9IGZzKFwiT3BlblRlbGVtZXRyeSBDb250ZXh0IEtleSBTUEFOXCIpO1xuZnVuY3Rpb24gbXIoZSkge1xuICByZXR1cm4gZS5nZXRWYWx1ZShwcikgfHwgdm9pZCAwO1xufVxuZnVuY3Rpb24gQ3MoKSB7XG4gIHJldHVybiBtcihkci5nZXRJbnN0YW5jZSgpLmFjdGl2ZSgpKTtcbn1cbmZ1bmN0aW9uIGZyKGUsIHQpIHtcbiAgcmV0dXJuIGUuc2V0VmFsdWUocHIsIHQpO1xufVxuZnVuY3Rpb24gQXMoZSkge1xuICByZXR1cm4gZS5kZWxldGVWYWx1ZShwcik7XG59XG5mdW5jdGlvbiBTcyhlLCB0KSB7XG4gIHJldHVybiBmcihlLCBuZXcgZXQodCkpO1xufVxuZnVuY3Rpb24gTm4oZSkge1xuICB2YXIgdDtcbiAgcmV0dXJuICh0ID0gbXIoZSkpID09PSBudWxsIHx8IHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHQuc3BhbkNvbnRleHQoKTtcbn1cbnZhciBrcyA9IC9eKFswLTlhLWZdezMyfSkkL2ksIElzID0gL15bMC05YS1mXXsxNn0kL2k7XG5mdW5jdGlvbiBScyhlKSB7XG4gIHJldHVybiBrcy50ZXN0KGUpICYmIGUgIT09IFRuO1xufVxuZnVuY3Rpb24gRnMoZSkge1xuICByZXR1cm4gSXMudGVzdChlKSAmJiBlICE9PSBGbjtcbn1cbmZ1bmN0aW9uIExuKGUpIHtcbiAgcmV0dXJuIFJzKGUudHJhY2VJZCkgJiYgRnMoZS5zcGFuSWQpO1xufVxuZnVuY3Rpb24gVHMoZSkge1xuICByZXR1cm4gbmV3IGV0KGUpO1xufVxudmFyIEt0ID0gZHIuZ2V0SW5zdGFuY2UoKSwgTW4gPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zdGFydFNwYW4gPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgICBuID09PSB2b2lkIDAgJiYgKG4gPSBLdC5hY3RpdmUoKSk7XG4gICAgICB2YXIgYSA9ICEhcj8ucm9vdDtcbiAgICAgIGlmIChhKVxuICAgICAgICByZXR1cm4gbmV3IGV0KCk7XG4gICAgICB2YXIgaSA9IG4gJiYgTm4obik7XG4gICAgICByZXR1cm4gTnMoaSkgJiYgTG4oaSkgPyBuZXcgZXQoaSkgOiBuZXcgZXQoKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zdGFydEFjdGl2ZVNwYW4gPSBmdW5jdGlvbih0LCByLCBuLCBhKSB7XG4gICAgICB2YXIgaSwgcywgbDtcbiAgICAgIGlmICghKGFyZ3VtZW50cy5sZW5ndGggPCAyKSkge1xuICAgICAgICBhcmd1bWVudHMubGVuZ3RoID09PSAyID8gbCA9IHIgOiBhcmd1bWVudHMubGVuZ3RoID09PSAzID8gKGkgPSByLCBsID0gbikgOiAoaSA9IHIsIHMgPSBuLCBsID0gYSk7XG4gICAgICAgIHZhciBjID0gcyA/PyBLdC5hY3RpdmUoKSwgdSA9IHRoaXMuc3RhcnRTcGFuKHQsIGksIGMpLCBkID0gZnIoYywgdSk7XG4gICAgICAgIHJldHVybiBLdC53aXRoKGQsIGwsIHZvaWQgMCwgdSk7XG4gICAgICB9XG4gICAgfSwgZTtcbiAgfSkoKVxuKTtcbmZ1bmN0aW9uIE5zKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwib2JqZWN0XCIgJiYgdHlwZW9mIGUuc3BhbklkID09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGUudHJhY2VJZCA9PSBcInN0cmluZ1wiICYmIHR5cGVvZiBlLnRyYWNlRmxhZ3MgPT0gXCJudW1iZXJcIjtcbn1cbnZhciBMcyA9IG5ldyBNbigpLCBNcyA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSh0LCByLCBuLCBhKSB7XG4gICAgICB0aGlzLl9wcm92aWRlciA9IHQsIHRoaXMubmFtZSA9IHIsIHRoaXMudmVyc2lvbiA9IG4sIHRoaXMub3B0aW9ucyA9IGE7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zdGFydFNwYW4gPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0VHJhY2VyKCkuc3RhcnRTcGFuKHQsIHIsIG4pO1xuICAgIH0sIGUucHJvdG90eXBlLnN0YXJ0QWN0aXZlU3BhbiA9IGZ1bmN0aW9uKHQsIHIsIG4sIGEpIHtcbiAgICAgIHZhciBpID0gdGhpcy5fZ2V0VHJhY2VyKCk7XG4gICAgICByZXR1cm4gUmVmbGVjdC5hcHBseShpLnN0YXJ0QWN0aXZlU3BhbiwgaSwgYXJndW1lbnRzKTtcbiAgICB9LCBlLnByb3RvdHlwZS5fZ2V0VHJhY2VyID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5fZGVsZWdhdGUpXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZTtcbiAgICAgIHZhciB0ID0gdGhpcy5fcHJvdmlkZXIuZ2V0RGVsZWdhdGVUcmFjZXIodGhpcy5uYW1lLCB0aGlzLnZlcnNpb24sIHRoaXMub3B0aW9ucyk7XG4gICAgICByZXR1cm4gdCA/ICh0aGlzLl9kZWxlZ2F0ZSA9IHQsIHRoaXMuX2RlbGVnYXRlKSA6IExzO1xuICAgIH0sIGU7XG4gIH0pKClcbiksIHhzID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZ2V0VHJhY2VyID0gZnVuY3Rpb24odCwgciwgbikge1xuICAgICAgcmV0dXJuIG5ldyBNbigpO1xuICAgIH0sIGU7XG4gIH0pKClcbiksIERzID0gbmV3IHhzKCksIFVyID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuZ2V0VHJhY2VyID0gZnVuY3Rpb24odCwgciwgbikge1xuICAgICAgdmFyIGE7XG4gICAgICByZXR1cm4gKGEgPSB0aGlzLmdldERlbGVnYXRlVHJhY2VyKHQsIHIsIG4pKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogbmV3IE1zKHRoaXMsIHQsIHIsIG4pO1xuICAgIH0sIGUucHJvdG90eXBlLmdldERlbGVnYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdDtcbiAgICAgIHJldHVybiAodCA9IHRoaXMuX2RlbGVnYXRlKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogRHM7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0RGVsZWdhdGUgPSBmdW5jdGlvbih0KSB7XG4gICAgICB0aGlzLl9kZWxlZ2F0ZSA9IHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0RGVsZWdhdGVUcmFjZXIgPSBmdW5jdGlvbih0LCByLCBuKSB7XG4gICAgICB2YXIgYTtcbiAgICAgIHJldHVybiAoYSA9IHRoaXMuX2RlbGVnYXRlKSA9PT0gbnVsbCB8fCBhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhLmdldFRyYWNlcih0LCByLCBuKTtcbiAgICB9LCBlO1xuICB9KSgpXG4pLCBhdDtcbihmdW5jdGlvbihlKSB7XG4gIGVbZS5JTlRFUk5BTCA9IDBdID0gXCJJTlRFUk5BTFwiLCBlW2UuU0VSVkVSID0gMV0gPSBcIlNFUlZFUlwiLCBlW2UuQ0xJRU5UID0gMl0gPSBcIkNMSUVOVFwiLCBlW2UuUFJPRFVDRVIgPSAzXSA9IFwiUFJPRFVDRVJcIiwgZVtlLkNPTlNVTUVSID0gNF0gPSBcIkNPTlNVTUVSXCI7XG59KShhdCB8fCAoYXQgPSB7fSkpO1xudmFyIFBlO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLlVOU0VUID0gMF0gPSBcIlVOU0VUXCIsIGVbZS5PSyA9IDFdID0gXCJPS1wiLCBlW2UuRVJST1IgPSAyXSA9IFwiRVJST1JcIjtcbn0pKFBlIHx8IChQZSA9IHt9KSk7XG52YXIgeGUgPSBkci5nZXRJbnN0YW5jZSgpLCBZdCA9IFwidHJhY2VcIiwgVXMgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgICB0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyID0gbmV3IFVyKCksIHRoaXMud3JhcFNwYW5Db250ZXh0ID0gVHMsIHRoaXMuaXNTcGFuQ29udGV4dFZhbGlkID0gTG4sIHRoaXMuZGVsZXRlU3BhbiA9IEFzLCB0aGlzLmdldFNwYW4gPSBtciwgdGhpcy5nZXRBY3RpdmVTcGFuID0gQ3MsIHRoaXMuZ2V0U3BhbkNvbnRleHQgPSBObiwgdGhpcy5zZXRTcGFuID0gZnIsIHRoaXMuc2V0U3BhbkNvbnRleHQgPSBTcztcbiAgICB9XG4gICAgcmV0dXJuIGUuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSB8fCAodGhpcy5faW5zdGFuY2UgPSBuZXcgZSgpKSwgdGhpcy5faW5zdGFuY2U7XG4gICAgfSwgZS5wcm90b3R5cGUuc2V0R2xvYmFsVHJhY2VyUHJvdmlkZXIgPSBmdW5jdGlvbih0KSB7XG4gICAgICB2YXIgciA9IGxyKFl0LCB0aGlzLl9wcm94eVRyYWNlclByb3ZpZGVyLCBrdC5pbnN0YW5jZSgpKTtcbiAgICAgIHJldHVybiByICYmIHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXIuc2V0RGVsZWdhdGUodCksIHI7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0VHJhY2VyUHJvdmlkZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBvdChZdCkgfHwgdGhpcy5fcHJveHlUcmFjZXJQcm92aWRlcjtcbiAgICB9LCBlLnByb3RvdHlwZS5nZXRUcmFjZXIgPSBmdW5jdGlvbih0LCByKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRUcmFjZXJQcm92aWRlcigpLmdldFRyYWNlcih0LCByKTtcbiAgICB9LCBlLnByb3RvdHlwZS5kaXNhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICB1cihZdCwga3QuaW5zdGFuY2UoKSksIHRoaXMuX3Byb3h5VHJhY2VyUHJvdmlkZXIgPSBuZXcgVXIoKTtcbiAgICB9LCBlO1xuICB9KSgpXG4pLCBqZSA9IFVzLmdldEluc3RhbmNlKCk7XG5jb25zdCBPcyA9IGFzeW5jIChlLCB0LCByKSA9PiB7XG4gIGNvbnN0IG4gPSBqZS5nZXRUcmFjZXIoXCJvcGVucGF5LWpzXCIpLCBhID0geGUuYWN0aXZlKCksIGkgPSBuLnN0YXJ0U3BhbihcbiAgICBgY2RlLiR7dC50eXBlfWAsXG4gICAge1xuICAgICAga2luZDogYXQuQ0xJRU5ULFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBcIm1lc3NhZ2UudHlwZVwiOiB0LnR5cGUsXG4gICAgICAgIC4uLmUudHJhY2luZ0NvbnRleHQgJiYge1xuICAgICAgICAgIFwib2pzLmNoZWNrb3V0U2VjdXJlVG9rZW5cIjogZS50cmFjaW5nQ29udGV4dC5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgIFwib2pzLmRldmljZVRva2VuXCI6IGUudHJhY2luZ0NvbnRleHQuZGV2aWNlVG9rZW4sXG4gICAgICAgICAgXCJvanMuZm9ybUlkXCI6IGUudHJhY2luZ0NvbnRleHQuZm9ybUlkLFxuICAgICAgICAgIFwib2pzLnZlcnNpb25cIjogZS50cmFjaW5nQ29udGV4dC52ZXJzaW9uLFxuICAgICAgICAgIFwib2pzLnJlbGVhc2VfdmVyc2lvblwiOiBlLnRyYWNpbmdDb250ZXh0LnJlbGVhc2VWZXJzaW9uLFxuICAgICAgICAgIFwib2pzLmJhc2VfdXJsXCI6IGUudHJhY2luZ0NvbnRleHQuYmFzZVVybCxcbiAgICAgICAgICBcIm9qcy5yZWZlcnJlclwiOiBlLnRyYWNpbmdDb250ZXh0LnJlZmVycmVyXG4gICAgICAgIH0sXG4gICAgICAgIFwiY2RlLm1lc3NhZ2UudHlwZVwiOiB0LnR5cGUsXG4gICAgICAgIFwiY2RlLm1lc3NhZ2UucGF5bG9hZFwiOiBKU09OLnN0cmluZ2lmeSh0LnBheWxvYWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBhXG4gICk7XG4gIHJldHVybiB4ZS53aXRoKGplLnNldFNwYW4oYSwgaSksIGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcyA9IGF3YWl0IHIoKTtcbiAgICAgIHJldHVybiBpLnNldFN0YXR1cyh7IGNvZGU6IFBlLk9LIH0pLCBzO1xuICAgIH0gY2F0Y2ggKHMpIHtcbiAgICAgIHRocm93IGkuc2V0U3RhdHVzKHtcbiAgICAgICAgY29kZTogUGUuRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6IHMgaW5zdGFuY2VvZiBFcnJvciA/IHMubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwiXG4gICAgICB9KSwgcztcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaS5lbmQoKTtcbiAgICB9XG4gIH0pO1xufSwgZnQgPSBhc3luYyAoZSwgdCkgPT4ge1xuICBjb25zdCByID0gamUuZ2V0VHJhY2VyKFwib3BlbnBheS1qc1wiKSwgbiA9IHhlLmFjdGl2ZSgpLCBhID0gci5zdGFydFNwYW4oXG4gICAgYGZvcm0uJHtlLnNwYW5OYW1lfWAsXG4gICAge1xuICAgICAga2luZDogYXQuQ0xJRU5ULFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBcIm9qcy5jaGVja291dFNlY3VyZVRva2VuXCI6IGUuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgXCJvanMuZGV2aWNlVG9rZW5cIjogZS5kZXZpY2VUb2tlbixcbiAgICAgICAgXCJvanMuZm9ybUlkXCI6IGUuZm9ybUlkLFxuICAgICAgICBcIm9qcy52ZXJzaW9uXCI6IGUudmVyc2lvbixcbiAgICAgICAgXCJvanMucmVsZWFzZV92ZXJzaW9uXCI6IGUucmVsZWFzZVZlcnNpb24sXG4gICAgICAgIFwib2pzLmJhc2VfdXJsXCI6IGUuYmFzZVVybCxcbiAgICAgICAgXCJvanMucmVmZXJyZXJcIjogZS5yZWZlcnJlcixcbiAgICAgICAgLi4uZS5wYXltZW50Um91dGVJZCAmJiB7IFwicGF5bWVudC5yb3V0ZV9pZFwiOiBlLnBheW1lbnRSb3V0ZUlkIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG5cbiAgKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBpID0gYXdhaXQgdCgpO1xuICAgIHJldHVybiBhLnNldFN0YXR1cyh7IGNvZGU6IFBlLk9LIH0pLCBpO1xuICB9IGNhdGNoIChpKSB7XG4gICAgY29uc3QgcyA9IGkgaW5zdGFuY2VvZiBFcnJvciA/IGkubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwiO1xuICAgIHRocm93IGEuc2V0U3RhdHVzKHtcbiAgICAgIGNvZGU6IFBlLkVSUk9SLFxuICAgICAgbWVzc2FnZTogc1xuICAgIH0pLCBpO1xuICB9IGZpbmFsbHkge1xuICAgIGEuZW5kKCk7XG4gIH1cbn07XG5jbGFzcyB4biBleHRlbmRzIExvIHtcbiAgY29uc3RydWN0b3IodCkge1xuICAgIGNvbnN0IHIgPSBgJHt0Lm1lc3NhZ2V9YDtcbiAgICBzdXBlcihyKSwgdGhpcy5yZXNwb25zZSA9IHQ7XG4gIH1cbiAgZ2V0IG9yaWdpbmFsRXJyb3JNZXNzYWdlKCkge1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlLm1lc3NhZ2U7XG4gIH1cbn1cbmNvbnN0IEogPSBhc3luYyAoZSwgdCwgciwgbikgPT4gT3MoZSwgdCwgYXN5bmMgKCkgPT4ge1xuICBuICYmIHYobiwge1xuICAgIC4uLnRcbiAgfSk7XG4gIGNvbnN0IGEgPSBhd2FpdCBlLnNlbmQodCk7XG4gIGlmICgkcyhhKSkge1xuICAgIGNvbnN0IGkgPSBuYXZpZ2F0b3IuY29ubmVjdGlvbjtcbiAgICB0aHJvdyB2KFwiY2RlX3Jlc3BvbnNlX2Vycm9yXCIsIHtcbiAgICAgIGVycm9yX21lc3NhZ2U6IGEubWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VfdHlwZTogdC50eXBlLFxuICAgICAgdXNlcl9hZ2VudDogbmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgIG9ubGluZTogbmF2aWdhdG9yLm9uTGluZSxcbiAgICAgIGhhc19mb2N1czogZG9jdW1lbnQuaGFzRm9jdXMoKSxcbiAgICAgIGhyZWY6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgICAgZG9jdW1lbnRfdmlzaWJpbGl0eV9zdGF0ZTogZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlLFxuICAgICAgY29ubmVjdGlvbl9kb3dubGluazogaT8uZG93bmxpbmssXG4gICAgICBjb25uZWN0aW9uX2VmZmVjdGl2ZV90eXBlOiBpPy5lZmZlY3RpdmVUeXBlLFxuICAgICAgY29ubmVjdGlvbl9ydHQ6IGk/LnJ0dCxcbiAgICAgIGNvbm5lY3Rpb25fc2F2ZV9kYXRhOiBpPy5zYXZlRGF0YVxuICAgIH0pLCBuZXcgeG4oYSk7XG4gIH1cbiAgaWYgKCFqcyhhLCByKSkge1xuICAgIGNvbnN0IGkgPSByLnNhZmVQYXJzZShhKTtcbiAgICB0aHJvdyBpLnN1Y2Nlc3MgPyBuZXcgRXJyb3IoXCJJbnZhbGlkIHN0YXRlXCIpIDogKGNvbnNvbGUuZXJyb3IoXCJPSlMgcXVlcnlBcGkgZ290IGEgc2NoZW1hIGVycm9yLiBFeHBlY3RlZCBzY2hlbWE6XCIsIHIsIFwiQWN0dWFsOlwiLCBhKSwgaS5lcnJvcik7XG4gIH1cbiAgcmV0dXJuIG4gJiYgdihuLCB7XG4gICAgLi4uYVxuICB9KSwgYTtcbn0pLCBqcyA9IChlLCB0KSA9PiB0LnNhZmVQYXJzZShlKS5zdWNjZXNzLCAkcyA9IChlKSA9PiB5YS5zYWZlUGFyc2UoZSkuc3VjY2VzcywgR3MgPSBhc3luYyAoZSwgdCkgPT4gYXdhaXQgSihlLCB7IHR5cGU6IFwiZ2V0X2NoZWNrb3V0X3ByZXZpZXdcIiwgcGF5bG9hZDogdCB9LCBmbiksIE4gPSBhc3luYyAoZSkgPT4gYXdhaXQgSihlLCB7IHR5cGU6IFwiZ2V0X3ByZWZpbGxcIiwgcGF5bG9hZDoge30gfSwgX24pLCBaID0gYXN5bmMgKGUsIHQpID0+IGF3YWl0IEooXG4gIGUsXG4gIHsgdHlwZTogXCJ2Ml9zdGFydF9wYXltZW50X2Zsb3dcIiwgcGF5bG9hZDogdCB9LFxuICBnbixcbiAgXCJzdGFydF9wYXltZW50X2Zsb3dcIlxuKSwgRG4gPSBhc3luYyAoZSwgdCkgPT4gYXdhaXQgSihcbiAgZSxcbiAgeyB0eXBlOiBcInN0YXJ0X3BheW1lbnRfZmxvd19mb3JfY2NcIiwgcGF5bG9hZDogdCB9LFxuICBGYSxcbiAgXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX2NjXCJcbiksIHFzID0gYXN5bmMgKGUsIHQpID0+IHtcbiAgdihcInN0YXJ0X3BheW1lbnRfZmxvd19mb3JfcHJcIiwge1xuICAgIC4uLnRcbiAgfSk7XG4gIGNvbnN0IHIgPSBhd2FpdCBKKGUsIHsgdHlwZTogXCJzdGFydF9wYXltZW50X2Zsb3dfZm9yX3ByXCIsIHBheWxvYWQ6IHQgfSwgZ24pO1xuICByZXR1cm4gdihcInN0YXJ0X3BheW1lbnRfZmxvd19mb3JfcHJfcmVzdWx0XCIsIHtcbiAgICAuLi5yXG4gIH0pLCByO1xufSwgeCA9IGFzeW5jIChlLCB0KSA9PiBhd2FpdCBKKFxuICBlLFxuICB7IHR5cGU6IFwiY29uZmlybV9wYXltZW50X2Zsb3dcIiwgcGF5bG9hZDogdCB9LFxuICBzYSxcbiAgXCJjb25maXJtX3BheW1lbnRfZmxvd1wiXG4pLCBWcyA9IGFzeW5jIChlLCB0KSA9PiBhd2FpdCBKKFxuICBlLFxuICB7IHR5cGU6IFwiZmluYWxpemVfc2V0dXBfcGF5bWVudF9tZXRob2RcIiwgcGF5bG9hZDogdCB9LFxuICB5bixcbiAgXCJmaW5hbGl6ZV9zZXR1cF9wYXltZW50X21ldGhvZFwiXG4pLCB6cyA9IGFzeW5jIChlLCB0KSA9PiBhd2FpdCBKKFxuICBlLFxuICB7IHR5cGU6IFwiY2hlY2tfaWZfcG9wdXBfd2luZG93X3ZlcmlmaWVkXCIsIHBheWxvYWQ6IHQgfSxcbiAgaWEsXG4gIFwiY2hlY2tfaWZfcG9wdXBfd2luZG93X3ZlcmlmaWVkXCJcbiksIEJzID0gYXN5bmMgKGUsIHQsIHIpID0+IHtcbiAgY29uc3QgbiA9IGF3YWl0IEdzKGUsIHtcbiAgICBzZWN1cmVfdG9rZW46IHQsXG4gICAgcHJvbW90aW9uX2NvZGU6IHJcbiAgfSksIGEgPSBuZXcgU2V0KG4ucHJldmlldy5pbnZvaWNlcy5tYXAoKGwpID0+IGwuY3VycmVuY3kpKTtcbiAgaWYgKGEuc2l6ZSAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGV4YWN0bHkgb25lIGN1cnJlbmN5LCBnb3QgJHthLnNpemV9YCk7XG4gIGNvbnN0IGkgPSBhLnZhbHVlcygpLm5leHQoKS52YWx1ZSA/PyBcInVzZFwiLCBzID0gemEobi5wcmV2aWV3Lmludm9pY2VzLm1hcCgobCkgPT4gbC5yZW1haW5pbmdfYW1vdW50X2F0b20pKTtcbiAgcmV0dXJuIHtcbiAgICBjdXJyZW5jeTogaSxcbiAgICBhbW91bnRBdG9tOiBzXG4gIH07XG59LCBRID0gYXN5bmMgKGUsIHQsIHIsIG4pID0+IHtcbiAgaWYgKHIpXG4gICAgcmV0dXJuIHsgYW1vdW50QXRvbTogMCwgY3VycmVuY3k6IFwidXNkXCIgfTtcbiAge1xuICAgIG4gPSBuIHx8IHZvaWQgMCwgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInByb21vQ29kZVwiKSAmJiAhbiAmJiAobiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJwcm9tb0NvZGVcIikpO1xuICAgIGNvbnN0IGEgPSBhd2FpdCBCcyhlLCB0LCBuKTtcbiAgICByZXR1cm4geyBhbW91bnRBdG9tOiBhLmFtb3VudEF0b20sIGN1cnJlbmN5OiBhLmN1cnJlbmN5IH07XG4gIH1cbn0sIFVuID0gYXN5bmMgKGUsIHQpID0+IHtcbiAgaWYgKGUuc2l6ZSA9PT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBDREUgY29ubmVjdGlvbnMgZm91bmRcIik7XG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBBcnJheS5mcm9tKGUudmFsdWVzKCkpLm1hcChcbiAgICAgIChuKSA9PiBKKG4sIHsgdHlwZTogXCJ0b2tlbml6ZV9jYXJkXCIsIHBheWxvYWQ6IHQgfSwgbmEpXG4gICAgKVxuICApO1xufSwgT3IgPSBhc3luYyAoZSwgdCkgPT4gYXdhaXQgSihcbiAgZSxcbiAgeyB0eXBlOiBcImNoZWNrb3V0X2NhcmRfZWxlbWVudHNcIiwgcGF5bG9hZDogdCB9LFxuICB0dCxcbiAgXCJjaGVja291dF9jYXJkX2VsZW1lbnRzXCJcbiksIEhzID0gYXN5bmMgKGUsIHQpID0+IGF3YWl0IEooZSwgeyB0eXBlOiBcInNldHVwX3BheW1lbnRfbWV0aG9kXCIsIHBheWxvYWQ6IHQgfSwgeW4sIFwic2V0dXBfY2hlY2tvdXRcIiksIF9yID0gYXN5bmMgKGUsIHQpID0+IGF3YWl0IEooZSwgeyB0eXBlOiBcImNoZWNrb3V0XCIsIHBheWxvYWQ6IHQgfSwgdHQsIFwicGVyZm9ybV9jaGVja291dFwiKSwgT24gPSAxZTMsIEtzID0gYXN5bmMgKGUsIHQsIHIsIG4pID0+IHtcbiAgY29uc29sZS5sb2codCk7XG4gIGNvbnN0IGkgPSBhd2FpdCBjb25uZWN0VG9DaGlsZCh7XG4gICAgaWZyYW1lOiBlLFxuICAgIGRlYnVnOiB0cnVlLFxuICAgIHRpbWVvdXQ6IE9uLFxuICAgIGNoaWxkT3JpZ2luOiBcIipcIlxuICAgIC8vIFRPRE86IHVzZSB3aXRoIHByb3BlciBjaGlsZE9yaWdpblxuICB9KS5wcm9taXNlLCBzID0gYXdhaXQgSihpLCB7IHR5cGU6IHIgfSwgbik7XG4gIHJldHVybiBjb25zb2xlLmxvZyhcIvCfn6IgQ0RFIGNvbm5lY3Rpb24gc3VjY2Vzc2Z1bCEgU3RvcHBpbmcgcG9sbGluZy4uLiBSZXN1bHQ6XCIsIHMpLCBzO1xufSwgVXQgPSBhc3luYyAoZSwgdCkgPT4gYXdhaXQgSihcbiAgZSxcbiAgeyB0eXBlOiBcInByZXBhcmVfcGF5bWVudF9mbG93XCIsIHBheWxvYWQ6IHQgfSxcbiAgTmEsXG4gIFwicHJlcGFyZV9wYXltZW50X2Zsb3dcIlxuKSwgam4gPSBhc3luYyAoZSwgdCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgSihcbiAgICAgIGUsXG4gICAgICB7IHR5cGU6IFwiZ2V0X3N0YW5kYXJkaXplZF9lcnJvcl9jb2RlXCIsIHBheWxvYWQ6IHsgbWVzc2FnZTogdCB9IH0sXG4gICAgICBUYVxuICAgICkpLmVycm9yX2NvZGU7XG4gIH0gY2F0Y2ggKHIpIHtcbiAgICByZXR1cm4gY29uc29sZS5lcnJvcihcIltjZGUtY2xpZW50XSBFcnJvciBkdXJpbmcgZ2V0U3RhbmRhcmRpemVkRXJyb3JDb2RlOlwiLCBhZShyKSksIFwiUEFZTUVOVF9GQUlMRURfR0VORVJJQ1wiO1xuICB9XG59LCBZcyA9IGFzeW5jIChlLCB0KSA9PiBhd2FpdCBKKFxuICBlLFxuICB7IHR5cGU6IFwic2V0X3VzZXJfZGV2aWNlX3Rva2VuXCIsIHBheWxvYWQ6IHsgZGV2aWNlX3Rva2VuOiB0IH0gfSxcbiAgTGFcbiksIFdzID0gYXN5bmMgKGUpID0+IHtcbiAgaWYgKHR5cGVvZiBlICE9IFwib2JqZWN0XCIgfHwgIWUpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdCB0ID0geyB0eXBlOiBcInBpbmdcIiB9LCByID0gYXdhaXQgZS5zZW5kKHQpO1xuICAgIGlmIChyICE9PSAhMClcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJ3RydWUnIGFmdGVyIHBpbmcsIGdvdCAke0pTT04uc3RyaW5naWZ5KHIpfWApO1xuICAgIHJldHVybiAhMDtcbiAgfSBjYXRjaCAodCkge1xuICAgIHJldHVybiBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBDREUgY29ubmVjdGlvbiBjaGVjazpcIiwgdCksIGZhbHNlO1xuICB9XG59LCBKcyA9IChlLCB0KSA9PiAhIWUgJiYgdCwgJG4gPSBcImh0dHBzOi8vY2RlLmdldG9wZW5wYXkuY29tXCIsIEduID0gXCIwMTIzNDU2Nzg5QUJDREVGR0hKS01OUFFSU1RWV1hZWlwiLCBJdCA9IDMyLCBacyA9IDE2LCBxbiA9IDEwLCBqciA9IDI4MTQ3NDk3NjcxMDY1NTtcbnZhciBGZTtcbihmdW5jdGlvbihlKSB7XG4gIGUuQmFzZTMySW5jb3JyZWN0RW5jb2RpbmcgPSBcIkIzMl9FTkNfSU5WQUxJRFwiLCBlLkRlY29kZVRpbWVJbnZhbGlkQ2hhcmFjdGVyID0gXCJERUNfVElNRV9DSEFSXCIsIGUuRGVjb2RlVGltZVZhbHVlTWFsZm9ybWVkID0gXCJERUNfVElNRV9NQUxGT1JNRURcIiwgZS5FbmNvZGVUaW1lTmVnYXRpdmUgPSBcIkVOQ19USU1FX05FR1wiLCBlLkVuY29kZVRpbWVTaXplRXhjZWVkZWQgPSBcIkVOQ19USU1FX1NJWkVfRVhDRUVEXCIsIGUuRW5jb2RlVGltZVZhbHVlTWFsZm9ybWVkID0gXCJFTkNfVElNRV9NQUxGT1JNRURcIiwgZS5QUk5HRGV0ZWN0RmFpbHVyZSA9IFwiUFJOR19ERVRFQ1RcIiwgZS5VTElESW52YWxpZCA9IFwiVUxJRF9JTlZBTElEXCIsIGUuVW5leHBlY3RlZCA9IFwiVU5FWFBFQ1RFRFwiLCBlLlVVSURJbnZhbGlkID0gXCJVVUlEX0lOVkFMSURcIjtcbn0pKEZlIHx8IChGZSA9IHt9KSk7XG5jbGFzcyBXZSBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IodCwgcikge1xuICAgIHN1cGVyKGAke3J9ICgke3R9KWApLCB0aGlzLm5hbWUgPSBcIlVMSURFcnJvclwiLCB0aGlzLmNvZGUgPSB0O1xuICB9XG59XG5mdW5jdGlvbiBRcyhlKSB7XG4gIGNvbnN0IHQgPSBNYXRoLmZsb29yKGUoKSAqIEl0KSAlIEl0O1xuICByZXR1cm4gR24uY2hhckF0KHQpO1xufVxuZnVuY3Rpb24gWHMoZSkge1xuICBjb25zdCB0ID0gZWMoKSwgciA9IHQgJiYgKHQuY3J5cHRvIHx8IHQubXNDcnlwdG8pIHx8IG51bGw7XG4gIGlmICh0eXBlb2Ygcj8uZ2V0UmFuZG9tVmFsdWVzID09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3QgbiA9IG5ldyBVaW50OEFycmF5KDEpO1xuICAgICAgcmV0dXJuIHIuZ2V0UmFuZG9tVmFsdWVzKG4pLCBuWzBdIC8gMjU1O1xuICAgIH07XG4gIGlmICh0eXBlb2Ygcj8ucmFuZG9tQnl0ZXMgPT0gXCJmdW5jdGlvblwiKVxuICAgIHJldHVybiAoKSA9PiByLnJhbmRvbUJ5dGVzKDEpLnJlYWRVSW50OCgpIC8gMjU1O1xuICB0aHJvdyBuZXcgV2UoRmUuUFJOR0RldGVjdEZhaWx1cmUsIFwiRmFpbGVkIHRvIGZpbmQgYSByZWxpYWJsZSBQUk5HXCIpO1xufVxuZnVuY3Rpb24gZWMoKSB7XG4gIHJldHVybiBuYygpID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgPCBcInVcIiA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgPCBcInVcIiA/IGdsb2JhbCA6IHR5cGVvZiBnbG9iYWxUaGlzIDwgXCJ1XCIgPyBnbG9iYWxUaGlzIDogbnVsbDtcbn1cbmZ1bmN0aW9uIHRjKGUsIHQpIHtcbiAgbGV0IHIgPSBcIlwiO1xuICBmb3IgKDsgZSA+IDA7IGUtLSlcbiAgICByID0gUXModCkgKyByO1xuICByZXR1cm4gcjtcbn1cbmZ1bmN0aW9uIHJjKGUsIHQgPSBxbikge1xuICBpZiAoaXNOYU4oZSkpXG4gICAgdGhyb3cgbmV3IFdlKEZlLkVuY29kZVRpbWVWYWx1ZU1hbGZvcm1lZCwgYFRpbWUgbXVzdCBiZSBhIG51bWJlcjogJHtlfWApO1xuICBpZiAoZSA+IGpyKVxuICAgIHRocm93IG5ldyBXZShGZS5FbmNvZGVUaW1lU2l6ZUV4Y2VlZGVkLCBgQ2Fubm90IGVuY29kZSBhIHRpbWUgbGFyZ2VyIHRoYW4gJHtqcn06ICR7ZX1gKTtcbiAgaWYgKGUgPCAwKVxuICAgIHRocm93IG5ldyBXZShGZS5FbmNvZGVUaW1lTmVnYXRpdmUsIGBUaW1lIG11c3QgYmUgcG9zaXRpdmU6ICR7ZX1gKTtcbiAgaWYgKE51bWJlci5pc0ludGVnZXIoZSkgPT09IGZhbHNlKVxuICAgIHRocm93IG5ldyBXZShGZS5FbmNvZGVUaW1lVmFsdWVNYWxmb3JtZWQsIGBUaW1lIG11c3QgYmUgYW4gaW50ZWdlcjogJHtlfWApO1xuICBsZXQgciwgbiA9IFwiXCI7XG4gIGZvciAobGV0IGEgPSB0OyBhID4gMDsgYS0tKVxuICAgIHIgPSBlICUgSXQsIG4gPSBHbi5jaGFyQXQocikgKyBuLCBlID0gKGUgLSByKSAvIEl0O1xuICByZXR1cm4gbjtcbn1cbmZ1bmN0aW9uIG5jKCkge1xuICByZXR1cm4gdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlIDwgXCJ1XCIgJiYgc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlO1xufVxuZnVuY3Rpb24gb2MoZSwgdCkge1xuICBjb25zdCByID0gWHMoKSwgbiA9IERhdGUubm93KCk7XG4gIHJldHVybiByYyhuLCBxbikgKyB0Yyhacywgcik7XG59XG5jb25zdCBWbiA9IFwib3BfYW5hbHl0aWNzX2RldmljZV90b2tlblwiLCB6biA9ICgpID0+IHtcbiAgY29uc3QgZSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIikuZmluZCgocikgPT4gci5pbmNsdWRlcyhWbikpO1xuICBpZiAoZSlcbiAgICByZXR1cm4gZS5zcGxpdChcIj1cIilbMV07XG4gIGNvbnN0IHQgPSBvYygpO1xuICByZXR1cm4gYWModCksIHQ7XG59LCBhYyA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSAvKiBAX19QVVJFX18gKi8gbmV3IERhdGUoKTtcbiAgdC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkgKyAxKSwgZG9jdW1lbnQuY29va2llID0gYCR7Vm59PSR7ZX07IHBhdGg9LzsgZXhwaXJlcz0ke3QudG9VVENTdHJpbmcoKX1gO1xufSwgaWMgPSAoZSkgPT4ge1xuICBjb25zdCB0ID0ge307XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChbciwgbl0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYSA9IG9uLnBhcnNlKHIpO1xuICAgICAgQXJyYXkuaXNBcnJheShuKSA/IHRbYV0gPSBuIDogQXJyYXkuaXNBcnJheShuLl9lcnJvcnMpICYmICh0W2FdID0gbi5fZXJyb3JzKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0pLCB0O1xufSwgaiA9IChlLCB0KSA9PiBBcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLW9waWRdXCIpID8/IFtdKS5yZWR1Y2UoKGEsIGkpID0+IHtcbiAgY29uc3QgcyA9IGkuZ2V0QXR0cmlidXRlKFwiZGF0YS1vcGlkXCIpO1xuICBpZiAoIXMpIHJldHVybiBhO1xuICBjb25zdCBsID0gaS50eXBlID09PSBcImNoZWNrYm94XCIgPyBpLmNoZWNrZWQgOiBpLnZhbHVlO1xuICByZXR1cm4geyAuLi5hLCBbc106IGwgfTtcbn0sIHt9KSwgc2MgPSAoZSkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBlYS5wYXJzZShlKTtcbiAgfSBjYXRjaCAodCkge1xuICAgIHRocm93IGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwYXJzaW5nIGV2ZW50IHBheWxvYWQ6XCIsIGUsIHQpLCB0O1xuICB9XG59LCBCbiA9ICgpID0+IHtcbiAgY29uc3QgZSA9IHY0KCkuc3BsaXQoXCItXCIpWzBdO1xuICByZXR1cm4ge1xuICAgIGZpcnN0TmFtZTogYHh4XyR7ZX1gLFxuICAgIGxhc3ROYW1lOiBgeHhfJHtlfWAsXG4gICAgZW1haWw6IGB4eF8ke2V9QGVtYWlsLmNvbWAsXG4gICAgemlwQ29kZTogYHh4XyR7ZX1gLFxuICAgIGNvdW50cnk6IFwiVVNcIlxuICB9O1xufSwgQ2UgPSAoZSkgPT4gKHtcbiAgbGluZTE6IGVbcC5MSU5FMV0sXG4gIGxpbmUyOiBlW3AuTElORTJdLFxuICBsaW5lMzogZVtwLkxJTkUzXSxcbiAgY2l0eTogZVtwLkNJVFldLFxuICBzdGF0ZTogZVtwLlNUQVRFXSxcbiAgY291bnRyeTogZVtwLkNPVU5UUlldLFxuICB6aXBfY29kZTogZVtwLlpJUF9DT0RFXVxufSksIE90ID0gKGUsIHQpID0+IHtcbiAgaWYgKHQucmVxdWlyZV9mdWxsX3NoaXBwaW5nX2FkZHJlc3MpXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmUxOiBlW3AuU0hJUFBJTkdfTElORTFdLFxuICAgICAgbGluZTI6IGVbcC5TSElQUElOR19MSU5FMl0sXG4gICAgICBsaW5lMzogZVtwLlNISVBQSU5HX0xJTkUzXSxcbiAgICAgIGNpdHk6IGVbcC5TSElQUElOR19DSVRZXSxcbiAgICAgIHN0YXRlOiBlW3AuU0hJUFBJTkdfU1RBVEVdLFxuICAgICAgY291bnRyeTogZVtwLlNISVBQSU5HX0NPVU5UUlldLFxuICAgICAgemlwX2NvZGU6IGVbcC5TSElQUElOR19aSVBfQ09ERV1cbiAgICB9O1xufSwganQgPSAoZSwgdCkgPT4gW2UsIHRdLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKSwgY2MgPSAoeyB3aWR0aDogZSwgaGVpZ2h0OiB0IH0pID0+IGBcbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxufVxuXG4ub3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiAyMTQ3NDgzNjQ4ICFpbXBvcnRhbnQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG4uY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiAke2UgPz8gXCI1MDBweFwifTtcbiAgbWF4LWhlaWdodDogJHt0ID8/IFwiNjAwcHhcIn07XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFuaW1hdGlvbjogZmFkZUluIDAuM3MgZWFzZS1vdXQ7XG59XG4uZnJhbWUsICNhZHllbi1jb250YWluZXIsICNhZHllbi1jb250YWluZXIgPiAqIHtcbiAgbWF4LXdpZHRoOiAke2UgPz8gXCI1MDBweFwifTtcbiAgbWF4LWhlaWdodDogJHt0ID8/IFwiNjAwcHhcIn07XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlcjogbm9uZTtcbn1cbi5jYW5jZWwtYnV0dG9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBmb250LXNpemU6IDFyZW07XG4gIGNvbG9yOiAjZmZmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRvcDogLTEuNXJlbTtcbiAgcGFkZGluZzogMDtcbiAgcmlnaHQ6IDA7XG59XG5gLCBsYyA9ICh7IHdpZHRoOiBlLCBoZWlnaHQ6IHQgfSkgPT4gYFxuQGtleWZyYW1lcyBmYWRlSW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG5cbi5vdmVybGF5IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IDIxNDc0ODM2NDggIWltcG9ydGFudDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cbi5jb250YWluZXIge1xuICBtYXgtd2lkdGg6ICR7ZSA/PyBcIjUwMHB4XCJ9O1xuICBtYXgtaGVpZ2h0OiAke3QgPz8gXCI2MDBweFwifTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFuaW1hdGlvbjogZmFkZUluIDAuM3MgZWFzZS1vdXQ7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuLmJhbmstc2VsZWN0b3ItY29udGVudCB7XG4gIHBhZGRpbmc6IDI0cHg7XG4gIG1heC1oZWlnaHQ6IGNhbGMoJHt0ID8/IFwiNjAwcHhcIn0gLSA0OHB4KTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5iYW5rLXNlbGVjdG9yLWhlYWRlciB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgY29sb3I6ICMxYTFhMWE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5iYW5rLWxpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDEycHg7XG59XG4uYmFuay1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTZweDtcbiAgYm9yZGVyOiAycHggc29saWQgI2U1ZTVlNTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG59XG4uYmFuay1pdGVtOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiAjM2I4MmY2O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmYWZjO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuLmJhbmstaXRlbTphY3RpdmUge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG4uYmFuay1sb2dvIHtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBvYmplY3QtZml0OiBjb250YWluO1xuICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlOWVjZWY7XG59XG4uYmFuay1sb2dvLXBsYWNlaG9sZGVyIHtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICBjb2xvcjogIzZjNzU3ZDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cbi5iYW5rLWluZm8ge1xuICBmbGV4OiAxO1xufVxuLmJhbmstZGlzcGxheS1uYW1lIHtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogIzFhMWExYTtcbiAgbWFyZ2luLWJvdHRvbTogMnB4O1xufVxuLmJhbmstbmFtZSB7XG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gIGNvbG9yOiAjNmM3NTdkO1xufVxuLmNhbmNlbC1idXR0b24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgY29sb3I6ICNmZmY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdG9wOiAtMS41cmVtO1xuICBwYWRkaW5nOiAwO1xuICByaWdodDogMDtcbn1cbmAsICR0ID0gKGUsIHQpID0+IHtcbiAgY29uc3QgeyBpZDogciwgdGl0bGU6IG4sIHdpZHRoOiBhLCBoZWlnaHQ6IGksIG5hbWU6IHMgfSA9IHQgPz8ge30sIGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGVtcGxhdGVcIik7XG4gIGwuaW5uZXJIVE1MID0gYFxuICAgIDxzdHlsZT5cbiAgICAgICR7Y2MoeyB3aWR0aDogYSwgaGVpZ2h0OiBpIH0pfVxuICAgIDwvc3R5bGU+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idXR0b25cIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgPGlmcmFtZSBzcmM9XCIke2V9XCIgY2xhc3M9XCJmcmFtZVwiIGlkPVwiJHtyID8/IFwidGhyZWUtZHMtaWZyYW1lXCJ9XCIgdGl0bGU9XCIke24gPz8gXCIzRCBTZWN1cmUgdmVyaWZpY2F0aW9uXCJ9XCIgYWxsb3c9XCJwYXltZW50XCIgbmFtZT1cIiR7cyA/PyBcInRocmVlLWRzLWlmcmFtZVwifVwiPjwvaWZyYW1lPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGA7XG4gIGNvbnN0IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLCB1ID0gYy5hdHRhY2hTaGFkb3coeyBtb2RlOiBcIm9wZW5cIiB9KTtcbiAgdS5hcHBlbmRDaGlsZChsLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTtcbiAgY29uc3QgZCA9IHUucXVlcnlTZWxlY3RvcihcIiN0aHJlZS1kcy1pZnJhbWVcIiksIG0gPSB1LnF1ZXJ5U2VsZWN0b3IoXCIuY2FuY2VsLWJ1dHRvblwiKTtcbiAgcmV0dXJuIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYyksIHsgaG9zdDogYywgaWZyYW1lOiBkLCBjYW5jZWxCdXR0b246IG0gfTtcbn0sIEhuID0gKGUsIHQpID0+IHtcbiAgY29uc3QgeyB3aWR0aDogciwgaGVpZ2h0OiBuLCB0aXRsZTogYSB9ID0gdCA/PyB7fTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChpLCBzKSA9PiB7XG4gICAgY29uc3QgbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZW1wbGF0ZVwiKSwgYyA9IGUubWFwKChfLCBnKSA9PiB7XG4gICAgICBjb25zdCB3ID0gXy5yZXNvdXJjZXMubG9nb191cmwgPyBgPGltZyBzcmM9XCIke18ucmVzb3VyY2VzLmxvZ29fdXJsfVwiIGFsdD1cIiR7Xy5kaXNwbGF5X25hbWV9XCIgY2xhc3M9XCJiYW5rLWxvZ29cIiAvPmAgOiBgPGRpdiBjbGFzcz1cImJhbmstbG9nby1wbGFjZWhvbGRlclwiPiR7Xy5kaXNwbGF5X25hbWUuc3Vic3RyaW5nKDAsIDIpLnRvVXBwZXJDYXNlKCl9PC9kaXY+YDtcbiAgICAgIHJldHVybiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLWl0ZW1cIiBkYXRhLWJhbmstaW5kZXg9XCIke2d9XCI+XG4gICAgICAgICAgJHt3fVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLWluZm9cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLWRpc3BsYXktbmFtZVwiPiR7Xy5kaXNwbGF5X25hbWV9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFuay1uYW1lXCI+JHtfLmJhbmtfbmFtZX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICBgO1xuICAgIH0pLmpvaW4oXCJcIik7XG4gICAgbC5pbm5lckhUTUwgPSBgXG4gICAgICA8c3R5bGU+XG4gICAgICAgICR7bGMoeyB3aWR0aDogciwgaGVpZ2h0OiBuIH0pfVxuICAgICAgPC9zdHlsZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLXNlbGVjdG9yLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLXNlbGVjdG9yLWhlYWRlclwiPiR7YSA/PyBcIlNlbGVjdCB5b3VyIGJhbmtcIn08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5rLWxpc3RcIj5cbiAgICAgICAgICAgICAgJHtjfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgICBjb25zdCB1ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSwgZCA9IHUuYXR0YWNoU2hhZG93KHsgbW9kZTogXCJvcGVuXCIgfSk7XG4gICAgZC5hcHBlbmRDaGlsZChsLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTtcbiAgICBjb25zdCBtID0gZC5xdWVyeVNlbGVjdG9yKFwiLmNhbmNlbC1idXR0b25cIiksIGYgPSBkLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYmFuay1pdGVtXCIpLCB5ID0gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh1KTtcbiAgICB9O1xuICAgIG0uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgIHkoKSwgcyhuZXcgRXJyb3IoXCJCYW5rIHNlbGVjdGlvbiBjYW5jZWxsZWRcIikpO1xuICAgIH0pLCBmLmZvckVhY2goKF8sIGcpID0+IHtcbiAgICAgIF8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgeSgpLCBpKGVbZ10pO1xuICAgICAgfSk7XG4gICAgfSksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodSk7XG4gIH0pO1xufSwgR3QgPSAoZSwgdCkgPT4ge1xuICBjb25zdCB7IHdpZHRoOiByLCBoZWlnaHQ6IG4sIGJhc2VVcmw6IGEgfSA9IHQgPz8ge30sIGkgPSBuZXcgVVJMKGBhcHAvZGlyZWN0X2RlYml0L21pY3JvX2RlcG9zaXQvP3R5cGU9JHtlfWAsIGEpLnRvU3RyaW5nKCk7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocywgbCkgPT4ge1xuICAgIGNvbnN0IGMgPSAkdChpLCB7IHdpZHRoOiByLCBoZWlnaHQ6IG4sIHRpdGxlOiBcIk1pY3JvIERlcG9zaXQgRm9ybVwiIH0pLCB1ID0gKCkgPT4ge1xuICAgICAgYy5ob3N0LnJlbW92ZSgpO1xuICAgIH0sIGQgPSAoKSA9PiB7XG4gICAgICB1KCksIGwobmV3IEVycm9yKFwiTWljcm8gZGVwb3NpdCBmb3JtIGNhbmNlbGxlZFwiKSk7XG4gICAgfSwgbSA9ICh3KSA9PiB7XG4gICAgICB1KCksIHcuc3RhdHVzID09PSBcInN1Y2Nlc3NcIiAmJiB3LnBheWxvYWQgPyBcImVycm9yXCIgaW4gdy5wYXlsb2FkID8gbChuZXcgRXJyb3Iody5wYXlsb2FkLmVycm9yKSkgOiBzKHcucGF5bG9hZCkgOiBsKG5ldyBFcnJvcihcIk1pY3JvIGRlcG9zaXQgZm9ybSBmYWlsZWRcIikpO1xuICAgIH07XG4gICAgYy5jYW5jZWxCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGQpO1xuICAgIGNvbnN0IGYgPSB5cihcbiAgICAgIGMuaWZyYW1lLFxuICAgICAgbSxcbiAgICAgIG5ldyBVUkwoYSkub3JpZ2luLFxuICAgICAgXCJtaWNyby1kZXBvc2l0LXN0YXR1c1wiLFxuICAgICAgX2FcbiAgICApLCB5ID0gKCkgPT4ge1xuICAgICAgYy5jYW5jZWxCdXR0b24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGQpLCBjbGVhckludGVydmFsKGYpO1xuICAgIH0sIF8gPSBkLCBnID0gKCkgPT4ge1xuICAgICAgeSgpLCBfKCk7XG4gICAgfTtcbiAgICBjLmNhbmNlbEJ1dHRvbi5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZCksIGMuY2FuY2VsQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBnKTtcbiAgfSk7XG59O1xuZnVuY3Rpb24geXIoZSwgdCwgciwgbiwgYSkge1xuICBjb25zdCBpID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBsID0gYXdhaXQgS3MoZSwgciwgbiwgYSk7XG4gICAgICBsICYmIChjbGVhckludGVydmFsKHMpLCB0KGwpKTtcbiAgICB9IGNhdGNoIHtcbiAgICB9XG4gIH07XG4gIGkoKTtcbiAgY29uc3QgcyA9IHNldEludGVydmFsKGksIE9uKTtcbiAgcmV0dXJuIHM7XG59XG5mdW5jdGlvbiBLbih7XG4gIGVsZW1lbnRzOiBlLFxuICBwb2xsaW5nSW50ZXJ2YWw6IHQsXG4gIHJlc29sdmU6IHJcbn0pIHtcbiAgY29uc3QgbiA9ICgpID0+IHtcbiAgICBjbGVhckludGVydmFsKHQpLCBlLmhvc3QucmVtb3ZlKCksIHIoeyBzdGF0dXM6IEYuQ0FOQ0VMTEVEIH0pO1xuICB9O1xuICByZXR1cm4gZS5jYW5jZWxCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG4pLCAoKSA9PiB7XG4gICAgZS5jYW5jZWxCdXR0b24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG4pO1xuICB9O1xufVxuYXN5bmMgZnVuY3Rpb24gbGUoZSkge1xuICBjb25zdCB7IHVybDogdCwgYmFzZVVybDogciwgZnJhbWVXaWR0aDogbiwgZnJhbWVIZWlnaHQ6IGEsIGZyYW1lVGl0bGU6IGkgfSA9IGUsIHMgPSAkdCh0LCB7IHdpZHRoOiBuLCBoZWlnaHQ6IGEsIHRpdGxlOiBpIH0pO1xuICByZXR1cm4gbmV3IFByb21pc2UoKGwpID0+IHtcbiAgICBjb25zdCBjID0gKG0pID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzLmhvc3QucmVtb3ZlKCk7XG4gICAgICB9LCAxZTMpLCBsKG0pLCBkPy4oKTtcbiAgICB9LCB1ID0geXIoXG4gICAgICBzLmlmcmFtZSxcbiAgICAgIGMsXG4gICAgICBuZXcgVVJMKHIpLm9yaWdpbixcbiAgICAgIFwicGluZy0zZHMtc3RhdHVzXCIsXG4gICAgICBsblxuICAgICksIGQgPSBLbih7XG4gICAgICBlbGVtZW50czogcyxcbiAgICAgIHBvbGxpbmdJbnRlcnZhbDogdSxcbiAgICAgIHJlc29sdmU6IGxcbiAgICB9KTtcbiAgfSk7XG59XG5jb25zdCBZbiA9IGFzeW5jIChlKSA9PiB7XG4gIGNvbnN0IHQgPSBhd2FpdCBsZShlKTtcbiAgaWYgKHQuc3RhdHVzID09PSBGLkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKHQuc3RhdHVzID09PSBGLkZBSUxVUkUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gIHJldHVybiB0LnN0YXR1cyAhPT0gRi5TVUNDRVNTICYmIGN0KHQuc3RhdHVzKSwge1xuICAgIGhyZWY6IHQuaHJlZlxuICB9O1xufSwgdWMgPSAoZSwgdCkgPT4ge1xuICBjb25zdCByID0gd2luZG93Lm9wZW4odCwgXCJfYmxhbmtcIik7XG4gIGlmICghcilcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZX0gcG9wdXAgd2luZG93IGJsb2NrZWQuIFBsZWFzZSBhbGxvdyBwb3B1cHMgZm9yIHRoaXMgc2l0ZS5gKTtcbiAgcmV0dXJuIHI7XG59LCBXbiA9IGFzeW5jIChlLCB0LCByLCBuKSA9PiB7XG4gIGNvbnN0IHsgZXJyX186IGEgfSA9IGsoXCJwb3B1cC12ZXJpZnlcIik7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoaSwgcykgPT4ge1xuICAgIGNvbnN0IGwgPSB1YyhlLCBuKSwgYyA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHUgPSBhd2FpdCB6cyh0LCByKTtcbiAgICAgICAgaWYgKHUucHJlc2VudClcbiAgICAgICAgICBjbGVhckludGVydmFsKGMpLCBsLmNsb3NlKCksIGkoeyBocmVmOiB1LmhyZWYgfSk7XG4gICAgICAgIGVsc2UgaWYgKGwuY2xvc2VkKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlfSBwYXltZW50IGNhbmNlbGxlZGApO1xuICAgICAgfSBjYXRjaCAodSkge1xuICAgICAgICBhKGFlKHUpKSwgY2xlYXJJbnRlcnZhbChjKSwgcyhhZSh1KSk7XG4gICAgICB9XG4gICAgfSwgMWUzKTtcbiAgfSk7XG59LCBpZSA9ICgpID0+IHtcbiAgbGV0IHQgPSAobmF2aWdhdG9yLmxhbmd1YWdlcyAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aCA/IG5hdmlnYXRvci5sYW5ndWFnZXMgOiBbbmF2aWdhdG9yLmxhbmd1YWdlXSk/LlswXTtcbiAgcmV0dXJuIHQgJiYgKHQgPSB0LnNwbGl0KFwiLVwiKVswXSksIHQ7XG59LCB7IGxvZ19fOiBkYywgZXJyX186IHBjIH0gPSBrKFwiY29tbW9uLWNjXCIpLCBtYyA9ICh7XG4gIHJlcXVpcmVfemlwX2NvZGU6IGUsXG4gIHJlcXVpcmVfZnVsbF9iaWxsaW5nX2FkZHJlc3M6IHQsXG4gIHJlcXVpcmVfZnVsbF9zaGlwcGluZ19hZGRyZXNzOiByLFxuICBwYXltZW50X21ldGhvZDogbixcbiAgaXNCdXNpbmVzc1B1cmNoYXNlOiBhXG59LCBpKSA9PiB7XG4gIGNvbnN0IHMgPSB7fTtcbiAgcmV0dXJuIG4gPT09IFwiYWNoXCIgJiYgKHNbcC5GSVJTVF9OQU1FXSA9IHokMS5zdHJpbmcoKS5taW4oMiwgeyBtZXNzYWdlOiBcIk1pbmltdW0gbGVuZ3RoIGlzIDJcIiB9KSwgc1twLkxBU1RfTkFNRV0gPSB6JDEuc3RyaW5nKCkubWluKDIsIHsgbWVzc2FnZTogXCJNaW5pbXVtIGxlbmd0aCBpcyAyXCIgfSkpLCBlICYmIChzW3AuWklQX0NPREVdID0gVCksIHQgJiYgKHNbcC5MSU5FMV0gPSBULCBzW3AuQ0lUWV0gPSBULCBzW3AuU1RBVEVdID0gVCwgc1twLkNPVU5UUlldID0gVCwgc1twLlpJUF9DT0RFXSA9IFQpLCByICYmIChzW3AuU0hJUFBJTkdfTElORTFdID0gVCwgc1twLlNISVBQSU5HX0NJVFldID0gVCwgc1twLlNISVBQSU5HX1NUQVRFXSA9IFQsIHNbcC5TSElQUElOR19DT1VOVFJZXSA9IFQsIHNbcC5TSElQUElOR19aSVBfQ09ERV0gPSBUKSwgKGlbcC5JU19CVVNJTkVTU19QVVJDSEFTRV0gPz8gYSkgJiYgKHNbcC5CVVNJTkVTU19OQU1FXSA9IFQpLCBPYmplY3Qua2V5cyhzKS5sZW5ndGggPT09IDAgPyBVZSA6IFVlLmV4dGVuZChzKTtcbn0sIGZjID0gKGUsIHQsIHIgPSB7fSkgPT4ge1xuICBpZiAocikge1xuICAgIGRjKGBSZWNlaXZlZCBkZWZhdWx0IGZpZWxkIHZhbHVlczogJHtKU09OLnN0cmluZ2lmeShyKX1gKTtcbiAgICBjb25zdCBpID0gT2JqZWN0LmtleXMocik7XG4gICAgZm9yIChsZXQgcyA9IDA7IHMgPCBpLmxlbmd0aDsgcysrKSB7XG4gICAgICBjb25zdCBsID0gaVtzXSwgYyA9IHJbbF07XG4gICAgICBlW2xdIHx8IChlW2xdID0gYyk7XG4gICAgfVxuICB9XG4gIGVbcC5JU19TSElQUElOR19TQU1FX0FTX0JJTExJTkddID0gISFlW3AuSVNfU0hJUFBJTkdfU0FNRV9BU19CSUxMSU5HXSwgZVtwLklTX1NISVBQSU5HX1NBTUVfQVNfQklMTElOR10gJiYgKGVbcC5TSElQUElOR19MSU5FMV0gPSBlW3AuTElORTFdLCBlW3AuU0hJUFBJTkdfTElORTJdID0gZVtwLkxJTkUyXSwgZVtwLlNISVBQSU5HX0xJTkUzXSA9IGVbcC5MSU5FM10sIGVbcC5TSElQUElOR19DSVRZXSA9IGVbcC5DSVRZXSwgZVtwLlNISVBQSU5HX1NUQVRFXSA9IGVbcC5TVEFURV0sIGVbcC5TSElQUElOR19DT1VOVFJZXSA9IGVbcC5DT1VOVFJZXSwgZVtwLlNISVBQSU5HX1pJUF9DT0RFXSA9IGVbcC5aSVBfQ09ERV0pO1xuICBjb25zdCBhID0gbWMociwgZSkuc2FmZVBhcnNlKGUpO1xuICBpZiAoIWEuc3VjY2Vzcykge1xuICAgIGNvbnN0IGkgPSBhLmVycm9yLmZvcm1hdCgpLCBzID0gaWMoaSksIGwgPSBPYmplY3Qua2V5cyhzKTtcbiAgICBmb3IgKGxldCBjID0gMDsgYyA8IGwubGVuZ3RoOyBjKyspIHtcbiAgICAgIGNvbnN0IHUgPSBsW2NdLCBkID0gc1t1XTtcbiAgICAgIHQodSwgZCwgdSk7XG4gICAgfVxuICAgIHRocm93IHBjKFwiR290IHZhbGlkYXRpb24gZXJyb3JzIGluIG5vbi1DREUgZm9ybSBmaWVsZHNcIiwgcyksIG5ldyBFcnJvcihcIkFsbW9zdCB0aGVyZSEgSnVzdCBhIGZldyB0aGluZ3MgaGlnaGxpZ2h0ZWQgYWJvdmUgdG8gZml4IGJlZm9yZSB5b3UgY2FuIHN1Ym1pdC5cIik7XG4gIH1cbiAgcmV0dXJuIGEuZGF0YTtcbn0sIHsgbG9nX186IF9jLCBlcnJfXzogeWMgfSA9IGsoXCJjb21tb24tY2NcIiksIEcgPSBmYywgSm4gPSAoZSwgdCkgPT4ge1xuICBmb3IgKGNvbnN0IHIgb2YgZSlcbiAgICBpZiAoci5zdWNjZXNzID09PSBmYWxzZSlcbiAgICAgIHRocm93IHIuZXJyb3JzLmZvckVhY2goKG4pID0+IHtcbiAgICAgICAgY29uc3QgYSA9IGNuLnNhZmVQYXJzZShuLmVsZW1lbnRUeXBlKTtcbiAgICAgICAgaWYgKCFhLnN1Y2Nlc3MpXG4gICAgICAgICAgeWMoYFVua25vd24gZmllbGQgbmFtZSBpbiBvblZhbGlkYXRpb25FcnJvcjogJHtuLmVsZW1lbnRUeXBlfS4gRXJyb3Igb2JqZWN0OmAsIG4pO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCBpID0gYS5kYXRhO1xuICAgICAgICAgIHQoaSwgbi5lcnJvcnMpO1xuICAgICAgICB9XG4gICAgICB9KSwgX2MoYEVycm9yIHRva2VuaXppbmcgY2FyZDogZ290IHZhbGlkYXRpb24gZXJyb3JzOiAke0pTT04uc3RyaW5naWZ5KHIuZXJyb3JzKX1gKSwgbmV3IEVycm9yKFwiR290IHZhbGlkYXRpb24gZXJyb3JzIHdoaWxlIHRva2VuaXppbmcgY2FyZFwiKTtcbn0sIHsgZXJyX186IFpuIH0gPSBrKFwiY29tbW9uXCIpLCBsdCA9IChlKSA9PiB7XG4gIGlmIChlLnBheW1lbnRfbWV0aG9kcy5sZW5ndGggIT09IDEpXG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBleGFjdGx5IG9uZSBwYXltZW50IG1ldGhvZCwgZ290ICR7ZS5wYXltZW50X21ldGhvZHMubGVuZ3RofWApO1xuICByZXR1cm4geyBwYXltZW50X21ldGhvZF9pZDogZS5wYXltZW50X21ldGhvZHNbMF0uaWQgfTtcbn0sIE8gPSAoZSwgdCkgPT4ge1xuICBjb25zdCByID0gZS5maW5kKChuKSA9PiB0LnNhZmVQYXJzZShuKS5zdWNjZXNzKTtcbiAgaWYgKCFyKVxuICAgIHRocm93IFpuKFwiTm8gQ1BNcyBmb3VuZCBmb3IgbW9kZWwuIEFsbCBtb2RlbHM6XCIsIGUpLCBuZXcgRXJyb3IoXCJObyBDUE1zIGZvdW5kIGZvciBtb2RlbFwiKTtcbiAgcmV0dXJuIHQucGFyc2Uocik7XG59LCBxID0gKGUsIHQpID0+ICh7XG4gIG5ld19jdXN0b21lcl9lbWFpbDogZS5lbWFpbCxcbiAgbmV3X2N1c3RvbWVyX2xhc3RfbmFtZTogZS5sYXN0TmFtZSxcbiAgbmV3X2N1c3RvbWVyX2ZpcnN0X25hbWU6IGUuZmlyc3ROYW1lLFxuICBjdXN0b21lcl9idXNpbmVzc19uYW1lOiBlLmJ1c2luZXNzTmFtZSxcbiAgY3VzdG9tZXJfdGF4X2lkOiBlLnRheElkLFxuICBjdXN0b21lcl90YXhfaWRfdHlwZTogZS50YXhJZFR5cGUsXG4gIG5ld19jdXN0b21lcl9hZGRyZXNzOiBDZShlKSxcbiAgbmV3X2N1c3RvbWVyX3NoaXBwaW5nX2FkZHJlc3M6IE90KGUsIHQpLFxuICBjdXN0b21lcl9sYW5ndWFnZTogaWUoKSxcbiAgbmV3X2N1c3RvbWVyX3Bob25lOiBlLnBob25lXG59KSwgcmUgPSBhc3luYyAoZSkgPT4ge1xuICBjb25zdCB7IGxvZ19fOiB0IH0gPSBrKGUubG9nUHJlZml4KSwgciA9IGF3YWl0IE4oZS5hbnlDZGVDb25uZWN0aW9uKSwgbiA9IGx0KGUuY29uZmlybVJlc3VsdCk7XG4gIGlmIChyLm1vZGUgPT09IFwic2V0dXBcIilcbiAgICByZXR1cm4gdChcIlNldHRpbmcgdXAgcGF5bWVudCBtZXRob2QuLi5cIiksIHsgbW9kZTogXCJzZXR1cFwiLCByZXN1bHQ6IGF3YWl0IFZzKGUuYW55Q2RlQ29ubmVjdGlvbiwge1xuICAgICAgc2VjdXJlX3Rva2VuOiByLnRva2VuLFxuICAgICAgcG1faWQ6IG4ucGF5bWVudF9tZXRob2RfaWRcbiAgICB9KSB9O1xuICB7XG4gICAgaWYgKGUudXNlUGF5Rmlyc3RGbG93KSB7XG4gICAgICBpZiAodChcIlVzaW5nIHBheS1maXJzdCBmbG93Li4uXCIpLCAhZS5jb25maXJtUmVzdWx0LnBheV9maXJzdF9zdWNjZXNzX3Jlc3BvbnNlKVxuICAgICAgICB0aHJvdyBabihcIkNoZWNrb3V0IGZhaWxlZCwgbm8gcGF5LWZpcnN0IHN1Y2Nlc3MgcmVzcG9uc2U6XCIsIGUuY29uZmlybVJlc3VsdCksIG5ldyBFcnJvcihcIkNoZWNrb3V0IGZhaWxlZCwgcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGFub3RoZXIgcGF5bWVudCBtZXRob2QuXCIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW9kZTogXCJjaGVja291dFwiLFxuICAgICAgICByZXN1bHQ6IGUuY29uZmlybVJlc3VsdC5wYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgYSA9IHtcbiAgICAgIHNlY3VyZV90b2tlbjogci50b2tlbixcbiAgICAgIHBheW1lbnRfaW5wdXQ6IHsgcHJvdmlkZXJfdHlwZTogZS5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIgfSxcbiAgICAgIGN1c3RvbWVyX2VtYWlsOiBlLnJlcXVpcmVkRm9ybUZpZWxkc1twLkVNQUlMXSxcbiAgICAgIGN1c3RvbWVyX2FkZHJlc3M6IENlKGUucmVxdWlyZWRGb3JtRmllbGRzKSxcbiAgICAgIGN1c3RvbWVyX3NoaXBwaW5nX2FkZHJlc3M6IE90KGUucmVxdWlyZWRGb3JtRmllbGRzLCByLmNoZWNrb3V0X3NldHRpbmdzKSxcbiAgICAgIHByb21vdGlvbl9jb2RlOiBlLnJlcXVpcmVkRm9ybUZpZWxkc1twLlBST01PVElPTl9DT0RFXSxcbiAgICAgIGxpbmVfaXRlbXM6IHIubGluZV9pdGVtcyxcbiAgICAgIHRvdGFsX2Ftb3VudF9hdG9tOiByLmFtb3VudF90b3RhbF9hdG9tLFxuICAgICAgY2FuY2VsX2F0X2VuZDogZmFsc2UsXG4gICAgICB1c2VfY29uZmlybWVkX3BtX2lkOiBuLnBheW1lbnRfbWV0aG9kX2lkLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IGUuY2hlY2tvdXRQYXltZW50TWV0aG9kXG4gICAgfTtcbiAgICByZXR1cm4gdChcIkRvaW5nIGNoZWNrb3V0Li4uXCIsIGEpLCB7IG1vZGU6IFwiY2hlY2tvdXRcIiwgcmVzdWx0OiBhd2FpdCBfcihlLmFueUNkZUNvbm5lY3Rpb24sIGEpIH07XG4gIH1cbn0sIFUgPSB6JDEuZW51bShbXCJzdHJpcGVcIiwgXCJhaXJ3YWxsZXhcIiwgXCJhdXRob3JpemVfbmV0XCIsIFwiYWR5ZW5cIiwgXCJwYXlwYWxcIiwgXCJwb2NreXRcIiwgXCJsb29wXCJdKTtcblUuRW51bS5zdHJpcGU7XG5jb25zdCBRbiA9ICh7XG4gIHNjcmlwdElkOiBlLFxuICBzcmM6IHQsXG4gIGNoZWNrTG9hZGVkRm46IHJcbn0pID0+IHtcbiAgY29uc3QgbiA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChhLCBpKSA9PiB7XG4gICAgbGV0IHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgIHMuc3JjID0gdCwgcy5pZCA9IGUsIHMuYXN5bmMgPSB0cnVlO1xuICAgIGNvbnN0IGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKTtcbiAgICByKCkgPyBhKCkgOiBsID8gcyA9IGwgOiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHMpLCBzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImxvYWRcIixcbiAgICAgICgpID0+IHtcbiAgICAgICAgbi5hYm9ydCgpLCBhKCk7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IG4uc2lnbmFsIH1cbiAgICApLCBzLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICBcImVycm9yXCIsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIG4uYWJvcnQoKSwgaShcIkZhaWxlZCB0byBsb2FkIHRoZSBzY3JpcHRcIik7XG4gICAgICB9LFxuICAgICAgeyBzaWduYWw6IG4uc2lnbmFsIH1cbiAgICApO1xuICB9KTtcbn0sIFZlID0gKHtcbiAgZ2F0ZXdheTogZSxcbiAgZ2F0ZXdheU1lcmNoYW50SWQ6IHQsXG4gIG1lcmNoYW50TmFtZTogcixcbiAgbWVyY2hhbnRJZDogbixcbiAgaW5pdGlhbFByZXZpZXc6IGEsXG4gIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGksXG4gIHByZWZpbGw6IHNcbn0pID0+IHtcbiAgY29uc3QgbCA9IGk/LmFtb3VudD8uYW1vdW50QXRvbSA/PyBhPy5hbW91bnRBdG9tID8/IDAsIGMgPSBNYXRoLm1heChsIC8gMTAwLCAwKSwgdSA9IChpPy5hbW91bnQ/LmN1cnJlbmN5ID8/IHM/LmN1cnJlbmN5ID8/IGEuY3VycmVuY3kpLnRvVXBwZXJDYXNlKCksIGQgPSB7XG4gICAgYXBpVmVyc2lvbjogMixcbiAgICBhcGlWZXJzaW9uTWlub3I6IDAsXG4gICAgYWxsb3dlZFBheW1lbnRNZXRob2RzOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFwiQ0FSRFwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgYWxsb3dlZEF1dGhNZXRob2RzOiBbXCJQQU5fT05MWVwiLCBcIkNSWVBUT0dSQU1fM0RTXCJdLFxuICAgICAgICAgIGFsbG93ZWRDYXJkTmV0d29ya3M6IFtcIkFNRVhcIiwgXCJESVNDT1ZFUlwiLCBcIklOVEVSQUNcIiwgXCJKQ0JcIiwgXCJNQVNURVJDQVJEXCIsIFwiVklTQVwiXSxcbiAgICAgICAgICBiaWxsaW5nQWRkcmVzc1JlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIGJpbGxpbmdBZGRyZXNzUGFyYW1ldGVyczoge1xuICAgICAgICAgICAgZm9ybWF0OiBcIkZVTExcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWxsb3dDcmVkaXRDYXJkczogdHJ1ZSxcbiAgICAgICAgICBhbGxvd1ByZXBhaWRDYXJkczogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB0b2tlbml6YXRpb25TcGVjaWZpY2F0aW9uOiB7XG4gICAgICAgICAgdHlwZTogXCJQQVlNRU5UX0dBVEVXQVlcIixcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBnYXRld2F5OiBlLFxuICAgICAgICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IHRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdLFxuICAgIGVtYWlsUmVxdWlyZWQ6IHRydWUsXG4gICAgc2hpcHBpbmdBZGRyZXNzUmVxdWlyZWQ6IHMuY2hlY2tvdXRfc2V0dGluZ3MucmVxdWlyZV9mdWxsX3NoaXBwaW5nX2FkZHJlc3MsXG4gICAgbWVyY2hhbnRJbmZvOiB7XG4gICAgICAvLyBQUk9EIGVudiB3aWxsIG5lZWQgdGhpc1xuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcGF5L2FwaS93ZWIvcmVmZXJlbmNlL3JlcXVlc3Qtb2JqZWN0cyNNZXJjaGFudEluZm9cbiAgICAgIG1lcmNoYW50SWQ6IG4gPz8gXCJcIixcbiAgICAgIG1lcmNoYW50TmFtZTogclxuICAgIH0sXG4gICAgdHJhbnNhY3Rpb25JbmZvOiB7XG4gICAgICBjb3VudHJ5Q29kZTogXCJVU1wiLFxuICAgICAgY3VycmVuY3lDb2RlOiB1LFxuICAgICAgdG90YWxQcmljZVN0YXR1czogaT8ucGVuZGluZyA/IFwiRVNUSU1BVEVEXCIgOiBcIkZJTkFMXCIsXG4gICAgICB0b3RhbFByaWNlOiBjLnRvRml4ZWQoMilcbiAgICB9XG4gIH07XG4gIHJldHVybiBpPy5nb29nbGVQYXlQYXltZW50UmVxdWVzdCA/IHR5cGVvZiBpLmdvb2dsZVBheVBheW1lbnRSZXF1ZXN0ID09IFwiZnVuY3Rpb25cIiA/IHsgLi4uZCwgLi4uaS5nb29nbGVQYXlQYXltZW50UmVxdWVzdChkKSB9IDogeyAuLi5kLCAuLi5pLmdvb2dsZVBheVBheW1lbnRSZXF1ZXN0IH0gOiBkO1xufSwgaHIgPSAoKSA9PiBRbih7XG4gIHNjcmlwdElkOiBcIl9fb3BfaW50ZXJuYWxfZ29vZ2xlX3BheV9zZGtcIixcbiAgc3JjOiBcImh0dHBzOi8vcGF5Lmdvb2dsZS5jb20vZ3AvcC9qcy9wYXkuanNcIixcbiAgY2hlY2tMb2FkZWRGbjogKCkgPT4gISF3aW5kb3cuZ29vZ2xlPy5wYXltZW50cz8uYXBpXG59KTtcbmxldCBXdCA9IG51bGw7XG5jb25zdCBnciA9IGFzeW5jIChlKSA9PiBhd2FpdCBTbihlKSA9PT0gXCJwcm9kXCIgPyBcIlBST0RVQ1RJT05cIiA6IFwiVEVTVFwiLCB6ZSA9IGFzeW5jIChlLCB0KSA9PiB7XG4gIGNvbnN0IHIgPSBhd2FpdCBncihlKTtcbiAgcmV0dXJuIFd0ID09PSBudWxsICYmIChXdCA9IG5ldyB3aW5kb3cuZ29vZ2xlLnBheW1lbnRzLmFwaS5QYXltZW50c0NsaWVudCh7XG4gICAgZW52aXJvbm1lbnQ6IHIsXG4gICAgbWVyY2hhbnRJbmZvOiB0Lm1lcmNoYW50SW5mb1xuICB9KSksIFd0O1xufSwgQmUgPSAoZSkgPT4ge1xuICBjb25zdCB0ID0gZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMuZmluZCgocikgPT4gci50eXBlID09PSBcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIik7XG4gIHJldHVybiB0ID8gdW4ucGFyc2UodCkgOiBudWxsO1xufSwgd3IgPSAoZSwgdCkgPT4ge1xuICBjb25zdCByID0geyAuLi5lIH0sIG4gPSB0LnBheW1lbnRNZXRob2REYXRhPy5pbmZvPy5iaWxsaW5nQWRkcmVzcywgYSA9IHQuc2hpcHBpbmdBZGRyZXNzO1xuICBpZiAobikge1xuICAgIGNvbnN0IFtpLCAuLi5zXSA9IG4ubmFtZT8udHJpbSgpPy5zcGxpdCgvXFxzKy8pID8/IFtdLCBsID0gcy5qb2luKFwiIFwiKSB8fCB2b2lkIDA7XG4gICAgcltwLkVNQUlMXSA9IHJbcC5FTUFJTF0gfHwgdC5lbWFpbCB8fCBcIm9wX3VuZmlsbGVkQGdldG9wZW5wYXkuY29tXCIsIHJbcC5MSU5FMV0gPSByW3AuTElORTFdIHx8IG4uYWRkcmVzczEgfHwgXCJcIiwgcltwLkxJTkUyXSA9IHJbcC5MSU5FMl0gfHwgbi5hZGRyZXNzMiB8fCBcIlwiLCByW3AuTElORTNdID0gcltwLkxJTkUzXSB8fCBuLmFkZHJlc3MzIHx8IFwiXCIsIHJbcC5DSVRZXSA9IHJbcC5DSVRZXSB8fCBuLmxvY2FsaXR5IHx8IFwiXCIsIHJbcC5TVEFURV0gPSByW3AuU1RBVEVdIHx8IG4uYWRtaW5pc3RyYXRpdmVBcmVhIHx8IFwiXCIsIHJbcC5DT1VOVFJZXSA9IHJbcC5DT1VOVFJZXSB8fCBuLmNvdW50cnlDb2RlIHx8IFwiVVNcIiwgcltwLlpJUF9DT0RFXSA9IHJbcC5aSVBfQ09ERV0gfHwgbi5wb3N0YWxDb2RlIHx8IFwiMDAwMDBcIjtcbiAgICBjb25zdCBjID0gcltwLkZJUlNUX05BTUVdIHx8IGkgfHwgXCJcIiwgdSA9IHJbcC5MQVNUX05BTUVdIHx8IGwgfHwgXCJcIjtcbiAgICBjIHx8IHUgPyAocltwLkZJUlNUX05BTUVdID0gYywgcltwLkxBU1RfTkFNRV0gPSB1KSA6IChyW3AuRklSU1RfTkFNRV0gPSBcIl9PUF9VTktOT1dOXCIsIHJbcC5MQVNUX05BTUVdID0gXCJcIik7XG4gIH1cbiAgcmV0dXJuIGEgJiYgKHJbcC5TSElQUElOR19MSU5FMV0gPSByW3AuU0hJUFBJTkdfTElORTFdIHx8IGEuYWRkcmVzczEgfHwgXCJcIiwgcltwLlNISVBQSU5HX0xJTkUyXSA9IHJbcC5TSElQUElOR19MSU5FMl0gfHwgYS5hZGRyZXNzMiB8fCBcIlwiLCByW3AuU0hJUFBJTkdfTElORTNdID0gcltwLlNISVBQSU5HX0xJTkUzXSB8fCBhLmFkZHJlc3MzIHx8IFwiXCIsIHJbcC5TSElQUElOR19DSVRZXSA9IHJbcC5TSElQUElOR19DSVRZXSB8fCBhLmxvY2FsaXR5IHx8IFwiXCIsIHJbcC5TSElQUElOR19aSVBfQ09ERV0gPSByW3AuU0hJUFBJTkdfWklQX0NPREVdIHx8IGEucG9zdGFsQ29kZSB8fCBcIjAwMDAwXCIsIHJbcC5TSElQUElOR19TVEFURV0gPSByW3AuU0hJUFBJTkdfU1RBVEVdIHx8IGEuYWRtaW5pc3RyYXRpdmVBcmVhIHx8IFwiXCIsIHJbcC5TSElQUElOR19DT1VOVFJZXSA9IHJbcC5TSElQUElOR19DT1VOVFJZXSB8fCBhLmNvdW50cnlDb2RlIHx8IFwiVVNcIiksIHI7XG59LCB7IGxvZ19fOiB2ZSwgZXJyX186IGhjIH0gPSBrKFwiYXd4LWJhY3NcIiksIGdjID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICBjb25zdCBpID0gRyhyLCBuLmdldC5vblZhbGlkYXRpb25FcnJvciksIHMgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGwgPSBhd2FpdCBOKHMpLCBjID0gYS52ZXJpZmljYXRpb25NZXRob2QgPz8gXCJ0cnVlbGF5ZXJcIjtcbiAgICBsZXQgdSA9IG51bGw7XG4gICAgaWYgKGMgPT09IFwibWljcm9fZGVwb3NpdFwiKSB7XG4gICAgICB2ZShcIk1pY3JvIGRlcG9zaXQgdmVyaWZpY2F0aW9uIHNlbGVjdGVkLCBzaG93aW5nIGZvcm0uLi5cIik7XG4gICAgICB0cnkge1xuICAgICAgICB1ID0gYXdhaXQgR3QoXCJiYWNzX2RpcmVjdF9kZWJpdFwiLCB7XG4gICAgICAgICAgd2lkdGg6IFwiNDUwcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiMzUwcHhcIixcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmxcbiAgICAgICAgfSksIHZlKFwiTWljcm8gZGVwb3NpdCBkYXRhIGNvbGxlY3RlZFwiKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aHJvdyB2ZShcIk1pY3JvIGRlcG9zaXQgZm9ybSBjYW5jZWxsZWRcIiksIG5ldyBFcnJvcihcIk1pY3JvIGRlcG9zaXQgZm9ybSBjYW5jZWxsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGQgPSBhd2FpdCBaKHMsIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdCxcbiAgICAgIC4uLnEoaSwgbC5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICBjdXN0b21lcl9sYW5ndWFnZTogaWUoKVxuICAgIH0pLCBtID0gQmUoZCksIGYgPSBtPy5jb25zZW50X2lkLCB5ID0gbT8uYXZhaWxhYmxlX2JhbmtzO1xuICAgIGxldCBfO1xuICAgIGlmIChjID09PSBcInRydWVsYXllclwiICYmIHkgJiYgeS5sZW5ndGggPj0gMSkge1xuICAgICAgdmUoXCJNdWx0aXBsZSBiYW5rcyBhdmFpbGFibGUsIHNob3dpbmcgYmFuayBzZWxlY3Rvci4uLlwiKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIF8gPSBhd2FpdCBIbih5LCB7XG4gICAgICAgICAgd2lkdGg6IFwiNDUwcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiNTAwcHhcIixcbiAgICAgICAgICB0aXRsZTogXCJTZWxlY3QgYmFua1wiXG4gICAgICAgIH0pLCB2ZShgQmFuayBzZWxlY3RlZDogJHtfLmRpc3BsYXlfbmFtZX1gKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aHJvdyB2ZShcIkJhbmsgc2VsZWN0aW9uIGNhbmNlbGxlZFwiKSwgbmV3IEVycm9yKFwiQmFuayBzZWxlY3Rpb24gY2FuY2VsbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBnID0gQ2UoaSksIHcgPSB7XG4gICAgICB0eXBlOiBcImJhY3NfZGlyZWN0X2RlYml0XCIsXG4gICAgICBiYWNzX2RpcmVjdF9kZWJpdDoge1xuICAgICAgICAvLyBUcnVlTGF5ZXJcbiAgICAgICAgYmFua19uYW1lOiBfPy5iYW5rX25hbWUsXG4gICAgICAgIC8vIE1pY3JvZGVwb3NpdFxuICAgICAgICBvd25lcl9uYW1lOiBqdChpW3AuRklSU1RfTkFNRV0sIGlbcC5MQVNUX05BTUVdKSxcbiAgICAgICAgb3duZXJfZW1haWw6IGlbcC5FTUFJTF0sXG4gICAgICAgIGNvdW50cnlfY29kZTogaVtwLkNPVU5UUlldLFxuICAgICAgICBhY2NvdW50X251bWJlcjogdT8uYWNjb3VudF9udW1iZXIsXG4gICAgICAgIHNvcnRfY29kZTogdT8uc29ydF9jb2RlLFxuICAgICAgICBhZGRyZXNzOiB7IC4uLmcsIHRvd246IGcuY2l0eSwgcG9zdGNvZGU6IGcuemlwX2NvZGUgfVxuICAgICAgfVxuICAgIH0sIGIgPSAoYXdhaXQgeChzLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IGYsXG4gICAgICAgIHZlcmlmaWNhdGlvbl9tZXRob2Q6IGMsXG4gICAgICAgIGRpcmVjdF9kZWJpdF9kYXRhOiB3XG4gICAgICB9XG4gICAgfSkpLnJlcXVpcmVkX3VzZXJfYWN0aW9ucz8uZmluZChcbiAgICAgIChDKSA9PiBDLnR5cGUgPT09IFwiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiXG4gICAgKT8ucmVkaXJlY3RfdXJsO1xuICAgIGlmIChiKSB7XG4gICAgICB2ZShcIkJBQ1MgdmVyaWZpY2F0aW9uIHJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIik7XG4gICAgICBjb25zdCB7IHN0YXR1czogQyB9ID0gYXdhaXQgbGUoe1xuICAgICAgICB1cmw6IGIsXG4gICAgICAgIGJhc2VVcmw6IGUuYmFzZVVybCxcbiAgICAgICAgZnJhbWVXaWR0aDogXCI1MDBweFwiLFxuICAgICAgICBmcmFtZUhlaWdodDogXCI3MDBweFwiLFxuICAgICAgICBmcmFtZVRpdGxlOiBcIkJBQ1MgdmVyaWZpY2F0aW9uXCJcbiAgICAgIH0pO1xuICAgICAgaWYgKHZlKGDilbAgQkFDUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7Q31dYCksIEMgPT09IEYuQ0FOQ0VMTEVEKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCQUNTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gICAgICBpZiAoQyA9PT0gRi5GQUlMVVJFKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCQUNTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IFMgPSBhd2FpdCB4KHMsIHtcbiAgICAgIHNlY3VyZV90b2tlbjogbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogZlxuICAgICAgfVxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwiYXd4LWJhY3NcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogcyxcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IGksXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IFMsXG4gICAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKEMpIHtcbiAgICAgIHRocm93IGhjKFwiQkFDUyBwYXltZW50IGVycm9yXCIsIEMpLCB2KFwiY2hlY2tvdXRfZXJyb3JcIiwge1xuICAgICAgICBlcnJvcjogQ1xuICAgICAgfSksIG5ldyBFcnJvcihDPy5tZXNzYWdlID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICB9XG4gIH1cbiksIHsgbG9nX186IEtlLCBlcnJfXzogd2MgfSA9IGsoXCJhd3gtZWZ0XCIpLCB2YyA9IFYoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgIGN1c3RvbVBhcmFtczogYVxuICB9KSA9PiB7XG4gICAgY29uc3QgaSA9IEcociwgbi5nZXQub25WYWxpZGF0aW9uRXJyb3IpLCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBsID0gYXdhaXQgTihzKSwgYyA9IGEudmVyaWZpY2F0aW9uTWV0aG9kID8/IFwicGxhaWRcIjtcbiAgICBsZXQgdSA9IG51bGw7XG4gICAgaWYgKGMgPT09IFwibWljcm9fZGVwb3NpdFwiKSB7XG4gICAgICBLZShcIk1pY3JvIGRlcG9zaXQgdmVyaWZpY2F0aW9uIHNlbGVjdGVkLCBzaG93aW5nIGZvcm0uLi5cIik7XG4gICAgICB0cnkge1xuICAgICAgICB1ID0gYXdhaXQgR3QoXCJlZnRfZGlyZWN0X2RlYml0XCIsIHtcbiAgICAgICAgICB3aWR0aDogXCI0NTBweFwiLFxuICAgICAgICAgIGhlaWdodDogXCI0NTBweFwiLFxuICAgICAgICAgIGJhc2VVcmw6IGUuYmFzZVVybFxuICAgICAgICB9KSwgS2UoXCJNaWNybyBkZXBvc2l0IGRhdGEgY29sbGVjdGVkXCIpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRocm93IEtlKFwiTWljcm8gZGVwb3NpdCBmb3JtIGNhbmNlbGxlZFwiKSwgbmV3IEVycm9yKFwiTWljcm8gZGVwb3NpdCBmb3JtIGNhbmNlbGxlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZCA9IGF3YWl0IFoocywge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB0LFxuICAgICAgLi4ucShpLCBsLmNoZWNrb3V0X3NldHRpbmdzKSxcbiAgICAgIGN1c3RvbWVyX2xhbmd1YWdlOiBpZSgpXG4gICAgfSksIGYgPSBCZShkKT8uY29uc2VudF9pZCwgeSA9IHtcbiAgICAgIHR5cGU6IFwiZWZ0X2RpcmVjdF9kZWJpdFwiLFxuICAgICAgZWZ0X2RpcmVjdF9kZWJpdDoge1xuICAgICAgICAvLyBQbGFpZFxuICAgICAgICBidXNpbmVzc19hY2NvdW50OiBhLmlzQnVzaW5lc3NBY2NvdW50ID8/ICExLFxuICAgICAgICBvd25lcl9uYW1lOiBqdChpW3AuRklSU1RfTkFNRV0sIGlbcC5MQVNUX05BTUVdKSxcbiAgICAgICAgb3duZXJfZW1haWw6IGlbcC5FTUFJTF0sXG4gICAgICAgIC8vIE1pY3JvZGVwb3NpdFxuICAgICAgICBpbnN0aXR1dGlvbl9udW1iZXI6IHU/Lmluc3RpdHV0aW9uX251bWJlcixcbiAgICAgICAgdHJhbnNpdF9udW1iZXI6IHU/LnRyYW5zaXRfbnVtYmVyLFxuICAgICAgICBhY2NvdW50X251bWJlcjogdT8uYWNjb3VudF9udW1iZXJcbiAgICAgICAgLy8gbWFuZGF0ZV92ZXJzaW9uOiB1bmRlZmluZWQgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgfVxuICAgIH0sIGcgPSAoYXdhaXQgeChzLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IGYsXG4gICAgICAgIHZlcmlmaWNhdGlvbl9tZXRob2Q6IGMsXG4gICAgICAgIGRpcmVjdF9kZWJpdF9kYXRhOiB5XG4gICAgICB9XG4gICAgfSkpLnJlcXVpcmVkX3VzZXJfYWN0aW9ucz8uZmluZChcbiAgICAgIChoKSA9PiBoLnR5cGUgPT09IFwiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiXG4gICAgKT8ucmVkaXJlY3RfdXJsO1xuICAgIGlmIChnKSB7XG4gICAgICBLZShcIkVGVCB2ZXJpZmljYXRpb24gcmVxdWlyZWQsIHN0YXJ0aW5nIHZlcmlmaWNhdGlvbi4uLlwiKTtcbiAgICAgIGNvbnN0IHsgc3RhdHVzOiBoIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgIHVybDogZyxcbiAgICAgICAgYmFzZVVybDogZS5iYXNlVXJsLFxuICAgICAgICBmcmFtZVdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICAgIGZyYW1lSGVpZ2h0OiBcIjcwMHB4XCIsXG4gICAgICAgIGZyYW1lVGl0bGU6IFwiRUZUIHZlcmlmaWNhdGlvblwiXG4gICAgICB9KTtcbiAgICAgIGlmIChLZShg4pWwIEVGVCB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7aH1dYCksIGggPT09IEYuQ0FOQ0VMTEVEKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFRlQgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgIGlmIChoID09PSBGLkZBSUxVUkUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVGVCB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICAgIH1cbiAgICBjb25zdCB3ID0gYXdhaXQgeChzLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IGZcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHJlKHtcbiAgICAgICAgbG9nUHJlZml4OiBcImF3eC1lZnRcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogcyxcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IGksXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IHcsXG4gICAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgIHRocm93IHdjKFwiRUZUIHBheW1lbnQgZXJyb3JcIiwgaCksIHYoXCJjaGVja291dF9lcnJvclwiLCB7XG4gICAgICAgIGVycm9yOiBoXG4gICAgICB9KSwgbmV3IEVycm9yKGg/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogYmUsIGVycl9fOiBiYyB9ID0gayhcImF3eC1zZXBhXCIpLCBQYyA9IFYoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgIGN1c3RvbVBhcmFtczogYVxuICB9KSA9PiB7XG4gICAgY29uc3QgaSA9IEcociwgbi5nZXQub25WYWxpZGF0aW9uRXJyb3IpLCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBsID0gYXdhaXQgTihzKSwgYyA9IGEudmVyaWZpY2F0aW9uTWV0aG9kID8/IFwidHJ1ZWxheWVyXCI7XG4gICAgbGV0IHUgPSBudWxsO1xuICAgIGlmIChjID09PSBcIm1pY3JvX2RlcG9zaXRcIikge1xuICAgICAgYmUoXCJNaWNybyBkZXBvc2l0IHZlcmlmaWNhdGlvbiBzZWxlY3RlZCwgc2hvd2luZyBmb3JtLi4uXCIpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdSA9IGF3YWl0IEd0KFwic2VwYV9kaXJlY3RfZGViaXRcIiwge1xuICAgICAgICAgIHdpZHRoOiBcIjQ1MHB4XCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjMwMHB4XCIsXG4gICAgICAgICAgYmFzZVVybDogZS5iYXNlVXJsXG4gICAgICAgIH0pLCBiZShcIk1pY3JvIGRlcG9zaXQgZGF0YSBjb2xsZWN0ZWRcIik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhyb3cgYmUoXCJNaWNybyBkZXBvc2l0IGZvcm0gY2FuY2VsbGVkXCIpLCBuZXcgRXJyb3IoXCJNaWNybyBkZXBvc2l0IGZvcm0gY2FuY2VsbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkID0gYXdhaXQgWihzLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICAuLi5xKGksIGwuY2hlY2tvdXRfc2V0dGluZ3MpLFxuICAgICAgY3VzdG9tZXJfbGFuZ3VhZ2U6IGllKClcbiAgICB9KSwgbSA9IEJlKGQpLCBmID0gbT8uY29uc2VudF9pZCwgeSA9IG0/LmF2YWlsYWJsZV9iYW5rcztcbiAgICBsZXQgXztcbiAgICBpZiAoYyA9PT0gXCJ0cnVlbGF5ZXJcIiAmJiB5ICYmIHkubGVuZ3RoID49IDEpIHtcbiAgICAgIGJlKFwiTXVsdGlwbGUgYmFua3MgYXZhaWxhYmxlLCBzaG93aW5nIGJhbmsgc2VsZWN0b3IuLi5cIik7XG4gICAgICB0cnkge1xuICAgICAgICBfID0gYXdhaXQgSG4oeSwge1xuICAgICAgICAgIHdpZHRoOiBcIjQ1MHB4XCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjUwMHB4XCIsXG4gICAgICAgICAgdGl0bGU6IFwiU2VsZWN0IGJhbmtcIlxuICAgICAgICB9KSwgYmUoYEJhbmsgc2VsZWN0ZWQ6ICR7Xy5kaXNwbGF5X25hbWV9YCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhyb3cgYmUoXCJCYW5rIHNlbGVjdGlvbiBjYW5jZWxsZWRcIiksIG5ldyBFcnJvcihcIkJhbmsgc2VsZWN0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdyA9IChhd2FpdCB4KHMsIHtcbiAgICAgIHNlY3VyZV90b2tlbjogbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogZixcbiAgICAgICAgdmVyaWZpY2F0aW9uX21ldGhvZDogYyxcbiAgICAgICAgZGlyZWN0X2RlYml0X2RhdGE6IHtcbiAgICAgICAgICB0eXBlOiBcInNlcGFfZGlyZWN0X2RlYml0XCIsXG4gICAgICAgICAgc2VwYV9kaXJlY3RfZGViaXQ6IHtcbiAgICAgICAgICAgIC8vIHRydWVsYXllclxuICAgICAgICAgICAgYmFua19uYW1lOiBfPy5iYW5rX25hbWUsXG4gICAgICAgICAgICBjb3VudHJ5X2NvZGU6IGlbcC5DT1VOVFJZXSxcbiAgICAgICAgICAgIC8vIG1pY3JvZGVwb3NpdFxuICAgICAgICAgICAgb3duZXJfbmFtZToganQoaVtwLkZJUlNUX05BTUVdLCBpW3AuTEFTVF9OQU1FXSksXG4gICAgICAgICAgICBvd25lcl9lbWFpbDogaVtwLkVNQUlMXSxcbiAgICAgICAgICAgIGliYW46IHU/LmliYW5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSkucmVxdWlyZWRfdXNlcl9hY3Rpb25zPy5maW5kKFxuICAgICAgKGIpID0+IGIudHlwZSA9PT0gXCJhaXJ3YWxsZXhfcGF5bWVudF9jb25zZW50XCJcbiAgICApPy5yZWRpcmVjdF91cmw7XG4gICAgaWYgKHcpIHtcbiAgICAgIGJlKFwiU0VQQSB2ZXJpZmljYXRpb24gcmVxdWlyZWQsIHN0YXJ0aW5nIHZlcmlmaWNhdGlvbi4uLlwiKTtcbiAgICAgIGNvbnN0IHsgc3RhdHVzOiBiIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgIHVybDogdyxcbiAgICAgICAgYmFzZVVybDogZS5iYXNlVXJsLFxuICAgICAgICBmcmFtZVdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICAgIGZyYW1lSGVpZ2h0OiBcIjcwMHB4XCIsXG4gICAgICAgIGZyYW1lVGl0bGU6IFwiU0VQQSB2ZXJpZmljYXRpb25cIlxuICAgICAgfSk7XG4gICAgICBpZiAoYmUoYOKVsCBTRVBBIHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQgW1N0YXR1czogJHtifV1gKSwgYiA9PT0gRi5DQU5DRUxMRUQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNFUEEgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgIGlmIChiID09PSBGLkZBSUxVUkUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNFUEEgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgICB9XG4gICAgY29uc3QgaCA9IGF3YWl0IHgocywge1xuICAgICAgc2VjdXJlX3Rva2VuOiBsLnRva2VuLFxuICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQucHJvdmlkZXIsXG4gICAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBmXG4gICAgICB9XG4gICAgfSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiByZSh7XG4gICAgICAgIGxvZ1ByZWZpeDogXCJhd3gtc2VwYVwiLFxuICAgICAgICBhbnlDZGVDb25uZWN0aW9uOiBzLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogaSxcbiAgICAgICAgY29uZmlybVJlc3VsdDogaCxcbiAgICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoYikge1xuICAgICAgdGhyb3cgYmMoXCJTRVBBIHBheW1lbnQgZXJyb3JcIiwgYiksIHYoXCJjaGVja291dF9lcnJvclwiLCB7XG4gICAgICAgIGVycm9yOiBiXG4gICAgICB9KSwgbmV3IEVycm9yKGI/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogRWMsIGVycl9fOiB2ciB9ID0gayhcImFpcndhbGxleC1jY1wiKSwgQ2MgPSB6JDEub2JqZWN0KHtcbiAgXCJvcC1haXJ3YWxsZXgtM2RzLXVybFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWlyd2FsbGV4LWluaXRpYWwtaW50ZW50LWlkXCI6IHokMS5zdHJpbmcoKSxcbiAgXCJvcC1haXJ3YWxsZXgtY29uc2VudC1pZFwiOiB6JDEuc3RyaW5nKClcbn0pLCBBYyA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSBDYy5zYWZlUGFyc2UoZSk7XG4gIGlmICghdC5zdWNjZXNzKSB7XG4gICAgY29uc3QgciA9IFwiVW5hYmxlIHRvIHByb2Nlc3MgeW91ciBjcmVkaXQgY2FyZC4gUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cIiwgbiA9IGBBaXJ3YWxsZXggM0RTIGlzIHJlcXVpcmVkIGJ1dCBoZWFkZXJzIGFyZSBtYWxmb3JtZWQuIEdvdDogJHtKU09OLnN0cmluZ2lmeShlKX1gO1xuICAgIHRocm93IHZyKG4pLCBuZXcgRXJyb3Iocik7XG4gIH1cbiAgcmV0dXJuIHQuZGF0YTtcbn0sIFhuID0gKGUpID0+IGU/LltcIm9wLWFpcndhbGxleC0zZHMtdXJsXCJdICE9PSB2b2lkIDAsIFNjID0gKGUpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB0ID0gbmV3IFVSTChlID8/IFwiXCIpLnNlYXJjaFBhcmFtcy5nZXQoXCJwYXltZW50X2ludGVudF9pZFwiKTtcbiAgICBpZiAoIXQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBpbnRlbnQgSUQgZm91bmQgaW4gQWlyd2FsbGV4IDNEUyB2ZXJpZmljYXRpb24gcmVzdWx0XCIpO1xuICAgIHJldHVybiBFYyhgQWlyd2FsbGV4IDNEUyB2ZXJpZmljYXRpb24gc3VjY2Vzcy4gW0ludGVudCBJRDogJHt0fV1gKSwgdDtcbiAgfSBjYXRjaCAodCkge1xuICAgIGNvbnN0IHIgPSBcIkVycm9yIHZlcmlmeWluZyBBaXJ3YWxsZXggM0RTIHZlcmlmaWNhdGlvbiByZXN1bHQuXCI7XG4gICAgdGhyb3cgdnIociwgYFJlc3VsdGluZyBVUkw6ICR7ZX0uXG5FcnJvcjogJHthZSh0KX1gKSwgbmV3IEVycm9yKHIpO1xuICB9XG59LCBlbyA9IGFzeW5jIChlLCB0KSA9PiB7XG4gIGNvbnN0IHIgPSBBYyh0KSwgbiA9IGF3YWl0IFluKHsgdXJsOiByW1wib3AtYWlyd2FsbGV4LTNkcy11cmxcIl0sIGJhc2VVcmw6IGUgfSksIGEgPSBTYyhuLmhyZWYgPz8gXCJcIiksIGkgPSByW1wib3AtYWlyd2FsbGV4LWluaXRpYWwtaW50ZW50LWlkXCJdO1xuICBpZiAoaSAhPT0gYSkge1xuICAgIGNvbnN0IGwgPSBcIlVuYWJsZSB0byBwcm9jZXNzIHlvdXIgY3JlZGl0IGNhcmQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuXCIsIGMgPSBgSW50ZW50IElEIGZyb20gY2FsbGJhY2sgKCR7YX0pIGRvZXMgbm90IG1hdGNoIHRoZSBpbml0aWFsIGludGVudCBJRCAoJHtpfSkuYDtcbiAgICB0aHJvdyB2cihjKSwgbmV3IEVycm9yKGwpO1xuICB9XG4gIHJldHVybiB7XG4gICAgZXhpc3RpbmdfY2M6IHtcbiAgICAgIGluaXRpYWxfaW50ZW50X2lkOiBhLFxuICAgICAgY29uc2VudF9pZDogcltcIm9wLWFpcndhbGxleC1jb25zZW50LWlkXCJdXG4gICAgfVxuICB9O1xufSwgdG8gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhaXJ3YWxsZXhcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKVxuICB9KVxufSksIHJvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImdvb2dsZV9wYXlcIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcImFpcndhbGxleFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pLCBiciA9ICgpID0+IFFuKHtcbiAgc2NyaXB0SWQ6IFwiX19vcF9pbnRlcm5hbF9hcHBsZV9wYXlfc2RrXCIsXG4gIHNyYzogXCJodHRwczovL2FwcGxlcGF5LmNkbi1hcHBsZS5jb20vanNhcGkvMS5sYXRlc3QvYXBwbGUtcGF5LXNkay5qc1wiLFxuICBjaGVja0xvYWRlZEZuOiAoKSA9PiAhIXdpbmRvdy5BcHBsZVBheVNlc3Npb25cbn0pLCBQciA9IChlLCB0KSA9PiB7XG4gIGNvbnN0IHIgPSB0LnRva2VuLnBheW1lbnRNZXRob2QuYmlsbGluZ0NvbnRhY3QsIG4gPSB0LmJpbGxpbmdDb250YWN0LCBhID0gdC5zaGlwcGluZ0NvbnRhY3QsIGkgPSB7IC4uLmUgfTtcbiAgaWYgKHIgfHwgbiB8fCBhKSB7XG4gICAgaVtwLkVNQUlMXSA9IGlbcC5FTUFJTF0gfHwgcj8uZW1haWxBZGRyZXNzIHx8IG4/LmVtYWlsQWRkcmVzcyB8fCBhPy5lbWFpbEFkZHJlc3MgfHwgXCJvcF91bmZpbGxlZEBlbWFpbC5jb21cIiwgaVtwLkNPVU5UUlldID0gaVtwLkNPVU5UUlldIHx8IHI/LmNvdW50cnlDb2RlIHx8IG4/LmNvdW50cnlDb2RlIHx8IGE/LmNvdW50cnlDb2RlIHx8IFwiVVNcIiwgaVtwLlpJUF9DT0RFXSA9IGlbcC5aSVBfQ09ERV0gfHwgcj8ucG9zdGFsQ29kZSB8fCBuPy5wb3N0YWxDb2RlIHx8IGE/LnBvc3RhbENvZGUgfHwgXCIwMDAwMFwiO1xuICAgIGNvbnN0IHMgPSBpW3AuRklSU1RfTkFNRV0gfHwgcj8uZ2l2ZW5OYW1lIHx8IG4/LmdpdmVuTmFtZSB8fCBhPy5naXZlbk5hbWUgfHwgXCJcIiwgbCA9IGlbcC5MQVNUX05BTUVdIHx8IHI/LmZhbWlseU5hbWUgfHwgbj8uZmFtaWx5TmFtZSB8fCBhPy5mYW1pbHlOYW1lIHx8IFwiXCI7XG4gICAgcyB8fCBsID8gKGlbcC5GSVJTVF9OQU1FXSA9IHMsIGlbcC5MQVNUX05BTUVdID0gbCkgOiAoaVtwLkZJUlNUX05BTUVdID0gXCJfT1BfVU5LTk9XTlwiLCBpW3AuTEFTVF9OQU1FXSA9IFwiXCIpO1xuICB9XG4gIHJldHVybiBpO1xufTtcbnokMS5vYmplY3Qoe1xuICBkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBtZXNzYWdlSGVhZGVyczogeiQxLnJlY29yZCh6JDEuc3RyaW5nKCksIHokMS5hbnkoKSksXG4gICAgZXJyb3JzOiB6JDEuYXJyYXkoeiQxLmFueSgpKSxcbiAgICBtZXNzYWdlVHlwZTogeiQxLnN0cmluZygpLFxuICAgIG1lc3NhZ2VCb2R5OiB6JDEucmVjb3JkKHokMS5zdHJpbmcoKSwgeiQxLmFueSgpKVxuICB9KSxcbiAgb3JpZ2luOiB6JDEubGl0ZXJhbChcImh0dHBzOi8vYXBwbGVwYXkuY2RuLWFwcGxlLmNvbVwiKVxufSk7XG5jb25zdCBrYyA9ICh7XG4gIHRvdGFsOiBlLFxuICBwcmVmaWxsOiB0XG59KSA9PiB7XG4gIGlmICh0Lm1vZGUgPT09IFwic2V0dXBcIilcbiAgICByZXR1cm4ge1xuICAgICAgcGF5bWVudERlc2NyaXB0aW9uOiBcIlNldHVwIHJlY3VycmluZyBwYXltZW50XCIsXG4gICAgICByZWd1bGFyQmlsbGluZzoge1xuICAgICAgICBhbW91bnQ6IGUuYW1vdW50LFxuICAgICAgICBsYWJlbDogXCJTZXR1cCByZWN1cnJpbmcgcGF5bWVudFwiLFxuICAgICAgICBwYXltZW50VGltaW5nOiBcInJlY3VycmluZ1wiLFxuICAgICAgICB0eXBlOiBcImZpbmFsXCJcbiAgICAgIH0sXG4gICAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBiaWxsaW5nIHBvcnRhbCB1cmxcbiAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3Bhc3NraXQvcGtyZWN1cnJpbmdwYXltZW50cmVxdWVzdC9tYW5hZ2VtZW50dXJsI0Rpc2N1c3Npb25cbiAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgdXNlZCB3aGVuIHVzZXIgcmVtb3ZlIGEgY2FyZCBmcm9tIHRoZWlyIEFwcGxlUGF5IHdhbGxldC5cbiAgICAgIC8vIEN1cnJlbnR5IHNldCB0byBjaGVja291dCBzZXNzaW9uIHVybCB0byBzYXRpc2Z5IEFwcGxlUGF5IHR5cGVzXG4gICAgICBtYW5hZ2VtZW50VVJMOiBuZXcgVVJMKGAvcGF5LyR7dC50b2tlbn1gLCAkbikudG9TdHJpbmcoKVxuICAgIH07XG4gIGNvbnN0IHIgPSB0LmxpbmVfaXRlbXM/LlswXTtcbiAgaWYgKCFyKSByZXR1cm47XG4gIGNvbnN0IG4gPSByPy5iaWxsaW5nX2ludGVydmFsID09PSBcIndlZWtcIiA/IFwiZGF5XCIgOiByPy5iaWxsaW5nX2ludGVydmFsLCBhID0gcj8uYmlsbGluZ19pbnRlcnZhbF9jb3VudCA/IHI/LmJpbGxpbmdfaW50ZXJ2YWwgPT09IFwid2Vla1wiID8gcj8uYmlsbGluZ19pbnRlcnZhbF9jb3VudCAqIDcgOiByPy5iaWxsaW5nX2ludGVydmFsX2NvdW50IDogdm9pZCAwO1xuICByZXR1cm4ge1xuICAgIHBheW1lbnREZXNjcmlwdGlvbjogcj8uZGVzY3JpcHRpb24gPz8gXCJcIixcbiAgICByZWd1bGFyQmlsbGluZzoge1xuICAgICAgYW1vdW50OiBlLmFtb3VudCxcbiAgICAgIGxhYmVsOiByPy5kZXNjcmlwdGlvbiA/PyBcIlwiLFxuICAgICAgcmVjdXJyaW5nUGF5bWVudEludGVydmFsVW5pdDogbixcbiAgICAgIHJlY3VycmluZ1BheW1lbnRJbnRlcnZhbENvdW50OiBhLFxuICAgICAgcGF5bWVudFRpbWluZzogXCJyZWN1cnJpbmdcIixcbiAgICAgIHR5cGU6IFwiZmluYWxcIlxuICAgIH0sXG4gICAgbWFuYWdlbWVudFVSTDogYGh0dHBzOi8vY2RlLmdldG9wZW5wYXkuY29tL3BheS8ke3QudG9rZW59YFxuICB9O1xufSwgcXQgPSAoe1xuICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBlLFxuICBpbml0aWFsUHJldmlldzogdCxcbiAgcHJlZmlsbDogcixcbiAgZGVmYXVsdExhYmVsOiBuID0gXCJUb3RhbFwiXG59KSA9PiB7XG4gIGNvbnN0IGEgPSAoZT8uYW1vdW50Py5jdXJyZW5jeSA/PyByPy5jdXJyZW5jeSA/PyB0LmN1cnJlbmN5KS50b1VwcGVyQ2FzZSgpLCBzID0gKChlPy5hbW91bnQ/LmFtb3VudEF0b20gPz8gdD8uYW1vdW50QXRvbSA/PyAwKSAvIDEwMCkudG9GaXhlZCgyKTtcbiAgcmV0dXJuIHtcbiAgICBjdXJyZW5jeUNvZGU6IGEsXG4gICAgdG90YWw6IHtcbiAgICAgIGxhYmVsOiBlPy5sYWJlbCA/PyBuID8/IFwiVG90YWxcIixcbiAgICAgIHR5cGU6IGU/LnBlbmRpbmcgPyBcInBlbmRpbmdcIiA6IFwiZmluYWxcIixcbiAgICAgIGFtb3VudDogc1xuICAgIH1cbiAgfTtcbn0sIEVyID0gKHtcbiAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogZSxcbiAgaW5pdGlhbFByZXZpZXc6IHQsXG4gIHByZWZpbGw6IHIsXG4gIGRlZmF1bHRMYWJlbDogblxufSkgPT4ge1xuICBjb25zdCB7IGN1cnJlbmN5Q29kZTogYSwgdG90YWw6IGkgfSA9IHF0KHtcbiAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBlLFxuICAgIGluaXRpYWxQcmV2aWV3OiB0LFxuICAgIHByZWZpbGw6IHIsXG4gICAgZGVmYXVsdExhYmVsOiBuXG4gIH0pO1xuICBsZXQgcyA9IHtcbiAgICBjb3VudHJ5Q29kZTogXCJVU1wiLFxuICAgIGN1cnJlbmN5Q29kZTogYSxcbiAgICByZXF1aXJlZEJpbGxpbmdDb250YWN0RmllbGRzOiBbXCJlbWFpbFwiLCBcInBvc3RhbEFkZHJlc3NcIiwgXCJuYW1lXCJdLFxuICAgIHJlcXVpcmVkU2hpcHBpbmdDb250YWN0RmllbGRzOiBbXG4gICAgICBcImVtYWlsXCIsXG4gICAgICAuLi5yLmNoZWNrb3V0X3NldHRpbmdzLnJlcXVpcmVfZnVsbF9zaGlwcGluZ19hZGRyZXNzID8gW1wicG9zdGFsQWRkcmVzc1wiXSA6IFtdXG4gICAgXSxcbiAgICBzdXBwb3J0ZWROZXR3b3JrczogW1widmlzYVwiLCBcIm1hc3RlckNhcmRcIiwgXCJhbWV4XCIsIFwiZGlzY292ZXJcIiwgXCJqY2JcIl0sXG4gICAgbWVyY2hhbnRDYXBhYmlsaXRpZXM6IFtcInN1cHBvcnRzM0RTXCIsIFwic3VwcG9ydHNDcmVkaXRcIiwgXCJzdXBwb3J0c0RlYml0XCJdLFxuICAgIHRvdGFsOiBpXG4gIH07XG4gIHJldHVybiByLmxpbmVfaXRlbXMuZXZlcnkoKGMpID0+IGMuYmlsbGluZ19pbnRlcnZhbCAmJiBjLmJpbGxpbmdfaW50ZXJ2YWxfY291bnQpICYmIChzLnJlY3VycmluZ1BheW1lbnRSZXF1ZXN0ID0ga2Moe1xuICAgIHRvdGFsOiBpLFxuICAgIHByZWZpbGw6IHJcbiAgfSkpLCBlPy5hcHBsZVBheVBheW1lbnRSZXF1ZXN0ICYmICh0eXBlb2YgZS5hcHBsZVBheVBheW1lbnRSZXF1ZXN0ID09IFwiZnVuY3Rpb25cIiA/IHMgPSB7XG4gICAgLi4ucyxcbiAgICAuLi5lLmFwcGxlUGF5UGF5bWVudFJlcXVlc3QocylcbiAgfSA6IHMgPSB7IC4uLnMsIC4uLmUuYXBwbGVQYXlQYXltZW50UmVxdWVzdCB9KSwgcztcbn0sIEljID0geiQxLmVudW0oW1widGVzdFwiLCBcImxpdmVcIiwgXCJsaXZlLXVzXCIsIFwibGl2ZS1pblwiLCBcImxpdmUtYXBzZVwiLCBcImxpdmUtYXVcIl0pLCBSYyA9IHokMS5lbnVtKFtcbiAgXCJhclwiLFxuICBcImJnLUJHXCIsXG4gIFwiY2EtRVNcIixcbiAgXCJjcy1DWlwiLFxuICBcImRhLURLXCIsXG4gIFwiZGUtREVcIixcbiAgXCJlbC1HUlwiLFxuICBcImVuLVVTXCIsXG4gIFwiZXMtRVNcIixcbiAgXCJldC1FRVwiLFxuICBcImZpLUZJXCIsXG4gIFwiZnItRlJcIixcbiAgXCJoci1IUlwiLFxuICBcImh1LUhVXCIsXG4gIFwiaXMtSVNcIixcbiAgXCJpdC1JVFwiLFxuICBcImphLUpQXCIsXG4gIFwia28tS1JcIixcbiAgXCJsdC1MVFwiLFxuICBcImx2LUxWXCIsXG4gIFwibmwtTkxcIixcbiAgXCJuby1OT1wiLFxuICBcInBsLVBMXCIsXG4gIFwicHQtQlJcIixcbiAgXCJwdC1QVFwiLFxuICBcInJvLVJPXCIsXG4gIFwicnUtUlVcIixcbiAgXCJzay1TS1wiLFxuICBcInNsLVNJXCIsXG4gIFwic3YtU0VcIixcbiAgXCJ6aC1DTlwiLFxuICBcInpoLVRXXCJcbl0pLCB7IGxvZ19fOiAkZSwgZXJyX186IGl0IH0gPSBrKFwiYWR5ZW4tY2NcIiksIEZjID0geiQxLm9iamVjdCh7XG4gIFwib3AtYWNjb3VudC1pZFwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWR5ZW4tY2xpZW50LWtleVwiOiB6JDEuc3RyaW5nKCksXG4gIFwib3AtYWR5ZW4tZW52aXJvbm1lbnRcIjogSWMsXG4gIFwib3AtYWR5ZW4tYWN0aW9uXCI6IHokMS5zdHJpbmcoKVxufSksIG5vID0gXCJVbmFibGUgdG8gcHJvY2VzcyB5b3VyIGNyZWRpdCBjYXJkLiBQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBhc3Npc3RhbmNlLlwiLCBUYyA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSBGYy5zYWZlUGFyc2UoZSk7XG4gIGlmICghdC5zdWNjZXNzKVxuICAgIHRocm93IGl0KGBBZHllbiAzRFMgaXMgcmVxdWlyZWQgYnV0IGhlYWRlcnMgYXJlIG1hbGZvcm1lZC4gR290OiAke0pTT04uc3RyaW5naWZ5KGUpfWApLCBuZXcgRXJyb3Iobm8pO1xuICByZXR1cm4gdC5kYXRhO1xufSwgTmMgPSAoZSkgPT4gSlNPTi5wYXJzZShlKSwgJHIgPSAoKSA9PiBcIkFkeWVuV2ViXCIgaW4gd2luZG93ICYmIFwiQWR5ZW5DaGVja291dFwiIGluIHdpbmRvdy5BZHllbldlYiwgTGMgPSBhc3luYyAoKSA9PiB7XG4gICRlKFwiV2FpdGluZyBmb3IgQWR5ZW4gU0RLIHRvIGxvYWQuLi5cIik7XG4gIGZvciAobGV0IGUgPSAwOyBlIDwgMTA7IGUrKylcbiAgICAkcigpIHx8IGF3YWl0IER0KDUwMCk7XG4gIGlmICghJHIoKSlcbiAgICB0aHJvdyBpdChcIkFkeWVuIFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCBuZXcgRXJyb3Iobm8pO1xuICByZXR1cm4gJGUoXCJBZHllbiBTREsgbG9hZGVkIHN1Y2Nlc3NmdWxseVwiKSwgd2luZG93LkFkeWVuV2ViLkFkeWVuQ2hlY2tvdXQ7XG59LCBNYyA9IChlKSA9PiB7XG4gIGNvbnN0IHsgaGVhZGVyczogdCwgbG9jYWxlOiByLCBjb3VudHJ5Q29kZTogbiwgY29tcG9uZW50OiBhLCBob3N0OiBpLCBjYW5jZWxCdXR0b246IHMgfSA9IGUsIGwgPSBOYyh0W1wib3AtYWR5ZW4tYWN0aW9uXCJdKTtcbiAgcmV0dXJuICRlKGBSdW5uaW5nIEFkeWVuIDNEUyBmbG93IGZvciBhY3Rpb24gdHlwZTogJHtsLnR5cGV9YCksIG5ldyBQcm9taXNlKChjKSA9PiB7XG4gICAgY29uc3QgdSA9ICgpID0+IHtcbiAgICAgICRlKFwiQ2xlYW5pbmcgdXAgQWR5ZW4gM0RTIGZsb3dcIiksIHMucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGYpLCBpLnJlbW92ZSgpO1xuICAgIH0sIGQgPSAoXykgPT4ge1xuICAgICAgaXQoXCJBdXRoZW50aWNhdGlvbiBmYWlsZWQuIFJlc3VsdDpcIiwgXyksIGMoeyBzdGF0dXM6IEYuRkFJTFVSRSwgY2xlYW51cDogdSB9KTtcbiAgICB9LCBtID0gKF8pID0+IHtcbiAgICAgIGl0KFwiQWR5ZW4gZXJyb3I6XCIsIF8pLCBjKHsgc3RhdHVzOiBGLkZBSUxVUkUsIGNsZWFudXA6IHUgfSk7XG4gICAgfSwgZiA9ICgpID0+IHtcbiAgICAgIGMoeyBzdGF0dXM6IEYuQ0FOQ0VMTEVELCBjbGVhbnVwOiB1IH0pO1xuICAgIH07XG4gICAgcy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZik7XG4gICAgY29uc3QgeSA9IChfLCBnLCB3KSA9PiB7XG4gICAgICBpLnJlbW92ZSgpLCBjKHsgc3RhdHVzOiBGLlNVQ0NFU1MsIGFkZGl0aW9uYWxEZXRhaWxzOiBfLCBjbGVhbnVwOiB1IH0pO1xuICAgIH07XG4gICAgTGMoKS50aGVuKFxuICAgICAgKF8pID0+IF8oe1xuICAgICAgICBjbGllbnRLZXk6IHRbXCJvcC1hZHllbi1jbGllbnQta2V5XCJdLFxuICAgICAgICBlbnZpcm9ubWVudDogdFtcIm9wLWFkeWVuLWVudmlyb25tZW50XCJdLFxuICAgICAgICBsb2NhbGU6IHIsXG4gICAgICAgIGNvdW50cnlDb2RlOiBuLFxuICAgICAgICBvbkFkZGl0aW9uYWxEZXRhaWxzOiB5LFxuICAgICAgICBvblBheW1lbnRGYWlsZWQ6IGQsXG4gICAgICAgIG9uRXJyb3I6IG1cbiAgICAgIH0pXG4gICAgKS50aGVuKChfKSA9PiB7XG4gICAgICBfLmNyZWF0ZUZyb21BY3Rpb24obCwgeyBjaGFsbGVuZ2VXaW5kb3dTaXplOiBcIjAzXCIgfSkubW91bnQoYSk7XG4gICAgfSk7XG4gIH0pO1xufSwgeGMgPSAoZSkgPT4ge1xuICBjb25zdCB0ID0gbmF2aWdhdG9yLmxhbmd1YWdlcyAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzLmxlbmd0aCA/IG5hdmlnYXRvci5sYW5ndWFnZXNbMF0gOiBuYXZpZ2F0b3IubGFuZ3VhZ2UsIHIgPSBlID8/IHQsIG4gPSBSYy5zYWZlUGFyc2Uocik7XG4gIHJldHVybiBuLnN1Y2Nlc3MgPyAoJGUoYFJlc29sdmVkIGxvY2FsZTogJHtuLmRhdGF9YCksIG4uZGF0YSkgOiAoaXQoYFJlc29sdmVkIGludmFsaWQgbG9jYWxlOiAke3J9LiBEZWZhdWx0aW5nIHRvIGVuLVVTLmApLCBcImVuLVVTXCIpO1xufSwgb28gPSAoZSkgPT4gZT8uW1wib3AtYWR5ZW4tYWN0aW9uXCJdICE9PSB2b2lkIDAsIGFvID0gYXN5bmMgKGUsIHQsIHIpID0+IHtcbiAgY29uc3QgbiA9IFRjKHQpLCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgYS5pZCA9IFwiYWR5ZW4tY29udGFpbmVyXCI7XG4gIGNvbnN0IHsgaG9zdDogaSwgaWZyYW1lOiBzLCBjYW5jZWxCdXR0b246IGwgfSA9ICR0KFwiaHR0cDovL2V4YW1wbGUuY29tXCIpO1xuICBzLnJlcGxhY2VXaXRoKGEpO1xuICBjb25zdCBjID0gYXdhaXQgTWMoe1xuICAgIGhlYWRlcnM6IG4sXG4gICAgbG9jYWxlOiB4YyhyKSxcbiAgICBjb3VudHJ5Q29kZTogZSxcbiAgICBjb21wb25lbnQ6IGEsXG4gICAgaG9zdDogaSxcbiAgICBjYW5jZWxCdXR0b246IGxcbiAgfSk7XG4gIGlmIChjLmNsZWFudXAoKSwgYy5zdGF0dXMgPT09IEYuRkFJTFVSRSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgaWYgKGMuc3RhdHVzID09PSBGLkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKGMuc3RhdHVzID09PSBGLlNVQ0NFU1MpIHtcbiAgICBpZiAoIWMuYWRkaXRpb25hbERldGFpbHMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIHN1Y2NlZWRlZCBidXQgbm8gYWRkaXRpb25hbCBkZXRhaWxzIHdlcmUgcmV0dXJuZWRcIik7XG4gICAgcmV0dXJuICRlKFwiM0RTIHZlcmlmaWNhdGlvbiBzdWNjZWVkZWRcIiksIHtcbiAgICAgIGV4aXN0aW5nX2NjOiB7XG4gICAgICAgIGFkZGl0aW9uYWxfZGV0YWlsczogYy5hZGRpdGlvbmFsRGV0YWlscy5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlXG4gICAgY3QoYy5zdGF0dXMpO1xufSwgaW8gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiYXBwbGVfcGF5XCIpLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJhZHllblwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgc28gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWR5ZW5cIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBwcm9jZXNzb3JfYWNjb3VudF9pZDogeiQxLnN0cmluZygpLFxuICAgIHByb2Nlc3Nvcl9hY2NvdW50X25hbWU6IHokMS5zdHJpbmcoKSxcbiAgICBnb29nbGVfcGF5X21lcmNoYW50X2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpXG4gIH0pXG59KSwgeyBsb2dfXzogRGMgfSA9IGsoXCJhd3gtYXBwbGUtcGF5XCIpO1xuYXN5bmMgZnVuY3Rpb24gVWMoZSwgdCkge1xuICB0cnkge1xuICAgIGNvbnN0IGEgPSAoYXdhaXQgVXQodC5jb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdC5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgYXBwbGVfcGF5X3Nlc3Npb246IHtcbiAgICAgICAgICB2YWxpZGF0aW9uX3VybDogZS52YWxpZGF0aW9uVVJMLFxuICAgICAgICAgIGluaXRpYXRpdmVfY29udGV4dDogd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLFxuICAgICAgICAgIHRoZWlyX2FjY291bnRfaWQ6IHQucHJvY2Vzc29yQWNjb3VudC5wcm9jZXNzb3JfYWNjb3VudF9pZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpLm5leHRfYWN0aW9uX21ldGFkYXRhPy5hcHBsZV9wYXlfc2Vzc2lvbjtcbiAgICBpZiAoIWEpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBzZXNzaW9uIGRhdGEgcmVjZWl2ZWQgZnJvbSBwYXltZW50IGZsb3dcIik7XG4gICAgdC5zZXNzaW9uLmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGEpLCB2KFwiYXBwbGVfcGF5X2NvbXBsZXRlX21lcmNoYW50X3ZhbGlkYXRpb25cIiwge1xuICAgICAgLi4uYVxuICAgIH0pO1xuICB9IGNhdGNoIChyKSB7XG4gICAgdGhyb3cgdC5zZXNzaW9uLmFib3J0KCksIHI7XG4gIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIE9jKGUsIHQpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCByID0gZS5wYXltZW50LCBuID0gUHIodC5ub25DZGVGb3JtSW5wdXRzLCByKSwgYSA9IEcoXG4gICAgICBuLFxuICAgICAgdC5mb3JtQ2FsbGJhY2tzLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIHQuZGVmYXVsdEZpZWxkVmFsdWVzXG4gICAgKTtcbiAgICB2KFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgIC4uLmFcbiAgICB9KSwgYXdhaXQgWih0LmNvbm5lY3Rpb24sIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kLnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgLi4ucShhLCB0LnByZWZpbGwuY2hlY2tvdXRfc2V0dGluZ3MpXG4gICAgfSk7XG4gICAgY29uc3QgaSA9IGF3YWl0IHgodC5jb25uZWN0aW9uLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IHQucHJlZmlsbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlcixcbiAgICAgICAgYnJvd3Nlcl9pbmZvOiBSbygpLFxuICAgICAgICBtb2JpbGVfd2FsbGV0X3BheW1lbnRfZGF0YToge1xuICAgICAgICAgIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuOiBKU09OLnN0cmluZ2lmeShyLnRva2VuKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKERjKFwiWzFzdF0gQ29uZmlybSBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgaSksICFpLnBheW1lbnRfbWV0aG9kcz8uWzBdPy5pZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIFBNIElEIGZvdW5kXCIpO1xuICAgIGNvbnN0IGwgPSB7XG4gICAgICBzdGF0dXM6IEFwcGxlUGF5U2Vzc2lvbi5TVEFUVVNfU1VDQ0VTU1xuICAgIH07XG4gICAgcmV0dXJuIHQuc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQobCksIHJlKHtcbiAgICAgIGxvZ1ByZWZpeDogXCJhZHllbi1hcHBsZXBheVwiLFxuICAgICAgYW55Q2RlQ29ubmVjdGlvbjogdC5jb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogYSxcbiAgICAgIGNvbmZpcm1SZXN1bHQ6IGksXG4gICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgfSk7XG4gIH0gY2F0Y2ggKHIpIHtcbiAgICBjb25zdCBuID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX0ZBSUxVUkVcbiAgICB9O1xuICAgIHRocm93IHQuc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQobiksIHI7XG4gIH1cbn1cbmNvbnN0IHsgbG9nX186IEplLCBlcnJfXzogY28gfSA9IGsoXCJhZHllbi1hcHBsZS1wYXlcIiksIGpjID0gY2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICAgIGNvbnN0IHIgPSB7XG4gICAgICBwcm9jZXNzb3I6IFUuRW51bS5hZHllbixcbiAgICAgIGlzQXZhaWxhYmxlOiAhMSxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH1cbiAgICB9LCBuID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIGlvKTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm4gcjtcbiAgICBpZiAoSmUoXCJMb2FkaW5nIEFwcGxlIFBheSBzY3JpcHRcIiksIGF3YWl0IGJyKCksICF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uIHx8ICFBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gSmUoXCJBcHBsZSBQYXkgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS9icm93c2VyXCIpLCByO1xuICAgIGlmIChKZShcIkFwcGxlIFBheSBMb2FkZWRcIiksICFhd2FpdCBBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gSmUoXCJObyBhY3RpdmUgY2FyZHMgYXZhaWxhYmxlIGZvciBBcHBsZSBQYXlcIiksIHI7XG4gICAgaWYgKCFuLm1ldGFkYXRhLnByb2Nlc3Nvcl9hY2NvdW50X2lkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZ2F0ZXdheSBtZXJjaGFudCBJRCBmb3VuZCBpbiBwcm9jZXNzb3IgYWNjb3VudFwiKTtcbiAgICBjb25zdCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBsID0gYXdhaXQgTihzKSwgYyA9IGwubW9kZSA9PT0gXCJzZXR1cFwiLCB1ID0gYXdhaXQgUShzLCBsLnRva2VuLCBjLCB2b2lkIDApLCBkID0gYXN5bmMgKG0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFIuYWR5ZW5BcHBsZVBheS5ydW4oe1xuICAgICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0LFxuICAgICAgICAgIGN1c3RvbVBhcmFtczoge1xuICAgICAgICAgICAgLi4ubSxcbiAgICAgICAgICAgIGluaXRpYWxQcmV2aWV3OiB1XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDBcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChmKSB7XG4gICAgICAgIGNvKFwiQXBwbGUgUGF5IHBheW1lbnQgZXJyb3JcIiwgZiksIHQuZ2V0Lm9uQ2hlY2tvdXRFcnJvcihmPy5tZXNzYWdlID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IFUuRW51bS5hZHllbixcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGRcbiAgICB9O1xuICB9XG4pLCAkYyA9IFYoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICBjdXN0b21QYXJhbXM6IG4sXG4gICAgZm9ybUNhbGxiYWNrczogYVxuICB9KSA9PiB7XG4gICAgY29uc3QgaSA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBpbyksIHsgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogcywgaW5pdGlhbFByZXZpZXc6IGwgfSA9IG4sIGMgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHUgPSBhd2FpdCBOKGMpLCBkID0gdS5tb2RlID09PSBcInNldHVwXCIsIG0gPSBFcih7XG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IGwsXG4gICAgICBwcmVmaWxsOiB7XG4gICAgICAgIC4uLnVcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0TGFiZWw6IGk/Lm1ldGFkYXRhPy5wcm9jZXNzb3JfYWNjb3VudF9uYW1lXG4gICAgfSksIGYgPSBuZXcgQXBwbGVQYXlTZXNzaW9uKDMsIG0pLCB5ID0ge1xuICAgICAgc2Vzc2lvbjogZixcbiAgICAgIGNvbm5lY3Rpb246IGUuYW55Q2RlQ29ubmVjdGlvbixcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgICBwcm9jZXNzb3JBY2NvdW50OiBpLm1ldGFkYXRhLFxuICAgICAgcHJlZmlsbDogdSxcbiAgICAgIGlzU2V0dXBNb2RlOiBkLFxuICAgICAgYmFzZVVybDogZS5iYXNlVXJsLFxuICAgICAgZm9ybUNhbGxiYWNrczogYSxcbiAgICAgIGRlZmF1bHRGaWVsZFZhbHVlczogbj8uZGVmYXVsdEZpZWxkVmFsdWVzXG4gICAgfTtcbiAgICByZXR1cm4gdihcImFwcGxlX3BheV9mbG93X3N0YXJ0ZWRcIiwge1xuICAgICAgcHJvY2Vzc29yX25hbWU6IHQucHJvY2Vzc29yX25hbWUsXG4gICAgICBwcmVmaWxsOiBMdCh1LCBbXCJicmFuZFwiXSksXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzXG4gICAgfSksIG5ldyBQcm9taXNlKChfLCBnKSA9PiB7XG4gICAgICBjb25zdCB3ID0gKCkgPT4ge1xuICAgICAgICBKZShcIlBheW1lbnQgY2FuY2VsbGVkIGJ5IHVzZXJcIiksIGcobmV3IEVycm9yKFwiUGF5bWVudCBjYW5jZWxsZWQgYnkgdXNlclwiKSk7XG4gICAgICB9O1xuICAgICAgZi5vbnZhbGlkYXRlbWVyY2hhbnQgPSBhc3luYyAoaCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IFVjKGgsIHkpO1xuICAgICAgICB9IGNhdGNoIChiKSB7XG4gICAgICAgICAgZyhiKTtcbiAgICAgICAgfVxuICAgICAgfSwgZi5vbnBheW1lbnRtZXRob2RzZWxlY3RlZCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgaCA9IGF3YWl0IFEoYywgdS50b2tlbiwgZCwgdm9pZCAwKSwgYiA9IHtcbiAgICAgICAgICBuZXdUb3RhbDogcXQoe1xuICAgICAgICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogbi5vdmVycmlkZVBheW1lbnRSZXF1ZXN0LFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IGgsXG4gICAgICAgICAgICBkZWZhdWx0TGFiZWw6IGk/Lm1ldGFkYXRhPy5wcm9jZXNzb3JfYWNjb3VudF9uYW1lLFxuICAgICAgICAgICAgcHJlZmlsbDogdVxuICAgICAgICAgIH0pLnRvdGFsXG4gICAgICAgIH07XG4gICAgICAgIGYuY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGIpO1xuICAgICAgfSwgZi5vbnBheW1lbnRhdXRob3JpemVkID0gYXN5bmMgKGgpID0+IHtcbiAgICAgICAgdihcImFwcGxlX3BheV9wYXltZW50X2F1dGhvcml6ZWRcIik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYiA9IGF3YWl0IE9jKGgsIHkpO1xuICAgICAgICAgIF8oYik7XG4gICAgICAgIH0gY2F0Y2ggKGIpIHtcbiAgICAgICAgICBnKGIpO1xuICAgICAgICB9XG4gICAgICB9LCBmLm9uY2FuY2VsID0gdywgZi5iZWdpbigpO1xuICAgIH0pLmNhdGNoKChfKSA9PiB7XG4gICAgICB0aHJvdyBjbyhcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIF8pLCB2KFwiYXBwbGVfcGF5X3BheW1lbnRfZXJyb3JcIiwge1xuICAgICAgICBlcnJvcjogX1xuICAgICAgfSksIF87XG4gICAgfSk7XG4gIH1cbiksIHsgbG9nX186IGRlLCBlcnJfXzogTmUgfSA9IGsoXCJhZHllbi1nb29nbGUtcGF5XCIpLCBHYyA9IGNlKFxuICBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgICBjb25zdCByID0ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uYWR5ZW4sXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgbiA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBzbyk7XG4gICAgaWYgKCFuKVxuICAgICAgcmV0dXJuIHI7XG4gICAgZGUoXCJHb29nbGUgUGF5IENQTVwiLCBuKTtcbiAgICBjb25zdCBhID0gbi5tZXRhZGF0YTtcbiAgICBpZiAoIWEucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICByZXR1cm4gTmUoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpLCByO1xuICAgIGlmIChkZShcIkxvYWRpbmcgR29vZ2xlIFBheSBzY3JpcHRcIiksIGF3YWl0IGhyKCksICF3aW5kb3cuZ29vZ2xlPy5wYXltZW50cz8uYXBpKVxuICAgICAgcmV0dXJuIE5lKFwiR29vZ2xlIFBheSBTREsgbm90IGxvYWRlZCBwcm9wZXJseVwiKSwgcjtcbiAgICBpZiAoYXdhaXQgZ3IoZS5iYXNlVXJsKSA9PT0gXCJQUk9EVUNUSU9OXCIgJiYgIWEuZ29vZ2xlX3BheV9tZXJjaGFudF9pZClcbiAgICAgIHJldHVybiBOZShcIkdvb2dsZSBQYXkgbWVyY2hhbnQgSUQgaXMgcmVxdWlyZWQgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcIiksIHI7XG4gICAgZGUoXCJHb29nbGUgUGF5IFNESyBsb2FkZWRcIiwgd2luZG93Lmdvb2dsZS5wYXltZW50cyk7XG4gICAgY29uc3QgcyA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgbCA9IGF3YWl0IE4ocyksIGMgPSBsLm1vZGUgPT09IFwic2V0dXBcIiwgdSA9IGF3YWl0IFEocywgbC50b2tlbiwgYywgdm9pZCAwKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbSA9IFZlKHtcbiAgICAgICAgcHJlZmlsbDogbCxcbiAgICAgICAgZ2F0ZXdheTogXCJhZHllblwiLFxuICAgICAgICBnYXRld2F5TWVyY2hhbnRJZDogYS5wcm9jZXNzb3JfYWNjb3VudF9pZCxcbiAgICAgICAgbWVyY2hhbnROYW1lOiBhLnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICAgIG1lcmNoYW50SWQ6IGEuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgICAvLyBUaGlzIGlzIGZvciBpbml0aWFsIHBheW1lbnQgcmVxdWVzdCB0byBjaGVjayBhdmFpbGFiaWxpdHkuIEFjdHVhbCBgaW5pdGlhbFByZXZpZXdgIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSBVSSBpcyBzaG93blxuICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgfSksIGYgPSBhd2FpdCB6ZShlLmJhc2VVcmwsIG0pLCB7IHJlc3VsdDogeSB9ID0gYXdhaXQgZi5pc1JlYWR5VG9QYXkobSk7XG4gICAgICBpZiAoIXkpXG4gICAgICAgIHJldHVybiBkZShcIkdvb2dsZSBQYXkgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyB1c2VyXCIpLCByO1xuICAgIH0gY2F0Y2ggKG0pIHtcbiAgICAgIHJldHVybiBOZShcIkVycm9yIGNoZWNraW5nIEdvb2dsZSBQYXkgYXZhaWxhYmlsaXR5XCIsIG0pLCByO1xuICAgIH1cbiAgICBjb25zdCBkID0gYXN5bmMgKG0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFIuYWR5ZW5Hb29nbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogdCxcbiAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5tLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICBOZShcIkdvb2dsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBmKSwgdC5nZXQub25DaGVja291dEVycm9yKGY/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogVS5FbnVtLmFkeWVuLFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogZFxuICAgIH07XG4gIH1cbiksIHFjID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICBkZShcIlN0YXJ0aW5nIEdvb2dsZSBQYXkgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHNvKSwgeyBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzIH0gPSBhLCBsID0gaS5tZXRhZGF0YTtcbiAgICBpZiAoIWwucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpO1xuICAgIGNvbnN0IGMgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHUgPSBhd2FpdCBOKGMpLCBkID0gdS5tb2RlID09PSBcInNldHVwXCIsIG0gPSBhd2FpdCBRKGMsIHUudG9rZW4sIGQsIHZvaWQgMCksIGYgPSBWZSh7XG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgZ2F0ZXdheTogXCJhZHllblwiLFxuICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IGwucHJvY2Vzc29yX2FjY291bnRfaWQsXG4gICAgICBtZXJjaGFudE5hbWU6IGwucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgIG1lcmNoYW50SWQ6IGwuZ29vZ2xlX3BheV9tZXJjaGFudF9pZCA/PyBcIlwiLFxuICAgICAgaW5pdGlhbFByZXZpZXc6IG0sXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzXG4gICAgfSk7XG4gICAgdihcImdvb2dsZV9wYXlfZmxvd19zdGFydGVkXCIsIHtcbiAgICAgIHByb2Nlc3Nvcl9uYW1lOiBpLnByb2Nlc3Nvcl9uYW1lLFxuICAgICAgcHJlZmlsbDogTHQodSwgW1wiYnJhbmRcIl0pLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogc1xuICAgIH0pO1xuICAgIGNvbnN0IHkgPSBhd2FpdCB6ZShlLmJhc2VVcmwsIGYpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBfID0gYXdhaXQgeS5sb2FkUGF5bWVudERhdGEoZik7XG4gICAgICBkZShcIkdvb2dsZSBQYXkgUGF5bWVudCBkYXRhXCIsIF8pO1xuICAgICAgY29uc3QgZyA9IHdyKHIsIF8pLCB3ID0gRyhcbiAgICAgICAgZyxcbiAgICAgICAgbi5nZXQub25WYWxpZGF0aW9uRXJyb3IsXG4gICAgICAgIGE/LmRlZmF1bHRGaWVsZFZhbHVlc1xuICAgICAgKTtcbiAgICAgIGlmICh2KFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgICAgLi4ud1xuICAgICAgfSksICFfLnBheW1lbnRNZXRob2REYXRhPy50b2tlbml6YXRpb25EYXRhPy50b2tlbilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gcGF5bWVudCB0b2tlbiByZWNlaXZlZCBmcm9tIEdvb2dsZSBQYXlcIik7XG4gICAgICBjb25zdCBiID0gYXdhaXQgWihjLCB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQucHJvdmlkZXIsXG4gICAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB0LFxuICAgICAgICAuLi5xKHcsIHUuY2hlY2tvdXRfc2V0dGluZ3MpXG4gICAgICB9KSwgUyA9IEJlKGIpO1xuICAgICAgZGUoXCJTdGFydCBmbG93IG5leHQgYWN0aW9uc1wiLCBTKTtcbiAgICAgIGxldCBDID0gYXdhaXQgeChjLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogdS50b2tlbixcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgICBicm93c2VyX2luZm86IFJvKCksXG4gICAgICAgICAgbW9iaWxlX3dhbGxldF9wYXltZW50X2RhdGE6IHtcbiAgICAgICAgICAgIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuOiBfLnBheW1lbnRNZXRob2REYXRhPy50b2tlbml6YXRpb25EYXRhPy50b2tlblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkZShcIlsxc3RdIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIEMpO1xuICAgICAgbGV0IEwgPSBDLnBheW1lbnRfbWV0aG9kcz8uWzBdPy5pZDtcbiAgICAgIGNvbnN0IEEgPSBDLnJlcXVpcmVkX3VzZXJfYWN0aW9ucz8uZmluZCgoJCkgPT4gJC50eXBlID09PSBcImFkeWVuLTNkc1wiKTtcbiAgICAgIGlmIChBICYmIEEucmVkaXJlY3RfdXJsKSB7XG4gICAgICAgIGRlKFwiQWR5ZW4gM0RTIFJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIiwgQSk7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzOiAkIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgICAgdXJsOiBBLnJlZGlyZWN0X3VybCxcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkZShg4pWwIEFkeWVuIDNEUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7JH1dYCksICQgPT09IEYuQ0FOQ0VMTEVEKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gY2FuY2VsbGVkXCIpO1xuICAgICAgICBpZiAoJCA9PT0gRi5GQUlMVVJFKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICAgICAgfVxuICAgICAgaWYgKEEgJiYgIUwgJiYgKEMgPSBhd2FpdCB4KGMsIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiB1LnRva2VuLFxuICAgICAgICB0aGVpcl9wbV9pZDogQS50aGVpcl9wbV9pZCxcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlclxuICAgICAgICB9XG4gICAgICB9KSwgZGUoXCJbMm5kXSBDb25maXJtIHBheW1lbnQgZmxvdyByZXNwb25zZSBhZnRlciAzRFNcIiwgQyksIEwgPSBDLnBheW1lbnRfbWV0aG9kcz8uWzBdPy5pZCksICFMKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBwYXltZW50IG1ldGhvZCBJRCBmb3VuZFwiKTtcbiAgICAgIHJldHVybiByZSh7XG4gICAgICAgIGxvZ1ByZWZpeDogXCJhZHllbi1nb29nbGVwYXlcIixcbiAgICAgICAgYW55Q2RlQ29ubmVjdGlvbjogYyxcbiAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IHcsXG4gICAgICAgIGNvbmZpcm1SZXN1bHQ6IEMsXG4gICAgICAgIHVzZVBheUZpcnN0RmxvdzogITFcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgIHRocm93IE5lKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIF8pLCB2KFwiZ29vZ2xlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IF9cbiAgICAgIH0pLCBuZXcgRXJyb3IoXz8ubWVzc2FnZSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgfVxuICB9XG4pLCB7IGxvZ19fOiBZZSwgZXJyX186IFZjIH0gPSBrKFwiYXd4LWFjaFwiKSwgemMgPSBWKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogbixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIGNvbnN0IGkgPSBHKHIsIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKSwgcyA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgbCA9IGF3YWl0IE4ocyksIGMgPSBhLnZlcmlmaWNhdGlvbk1ldGhvZCA/PyBcInBsYWlkXCI7XG4gICAgbGV0IHUgPSBudWxsO1xuICAgIGlmIChjID09PSBcIm1pY3JvX2RlcG9zaXRcIikge1xuICAgICAgWWUoXCJNaWNybyBkZXBvc2l0IHZlcmlmaWNhdGlvbiBzZWxlY3RlZCwgc2hvd2luZyBmb3JtLi4uXCIpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdSA9IGF3YWl0IEd0KFwiYWNoX2RpcmVjdF9kZWJpdFwiLCB7XG4gICAgICAgICAgd2lkdGg6IFwiNDUwcHhcIixcbiAgICAgICAgICBoZWlnaHQ6IFwiNDAwcHhcIixcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmxcbiAgICAgICAgfSksIFllKFwiTWljcm8gZGVwb3NpdCBkYXRhIGNvbGxlY3RlZFwiKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aHJvdyBZZShcIk1pY3JvIGRlcG9zaXQgZm9ybSBjYW5jZWxsZWRcIiksIG5ldyBFcnJvcihcIk1pY3JvIGRlcG9zaXQgZm9ybSBjYW5jZWxsZWRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGQgPSBhd2FpdCBaKHMsIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdCxcbiAgICAgIC4uLnEoaSwgbC5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICBjdXN0b21lcl9sYW5ndWFnZTogaWUoKVxuICAgIH0pLCBmID0gQmUoZCk/LmNvbnNlbnRfaWQsIF8gPSAoYXdhaXQgeChzLCB7XG4gICAgICBzZWN1cmVfdG9rZW46IGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgYWlyd2FsbGV4X2NvbnNlbnRfaWQ6IGYsXG4gICAgICAgIHZlcmlmaWNhdGlvbl9tZXRob2Q6IGMsXG4gICAgICAgIGRpcmVjdF9kZWJpdF9kYXRhOiB7XG4gICAgICAgICAgdHlwZTogXCJhY2hfZGlyZWN0X2RlYml0XCIsXG4gICAgICAgICAgYWNoX2RpcmVjdF9kZWJpdDoge1xuICAgICAgICAgICAgLy9wbGFpZCB2ZXJpZmljYXRpb24gcmVxdWlyZWQgZmllbGRzXG4gICAgICAgICAgICBidXNpbmVzc19hY2NvdW50OiBhLmlzQnVzaW5lc3NBY2NvdW50ID8/ICExLFxuICAgICAgICAgICAgb3duZXJfbmFtZToganQoaVtwLkZJUlNUX05BTUVdLCBpW3AuTEFTVF9OQU1FXSksXG4gICAgICAgICAgICBvd25lcl9lbWFpbDogaVtwLkVNQUlMXSxcbiAgICAgICAgICAgIC8vQUNIIG1pY3JvIGRlcG9zaXQgdmVyaWZpY2F0aW9uIHJlcXVpcmVkIGZpZWxkc1xuICAgICAgICAgICAgYWNjb3VudF9udW1iZXI6IHU/LmFjY291bnRfbnVtYmVyLFxuICAgICAgICAgICAgYWJhX3JvdXRpbmdfbnVtYmVyOiB1Py5hYmFfcm91dGluZ19udW1iZXJcbiAgICAgICAgICAgIC8vIG1hbmRhdGVfdmVyc2lvbjogJzEuMCcsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpLnJlcXVpcmVkX3VzZXJfYWN0aW9ucz8uZmluZChcbiAgICAgICh3KSA9PiB3LnR5cGUgPT09IFwiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiXG4gICAgKT8ucmVkaXJlY3RfdXJsO1xuICAgIGlmIChfKSB7XG4gICAgICBZZShcIlBsYWlkIHZlcmlmaWNhdGlvbiBSZXF1aXJlZCwgc3RhcnRpbmcgdmVyaWZpY2F0aW9uLi4uXCIpO1xuICAgICAgY29uc3QgeyBzdGF0dXM6IHcgfSA9IGF3YWl0IGxlKHtcbiAgICAgICAgdXJsOiBfLFxuICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmwsXG4gICAgICAgIGZyYW1lV2lkdGg6IFwiNTAwcHhcIixcbiAgICAgICAgZnJhbWVIZWlnaHQ6IFwiNzAwcHhcIixcbiAgICAgICAgZnJhbWVUaXRsZTogXCJBQ0ggdmVyaWZpY2F0aW9uXCJcbiAgICAgIH0pO1xuICAgICAgaWYgKFllKGDilbAgUGxhaWQgdmVyaWZpY2F0aW9uIGNvbXBsZXRlZCBbU3RhdHVzOiAke3d9XWApLCB3ID09PSBGLkNBTkNFTExFRClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGxhaWQgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgIGlmICh3ID09PSBGLkZBSUxVUkUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBsYWlkIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gICAgfVxuICAgIGNvbnN0IGcgPSBhd2FpdCB4KHMsIHtcbiAgICAgIHNlY3VyZV90b2tlbjogbC50b2tlbixcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogZlxuICAgICAgfVxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwiYXd4LWFjaFwiLFxuICAgICAgICBhbnlDZGVDb25uZWN0aW9uOiBzLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogaSxcbiAgICAgICAgY29uZmlybVJlc3VsdDogZyxcbiAgICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAodykge1xuICAgICAgdGhyb3cgVmMoXCJBQ0ggcGF5bWVudCBlcnJvclwiLCB3KSwgdihcImNoZWNrb3V0X2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IHdcbiAgICAgIH0pLCBuZXcgRXJyb3Iodz8ubWVzc2FnZSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgfVxuICB9XG4pLCB7IGxvZ19fOiB3dCB9ID0gayhcImF3eC1hcHBsZS1wYXlcIik7XG5hc3luYyBmdW5jdGlvbiBCYyhlLCB0KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYSA9IChhd2FpdCBVdCh0LmNvbm5lY3Rpb24sIHtcbiAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIHByb2Nlc3Nvcl9zcGVjaWZpY19tZXRhZGF0YToge1xuICAgICAgICBhaXJ3YWxsZXhfcGF5bWVudF9zZXNzaW9uOiB7XG4gICAgICAgICAgdmFsaWRhdGlvbl91cmw6IGUudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICBpbml0aWF0aXZlX2NvbnRleHQ6IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgICAgICB0aGVpcl9hY2NvdW50X2lkOiB0LnByb2Nlc3NvckFjY291bnQucHJvY2Vzc29yX2FjY291bnRfaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKS5uZXh0X2FjdGlvbl9tZXRhZGF0YT8uYXBwbGVfcGF5X3Nlc3Npb247XG4gICAgaWYgKCFhKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc2Vzc2lvbiBkYXRhIHJlY2VpdmVkIGZyb20gcGF5bWVudCBmbG93XCIpO1xuICAgIHQuc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihhKSwgdihcImFwcGxlX3BheV9jb21wbGV0ZV9tZXJjaGFudF92YWxpZGF0aW9uXCIsIHtcbiAgICAgIC4uLmFcbiAgICB9KTtcbiAgfSBjYXRjaCAocikge1xuICAgIHRocm93IHQuc2Vzc2lvbi5hYm9ydCgpLCByO1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBIYyhlLCB0KSB7XG4gIGlmICghZS5yZWRpcmVjdF91cmwpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gcmVkaXJlY3QgVVJMIGZvdW5kXCIpO1xuICB3dChcIjNEUyBSZXF1aXJlZCwgc3RhcnRpbmcgdmVyaWZpY2F0aW9uLi4uXCIsIGUpO1xuICBjb25zdCB7IHN0YXR1czogciB9ID0gYXdhaXQgbGUoe1xuICAgIHVybDogZS5yZWRpcmVjdF91cmwsXG4gICAgYmFzZVVybDogdC5iYXNlVXJsXG4gIH0pO1xuICBpZiAod3QoYOKVsCAzRFMgdmVyaWZpY2F0aW9uIGNvbXBsZXRlZCBbU3RhdHVzOiAke3J9XWApLCByID09PSBGLkNBTkNFTExFRClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKHIgPT09IEYuRkFJTFVSRSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgY29uc3QgbiA9IGF3YWl0IHgodC5jb25uZWN0aW9uLCB7XG4gICAgc2VjdXJlX3Rva2VuOiB0LnByZWZpbGwudG9rZW4sXG4gICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICB0aGVpcl9wbV9pZDogZS50aGVpcl9wbV9pZCxcbiAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBlLmNvbnNlbnRfaWQsXG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZC5wcm92aWRlclxuICAgIH1cbiAgfSk7XG4gIHJldHVybiB3dChcIlsybmRdIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIG4pLCBuO1xufVxuYXN5bmMgZnVuY3Rpb24gS2MoZSwgdCkge1xuICB0cnkge1xuICAgIGNvbnN0IHIgPSBlLnBheW1lbnQsIG4gPSBQcih0Lm5vbkNkZUZvcm1JbnB1dHMsIHIpLCBhID0gRyhcbiAgICAgIG4sXG4gICAgICB0LmZvcm1DYWxsYmFja3MuZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgdC5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICApO1xuICAgIHYoXCJiaWxsaW5nX2RldGFpbHNfcmVjZWl2ZWRcIiwge1xuICAgICAgLi4uYVxuICAgIH0pO1xuICAgIGNvbnN0IGwgPSAoYXdhaXQgWih0LmNvbm5lY3Rpb24sIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kLnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kLFxuICAgICAgLi4ucShhLCB0LnByZWZpbGwuY2hlY2tvdXRfc2V0dGluZ3MpXG4gICAgfSkpLnJlcXVpcmVkX3VzZXJfYWN0aW9uc1swXS5jb25zZW50X2lkO1xuICAgIGlmICghbClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbnNlbnQgSUQgcmVjZWl2ZWQgZnJvbSBwYXltZW50IGZsb3dcIik7XG4gICAgbGV0IGMgPSBhd2FpdCB4KHQuY29ubmVjdGlvbiwge1xuICAgICAgc2VjdXJlX3Rva2VuOiB0LnByZWZpbGwudG9rZW4sXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBsLFxuICAgICAgICBhaXJ3YWxsZXhfcGF5bWVudF9tZXRob2RfZGF0YToge1xuICAgICAgICAgIHR5cGU6IFwiYXBwbGVwYXlcIixcbiAgICAgICAgICBhcHBsZXBheToge1xuICAgICAgICAgICAgcGF5bWVudF9kYXRhX3R5cGU6IFwiZW5jcnlwdGVkX3BheW1lbnRfdG9rZW5cIixcbiAgICAgICAgICAgIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuOiBKU09OLnN0cmluZ2lmeShyLnRva2VuKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHd0KFwiWzFzdF0gQ29uZmlybSBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgYyk7XG4gICAgbGV0IHUgPSBjLnBheW1lbnRfbWV0aG9kcz8uWzBdPy5pZDtcbiAgICBjb25zdCBkID0gYy5yZXF1aXJlZF91c2VyX2FjdGlvbnM/LmZpbmQoXG4gICAgICAoZikgPT4gZi50eXBlID09PSBcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIlxuICAgICk7XG4gICAgaWYgKGQ/LnJlZGlyZWN0X3VybCAmJiBkLmNvbnNlbnRfaWQgJiYgZC50aGVpcl9wbV9pZCAmJiAoYyA9IGF3YWl0IEhjKGQsIHQpLCB1ID0gYy5wYXltZW50X21ldGhvZHM/LlswXT8uaWQpLCAhdSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIFBNIElEIGZvdW5kXCIpO1xuICAgIGNvbnN0IG0gPSB7XG4gICAgICBzdGF0dXM6IEFwcGxlUGF5U2Vzc2lvbi5TVEFUVVNfU1VDQ0VTU1xuICAgIH07XG4gICAgcmV0dXJuIHQuc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQobSksIHJlKHtcbiAgICAgIGxvZ1ByZWZpeDogXCJhd3gtYXBwbGVwYXlcIixcbiAgICAgIGFueUNkZUNvbm5lY3Rpb246IHQuY29ubmVjdGlvbixcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdC5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IGEsXG4gICAgICBjb25maXJtUmVzdWx0OiBjLFxuICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgIH0pO1xuICB9IGNhdGNoIChyKSB7XG4gICAgY29uc3QgbiA9IHtcbiAgICAgIHN0YXR1czogQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFXG4gICAgfTtcbiAgICB0aHJvdyB0LnNlc3Npb24uY29tcGxldGVQYXltZW50KG4pLCByO1xuICB9XG59XG5jb25zdCB7IGxvZ19fOiBaZSwgZXJyX186IGxvIH0gPSBrKFwiYXd4LWFwcGxlLXBheVwiKSwgWWMgPSBjZShcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgZm9ybUNhbGxiYWNrczogdCB9KSA9PiB7XG4gICAgY29uc3QgciA9IHtcbiAgICAgIHByb2Nlc3NvcjogVS5FbnVtLmFpcndhbGxleCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMSxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH1cbiAgICB9LCBuID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHRvKTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm4gcjtcbiAgICBpZiAoWmUoXCJMb2FkaW5nIEFwcGxlIFBheSBzY3JpcHRcIiksIGF3YWl0IGJyKCksICF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uIHx8ICFBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gWmUoXCJBcHBsZSBQYXkgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS9icm93c2VyXCIpLCByO1xuICAgIGlmIChaZShcIkFwcGxlIFBheSBMb2FkZWRcIiksICFhd2FpdCBBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gWmUoXCJObyBhY3RpdmUgY2FyZHMgYXZhaWxhYmxlIGZvciBBcHBsZSBQYXlcIiksIHI7XG4gICAgaWYgKCFuLm1ldGFkYXRhLnByb2Nlc3Nvcl9hY2NvdW50X2lkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gZ2F0ZXdheSBtZXJjaGFudCBJRCBmb3VuZCBpbiBwcm9jZXNzb3IgYWNjb3VudFwiKTtcbiAgICBjb25zdCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBsID0gYXdhaXQgTihzKSwgYyA9IGwubW9kZSA9PT0gXCJzZXR1cFwiLCB1ID0gYXdhaXQgUShzLCBsLnRva2VuLCBjLCB2b2lkIDApLCBkID0gYXN5bmMgKG0pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IFIuYWlyd2FsbGV4QXBwbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogdCxcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLm0sXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZikge1xuICAgICAgICBsbyhcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIGYpLCB0LmdldC5vbkNoZWNrb3V0RXJyb3IoZj8ubWVzc2FnZSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uYWlyd2FsbGV4LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogZFxuICAgIH07XG4gIH1cbiksIFdjID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgIGN1c3RvbVBhcmFtczogbixcbiAgICBmb3JtQ2FsbGJhY2tzOiBhXG4gIH0pID0+IHtcbiAgICBjb25zdCBpID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHRvKSwgeyBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzIH0gPSBuLCBsID0gZS5hbnlDZGVDb25uZWN0aW9uLCBjID0gYXdhaXQgTihsKSwgdSA9IGMubW9kZSA9PT0gXCJzZXR1cFwiLCBkID0gRXIoe1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogcyxcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBuLmluaXRpYWxQcmV2aWV3LFxuICAgICAgcHJlZmlsbDoge1xuICAgICAgICAuLi5jXG4gICAgICB9LFxuICAgICAgZGVmYXVsdExhYmVsOiBpPy5tZXRhZGF0YT8ucHJvY2Vzc29yX2FjY291bnRfbmFtZVxuICAgIH0pLCBtID0gbmV3IEFwcGxlUGF5U2Vzc2lvbigzLCBkKSwgZiA9IHtcbiAgICAgIHNlc3Npb246IG0sXG4gICAgICBjb25uZWN0aW9uOiBlLmFueUNkZUNvbm5lY3Rpb24sXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgICAgcHJvY2Vzc29yQWNjb3VudDogaS5tZXRhZGF0YSxcbiAgICAgIHByZWZpbGw6IGMsXG4gICAgICBpc1NldHVwTW9kZTogdSxcbiAgICAgIGJhc2VVcmw6IGUuYmFzZVVybCxcbiAgICAgIGZvcm1DYWxsYmFja3M6IGEsXG4gICAgICBkZWZhdWx0RmllbGRWYWx1ZXM6IG4/LmRlZmF1bHRGaWVsZFZhbHVlc1xuICAgIH07XG4gICAgcmV0dXJuIHYoXCJhcHBsZV9wYXlfZmxvd19zdGFydGVkXCIsIHtcbiAgICAgIHByb2Nlc3Nvcl9uYW1lOiB0LnByb2Nlc3Nvcl9uYW1lLFxuICAgICAgcHJlZmlsbDogTHQoYywgW1wiYnJhbmRcIl0pLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogc1xuICAgIH0pLCBuZXcgUHJvbWlzZSgoeSwgXykgPT4ge1xuICAgICAgY29uc3QgZyA9ICgpID0+IHtcbiAgICAgICAgWmUoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpLCBfKG5ldyBFcnJvcihcIlBheW1lbnQgY2FuY2VsbGVkIGJ5IHVzZXJcIikpO1xuICAgICAgfTtcbiAgICAgIG0ub25jYW5jZWwgPSBnLCBtLm9udmFsaWRhdGVtZXJjaGFudCA9IGFzeW5jICh3KSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgQmModywgZik7XG4gICAgICAgIH0gY2F0Y2ggKGgpIHtcbiAgICAgICAgICBfKGgpO1xuICAgICAgICB9XG4gICAgICB9LCBtLm9ucGF5bWVudG1ldGhvZHNlbGVjdGVkID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB3ID0gYXdhaXQgUShsLCBjLnRva2VuLCB1LCB2b2lkIDApLCBoID0ge1xuICAgICAgICAgIG5ld1RvdGFsOiBxdCh7XG4gICAgICAgICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBuLm92ZXJyaWRlUGF5bWVudFJlcXVlc3QsXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdyxcbiAgICAgICAgICAgIGRlZmF1bHRMYWJlbDogaT8ubWV0YWRhdGE/LnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICAgICAgICBwcmVmaWxsOiBjXG4gICAgICAgICAgfSkudG90YWxcbiAgICAgICAgfTtcbiAgICAgICAgbS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oaCk7XG4gICAgICB9LCBtLm9ucGF5bWVudGF1dGhvcml6ZWQgPSBhc3luYyAodykgPT4ge1xuICAgICAgICB2KFwiYXBwbGVfcGF5X3BheW1lbnRfYXV0aG9yaXplZFwiKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBoID0gYXdhaXQgS2ModywgZik7XG4gICAgICAgICAgeShoKTtcbiAgICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICAgIF8oaCk7XG4gICAgICAgIH1cbiAgICAgIH0sIG0uYmVnaW4oKTtcbiAgICB9KS5jYXRjaCgoeSkgPT4ge1xuICAgICAgdGhyb3cgbG8oXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCB5KSwgdihcImFwcGxlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IHlcbiAgICAgIH0pLCB5O1xuICAgIH0pO1xuICB9XG4pLCB7IGxvZ19fOiBzZSwgZXJyX186IExlIH0gPSBrKFwiYXd4LWdvb2dsZS1wYXlcIiksIEpjID0gY2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICAgIGNvbnN0IHIgPSB7XG4gICAgICBwcm9jZXNzb3I6IFUuRW51bS5haXJ3YWxsZXgsXG4gICAgICBpc0F2YWlsYWJsZTogITEsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgICB9XG4gICAgfSwgbiA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBybyk7XG4gICAgaWYgKCFuKVxuICAgICAgcmV0dXJuIHI7XG4gICAgc2UoXCJHb29nbGUgUGF5IENQTVwiLCBuKTtcbiAgICBjb25zdCBhID0gbi5tZXRhZGF0YTtcbiAgICBpZiAoIWEucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICByZXR1cm4gTGUoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpLCByO1xuICAgIGlmIChzZShcIkxvYWRpbmcgR29vZ2xlIFBheSBzY3JpcHRcIiksIGF3YWl0IGhyKCksICF3aW5kb3cuZ29vZ2xlPy5wYXltZW50cz8uYXBpKVxuICAgICAgcmV0dXJuIExlKFwiR29vZ2xlIFBheSBTREsgbm90IGxvYWRlZCBwcm9wZXJseVwiKSwgcjtcbiAgICBpZiAoYXdhaXQgZ3IoZS5iYXNlVXJsKSA9PT0gXCJQUk9EVUNUSU9OXCIgJiYgIWEuZ29vZ2xlX3BheV9tZXJjaGFudF9pZClcbiAgICAgIHJldHVybiBMZShcIkdvb2dsZSBQYXkgbWVyY2hhbnQgSUQgaXMgcmVxdWlyZWQgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRcIiksIHI7XG4gICAgc2UoXCJHb29nbGUgUGF5IFNESyBsb2FkZWRcIiwgd2luZG93Lmdvb2dsZS5wYXltZW50cyk7XG4gICAgY29uc3QgcyA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgbCA9IGF3YWl0IE4ocyksIGMgPSBsLm1vZGUgPT09IFwic2V0dXBcIiwgdSA9IGF3YWl0IFEocywgbC50b2tlbiwgYywgdm9pZCAwKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbSA9IFZlKHtcbiAgICAgICAgcHJlZmlsbDogbCxcbiAgICAgICAgZ2F0ZXdheTogXCJhaXJ3YWxsZXhcIixcbiAgICAgICAgZ2F0ZXdheU1lcmNoYW50SWQ6IGEucHJvY2Vzc29yX2FjY291bnRfaWQsXG4gICAgICAgIG1lcmNoYW50TmFtZTogYS5wcm9jZXNzb3JfYWNjb3VudF9uYW1lLFxuICAgICAgICBtZXJjaGFudElkOiBhLmdvb2dsZV9wYXlfbWVyY2hhbnRfaWQgPz8gXCJcIixcbiAgICAgICAgLy8gVGhpcyBpcyBmb3IgaW5pdGlhbCBwYXltZW50IHJlcXVlc3QgdG8gY2hlY2sgYXZhaWxhYmlsaXR5LiBBY3R1YWwgYGluaXRpYWxQcmV2aWV3YCB3aWxsIGJlIHVzZWQgd2hlbiB0aGUgVUkgaXMgc2hvd25cbiAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgIH0pLCBmID0gYXdhaXQgemUoZS5iYXNlVXJsLCBtKSwgeyByZXN1bHQ6IHkgfSA9IGF3YWl0IGYuaXNSZWFkeVRvUGF5KG0pO1xuICAgICAgaWYgKCF5KVxuICAgICAgICByZXR1cm4gc2UoXCJHb29nbGUgUGF5IGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgdXNlclwiKSwgcjtcbiAgICB9IGNhdGNoIChtKSB7XG4gICAgICByZXR1cm4gTGUoXCJFcnJvciBjaGVja2luZyBHb29nbGUgUGF5IGF2YWlsYWJpbGl0eVwiLCBtKSwgcjtcbiAgICB9XG4gICAgY29uc3QgZCA9IGFzeW5jIChtKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBSLmFpcndhbGxleEdvb2dsZVBheS5ydW4oe1xuICAgICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBuLFxuICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0LFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMCxcbiAgICAgICAgICBjdXN0b21QYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLm0sXG4gICAgICAgICAgICBpbml0aWFsUHJldmlldzogdVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChmKSB7XG4gICAgICAgIExlKFwiR29vZ2xlIFBheSBwYXltZW50IGVycm9yXCIsIGYpLCB0LmdldC5vbkNoZWNrb3V0RXJyb3IoZj8ubWVzc2FnZSA/PyBcIlVua25vd24gZXJyb3JcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uYWlyd2FsbGV4LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogZFxuICAgIH07XG4gIH1cbiksIFpjID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICBzZShcIlN0YXJ0aW5nIEdvb2dsZSBQYXkgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHJvKSwgeyBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzIH0gPSBhLCBsID0gaS5tZXRhZGF0YTtcbiAgICBpZiAoIWwucHJvY2Vzc29yX2FjY291bnRfaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBnYXRld2F5IG1lcmNoYW50IElEIGZvdW5kIGluIHByb2Nlc3NvciBhY2NvdW50XCIpO1xuICAgIGNvbnN0IGMgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHUgPSBhd2FpdCBOKGMpLCBkID0gdS5tb2RlID09PSBcInNldHVwXCIsIG0gPSBhd2FpdCBRKGMsIHUudG9rZW4sIGQsIHZvaWQgMCksIGYgPSBWZSh7XG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgZ2F0ZXdheTogXCJhaXJ3YWxsZXhcIixcbiAgICAgIGdhdGV3YXlNZXJjaGFudElkOiBsLnByb2Nlc3Nvcl9hY2NvdW50X2lkLFxuICAgICAgbWVyY2hhbnROYW1lOiBsLnByb2Nlc3Nvcl9hY2NvdW50X25hbWUsXG4gICAgICBtZXJjaGFudElkOiBsLmdvb2dsZV9wYXlfbWVyY2hhbnRfaWQgPz8gXCJcIixcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBtLFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogc1xuICAgIH0pO1xuICAgIHYoXCJnb29nbGVfcGF5X2Zsb3dfc3RhcnRlZFwiLCB7XG4gICAgICBwcm9jZXNzb3JfbmFtZTogaS5wcm9jZXNzb3JfbmFtZSxcbiAgICAgIHByZWZpbGw6IEx0KHUsIFtcImJyYW5kXCJdKSxcbiAgICAgIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IHNcbiAgICB9KTtcbiAgICBjb25zdCB5ID0gYXdhaXQgemUoZS5iYXNlVXJsLCBmKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgXyA9IGF3YWl0IHkubG9hZFBheW1lbnREYXRhKGYpO1xuICAgICAgc2UoXCJHb29nbGUgUGF5IFBheW1lbnQgZGF0YVwiLCBfKTtcbiAgICAgIGNvbnN0IGcgPSB3cihyLCBfKSwgdyA9IEcoXG4gICAgICAgIGcsXG4gICAgICAgIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgICBhPy5kZWZhdWx0RmllbGRWYWx1ZXNcbiAgICAgICk7XG4gICAgICBzZShcIl9fX1wiLCB3KSwgdihcImJpbGxpbmdfZGV0YWlsc19yZWNlaXZlZFwiLCB7XG4gICAgICAgIC4uLndcbiAgICAgIH0pO1xuICAgICAgY29uc3QgaCA9IF8ucGF5bWVudE1ldGhvZERhdGE/LnRva2VuaXphdGlvbkRhdGE/LnRva2VuO1xuICAgICAgaWYgKCFoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBwYXltZW50IHRva2VuIHJlY2VpdmVkIGZyb20gR29vZ2xlIFBheVwiKTtcbiAgICAgIGNvbnN0IGIgPSBhd2FpdCBaKGMsIHtcbiAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICAgIC4uLnEodywgdS5jaGVja291dF9zZXR0aW5ncylcbiAgICAgIH0pLCBTID0gQmUoYik7XG4gICAgICBzZShcIlN0YXJ0IGZsb3cgbmV4dCBhY3Rpb25zXCIsIFMpO1xuICAgICAgbGV0IEMgPSBhd2FpdCB4KGMsIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiB1LnRva2VuLFxuICAgICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgICAgIC8vIEdvb2dsZVBheSdzIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuIHByb3ZpZGVkIHRvIHZlcmlmeSB0aGUgY29uc2VudCBmaXJzdFxuICAgICAgICAgIGFpcndhbGxleF9jb25zZW50X2lkOiBTPy5jb25zZW50X2lkLFxuICAgICAgICAgIGFpcndhbGxleF9wYXltZW50X21ldGhvZF9kYXRhOiB7XG4gICAgICAgICAgICB0eXBlOiBcImdvb2dsZXBheVwiLFxuICAgICAgICAgICAgZ29vZ2xlcGF5OiB7XG4gICAgICAgICAgICAgIHBheW1lbnRfZGF0YV90eXBlOiBcImVuY3J5cHRlZF9wYXltZW50X3Rva2VuXCIsXG4gICAgICAgICAgICAgIGVuY3J5cHRlZF9wYXltZW50X3Rva2VuOiBoXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHNlKFwiWzFzdF0gQ29uZmlybSBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgQyk7XG4gICAgICBsZXQgTCA9IEMucGF5bWVudF9tZXRob2RzPy5bMF0/LmlkO1xuICAgICAgY29uc3QgQSA9IEMucmVxdWlyZWRfdXNlcl9hY3Rpb25zPy5maW5kKFxuICAgICAgICAoJCkgPT4gJC50eXBlID09PSBcImFpcndhbGxleF9wYXltZW50X2NvbnNlbnRcIlxuICAgICAgKTtcbiAgICAgIGlmIChBICYmIEEucmVkaXJlY3RfdXJsKSB7XG4gICAgICAgIHNlKFwiM0RTIFJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIiwgQSk7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzOiAkIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgICAgdXJsOiBBLnJlZGlyZWN0X3VybCxcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChzZShg4pWwIDNEUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7JH1dYCksICQgPT09IEYuQ0FOQ0VMTEVEKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gY2FuY2VsbGVkXCIpO1xuICAgICAgICBpZiAoJCA9PT0gRi5GQUlMVVJFKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICAgICAgfVxuICAgICAgaWYgKEEgJiYgIUwgJiYgKEMgPSBhd2FpdCB4KGMsIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiB1LnRva2VuLFxuICAgICAgICB0aGVpcl9wbV9pZDogQS50aGVpcl9wbV9pZCxcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5wcm92aWRlcixcbiAgICAgICAgICBhaXJ3YWxsZXhfY29uc2VudF9pZDogQS5jb25zZW50X2lkXG4gICAgICAgIH1cbiAgICAgIH0pLCBzZShcIlsybmRdIENvbmZpcm0gcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIEMpLCBMID0gQy5wYXltZW50X21ldGhvZHM/LlswXT8uaWQpLCAhTClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gUE0gSUQgZm91bmRcIik7XG4gICAgICByZXR1cm4gcmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwiYXd4LWdvb2dsZXBheVwiLFxuICAgICAgICBhbnlDZGVDb25uZWN0aW9uOiBjLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogdyxcbiAgICAgICAgY29uZmlybVJlc3VsdDogQyxcbiAgICAgICAgdXNlUGF5Rmlyc3RGbG93OiAhMVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoXykge1xuICAgICAgdGhyb3cgTGUoXCJHb29nbGUgUGF5IHBheW1lbnQgZXJyb3JcIiwgXyksIHYoXCJnb29nbGVfcGF5X3BheW1lbnRfZXJyb3JcIiwge1xuICAgICAgICBlcnJvcjogX1xuICAgICAgfSksIG5ldyBFcnJvcihfPy5tZXNzYWdlID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICB9XG4gIH1cbiksIHsgbG9nX186IF90LCBlcnJfXzogUWMgfSA9IGsoXCJrbGFybmFcIiksIHVvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImtsYXJuYVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe30pLm51bGxpc2goKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYWlyd2FsbGV4XCIpXG59KSwgWGMgPSBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgY29uc3QgciA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCB1byk7XG4gIGlmICghcilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJLbGFybmEgQ1BNIG5vdCBmb3VuZCBpbiBhdmFpbGFibGUgcGF5bWVudCBtZXRob2RzXCIpO1xuICByZXR1cm4ge1xuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgc3RhcnRGbG93OiAoYSkgPT4gUi5haXJ3YWxsZXhLbGFybmEucnVuKHtcbiAgICAgIGNvbnRleHQ6IGUsXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICBmb3JtQ2FsbGJhY2tzOiB0LFxuICAgICAgaW5pdFJlc3VsdDogdm9pZCAwLFxuICAgICAgY3VzdG9tUGFyYW1zOiBhID8/IHt9XG4gICAgfSlcbiAgfTtcbn0sIGVsID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHQsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgX3QoXCJSdW5uaW5nIEtsYXJuYSBmbG93Li4uXCIsIGEpO1xuICAgICAgY29uc3QgaSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgcyA9IGF3YWl0IE4oaSksIGwgPSAhMTtcbiAgICAgIF90KFwiVmVyaWZ5aW5nIENQTS4uLlwiKTtcbiAgICAgIGNvbnN0IGMgPSB1by5wYXJzZShyKTtcbiAgICAgIF90KFwi4pScIFZhbGlkYXRpbmcgbm9uLUNERSBmb3JtIGZpZWxkc1wiKTtcbiAgICAgIGNvbnN0IHUgPSBHKHQsIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLCB7XG4gICAgICAgIC4uLmwgPyBCbigpIDogdm9pZCAwLFxuICAgICAgICAuLi5zLmNoZWNrb3V0X3NldHRpbmdzXG4gICAgICB9KSwgZCA9IHEodSwgcy5jaGVja291dF9zZXR0aW5ncyk7XG4gICAgICBfdChcIk5ldyBjdXN0b21lciBmaWVsZHNcIiwgZCk7XG4gICAgICBjb25zdCBtID0gYXdhaXQgWihpLCB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHIucHJvdmlkZXIsXG4gICAgICAgIGNoZWNrb3V0X3BheW1lbnRfbWV0aG9kOiByLFxuICAgICAgICAuLi5xKHUsIHMuY2hlY2tvdXRfc2V0dGluZ3MpXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb25zb2xlLmxvZyhcInN0YXJ0UGF5bWVudEZsb3dSZXNwb25zZVwiLCBtKSwgcmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwia2xhcm5hXCIsXG4gICAgICAgIGFueUNkZUNvbm5lY3Rpb246IGksXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogYyxcbiAgICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiB1LFxuICAgICAgICBjb25maXJtUmVzdWx0OiB7XG4gICAgICAgICAgcGF5bWVudF9tZXRob2RzOiBbXVxuICAgICAgICB9LFxuICAgICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChpKSB7XG4gICAgICB0aHJvdyBRYyhcIktsYXJuYSBwYXltZW50IGVycm9yXCIsIGkpLCB2KFwiY2hlY2tvdXRfZXJyb3JcIiwgeyBwYXltZW50X21ldGhvZDogXCJrbGFybmFcIiwgZXJyb3I6IGkgfSksIG5ldyBFcnJvcihpPy5tZXNzYWdlID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICB9XG4gIH1cbiksIHBvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImFwcGxlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgbW8gPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwiYXV0aG9yaXplX25ldFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHByb2Nlc3Nvcl9hY2NvdW50X2lkOiB6JDEuc3RyaW5nKCksXG4gICAgcHJvY2Vzc29yX2FjY291bnRfbmFtZTogeiQxLnN0cmluZygpLFxuICAgIGdvb2dsZV9wYXlfbWVyY2hhbnRfaWQ6IHokMS5zdHJpbmcoKS5udWxsaXNoKClcbiAgfSlcbn0pO1xuYXN5bmMgZnVuY3Rpb24gdGwoZSwgdCkge1xuICB0cnkge1xuICAgIGNvbnN0IGEgPSAoYXdhaXQgVXQodC5jb25uZWN0aW9uLCB7XG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdC5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgYXBwbGVfcGF5bWVudF9zZXNzaW9uOiB7XG4gICAgICAgICAgdmFsaWRhdGlvbl91cmw6IGUudmFsaWRhdGlvblVSTCxcbiAgICAgICAgICBpbml0aWF0aXZlX2NvbnRleHQ6IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgICAgICB0aGVpcl9hY2NvdW50X2lkOiB0LnByb2Nlc3NvckFjY291bnQucHJvY2Vzc29yX2FjY291bnRfaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKS5uZXh0X2FjdGlvbl9tZXRhZGF0YT8uYXBwbGVfcGF5X3Nlc3Npb247XG4gICAgaWYgKCFhKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc2Vzc2lvbiBkYXRhIHJlY2VpdmVkIGZyb20gcGF5bWVudCBmbG93XCIpO1xuICAgIHQuc2Vzc2lvbi5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihhKSwgdihcImFwcGxlX3BheV9jb21wbGV0ZV9tZXJjaGFudF92YWxpZGF0aW9uXCIsIHtcbiAgICAgIC4uLmFcbiAgICB9KTtcbiAgfSBjYXRjaCAocikge1xuICAgIHRocm93IHQuc2Vzc2lvbi5hYm9ydCgpLCByO1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiBybChlLCB0KSB7XG4gIHRyeSB7XG4gICAgY29uc3QgciA9IGUucGF5bWVudCwgbiA9IFByKHQubm9uQ2RlRm9ybUlucHV0cywgciksIGEgPSBHKG4sIHQuZm9ybUNhbGxiYWNrcy5nZXQub25WYWxpZGF0aW9uRXJyb3IpO1xuICAgIHYoXCJiaWxsaW5nX2RldGFpbHNfcmVjZWl2ZWRcIiwge1xuICAgICAgLi4uYVxuICAgIH0pLCBhd2FpdCBaKHQuY29ubmVjdGlvbiwge1xuICAgICAgcGF5bWVudF9wcm92aWRlcjogdC5jaGVja291dFBheW1lbnRNZXRob2QucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdC5jaGVja291dFBheW1lbnRNZXRob2QsXG4gICAgICAuLi5xKGEsIHQucHJlZmlsbC5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICBjdXN0b21lcl9sYW5ndWFnZTogaWUoKVxuICAgIH0pO1xuICAgIGNvbnN0IGkgPSB7XG4gICAgICBkYXRhRGVzY3JpcHRvcjogXCJDT01NT04uQVBQTEUuSU5BUFAuUEFZTUVOVFwiLFxuICAgICAgZGF0YVZhbHVlOiB3aW5kb3cuYnRvYShKU09OLnN0cmluZ2lmeShyLnRva2VuLnBheW1lbnREYXRhKSlcbiAgICB9LCBzID0gYXdhaXQgeCh0LmNvbm5lY3Rpb24sIHtcbiAgICAgIHNlY3VyZV90b2tlbjogdC5wcmVmaWxsLnRva2VuLFxuICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQuY2hlY2tvdXRQYXltZW50TWV0aG9kLnByb3ZpZGVyLFxuICAgICAgICBtb2JpbGVfd2FsbGV0X3BheW1lbnRfZGF0YTogaVxuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghcy5wYXltZW50X21ldGhvZHM/LlswXT8uaWQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBQTSBJRCBmb3VuZFwiKTtcbiAgICBjb25zdCBjID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX1NVQ0NFU1NcbiAgICB9O1xuICAgIHJldHVybiB0LnNlc3Npb24uY29tcGxldGVQYXltZW50KGMpLCByZSh7XG4gICAgICBsb2dQcmVmaXg6IFwiYXV0aG5ldC1hcHBsZXBheVwiLFxuICAgICAgYW55Q2RlQ29ubmVjdGlvbjogdC5jb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LmNoZWNrb3V0UGF5bWVudE1ldGhvZCxcbiAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogYSxcbiAgICAgIGNvbmZpcm1SZXN1bHQ6IHMsXG4gICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgfSk7XG4gIH0gY2F0Y2ggKHIpIHtcbiAgICBjb25zdCBuID0ge1xuICAgICAgc3RhdHVzOiBBcHBsZVBheVNlc3Npb24uU1RBVFVTX0ZBSUxVUkVcbiAgICB9O1xuICAgIHRocm93IHQuc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQobiksIHI7XG4gIH1cbn1cbmNvbnN0IHsgbG9nX186IHZ0LCBlcnJfXzogZm8gfSA9IGsoXCJhdXRobmV0LWFwcGxlcGF5XCIpLCBubCA9IGNlKFxuICBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgICBjb25zdCByID0ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uYXV0aG9yaXplX25ldCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMSxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH1cbiAgICB9LCBuID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIHBvKTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm4gcjtcbiAgICBpZiAodnQoXCJMb2FkaW5nIEFwcGxlIFBheSBzY3JpcHRcIiksIGF3YWl0IGJyKCksICF3aW5kb3cuQXBwbGVQYXlTZXNzaW9uIHx8ICFBcHBsZVBheVNlc3Npb24uY2FuTWFrZVBheW1lbnRzKCkpXG4gICAgICByZXR1cm4gdnQoXCJBcHBsZSBQYXkgaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS9icm93c2VyXCIpLCByO1xuICAgIGlmICghYXdhaXQgQXBwbGVQYXlTZXNzaW9uLmNhbk1ha2VQYXltZW50cygpKVxuICAgICAgcmV0dXJuIHZ0KFwiTm8gYWN0aXZlIGNhcmRzIGF2YWlsYWJsZSBmb3IgQXBwbGUgUGF5XCIpLCByO1xuICAgIGlmICghbi5tZXRhZGF0YS5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIik7XG4gICAgY29uc3QgcyA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgbCA9IGF3YWl0IE4ocyksIGMgPSBsLm1vZGUgPT09IFwic2V0dXBcIiwgdSA9IGF3YWl0IFEocywgbC50b2tlbiwgYywgdm9pZCAwKSwgZCA9IGFzeW5jIChtKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBSLmF1dGhvcml6ZU5ldEFwcGxlUGF5LnJ1bih7XG4gICAgICAgICAgY29udGV4dDogZSxcbiAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogaihlLmZvcm1EaXYpLFxuICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHQsXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5tLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IHVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGYpIHtcbiAgICAgICAgZm8oXCJBcHBsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBmKSwgdihcImFwcGxlX3BheV9wYXltZW50X2Vycm9yXCIsIHtcbiAgICAgICAgICBlcnJvcjogZlxuICAgICAgICB9KSwgdC5nZXQub25DaGVja291dEVycm9yKGY/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb2Nlc3NvcjogVS5FbnVtLmF1dGhvcml6ZV9uZXQsXG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBpc0xvYWRpbmc6ICExLFxuICAgICAgc3RhcnRGbG93OiBkXG4gICAgfTtcbiAgfVxuKSwgb2wgPSBWKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgY3VzdG9tUGFyYW1zOiBuLFxuICAgIGZvcm1DYWxsYmFja3M6IGFcbiAgfSkgPT4ge1xuICAgIGNvbnN0IHsgaW5pdGlhbFByZXZpZXc6IGksIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IHMgfSA9IG4sIGwgPSBPKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgcG8pLCBjID0gZS5hbnlDZGVDb25uZWN0aW9uLCB1ID0gYXdhaXQgTihjKSwgZCA9IHUubW9kZSA9PT0gXCJzZXR1cFwiLCBtID0gRXIoe1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogcyxcbiAgICAgIGluaXRpYWxQcmV2aWV3OiBpLFxuICAgICAgcHJlZmlsbDogdSxcbiAgICAgIGRlZmF1bHRMYWJlbDogbD8ubWV0YWRhdGE/LnByb2Nlc3Nvcl9hY2NvdW50X25hbWVcbiAgICB9KTtcbiAgICB2KFwiYXBwbGVfcGF5X2Zsb3dfc3RhcnRlZFwiLCB7XG4gICAgICBwcm9jZXNzb3JfbmFtZTogdC5wcm9jZXNzb3JfbmFtZSxcbiAgICAgIHByZWZpbGw6IHUsXG4gICAgICBvdmVycmlkZVBheW1lbnRSZXF1ZXN0OiBzXG4gICAgfSk7XG4gICAgY29uc3QgZiA9IG5ldyBBcHBsZVBheVNlc3Npb24oMywgbSksIHkgPSB7XG4gICAgICBzZXNzaW9uOiBmLFxuICAgICAgY29ubmVjdGlvbjogZS5hbnlDZGVDb25uZWN0aW9uLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICAgIHByb2Nlc3NvckFjY291bnQ6IHQubWV0YWRhdGEsXG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgaXNTZXR1cE1vZGU6IGQsXG4gICAgICBiYXNlVXJsOiBlLmJhc2VVcmwsXG4gICAgICBmb3JtQ2FsbGJhY2tzOiBhXG4gICAgfTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKF8sIGcpID0+IHtcbiAgICAgIGYub25jYW5jZWwgPSAoKSA9PiB7XG4gICAgICAgIHZ0KFwiUGF5bWVudCBjYW5jZWxsZWQgYnkgdXNlclwiKSwgZyhuZXcgRXJyb3IoXCJQYXltZW50IGNhbmNlbGxlZCBieSB1c2VyXCIpKTtcbiAgICAgIH0sIGYub252YWxpZGF0ZW1lcmNoYW50ID0gYXN5bmMgKHcpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0bCh3LCB5KTtcbiAgICAgICAgfSBjYXRjaCAoaCkge1xuICAgICAgICAgIGcoaCk7XG4gICAgICAgIH1cbiAgICAgIH0sIGYub25wYXltZW50bWV0aG9kc2VsZWN0ZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHcgPSBhd2FpdCBRKGMsIHUudG9rZW4sIGQsIHZvaWQgMCksIGggPSB7XG4gICAgICAgICAgbmV3VG90YWw6IHF0KHtcbiAgICAgICAgICAgIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IG4ub3ZlcnJpZGVQYXltZW50UmVxdWVzdCxcbiAgICAgICAgICAgIGluaXRpYWxQcmV2aWV3OiB3LFxuICAgICAgICAgICAgZGVmYXVsdExhYmVsOiBsPy5tZXRhZGF0YT8ucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgICAgICAgIHByZWZpbGw6IHVcbiAgICAgICAgICB9KS50b3RhbFxuICAgICAgICB9O1xuICAgICAgICBmLmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihoKTtcbiAgICAgIH0sIGYub25wYXltZW50YXV0aG9yaXplZCA9IGFzeW5jICh3KSA9PiB7XG4gICAgICAgIHYoXCJhcHBsZV9wYXlfcGF5bWVudF9hdXRob3JpemVkXCIpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGggPSBhd2FpdCBybCh3LCB5KTtcbiAgICAgICAgICBfKGgpO1xuICAgICAgICB9IGNhdGNoIChoKSB7XG4gICAgICAgICAgZyhoKTtcbiAgICAgICAgfVxuICAgICAgfSwgZi5iZWdpbigpO1xuICAgIH0pLmNhdGNoKChfKSA9PiB7XG4gICAgICB0aHJvdyBmbyhcIkFwcGxlIFBheSBwYXltZW50IGVycm9yXCIsIF8pLCB2KFwiYXBwbGVfcGF5X3BheW1lbnRfZXJyb3JcIiwge1xuICAgICAgICBlcnJvcjogX1xuICAgICAgfSksIF87XG4gICAgfSk7XG4gIH1cbiksIHsgbG9nX186IEllLCBlcnJfXzogUWUgfSA9IGsoXCJhdXRobmV0LWdvb2dsZXBheVwiKSwgYWwgPSBjZShcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgZm9ybUNhbGxiYWNrczogdCB9KSA9PiB7XG4gICAgSWUoXCJJbml0aWFsaXppbmcgQXV0aG5ldCBHb29nbGVQYXkgZmxvd1wiKTtcbiAgICBjb25zdCByID0ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uYXV0aG9yaXplX25ldCxcbiAgICAgIGlzQXZhaWxhYmxlOiAhMSxcbiAgICAgIGlzTG9hZGluZzogITEsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH1cbiAgICB9LCBuID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIG1vKTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm4gcjtcbiAgICBJZShcIkdvb2dsZSBQYXkgQ1BNXCIsIG4pO1xuICAgIGNvbnN0IGEgPSBuLm1ldGFkYXRhO1xuICAgIGlmICghYS5wcm9jZXNzb3JfYWNjb3VudF9pZClcbiAgICAgIHJldHVybiBRZShcIk5vIGdhdGV3YXkgbWVyY2hhbnQgSUQgZm91bmQgaW4gcHJvY2Vzc29yIGFjY291bnRcIiksIHI7XG4gICAgaWYgKEllKFwiTG9hZGluZyBHb29nbGUgUGF5IHNjcmlwdFwiKSwgYXdhaXQgaHIoKSwgIXdpbmRvdy5nb29nbGU/LnBheW1lbnRzPy5hcGkpXG4gICAgICByZXR1cm4gUWUoXCJHb29nbGUgUGF5IFNESyBub3QgbG9hZGVkIHByb3Blcmx5XCIpLCByO1xuICAgIEllKFwiR29vZ2xlIFBheSBTREsgbG9hZGVkXCIsIHdpbmRvdy5nb29nbGUucGF5bWVudHMpO1xuICAgIGNvbnN0IGkgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHMgPSBhd2FpdCBOKGkpLCBsID0gcy5tb2RlID09PSBcInNldHVwXCIsIGMgPSBhd2FpdCBRKGksIHMudG9rZW4sIGwsIHZvaWQgMCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGQgPSBWZSh7XG4gICAgICAgIHByZWZpbGw6IHMsXG4gICAgICAgIGdhdGV3YXk6IFwiYXV0aG9yaXplbmV0XCIsXG4gICAgICAgIGdhdGV3YXlNZXJjaGFudElkOiBhLnByb2Nlc3Nvcl9hY2NvdW50X2lkLFxuICAgICAgICBtZXJjaGFudE5hbWU6IGEucHJvY2Vzc29yX2FjY291bnRfbmFtZSxcbiAgICAgICAgbWVyY2hhbnRJZDogYS5nb29nbGVfcGF5X21lcmNoYW50X2lkID8/IFwiXCIsXG4gICAgICAgIC8vIFRoaXMgaXMgZm9yIGluaXRpYWwgcGF5bWVudCByZXF1ZXN0IHRvIGNoZWNrIGF2YWlsYWJpbGl0eS4gQWN0dWFsIGBpbml0aWFsUHJldmlld2Agd2lsbCBiZSB1c2VkIHdoZW4gdGhlIFVJIGlzIHNob3duXG4gICAgICAgIGluaXRpYWxQcmV2aWV3OiBjXG4gICAgICB9KSwgbSA9IGF3YWl0IHplKGUuYmFzZVVybCwgZCksIHsgcmVzdWx0OiBmIH0gPSBhd2FpdCBtLmlzUmVhZHlUb1BheShkKTtcbiAgICAgIGlmICghZilcbiAgICAgICAgcmV0dXJuIEllKFwiR29vZ2xlIFBheSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXJcIiksIHI7XG4gICAgfSBjYXRjaCAoZCkge1xuICAgICAgcmV0dXJuIFFlKFwiRXJyb3IgY2hlY2tpbmcgR29vZ2xlIFBheSBhdmFpbGFiaWxpdHlcIiwgZCksIHI7XG4gICAgfVxuICAgIGNvbnN0IHUgPSBhc3luYyAoZCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgUi5hdXRob3JpemVOZXRHb29nbGVQYXkucnVuKHtcbiAgICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogbixcbiAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICAgICAgZm9ybUNhbGxiYWNrczogdCxcbiAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5kLFxuICAgICAgICAgICAgaW5pdGlhbFByZXZpZXc6IGNcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAobSkge1xuICAgICAgICBRZShcIkdvb2dsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBtKSwgdihcImdvb2dsZV9wYXlfcGF5bWVudF9lcnJvclwiLCB7XG4gICAgICAgICAgZXJyb3I6IG1cbiAgICAgICAgfSksIHQuZ2V0Lm9uQ2hlY2tvdXRFcnJvcihtPy5tZXNzYWdlID8/IFwiVW5rbm93biBlcnJvclwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzb3I6IFUuRW51bS5hdXRob3JpemVfbmV0LFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgaXNMb2FkaW5nOiAhMSxcbiAgICAgIHN0YXJ0RmxvdzogdVxuICAgIH07XG4gIH1cbiksIGlsID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHQsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICBjb25zdCB7IG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGkgfSA9IGEsIGwgPSBPKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgbW8pLm1ldGFkYXRhLCBjID0gZS5hbnlDZGVDb25uZWN0aW9uLCB1ID0gYXdhaXQgTihjKSwgZCA9IHUubW9kZSA9PT0gXCJzZXR1cFwiLCBtID0gYXdhaXQgUShjLCB1LnRva2VuLCBkLCB2b2lkIDApLCBmID0gVmUoe1xuICAgICAgcHJlZmlsbDogdSxcbiAgICAgIGdhdGV3YXk6IFwiYXV0aG9yaXplbmV0XCIsXG4gICAgICBnYXRld2F5TWVyY2hhbnRJZDogbC5wcm9jZXNzb3JfYWNjb3VudF9pZCxcbiAgICAgIG1lcmNoYW50TmFtZTogbC5wcm9jZXNzb3JfYWNjb3VudF9uYW1lLFxuICAgICAgbWVyY2hhbnRJZDogbC5nb29nbGVfcGF5X21lcmNoYW50X2lkID8/IFwiXCIsXG4gICAgICBpbml0aWFsUHJldmlldzogbSxcbiAgICAgIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGlcbiAgICB9KTtcbiAgICB2KFwiZ29vZ2xlX3BheV9mbG93X3N0YXJ0ZWRcIiwge1xuICAgICAgcHJvY2Vzc29yX25hbWU6IHIucHJvY2Vzc29yX25hbWUsXG4gICAgICBwcmVmaWxsOiB1LFxuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogaVxuICAgIH0pO1xuICAgIGNvbnN0IHkgPSBhd2FpdCB6ZShlLmJhc2VVcmwsIGYpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBfID0gYXdhaXQgeS5sb2FkUGF5bWVudERhdGEoZik7XG4gICAgICBJZShcIkdvb2dsZSBQYXkgUGF5bWVudCBkYXRhXCIsIF8pO1xuICAgICAgY29uc3QgZyA9IHdyKHQsIF8pLCB3ID0gRyhnLCBuLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgICB2KFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgICAgLi4ud1xuICAgICAgfSk7XG4gICAgICBjb25zdCBoID0gXy5wYXltZW50TWV0aG9kRGF0YT8udG9rZW5pemF0aW9uRGF0YT8udG9rZW47XG4gICAgICBpZiAoIWgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHBheW1lbnQgdG9rZW4gcmVjZWl2ZWQgZnJvbSBHb29nbGUgUGF5XCIpO1xuICAgICAgY29uc3QgYiA9IGF3YWl0IFooYywge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiByLnByb3ZpZGVyLFxuICAgICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogcixcbiAgICAgICAgLi4ucSh3LCB1LmNoZWNrb3V0X3NldHRpbmdzKSxcbiAgICAgICAgY3VzdG9tZXJfbGFuZ3VhZ2U6IGllKClcbiAgICAgIH0pO1xuICAgICAgSWUoXCJTdGFydCBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgYik7XG4gICAgICBjb25zdCBTID0gYXdhaXQgeChjLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogdS50b2tlbixcbiAgICAgICAgcHJvY2Vzc29yX3NwZWNpZmljX21ldGFkYXRhOiB7XG4gICAgICAgICAgcGF5bWVudF9wcm92aWRlcjogci5wcm92aWRlcixcbiAgICAgICAgICBtb2JpbGVfd2FsbGV0X3BheW1lbnRfZGF0YToge1xuICAgICAgICAgICAgZGF0YURlc2NyaXB0b3I6IFwiQ09NTU9OLkdPT0dMRS5JTkFQUC5QQVlNRU5UXCIsXG4gICAgICAgICAgICBkYXRhVmFsdWU6IHdpbmRvdy5idG9hKGgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghUy5wYXltZW50X21ldGhvZHM/LlswXT8uaWQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIFBNIElEIGZvdW5kXCIpO1xuICAgICAgcmV0dXJuIHJlKHtcbiAgICAgICAgbG9nUHJlZml4OiBcImF1dGhuZXQtZ29vZ2xlcGF5XCIsXG4gICAgICAgIGFueUNkZUNvbm5lY3Rpb246IGMsXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiB3LFxuICAgICAgICBjb25maXJtUmVzdWx0OiBTLFxuICAgICAgICB1c2VQYXlGaXJzdEZsb3c6ICExXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICB0aHJvdyBRZShcIkdvb2dsZSBQYXkgcGF5bWVudCBlcnJvclwiLCBfKSwgdihcImdvb2dsZV9wYXlfcGF5bWVudF9lcnJvclwiLCB7XG4gICAgICAgIGVycm9yOiBfXG4gICAgICB9KSwgbmV3IEVycm9yKF8/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogeXQsIGVycl9fOiBzbCB9ID0gayhcImN5YnMtZnJhbWVcIiksIGNsID0gKGUsIHQpID0+IHtcbiAgY29uc3QgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7XG4gIHIubmFtZSA9IFwiY2FyZGluYWxfY29sbGVjdGlvbl9pZnJhbWVcIiwgci5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCIsIHIuc3R5bGUud2lkdGggPSBcIjEwcHhcIiwgci5zdHlsZS5oZWlnaHQgPSBcIjEwcHhcIjtcbiAgY29uc3QgbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmb3JtXCIpO1xuICBuLmFjdGlvbiA9IGUsIG4ubWV0aG9kID0gXCJQT1NUXCIsIG4udGFyZ2V0ID0gci5uYW1lO1xuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICByZXR1cm4gYS50eXBlID0gXCJoaWRkZW5cIiwgYS5uYW1lID0gXCJKV1RcIiwgYS52YWx1ZSA9IHQsIG4uYXBwZW5kQ2hpbGQoYSksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQociksIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobiksIHsgZm9ybTogbiwgZGV0YWNoOiAoKSA9PiB7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyKSwgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChuKTtcbiAgfSB9O1xufSwgbGwgPSBhc3luYyAoZSkgPT4gbmV3IFByb21pc2UoKHQsIHIpID0+IHtcbiAgY29uc3QgeyBwb3N0VXJsOiBuLCBhY2Nlc3NUb2tlbjogYSB9ID0gZSwgaSA9IG5ldyBVUkwobikub3JpZ2luLCB7IGZvcm06IHMsIGRldGFjaDogbCB9ID0gY2wobiwgYSk7XG4gIHl0KFwiQXR0YWNoZWQgZGV2aWNlIGRhdGEgY29sbGVjdG9yXCIpO1xuICBjb25zdCBjID0gKGQpID0+IHtcbiAgICBpZiAoZC5vcmlnaW4gIT09IGkpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgbSA9IEpTT04ucGFyc2UoZC5kYXRhKTtcbiAgICBpZiAoeXQoXCJSZWNlaXZlZCBldmVudCBmcm9tIGRldmljZSBkYXRhIGNvbGxlY3RvcjpcIiwgbSksIG0uTWVzc2FnZVR5cGUgPT09IFwicHJvZmlsZS5jb21wbGV0ZWRcIikge1xuICAgICAgdChtKSwgdSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfSwgdSA9ICgpID0+IHtcbiAgICBsKCksIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBjKTtcbiAgfTtcbiAgdHJ5IHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgYyksIHl0KFwiQXR0YWNoZWQgbGlzdGVuZXIgdG8gd2luZG93XCIpLCBzLnN1Ym1pdCgpLCB5dChcIlN1Ym1pdHRlZCBmb3JtXCIpO1xuICB9IGNhdGNoIChkKSB7XG4gICAgc2woXCJFcnJvciBzdWJtaXR0aW5nIGZvcm06XCIsIGQpLCB1KCksIHIoZCk7XG4gIH1cbn0pLCB1bCA9IChlKSA9PiB7XG4gIGNvbnN0IHsgc3RlcFVwVXJsOiB0LCBhY2Nlc3NUb2tlbjogciwgbWVyY2hhbnREYXRhOiBuLCBpZnJhbWU6IGEsIGhvc3Q6IGkgfSA9IGUsIHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZm9ybVwiKTtcbiAgcy5hY3Rpb24gPSB0LCBzLm1ldGhvZCA9IFwiUE9TVFwiLCBzLnRhcmdldCA9IGEubmFtZTtcbiAgY29uc3QgbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgbC50eXBlID0gXCJoaWRkZW5cIiwgbC5uYW1lID0gXCJKV1RcIiwgbC52YWx1ZSA9IHI7XG4gIGNvbnN0IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gIHJldHVybiBjLnR5cGUgPSBcImhpZGRlblwiLCBjLm5hbWUgPSBcIk1EXCIsIGMudmFsdWUgPSBuLCBzLmFwcGVuZENoaWxkKGwpLCBzLmFwcGVuZENoaWxkKGMpLCBpLmFwcGVuZENoaWxkKHMpLCBzO1xufSwgeyBsb2dfXzogRGUsIGVycl9fOiBfbyB9ID0gayhcImN5YnNcIiksIHlvID0geiQxLm9iamVjdCh7XG4gIHN0ZXBfdXBfdXJsOiB6JDEuc3RyaW5nKCksXG4gIGFjY2Vzc190b2tlbjogeiQxLnN0cmluZygpLFxuICBkZF91cmw6IEQoeiQxLnN0cmluZygpKSxcbiAgZGRfdG9rZW46IEQoeiQxLnN0cmluZygpKSxcbiAgbWVyY2hhbnRfZGF0YTogeiQxLnN0cmluZygpXG59KSwgZGwgPSBcIlVuYWJsZSB0byBwcm9jZXNzIHlvdXIgY3JlZGl0IGNhcmQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuXCIsIHBsID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IHlvLnNhZmVQYXJzZShlKTtcbiAgaWYgKCF0LnN1Y2Nlc3MpXG4gICAgdGhyb3cgX28oYEN5YmVyc291cmNlIDNEUyBpcyByZXF1aXJlZCBidXQgdXNlciBhY3Rpb24gaXMgbWFsZm9ybWVkLiBHb3Q6ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCksIG5ldyBFcnJvcihkbCk7XG4gIHJldHVybiB0LmRhdGE7XG59LCBtbCA9IChlKSA9PiBlLnR5cGUgPT09IFwiY3liZXJzb3VyY2VfcGF5ZXJfYXV0aFwiLCBmbCA9IGFzeW5jIChlKSA9PiB7XG4gIGNvbnN0IHsgc3RlcFVwVXJsOiB0LCBhY2Nlc3NUb2tlbjogciwgbWVyY2hhbnREYXRhOiBuLCBpZnJhbWU6IGEsIGhvc3Q6IGksIGNhbmNlbEJ1dHRvbjogcyB9ID0gZSwgbCA9IG5ldyBVUkwodCkub3JpZ2luO1xuICByZXR1cm4gbmV3IFByb21pc2UoKGMpID0+IHtcbiAgICBjb25zdCB1ID0gKCkgPT4ge1xuICAgICAgRGUoXCJDbGVhbmluZyB1cCBDeWJlcnNvdXJjZSAzRFMgZmxvd1wiKSwgcy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZCksIGkucmVtb3ZlKCk7XG4gICAgfSwgZCA9ICgpID0+IHtcbiAgICAgIERlKFwiQ3liZXJzb3VyY2UgM0RTIGNhbmNlbGxlZFwiKSwgYyh7IHN0YXR1czogRi5DQU5DRUxMRUQsIGNsZWFudXA6IHUgfSk7XG4gICAgfSwgZiA9IHlyKGEsIChnKSA9PiB7XG4gICAgICBEZShcIkN5YmVyc291cmNlIDNEUyBjb21wbGV0ZWQgd2l0aCBzdGF0dXM6XCIsIGcpLCBjKHsgc3RhdHVzOiBnLnN0YXR1cywgY2xlYW51cDogdSB9KSwgeSgpO1xuICAgIH0sIGwsIFwicGluZy0zZHMtc3RhdHVzXCIsIGxuKSwgeSA9IEtuKHtcbiAgICAgIGVsZW1lbnRzOiB7IGhvc3Q6IGksIGNhbmNlbEJ1dHRvbjogcyB9LFxuICAgICAgcG9sbGluZ0ludGVydmFsOiBmLFxuICAgICAgcmVzb2x2ZTogKGcpID0+IHtcbiAgICAgICAgYyh7IHN0YXR1czogZy5zdGF0dXMsIGNsZWFudXA6IHUgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZCksIHVsKHtcbiAgICAgIHN0ZXBVcFVybDogdCxcbiAgICAgIGFjY2Vzc1Rva2VuOiByLFxuICAgICAgbWVyY2hhbnREYXRhOiBuLFxuICAgICAgaWZyYW1lOiBhLFxuICAgICAgaG9zdDogaVxuICAgIH0pLnN1Ym1pdCgpO1xuICB9KTtcbn0sIGhvID0gYXN5bmMgKGUpID0+IHtcbiAgY29uc3QgdCA9IHBsKGUpLCB7IHN0ZXBfdXBfdXJsOiByLCBhY2Nlc3NfdG9rZW46IG4sIGRkX3VybDogYSwgZGRfdG9rZW46IGksIG1lcmNoYW50X2RhdGE6IHMgfSA9IHQ7XG4gIGlmIChhICYmIGkpIHtcbiAgICBjb25zdCBtID0gYXdhaXQgbGwoe1xuICAgICAgcG9zdFVybDogYSxcbiAgICAgIGFjY2Vzc1Rva2VuOiBpXG4gICAgfSk7XG4gICAgRGUoXCJEZXZpY2UgZGF0YSBjb2xsZWN0aW9uIGNvbXBsZXRlZCB3aXRoIHN0YXR1czpcIiwgbS5TdGF0dXMpO1xuICB9IGVsc2VcbiAgICBfbyhcIk5vIGRldmljZSBkYXRhIGNvbGxlY3Rpb24gVVJMIG9yIHRva2VuIHByb3ZpZGVkXCIpO1xuICBjb25zdCB7IGhvc3Q6IGwsIGlmcmFtZTogYywgY2FuY2VsQnV0dG9uOiB1IH0gPSAkdChcIlwiLCB7IG5hbWU6IFwiY2FyZGluYWxfYXV0aF9pZnJhbWVcIiB9KTtcbiAgRGUoXCJSdW5uaW5nIEN5YmVyc291cmNlIDNEUyBmbG93XCIpO1xuICBjb25zdCBkID0gYXdhaXQgZmwoe1xuICAgIHN0ZXBVcFVybDogcixcbiAgICBhY2Nlc3NUb2tlbjogbixcbiAgICBtZXJjaGFudERhdGE6IHMsXG4gICAgaWZyYW1lOiBjLFxuICAgIGhvc3Q6IGwsXG4gICAgY2FuY2VsQnV0dG9uOiB1XG4gIH0pO1xuICBpZiAoZC5jbGVhbnVwKCksIGQuc3RhdHVzID09PSBGLkZBSUxVUkUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gIGlmIChkLnN0YXR1cyA9PT0gRi5DQU5DRUxMRUQpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiM0RTIHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gIGlmIChkLnN0YXR1cyA9PT0gRi5TVUNDRVNTKSB7XG4gICAgRGUoXCIzRFMgdmVyaWZpY2F0aW9uIHN1Y2NlZWRlZFwiKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZVxuICAgIGN0KGQuc3RhdHVzKTtcbn0sIHsgbG9nX186IF9sLCBlcnJfXzogZ28gfSA9IGsoXCJwb2NreXQtY2NcIiksIHlsID0geiQxLm9iamVjdCh7XG4gIFwib3AtcG9ja3l0LTNkcy11cmxcIjogeiQxLnN0cmluZygpLFxuICBcIm9wLXBvY2t5dC10eG4tbm9cIjogeiQxLnN0cmluZygpLFxuICBcIm9wLXBvY2t5dC1yZWYtbm9cIjogeiQxLnN0cmluZygpXG59KSwgaGwgPSAoZSkgPT4ge1xuICBjb25zdCB0ID0geWwuc2FmZVBhcnNlKGUpO1xuICBpZiAoIXQuc3VjY2Vzcykge1xuICAgIGNvbnN0IHIgPSBcIlVuYWJsZSB0byBwcm9jZXNzIHlvdXIgY3JlZGl0IGNhcmQuIFBsZWFzZSBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuXCIsIG4gPSBgUG9ja3l0IDNEUyBpcyByZXF1aXJlZCBidXQgaGVhZGVycyBhcmUgbWFsZm9ybWVkLiBHb3Q6ICR7SlNPTi5zdHJpbmdpZnkoZSl9YDtcbiAgICB0aHJvdyBnbyhuKSwgbmV3IEVycm9yKHIpO1xuICB9XG4gIHJldHVybiB0LmRhdGE7XG59LCB3byA9IChlKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdCA9IG5ldyBVUkwoZSA/PyBcIlwiKS5zZWFyY2hQYXJhbXMuZ2V0KFwidmF1bHRJZFwiKTtcbiAgICBpZiAoIXQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyB2YXVsdCBJRCBmb3VuZCBpbiAzRFMgdmVyaWZpY2F0aW9uIHJlc3VsdFwiKTtcbiAgICByZXR1cm4gX2woYDNEUyB2ZXJpZmljYXRpb24gc3VjY2Vzcy4gW1ZhdWx0IElEOiAke3R9XWApLCB0O1xuICB9IGNhdGNoICh0KSB7XG4gICAgY29uc3QgciA9IFwiRXJyb3IgdmVyaWZ5aW5nIDNEUyB2ZXJpZmljYXRpb24gcmVzdWx0LlwiO1xuICAgIHRocm93IGdvKHIsIGBSZXN1bHRpbmcgVVJMOiAke2V9LlxuRXJyb3I6ICR7YWUodCl9YCksIG5ldyBFcnJvcihyKTtcbiAgfVxufSwgcnIgPSAoZSwgdCkgPT4gbmV3IFVSTChlKS5zZWFyY2hQYXJhbXMuZ2V0KHQpLCBnbCA9IChlKSA9PiBlPy5bXCJvcC1wb2NreXQtM2RzLXVybFwiXSAhPT0gdm9pZCAwLCB3bCA9IGFzeW5jIChlLCB0KSA9PiB7XG4gIGNvbnN0IHIgPSBobCh0KSwgbiA9IGF3YWl0IFluKHsgdXJsOiByW1wib3AtcG9ja3l0LTNkcy11cmxcIl0sIGJhc2VVcmw6IGUgfSk7XG4gIHJldHVybiB7XG4gICAgZXhpc3RpbmdfY2M6IHtcbiAgICAgIHZhdWx0X2lkOiB3byhuLmhyZWYgPz8gXCJcIiksXG4gICAgICB0cmFuc2FjdGlvbl9ubzogcltcIm9wLXBvY2t5dC10eG4tbm9cIl0sXG4gICAgICByZWZlcmVuY2Vfbm86IHJbXCJvcC1wb2NreXQtcmVmLW5vXCJdXG4gICAgfVxuICB9O1xufSwgeyBsb2dfXzogR3IgfSA9IGsoXCJzdHJpcGUtY2NcIiksIHZsID0geiQxLm9iamVjdCh7XG4gIHN0cmlwZV9wazogeiQxLnN0cmluZygpLFxuICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKCksXG4gIHN0cmlwZV9wbV9pZDogeiQxLnN0cmluZygpXG59KSwgdm8gPSBhc3luYyAoZSkgPT4ge1xuICB2KFwiM2RzX3N0cmlwZV9yZWRpcmVjdFwiLCB7XG4gICAgLi4uZVxuICB9KSwgR3IoYOKUnCBVc2luZyBzdHJpcGUgM0RTIGZsb3cgW0NsaWVudCBTZWNyZXQ6ICR7ZS5jbGllbnRfc2VjcmV0LnN1YnN0cmluZygwLCA4KX0uLi5dYCksIGF3YWl0IHJzKGUpLCB2KFwiM2RzX3N0cmlwZV9jb21wbGV0ZVwiKSwgR3IoXCLilbAgU3RyaXBlIDNEUyBmbG93IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIik7XG59LCBibCA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSB2bC5zYWZlUGFyc2UoZSk7XG4gIGlmICghdC5zdWNjZXNzKVxuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaXBlIDNEUyBtZXRhZGF0YSBoYXMgdW5leHBlY3RlZCBmb3JtYXQ6ICR7SlNPTi5zdHJpbmdpZnkodC5lcnJvci5lcnJvcnMpfWApO1xuICByZXR1cm4ge1xuICAgIHN0cmlwZV9wazogdC5kYXRhLnN0cmlwZV9wayxcbiAgICBjbGllbnRfc2VjcmV0OiB0LmRhdGEuY2xpZW50X3NlY3JldCxcbiAgICBzdHJpcGVfcG1faWQ6IHQuZGF0YS5zdHJpcGVfcG1faWRcbiAgfTtcbn0sIFBsID0gNCwgeyBsb2dfXzogVGUsIGVycl9fOiBSdCB9ID0gayhcInVuaWZpZWQtY2NcIiksIEVsID0gYXN5bmMgKHtcbiAgY29udGV4dDogZSxcbiAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICBub25DZGVGb3JtSW5wdXRzOiByLFxuICBmb3JtQ2FsbGJhY2tzOiBuLFxuICBjdXN0b21QYXJhbXM6IGFcbn0pID0+IHtcbiAgVGUoXCLilJwgUnVubmluZyB1bmlmaWVkIENDIGZsb3cuLi5cIiwgeyBjaGVja291dFBheW1lbnRNZXRob2Q6IHQgfSk7XG4gIGNvbnN0IGkgPSBlLmFueUNkZUNvbm5lY3Rpb24sIHMgPSBhd2FpdCBOKGkpO1xuICBUZShg4pScIFZhbGlkYXRpbmcgbm9uLUNERSBmb3JtIGZpZWxkcyBbTW9kZTogJHtzLm1vZGV9XWApO1xuICBjb25zdCBsID0gRyhyLCBuLmdldC5vblZhbGlkYXRpb25FcnJvciksIGMgPSB7XG4gICAgc2Vzc2lvbl9pZDogZS5lbGVtZW50c1Nlc3Npb25JZCxcbiAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdCxcbiAgICBub25fY2RlX2Zvcm1fZmllbGRzOiBsLFxuICAgIGV4dHJhX21ldGFkYXRhOiB7XG4gICAgICBvcmlnaW46IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sXG4gICAgICAvLyBGb3IgZGVidWdnaW5nIHB1cnBvc2VzIGluIHRoZSBjaGVja291dCBhdHRlbXB0IGxvZ3NcbiAgICAgIGRldmljZVRva2VuOiB6bigpXG4gICAgfSxcbiAgICB1c2VfdW5pZmllZF9jY19mbG93OiB0cnVlLFxuICAgIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzoge1xuICAgICAgbGluZV9pdGVtczogcy5saW5lX2l0ZW1zLFxuICAgICAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiBzLmFtb3VudF90b3RhbF9hdG9tXG4gICAgfSxcbiAgICBwYXltZW50X3JvdXRlX2lkOiBhLnBheW1lbnRSb3V0ZUlkXG4gIH07XG4gIFJ0KGEsIGMpLCBUZShg4pScIFRva2VuaXppbmcgY2FyZCBpbmZvIGluIFBhcnRpYWwgUE1zIFtTZXNzaW9uOiAke2UuZWxlbWVudHNTZXNzaW9uSWR9XWApO1xuICBjb25zdCB1ID0gYXdhaXQgVW4oYS5jdXJyZW50Q2RlQ29ubmVjdGlvbnMsIHtcbiAgICBzZXNzaW9uX2lkOiBlLmVsZW1lbnRzU2Vzc2lvbklkXG4gIH0pO1xuICBKbih1LCBuLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gIGNvbnN0IGQgPSBhd2FpdCBEbihpLCBjKTtcbiAgaWYgKFRlKFwi4pScIHN0YXJ0UGYgcmVzdWx0XCIsIGQpLCBkLmNoZWNrb3V0X3N1Y2Nlc3NfcmVzcG9uc2UpXG4gICAgcmV0dXJuIGJvKHMubW9kZSwgZCk7XG4gIGlmICghZC5jaGVja291dF9hdHRlbXB0X2lkKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IG5vIGNoZWNrb3V0IGF0dGVtcHQgSUQgZnJvbSBQRiByZXN1bHRcIik7XG4gIHJldHVybiBDbCh7XG4gICAgY29udGV4dDogZSxcbiAgICBwcmVmaWxsOiBzLFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgY29tbW9uQ2hlY2tvdXRQYXJhbXM6IGMsXG4gICAgYW55Q2RlQ29ubmVjdGlvbjogaSxcbiAgICBzdGFydFBmUmVzdWx0OiBkLFxuICAgIGNoZWNrb3V0QXR0ZW1wdElkOiBkLmNoZWNrb3V0X2F0dGVtcHRfaWRcbiAgfSk7XG59LCBDbCA9IGFzeW5jIChlKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb250ZXh0OiB0LFxuICAgIHByZWZpbGw6IHIsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogbixcbiAgICBjb21tb25DaGVja291dFBhcmFtczogYSxcbiAgICBhbnlDZGVDb25uZWN0aW9uOiBpLFxuICAgIHN0YXJ0UGZSZXN1bHQ6IHMsXG4gICAgY2hlY2tvdXRBdHRlbXB0SWQ6IGxcbiAgfSA9IGU7XG4gIGxldCBjID0gcztcbiAgZm9yIChsZXQgdSA9IDA7IHUgPCBQbDsgdSsrKSB7XG4gICAgVGUoYOKUnCBSdW5uaW5nIGNvbmZpcm0gbG9vcCBpdGVyYXRpb24gJHt1fWApLCB2KFwidW5pZmllZF9jY19jb25maXJtX2xvb3BfaXRlcmF0aW9uXCIsIHsgaXRlcmF0aW9uOiB1IH0pO1xuICAgIGNvbnN0IHsgdXNlckFjdGlvbjogZCB9ID0ga2woYyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG0gPSBhd2FpdCBBbCh0LmJhc2VVcmwsIGQsIHIsIG4pO1xuICAgICAgYS5leHRyYV9tZXRhZGF0YSA9IHtcbiAgICAgICAgLi4uYS5leHRyYV9tZXRhZGF0YSxcbiAgICAgICAgLi4ubS5tZXRhZGF0YUZvckNvbmZpcm1TdGVwXG4gICAgICB9LCBUZShcIuKUnCBOZXcgZXh0cmEgbWV0YWRhdGFcIiwgYS5leHRyYV9tZXRhZGF0YSk7XG4gICAgfSBjYXRjaCAobSkge1xuICAgICAgY29uc3QgZiA9IGFlKG0pO1xuICAgICAgUnQoYOKUnCBFcnJvciBpbiBydW5uaW5nIHVzZXIgYWN0aW9uIGluIGl0ZXJhdGlvbiAke3V9LiBDb250aW51aW5nIHRvIGNvbmZpcm0gc3RlcC4uLmAsIGYpLCB2KFwidW5pZmllZF9jY191c2VyX2FjdGlvbl9lcnJvclwiLCB7IGVycm9yX21lc3NhZ2U6IGYsIGl0ZXJhdGlvbjogdSB9KTtcbiAgICB9XG4gICAgaWYgKGMgPSBhd2FpdCB4KGksIHtcbiAgICAgIHNlY3VyZV90b2tlbjogci50b2tlbixcbiAgICAgIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IGwsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IGEuZXh0cmFfbWV0YWRhdGFcbiAgICB9KSwgVGUoYOKUnCBjb25maXJtUGYgcmVzdWx0IChpdGVyYXRpb24gJHt1fSlgLCBjKSwgYy5jaGVja291dF9zdWNjZXNzX3Jlc3BvbnNlKVxuICAgICAgcmV0dXJuIGJvKHIubW9kZSwgYyk7XG4gIH1cbiAgdGhyb3cgdihcInVuaWZpZWRfY2NfdW5leHBlY3RlZF9icmFuY2hcIiwge1xuICAgIHNlY3VyZV90b2tlbjogci50b2tlbixcbiAgICBjaGVja291dF9hdHRlbXB0X2lkOiBjLmNoZWNrb3V0X2F0dGVtcHRfaWQsXG4gICAgY29uZmlybVBGUmVzdWx0OiBjXG4gIH0pLCBuZXcgRXJyb3IoXCJDaGVja291dCBlcnJvciwgcGxlYXNlIHRyeSBhbm90aGVyIHBheW1lbnQgbWV0aG9kXCIpO1xufSwgQWwgPSBhc3luYyAoZSwgdCwgciwgbikgPT4ge1xuICBpZiAodC5fdW5pZmllZF9jY19hY3Rpb25fbmFtZSA9PT0gXCIzRFNfUkVRVUlSRURcIikge1xuICAgIGlmICh0LnR5cGUgPT09IFwic3RyaXBlXzNkc1wiKVxuICAgICAgcmV0dXJuIGF3YWl0IHZvKGJsKHQpKSwgeyBtZXRhZGF0YUZvckNvbmZpcm1TdGVwOiB7fSB9O1xuICAgIGlmIChYbih0KSlcbiAgICAgIHJldHVybiB7IG1ldGFkYXRhRm9yQ29uZmlybVN0ZXA6IHsgYWlyd2FsbGV4OiBhd2FpdCBlbyhlLCB0KSB9IH07XG4gICAgaWYgKG9vKHQpKVxuICAgICAgcmV0dXJuIHsgbWV0YWRhdGFGb3JDb25maXJtU3RlcDogeyBhZHllbjogYXdhaXQgYW8oXG4gICAgICAgIG5bcC5DT1VOVFJZXSxcbiAgICAgICAgdCxcbiAgICAgICAgci5sb2NhbGVcbiAgICAgICkgfSB9O1xuICAgIGlmIChtbCh0KSlcbiAgICAgIHJldHVybiBhd2FpdCBobyh0KSwgeyBtZXRhZGF0YUZvckNvbmZpcm1TdGVwOiB7fSB9O1xuICAgIGlmIChTbCh0KSlcbiAgICAgIHJldHVybiBhd2FpdCBFbyh7IHJlcXVpcmVkX3VzZXJfYWN0aW9uczogW3RdIH0sIGUpLCB7IG1ldGFkYXRhRm9yQ29uZmlybVN0ZXA6IHt9IH07XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQgM0RTIHVzZXIgYWN0aW9uOiAke0pTT04uc3RyaW5naWZ5KHQpfWApO1xuICB9IGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVxdWlyZWQgdXNlciBhY3Rpb246ICR7SlNPTi5zdHJpbmdpZnkodCl9YCk7XG59LCBTbCA9IChlKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIFBvKFtlXSksICEwO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0sIGtsID0gKGUpID0+IHtcbiAgaWYgKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zKSB7XG4gICAgaWYgKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IG5vIHJlcXVpcmVkIHVzZXIgYWN0aW9uc1wiKTtcbiAgICBpZiAoZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IG11bHRpcGxlIHJlcXVpcmVkIHVzZXIgYWN0aW9uc1wiKTtcbiAgfSBlbHNlIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IG5vIHJlcXVpcmVkIHVzZXIgYWN0aW9uc1wiKTtcbiAgY29uc3QgdCA9IE1hLnNhZmVQYXJzZShlLnJlcXVpcmVkX3VzZXJfYWN0aW9uc1swXSk7XG4gIGlmICghdC5zdWNjZXNzKVxuICAgIHRocm93IFJ0KFwiVXNlciBhY3Rpb24gcmF3IHBheWxvYWRcIiwgZS5yZXF1aXJlZF91c2VyX2FjdGlvbnNbMF0pLCBSdChcIlBhcnNpbmcgZXJyb3JcIiwgdC5lcnJvciksIG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IHNjaGVtYSBvZiB1c2VyIGFjdGlvbiBwYXlsb2FkIGlzIG5vdCB2YWxpZFwiKTtcbiAgcmV0dXJuIHtcbiAgICB1c2VyQWN0aW9uOiB0LmRhdGFcbiAgfTtcbn0sIGJvID0gKGUsIHQpID0+IHtcbiAgaWYgKGUgPT09IFwic2V0dXBcIikge1xuICAgIGNvbnN0IHIgPSB0LmNjX3BtX2lkID8/IHQucGF5bWVudF9tZXRob2RzPy5bMF0uaWQ7XG4gICAgaWYgKCFyKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdGF0ZTogbm8gQ0MgUE0gSUQgb3IgcGF5bWVudF9tZXRob2RzIGZvdW5kIGluIFBGIHJlc3VsdFwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kZTogXCJzZXR1cFwiLFxuICAgICAgcmVzdWx0OiB7XG4gICAgICAgIHBheW1lbnRfbWV0aG9kX2lkOiByXG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXQuY2hlY2tvdXRfc3VjY2Vzc19yZXNwb25zZSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RhdGU6IG5vIGNoZWNrb3V0IHN1Y2Nlc3MgcmVzcG9uc2UgZnJvbSBzdGFydFBGXCIpO1xuICAgIHJldHVybiB7XG4gICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICByZXN1bHQ6IHQuY2hlY2tvdXRfc3VjY2Vzc19yZXNwb25zZVxuICAgIH07XG4gIH1cbn0sIHsgbG9nX186IE0sIGVycl9fOiBxciB9ID0gayhcImNvbW1vbi1jY1wiKTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpO1xuY29uc3QgSWwgPSBWKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogbixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIE0oXCLilJwgUnVubmluZyBjb21tb24gQ0MgZmxvdy4uLlwiLCB7IGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCB9KTtcbiAgICBjb25zdCBpID0gZS5hbnlDZGVDb25uZWN0aW9uLCBzID0gYXdhaXQgTihpKTtcbiAgICB2KFwiY29tbW9uX2NjX2Zsb3dfc3RhcnRlZFwiLCB7XG4gICAgICAuLi50LFxuICAgICAgcHJlZmlsbDogc1xuICAgIH0pO1xuICAgIGNvbnN0IGwgPSBzLmZpbmFsX2ZlYXR1cmVfcm9sbG91dF9zZXR0aW5ncz8udW5pZmllZF9jYyA/PyAwO1xuICAgIE0oYOKUnCBVbmlmaWVkIENDIHJvbGxvdXQ6ICR7TWF0aC5yb3VuZChsICogMTAwKX0lYCk7XG4gICAgY29uc3QgYyA9IE1hdGgucmFuZG9tKCksIHUgPSBjIDwgbCwgZCA9IHtcbiAgICAgIHJvbGw6IGMsXG4gICAgICB1bmlmaWVkQ0NSb2xsb3V0UmF0aW86IGwsXG4gICAgICB1c2VVbmlmaWVkQ0NGbG93OiB1XG4gICAgfTtcbiAgICBpZiAodSlcbiAgICAgIHJldHVybiBNKGDilJwgUGlja2VkIHVuaWZpZWQgQ0MgZmxvdyAoJHtjfSB2cyAke2x9KWApLCB2KFwidW5pZmllZF9jY19mbG93X3BpY2tlZFwiLCBkKSwgRWwoe1xuICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgICAgIGN1c3RvbVBhcmFtczogYSxcbiAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICB9KTtcbiAgICBNKGDilJwgUGlja2VkIGxlZ2FjeSBDQyBmbG93ICgke2N9IHZzICR7bH0pYCksIHYoXCJsZWdhY3lfY2NfZmxvd19waWNrZWRcIiwgZCksIE0oYOKUnCBWYWxpZGF0aW5nIG5vbi1DREUgZm9ybSBmaWVsZHMgW01vZGU6ICR7cy5tb2RlfV1gKTtcbiAgICBjb25zdCBtID0gRyhcbiAgICAgIHIsXG4gICAgICBuLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIHMuY2hlY2tvdXRfc2V0dGluZ3NcbiAgICApO1xuICAgIHYoXCJiaWxsaW5nX2RldGFpbHNfcmVjZWl2ZWRcIiwge1xuICAgICAgLi4ubVxuICAgIH0pO1xuICAgIGNvbnN0IGYgPSB7XG4gICAgICBzZXNzaW9uX2lkOiBlLmVsZW1lbnRzU2Vzc2lvbklkLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICBub25fY2RlX2Zvcm1fZmllbGRzOiBtLFxuICAgICAgZXh0cmFfbWV0YWRhdGE6IHtcbiAgICAgICAgb3JpZ2luOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICAgICB9LFxuICAgICAgdXNlX3VuaWZpZWRfY2NfZmxvdzogITEsXG4gICAgICBwYXltZW50X3JvdXRlX2lkOiBhLnBheW1lbnRSb3V0ZUlkLFxuICAgICAgY3VzdG9tZXJfbGFuZ3VhZ2U6IGllKCksXG4gICAgICAuLi5xKG0sIHMuY2hlY2tvdXRfc2V0dGluZ3MpXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgTShg4pScIFRva2VuaXppbmcgY2FyZCBpbmZvIGluIENERSBbU2Vzc2lvbjogJHtlLmVsZW1lbnRzU2Vzc2lvbklkfV1gKTtcbiAgICAgIGNvbnN0IHkgPSBhd2FpdCBVbihhLmN1cnJlbnRDZGVDb25uZWN0aW9ucywge1xuICAgICAgICBzZXNzaW9uX2lkOiBlLmVsZW1lbnRzU2Vzc2lvbklkXG4gICAgICB9KTtcbiAgICAgIGlmIChKbih5LCBuLmdldC5vblZhbGlkYXRpb25FcnJvciksIHMubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICAgIE0oYOKUnCBTZXR0aW5nIHVwIHBheW1lbnQgbWV0aG9kIGluIENERSBbVG9rZW46ICR7cy50b2tlbn1dYCk7XG4gICAgICAgIGNvbnN0IF8gPSBhd2FpdCBIcyhpLCBmKTtcbiAgICAgICAgcmV0dXJuIE0oYOKVsCBTZXR1cCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IFtQTSBJRDogJHtfLnBheW1lbnRfbWV0aG9kX2lkfV1gKSwgeyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogXyB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTShg4pScIEluaXRpYWwgY2hlY2tvdXQgZmxvdy4gQ2hlY2tpbmcgb3V0IGNhcmQgaW5mbyBpbiBDREUgW1Nlc3Npb246ICR7ZS5lbGVtZW50c1Nlc3Npb25JZH1dYCk7XG4gICAgICAgIGNvbnN0IF8gPSBhd2FpdCBPcihpLCBmKTtcbiAgICAgICAgcmV0dXJuIE0oXCLilbAgQ2hlY2tvdXQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS5cIiksIHsgbW9kZTogXCJjaGVja291dFwiLCByZXN1bHQ6IF8gfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoICh5KSB7XG4gICAgICBpZiAoeSBpbnN0YW5jZW9mIHhuICYmIHkub3JpZ2luYWxFcnJvck1lc3NhZ2UuaW5jbHVkZXMoXCIzRFNfUkVRVUlSRURcIikpIHtcbiAgICAgICAgTShcIuKUnCBDYXJkIHJlcXVpcmVzIDNEUywgc3RhcnRpbmcgbm9uLWxlZ2FjeSBwYXltZW50IGZsb3dcIiksIE0oXCJSZWNlaXZlZCAzRFMgZXJyb3IgcmVzcG9uc2UgaGVhZGVyczpcIiwgeS5yZXNwb25zZS5oZWFkZXJzKSwgdihcIjNkc19yZXF1aXJlZFwiLCB7XG4gICAgICAgICAgLi4udCxcbiAgICAgICAgICAuLi55LnJlc3BvbnNlLmhlYWRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IF8gPSB5LnJlc3BvbnNlLmhlYWRlcnMgPz8ge307XG4gICAgICAgIFwib3AtZXhpc3RpbmctY2MtcG0taWRcIiBpbiBfICYmIChmLmV4aXN0aW5nX2NjX3BtX2lkID0gX1tcIm9wLWV4aXN0aW5nLWNjLXBtLWlkXCJdLCBNKGDilJwgRXhpc3RpbmcgQ0MgUE0gSUQ6ICR7Zi5leGlzdGluZ19jY19wbV9pZH1gKSk7XG4gICAgICAgIGNvbnN0IGcgPSBnbCh5LnJlc3BvbnNlLmhlYWRlcnMpO1xuICAgICAgICBpZiAoZykge1xuICAgICAgICAgIE0oXCLilJwgUG9ja3l0IDNEUyBjYXNlIGRldGVjdGVkLiBHb2luZyB0aHJvdWdoIFBvY2t5dCAzRFMgZmxvdy5cIik7XG4gICAgICAgICAgY29uc3QgQSA9IGF3YWl0IHdsKGUuYmFzZVVybCwgeS5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgICBmLmV4dHJhX21ldGFkYXRhLnBvY2t5dCA9IEE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFhuKHkucmVzcG9uc2UuaGVhZGVycykpIHtcbiAgICAgICAgICBNKFwi4pScIEFpcndhbGxleCAzRFMgY2FzZSBkZXRlY3RlZC4gR29pbmcgdGhyb3VnaCBBaXJ3YWxsZXggM0RTIGZsb3cuXCIpO1xuICAgICAgICAgIGNvbnN0IEEgPSBhd2FpdCBlbyhlLmJhc2VVcmwsIHkucmVzcG9uc2UuaGVhZGVycyk7XG4gICAgICAgICAgZi5leHRyYV9tZXRhZGF0YS5haXJ3YWxsZXggPSBBO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvbyh5LnJlc3BvbnNlLmhlYWRlcnMpKSB7XG4gICAgICAgICAgTShcIuKUnCBBZHllbiAzRFMgY2FzZSBkZXRlY3RlZC4gR29pbmcgdGhyb3VnaCBBZHllbiAzRFMgZmxvdy5cIik7XG4gICAgICAgICAgY29uc3QgQSA9IGF3YWl0IGFvKFxuICAgICAgICAgICAgcltwLkNPVU5UUlldLFxuICAgICAgICAgICAgeS5yZXNwb25zZS5oZWFkZXJzLFxuICAgICAgICAgICAgcy5sb2NhbGVcbiAgICAgICAgICApO1xuICAgICAgICAgIGYuZXh0cmFfbWV0YWRhdGEuYWR5ZW4gPSBBO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBEbihpLCBmKTtcbiAgICAgICAgTShcIuKUnCBTdGFydCBwYXltZW50IGZsb3cgcmVzdWx0OlwiLCBiKTtcbiAgICAgICAgY29uc3QgUyA9IGIucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmZpbmQoXG4gICAgICAgICAgKEEpID0+IEEudHlwZSA9PT0gXCJjeWJlcnNvdXJjZV9wYXllcl9hdXRoXCJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKFMpIHtcbiAgICAgICAgICBNKFwi4pScIEN5YmVyc291cmNlIDNEUyBjYXNlIGRldGVjdGVkLiBHb2luZyB0aHJvdWdoIEN5YmVyc291cmNlIDNEUyBmbG93LlwiKTtcbiAgICAgICAgICBjb25zdCBBID0geW8ucGFyc2UoUyksICQgPSBhd2FpdCBobyh7XG4gICAgICAgICAgICAuLi5BLFxuICAgICAgICAgICAgX3VuaWZpZWRfY2NfYWN0aW9uX25hbWU6IFwiXCIsXG4gICAgICAgICAgICBfdW5pZmllZF9jY19wY2NzX2lkOiBcIlwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZi5leHRyYV9tZXRhZGF0YS5jeWJlcnNvdXJjZSA9ICQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgQyA9IHkucmVzcG9uc2UuaGVhZGVycz8uW1wib3Atc2hvdWxkLXVzZS1uZXctZmxvd1wiXSAhPT0gXCJ0cnVlXCI7XG4gICAgICAgICFnICYmICFTID8gQyA/IChNKFwi4pScIFVzaW5nIHN0cmlwZSAzRFMgZmxvd1wiKSwgYXdhaXQgdm8oUmwoYikpKSA6IChNKFwi4pScIFVzaW5nIGNvbW1vbiAzRFMgZmxvd1wiKSwgYXdhaXQgRW8oYiwgZS5iYXNlVXJsKSkgOiBNKFwi4pScIFByZS1zdGFydCAzRFMgaXMgc3VjY2Vzc2Z1bCwgb3RoZXIgM0RTIGZsb3dzIHdpbGwgYmUgc2tpcHBlZC5cIik7XG4gICAgICAgIGNvbnN0IEwgPSBiLmNjX3BtX2lkO1xuICAgICAgICBpZiAocy5tb2RlID09PSBcInNldHVwXCIpIHtcbiAgICAgICAgICBNKGDilJwgQ29uZmlybWluZyBwYXltZW50IGZsb3cgW2NjX3BtX2lkOiAke0x9XWApO1xuICAgICAgICAgIGNvbnN0IEEgPSBhd2FpdCB4KGksIHtcbiAgICAgICAgICAgIHNlY3VyZV90b2tlbjogcy50b2tlbixcbiAgICAgICAgICAgIGV4aXN0aW5nX2NjX3BtX2lkOiBMXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgTShcIuKUnCBDb25maXJtIHBheW1lbnQgZmxvdyByZXN1bHQgcmVjZWl2ZWQgUmVzdWx0OlwiLCBBKTtcbiAgICAgICAgICBjb25zdCAkID0gbHQoQSk7XG4gICAgICAgICAgcmV0dXJuIE0oYOKVsCBTZXR1cCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IFtQTSBJRDogJHskLnBheW1lbnRfbWV0aG9kX2lkfV1gKSwgeyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogJCB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIE0oYOKUnCBDaGVja2luZyBvdXQgYWZ0ZXIgM0RTIGZsb3cgW0Zsb3c6ICR7QyA/IFwibGVnYWN5XCIgOiBcIm5ld1wifV1gKTtcbiAgICAgICAgICBjb25zdCBBID0gYXdhaXQgT3IoaSwge1xuICAgICAgICAgICAgLi4uZixcbiAgICAgICAgICAgIGV4aXN0aW5nX2NjX3BtX2lkOiBMLFxuICAgICAgICAgICAgZG9fbm90X3VzZV9sZWdhY3lfY2NfZmxvdzogQ1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBNKFwi4pWwIENoZWNrb3V0IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuXCIpLCB7IG1vZGU6IFwiY2hlY2tvdXRcIiwgcmVzdWx0OiBBIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRocm93IHFyKFwi4pWwIEVycm9yIGNoZWNraW5nIG91dCBjYXJkIGluZm8gaW4gQ0RFXCIpLCBxcih5KSwgeTtcbiAgICB9XG4gIH1cbiksIFJsID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmZpbmQoKHIpID0+IHIudHlwZSA9PT0gXCJzdHJpcGVfM2RzXCIpO1xuICBpZiAoIXQpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3RyaXBlIDNEUyBhY3Rpb24gZm91bmRcIik7XG4gIHJldHVybiBKaS5wYXJzZSh0KTtcbn0sIEZsID0gW1wiYWlyd2FsbGV4X3BheW1lbnRfY29uc2VudFwiLCBcImFkeWVuXCJdLCBQbyA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSBlLmZpbmQoKHIpID0+IEZsLmluY2x1ZGVzKHIudHlwZSkpO1xuICBpZiAoIXQpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gY29tbW9uIDNEUyBhY3Rpb24gZm91bmRcIik7XG4gIHJldHVybiBvYS5wYXJzZSh0KTtcbn0sIEVvID0gYXN5bmMgKGUsIHQpID0+IHtcbiAgY29uc3QgciA9IFBvKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zKTtcbiAgaWYgKHIucmVkaXJlY3RfdXJsID09PSBcIjNEU19DT01QTEVURVwiKSB7XG4gICAgTShcIuKUnCAzRFMgZmxvdyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIpLCB2KFwiM2RzX2NvbXBsZXRlXCIpO1xuICAgIHJldHVybjtcbiAgfVxuICBNKGDilJwgVXNpbmcgY29tbW9uIDNEUyBmbG93IFtVUkw6ICR7ci5yZWRpcmVjdF91cmx9XWApLCB2KFwiM2RzX3JlZGlyZWN0XCIsIHtcbiAgICAuLi5yXG4gIH0pO1xuICBjb25zdCB7IHN0YXR1czogbiB9ID0gYXdhaXQgbGUoeyB1cmw6IHIucmVkaXJlY3RfdXJsLCBiYXNlVXJsOiB0IH0pO1xuICBpZiAoTShg4pWwIDNEUyB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7bn1dYCksIG4gPT09IEYuQ0FOQ0VMTEVEKVxuICAgIHRocm93IHYoXCIzZHNfY2FuY2VsbGVkXCIpLCBuZXcgRXJyb3IoXCIzRFMgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgaWYgKG4gPT09IEYuRkFJTFVSRSlcbiAgICB0aHJvdyB2KFwiM2RzX2ZhaWx1cmVcIiksIG5ldyBFcnJvcihcIjNEUyB2ZXJpZmljYXRpb24gZmFpbGVkXCIpO1xuICB2KFwiY29tbW9uXzNkc19jb21wbGV0ZWRcIik7XG59LCBUbCA9IHokMS5vYmplY3Qoe1xuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJsb29wXCIpLFxuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJjcnlwdG9cIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBtZXJjaGFudF9pZDogeiQxLnN0cmluZygpLFxuICAgIGVudGl0eV9pZDogeiQxLnN0cmluZygpLFxuICAgIGFwaV90b2tlbjogeiQxLnN0cmluZygpLFxuICAgIHN1cHBvcnRlZF9jdXJyZW5jaWVzOiB6JDEuYXJyYXkoeiQxLnN0cmluZygpKSxcbiAgICBlbnZpcm9ubWVudDogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgeyBsb2dfXzogZWUsIGVycl9fOiBObCB9ID0gayhcImxvb3AtY3J5cHRvXCIpLCBMbCA9IGNlKFxuICBhc3luYyAoeyBjb250ZXh0OiBlIH0pID0+IHtcbiAgICBlZShcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgTG9vcCBDcnlwdG8uLi5cIik7XG4gICAgY29uc3QgdCA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBUbCk7XG4gICAgZWUoYGNoZWNrb3V0UGF5bWVudE1ldGhvZDogJHtKU09OLnN0cmluZ2lmeSh0KX1gKSwgZWUoXCJTdGFydGluZyBMb29wIENyeXB0byBmbG93Li4uXCIpO1xuICAgIGNvbnN0IHIgPSBhd2FpdCBOKGUuYW55Q2RlQ29ubmVjdGlvbiksIG4gPSByLm1vZGUgPT09IFwic2V0dXBcIiwgYSA9IGF3YWl0IFV0KGUuYW55Q2RlQ29ubmVjdGlvbiwge1xuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHRcbiAgICB9KSwgaSA9IGF3YWl0IFEoXG4gICAgICBlLmFueUNkZUNvbm5lY3Rpb24sXG4gICAgICByLnRva2VuLFxuICAgICAgbixcbiAgICAgIHZvaWQgMFxuICAgICk7XG4gICAgaWYgKCFuICYmICF0Lm1ldGFkYXRhLnN1cHBvcnRlZF9jdXJyZW5jaWVzLmluY2x1ZGVzKHIuY3VycmVuY3kpKVxuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBDdXJyZW5jeSAke3IuY3VycmVuY3l9IG5vdCBlbmFibGVkIGZvciBMb29wLiBFbmFibGVkIGN1cnJlbmNpZXM6ICR7dC5tZXRhZGF0YS5zdXBwb3J0ZWRfY3VycmVuY2llc31gXG4gICAgICApO1xuICAgIGlmICghYSB8fCAhYS5uZXh0X2FjdGlvbl9tZXRhZGF0YSlcbiAgICAgIHRocm93IEVycm9yKFwiRmFpbGVkIHRvIGZldGNoIG5lY2Vzc2FyeSBzZXR1cCBkYXRhIGZvciBMb29wXCIpO1xuICAgIGNvbnN0IHMgPSBhLm5leHRfYWN0aW9uX21ldGFkYXRhO1xuICAgIGxldCBsID0gcy5hdXRob3JpemF0aW9uX2Ftb3VudCwgYyA9IHMubWluX2F1dGhvcml6YXRpb25fYW1vdW50O1xuICAgIGNvbnN0IHUgPSBzLmFsbG93X2N1c3RvbWVyX3RvX2Nob29zZV9hdXRoO1xuICAgIGxldCBkO1xuICAgIG4gPyAoZCA9IDAsIGwgPSBNYXRoLm1heChsLCBjKSkgOiAoZCA9IChpID8gaS5hbW91bnRBdG9tIDogci5hbW91bnRfdG90YWxfYXRvbSkgKiBzLnRva2VuX3ByaWNlLCBjID0gTWF0aC5tYXgoYywgZCksIGwgPSBNYXRoLm1heChsLCBjKSk7XG4gICAgY29uc3QgbSA9IGQsIGYgPSB2NCgpLCB5ID0ge1xuICAgICAgcGF5bWVudFVzZEFtb3VudDogbSxcbiAgICAgIHN1Z2dlc3RlZEF1dGhvcml6YXRpb25Vc2RBbW91bnQ6IGwsXG4gICAgICBjdXN0b21lclJlZklkOiBmLFxuICAgICAgbWluQXV0aG9yaXphdGlvblVzZEFtb3VudDogYyxcbiAgICAgIGFsbG93Q3VzdG9tZXJUb0Nob29zZUF1dGg6IHVcbiAgICB9LCBfID0ge1xuICAgICAgYXBpVG9rZW46IHQubWV0YWRhdGEuYXBpX3Rva2VuLFxuICAgICAgZW50aXR5SWQ6IHQubWV0YWRhdGEuZW50aXR5X2lkLFxuICAgICAgbWVyY2hhbnRJZDogdC5tZXRhZGF0YS5tZXJjaGFudF9pZCxcbiAgICAgIGVudmlyb25tZW50OiB0Lm1ldGFkYXRhLmVudmlyb25tZW50XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgd2lkZ2V0UHJvcHM6IHksXG4gICAgICBpbml0TG9vcENvbm5lY3RQcm9wczogX1xuICAgIH07XG4gIH1cbiksIE1sID0gVihcbiAgYXN5bmMgKHtcbiAgICBjb250ZXh0OiBlLFxuICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICBub25DZGVGb3JtSW5wdXRzOiByLFxuICAgIGZvcm1DYWxsYmFja3M6IG4sXG4gICAgY3VzdG9tUGFyYW1zOiBhXG4gIH0pID0+IHtcbiAgICBlZShcIlJ1bm5pbmcgTG9vcCBmbG93Li4uXCIpLCBlZShcImNvbnRleHRcIiwgZSksIGVlKFwiY2hlY2tvdXRQYXltZW50TWV0aG9kXCIsIHQpLCBlZShcIm5vbkNkZUZvcm1JbnB1dHNcIiwgciksIGVlKFwiZmxvd0NhbGxiYWNrc1wiLCBuKSwgZWUoXCJjdXN0b21QYXJhbXNcIiwgYSk7XG4gICAgY29uc3QgaSA9IGF3YWl0IE4oZS5hbnlDZGVDb25uZWN0aW9uKTtcbiAgICBlZShg4pScIFZhbGlkYXRpbmcgbm9uLUNERSBmb3JtIGZpZWxkcyBbTW9kZTogJHtpLm1vZGV9XWApO1xuICAgIGNvbnN0IHMgPSBHKFxuICAgICAgcixcbiAgICAgIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yLFxuICAgICAgaS5jaGVja291dF9zZXR0aW5nc1xuICAgICksIGwgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGMgPSBpLm1vZGUgIT09IFwic2V0dXBcIiwgdSA9IHEocywgaS5jaGVja291dF9zZXR0aW5ncyk7XG4gICAgaWYgKCFhKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2hlY2tvdXQgZmFpbGVkLiBGYWlsZWQgdG8gcHJvcGVybHkgc3VibWl0IGZvcm0gZGF0YS5cIik7XG4gICAgaWYgKCFhLnN1Y2Nlc3MpXG4gICAgICB0aHJvdyB2KFwibG9vcF9wYXlfZmxvd19mYWlsdXJlXCIsIGEpLCBuZXcgRXJyb3IoXCJDaGVja291dCBmYWlsZWQuIFN1Y2Nlc3MgaXMgbm90IHRydWUuXCIpO1xuICAgIGNvbnN0IGQgPSBhd2FpdCBaKGUuYW55Q2RlQ29ubmVjdGlvbiwge1xuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgLi4udSxcbiAgICAgIHVzZV9wYXlfZmlyc3RfZmxvdzogYyxcbiAgICAgIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogYyA/IHtcbiAgICAgICAgLy8gVE9ETyBhZGQgY291cG9uIGFuZCBjYXJ0IGFkanVzdGVkIGxpbmUgaXRlbXMgbGF0ZXJcbiAgICAgICAgbGluZV9pdGVtczogaS5saW5lX2l0ZW1zLFxuICAgICAgICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IGkuYW1vdW50X3RvdGFsX2F0b20sXG4gICAgICAgIHByb21vdGlvbl9jb2RlOiBzW3AuUFJPTU9USU9OX0NPREVdXG4gICAgICB9IDogdm9pZCAwLFxuICAgICAgY3VzdG9tZXJfbGFuZ3VhZ2U6IGllKClcbiAgICB9KSwgbSA9IGF3YWl0IHgobCwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBpLnRva2VuLFxuICAgICAgdGhlaXJfcG1faWQ6IGEucGF5bWVudE1ldGhvZC5wYXltZW50TWV0aG9kSWQsXG4gICAgICAvLyBOT1RFOiB3ZSBkbyBoYXZlIHRoZSBjaGVja291dCBhdHRlbXB0IGlkIGhlcmUgZXZlbiBpZiBpdHMgYSBzZXR1cCwgYnV0IGZvciBub3cgd2UgZG9uJ3QgaW5jbHVkZSBpdFxuICAgICAgLy8gYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGNoZWNrb3V0IGF0dGVtcHQgc3VwcG9ydCBmb3Igc2V0dXAgaW50ZW50cy5cbiAgICAgIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IGMgPyBkLmNoZWNrb3V0X2F0dGVtcHRfaWQgOiB2b2lkIDAsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgbG9vcF9jdXN0b21lcjogYS5jdXN0b21lcixcbiAgICAgICAgbG9vcF9wYXltZW50X21ldGhvZDogYS5wYXltZW50TWV0aG9kLFxuICAgICAgICBsb29wX3N1Y2Nlc3M6IGEuc3VjY2VzcyxcbiAgICAgICAgbG9vcF9wYXlpbl9pZDogYS5wYXlpbklkXG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGVlKGBDb25maXJtIHJlc3VsdDogJHttfWApLCBpLm1vZGUgPT09IFwic2V0dXBcIikge1xuICAgICAgZWUoXCJEb2luZyBwYXltZW50IHNldHVwLi4uXCIpLCBlZShcIuKUnCBDb25maXJtIHBheW1lbnQgZmxvdyByZXN1bHQgcmVjZWl2ZWQgUmVzdWx0OlwiLCBtKTtcbiAgICAgIGNvbnN0IGYgPSBsdChtKTtcbiAgICAgIHJldHVybiBlZShg4pWwIFNldHVwIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgW1BNIElEOiAke2YucGF5bWVudF9tZXRob2RfaWR9XWApLCB7IG1vZGU6IFwic2V0dXBcIiwgcmVzdWx0OiBmIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChlZShcIkRvaW5nIGNoZWNrb3V0Li4uXCIpLCAhbS5wYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZSlcbiAgICAgICAgdGhyb3cgTmwoXCJDaGVja291dCBmYWlsZWQsIG5vIHBheS1maXJzdCBzdWNjZXNzIHJlc3BvbnNlOlwiLCBtKSwgbmV3IEVycm9yKFwiQ2hlY2tvdXQgZmFpbGVkLCBwbGVhc2UgdHJ5IGFnYWluIHdpdGggYW5vdGhlciBwYXltZW50IG1ldGhvZC5cIik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICAgIHJlc3VsdDogbS5wYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZVxuICAgICAgfTtcbiAgICB9XG4gIH1cbiksIHsgbG9nX186IFNlLCBlcnJfXzogeGwgfSA9IGsoXCJwYXlwYWxcIiksIENvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcInBheXBhbFwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3QoeyBjbGllbnRfaWQ6IHokMS5zdHJpbmcoKSB9KSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwicGF5cGFsXCIpXG59KSwgRGwgPSBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgY29uc3QgciA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBDbyk7XG4gIGlmICghcilcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXlQYWwgQ1BNIG5vdCBmb3VuZCBpbiBhdmFpbGFibGUgcGF5bWVudCBtZXRob2RzXCIpO1xuICByZXR1cm4ge1xuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgc3RhcnRGbG93OiAoKSA9PiBSLnBheXBhbC5ydW4oe1xuICAgICAgY29udGV4dDogZSxcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgIGZvcm1DYWxsYmFja3M6IHQsXG4gICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICBjdXN0b21QYXJhbXM6IHsgc2V0dGluZ3M6IHt9IH1cbiAgICB9KVxuICB9O1xufSwgVWwgPSBWKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogdCxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogbixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBTZShcIlJ1bm5pbmcgUGF5UGFsIGZsb3cuLi5cIik7XG4gICAgICBjb25zdCBpID0gZS5hbnlDZGVDb25uZWN0aW9uLCBzID0gYXdhaXQgTihpKSwgeyBpc0Fub255bW91czogbCwgdXNlUmVkaXJlY3RGbG93OiBjIH0gPSBhLnNldHRpbmdzID8/IHt9O1xuICAgICAgU2UoXCJWZXJpZnlpbmcgQ1BNLi4uXCIpO1xuICAgICAgY29uc3QgdSA9IENvLnBhcnNlKHIpO1xuICAgICAgU2UoXCLilJwgVmFsaWRhdGluZyBub24tQ0RFIGZvcm0gZmllbGRzXCIpO1xuICAgICAgY29uc3QgZCA9IEcodCwgbi5nZXQub25WYWxpZGF0aW9uRXJyb3IsIHtcbiAgICAgICAgLi4ubCA/IEJuKCkgOiB2b2lkIDAsXG4gICAgICAgIC4uLnMuY2hlY2tvdXRfc2V0dGluZ3NcbiAgICAgIH0pLCBtID0gcShkLCBzLmNoZWNrb3V0X3NldHRpbmdzKTtcbiAgICAgIFNlKGBTdGFydGluZyBwYXltZW50IGZsb3cuLi4gTW9kZTogJHtzLm1vZGV9YCk7XG4gICAgICBjb25zdCBmID0gdjQoKSwgeSA9ICExLCBfID0ge1xuICAgICAgICBwYXltZW50X3Byb3ZpZGVyOiB1LnByb3ZpZGVyLFxuICAgICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdSxcbiAgICAgICAgdXNlX3BheV9maXJzdF9mbG93OiB5LFxuICAgICAgICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IHkgPyB7XG4gICAgICAgICAgbGluZV9pdGVtczogcy5saW5lX2l0ZW1zLFxuICAgICAgICAgIGRpc3BsYXllZF90b3RhbF9hbW91bnRfYXRvbTogcy5hbW91bnRfdG90YWxfYXRvbVxuICAgICAgICB9IDogdm9pZCAwLFxuICAgICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgICB1c2VfcGF5cGFsX3JlZGlyZWN0X2Zsb3c6IGMsXG4gICAgICAgICAgZnJvbnRlbmRfdG9rZW5fZm9yX3JlZGlyZWN0X2Zsb3c6IGZcbiAgICAgICAgfSxcbiAgICAgICAgLi4ubVxuICAgICAgfSwgZyA9IG5ldyBVUkwoXCIvYXBwL3ByZS1hY3Rpb24vc3RhcnQvXCIsIGUuYmFzZVVybCkudG9TdHJpbmcoKSwgdyA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoXykpLCBoID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgIHN0OiBzLnRva2VuLFxuICAgICAgICByOiB3XG4gICAgICB9KSwgYiA9IGAke2d9PyR7aC50b1N0cmluZygpfWA7XG4gICAgICBpZiAoYylcbiAgICAgICAgdGhyb3cgU2UoXCJTdGFydGluZyByZWRpcmVjdCBtb2RlIGZvciBQYXlQYWwuLi5cIiksIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYiwgYXdhaXQgRHQoMjAgKiAxZTMpLCBuZXcgRXJyb3IoXCJQYXlwYWwgZmxvdyB0aW1lZCBvdXQsIHBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIHBheW1lbnQgbWV0aG9kLlwiKTtcbiAgICAgIGNvbnN0IFMgPSBhd2FpdCBXbihcbiAgICAgICAgXCJQYXlQYWxcIixcbiAgICAgICAgaSxcbiAgICAgICAgZixcbiAgICAgICAgYlxuICAgICAgKTtcbiAgICAgIFNlKFwiUGF5cGFsIGZsb3cgcmVzdWx0XCIsIFMpO1xuICAgICAgY29uc3QgQyA9IHJyKFMuaHJlZiwgXCJjYXR0XCIpLCBMID0gcnIoUy5ocmVmLCBcImFwcHJvdmFsX3Nlc3Npb25faWRcIiksIEEgPSBhd2FpdCB4KGksIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBzLnRva2VuLFxuICAgICAgICBjaGVja291dF9hdHRlbXB0X2lkOiB5ID8gQyA6IHZvaWQgMCxcbiAgICAgICAgdGhlaXJfcG1faWQ6IHkgPyBMIDogdm9pZCAwXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBTZShcIkNvbmZpcm0gcGF5bWVudCBmbG93IHJlc3VsdFwiLCBBKSwgcmUoe1xuICAgICAgICBsb2dQcmVmaXg6IFwicGF5cGFsXCIsXG4gICAgICAgIGFueUNkZUNvbm5lY3Rpb246IGksXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdSxcbiAgICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiBkLFxuICAgICAgICBjb25maXJtUmVzdWx0OiBBLFxuICAgICAgICB1c2VQYXlGaXJzdEZsb3c6IHlcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgIHRocm93IHhsKFwiUGF5UGFsIHBheW1lbnQgZXJyb3JcIiwgaSksIHYoXCJjaGVja291dF9lcnJvclwiLCB7IHBheW1lbnRfbWV0aG9kOiBcInBheXBhbFwiLCBlcnJvcjogaSB9KSwgbmV3IEVycm9yKGk/Lm1lc3NhZ2UgPz8gXCJVbmtub3duIGVycm9yXCIpO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogbWUsIGVycl9fOiBWciB9ID0gayhcInBvY2t5dC1wYXlwYWxcIiksIEFvID0geiQxLm9iamVjdCh7XG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInBvY2t5dFwiKSxcbiAgcHJvdmlkZXI6IHokMS5saXRlcmFsKFwicGF5cGFsXCIpXG59KTtcbnokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgcGF5cGFsX2lmcmFtZV91cmw6IHokMS5zdHJpbmcoKSxcbiAgICB2ZXJpZnlfdG9rZW46IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSk7XG5jb25zdCBPbCA9IGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICBjb25zdCByID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIEFvKTtcbiAgaWYgKCFyKVxuICAgIHRocm93IG5ldyBFcnJvcihcIlBvY2t5dCBQYXlQYWwgQ1BNIG5vdCBmb3VuZCBpbiBhdmFpbGFibGUgcGF5bWVudCBtZXRob2RzXCIpO1xuICByZXR1cm4ge1xuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgc3RhcnRGbG93OiAoKSA9PiBSLnBvY2t5dFBheXBhbC5ydW4oe1xuICAgICAgY29udGV4dDogZSxcbiAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgIGZvcm1DYWxsYmFja3M6IHQsXG4gICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICBjdXN0b21QYXJhbXM6IHsgc2V0dGluZ3M6IHt9IH1cbiAgICB9KVxuICB9O1xufSwgamwgPSBWKFxuICBhc3luYyAoe1xuICAgIGNvbnRleHQ6IGUsXG4gICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgIG5vbkNkZUZvcm1JbnB1dHM6IHIsXG4gICAgZm9ybUNhbGxiYWNrczogbixcbiAgICBjdXN0b21QYXJhbXM6IGFcbiAgfSkgPT4ge1xuICAgIG1lKFwiUnVubmluZyBQb2NreXQgUGF5cGFsIGZsb3cuLi5cIik7XG4gICAgY29uc3QgaSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgcyA9IGF3YWl0IE4oaSk7XG4gICAgbWUoXCJWZXJpZnlpbmcgQ1BNLi4uXCIpO1xuICAgIGNvbnN0IGwgPSBBby5wYXJzZSh0KTtcbiAgICBtZShcIuKUnCBWYWxpZGF0aW5nIG5vbi1DREUgZm9ybSBmaWVsZHNcIik7XG4gICAgY29uc3QgYyA9IGE/LnNldHRpbmdzLCB1ID0gRyhcbiAgICAgIHIsXG4gICAgICBuLmdldC5vblZhbGlkYXRpb25FcnJvcixcbiAgICAgIGM/LmRlZmF1bHRGaWVsZFZhbHVlc1xuICAgICksIGQgPSBxKHUsIHMuY2hlY2tvdXRfc2V0dGluZ3MpO1xuICAgIG1lKGBTdGFydGluZyBwYXltZW50IGZsb3cuLi4gTW9kZTogJHtzLm1vZGV9YCk7XG4gICAgY29uc3QgbSA9IHY0KCksIGYgPSBzLm1vZGUgIT09IFwic2V0dXBcIiwgeSA9IHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IGwucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogbCxcbiAgICAgIHVzZV9wYXlfZmlyc3RfZmxvdzogZixcbiAgICAgIHBheV9maXJzdF9mbG93X2NhcnRfaW5mbzogZiA/IHtcbiAgICAgICAgLy8gVE9ETyBhZGQgY291cG9uIGFuZCBjYXJ0IGFkanVzdGVkIGxpbmUgaXRlbXMgbGF0ZXJcbiAgICAgICAgbGluZV9pdGVtczogcy5saW5lX2l0ZW1zLFxuICAgICAgICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IHMuYW1vdW50X3RvdGFsX2F0b21cbiAgICAgIH0gOiB2b2lkIDAsXG4gICAgICBwcm9jZXNzb3Jfc3BlY2lmaWNfbWV0YWRhdGE6IHtcbiAgICAgICAgdXNlX3BheXBhbF9yZWRpcmVjdF9mbG93OiAhIWE/LnNldHRpbmdzPy51c2VSZWRpcmVjdEZsb3csXG4gICAgICAgIGZyb250ZW5kX3Rva2VuX2Zvcl9yZWRpcmVjdF9mbG93OiBtXG4gICAgICB9LFxuICAgICAgLi4uZFxuICAgIH0sIF8gPSBuZXcgVVJMKFwiL2FwcC9wcmUtYWN0aW9uL3N0YXJ0L1wiLCBlLmJhc2VVcmwpLnRvU3RyaW5nKCksIGcgPSBidG9hKEpTT04uc3RyaW5naWZ5KHkpKSwgdyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgc3Q6IHMudG9rZW4sXG4gICAgICByOiBnXG4gICAgfSksIGggPSBgJHtffT8ke3cudG9TdHJpbmcoKX1gO1xuICAgIGlmIChhPy5zZXR0aW5ncz8udXNlUmVkaXJlY3RGbG93KVxuICAgICAgdGhyb3cgbWUoXCJTdGFydGluZyByZWRpcmVjdCBtb2RlIGZvciBQYXlQYWwuLi5cIiksIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaCwgYXdhaXQgRHQoMjAgKiAxZTMpLCBuZXcgRXJyb3IoXCJQYXlwYWwgZmxvdyB0aW1lZCBvdXQsIHBsZWFzZSB0cnkgYWdhaW4gd2l0aCBhbm90aGVyIHBheW1lbnQgbWV0aG9kLlwiKTtcbiAgICBtZShcIlN0YXJ0aW5nIHBvcHVwIG1vZGUgZm9yIFBheVBhbC4uLlwiKSwgbWUoXCJPcGVuaW5nIHBheXBhbCBpZnJhbWUuLi5cIik7XG4gICAgY29uc3QgYiA9IGF3YWl0IFduKFxuICAgICAgXCJQYXlQYWxcIixcbiAgICAgIGksXG4gICAgICBtLFxuICAgICAgaFxuICAgICk7XG4gICAgbWUoXCJQYXlwYWwgZmxvdyByZXN1bHRcIiwgYik7XG4gICAgY29uc3QgUyA9IHdvKGIuaHJlZiksIEMgPSBycihiLmhyZWYsIFwiY2F0dFwiKTtcbiAgICBpZiAoIUMpXG4gICAgICB0aHJvdyBWcihcIkNoZWNrb3V0IGF0dGVtcHQgSUQgbm90IGZvdW5kIGluIHJlZGlyZWN0IFVSTDpcIiwgYi5ocmVmKSwgbmV3IEVycm9yKFwiQ2hlY2tvdXQgYXR0ZW1wdCBJRCBub3QgZm91bmQgaW4gcmVkaXJlY3QgVVJMXCIpO1xuICAgIG1lKGBDb25maXJtaW5nIHBheW1lbnQgZmxvdyB1c2luZyB2YXVsdCBJRCAke1N9YCk7XG4gICAgY29uc3QgTCA9IGF3YWl0IHgoaSwge1xuICAgICAgc2VjdXJlX3Rva2VuOiBzLnRva2VuLFxuICAgICAgdGhlaXJfcG1faWQ6IFMsXG4gICAgICBjaGVja291dF9hdHRlbXB0X2lkOiBmID8gQyA6IHZvaWQgMFxuICAgIH0pO1xuICAgIGlmIChtZShcIkNvbmZpcm0gcGF5bWVudCBmbG93IHJlc3VsdFwiLCBMKSwgcy5tb2RlID09PSBcInNldHVwXCIpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBtb2RlOiBcInNldHVwXCIsXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIHBheW1lbnRfbWV0aG9kX2lkOiBMLnBheW1lbnRfbWV0aG9kc1swXS5pZFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIGlmICghTC5wYXlfZmlyc3Rfc3VjY2Vzc19yZXNwb25zZSlcbiAgICAgIHRocm93IFZyKFwiQ2hlY2tvdXQgZmFpbGVkLCBubyBwYXktZmlyc3Qgc3VjY2VzcyByZXNwb25zZTpcIiwgTCksIG5ldyBFcnJvcihcIkNoZWNrb3V0IGZhaWxlZCwgcGxlYXNlIHRyeSBhZ2FpbiB3aXRoIGFub3RoZXIgcGF5bWVudCBtZXRob2QuXCIpO1xuICAgIHJldHVybiB7XG4gICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICByZXN1bHQ6IEwucGF5X2ZpcnN0X3N1Y2Nlc3NfcmVzcG9uc2VcbiAgICB9O1xuICB9XG4pLCB7IGxvZ19fOiBXLCBlcnJfXzogYnQgfSA9IGsoXCJzdHJpcGUtYWZmaXJtXCIpLCBTbyA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJhZmZpcm1cIiksXG4gIHByb2Nlc3Nvcl9uYW1lOiB6JDEubGl0ZXJhbChcInN0cmlwZVwiKSxcbiAgbWV0YWRhdGE6IHokMS5vYmplY3Qoe1xuICAgIHN0cmlwZV9wazogeiQxLnN0cmluZygpXG4gIH0pXG59KSwgJGwgPSB6JDEuYXJyYXkoXG4gIHokMS5vYmplY3Qoe1xuICAgIG91cl9leGlzdGluZ19wbV9pZDogeiQxLnN0cmluZygpLm51bGxpc2goKSxcbiAgICBjbGllbnRfc2VjcmV0OiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpLCBHbCA9IGNlKFxuICBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgICBXKFwiQ2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBDUE1zIGZvciBTdHJpcGUgQWZmaXJtLi4uXCIpO1xuICAgIGNvbnN0IHIgPSBPKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgU28pO1xuICAgIGlmICghcilcbiAgICAgIHJldHVybiBXKFwiTm8gU3RyaXBlIEFmZmlybSBDUE0gZm91bmRcIiksIHsgaXNBdmFpbGFibGU6ICExLCBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH0gfTtcbiAgICBXKFwiU3RhcnRpbmcgc3RyaXBlIGFmZmlybSBmbG93Li4uXCIpO1xuICAgIGNvbnN0IG4gPSBlLmFueUNkZUNvbm5lY3Rpb247XG4gICAgcmV0dXJuIChhd2FpdCBOKG4pKS5tb2RlID09PSBcInNldHVwXCIgPyAoVyhcIlNldHVwIG1vZGUgaXMgbm90IHN1cHBvcnRlZCBmb3IgU3RyaXBlIEFmZmlybSBmbG93XCIpLCB7IGlzQXZhaWxhYmxlOiAhMSwgc3RhcnRGbG93OiBhc3luYyAoKSA9PiB7XG4gICAgfSB9KSA6IHtcbiAgICAgIGlzQXZhaWxhYmxlOiAhMCxcbiAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKGwpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gUi5zdHJpcGVBZmZpcm0ucnVuKHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0LFxuICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBsID8/IHt9LFxuICAgICAgICAgICAgaW5pdFJlc3VsdDogeyBpc0F2YWlsYWJsZTogITAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChjKSB7XG4gICAgICAgICAgdGhyb3cgYnQoXCJFcnJvciBzdGFydGluZyBBZmZpcm0gZmxvdzpcIiwgYyksIGM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG4pLCBxbCA9IFYoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCwgbm9uQ2RlRm9ybUlucHV0czogciwgZm9ybUNhbGxiYWNrczogbiB9KSA9PiB7XG4gICAgVyhcIlJ1bm5pbmcgU3RyaXBlIEFmZmlybSBwYXktZmlyc3QgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBhID0gZS5hbnlDZGVDb25uZWN0aW9uLCBpID0gYXdhaXQgTihhKTtcbiAgICBXKFwiVmFsaWRhdGluZyBmb3JtIGZpZWxkcy4uLlwiKTtcbiAgICBjb25zdCBzID0gRyhyLCBuLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgdihcImJpbGxpbmdfZGV0YWlsc19yZWNlaXZlZFwiLCB7XG4gICAgICAuLi5zXG4gICAgfSksIFcoXCJDcmVhdGluZyBjYXJ0IGluZm8gZm9yIHBheS1maXJzdCBmbG93Li4uXCIpO1xuICAgIGNvbnN0IGwgPSB7XG4gICAgICBsaW5lX2l0ZW1zOiBpLmxpbmVfaXRlbXMubWFwKChoKSA9PiAoe1xuICAgICAgICBwcmljZV9pZDogaC5wcmljZV9pZCxcbiAgICAgICAgcXVhbnRpdHk6IGgucXVhbnRpdHlcbiAgICAgIH0pKSxcbiAgICAgIHByb21vdGlvbl9jb2RlOiBzW3AuUFJPTU9USU9OX0NPREVdIHx8IHZvaWQgMCxcbiAgICAgIGRpc3BsYXllZF90b3RhbF9hbW91bnRfYXRvbTogaS5hbW91bnRfdG90YWxfYXRvbVxuICAgIH07XG4gICAgVyhcIlN0YXJ0aW5nIHBheS1maXJzdCBwYXltZW50IGZsb3cgZm9yIEFmZmlybS4uLlwiKTtcbiAgICBjb25zdCBjID0gYXdhaXQgWihhLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICB1c2VfcGF5X2ZpcnN0X2Zsb3c6ICEwLFxuICAgICAgcGF5X2ZpcnN0X2Zsb3dfY2FydF9pbmZvOiBsLFxuICAgICAgLi4ucShzLCBpLmNoZWNrb3V0X3NldHRpbmdzKSxcbiAgICAgIGN1c3RvbWVyX2xhbmd1YWdlOiBpZSgpXG4gICAgfSk7XG4gICAgVyhcIlN0YXJ0IHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCBjKTtcbiAgICBjb25zdCB1ID0gJGwucGFyc2UoYy5yZXF1aXJlZF91c2VyX2FjdGlvbnMpLCB7IGNsaWVudF9zZWNyZXQ6IGQgfSA9IHVbMF07XG4gICAgVyhcIkNsaWVudCBzZWNyZXQgZm9yIHBheW1lbnQgaW50ZW50XCIsIGQpO1xuICAgIGNvbnN0IG0gPSBPKGUuY2hlY2tvdXRQYXltZW50TWV0aG9kcywgU28pO1xuICAgIGlmICghbSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlN0cmlwZSBBZmZpcm0gQ1BNIG5vdCBmb3VuZFwiKTtcbiAgICBjb25zdCB7IHN0cmlwZTogZiB9ID0gYXdhaXQgeHQobS5tZXRhZGF0YS5zdHJpcGVfcGssIHtcbiAgICAgIG1vZGU6IFwicGF5bWVudFwiLFxuICAgICAgLy8gVXNlIHBheW1lbnQgbW9kZSBmb3IgcGF5LWZpcnN0IGZsb3dcbiAgICAgIGN1cnJlbmN5OiBpLmN1cnJlbmN5ID8/IFwidXNkXCIsXG4gICAgICBhbW91bnQ6IGkuYW1vdW50X3RvdGFsX2F0b21cbiAgICB9KTtcbiAgICBXKFwiU3RyaXBlIGluc3RhbmNlIGNyZWF0ZWRcIiwgZik7XG4gICAgY29uc3QgeSA9IENlKHMpLCBfID0gYCR7c1twLkZJUlNUX05BTUVdfSAke3NbcC5MQVNUX05BTUVdfWAsIGcgPSB7XG4gICAgICByZXR1cm5fdXJsOiBuZXcgVVJMKFwiL2FwcC8zZHMvc3VjY2Vzcy9cIiwgZS5iYXNlVXJsKS50b1N0cmluZygpLFxuICAgICAgcGF5bWVudF9tZXRob2Q6IHtcbiAgICAgICAgYmlsbGluZ19kZXRhaWxzOiB7XG4gICAgICAgICAgZW1haWw6IHNbcC5FTUFJTF0sXG4gICAgICAgICAgbmFtZTogXyxcbiAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICBsaW5lMTogeS5saW5lMSxcbiAgICAgICAgICAgIGxpbmUyOiB5LmxpbmUyIHx8IHZvaWQgMCxcbiAgICAgICAgICAgIGNpdHk6IHkuY2l0eSxcbiAgICAgICAgICAgIHN0YXRlOiB5LnN0YXRlLFxuICAgICAgICAgICAgY291bnRyeTogeS5jb3VudHJ5LFxuICAgICAgICAgICAgcG9zdGFsX2NvZGU6IHkuemlwX2NvZGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB3ID0ge1xuICAgICAgaGFuZGxlQWN0aW9uczogITFcbiAgICB9O1xuICAgIFcoYENvbmZpcm1pbmcgQWZmaXJtIHBheW1lbnQgd2l0aCBjbGllbnQgc2VjcmV0OiAke2R9YCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZXJyb3I6IGgsIHBheW1lbnRJbnRlbnQ6IGIgfSA9IGF3YWl0IGYuY29uZmlybUFmZmlybVBheW1lbnQoXG4gICAgICAgIGQsXG4gICAgICAgIGcsXG4gICAgICAgIHdcbiAgICAgICk7XG4gICAgICBpZiAoaClcbiAgICAgICAgdGhyb3cgYnQoXCJBZmZpcm0gcGF5bWVudCBjb25maXJtYXRpb24gZXJyb3I6XCIsIGgpLCBuZXcgRXJyb3IoYEFmZmlybSBwYXltZW50IGZhaWxlZDogJHtoLm1lc3NhZ2V9YCk7XG4gICAgICBXKFwiQWZmaXJtIHBheW1lbnQgY29uZmlybWVkIHN1Y2Nlc3NmdWxseVwiLCBiKTtcbiAgICAgIGNvbnN0IFMgPSBiPy5uZXh0X2FjdGlvbj8ucmVkaXJlY3RfdG9fdXJsPy51cmw7XG4gICAgICBpZiAoIVMpXG4gICAgICAgIHJldHVybiBidChcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZCBpbiBLbGFybmEgcGF5bWVudCBjb25maXJtYXRpb25cIiksIG4uZ2V0Lm9uQ2hlY2tvdXRFcnJvcihcIktsYXJuYSBwYXltZW50IGZhaWxlZFwiKSwge1xuICAgICAgICAgIG1vZGU6IFwiY2hlY2tvdXRcIixcbiAgICAgICAgICByZXN1bHQ6IHsgaW52b2ljZV91cmxzOiBbXSwgc3Vic2NyaXB0aW9uX2lkczogW10sIGN1c3RvbWVyX2lkOiBcIlwiLCBwYXltZW50X21ldGhvZF9pZDogXCJcIiB9XG4gICAgICAgIH07XG4gICAgICBXKFwiUGF5bWVudCByZXF1aXJlcyBhZGRpdGlvbmFsIGFjdGlvbiwgc3RhcnRpbmcgM0RTIHZlcmlmaWNhdGlvbi4uLlwiKTtcbiAgICAgIGNvbnN0IHsgc3RhdHVzOiBDIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgIHVybDogUyxcbiAgICAgICAgYmFzZVVybDogZS5iYXNlVXJsLFxuICAgICAgICBmcmFtZVdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICAgIGZyYW1lSGVpZ2h0OiBcIjcwMHB4XCIsXG4gICAgICAgIGZyYW1lVGl0bGU6IFwiQWZmaXJtIHZlcmlmaWNhdGlvblwiXG4gICAgICB9KTtcbiAgICAgIGlmIChDID09PSBGLkZBSUxVUkUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZlcmlmaWNhdGlvbiBmYWlsZWRcIik7XG4gICAgICBpZiAoQyA9PT0gRi5DQU5DRUxMRUQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gICAgICBXKFwiM0RTIHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xuICAgICAgY29uc3QgTCA9IGI/LnBheW1lbnRfbWV0aG9kPy50b1N0cmluZygpID8/IHZvaWQgMCwgQSA9IGF3YWl0IHgoYSwge1xuICAgICAgICBzZWN1cmVfdG9rZW46IGkudG9rZW4sXG4gICAgICAgIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IGMuY2hlY2tvdXRfYXR0ZW1wdF9pZCxcbiAgICAgICAgdGhlaXJfcG1faWQ6IExcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIFcoXCJQYXltZW50IGZsb3cgY29uZmlybWVkXCIsIEEpLCByZSh7XG4gICAgICAgIGxvZ1ByZWZpeDogXCJzdHJpcGUtYWZmaXJtXCIsXG4gICAgICAgIGFueUNkZUNvbm5lY3Rpb246IGEsXG4gICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICAgICAgcmVxdWlyZWRGb3JtRmllbGRzOiBzLFxuICAgICAgICBjb25maXJtUmVzdWx0OiBBLFxuICAgICAgICB1c2VQYXlGaXJzdEZsb3c6ICEwXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChoKSB7XG4gICAgICB0aHJvdyBidChcIkVycm9yIGluIEFmZmlybSBwYXltZW50IGZsb3c6XCIsIGgpLCBoO1xuICAgIH1cbiAgfVxuKSwgeyBsb2dfXzogSCwgZXJyX186IG5yIH0gPSBrKFwic3RyaXBlLWFmdGVycGF5XCIpLCBrbyA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJhZnRlcnBheVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBWbCA9IHokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpLFxuICAgIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSksIHpsID0gY2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICAgIEgoXCJDaGVja2luZyBpZiB0aGVyZSBhcmUgYW55IENQTXMgZm9yIFN0cmlwZSBBZnRlcnBheS4uLlwiKTtcbiAgICBjb25zdCByID0gTyhlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIGtvKTtcbiAgICBpZiAoIXIpXG4gICAgICByZXR1cm4gSChcIk5vIFN0cmlwZSBBZnRlcnBheSBDUE0gZm91bmRcIiksIHsgaXNBdmFpbGFibGU6ICExLCBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICAgIH0gfTtcbiAgICBIKFwiU3RhcnRpbmcgc3RyaXBlIGFmdGVycGF5IGZsb3cuLi5cIik7XG4gICAgY29uc3QgbiA9IGUuYW55Q2RlQ29ubmVjdGlvbjtcbiAgICByZXR1cm4gKGF3YWl0IE4obikpLm1vZGUgPT09IFwic2V0dXBcIiA/IChIKFwiU2V0dXAgbW9kZSBub3Qgc3VwcG9ydGVkIGZvciBTdHJpcGUgQWZ0ZXJwYXkgZmxvd1wiKSwgeyBpc0F2YWlsYWJsZTogITEsIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgIH0gfSkgOiB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBzdGFydEZsb3c6IGFzeW5jIChsKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIFIuc3RyaXBlQWZ0ZXJwYXkucnVuKHtcbiAgICAgICAgICAgIGNvbnRleHQ6IGUsXG4gICAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHIsXG4gICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGUuZm9ybURpdiksXG4gICAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0LFxuICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBsID8/IHt9LFxuICAgICAgICAgICAgaW5pdFJlc3VsdDogeyBpc0F2YWlsYWJsZTogITAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChjKSB7XG4gICAgICAgICAgdGhyb3cgbnIoXCJFcnJvciBzdGFydGluZyBBZnRlcnBheSBmbG93OlwiLCBjKSwgYztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbiksIEJsID0gVihcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LCBub25DZGVGb3JtSW5wdXRzOiByLCBmb3JtQ2FsbGJhY2tzOiBuIH0pID0+IHtcbiAgICBIKFwiUnVubmluZyBTdHJpcGUgQWZ0ZXJwYXkgcGF5LWZpcnN0IGZsb3cuLi5cIik7XG4gICAgY29uc3QgYSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgaSA9IGF3YWl0IE4oYSk7XG4gICAgSChcIlZhbGlkYXRpbmcgZm9ybSBmaWVsZHMuLi5cIik7XG4gICAgY29uc3QgcyA9IEcociwgbi5nZXQub25WYWxpZGF0aW9uRXJyb3IpO1xuICAgIHYoXCJiaWxsaW5nX2RldGFpbHNfcmVjZWl2ZWRcIiwge1xuICAgICAgLi4uc1xuICAgIH0pLCBIKFwiQ3JlYXRpbmcgY2FydCBpbmZvIGZvciBwYXktZmlyc3QgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBsID0ge1xuICAgICAgbGluZV9pdGVtczogaS5saW5lX2l0ZW1zLm1hcCgoaCkgPT4gKHtcbiAgICAgICAgcHJpY2VfaWQ6IGgucHJpY2VfaWQsXG4gICAgICAgIHF1YW50aXR5OiBoLnF1YW50aXR5XG4gICAgICB9KSksXG4gICAgICBwcm9tb3Rpb25fY29kZTogc1twLlBST01PVElPTl9DT0RFXSB8fCB2b2lkIDAsXG4gICAgICBkaXNwbGF5ZWRfdG90YWxfYW1vdW50X2F0b206IGkuYW1vdW50X3RvdGFsX2F0b21cbiAgICB9O1xuICAgIEgoXCJTdGFydGluZyBwYXktZmlyc3QgcGF5bWVudCBmbG93IGZvciBBZnRlcnBheS4uLlwiKTtcbiAgICBjb25zdCBjID0gYXdhaXQgWihhLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICB1c2VfcGF5X2ZpcnN0X2Zsb3c6ICEwLFxuICAgICAgcGF5X2ZpcnN0X2Zsb3dfY2FydF9pbmZvOiBsLFxuICAgICAgLi4ucShzLCBpLmNoZWNrb3V0X3NldHRpbmdzKSxcbiAgICAgIGN1c3RvbWVyX2xhbmd1YWdlOiBpZSgpXG4gICAgfSk7XG4gICAgSChcIlN0YXJ0IHBheW1lbnQgZmxvdyByZXNwb25zZVwiLCBjKTtcbiAgICBjb25zdCB1ID0gVmwucGFyc2UoXG4gICAgICBjLnJlcXVpcmVkX3VzZXJfYWN0aW9uc1xuICAgICksIHsgY2xpZW50X3NlY3JldDogZCB9ID0gdVswXTtcbiAgICBIKFwiQ2xpZW50IHNlY3JldCBmb3IgcGF5bWVudCBpbnRlbnRcIiwgZCk7XG4gICAgY29uc3QgbSA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBrbyk7XG4gICAgaWYgKCFtKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3RyaXBlIEFmdGVycGF5IENQTSBub3QgZm91bmRcIik7XG4gICAgY29uc3QgeyBzdHJpcGU6IGYgfSA9IGF3YWl0IHh0KG0ubWV0YWRhdGEuc3RyaXBlX3BrLCB7XG4gICAgICBtb2RlOiBcInBheW1lbnRcIixcbiAgICAgIC8vIFVzZSBwYXltZW50IG1vZGUgZm9yIHBheS1maXJzdCBmbG93XG4gICAgICBjdXJyZW5jeTogaS5jdXJyZW5jeSA/PyBcInVzZFwiLFxuICAgICAgYW1vdW50OiBpLmFtb3VudF90b3RhbF9hdG9tXG4gICAgfSk7XG4gICAgSChcIlN0cmlwZSBpbnN0YW5jZSBjcmVhdGVkXCIsIGYpO1xuICAgIGNvbnN0IHkgPSBDZShzKSwgXyA9IGAke3NbcC5GSVJTVF9OQU1FXX0gJHtzW3AuTEFTVF9OQU1FXX1gLCBnID0ge1xuICAgICAgcmV0dXJuX3VybDogbmV3IFVSTChcIi9hcHAvM2RzL3N1Y2Nlc3MvXCIsIGUuYmFzZVVybCkudG9TdHJpbmcoKSxcbiAgICAgIHBheW1lbnRfbWV0aG9kOiB7XG4gICAgICAgIGJpbGxpbmdfZGV0YWlsczoge1xuICAgICAgICAgIGVtYWlsOiBzW3AuRU1BSUxdLFxuICAgICAgICAgIG5hbWU6IF8sXG4gICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgbGluZTE6IHkubGluZTEsXG4gICAgICAgICAgICBsaW5lMjogeS5saW5lMiB8fCB2b2lkIDAsXG4gICAgICAgICAgICBjaXR5OiB5LmNpdHksXG4gICAgICAgICAgICBzdGF0ZTogeS5zdGF0ZSxcbiAgICAgICAgICAgIGNvdW50cnk6IHkuY291bnRyeSxcbiAgICAgICAgICAgIHBvc3RhbF9jb2RlOiB5LnppcF9jb2RlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgdyA9IHtcbiAgICAgIGhhbmRsZUFjdGlvbnM6ICExXG4gICAgfTtcbiAgICBIKGBDb25maXJtaW5nIEFmdGVycGF5IHBheW1lbnQgd2l0aCBjbGllbnQgc2VjcmV0OiAke2R9YCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGggPSBhd2FpdCBmLmNvbmZpcm1BZnRlcnBheUNsZWFycGF5UGF5bWVudChcbiAgICAgICAgZCxcbiAgICAgICAgZyxcbiAgICAgICAgd1xuICAgICAgKTtcbiAgICAgIGlmIChIKFwiQWZ0ZXJwYXkgcGF5bWVudCBjb25maXJtYXRpb24gcmVzdWx0OlwiLCBoKSwgaC5wYXltZW50SW50ZW50Py5uZXh0X2FjdGlvbj8udHlwZSA9PT0gXCJyZWRpcmVjdF90b191cmxcIikge1xuICAgICAgICBjb25zdCBiID0gaC5wYXltZW50SW50ZW50Py5uZXh0X2FjdGlvbj8ucmVkaXJlY3RfdG9fdXJsPy51cmw7XG4gICAgICAgIGlmICghYilcbiAgICAgICAgICByZXR1cm4gbnIoXCJObyByZWRpcmVjdCBVUkwgZm91bmQgaW4gQWZ0ZXJwYXkgcGF5bWVudCBjb25maXJtYXRpb25cIiksIG4uZ2V0Lm9uQ2hlY2tvdXRFcnJvcihcIkFmdGVycGF5IHBheW1lbnQgZmFpbGVkXCIpLCB7XG4gICAgICAgICAgICBtb2RlOiBcImNoZWNrb3V0XCIsXG4gICAgICAgICAgICByZXN1bHQ6IHsgaW52b2ljZV91cmxzOiBbXSwgc3Vic2NyaXB0aW9uX2lkczogW10sIGN1c3RvbWVyX2lkOiBcIlwiLCBwYXltZW50X21ldGhvZF9pZDogXCJcIiB9XG4gICAgICAgICAgfTtcbiAgICAgICAgSChcIkFmdGVycGF5IHZlcmlmaWNhdGlvbiBSZXF1aXJlZCwgc3RhcnRpbmcgdmVyaWZpY2F0aW9uLi4uXCIpO1xuICAgICAgICBjb25zdCB7IHN0YXR1czogUyB9ID0gYXdhaXQgbGUoe1xuICAgICAgICAgIHVybDogYixcbiAgICAgICAgICBiYXNlVXJsOiBlLmJhc2VVcmwsXG4gICAgICAgICAgZnJhbWVXaWR0aDogXCI1MDBweFwiLFxuICAgICAgICAgIGZyYW1lSGVpZ2h0OiBcIjcwMHB4XCIsXG4gICAgICAgICAgZnJhbWVUaXRsZTogXCJBZnRlcnBheSB2ZXJpZmljYXRpb25cIlxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKEgoYOKVsCBBZnRlcnBheSB2ZXJpZmljYXRpb24gY29tcGxldGVkIFtTdGF0dXM6ICR7U31dYCksIFMgPT09IEYuQ0FOQ0VMTEVEKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkFmdGVycGF5IHZlcmlmaWNhdGlvbiBjYW5jZWxsZWRcIik7XG4gICAgICAgIGlmIChTID09PSBGLkZBSUxVUkUpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQWZ0ZXJwYXkgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgICAgICAgSChcIkFmdGVycGF5IHZlcmlmaWNhdGlvbiBjb21wbGV0ZWQsIGNvbmZpcm1pbmcgd2l0aCBiYWNrZW5kLi4uXCIpO1xuICAgICAgICBjb25zdCBDID0gaC5wYXltZW50SW50ZW50Py5wYXltZW50X21ldGhvZD8udG9TdHJpbmcoKSA/PyB2b2lkIDAsIEwgPSBhd2FpdCB4KGEsIHtcbiAgICAgICAgICBzZWN1cmVfdG9rZW46IGkudG9rZW4sXG4gICAgICAgICAgY2hlY2tvdXRfYXR0ZW1wdF9pZDogYy5jaGVja291dF9hdHRlbXB0X2lkLFxuICAgICAgICAgIHRoZWlyX3BtX2lkOiBDXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmUoe1xuICAgICAgICAgIGxvZ1ByZWZpeDogXCJzdHJpcGUtYWZ0ZXJwYXlcIixcbiAgICAgICAgICBhbnlDZGVDb25uZWN0aW9uOiBhLFxuICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogdCxcbiAgICAgICAgICByZXF1aXJlZEZvcm1GaWVsZHM6IHMsXG4gICAgICAgICAgY29uZmlybVJlc3VsdDogTCxcbiAgICAgICAgICB1c2VQYXlGaXJzdEZsb3c6ICEwXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlXG4gICAgICAgIHRocm93IEgoXCJObyByZWRpcmVjdCBVUkwgZm91bmQgaW4gQWZ0ZXJwYXkgcGF5bWVudCBjb25maXJtYXRpb25cIiksIG5ldyBFcnJvcihcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZCBpbiBBZnRlcnBheSBwYXltZW50IGNvbmZpcm1hdGlvblwiKTtcbiAgICB9IGNhdGNoIChoKSB7XG4gICAgICBucihcIkVycm9yIGluIEFmdGVycGF5IGNoZWNrb3V0IGZsb3c6XCIsIGgpO1xuICAgICAgY29uc3QgYiA9IGggaW5zdGFuY2VvZiBFcnJvciA/IGgubWVzc2FnZSA6IFwiQWZ0ZXJwYXkgcGF5bWVudCBmYWlsZWRcIjtcbiAgICAgIHRocm93IG5ldyBFcnJvcihiKTtcbiAgICB9XG4gIH1cbiksIHsgbG9nX186IEssIGVycl9fOiBvciB9ID0gayhcInN0cmlwZS1rbGFybmFcIiksIElvID0geiQxLm9iamVjdCh7XG4gIHByb3ZpZGVyOiB6JDEubGl0ZXJhbChcImtsYXJuYVwiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBIbCA9IHokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKCkubnVsbGlzaCgpLFxuICAgIGNsaWVudF9zZWNyZXQ6IHokMS5zdHJpbmcoKVxuICB9KVxuKS5sZW5ndGgoMSksIEtsID0gY2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICAgIEsoXCJDaGVja2luZyBpZiB0aGVyZSBhcmUgYW55IENQTXMgZm9yIFN0cmlwZSBLbGFybmEuLi5cIik7XG4gICAgY29uc3QgciA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBJbyk7XG4gICAgaWYgKCFyKVxuICAgICAgcmV0dXJuIEsoXCJObyBTdHJpcGUgS2xhcm5hIENQTSBmb3VuZFwiKSwgeyBpc0F2YWlsYWJsZTogITEsIHN0YXJ0RmxvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgfSB9O1xuICAgIEsoXCJTdGFydGluZyBzdHJpcGUga2xhcm5hIGZsb3cuLi5cIik7XG4gICAgY29uc3QgbiA9IGUuYW55Q2RlQ29ubmVjdGlvbjtcbiAgICByZXR1cm4gKGF3YWl0IE4obikpLm1vZGUgPT09IFwic2V0dXBcIiA/IChLKFwiU2V0dXAgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBTdHJpcGUgS2xhcm5hIGZsb3dcIiksIHsgaXNBdmFpbGFibGU6ICExLCBzdGFydEZsb3c6IGFzeW5jICgpID0+IHtcbiAgICB9IH0pIDoge1xuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgc3RhcnRGbG93OiBhc3luYyAobCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBSLnN0cmlwZUtsYXJuYS5ydW4oe1xuICAgICAgICAgICAgY29udGV4dDogZSxcbiAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogcixcbiAgICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHQsXG4gICAgICAgICAgICBjdXN0b21QYXJhbXM6IGwgPz8ge30sXG4gICAgICAgICAgICBpbml0UmVzdWx0OiB7IGlzQXZhaWxhYmxlOiAhMCB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGMpIHtcbiAgICAgICAgICB0aHJvdyBvcihcIkVycm9yIHN0YXJ0aW5nIEtsYXJuYSBmbG93OlwiLCBjKSwgYztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbiksIFlsID0gVihcbiAgYXN5bmMgKHsgY29udGV4dDogZSwgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LCBub25DZGVGb3JtSW5wdXRzOiByLCBmb3JtQ2FsbGJhY2tzOiBuIH0pID0+IHtcbiAgICBLKFwiUnVubmluZyBTdHJpcGUgS2xhcm5hIHBheS1maXJzdCBmbG93Li4uXCIpO1xuICAgIGNvbnN0IGEgPSBlLmFueUNkZUNvbm5lY3Rpb24sIGkgPSBhd2FpdCBOKGEpO1xuICAgIEsoXCJWYWxpZGF0aW5nIGZvcm0gZmllbGRzLi4uXCIpO1xuICAgIGNvbnN0IHMgPSBHKHIsIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKTtcbiAgICB2KFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgIC4uLnNcbiAgICB9KSwgSyhcIkNyZWF0aW5nIGNhcnQgaW5mbyBmb3IgcGF5LWZpcnN0IGZsb3cuLi5cIik7XG4gICAgY29uc3QgbCA9IHtcbiAgICAgIGxpbmVfaXRlbXM6IGkubGluZV9pdGVtcy5tYXAoKGgpID0+ICh7XG4gICAgICAgIHByaWNlX2lkOiBoLnByaWNlX2lkLFxuICAgICAgICBxdWFudGl0eTogaC5xdWFudGl0eVxuICAgICAgfSkpLFxuICAgICAgcHJvbW90aW9uX2NvZGU6IHNbcC5QUk9NT1RJT05fQ09ERV0gfHwgdm9pZCAwLFxuICAgICAgZGlzcGxheWVkX3RvdGFsX2Ftb3VudF9hdG9tOiBpLmFtb3VudF90b3RhbF9hdG9tXG4gICAgfTtcbiAgICBLKFwiU3RhcnRpbmcgcGF5LWZpcnN0IHBheW1lbnQgZmxvdyBmb3IgS2xhcm5hLi4uXCIpO1xuICAgIGNvbnN0IGMgPSBhd2FpdCBaKGEsIHtcbiAgICAgIHBheW1lbnRfcHJvdmlkZXI6IHQucHJvdmlkZXIsXG4gICAgICBjaGVja291dF9wYXltZW50X21ldGhvZDogdCxcbiAgICAgIHVzZV9wYXlfZmlyc3RfZmxvdzogITAsXG4gICAgICBwYXlfZmlyc3RfZmxvd19jYXJ0X2luZm86IGwsXG4gICAgICAuLi5xKHMsIGkuY2hlY2tvdXRfc2V0dGluZ3MpLFxuICAgICAgY3VzdG9tZXJfbGFuZ3VhZ2U6IGllKClcbiAgICB9KTtcbiAgICBLKFwiU3RhcnQgcGF5bWVudCBmbG93IHJlc3BvbnNlXCIsIGMpO1xuICAgIGNvbnN0IHUgPSBIbC5wYXJzZShjLnJlcXVpcmVkX3VzZXJfYWN0aW9ucyksIHsgY2xpZW50X3NlY3JldDogZCB9ID0gdVswXTtcbiAgICBLKFwiQ2xpZW50IHNlY3JldCBmb3IgcGF5bWVudCBpbnRlbnRcIiwgZCk7XG4gICAgY29uc3QgbSA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBJbyk7XG4gICAgaWYgKCFtKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3RyaXBlIEtsYXJuYSBDUE0gbm90IGZvdW5kXCIpO1xuICAgIGNvbnN0IHsgc3RyaXBlOiBmIH0gPSBhd2FpdCB4dChtLm1ldGFkYXRhLnN0cmlwZV9waywge1xuICAgICAgbW9kZTogXCJwYXltZW50XCIsXG4gICAgICAvLyBVc2UgcGF5bWVudCBtb2RlIGZvciBwYXktZmlyc3QgZmxvd1xuICAgICAgY3VycmVuY3k6IGkuY3VycmVuY3kgPz8gXCJ1c2RcIixcbiAgICAgIGFtb3VudDogaS5hbW91bnRfdG90YWxfYXRvbVxuICAgIH0pO1xuICAgIEsoXCJTdHJpcGUgaW5zdGFuY2UgY3JlYXRlZFwiLCBmKTtcbiAgICBjb25zdCB5ID0gQ2UocyksIF8gPSBgJHtzW3AuRklSU1RfTkFNRV19ICR7c1twLkxBU1RfTkFNRV19YCwgZyA9IHtcbiAgICAgIHJldHVybl91cmw6IG5ldyBVUkwoXCIvYXBwLzNkcy9zdWNjZXNzL1wiLCBlLmJhc2VVcmwpLnRvU3RyaW5nKCksXG4gICAgICBwYXltZW50X21ldGhvZDoge1xuICAgICAgICBiaWxsaW5nX2RldGFpbHM6IHtcbiAgICAgICAgICBlbWFpbDogc1twLkVNQUlMXSxcbiAgICAgICAgICBuYW1lOiBfLFxuICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgIGxpbmUxOiB5LmxpbmUxLFxuICAgICAgICAgICAgbGluZTI6IHkubGluZTIgfHwgdm9pZCAwLFxuICAgICAgICAgICAgY2l0eTogeS5jaXR5LFxuICAgICAgICAgICAgc3RhdGU6IHkuc3RhdGUsXG4gICAgICAgICAgICBjb3VudHJ5OiB5LmNvdW50cnksXG4gICAgICAgICAgICBwb3N0YWxfY29kZTogeS56aXBfY29kZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHcgPSB7XG4gICAgICBoYW5kbGVBY3Rpb25zOiAhMVxuICAgIH07XG4gICAgSyhgQ29uZmlybWluZyBLbGFybmEgcGF5bWVudCB3aXRoIGNsaWVudCBzZWNyZXQ6ICR7ZH1gKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaCA9IGF3YWl0IGYuY29uZmlybUtsYXJuYVBheW1lbnQoZCwgZywgdyk7XG4gICAgICBpZiAoSyhcIktsYXJuYSBwYXltZW50IGNvbmZpcm1hdGlvbiByZXN1bHQ6XCIsIGgpLCBoLnBheW1lbnRJbnRlbnQ/Lm5leHRfYWN0aW9uPy50eXBlID09PSBcInJlZGlyZWN0X3RvX3VybFwiKSB7XG4gICAgICAgIGNvbnN0IGIgPSBoLnBheW1lbnRJbnRlbnQ/Lm5leHRfYWN0aW9uPy5yZWRpcmVjdF90b191cmw/LnVybDtcbiAgICAgICAgaWYgKCFiKVxuICAgICAgICAgIHJldHVybiBvcihcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZCBpbiBLbGFybmEgcGF5bWVudCBjb25maXJtYXRpb25cIiksIG4uZ2V0Lm9uQ2hlY2tvdXRFcnJvcihcIktsYXJuYSBwYXltZW50IGZhaWxlZFwiKSwge1xuICAgICAgICAgICAgbW9kZTogXCJjaGVja291dFwiLFxuICAgICAgICAgICAgcmVzdWx0OiB7IGludm9pY2VfdXJsczogW10sIHN1YnNjcmlwdGlvbl9pZHM6IFtdLCBjdXN0b21lcl9pZDogXCJcIiwgcGF5bWVudF9tZXRob2RfaWQ6IFwiXCIgfVxuICAgICAgICAgIH07XG4gICAgICAgIEsoXCJLbGFybmEgdmVyaWZpY2F0aW9uIFJlcXVpcmVkLCBzdGFydGluZyB2ZXJpZmljYXRpb24uLi5cIik7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzOiBTIH0gPSBhd2FpdCBsZSh7XG4gICAgICAgICAgdXJsOiBiLFxuICAgICAgICAgIGJhc2VVcmw6IGUuYmFzZVVybCxcbiAgICAgICAgICBmcmFtZVdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICAgICAgZnJhbWVIZWlnaHQ6IFwiNzAwcHhcIixcbiAgICAgICAgICBmcmFtZVRpdGxlOiBcIktsYXJuYSB2ZXJpZmljYXRpb25cIlxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKEsoYOKVsCBLbGFybmEgdmVyaWZpY2F0aW9uIGNvbXBsZXRlZCBbU3RhdHVzOiAke1N9XWApLCBTID09PSBGLkNBTkNFTExFRClcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJLbGFybmEgdmVyaWZpY2F0aW9uIGNhbmNlbGxlZFwiKTtcbiAgICAgICAgaWYgKFMgPT09IEYuRkFJTFVSRSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJLbGFybmEgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgICAgICAgSyhcIktsYXJuYSB2ZXJpZmljYXRpb24gY29tcGxldGVkLCBjb25maXJtaW5nIHdpdGggYmFja2VuZC4uLlwiKTtcbiAgICAgICAgY29uc3QgQyA9IGgucGF5bWVudEludGVudD8ucGF5bWVudF9tZXRob2Q/LnRvU3RyaW5nKCkgPz8gdm9pZCAwLCBMID0gYXdhaXQgeChhLCB7XG4gICAgICAgICAgc2VjdXJlX3Rva2VuOiBpLnRva2VuLFxuICAgICAgICAgIGNoZWNrb3V0X2F0dGVtcHRfaWQ6IGMuY2hlY2tvdXRfYXR0ZW1wdF9pZCxcbiAgICAgICAgICB0aGVpcl9wbV9pZDogQ1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlKHtcbiAgICAgICAgICBsb2dQcmVmaXg6IFwic3RyaXBlLWtsYXJuYVwiLFxuICAgICAgICAgIGFueUNkZUNvbm5lY3Rpb246IGEsXG4gICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiB0LFxuICAgICAgICAgIHJlcXVpcmVkRm9ybUZpZWxkczogcyxcbiAgICAgICAgICBjb25maXJtUmVzdWx0OiBMLFxuICAgICAgICAgIHVzZVBheUZpcnN0RmxvdzogITBcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgdGhyb3cgSyhcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZCBpbiBLbGFybmEgcGF5bWVudCBjb25maXJtYXRpb25cIiksIG5ldyBFcnJvcihcIk5vIHJlZGlyZWN0IFVSTCBmb3VuZCBpbiBLbGFybmEgcGF5bWVudCBjb25maXJtYXRpb25cIik7XG4gICAgfSBjYXRjaCAoaCkge1xuICAgICAgb3IoXCJFcnJvciBpbiBLbGFybmEgY2hlY2tvdXQgZmxvdzpcIiwgaCk7XG4gICAgICBjb25zdCBiID0gaCBpbnN0YW5jZW9mIEVycm9yID8gaC5tZXNzYWdlIDogXCJLbGFybmEgcGF5bWVudCBmYWlsZWRcIjtcbiAgICAgIHRocm93IG5ldyBFcnJvcihiKTtcbiAgICB9XG4gIH1cbiksIGh0ID0gXCJvanMtc3RyaXBlLWxpbmstYnRuXCIsIHsgbG9nX186IHosIGVycl9fOiB6ciB9ID0gayhcInN0cmlwZS1saW5rXCIpLCBXbCA9IHokMS5vYmplY3Qoe1xuICBwcm92aWRlcjogeiQxLmxpdGVyYWwoXCJzdHJpcGVfbGlua1wiKSxcbiAgcHJvY2Vzc29yX25hbWU6IHokMS5saXRlcmFsKFwic3RyaXBlXCIpLFxuICBtZXRhZGF0YTogeiQxLm9iamVjdCh7XG4gICAgc3RyaXBlX3BrOiB6JDEuc3RyaW5nKClcbiAgfSlcbn0pLCBKbCA9IHokMS5hcnJheShcbiAgeiQxLm9iamVjdCh7XG4gICAgb3VyX2V4aXN0aW5nX3BtX2lkOiB6JDEuc3RyaW5nKClcbiAgfSlcbikubGVuZ3RoKDEpLCBabCA9IGNlKFxuICBhc3luYyAoeyBjb250ZXh0OiBlLCBmb3JtQ2FsbGJhY2tzOiB0IH0pID0+IHtcbiAgICBjb25zdCByID0gZS5jdXN0b21Jbml0UGFyYW1zLnN0cmlwZUxpbms7XG4gICAgeihcIkNoZWNraW5nIGlmIHRoZXJlIGFyZSBhbnkgQ1BNcyBmb3IgU3RyaXBlIExpbmsuLi5cIik7XG4gICAgY29uc3QgbiA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBXbCk7XG4gICAgeihcIlN0YXJ0aW5nIHN0cmlwZSBsaW5rIGZsb3cuLi5cIik7XG4gICAgY29uc3QgYSA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgaSA9IGF3YWl0IE4oYSksIHMgPSBpLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICB6KFwiQ3JlYXRpbmcgc3RyaXBlIGVsZW1lbnRzLi4uXCIpO1xuICAgIGNvbnN0IGwgPSBhd2FpdCBRKGEsIGkudG9rZW4sIHMsIHZvaWQgMCksIHsgZWxlbWVudHM6IGMsIHN0cmlwZTogdSB9ID0gYXdhaXQgeHQobi5tZXRhZGF0YS5zdHJpcGVfcGssIHtcbiAgICAgIG1vZGU6IFwic2V0dXBcIixcbiAgICAgIGN1cnJlbmN5OiBsLmN1cnJlbmN5LFxuICAgICAgc2V0dXBfZnV0dXJlX3VzYWdlOiBcIm9mZl9zZXNzaW9uXCIsXG4gICAgICBwYXltZW50TWV0aG9kQ3JlYXRpb246IFwibWFudWFsXCJcbiAgICB9KSwgZCA9IGMuY3JlYXRlKFwibGlua0F1dGhlbnRpY2F0aW9uXCIpO1xuICAgIHooXCJDcmVhdGluZyBleHByZXNzIGNoZWNrb3V0Li4uXCIpO1xuICAgIGNvbnN0IG0gPSBjLmNyZWF0ZShcImV4cHJlc3NDaGVja291dFwiLCB7XG4gICAgICBidXR0b25IZWlnaHQ6IHI/LmJ1dHRvbkhlaWdodCxcbiAgICAgIHBheW1lbnRNZXRob2RzOiB7XG4gICAgICAgIGFtYXpvblBheTogXCJuZXZlclwiLFxuICAgICAgICBhcHBsZVBheTogXCJuZXZlclwiLFxuICAgICAgICBnb29nbGVQYXk6IFwibmV2ZXJcIixcbiAgICAgICAgcGF5cGFsOiBcIm5ldmVyXCJcbiAgICAgIH1cbiAgICB9KSwgZiA9IChnLCB3KSA9PiB7XG4gICAgICBsZXQgaCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZyk7XG4gICAgICBoIHx8ICh6cihgUmVjb21tYW5kZWQgdG8gcmVuZGVyIGEgY29udGFpbmVyIHdpdGggJHtnfSB0byBhdm9pZCByZW5kZXJpbmcgaW4gdGhlIGJvZHlgKSwgaCA9IGRvY3VtZW50LmJvZHkpO1xuICAgICAgY29uc3QgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICBoPy5hcHBlbmRDaGlsZChiKSwgZC5tb3VudChiKTtcbiAgICAgIGxldCBTID0gITEsIEMgPSAhMTtcbiAgICAgIGlmIChkLm9uY2UoXCJyZWFkeVwiLCAoKSA9PiB7XG4gICAgICAgIEMgPSAhMCwgcj8ub25BdXRoZW50aWNhdGlvbkVsZW1lbnRSZWFkeT8uKCk7XG4gICAgICB9KSwgdykge1xuICAgICAgICBiLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiLCBiLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiLCBiLnN0eWxlLnRvcCA9IFwiLTEwMDBweFwiLCBiLnN0eWxlLmxlZnQgPSBcIi0xMDAwcHhcIiwgYi5zdHlsZS56SW5kZXggPSBcIi0xXCIsIGQub24oXCJjaGFuZ2VcIiwgKEEpID0+IHtcbiAgICAgICAgICBTID0gQS5jb21wbGV0ZSB8fCAhIUEudmFsdWUuZW1haWwsIEMgJiYgcj8ub25BdXRoZW50aWNhdGlvblN0YXR1c0NoYW5nZT8uKFMpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgTCA9IGIucXVlcnlTZWxlY3RvcihcImlmcmFtZVwiKTtcbiAgICAgICAgTCAmJiBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdXQgPSBMLm9mZnNldEhlaWdodCA+IDE2MDtcbiAgICAgICAgICBDICYmIHI/Lm9uQXV0aGVudGljYXRpb25TdGF0dXNDaGFuZ2U/LihTIHx8IHV0KTtcbiAgICAgICAgfSkub2JzZXJ2ZShMLCB7IGF0dHJpYnV0ZXM6ICEwLCBhdHRyaWJ1dGVGaWx0ZXI6IFtcInN0eWxlXCJdIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGQ7XG4gICAgfSwgeSA9IChnKSA9PiB7XG4gICAgICBtLm1vdW50KGcgfHwgYCMke2h0fWApO1xuICAgIH0sIF8gPSAoKSA9PiB7XG4gICAgICBtLnVubW91bnQoKTtcbiAgICB9O1xuICAgIHJldHVybiByPy5kb05vdE1vdW50T25Jbml0ID8geihcIk5PVCBtb3VudGluZyBzdHJpcGUgbGluayBidXR0b24gKGRvTm90TW91bnRPbkluaXQgaXMgdHJ1ZSlcIikgOiAoeihcIk1vdW50aW5nIHN0cmlwZSBsaW5rIGJ1dHRvbi4uLlwiKSwgeSgpKSwgcj8uc2lsZW50bHlDaGVja0F1dGhlbnRpY2F0aW9uICYmICh6KGBTaWxlbnRseSBtb3VudGluZyBsaW5rIGF1dGhlbnRpY2F0aW9uIGVsZW1lbnQgYXQgIyR7aHR9Li4uYCksIGYoYCMke2h0fWAsICEwKSksIG0ub24oXCJjbGlja1wiLCBhc3luYyAoZykgPT4ge1xuICAgICAgaWYgKHooXCJTdHJpcGUgTGluayBidXR0b24gY2xpY2tlZFwiKSwgcj8ub3ZlcnJpZGVMaW5rU3VibWl0ICYmICFhd2FpdCByLm92ZXJyaWRlTGlua1N1Ym1pdCgpKSB7XG4gICAgICAgIHooXCJTdHJpcGUgTGluayBzdWJtaXQgYWJvcnRlZCBieSBvdmVycmlkZUxpbmtTdWJtaXRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGcucmVzb2x2ZSgpO1xuICAgIH0pLCBtLm9uKFwiY29uZmlybVwiLCBhc3luYyAoZykgPT4ge1xuICAgICAgeihcIlN0cmlwZSBMaW5rIHdpbmRvdyBjb25maXJtZWRcIiwgZyk7XG4gICAgICBjb25zdCB3ID0gYXdhaXQgdS5jcmVhdGVQYXltZW50TWV0aG9kKHtcbiAgICAgICAgZWxlbWVudHM6IGMsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGJpbGxpbmdfZGV0YWlsczogZy5iaWxsaW5nRGV0YWlsc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHcuZXJyb3IgPyAoenIoXCJlcnJvclwiLCB3LmVycm9yKSwgdC5nZXQub25DaGVja291dEVycm9yKHcuZXJyb3IubWVzc2FnZSA/PyBcIlN0cmlwZSBMaW5rIHVua25vd24gZXJyb3JcIikpIDogKHooXCJwYXltZW50TWV0aG9kXCIsIHcucGF5bWVudE1ldGhvZCksIFIuc3RyaXBlTGluay5ydW4oe1xuICAgICAgICBjb250ZXh0OiBlLFxuICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IG4sXG4gICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGooZS5mb3JtRGl2KSxcbiAgICAgICAgZm9ybUNhbGxiYWNrczogdCxcbiAgICAgICAgY3VzdG9tUGFyYW1zOiB7IHN0cmlwZVBNOiB3LnBheW1lbnRNZXRob2QgfSxcbiAgICAgICAgaW5pdFJlc3VsdDogeyBpc0F2YWlsYWJsZTogITAgfVxuICAgICAgfSkpO1xuICAgIH0pLCB7XG4gICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICBjb250cm9sbGVyOiB7XG4gICAgICAgIG1vdW50QnV0dG9uOiB5LFxuICAgICAgICBkaXNtb3VudEJ1dHRvbjogXyxcbiAgICAgICAgbW91bnRMaW5rQXV0aGVudGljYXRpb25FbGVtZW50OiAoZykgPT4gZihnLCAhMSksXG4gICAgICAgIHdhaXRGb3JCdXR0b25Ub01vdW50OiBhc3luYyAoKSA9PiBhd2FpdCBldShodClcbiAgICAgIH1cbiAgICB9O1xuICB9XG4pLCBRbCA9IFYoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgIGN1c3RvbVBhcmFtczogYVxuICB9KSA9PiB7XG4gICAgeihcIlJ1bm5pbmcgU3RyaXBlIExpbmsgZmxvdy4uLlwiKTtcbiAgICBjb25zdCBpID0gZS5hbnlDZGVDb25uZWN0aW9uLCBzID0gYXdhaXQgTihpKTtcbiAgICB6KFwiTWVyZ2luZyBQTSBmaWVsZHMgd2l0aCBmb3JtIGZpZWxkcy4uLlwiKTtcbiAgICBjb25zdCBsID0gWGwociwgYS5zdHJpcGVQTSksIGMgPSBHKGwsIG4uZ2V0Lm9uVmFsaWRhdGlvbkVycm9yKTtcbiAgICB2KFwiYmlsbGluZ19kZXRhaWxzX3JlY2VpdmVkXCIsIHtcbiAgICAgIC4uLmNcbiAgICB9KSwgeihcIlN0YXJ0aW5nIHBheW1lbnQgZmxvdy4uLlwiKTtcbiAgICBjb25zdCB1ID0gYXdhaXQgWihpLCB7XG4gICAgICBwYXltZW50X3Byb3ZpZGVyOiB0LnByb3ZpZGVyLFxuICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHQsXG4gICAgICB0aGVpcl9leGlzdGluZ19wbV9pZDogYS5zdHJpcGVQTS5pZCxcbiAgICAgIC4uLnEoYywgcy5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICBjdXN0b21lcl9sYW5ndWFnZTogaWUoKVxuICAgIH0pO1xuICAgIHooXCJTdGFydCBwYXltZW50IGZsb3cgcmVzcG9uc2VcIiwgdSk7XG4gICAgY29uc3QgbSA9IEpsLnBhcnNlKHUucmVxdWlyZWRfdXNlcl9hY3Rpb25zKVswXS5vdXJfZXhpc3RpbmdfcG1faWQ7XG4gICAgaWYgKHMubW9kZSA9PT0gXCJzZXR1cFwiKSB7XG4gICAgICB6KFwiRG9pbmcgcGF5bWVudCBzZXR1cC4uLlwiKTtcbiAgICAgIGNvbnN0IGYgPSBhd2FpdCB4KGksIHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBzLnRva2VuLFxuICAgICAgICBleGlzdGluZ19jY19wbV9pZDogbVxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogbHQoZikgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgeihcIkRvaW5nIGNoZWNrb3V0Li4uXCIpO1xuICAgICAgY29uc3QgZiA9IHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBzLnRva2VuLFxuICAgICAgICBwYXltZW50X2lucHV0OiB7XG4gICAgICAgICAgcHJvdmlkZXJfdHlwZTogdC5wcm92aWRlclxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21lcl9lbWFpbDogY1twLkVNQUlMXSxcbiAgICAgICAgY3VzdG9tZXJfZmlyc3RfbmFtZTogY1twLkZJUlNUX05BTUVdLFxuICAgICAgICBjdXN0b21lcl9sYXN0X25hbWU6IGNbcC5MQVNUX05BTUVdLFxuICAgICAgICBjdXN0b21lcl9hZGRyZXNzOiBDZShjKSxcbiAgICAgICAgY3VzdG9tZXJfc2hpcHBpbmdfYWRkcmVzczogT3QoYywgcy5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICAgIHByb21vdGlvbl9jb2RlOiBjW3AuUFJPTU9USU9OX0NPREVdLFxuICAgICAgICBsaW5lX2l0ZW1zOiBzLmxpbmVfaXRlbXMsXG4gICAgICAgIHRvdGFsX2Ftb3VudF9hdG9tOiBzLmFtb3VudF90b3RhbF9hdG9tLFxuICAgICAgICBjYW5jZWxfYXRfZW5kOiAhMSxcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHRcbiAgICAgIH07XG4gICAgICByZXR1cm4geyBtb2RlOiBcImNoZWNrb3V0XCIsIHJlc3VsdDogYXdhaXQgX3IoaSwgZikgfTtcbiAgICB9XG4gIH1cbiksIFhsID0gKGUsIHQpID0+IHtcbiAgY29uc3QgciA9IHsgLi4uZSB9LCBbbiwgLi4uYV0gPSB0LmJpbGxpbmdfZGV0YWlscy5uYW1lPy50cmltKCk/LnNwbGl0KC9cXHMrLykgPz8gW10sIGkgPSBhLmpvaW4oXCIgXCIpIHx8IHZvaWQgMDtcbiAgcltwLkVNQUlMXSA9IHJbcC5FTUFJTF0gfHwgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgdC5saW5rPy5lbWFpbCB8fCB0LmJpbGxpbmdfZGV0YWlscy5lbWFpbCB8fCBcIm9wX3VuZmlsbGVkQGdldG9wZW5wYXkuY29tXCIsIHJbcC5aSVBfQ09ERV0gPSByW3AuWklQX0NPREVdIHx8IHQuYmlsbGluZ19kZXRhaWxzLmFkZHJlc3M/LnBvc3RhbF9jb2RlIHx8IFwiMDAwMDBcIiwgcltwLkNPVU5UUlldID0gcltwLkNPVU5UUlldIHx8IHQuYmlsbGluZ19kZXRhaWxzLmFkZHJlc3M/LmNvdW50cnkgfHwgXCJVU1wiO1xuICBjb25zdCBzID0gcltwLkZJUlNUX05BTUVdIHx8IG4gfHwgXCJcIiwgbCA9IHJbcC5MQVNUX05BTUVdIHx8IGkgfHwgXCJcIjtcbiAgcmV0dXJuIHMgfHwgbCA/IChyW3AuRklSU1RfTkFNRV0gPSBzLCByW3AuTEFTVF9OQU1FXSA9IGwpIDogKHJbcC5GSVJTVF9OQU1FXSA9IFwiX09QX1VOS05PV05cIiwgcltwLkxBU1RfTkFNRV0gPSBcIlwiKSwgeihcIkZpbmFsIGZvcm0gaW5wdXRzOlwiLCByKSwgcjtcbn0sIGV1ID0gKGUpID0+IG5ldyBQcm9taXNlKCh0KSA9PiB7XG4gIGNvbnN0IHIgPSAoKSA9PiB7XG4gICAgY29uc3QgbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpO1xuICAgIG4gPyB0KG4pIDogcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHIpO1xuICB9O1xuICByKCk7XG59KSwgeyBsb2dfXzogdGUsIGVycl9fOiB0dSB9ID0gayhcInN0cmlwZS1wclwiKSwgcnUgPSB6JDEub2JqZWN0KHtcbiAgcHJvdmlkZXI6IHokMS51bmlvbihbeiQxLmxpdGVyYWwoXCJhcHBsZV9wYXlcIiksIHokMS5saXRlcmFsKFwiZ29vZ2xlX3BheVwiKV0pLFxuICBwcm9jZXNzb3JfbmFtZTogeiQxLmxpdGVyYWwoXCJzdHJpcGVcIiksXG4gIG1ldGFkYXRhOiB6JDEub2JqZWN0KHtcbiAgICBzdHJpcGVfcGs6IHokMS5zdHJpbmcoKVxuICB9KVxufSksIG51ID0gY2UoXG4gIGFzeW5jICh7IGNvbnRleHQ6IGUsIGZvcm1DYWxsYmFja3M6IHQgfSkgPT4ge1xuICAgIHRlKFwiQ2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBDUE1zIGZvciBTdHJpcGUgUFIuLi5cIik7XG4gICAgY29uc3QgciA9IE8oZS5jaGVja291dFBheW1lbnRNZXRob2RzLCBydSk7XG4gICAgdGUoXCJJbml0aWFsaXppbmcgU3RyaXBlIFBSIGZsb3cuLi5cIik7XG4gICAgY29uc3QgbiA9IGUuYW55Q2RlQ29ubmVjdGlvbiwgYSA9IGF3YWl0IE4obiksIGkgPSBhLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICB0ZShcIkdldHRpbmcgaW5pdGlhbCBwcmV2aWV3IGFtb3VudFwiKTtcbiAgICBjb25zdCBzID0gYXdhaXQgUShuLCBhLnRva2VuLCBpLCB2b2lkIDApLCBsID0gYXdhaXQgWGkoXG4gICAgICByLm1ldGFkYXRhLnN0cmlwZV9wayxcbiAgICAgIHMuYW1vdW50QXRvbSxcbiAgICAgIHMuY3VycmVuY3ksXG4gICAgICBpXG4gICAgKTtcbiAgICB0ZShcIkNoZWNraW5nIGlmIGNhbiBtYWtlIHBheW1lbnRcIik7XG4gICAgY29uc3QgYyA9IGF3YWl0IGwuY2FuTWFrZVBheW1lbnQoKTtcbiAgICBpZiAoYyA9PT0gbnVsbClcbiAgICAgIHJldHVybiB0dShcImNhbk1ha2VQYXltZW50IHJldHVybmVkIG51bGxcIiksIHsgaXNBdmFpbGFibGU6ICExLCByZWFzb246IFwiY2FuTWFrZVBheW1lbnQgcmV0dXJuZWQgbnVsbFwiIH07XG4gICAgdGUoXCJTdHJpcGUgUFIgZmxvdyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuIENhbiBtYWtlIHBheW1lbnRcIiwgYyk7XG4gICAgY29uc3QgdSA9IChkLCBtKSA9PiBSLnN0cmlwZVBSLnJ1bih7XG4gICAgICBjb250ZXh0OiBlLFxuICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBfZShlLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsIGQpLFxuICAgICAgbm9uQ2RlRm9ybUlucHV0czogaihlLmZvcm1EaXYpLFxuICAgICAgZm9ybUNhbGxiYWNrczogdCxcbiAgICAgIGN1c3RvbVBhcmFtczogeyBwcm92aWRlcjogZCwgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogbT8ub3ZlcnJpZGVQYXltZW50UmVxdWVzdCB9LFxuICAgICAgaW5pdFJlc3VsdDoge1xuICAgICAgICBwcm9jZXNzb3I6IFUuRW51bS5zdHJpcGUsXG4gICAgICAgIHByOiBsLFxuICAgICAgICBpc0F2YWlsYWJsZTogITAsXG4gICAgICAgIGF2YWlsYWJsZVByb3ZpZGVyczogeyBhcHBsZVBheTogYy5hcHBsZVBheSwgZ29vZ2xlUGF5OiBjLmdvb2dsZVBheSB9LFxuICAgICAgICBzdGFydEZsb3c6IHVcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvY2Vzc29yOiBVLkVudW0uc3RyaXBlLFxuICAgICAgaXNBdmFpbGFibGU6ICEwLFxuICAgICAgcHI6IGwsXG4gICAgICBhdmFpbGFibGVQcm92aWRlcnM6IHtcbiAgICAgICAgYXBwbGVQYXk6IGMuYXBwbGVQYXksXG4gICAgICAgIGdvb2dsZVBheTogYy5nb29nbGVQYXlcbiAgICAgIH0sXG4gICAgICBzdGFydEZsb3c6IHVcbiAgICB9O1xuICB9XG4pLCBvdSA9IFYoXG4gIGFzeW5jICh7XG4gICAgY29udGV4dDogZSxcbiAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHQsXG4gICAgbm9uQ2RlRm9ybUlucHV0czogcixcbiAgICBmb3JtQ2FsbGJhY2tzOiBuLFxuICAgIGN1c3RvbVBhcmFtczogYSxcbiAgICBpbml0UmVzdWx0OiBpXG4gIH0pID0+IHtcbiAgICBpZiAodGUoXCJSdW5uaW5nIFN0cmlwZSBQUiBmbG93Li4uXCIpLCBhLnByb3ZpZGVyICE9PSB0LnByb3ZpZGVyKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlciBtaXNtYXRjaC4gRXhwZWN0ZWQgJHthLnByb3ZpZGVyfSwgZ290ICR7dC5wcm92aWRlcn1gKTtcbiAgICBjb25zdCBzID0gZS5hbnlDZGVDb25uZWN0aW9uLCBsID0gaS5wcjtcbiAgICBpZiAoYT8ub3ZlcnJpZGVQYXltZW50UmVxdWVzdCkge1xuICAgICAgY29uc3QgXyA9IGEub3ZlcnJpZGVQYXltZW50UmVxdWVzdDtcbiAgICAgIHRlKFwiT3ZlcnJpZGluZyBQUiBhbW91bnQgd2l0aFwiLCBfKTtcbiAgICAgIGNvbnN0IGcgPSB0eXBlb2YgXy5hcHBsZVBheVBheW1lbnRSZXF1ZXN0ID09IFwiZnVuY3Rpb25cIiA/IF8uYXBwbGVQYXlQYXltZW50UmVxdWVzdCh7fSkgOiBfLmFwcGxlUGF5UGF5bWVudFJlcXVlc3Q7XG4gICAgICBCcihsLCBfLmFtb3VudCwgXy5wZW5kaW5nLCBnLCBfLmxhYmVsKTtcbiAgICB9XG4gICAgY29uc3QgYyA9IGF3YWl0IE4ocyk7XG4gICAgaWYgKCFhLm92ZXJyaWRlUGF5bWVudFJlcXVlc3QpIHtcbiAgICAgIGNvbnN0IF8gPSBjLm1vZGUgPT09IFwic2V0dXBcIjtcbiAgICAgIFEocywgYy50b2tlbiwgXywgdm9pZCAwKS50aGVuKChnKSA9PiB7XG4gICAgICAgIGwuaXNTaG93aW5nKCkgfHwgQnIobCwgZywgITEsIHZvaWQgMCwgXCJUb3RhbFwiKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0ZShcIlNob3dpbmcgUFIgZGlhbG9nLi4uXCIpLCBsLnNob3coKTtcbiAgICBjb25zdCB1ID0gYXdhaXQgZXMobCk7XG4gICAgdGUoXCJTdHJpcGUgUE0gYWRkZWQgZXZlbnQ6XCIsIHUpLCB0ZShcIk1lcmdpbmcgUE0gZmllbGRzIHdpdGggZm9ybSBmaWVsZHMuLi5cIik7XG4gICAgY29uc3QgZCA9IGF1KHIsIHUpLCBtID0gRyhkLCBuLmdldC5vblZhbGlkYXRpb25FcnJvcik7XG4gICAgdihcImJpbGxpbmdfZGV0YWlsc19yZWNlaXZlZFwiLCB7XG4gICAgICAuLi5tXG4gICAgfSksIHRlKFwiUFIgZGlhbG9nIGZpbmlzaGVkLiBTdGFydGluZyBwIGF5bWVudCBmbG93Li4uXCIsIG0pO1xuICAgIGNvbnN0IGYgPSBhd2FpdCBxcyhzLCB7XG4gICAgICBmaWVsZHM6IG0sXG4gICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IHRcbiAgICB9KSwgeSA9IGl1KGYpO1xuICAgIGlmICh0ZShcIkNvbmZpcm1pbmcgUFIgd2l0aCBTdHJpcGUuLi5cIiksIGF3YWl0IHRzKHksIHUpLCBjLm1vZGUgPT09IFwic2V0dXBcIikge1xuICAgICAgdGUoXCJDb25maXJtaW5nIHBheW1lbnQgZmxvdyBmb3Igc2V0dXAuLi5cIik7XG4gICAgICBjb25zdCBfID0gYXdhaXQgeChzLCB7XG4gICAgICAgIHNlY3VyZV90b2tlbjogYy50b2tlblxuICAgICAgfSk7XG4gICAgICByZXR1cm4geyBtb2RlOiBcInNldHVwXCIsIHJlc3VsdDogbHQoXykgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGUoXCJQZXJmb3JtaW5nIGNoZWNrb3V0Li4uXCIpO1xuICAgICAgY29uc3QgXyA9IHtcbiAgICAgICAgc2VjdXJlX3Rva2VuOiBjLnRva2VuLFxuICAgICAgICBwYXltZW50X2lucHV0OiB7XG4gICAgICAgICAgcHJvdmlkZXJfdHlwZTogdC5wcm92aWRlclxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21lcl9maXJzdF9uYW1lOiBtW3AuRklSU1RfTkFNRV0sXG4gICAgICAgIGN1c3RvbWVyX2xhc3RfbmFtZTogbVtwLkxBU1RfTkFNRV0sXG4gICAgICAgIGN1c3RvbWVyX2VtYWlsOiBtW3AuRU1BSUxdLFxuICAgICAgICBjdXN0b21lcl9hZGRyZXNzOiBDZShtKSxcbiAgICAgICAgY3VzdG9tZXJfc2hpcHBpbmdfYWRkcmVzczogT3QobSwgYy5jaGVja291dF9zZXR0aW5ncyksXG4gICAgICAgIHByb21vdGlvbl9jb2RlOiBtW3AuUFJPTU9USU9OX0NPREVdLFxuICAgICAgICBsaW5lX2l0ZW1zOiBjLmxpbmVfaXRlbXMsXG4gICAgICAgIHRvdGFsX2Ftb3VudF9hdG9tOiBjLmFtb3VudF90b3RhbF9hdG9tLFxuICAgICAgICBjYW5jZWxfYXRfZW5kOiAhMSxcbiAgICAgICAgY2hlY2tvdXRfcGF5bWVudF9tZXRob2Q6IHRcbiAgICAgIH07XG4gICAgICByZXR1cm4geyBtb2RlOiBcImNoZWNrb3V0XCIsIHJlc3VsdDogYXdhaXQgX3IocywgXykgfTtcbiAgICB9XG4gIH1cbiksIGF1ID0gKGUsIHQpID0+IHtcbiAgY29uc3QgciA9IHsgLi4uZSB9LCBbbiwgLi4uYV0gPSB0LnBheWVyTmFtZT8udHJpbSgpPy5zcGxpdCgvXFxzKy8pID8/IFtdLCBpID0gYS5qb2luKFwiIFwiKSB8fCB2b2lkIDAsIHMgPSB0LnBheW1lbnRNZXRob2Q/LmJpbGxpbmdfZGV0YWlscz8uYWRkcmVzcywgbCA9IHQuc2hpcHBpbmdBZGRyZXNzO1xuICByW3AuRU1BSUxdID0gcltwLkVNQUlMXSB8fCB0LnBheWVyRW1haWwgfHwgXCJvcF91bmZpbGxlZEBnZXRvcGVucGF5LmNvbVwiLCByW3AuWklQX0NPREVdID0gcltwLlpJUF9DT0RFXSB8fCBzPy5wb3N0YWxfY29kZSB8fCBsPy5wb3N0YWxDb2RlIHx8IFwiMDAwMDBcIiwgcltwLkNPVU5UUlldID0gcltwLkNPVU5UUlldIHx8IHM/LmNvdW50cnkgfHwgbD8uY291bnRyeSB8fCBcIlVTXCI7XG4gIGNvbnN0IGMgPSByW3AuRklSU1RfTkFNRV0gfHwgbiB8fCBcIlwiLCB1ID0gcltwLkxBU1RfTkFNRV0gfHwgaSB8fCBcIlwiO1xuICByZXR1cm4gYyB8fCB1ID8gKHJbcC5GSVJTVF9OQU1FXSA9IGMsIHJbcC5MQVNUX05BTUVdID0gdSkgOiAocltwLkZJUlNUX05BTUVdID0gXCJfT1BfVU5LTk9XTlwiLCByW3AuTEFTVF9OQU1FXSA9IFwiXCIpLCB0ZShcIkZpbmFsIGZvcm0gaW5wdXRzOlwiLCByKSwgcjtcbn0sIEJyID0gKGUsIHQsIHIsIG4sIGEpID0+IHtcbiAgZS51cGRhdGUoe1xuICAgIHRvdGFsOiB0ID8ge1xuICAgICAgYW1vdW50OiB0LmFtb3VudEF0b20sXG4gICAgICBsYWJlbDogYSA/PyBcIlRvdGFsXCIsXG4gICAgICBwZW5kaW5nOiByXG4gICAgfSA6IHZvaWQgMCxcbiAgICBjdXJyZW5jeTogdD8uY3VycmVuY3ksXG4gICAgLy8gU3RyaXBlJ3MgYXBwbGVQYXkgb3B0aW9uIG9ubHkgc3VwcG9ydHMgJ3JlY3VycmluZ1BheW1lbnRSZXF1ZXN0JyB8ICdkZWZlcnJlZFBheW1lbnRSZXF1ZXN0JyB8ICdhdXRvbWF0aWNSZWxvYWRQYXltZW50UmVxdWVzdCcgb2YgbmF0aXZlIEFwcGxlUGF5IHBheW1lbnQgcmVxdWVzdFxuICAgIC8vIFdlJ3JlIGFjY2VwdGluZyBuYXRpdmUgUGF5bWVudCBSZXF1ZXN0IGhlcmUgZm9yIG1vcmUgY29tbW9uIHR5cGluZy5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gc3RyaXBlIGRvIG5vdCBleHBlY3QgYWRkaXRpb25hbCBmaWVsZHNcbiAgICBhcHBsZVBheTogblxuICB9KTtcbn0sIGl1ID0gKGUpID0+IHtcbiAgaWYgKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zLmxlbmd0aCAhPT0gMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIG9jY3VycmVkLlxuRGV0YWlsczogZ290ICR7ZS5yZXF1aXJlZF91c2VyX2FjdGlvbnMubGVuZ3RofSByZXF1aXJlZCB1c2VyIGFjdGlvbnNgKTtcbiAgcmV0dXJuIFppLnBhcnNlKGUucmVxdWlyZWRfdXNlcl9hY3Rpb25zWzBdKTtcbn0sIF9lID0gKGUsIHQsIHIpID0+IHtcbiAgY29uc3QgbiA9IGUuZmlsdGVyKChhKSA9PiB7XG4gICAgY29uc3QgaSA9IHIgPT09IHZvaWQgMCA/IHRydWUgOiBhLnByb2Nlc3Nvcl9uYW1lID09PSByLCBzID0gYS5wcm92aWRlciA9PT0gdDtcbiAgICByZXR1cm4gaSAmJiBzO1xuICB9KTtcbiAgaWYgKG4ubGVuZ3RoID09PSAwKVxuICAgIHRocm93IGNvbnNvbGUud2FybihcIkNQTXMgbGlzdFwiLCBlKSwgbmV3IEVycm9yKGBObyBDUE1zIGZvdW5kIHdpdGggcHJvdmlkZXIgJyR7dH0nIGFuZCBwcm9jZXNzb3IgJyR7cn0nYCk7XG4gIHJldHVybiBuLmxlbmd0aCAhPT0gMSAmJiAoY29uc29sZS53YXJuKFwiQ1BNcyBsaXN0XCIsIGUpLCBjb25zb2xlLndhcm4oYE1vcmUgdGhhbiBvbmUgQ1BNIGZvdW5kIHdpdGggcHJvdmlkZXIgJyR7dH0nIGFuZCBwcm9jZXNzb3IgJyR7cn0nYCksIHYoXCJtb3JlX3RoYW5fb25lX2NwbV9mb3VuZFwiLCB7XG4gICAgcHJvdmlkZXI6IHQsXG4gICAgcHJvY2Vzc29yOiByLFxuICAgIGNwbXM6IGVcbiAgfSkpLCBuWzBdO1xufSwgUiA9IHtcbiAgLy8g4pyLIE5vdGU6IEZvciBmbG93cyB0aGF0IHJlcXVpcmUgaW5pdGlhbGl6YXRpb24sIHBsZWFzZSBhZGQgdGhlbSB0byBgaW5pdC1mbG93cy50c2BcbiAgLy8gQ29tbW9uXG4gIGNvbW1vbkNDOiB7XG4gICAgaW5pdDogYXN5bmMgKCkgPT4ge1xuICAgIH0sXG4gICAgcnVuOiBJbFxuICB9LFxuICAvLyBTdHJpcGVcbiAgc3RyaXBlUFI6IHtcbiAgICBpbml0OiBudSxcbiAgICBydW46IG91XG4gIH0sXG4gIHN0cmlwZUxpbms6IHtcbiAgICBpbml0OiBabCxcbiAgICBydW46IFFsXG4gIH0sXG4gIHN0cmlwZUtsYXJuYToge1xuICAgIGluaXQ6IEtsLFxuICAgIHJ1bjogWWxcbiAgfSxcbiAgc3RyaXBlQWZmaXJtOiB7XG4gICAgaW5pdDogR2wsXG4gICAgcnVuOiBxbFxuICB9LFxuICBzdHJpcGVBZnRlcnBheToge1xuICAgIGluaXQ6IHpsLFxuICAgIHJ1bjogQmxcbiAgfSxcbiAgLy8gUG9ja3l0XG4gIHBvY2t5dFBheXBhbDoge1xuICAgIGluaXQ6IE9sLFxuICAgIHJ1bjogamxcbiAgfSxcbiAgLy8gUGF5UGFsXG4gIHBheXBhbDoge1xuICAgIGluaXQ6IERsLFxuICAgIHJ1bjogVWxcbiAgfSxcbiAgLy8gS2xhcm5hXG4gIGFpcndhbGxleEtsYXJuYToge1xuICAgIGluaXQ6IFhjLFxuICAgIHJ1bjogZWxcbiAgfSxcbiAgLy8gQWlyd2FsbGV4XG4gIGFpcndhbGxleEdvb2dsZVBheToge1xuICAgIGluaXQ6IEpjLFxuICAgIHJ1bjogWmNcbiAgfSxcbiAgYWlyd2FsbGV4QXBwbGVQYXk6IHtcbiAgICBpbml0OiBZYyxcbiAgICBydW46IFdjXG4gIH0sXG4gIGFpcndhbGxleEFDSDoge1xuICAgIGluaXQ6IGFzeW5jICgpID0+IHtcbiAgICB9LFxuICAgIHJ1bjogemNcbiAgfSxcbiAgYWlyd2FsbGV4RUZUOiB7XG4gICAgaW5pdDogYXN5bmMgKCkgPT4ge1xuICAgIH0sXG4gICAgcnVuOiB2Y1xuICB9LFxuICBhaXJ3YWxsZXhCQUNTOiB7XG4gICAgaW5pdDogYXN5bmMgKCkgPT4ge1xuICAgIH0sXG4gICAgcnVuOiBnY1xuICB9LFxuICBhaXJ3YWxsZXhTRVBBOiB7XG4gICAgaW5pdDogYXN5bmMgKCkgPT4ge1xuICAgIH0sXG4gICAgcnVuOiBQY1xuICB9LFxuICAvLyBMb29wXG4gIGxvb3BDcnlwdG86IHtcbiAgICBpbml0OiBMbCxcbiAgICBydW46IE1sXG4gIH0sXG4gIGF1dGhvcml6ZU5ldEFwcGxlUGF5OiB7XG4gICAgaW5pdDogbmwsXG4gICAgcnVuOiBvbFxuICB9LFxuICBhdXRob3JpemVOZXRHb29nbGVQYXk6IHtcbiAgICBpbml0OiBhbCxcbiAgICBydW46IGlsXG4gIH0sXG4gIGFkeWVuR29vZ2xlUGF5OiB7XG4gICAgaW5pdDogR2MsXG4gICAgcnVuOiBxY1xuICB9LFxuICBhZHllbkFwcGxlUGF5OiB7XG4gICAgaW5pdDogamMsXG4gICAgcnVuOiAkY1xuICB9XG4gIC8vIPCfkYkgQWRkIG1vcmUgZmxvd3MgaGVyZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxufSwgeyBsb2dfXzogc3UsIGVycl9fOiBjdSB9ID0gayhcImluaXQtZmxvd3NcIiksIFggPSAoZSwgdCkgPT4ge1xuICBjb25zdCByID0gbmV3IFhlKCk7XG4gIHJldHVybiB7XG4gICAgcHVibGlzaGVyOiByLFxuICAgIGluaXRpYWxpemU6IGFzeW5jIChuKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoci5jdXJyZW50LmlzU3VjY2VzcylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGZsb3cgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC5cIik7XG4gICAgICAgIGNvbnN0IGEgPSBhd2FpdCB0KG4pO1xuICAgICAgICBzdShg4pyUICR7ZX0gZmxvdyBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuIFJlc3VsdDpgLCBhKSwgci5zZXQoYSk7XG4gICAgICB9IGNhdGNoIChhKSB7XG4gICAgICAgIGN1KGDwnZmtICR7ZX0gZmxvdyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIEVycm9yOmAsIGFlKGEpLCBcIkRldGFpbHM6XCIsIGEpLCByLnRocm93KGEsIGFlKGEpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59LCBsdSA9IGFzeW5jIChlLCB0LCByKSA9PiB7XG4gIGF3YWl0IFByb21pc2UuYWxsKE9iamVjdC52YWx1ZXMoZSkubWFwKChuKSA9PiBuLmluaXRpYWxpemUoeyBjb250ZXh0OiB0LCBmb3JtQ2FsbGJhY2tzOiByIH0pKSk7XG59LCB1dSA9ICgpID0+ICh7XG4gIC8vIPCfkqEgQWRkIG5ldyBpbml0IGZsb3dzIGhlcmVcbiAgLy8gU3RyaXBlIFBSXG4gIHN0cmlwZVBSOiBYKFwiU3RyaXBlIFBSXCIsIFIuc3RyaXBlUFIuaW5pdCksXG4gIC8vIFN0cmlwZSBMaW5rXG4gIHN0cmlwZUxpbms6IFgoXCJTdHJpcGUgTGlua1wiLCBSLnN0cmlwZUxpbmsuaW5pdCksXG4gIC8vIFN0cmlwZSBLbGFybmFcbiAgc3RyaXBlS2xhcm5hOiBYKFwiU3RyaXBlIEtsYXJuYVwiLCBSLnN0cmlwZUtsYXJuYS5pbml0KSxcbiAgLy8gU3RyaXBlIEFmZmlybVxuICBzdHJpcGVBZmZpcm06IFgoXCJTdHJpcGUgQWZmaXJtXCIsIFIuc3RyaXBlQWZmaXJtLmluaXQpLFxuICAvLyBTdHJpcGUgQWZ0ZXJwYXlcbiAgc3RyaXBlQWZ0ZXJwYXk6IFgoXCJTdHJpcGUgQWZ0ZXJwYXlcIiwgUi5zdHJpcGVBZnRlcnBheS5pbml0KSxcbiAgLy8gQWlyd2FsbGV4IEdvb2dsZVBheVxuICBhaXJ3YWxsZXhHb29nbGVQYXk6IFgoXCJBaXJ3YWxsZXggR29vZ2xlUGF5XCIsIFIuYWlyd2FsbGV4R29vZ2xlUGF5LmluaXQpLFxuICAvLyBBaXJ3YWxsZXggQXBwbGVQYXlcbiAgYWlyd2FsbGV4QXBwbGVQYXk6IFgoXCJBaXJ3YWxsZXggQXBwbGVQYXlcIiwgUi5haXJ3YWxsZXhBcHBsZVBheS5pbml0KSxcbiAgLy8gTG9vcFxuICBsb29wOiBYKFwiTG9vcFwiLCBSLmxvb3BDcnlwdG8uaW5pdCksXG4gIC8vIFBheVBhbFxuICBwYXlwYWw6IFgoXCJQYXlQYWxcIiwgUi5wYXlwYWwuaW5pdCksXG4gIC8vIEtsYXJuYVxuICBhaXJ3YWxsZXhLbGFybmE6IFgoXCJLbGFybmFcIiwgUi5haXJ3YWxsZXhLbGFybmEuaW5pdCksXG4gIC8vIFBvY2t5dCBQYXlQYWxcbiAgcG9ja3l0UGF5cGFsOiBYKFwiUG9ja3l0IFBheVBhbFwiLCBSLnBvY2t5dFBheXBhbC5pbml0KSxcbiAgLy8gQXV0aG5ldCBHb29nbGVQYXlcbiAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiBYKFwiQXV0aG5ldCBHb29nbGVQYXlcIiwgUi5hdXRob3JpemVOZXRHb29nbGVQYXkuaW5pdCksXG4gIC8vIEF1dGhuZXQgQXBwbGVQYXlcbiAgYXV0aG9yaXplTmV0QXBwbGVQYXk6IFgoXCJBdXRobmV0IEFwcGxlUGF5XCIsIFIuYXV0aG9yaXplTmV0QXBwbGVQYXkuaW5pdCksXG4gIC8vIEFkeWVuIEdvb2dsZVBheVxuICBhZHllbkdvb2dsZVBheTogWChcIkFkeWVuIEdvb2dsZVBheVwiLCBSLmFkeWVuR29vZ2xlUGF5LmluaXQpLFxuICAvLyBBZHllbiBBcHBsZVBheVxuICBhZHllbkFwcGxlUGF5OiBYKFwiQWR5ZW4gQXBwbGVQYXlcIiwgUi5hZHllbkFwcGxlUGF5LmluaXQpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG59KSwgeyBlcnJfXzogZHUgfSA9IGsoXCJmb3JtLWNhbGxiYWNrc1wiKSwgdWUgPSB6JDEuZnVuY3Rpb24oKS5vcHRpb25hbCgpLCBIciA9IHokMS5vYmplY3Qoe1xuICBvbkZvY3VzOiB1ZSxcbiAgb25CbHVyOiB1ZSxcbiAgb25DaGFuZ2U6IHVlLFxuICBvbkxvYWQ6IHVlLFxuICBvbkxvYWRFcnJvcjogdWUsXG4gIG9uVmFsaWRhdGlvbkVycm9yOiB1ZSxcbiAgb25DaGVja291dFN0YXJ0ZWQ6IHVlLFxuICBvbkNoZWNrb3V0U3VjY2VzczogdWUsXG4gIG9uU2V0dXBQYXltZW50TWV0aG9kU3VjY2VzczogdWUsXG4gIG9uQ2hlY2tvdXRFcnJvcjogdWUsXG4gIG9uUGF5bWVudFJlcXVlc3RMb2FkOiB1ZVxufSksIHllID0gY2xhc3MgeWUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNldENhbGxiYWNrcyA9ICh0KSA9PiB7XG4gICAgICB0aGlzLl9jYWxsYmFja3MgPSB5ZS5jcmVhdGVFbXB0eUNhbGxiYWNrcygpLCBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbciwgbl0pID0+IHtcbiAgICAgICAgY29uc3QgYSA9IFZhKHIsIG4gPz8geWUuTk9PUCwgZHUpO1xuICAgICAgICB0aGlzLl9jYWxsYmFja3Nbcl0gPSBhO1xuICAgICAgfSk7XG4gICAgfSwgdGhpcy5fY2FsbGJhY2tzID0geWUuY3JlYXRlRW1wdHlDYWxsYmFja3MoKTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyBhIHJlYWQtb25seSB2ZXJzaW9uIG9mIHRoZSBjYWxsYmFja3Mgb2JqZWN0LlxuICAgKi9cbiAgZ2V0IGdldCgpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLl9jYWxsYmFja3MgfTtcbiAgfVxufTtcbnllLk5PT1AgPSAoKSA9PiB7XG59LCB5ZS5jcmVhdGVFbXB0eUNhbGxiYWNrcyA9ICgpID0+IHtcbiAgY29uc3QgdCA9IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMoSHIua2V5b2YoKS5lbnVtKS5mb3JFYWNoKChyKSA9PiB7XG4gICAgdFtyXSA9IHllLk5PT1A7XG4gIH0pLCB0O1xufSwgeWUuZnJvbU9iamVjdCA9ICh0KSA9PiB7XG4gIGNvbnN0IHIgPSBuZXcgeWUoKTtcbiAgcmV0dXJuIHIuc2V0Q2FsbGJhY2tzKEhyLnBhcnNlKHQpKSwgcjtcbn07XG5sZXQgYXIgPSB5ZTtcbmZ1bmN0aW9uIHB1KCkge1xuICB0cnkge1xuICAgIGNvbnN0IGUgPSBCKCksIHQgPSBlO1xuICAgIGlmICh0Py5uZXh0IHx8IHQ/Ll9fTkVYVF9EQVRBX18gfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNfX25leHRcIikpXG4gICAgICByZXR1cm4gXCJuZXh0anNcIjtcbiAgICBpZiAoZT8uX19OVVhUX18gfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNfX251eHRcIikpXG4gICAgICByZXR1cm4gXCJudXh0XCI7XG4gICAgaWYgKE9iamVjdC5rZXlzKGRvY3VtZW50KS5maW5kKChhKSA9PiBhLmluY2x1ZGVzKFwicmVhY3RcIikpIHx8IEFycmF5LmZyb20oZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKFwiYm9keSA+ICpcIikpLmZpbmQoXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gX3JlYWN0Um9vdENvbnRhaW5lciBkb2Vzbid0IGV4aXN0XG4gICAgICAoYSkgPT4gYS5fcmVhY3RSb290Q29udGFpbmVyXG4gICAgKSlcbiAgICAgIHJldHVybiBcInJlYWN0XCI7XG4gICAgY29uc3QgbiA9IGU7XG4gICAgcmV0dXJuIG4/LlZ1ZSB8fCBuPy5fX1ZVRV9fID8gXCJ2dWVcIiA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbbmctdmVyc2lvbl1cIikgPyBcImFuZ3VsYXJcIiA6IFwidmFuaWxsYVwiO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gIH1cbn1cbmZ1bmN0aW9uIG11KGUpIHtcbiAgdHJ5IHtcbiAgICBzd2l0Y2ggKGUpIHtcbiAgICAgIGNhc2UgXCJyZWFjdFwiOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgXCJuZXh0anNcIjoge1xuICAgICAgICBjb25zdCByID0gQigpO1xuICAgICAgICByZXR1cm4gcj8ubmV4dD8udmVyc2lvbiB8fCByPy5fX05FWFRfREFUQV9fPy5idWlsZElkIHx8IG51bGw7XG4gICAgICB9XG4gICAgICBjYXNlIFwibnV4dFwiOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgXCJ2dWVcIjpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjYXNlIFwiYW5ndWxhclwiOiB7XG4gICAgICAgIGNvbnN0IHIgPSBCKCk/LmRvY3VtZW50Py5xdWVyeVNlbGVjdG9yKFwiW25nLXZlcnNpb25dXCIpO1xuICAgICAgICByZXR1cm4gciA/IHIuZ2V0QXR0cmlidXRlKFwibmctdmVyc2lvblwiKSA6IG51bGw7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5mdW5jdGlvbiBmdSgpIHtcbiAgY29uc3QgZSA9IHB1KCksIHQgPSBtdShlKTtcbiAgcmV0dXJuIHsgZnJhbWV3b3JrOiBlLCB2ZXJzaW9uOiB0IH07XG59XG5jb25zdCBSbyA9ICgpID0+IHtcbiAgY29uc3QgZSA9IHdpbmRvdyAmJiB3aW5kb3cuc2NyZWVuID8gd2luZG93LnNjcmVlbi5oZWlnaHQgOiBudWxsLCB0ID0gd2luZG93ICYmIHdpbmRvdy5zY3JlZW4gPyB3aW5kb3cuc2NyZWVuLndpZHRoIDogbnVsbCwgciA9IHdpbmRvdyAmJiB3aW5kb3cuc2NyZWVuID8gd2luZG93LnNjcmVlbi5jb2xvckRlcHRoIDogbnVsbCwgbiA9IHdpbmRvdyAmJiB3aW5kb3cubmF2aWdhdG9yID8gd2luZG93Lm5hdmlnYXRvci5qYXZhRW5hYmxlZCgpIDogZmFsc2UsIGEgPSB3aW5kb3cgJiYgd2luZG93Lm5hdmlnYXRvciA/IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50IDogbnVsbCwgaSA9IFwidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOFwiO1xuICBsZXQgcyA9IG51bGw7XG4gIHdpbmRvdyAmJiB3aW5kb3cubmF2aWdhdG9yICYmIChzID0gd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZSA/IHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2UgOiB3aW5kb3cubmF2aWdhdG9yLmJyb3dzZXJMYW5ndWFnZSk7XG4gIGNvbnN0IGwgPSAoLyogQF9fUFVSRV9fICovIG5ldyBEYXRlKCkpLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gIHJldHVybiB7XG4gICAgY29sb3JfZGVwdGg6IHIsXG4gICAgamF2YV9lbmFibGVkOiBuLFxuICAgIGphdmFzY3JpcHRfZW5hYmxlZDogdHJ1ZSxcbiAgICBsYW5ndWFnZTogcyxcbiAgICBzY3JlZW5faGVpZ2h0OiBlLFxuICAgIHNjcmVlbl93aWR0aDogdCxcbiAgICB0aW1lX3pvbmVfb2Zmc2V0OiBsLFxuICAgIHVzZXJfYWdlbnQ6IGEsXG4gICAgYWNjZXB0X2hlYWRlcjogaVxuICB9O1xufTtcbnZhciBJID0gLyogQF9fUFVSRV9fICovICgoZSkgPT4gKGUuY2FyZCA9IFwiY2FyZFwiLCBlLnBvY2t5dFBheXBhbCA9IFwicG9ja3l0LXBheXBhbFwiLCBlLmFwcGxlUGF5ID0gXCJhcHBsZS1wYXlcIiwgZS5nb29nbGVQYXkgPSBcImdvb2dsZS1wYXlcIiwgZS5sb29wQ3J5cHRvID0gXCJsb29wLWNyeXB0b1wiLCBlLnBheXBhbCA9IFwicGF5cGFsXCIsIGUua2xhcm5hID0gXCJrbGFybmFcIiwgZS5hZmZpcm0gPSBcImFmZmlybVwiLCBlLmFmdGVycGF5ID0gXCJhZnRlcnBheVwiLCBlLnN0cmlwZUxpbmsgPSBcInN0cmlwZS1saW5rXCIsIGUuYWlyd2FsbGV4R29vZ2xlUGF5ID0gXCJhaXJ3YWxsZXgtZ29vZ2xlLXBheVwiLCBlLmFpcndhbGxleEFwcGxlUGF5ID0gXCJhaXJ3YWxsZXgtYXBwbGUtcGF5XCIsIGUuYXV0aG9yaXplbmV0R29vZ2xlUGF5ID0gXCJhdXRob3JpemVuZXQtZ29vZ2xlLXBheVwiLCBlLmF1dGhvcml6ZW5ldEFwcGxlUGF5ID0gXCJhdXRob3JpemVuZXQtYXBwbGUtcGF5XCIsIGUuYWR5ZW5Hb29nbGVQYXkgPSBcImFkeWVuLWdvb2dsZS1wYXlcIiwgZS5hZHllbkFwcGxlUGF5ID0gXCJhZHllbi1hcHBsZS1wYXlcIiwgZS5haXJ3YWxsZXhBQ0ggPSBcImFpcndhbGxleC1hY2hcIiwgZS5haXJ3YWxsZXhFRlQgPSBcImFpcndhbGxleC1lZnRcIiwgZS5haXJ3YWxsZXhCQUNTID0gXCJhaXJ3YWxsZXgtYmFjc1wiLCBlLmFpcndhbGxleFNFUEEgPSBcImFpcndhbGxleC1zZXBhXCIsIGUpKShJIHx8IHt9KTtcbnokMS5uYXRpdmVFbnVtKEkpO1xudmFyIGtlID0gLyogQF9fUFVSRV9fICovICgoZSkgPT4gKGUuQUNIID0gXCJhY2hcIiwgZS5FRlQgPSBcImVmdFwiLCBlLkJBQ1MgPSBcImJhY3NcIiwgZS5TRVBBID0gXCJzZXBhXCIsIGUuQVBQTEVfUEFZID0gXCJhcHBsZV9wYXlcIiwgZS5DUkVESVRfQ0FSRCA9IFwiY3JlZGl0X2NhcmRcIiwgZS5HT09HTEVfUEFZID0gXCJnb29nbGVfcGF5XCIsIGUuU1RSSVBFX0xJTksgPSBcInN0cmlwZV9saW5rXCIsIGUuQ1JZUFRPID0gXCJjcnlwdG9cIiwgZS5QQVlQQUwgPSBcInBheXBhbFwiLCBlKSkoa2UgfHwge30pO1xuY29uc3QgS3IgPSAoZSkgPT4ge1xuICBjb25zdCB0ID0gW2UuYWlyd2FsbGV4QXBwbGVQYXksIGUuYXV0aG9yaXplTmV0QXBwbGVQYXksIGUuYWR5ZW5BcHBsZVBheV0sIHIgPSBbXTtcbiAgdC5mb3JFYWNoKChhKSA9PiB7XG4gICAgY29uc3QgaSA9IGEucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgIGk/LmlzQXZhaWxhYmxlICYmIHIucHVzaChpKTtcbiAgfSk7XG4gIGNvbnN0IG4gPSBlLnN0cmlwZVBSLnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgcmV0dXJuIG4/LmlzQXZhaWxhYmxlICYmIG4uYXZhaWxhYmxlUHJvdmlkZXJzLmFwcGxlUGF5ICYmIHIucHVzaCh7XG4gICAgaXNBdmFpbGFibGU6IHRydWUsXG4gICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICBwcm9jZXNzb3I6IFUuRW51bS5zdHJpcGUsXG4gICAgc3RhcnRGbG93OiAoaSkgPT4gbi5zdGFydEZsb3coXCJhcHBsZV9wYXlcIiwge1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogaT8ub3ZlcnJpZGVQYXltZW50UmVxdWVzdFxuICAgIH0pXG4gIH0pLCB7XG4gICAgcHJvY2Vzc29yczogci5tYXAoKGEpID0+IGEucHJvY2Vzc29yKSxcbiAgICBpc0F2YWlsYWJsZTogci5sZW5ndGggPiAwLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgc3RhcnRGbG93OiAoYSkgPT4gX3UociwgYSlcbiAgfTtcbn0sIFlyID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IFtlLmFpcndhbGxleEdvb2dsZVBheSwgZS5hdXRob3JpemVOZXRHb29nbGVQYXksIGUuYWR5ZW5Hb29nbGVQYXldLCByID0gW107XG4gIHQuZm9yRWFjaCgoYSkgPT4ge1xuICAgIGNvbnN0IGkgPSBhLnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICBpPy5pc0F2YWlsYWJsZSAmJiByLnB1c2goaSk7XG4gIH0pO1xuICBjb25zdCBuID0gZS5zdHJpcGVQUi5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gIHJldHVybiBuPy5pc0F2YWlsYWJsZSAmJiBuLmF2YWlsYWJsZVByb3ZpZGVycy5nb29nbGVQYXkgJiYgci5wdXNoKHtcbiAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHByb2Nlc3NvcjogVS5FbnVtLnN0cmlwZSxcbiAgICBzdGFydEZsb3c6IChpKSA9PiBuLnN0YXJ0RmxvdyhcImdvb2dsZV9wYXlcIiwge1xuICAgICAgb3ZlcnJpZGVQYXltZW50UmVxdWVzdDogaT8ub3ZlcnJpZGVQYXltZW50UmVxdWVzdFxuICAgIH0pXG4gIH0pLCB7XG4gICAgcHJvY2Vzc29yczogci5tYXAoKGEpID0+IGEucHJvY2Vzc29yKSxcbiAgICBpc0F2YWlsYWJsZTogci5sZW5ndGggPiAwLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgc3RhcnRGbG93OiAoYSkgPT4geXUociwgYSlcbiAgfTtcbn0sIF91ID0gKGUsIHQpID0+IHtcbiAgaWYgKHQ/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IG4gPSBlLmZpbmQoKGEpID0+IGEucHJvY2Vzc29yID09PSB0LnByb2Nlc3Nvcik7XG4gICAgaWYgKG4/LmlzQXZhaWxhYmxlKVxuICAgICAgcmV0dXJuIG4uc3RhcnRGbG93KHQpO1xuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEFwcGxlIFBheSBwcm9jZXNzb3IgJHt0LnByb2Nlc3Nvcn0gaXMgbm90IGF2YWlsYWJsZWApO1xuICB9XG4gIGNvbnN0IHIgPSBlLmZpbmQoKG4pID0+IG4uaXNBdmFpbGFibGUpO1xuICBpZiAocilcbiAgICByZXR1cm4gci5zdGFydEZsb3codCk7XG4gIHRocm93IG5ldyBFcnJvcihcIk5vIGF2YWlsYWJsZSBBcHBsZSBQYXkgcHJvY2Vzc29yIGZvdW5kXCIpO1xufSwgeXUgPSAoZSwgdCkgPT4ge1xuICBpZiAodD8ucHJvY2Vzc29yKSB7XG4gICAgY29uc3QgbiA9IGUuZmluZCgoYSkgPT4gYS5wcm9jZXNzb3IgPT09IHQucHJvY2Vzc29yKTtcbiAgICBpZiAobj8uaXNBdmFpbGFibGUpXG4gICAgICByZXR1cm4gbi5zdGFydEZsb3codCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTcGVjaWZpZWQgR29vZ2xlIFBheSBwcm9jZXNzb3IgJHt0LnByb2Nlc3Nvcn0gaXMgbm90IGF2YWlsYWJsZWApO1xuICB9XG4gIGNvbnN0IHIgPSBlLmZpbmQoKG4pID0+IG4uaXNBdmFpbGFibGUpO1xuICBpZiAocilcbiAgICByZXR1cm4gci5zdGFydEZsb3codCk7XG4gIHRocm93IG5ldyBFcnJvcihcIk5vIGF2YWlsYWJsZSBHb29nbGUgUGF5IHByb2Nlc3NvciBmb3VuZFwiKTtcbn0sIFdyID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IFtdLCByID0gZS5haXJ3YWxsZXhLbGFybmEucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICByPy5pc0F2YWlsYWJsZSAmJiB0LnB1c2goe1xuICAgIGlzQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgcHJvY2Vzc29yOiBVLkVudW0uYWlyd2FsbGV4LFxuICAgIHN0YXJ0RmxvdzogKGEpID0+IHIuc3RhcnRGbG93KGEpXG4gIH0pO1xuICBjb25zdCBuID0gZS5zdHJpcGVLbGFybmEucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICByZXR1cm4gbj8uaXNBdmFpbGFibGUgJiYgdC5wdXNoKHtcbiAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHByb2Nlc3NvcjogVS5FbnVtLnN0cmlwZSxcbiAgICBzdGFydEZsb3c6IChhKSA9PiBuLnN0YXJ0RmxvdyhhKVxuICB9KSwge1xuICAgIHByb2Nlc3NvcnM6IHQubWFwKChhKSA9PiBhLnByb2Nlc3NvciksXG4gICAgaXNBdmFpbGFibGU6IHQubGVuZ3RoID4gMCxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHN0YXJ0RmxvdzogKGEpID0+IGh1KHQsIGEpXG4gIH07XG59LCBodSA9IChlLCB0KSA9PiB7XG4gIGlmICh0Py5wcm9jZXNzb3IpIHtcbiAgICBjb25zdCBuID0gZS5maW5kKChhKSA9PiBhLnByb2Nlc3NvciA9PT0gdC5wcm9jZXNzb3IpO1xuICAgIGlmIChuPy5pc0F2YWlsYWJsZSlcbiAgICAgIHJldHVybiBuLnN0YXJ0Rmxvdyh0KTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNwZWNpZmllZCBLbGFybmEgcHJvY2Vzc29yICR7dC5wcm9jZXNzb3J9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgfVxuICBjb25zdCByID0gZS5maW5kKChuKSA9PiBuLmlzQXZhaWxhYmxlKTtcbiAgaWYgKHIpXG4gICAgcmV0dXJuIHIuc3RhcnRGbG93KHQpO1xuICB0aHJvdyBuZXcgRXJyb3IoXCJObyBhdmFpbGFibGUgS2xhcm5hIHByb2Nlc3NvciBmb3VuZFwiKTtcbn0sIEpyID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IFtdLCByID0gZS5zdHJpcGVBZmZpcm0ucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICByZXR1cm4gcj8uaXNBdmFpbGFibGUgJiYgdC5wdXNoKHtcbiAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHByb2Nlc3NvcjogVS5FbnVtLnN0cmlwZSxcbiAgICBzdGFydEZsb3c6IChuKSA9PiByLnN0YXJ0RmxvdyhuKVxuICB9KSwge1xuICAgIHByb2Nlc3NvcnM6IHQubWFwKChuKSA9PiBuLnByb2Nlc3NvciksXG4gICAgaXNBdmFpbGFibGU6IHQubGVuZ3RoID4gMCxcbiAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIHN0YXJ0RmxvdzogKG4pID0+IGd1KHQsIG4pXG4gIH07XG59LCBndSA9IChlLCB0KSA9PiB7XG4gIGlmICh0Py5wcm9jZXNzb3IpIHtcbiAgICBjb25zdCBuID0gZS5maW5kKChhKSA9PiBhLnByb2Nlc3NvciA9PT0gdC5wcm9jZXNzb3IpO1xuICAgIGlmIChuPy5pc0F2YWlsYWJsZSlcbiAgICAgIHJldHVybiBuLnN0YXJ0Rmxvdyh0KTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNwZWNpZmllZCBBZmZpcm0gcHJvY2Vzc29yICR7dC5wcm9jZXNzb3J9IGlzIG5vdCBhdmFpbGFibGVgKTtcbiAgfVxuICBjb25zdCByID0gZS5maW5kKChuKSA9PiBuLmlzQXZhaWxhYmxlKTtcbiAgaWYgKHIpXG4gICAgcmV0dXJuIHIuc3RhcnRGbG93KHQpO1xuICB0aHJvdyBuZXcgRXJyb3IoXCJObyBhdmFpbGFibGUgQWZmaXJtIHByb2Nlc3NvciBmb3VuZFwiKTtcbn0sIFpyID0gKGUpID0+IHtcbiAgY29uc3QgdCA9IFtdLCByID0gZS5zdHJpcGVBZnRlcnBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gIHJldHVybiByPy5pc0F2YWlsYWJsZSAmJiB0LnB1c2goe1xuICAgIGlzQXZhaWxhYmxlOiB0cnVlLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgcHJvY2Vzc29yOiBVLkVudW0uc3RyaXBlLFxuICAgIHN0YXJ0RmxvdzogKG4pID0+IHIuc3RhcnRGbG93KG4pXG4gIH0pLCB7XG4gICAgcHJvY2Vzc29yczogdC5tYXAoKG4pID0+IG4ucHJvY2Vzc29yKSxcbiAgICBpc0F2YWlsYWJsZTogdC5sZW5ndGggPiAwLFxuICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgc3RhcnRGbG93OiAobikgPT4gd3UodCwgbilcbiAgfTtcbn0sIHd1ID0gKGUsIHQpID0+IHtcbiAgaWYgKHQ/LnByb2Nlc3Nvcikge1xuICAgIGNvbnN0IG4gPSBlLmZpbmQoKGEpID0+IGEucHJvY2Vzc29yID09PSB0LnByb2Nlc3Nvcik7XG4gICAgaWYgKG4/LmlzQXZhaWxhYmxlKVxuICAgICAgcmV0dXJuIG4uc3RhcnRGbG93KHQpO1xuICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEFmdGVycGF5IHByb2Nlc3NvciAke3QucHJvY2Vzc29yfSBpcyBub3QgYXZhaWxhYmxlYCk7XG4gIH1cbiAgY29uc3QgciA9IGUuZmluZCgobikgPT4gbi5pc0F2YWlsYWJsZSk7XG4gIGlmIChyKVxuICAgIHJldHVybiByLnN0YXJ0Rmxvdyh0KTtcbiAgdGhyb3cgbmV3IEVycm9yKFwiTm8gYXZhaWxhYmxlIEFmdGVycGF5IHByb2Nlc3NvciBmb3VuZFwiKTtcbn0sIHZ1ID0gKGUpID0+IEpTT04uc3RyaW5naWZ5KGUpLCB7IGxvZ19fOiBKdCwgZXJyX186IGJ1IH0gPSBrKFwidHJhY2VyXCIpLCBQdSA9IChlLCB0KSA9PiB7XG4gIHRyeSB7XG4gICAgRXUoZSwgdCk7XG4gIH0gY2F0Y2ggKHIpIHtcbiAgICBidShgRXJyb3IgaW5pdGlhbGl6aW5nIHRyYWNlcjogJHtyfWApO1xuICB9XG59O1xubGV0IFFyO1xuY29uc3QgRXUgPSBhc3luYyAoZSwgdCkgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA+IFwidVwiKVxuICAgIHJldHVybjtcbiAgY29uc3QgciA9IGF3YWl0IGltcG9ydCgnLi9pbmRleC1EQ0RzZFlOZy0hfnswMDZ9fi5qcycpLCB7IENvbnNvbGVTcGFuRXhwb3J0ZXI6IG4sIFNpbXBsZVNwYW5Qcm9jZXNzb3I6IGEsIFdlYlRyYWNlclByb3ZpZGVyOiBpIH0gPSByLCBzID0gYXdhaXQgaW1wb3J0KCcuL2luZGV4LUNsbm1XTDB6LSF+ezAwOX1+LmpzJyksIHsgRmV0Y2hJbnN0cnVtZW50YXRpb246IGwgfSA9IHMsIGMgPSBhd2FpdCBpbXBvcnQoJy4vaW5kZXgtQ3VfT3RTekMtIX57MDBkfX4uanMnKSwgeyBab25lQ29udGV4dE1hbmFnZXI6IHUgfSA9IGMsIGQgPSBhd2FpdCBpbXBvcnQoJy4vaW5kZXgtRFJlcnZYaWUtIX57MDBlfX4uanMnKSwgeyByZWdpc3Rlckluc3RydW1lbnRhdGlvbnM6IG0gfSA9IGQsIGYgPSBhd2FpdCBpbXBvcnQoJy4vaW5kZXgtQ3BOdGpzcDUtIX57MDAxfX4uanMnKSwgeyBSZXNvdXJjZTogeSB9ID0gZiwgXyA9IGF3YWl0IGltcG9ydCgnLi9kZXRlY3QtcmVzb3VyY2VzLUNibjF5ZVRtLSF+ezAwZ31+LmpzJykudGhlbigoVnQpID0+IFZ0LmQpLCB7IGRldGVjdFJlc291cmNlc1N5bmM6IGcgfSA9IF8sIHcgPSBhd2FpdCBpbXBvcnQoJy4vaW5kZXgtQjdDeElqRDEtIX57MDBrfX4uanMnKSwgeyBPVExQVHJhY2VFeHBvcnRlcjogaCB9ID0gdywgYiA9IGF3YWl0IGltcG9ydCgnLi9pbmRleC1DU2ZNUDZLai0hfnswMG19fi5qcycpLCB7IEIzUHJvcGFnYXRvcjogUywgQjNJbmplY3RFbmNvZGluZzogQyB9ID0gYiwgTCA9IGF3YWl0IGltcG9ydCgnLi9pbmRleC1CWmhmZEtCaS0hfnswMDN9fi5qcycpLCB7IEJhdGNoU3BhblByb2Nlc3NvcjogQSB9ID0gTDtcbiAgSnQoYEluaXRpYWxpemluZyB0cmFjZXIgd2l0aCB2ZXJzaW9uICR7ZX0gYW5kIGJhc2VVcmwgJHt0fWApO1xuICBjb25zdCAkID0gQ3UodCk7XG4gIEp0KGBVc2luZyBjb2xsZWN0b3IgVVJMICR7JH1gKTtcbiAgY29uc3QgdXQgPSBuZXcgaCh7IHVybDogJCB9KSwgQWUgPSB7XG4gICAgXCJzZXJ2aWNlLnZlcnNpb25cIjogZSxcbiAgICBcInNlcnZpY2UubmFtZVwiOiBcIm9qc1wiXG4gIH07XG4gIHJldHVybiBuZXcgaSh7XG4gICAgcmVzb3VyY2U6IG5ldyB5KEFlKS5tZXJnZShnKCkpLFxuICAgIHNwYW5Qcm9jZXNzb3JzOiBbXG4gICAgICBuZXcgYShuZXcgbigpKSxcbiAgICAgIG5ldyBBKHV0LCB7XG4gICAgICAgIHNjaGVkdWxlZERlbGF5TWlsbGlzOiA1MDBcbiAgICAgIH0pXG4gICAgXVxuICB9KS5yZWdpc3Rlcih7XG4gICAgY29udGV4dE1hbmFnZXI6IG5ldyB1KCksXG4gICAgcHJvcGFnYXRvcjogbmV3IFMoeyBpbmplY3RFbmNvZGluZzogQy5NVUxUSV9IRUFERVIgfSlcbiAgfSksIG0oe1xuICAgIGluc3RydW1lbnRhdGlvbnM6IFtcbiAgICAgIG5ldyBsKHtcbiAgICAgICAgcHJvcGFnYXRlVHJhY2VIZWFkZXJDb3JzVXJsczogWy8uKi9dLFxuICAgICAgICAvLyBQcm9wYWdhdGUgdG8gYWxsIFVSTHNcbiAgICAgICAgLy8gRXhjbHVkZSBBZHllbiBVUkxzIC0gdGhleSBkbyBub3QgYWxsb3cgT1BUSU9OUyByZXF1ZXN0c1xuICAgICAgICAvLyBBbHNvIGV4Y2x1ZGUgbG9vcGNyeXB0by54eXpcbiAgICAgICAgaWdub3JlVXJsczogWy9eaHR0cHM6XFwvXFwvKC4qXFwuKT9hZHllblxcLmNvbS8sIC9eaHR0cHM6XFwvXFwvKC4qXFwuKT9sb29wY3J5cHRvXFwueHl6L11cbiAgICAgIH0pXG4gICAgXVxuICB9KSwgUXIgPSBqZS5nZXRUcmFjZXIoXCJvcGVucGF5LWpzXCIpLCBKdChcIlRyYWNlciBpbml0aWFsaXplZFwiKSwgUXI7XG59LCBDdSA9IChlKSA9PiB7XG4gIGNvbnN0IHQgPSBuZXcgVVJMKGUpLmhvc3RuYW1lO1xuICByZXR1cm4gdCA9PT0gXCJjZGUub3BlbnBheXN0YWdpbmcuY29tXCIgPyBcImh0dHBzOi8vb3RlbC5vcGVucGF5c2FuZGJveC5jb20vdjEvdHJhY2VzXCIgOiB0ID09PSBcImNkZS5nZXRvcGVucGF5LmNvbVwiID8gXCJodHRwczovL290ZWwuZ2V0b3BlbnBheS5jb20vdjEvdHJhY2VzXCIgOiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDMxOS92MS90cmFjZXNcIjtcbn07XG5jbGFzcyBBdSB7XG4gIGNvbnN0cnVjdG9yKHQsIHIsIG4sIGEpIHtcbiAgICB0aGlzLmhhbmRsZU1lc3NhZ2UgPSAoaSkgPT4ge1xuICAgICAgaWYgKCFpLnNvdXJjZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJbT0pTXSBObyBzb3VyY2UgZm91bmRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChYcihpLm9yaWdpbikgIT09IFhyKHRoaXMuYmFzZVVybCkgfHwgdHlwZW9mIGkuZGF0YSA9PSBcIm9iamVjdFwiICYmIGkuZGF0YS5wZW5wYWwgfHwgdHlwZW9mIGkuZGF0YSA9PSBcIm9iamVjdFwiICYmIGkuZGF0YS5zb3VyY2UgJiYgaS5kYXRhLnNvdXJjZSA9PT0gXCJyZWFjdC1kZXZ0b29scy1icmlkZ2VcIilcbiAgICAgICAgcmV0dXJuO1xuICAgICAgbGV0IHMgPSBudWxsO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcyA9IHNjKEpTT04ucGFyc2UoaS5kYXRhKSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlRXZlbnQocykpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgZWxlbWVudElkOiBjLCBwYXlsb2FkOiB1IH0gPSBzLCBkID0gdS50eXBlO1xuICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgIGNhc2UgXCJMQVlPVVRcIjpcbiAgICAgICAgICB0aGlzLmludGVybmFsQ2FsbGJhY2tzLnNldEZvcm1IZWlnaHQodS5oZWlnaHQgPyBgJHt1LmhlaWdodH1weGAgOiBcIjEwMCVcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJGT0NVU1wiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25Gb2N1cyhjLCB1LmVsZW1lbnRUeXBlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkJMVVJcIjpcbiAgICAgICAgICB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQmx1cihjLCB1LmVsZW1lbnRUeXBlLCB7XG4gICAgICAgICAgICBvYmZ1c2NhdGVkVmFsdWU6IHUub2JmdXNjYXRlZFZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDSEFOR0VcIjpcbiAgICAgICAgICB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uQ2hhbmdlKGMsIHUuZWxlbWVudFR5cGUsIHUuZXJyb3JzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkxPQURFRFwiOlxuICAgICAgICAgIHRoaXMuZXZlbnRUYXJnZXRzW2NdID0gaS5zb3VyY2UsIHRoaXMuaW50ZXJuYWxDYWxsYmFja3Mub25DZGVMb2FkZWQodSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJMT0FEX0VSUk9SXCI6XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbENhbGxiYWNrcy5vbkNkZUxvYWRFcnJvcih1Lm1lc3NhZ2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVkFMSURBVElPTl9FUlJPUlwiOlxuICAgICAgICAgIHRoaXMuZm9ybUNhbGxiYWNrcy5nZXQub25WYWxpZGF0aW9uRXJyb3IodS5lbGVtZW50VHlwZSwgdS5lcnJvcnMsIGMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUud2FybihcIltmb3JtXSBVbmhhbmRsZWQgZXZlbnQgdHlwZTpcIiwgZCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy52YWxpZGF0ZUV2ZW50ID0gKGkpID0+IGkuZm9ybUlkICE9PSB0aGlzLmZvcm1JZCB8fCAhaS5lbGVtZW50SWQgPyAoY29uc29sZS5sb2coXCJbT0pTXSBmb3JtSWRcIiwgdGhpcy5mb3JtSWQsIGkuZm9ybUlkKSwgY29uc29sZS53YXJuKFwiW2Zvcm1dIElnbm9yaW5nIHVua25vd24gZXZlbnQ6XCIsIGkpLCBmYWxzZSkgOiB0aGlzLm5vbmNlcy5oYXMoaS5ub25jZSkgPyAoY29uc29sZS53YXJuKFwiW2Zvcm1dIElnbm9yaW5nIGR1cGxpY2F0ZSBldmVudDpcIiwgaSksIGZhbHNlKSA6ICh0aGlzLm5vbmNlcy5hZGQoaS5ub25jZSksIHRydWUpLCB0aGlzLmV2ZW50VGFyZ2V0cyA9IHt9LCB0aGlzLm5vbmNlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCksIHRoaXMuZm9ybUlkID0gdCwgdGhpcy5iYXNlVXJsID0gciwgdGhpcy5mb3JtQ2FsbGJhY2tzID0gbiwgdGhpcy5pbnRlcm5hbENhbGxiYWNrcyA9IGE7XG4gIH1cbn1cbmNvbnN0IFhyID0gKGUpID0+IG5ldyBVUkwoZSkub3JpZ2luO1xuYXN5bmMgZnVuY3Rpb24gU3UoZSwgdCkge1xuICBjb25zdCBuID0gYXdhaXQgY29ubmVjdFRvQ2hpbGQoe1xuICAgIGlmcmFtZTogZSxcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgY2hpbGRPcmlnaW46IHRcbiAgfSkucHJvbWlzZSwgYSA9IGF3YWl0IFdzKG4pO1xuICBpZiAoIUpzKG4sIGEpKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkdvdCBpbnZhbGlkIENERSBjb25uZWN0aW9uIG9iamVjdFwiKTtcbiAgcmV0dXJuIG47XG59XG5jbGFzcyBrdSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICB9XG4gIGFkZENvbm5lY3Rpb24odCwgcikge1xuICAgIHRoaXMuY29ubmVjdGlvbnMuc2V0KHQsIHIpO1xuICB9XG4gIGdldENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3QgdCA9IHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgIGlmICghdClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbm5lY3Rpb24gbm90IGZvdW5kXCIpO1xuICAgIHJldHVybiB0O1xuICB9XG4gIGdldEFsbENvbm5lY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zO1xuICB9XG59XG5jb25zdCBJdSA9IChlLCB0LCByKSA9PiB7XG4gIGNvbnN0IHsgc3RyaXBlUFI6IG4gfSA9IGU7XG4gIG4ucHVibGlzaGVyLnN1YnNjcmliZSgoYSkgPT4ge1xuICAgIGlmIChhLmlzU3VjY2Vzcykge1xuICAgICAgY29uc3QgaSA9IGEubG9hZGVkVmFsdWUsIHMgPSBpLmlzQXZhaWxhYmxlICYmIGkuYXZhaWxhYmxlUHJvdmlkZXJzLmFwcGxlUGF5LCBsID0gaS5pc0F2YWlsYWJsZSAmJiBpLmF2YWlsYWJsZVByb3ZpZGVycy5nb29nbGVQYXksIGMgPSB7XG4gICAgICAgIGFwcGxlX3BheToge1xuICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgaXNBdmFpbGFibGU6IHMsXG4gICAgICAgICAgc3RhcnRGbG93OiBhc3luYyAodSkgPT4ge1xuICAgICAgICAgICAgcyAmJiBlbihcImFwcGxlX3BheVwiLCBpLCB0LCByLCB1KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdvb2dsZV9wYXk6IHtcbiAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIGlzQXZhaWxhYmxlOiBsLFxuICAgICAgICAgIHN0YXJ0RmxvdzogYXN5bmMgKHUpID0+IHtcbiAgICAgICAgICAgIGwgJiYgZW4oXCJnb29nbGVfcGF5XCIsIGksIHQsIHIsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHIuZ2V0Lm9uUGF5bWVudFJlcXVlc3RMb2FkKGMpO1xuICAgIH1cbiAgfSk7XG59LCBlbiA9IChlLCB0LCByLCBuLCBhKSA9PiBSLnN0cmlwZVBSLnJ1bih7XG4gIGNvbnRleHQ6IHIsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogX2Uoci5jaGVja291dFBheW1lbnRNZXRob2RzLCBlKSxcbiAgbm9uQ2RlRm9ybUlucHV0czogaihyLmZvcm1EaXYpLFxuICBmb3JtQ2FsbGJhY2tzOiBuLFxuICBjdXN0b21QYXJhbXM6IHsgcHJvdmlkZXI6IGUsIG92ZXJyaWRlUGF5bWVudFJlcXVlc3Q6IGE/Lm92ZXJyaWRlUGF5bWVudFJlcXVlc3QgfSxcbiAgaW5pdFJlc3VsdDogdFxufSksIHRuID0gXCJUaGUgc2VjdXJlIGZvcm0gZmFpbGVkIHRvIGxvYWQgcHJvcGVybHkuIFBsZWFzZSBjaGVjayB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24sIG9yIHRyeSBhZ2FpbiBsYXRlci5cIiwgeyBsb2dfXzogZmUsIGVycl9fOiBuZSB9ID0gayhcIm9wLWZvcm1cIiksIGhlID0gY2xhc3MgaGUge1xuICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgdGhpcy5pc0Rlc3Ryb3llZCA9IGZhbHNlLCB0aGlzLmNkZUxvYWRFdmVudCA9IG5ldyBYZSgpLCB0aGlzLmFueUNkZUNvbm4gPSBuZXcgWGUoKSwgdGhpcy5jb250ZXh0ID0gbmV3IFhlKCksIHRoaXMuaW5pdEZsb3dzID0gdXUoKSwgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZSwgdGhpcy5zdGFydEZvcm1Jbml0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYSA9IGplLmdldFRyYWNlcihcIm9wZW5wYXktanNcIiksIGkgPSBhLnN0YXJ0U3BhbihcImZvcm0uaW5pdGlhbGl6ZVwiLCB7XG4gICAgICAgIGtpbmQ6IGF0LkNMSUVOVCxcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgIFwib2pzLmNoZWNrb3V0U2VjdXJlVG9rZW5cIjogdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgICBcIm9qcy5kZXZpY2VUb2tlblwiOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICAgIFwib2pzLmZvcm1JZFwiOiB0aGlzLmZvcm1JZCxcbiAgICAgICAgICBcIm9qcy52ZXJzaW9uXCI6IHRoaXMub2pzVmVyc2lvbixcbiAgICAgICAgICBcIm9qcy5yZWxlYXNlX3ZlcnNpb25cIjogdGhpcy5vanNSZWxlYXNlVmVyc2lvbixcbiAgICAgICAgICBcIm9qcy5iYXNlX3VybFwiOiB0aGlzLmJhc2VVcmwsXG4gICAgICAgICAgXCJvanMucmVmZXJyZXJcIjogdGhpcy5yZWZlcnJlclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB4ZS53aXRoKGplLnNldFNwYW4oeGUuYWN0aXZlKCksIGkpLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcyA9IHRoaXMuY3JlYXRlRWxlbWVudChnZS5DREVfQlJJREdFKTtcbiAgICAgICAgICBzLm5vZGUuaWQgPSBcIl9fb3BfaW50ZXJuYWxfY2RlX2JyaWRnZVwiLCBzLm5vZGUuYXJpYUhpZGRlbiA9IFwidHJ1ZVwiLCBPYmplY3QuYXNzaWduKHMubm9kZS5zdHlsZSwge1xuICAgICAgICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgICAgICAgIG1hcmdpbjogXCIwcHhcIixcbiAgICAgICAgICAgIHBhZGRpbmc6IFwiMHB4XCIsXG4gICAgICAgICAgICB3aWR0aDogXCIxcHhcIixcbiAgICAgICAgICAgIGhlaWdodDogXCIxcHhcIixcbiAgICAgICAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogXCJoaWRkZW5cIixcbiAgICAgICAgICAgIHBvc2l0aW9uOiBcImZpeGVkXCIsXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIixcbiAgICAgICAgICAgIHVzZXJTZWxlY3Q6IFwibm9uZVwiXG4gICAgICAgICAgfSksIHMubW91bnQoXCJib2R5XCIpLCBmZShcIkNERSBicmlkZ2UgZWxlbWVudCBtb3VudGVkXCIpLCBmZShcIkluaXRpYWxpemluZyBPcGVuUGF5IGZvcm06XCIpLCBmZShcIuKUnCBXYWl0aW5nIGZvciBDREUgbG9hZCBldmVudC4uLlwiKTtcbiAgICAgICAgICBjb25zdCBsID0gYXdhaXQgdGhpcy5jZGVMb2FkRXZlbnQud2FpdEZvckxvYWQoe1xuICAgICAgICAgICAgdGltZW91dFNlYzogMTIwLFxuICAgICAgICAgICAgdGltZW91dEVyck1zZzogdG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBmZShcIuKUnCBDREUgbG9hZCBldmVudCByZWNlaXZlZFwiKSwgaT8uYWRkRXZlbnQoXCJ3YWl0aW5nX2Zvcl9jZGVfY29ubmVjdGlvblwiKSwgZmUoXCLilJwgV2FpdGluZyBmb3IgQ0RFIGNvbm5lY3Rpb24uLi5cIik7XG4gICAgICAgICAgY29uc3QgYyA9IGE/LnN0YXJ0U3BhbihcImNkZS5jb25uZWN0XCIsIHZvaWQgMCwgeGUuYWN0aXZlKCkpLCB1ID0gYXdhaXQgdGhpcy5hbnlDZGVDb25uLndhaXRGb3JMb2FkKHtcbiAgICAgICAgICAgIHRpbWVvdXRTZWM6IDEyMCxcbiAgICAgICAgICAgIHRpbWVvdXRFcnJNc2c6IHRuXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYz8uZW5kKCksIGk/LmFkZEV2ZW50KFwiY2RlX2Nvbm5lY3RlZFwiKSwgZmUoXCLilJwgQ0RFIGNvbm5lY3Rpb24gcmVjZWl2ZWRcIiksIGF3YWl0IFlzKHUsIHRoaXMuZGV2aWNlVG9rZW4pLCBmZShcIuKUnCBDcmVhdGluZyBPSlMgY29udGV4dCwgc2V0dGluZyB1cCBoYW5kbGVycy4uLlwiKTtcbiAgICAgICAgICBjb25zdCBkID0gaGUuYnVpbGRPanNGbG93Q29udGV4dChcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICAgICAgbCxcbiAgICAgICAgICAgIHUsXG4gICAgICAgICAgICB0aGlzLmdldEZvcm1EaXYoKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LnNldChkKSwgSXUodGhpcy5pbml0Rmxvd3MsIGQsIHRoaXMuZm9ybUNhbGxiYWNrcyksIGZlKFwi4pScIFN0YXJ0aW5nIE9KUyBpbml0IGZsb3dzLi4uXCIpLCBhd2FpdCBsdSh0aGlzLmluaXRGbG93cywgZCwgdGhpcy5mb3JtQ2FsbGJhY2tzKSwgdGhpcy5mb3JtQ2FsbGJhY2tzLmdldC5vbkxvYWQobC50b3RhbEFtb3VudEF0b21zLCBsLmN1cnJlbmN5KSwgZmUoXCLilbAgRG9uZSBpbml0aWFsaXppbmcgT0pTIGZsb3dzLlwiKSwgaT8uc2V0U3RhdHVzKHsgY29kZTogUGUuT0sgfSksIHYoXCJmb3JtX2xvYWRlZFwiKTtcbiAgICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICAgIGNvbnN0IGwgPSBhZShzKTtcbiAgICAgICAgICBpPy5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgY29kZTogUGUuRVJST1IsXG4gICAgICAgICAgICBtZXNzYWdlOiBsXG4gICAgICAgICAgfSksIG5lKFwi4pWwIEVycm9yIGluaXRpYWxpemluZyBPUCBmb3JtOlwiLCBsKSwgdihcImZvcm1faW5pdF9lcnJvclwiLCB7XG4gICAgICAgICAgICBlcnJvcjogbFxuICAgICAgICAgIH0pLCB0aGlzLmZvcm1DYWxsYmFja3MuZ2V0Lm9uTG9hZEVycm9yKGwpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGk/LmVuZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCB0aGlzLnNldEZvcm1IZWlnaHQgPSAoYSkgPT4ge1xuICAgICAgdGhpcy5mb3JtUHJvcGVydGllcy5oZWlnaHQgPSBhLCB0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyAmJiBPYmplY3QudmFsdWVzKHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzKS5mb3JFYWNoKChpKSA9PiB7XG4gICAgICAgICFpIHx8IGkudHlwZSA9PT0gZ2UuQ0RFX0JSSURHRSB8fCAoaS5ub2RlLnN0eWxlLmhlaWdodCA9IGEpO1xuICAgICAgfSk7XG4gICAgfSwgdGhpcy5vbkNkZUxvYWRlZCA9IChhKSA9PiB7XG4gICAgICB0aGlzLmNkZUxvYWRFdmVudC5jdXJyZW50LmlzU3VjY2VzcyB8fCAodGhpcy5jZGVMb2FkRXZlbnQuc2V0KGEpLCB2KFwiY2RlX2xvYWRlZFwiKSk7XG4gICAgfSwgdGhpcy5vbkNkZUxvYWRFcnJvciA9IChhKSA9PiB7XG4gICAgICB0aGlzLmNkZUxvYWRFdmVudC5jdXJyZW50LmlzU3VjY2VzcyB8fCAodGhpcy5jZGVMb2FkRXZlbnQudGhyb3cobmV3IEVycm9yKGEpLCBhKSwgdihcImNkZV9sb2FkX2Vycm9yXCIsIHtcbiAgICAgICAgZXJyb3I6IGFcbiAgICAgIH0pKTtcbiAgICB9LCB0aGlzLmNyZWF0ZUVsZW1lbnQgPSAoYSwgaSA9IHt9KSA9PiB7XG4gICAgICBpZiAodGhpcy5jaGVja1ZhbGlkRm9ybUluc3RhbmNlKFwiY3JlYXRlRWxlbWVudFwiKSwgIXRoaXMuY29uZmlnKSB0aHJvdyBuZXcgRXJyb3IoXCJPcGVuUGF5IGZvcm0gbm90IGluaXRpYWxpemVkXCIpO1xuICAgICAgY29uc3QgcyA9IE1vLnBhcnNlKGEpLCBsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKSwgYyA9IHRoaXMuYnVpbGRRdWVyeVN0cmluZyhpKTtcbiAgICAgIGwubmFtZSA9IGAke3N9LWVsZW1lbnRgO1xuICAgICAgY29uc3QgdSA9IG5ldyBVUkwoYC9hcHAvdjEvJHtsLm5hbWV9L2AsIHRoaXMuY29uZmlnLmJhc2VVcmwpO1xuICAgICAgcmV0dXJuIHUuc2VhcmNoID0gYy50b1N0cmluZygpLCBsLnNyYyA9IHUuaHJlZiwgbC5zdHlsZS5ib3JkZXIgPSBcIm5vbmVcIiwgbC5zdHlsZS53aWR0aCA9IFwiMTAwJVwiLCB0aGlzLnJlZ2lzdGVySWZyYW1lKHMsIGwpO1xuICAgIH0sIHRoaXMucmVnaXN0ZXJJZnJhbWUgPSAoYSwgaSkgPT4ge1xuICAgICAgY29uc3QgcyA9IHtcbiAgICAgICAgdHlwZTogYSxcbiAgICAgICAgbm9kZTogaSxcbiAgICAgICAgbW91bnQ6IChsKSA9PiB7XG4gICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihsKT8uYXBwZW5kQ2hpbGQoaSksIHYoXCJlbGVtZW50X21vdW50ZWRcIiwge1xuICAgICAgICAgICAgZWxlbWVudF90eXBlOiBhXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcy5jb25uZWN0VG9FbGVtZW50KHsgdHlwZTogcy50eXBlLCBub2RlOiBzLm5vZGUgfSksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzIHx8ICh0aGlzLnJlZ2lzdGVyZWRFbGVtZW50cyA9IHtcbiAgICAgICAgW2dlLkNBUkRdOiB2b2lkIDAsXG4gICAgICAgIFtnZS5DQVJEX05VTUJFUl06IHZvaWQgMCxcbiAgICAgICAgW2dlLkNBUkRfRVhQSVJZXTogdm9pZCAwLFxuICAgICAgICBbZ2UuQ0FSRF9DVkNdOiB2b2lkIDAsXG4gICAgICAgIFtnZS5DREVfQlJJREdFXTogdm9pZCAwXG4gICAgICB9KSwgdGhpcy5yZWdpc3RlcmVkRWxlbWVudHNbYV0gPSBzLCBzO1xuICAgIH0sIHRoaXMuYnVpbGRRdWVyeVN0cmluZyA9IChhKSA9PiB7XG4gICAgICBjb25zdCBpID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgcmV0dXJuIGkuYXBwZW5kKFwicmVmZXJlclwiLCB0aGlzLnJlZmVycmVyKSwgaS5hcHBlbmQoXCJmb3JtSWRcIiwgdGhpcy5mb3JtSWQpLCBhLnN0eWxlcyAmJiBpLmFwcGVuZChcInN0eWxlc1wiLCB2dShhLnN0eWxlcykpLCBpLmFwcGVuZChcInNlY3VyZVRva2VuXCIsIHRoaXMuY29uZmlnLmNoZWNrb3V0U2VjdXJlVG9rZW4pLCBpO1xuICAgIH0sIHRoaXMuY29ubmVjdFRvRWxlbWVudCA9IChhKSA9PiBmdChcbiAgICAgIHtcbiAgICAgICAgc3Bhbk5hbWU6IFwiY29ubmVjdF90b19lbGVtZW50XCIsXG4gICAgICAgIGNoZWNrb3V0U2VjdXJlVG9rZW46IHRoaXMuY29uZmlnLmNoZWNrb3V0U2VjdXJlVG9rZW4sXG4gICAgICAgIGRldmljZVRva2VuOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICBmb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgICB2ZXJzaW9uOiB0aGlzLm9qc1ZlcnNpb24sXG4gICAgICAgIHJlbGVhc2VWZXJzaW9uOiB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uLFxuICAgICAgICBiYXNlVXJsOiB0aGlzLmJhc2VVcmwsXG4gICAgICAgIHJlZmVycmVyOiB0aGlzLnJlZmVycmVyXG4gICAgICB9LFxuICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBpID0gYXdhaXQgU3UoYS5ub2RlKTtcbiAgICAgICAgaS50cmFjaW5nQ29udGV4dCA9IHtcbiAgICAgICAgICBjaGVja291dFNlY3VyZVRva2VuOiB0aGlzLmNvbmZpZy5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgIGRldmljZVRva2VuOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICAgIGZvcm1JZDogdGhpcy5mb3JtSWQsXG4gICAgICAgICAgdmVyc2lvbjogdGhpcy5vanNWZXJzaW9uLFxuICAgICAgICAgIHJlbGVhc2VWZXJzaW9uOiB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uLFxuICAgICAgICAgIGJhc2VVcmw6IHRoaXMuYmFzZVVybCxcbiAgICAgICAgICByZWZlcnJlcjogdGhpcy5yZWZlcnJlclxuICAgICAgICB9LCB0aGlzLmNvbm5lY3Rpb25NYW5hZ2VyLmFkZENvbm5lY3Rpb24oYS50eXBlLCBpKSwgIXRoaXMuYW55Q2RlQ29ubi5jdXJyZW50LmlzU3VjY2VzcyAmJiBhLnR5cGUgPT09IGdlLkNERV9CUklER0UgJiYgdGhpcy5hbnlDZGVDb25uLnNldChpKTtcbiAgICAgIH1cbiAgICApLmNhdGNoKChpKSA9PiBuZShcIltGT1JNXSBFcnJvciBjb25uZWN0aW5nIHRvIENERSBpZnJhbWVcIiwgaSkpLCB0aGlzLmdldEZvcm1EaXYgPSAoKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRoaXMuZm9ybVRhcmdldCkgPz8gZG9jdW1lbnQuYm9keSwgdGhpcy5zdWJtaXRDYXJkID0gYXN5bmMgKGEpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzU3VibWl0dGluZykge1xuICAgICAgICBuZShcIkZvcm0gaXMgYWxyZWFkeSBzdWJtaXR0aW5nLiBQbGVhc2Ugd2FpdCBmb3IgdGhlIHN1Ym1pc3Npb24gdG8gZmluaXNoIGJlZm9yZSBzdWJtaXR0aW5nIGFnYWluLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaSA9IGF3YWl0IGZ0KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNwYW5OYW1lOiBcInN1Ym1pdF9jYXJkXCIsXG4gICAgICAgICAgICBjaGVja291dFNlY3VyZVRva2VuOiB0aGlzLmNvbmZpZy5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgICAgZGV2aWNlVG9rZW46IHRoaXMuZGV2aWNlVG9rZW4sXG4gICAgICAgICAgICBmb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy5vanNWZXJzaW9uLFxuICAgICAgICAgICAgcmVsZWFzZVZlcnNpb246IHRoaXMub2pzUmVsZWFzZVZlcnNpb24sXG4gICAgICAgICAgICBiYXNlVXJsOiB0aGlzLmJhc2VVcmwsXG4gICAgICAgICAgICByZWZlcnJlcjogdGhpcy5yZWZlcnJlcixcbiAgICAgICAgICAgIHBheW1lbnRSb3V0ZUlkOiBhPy5wYXltZW50Um91dGVJZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgdihcInN1Ym1pdF9jYXJkXCIsIHsgLi4uYSB9KSwgdGhpcy5jaGVja1ZhbGlkRm9ybUluc3RhbmNlKFwic3VibWl0Q2FyZFwiKTtcbiAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLmNvbnRleHQuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgICBpZiAoIXMpXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBsZWFzZSB3YWl0IGZvciB0aGUgZm9ybSB0byBmaW5pc2ggbG9hZGluZyBiZWZvcmUgc3VibWl0dGluZy5cIik7XG4gICAgICAgICAgICBhd2FpdCBSLmNvbW1vbkNDLnJ1bih7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHMsXG4gICAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogX2Uocy5jaGVja291dFBheW1lbnRNZXRob2RzLCBcImNyZWRpdF9jYXJkXCIpLFxuICAgICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKHMuZm9ybURpdiksXG4gICAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgY3VycmVudENkZUNvbm5lY3Rpb25zOiB0aGlzLmNvbm5lY3Rpb25NYW5hZ2VyLmdldEFsbENvbm5lY3Rpb25zKCksXG4gICAgICAgICAgICAgICAgcGF5bWVudFJvdXRlSWQ6IGE/LnBheW1lbnRSb3V0ZUlkXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGhpcy5pc1N1Ym1pdHRpbmcgPSAhMSwgaTtcbiAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgdGhyb3cgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZSwgaTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLmdldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzID0gKCkgPT4gZnQoXG4gICAgICB7XG4gICAgICAgIHNwYW5OYW1lOiBcImdldF9hdmFpbGFibGVfcGF5bWVudF9tZXRob2RzXCIsXG4gICAgICAgIGNoZWNrb3V0U2VjdXJlVG9rZW46IHRoaXMuY29uZmlnLmNoZWNrb3V0U2VjdXJlVG9rZW4sXG4gICAgICAgIGRldmljZVRva2VuOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICBmb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgICB2ZXJzaW9uOiB0aGlzLm9qc1ZlcnNpb24sXG4gICAgICAgIHJlbGVhc2VWZXJzaW9uOiB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uLFxuICAgICAgICBiYXNlVXJsOiB0aGlzLmJhc2VVcmwsXG4gICAgICAgIHJlZmVycmVyOiB0aGlzLnJlZmVycmVyXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrVmFsaWRGb3JtSW5zdGFuY2UoXCJnZXRBdmFpbGFibGVQYXltZW50TWV0aG9kc1wiKTtcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuY29udGV4dC5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICAgICAgaWYgKCFhKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBsZWFzZSB3YWl0IGZvciB0aGUgZm9ybSB0byBmaW5pc2ggbG9hZGluZyBiZWZvcmUgZ2V0dGluZyBhdmFpbGFibGUgcGF5bWVudCBtZXRob2RzLlwiKTtcbiAgICAgICAgY29uc3QgeyBwcm9jZXNzb3JzOiBpLCBpc0F2YWlsYWJsZTogcyB9ID0gS3IoXG4gICAgICAgICAgdGhpcy5pbml0Rmxvd3NcbiAgICAgICAgKSwgeyBwcm9jZXNzb3JzOiBsLCBpc0F2YWlsYWJsZTogYyB9ID0gWXIoXG4gICAgICAgICAgdGhpcy5pbml0Rmxvd3NcbiAgICAgICAgKSwgZCA9IHRoaXMuaW5pdEZsb3dzLnBheXBhbC5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk/LmlzQXZhaWxhYmxlID8/ICExLCB7IHByb2Nlc3NvcnM6IG0sIGlzQXZhaWxhYmxlOiBmIH0gPSBXcih0aGlzLmluaXRGbG93cyksIHsgcHJvY2Vzc29yczogeSwgaXNBdmFpbGFibGU6IF8gfSA9IEpyKHRoaXMuaW5pdEZsb3dzKSwgeyBwcm9jZXNzb3JzOiBnLCBpc0F2YWlsYWJsZTogdyB9ID0gWnIoXG4gICAgICAgICAgdGhpcy5pbml0Rmxvd3NcbiAgICAgICAgKSwgaCA9IGEuY2hlY2tvdXRQYXltZW50TWV0aG9kcy5zb21lKFxuICAgICAgICAgIChBZSkgPT4gQWUucHJvY2Vzc29yX25hbWUgPT09IFwicG9ja3l0XCIgJiYgQWUucHJvdmlkZXIgPT09IFwicGF5cGFsXCJcbiAgICAgICAgKSwgUyA9IHRoaXMuaW5pdEZsb3dzLmxvb3AucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpPy5pc0F2YWlsYWJsZSA/PyAhMSwgQyA9IHRoaXMuaW5pdEZsb3dzLnN0cmlwZUxpbmsucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpLCBMID0gQz8uaXNBdmFpbGFibGUgPz8gITEsIEEgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogSS5jYXJkLFxuICAgICAgICAgICAgcHJvY2Vzc29yczogW10sXG4gICAgICAgICAgICBpc0F2YWlsYWJsZTogITBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IEkuYXBwbGVQYXksXG4gICAgICAgICAgICBwcm9jZXNzb3JzOiBpLFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IHNcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IEkuZ29vZ2xlUGF5LFxuICAgICAgICAgICAgcHJvY2Vzc29yczogbCxcbiAgICAgICAgICAgIGlzQXZhaWxhYmxlOiBjXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBJLnBheXBhbCxcbiAgICAgICAgICAgIHByb2Nlc3NvcnM6IGQgPyBbVS5FbnVtLnBheXBhbF0gOiBbXSxcbiAgICAgICAgICAgIGlzQXZhaWxhYmxlOiBkXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBJLmtsYXJuYSxcbiAgICAgICAgICAgIHByb2Nlc3NvcnM6IG0sXG4gICAgICAgICAgICBpc0F2YWlsYWJsZTogZlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogSS5hZmZpcm0sXG4gICAgICAgICAgICBwcm9jZXNzb3JzOiB5LFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IF9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IEkuYWZ0ZXJwYXksXG4gICAgICAgICAgICBwcm9jZXNzb3JzOiBnLFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IHdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IEkucG9ja3l0UGF5cGFsLFxuICAgICAgICAgICAgcHJvY2Vzc29yczogaCA/IFtVLkVudW0ucG9ja3l0XSA6IFtdLFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IGhcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IEkubG9vcENyeXB0byxcbiAgICAgICAgICAgIHByb2Nlc3NvcnM6IFMgPyBbVS5FbnVtLmxvb3BdIDogW10sXG4gICAgICAgICAgICBpc0F2YWlsYWJsZTogU1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogSS5zdHJpcGVMaW5rLFxuICAgICAgICAgICAgcHJvY2Vzc29yczogW1UuRW51bS5zdHJpcGVdLFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IEwsXG4gICAgICAgICAgICBjb250cm9sbGVyOiBDPy5pc0F2YWlsYWJsZSA/IEMuY29udHJvbGxlciA6IHZvaWQgMFxuICAgICAgICAgIH1cbiAgICAgICAgXSwgJCA9IHtcbiAgICAgICAgICBwYXlwYWw6IEkucGF5cGFsLFxuICAgICAgICAgIGFpcndhbGxleEdvb2dsZVBheTogSS5haXJ3YWxsZXhHb29nbGVQYXksXG4gICAgICAgICAgYWlyd2FsbGV4QXBwbGVQYXk6IEkuYWlyd2FsbGV4QXBwbGVQYXksXG4gICAgICAgICAgYXV0aG9yaXplTmV0R29vZ2xlUGF5OiBJLmF1dGhvcml6ZW5ldEdvb2dsZVBheSxcbiAgICAgICAgICBhdXRob3JpemVOZXRBcHBsZVBheTogSS5hdXRob3JpemVuZXRBcHBsZVBheSxcbiAgICAgICAgICBhZHllbkdvb2dsZVBheTogSS5hZHllbkdvb2dsZVBheSxcbiAgICAgICAgICBhZHllbkFwcGxlUGF5OiBJLmFkeWVuQXBwbGVQYXlcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFsuLi5PYmplY3QuZW50cmllcyh0aGlzLmluaXRGbG93cykubWFwKChbQWUsIENyXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IFZ0ID0gQ3IucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiAkW0FlXSA/PyBBZSxcbiAgICAgICAgICAgIHByb2Nlc3NvcnM6IFtdLFxuICAgICAgICAgICAgaXNBdmFpbGFibGU6IFZ0Py5pc0F2YWlsYWJsZSA/PyAhMVxuICAgICAgICAgIH07XG4gICAgICAgIH0pLCAuLi5BXTtcbiAgICAgIH1cbiAgICApLCB0aGlzLmdlbmVyYWxTdWJtaXQgPSBhc3luYyAoYSwgaSkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNTdWJtaXR0aW5nKSB7XG4gICAgICAgIG5lKFwiRm9ybSBpcyBhbHJlYWR5IHN1Ym1pdHRpbmcuIFBsZWFzZSB3YWl0IGZvciB0aGUgc3VibWlzc2lvbiB0byBmaW5pc2ggYmVmb3JlIHN1Ym1pdHRpbmcgYWdhaW4uXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzID0gYXdhaXQgZnQoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3Bhbk5hbWU6IFwiZ2VuZXJhbF9mb3JtX3N1Ym1pdFwiLFxuICAgICAgICAgICAgY2hlY2tvdXRTZWN1cmVUb2tlbjogdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICAgICAgICAgIGRldmljZVRva2VuOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICAgICAgZm9ybUlkOiB0aGlzLmZvcm1JZCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMub2pzVmVyc2lvbixcbiAgICAgICAgICAgIHJlbGVhc2VWZXJzaW9uOiB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uLFxuICAgICAgICAgICAgYmFzZVVybDogdGhpcy5iYXNlVXJsLFxuICAgICAgICAgICAgcmVmZXJyZXI6IHRoaXMucmVmZXJyZXJcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHYoXCJnZW5lcmFsX2Zvcm1fc3VibWl0XCIsIHsgbWV0aG9kOiBhLCBzZXR0aW5nczogaSB9KSwgdGhpcy5jaGVja1ZhbGlkRm9ybUluc3RhbmNlKFwiZ2VuZXJhbFN1Ym1pdFwiKTtcbiAgICAgICAgICAgIGNvbnN0IGwgPSB0aGlzLmNvbnRleHQuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgICBpZiAoIWwpXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBsZWFzZSB3YWl0IGZvciB0aGUgZm9ybSB0byBmaW5pc2ggbG9hZGluZyBiZWZvcmUgc3VibWl0dGluZy5cIik7XG4gICAgICAgICAgICBzd2l0Y2ggKGEpIHtcbiAgICAgICAgICAgICAgY2FzZSBJLmNhcmQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VibWl0Q2FyZChpKTtcbiAgICAgICAgICAgICAgY2FzZSBJLnBvY2t5dFBheXBhbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gUi5wb2NreXRQYXlwYWwucnVuKHtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGwsXG4gICAgICAgICAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IF9lKFxuICAgICAgICAgICAgICAgICAgICBsLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsXG4gICAgICAgICAgICAgICAgICAgIGtlLlBBWVBBTCxcbiAgICAgICAgICAgICAgICAgICAgXCJwb2NreXRcIlxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGoobC5mb3JtRGl2KSxcbiAgICAgICAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgICAgICAgICAgIGN1c3RvbVBhcmFtczogeyBzZXR0aW5nczogaSB9LFxuICAgICAgICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNhc2UgSS5wYXlwYWw6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFIucGF5cGFsLnJ1bih7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiBsLFxuICAgICAgICAgICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBfZShcbiAgICAgICAgICAgICAgICAgICAgbC5jaGVja291dFBheW1lbnRNZXRob2RzLFxuICAgICAgICAgICAgICAgICAgICBrZS5QQVlQQUwsXG4gICAgICAgICAgICAgICAgICAgIFwicGF5cGFsXCJcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGwuZm9ybURpdiksXG4gICAgICAgICAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgICBjdXN0b21QYXJhbXM6IHsgc2V0dGluZ3M6IGkgfSxcbiAgICAgICAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjYXNlIEkua2xhcm5hOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGFydEZsb3c6IGMgfSA9IFdyKHRoaXMuaW5pdEZsb3dzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYyhpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIEkuYWZmaXJtOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzdGFydEZsb3c6IGMgfSA9IEpyKHRoaXMuaW5pdEZsb3dzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYyhpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIEkuYWZ0ZXJwYXk6IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXJ0RmxvdzogYyB9ID0gWnIodGhpcy5pbml0Rmxvd3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjKGkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgSS5sb29wQ3J5cHRvOlxuICAgICAgICAgICAgICAgIHJldHVybiBSLmxvb3BDcnlwdG8ucnVuKHtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGwsXG4gICAgICAgICAgICAgICAgICBjaGVja291dFBheW1lbnRNZXRob2Q6IF9lKFxuICAgICAgICAgICAgICAgICAgICBsLmNoZWNrb3V0UGF5bWVudE1ldGhvZHMsXG4gICAgICAgICAgICAgICAgICAgIFwiY3J5cHRvXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibG9vcFwiXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogaihsLmZvcm1EaXYpLFxuICAgICAgICAgICAgICAgICAgZm9ybUNhbGxiYWNrczogdGhpcy5mb3JtQ2FsbGJhY2tzLFxuICAgICAgICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBpLFxuICAgICAgICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNhc2UgSS5hcHBsZVBheToge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhcnRGbG93OiBjIH0gPSBLcih0aGlzLmluaXRGbG93cyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMoaSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSBJLmdvb2dsZVBheToge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhcnRGbG93OiBjIH0gPSBZcih0aGlzLmluaXRGbG93cyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMoaSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gS2VlcGluZyBleGlzdGluZyBjb21tZW50ZWQgY29kZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgdGhpcyBpbiB0aGUgZnV0dXJlIHZlcnNpb25cbiAgICAgICAgICAgICAgY2FzZSBJLmFpcndhbGxleEdvb2dsZVBheToge1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSB0aGlzLmluaXRGbG93cy5haXJ3YWxsZXhHb29nbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgICAgICAgIGlmICghYykge1xuICAgICAgICAgICAgICAgICAgbmUoXG4gICAgICAgICAgICAgICAgICAgIFwiYWlyd2FsbGV4LWdvb2dsZS1wYXkgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgdXNpbmcgJ2dldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzKCknXCJcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjLnN0YXJ0RmxvdyhpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIEkuYWlyd2FsbGV4QXBwbGVQYXk6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gdGhpcy5pbml0Rmxvd3MuYWlyd2FsbGV4QXBwbGVQYXkucHVibGlzaGVyLmdldFZhbHVlSWZMb2FkZWRFbHNlKG51bGwpO1xuICAgICAgICAgICAgICAgIGlmICghYykge1xuICAgICAgICAgICAgICAgICAgbmUoXG4gICAgICAgICAgICAgICAgICAgIFwiYWlyd2FsbGV4LWFwcGxlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuc3RhcnRGbG93KGkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgSS5hdXRob3JpemVuZXRHb29nbGVQYXk6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gdGhpcy5pbml0Rmxvd3MuYXV0aG9yaXplTmV0R29vZ2xlUGF5LnB1Ymxpc2hlci5nZXRWYWx1ZUlmTG9hZGVkRWxzZShudWxsKTtcbiAgICAgICAgICAgICAgICBpZiAoIWMpIHtcbiAgICAgICAgICAgICAgICAgIG5lKFxuICAgICAgICAgICAgICAgICAgICBcImF1dGhvcml6ZS1uZXQtZ29vZ2xlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuc3RhcnRGbG93KGkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgSS5hdXRob3JpemVuZXRBcHBsZVBheToge1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSB0aGlzLmluaXRGbG93cy5hdXRob3JpemVOZXRBcHBsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFjKSB7XG4gICAgICAgICAgICAgICAgICBuZShcbiAgICAgICAgICAgICAgICAgICAgXCJhdXRob3JpemUtbmV0LWFwcGxlLXBheSBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSB1c2luZyAnZ2V0QXZhaWxhYmxlUGF5bWVudE1ldGhvZHMoKSdcIlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuc3RhcnRGbG93KGkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNhc2UgSS5hZHllbkdvb2dsZVBheToge1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSB0aGlzLmluaXRGbG93cy5hZHllbkdvb2dsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFjKSB7XG4gICAgICAgICAgICAgICAgICBuZShcbiAgICAgICAgICAgICAgICAgICAgXCJhZHllbi1nb29nbGUtcGF5IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IHVzaW5nICdnZXRBdmFpbGFibGVQYXltZW50TWV0aG9kcygpJ1wiXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYy5zdGFydEZsb3coaSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSBJLmFkeWVuQXBwbGVQYXk6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gdGhpcy5pbml0Rmxvd3MuYWR5ZW5BcHBsZVBheS5wdWJsaXNoZXIuZ2V0VmFsdWVJZkxvYWRlZEVsc2UobnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFjKSB7XG4gICAgICAgICAgICAgICAgICBuZShcbiAgICAgICAgICAgICAgICAgICAgXCJhZHllbi1hcHBsZS1wYXkgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGNoZWNrIHRoZSBhdmFpbGFiaWxpdHkgdXNpbmcgJ2dldEF2YWlsYWJsZVBheW1lbnRNZXRob2RzKCknXCJcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBjLnN0YXJ0RmxvdyhpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlIEkuYWlyd2FsbGV4QUNIOlxuICAgICAgICAgICAgICAgIHJldHVybiBSLmFpcndhbGxleEFDSC5ydW4oe1xuICAgICAgICAgICAgICAgICAgY29udGV4dDogbCxcbiAgICAgICAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogX2UoXG4gICAgICAgICAgICAgICAgICAgIGwuY2hlY2tvdXRQYXltZW50TWV0aG9kcyxcbiAgICAgICAgICAgICAgICAgICAga2UuQUNILFxuICAgICAgICAgICAgICAgICAgICBcImFpcndhbGxleFwiXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogaihsLmZvcm1EaXYpLFxuICAgICAgICAgICAgICAgICAgZm9ybUNhbGxiYWNrczogdGhpcy5mb3JtQ2FsbGJhY2tzLFxuICAgICAgICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBpLFxuICAgICAgICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNhc2UgSS5haXJ3YWxsZXhFRlQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFIuYWlyd2FsbGV4RUZULnJ1bih7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiBsLFxuICAgICAgICAgICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBfZShcbiAgICAgICAgICAgICAgICAgICAgbC5jaGVja291dFBheW1lbnRNZXRob2RzLFxuICAgICAgICAgICAgICAgICAgICBrZS5FRlQsXG4gICAgICAgICAgICAgICAgICAgIFwiYWlyd2FsbGV4XCJcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBub25DZGVGb3JtSW5wdXRzOiBqKGwuZm9ybURpdiksXG4gICAgICAgICAgICAgICAgICBmb3JtQ2FsbGJhY2tzOiB0aGlzLmZvcm1DYWxsYmFja3MsXG4gICAgICAgICAgICAgICAgICBjdXN0b21QYXJhbXM6IGksXG4gICAgICAgICAgICAgICAgICBpbml0UmVzdWx0OiB2b2lkIDBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY2FzZSBJLmFpcndhbGxleEJBQ1M6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFIuYWlyd2FsbGV4QkFDUy5ydW4oe1xuICAgICAgICAgICAgICAgICAgY29udGV4dDogbCxcbiAgICAgICAgICAgICAgICAgIGNoZWNrb3V0UGF5bWVudE1ldGhvZDogX2UoXG4gICAgICAgICAgICAgICAgICAgIGwuY2hlY2tvdXRQYXltZW50TWV0aG9kcyxcbiAgICAgICAgICAgICAgICAgICAga2UuQkFDUyxcbiAgICAgICAgICAgICAgICAgICAgXCJhaXJ3YWxsZXhcIlxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIG5vbkNkZUZvcm1JbnB1dHM6IGoobC5mb3JtRGl2KSxcbiAgICAgICAgICAgICAgICAgIGZvcm1DYWxsYmFja3M6IHRoaXMuZm9ybUNhbGxiYWNrcyxcbiAgICAgICAgICAgICAgICAgIGN1c3RvbVBhcmFtczogaSxcbiAgICAgICAgICAgICAgICAgIGluaXRSZXN1bHQ6IHZvaWQgMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjYXNlIEkuYWlyd2FsbGV4U0VQQTpcbiAgICAgICAgICAgICAgICByZXR1cm4gUi5haXJ3YWxsZXhTRVBBLnJ1bih7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiBsLFxuICAgICAgICAgICAgICAgICAgY2hlY2tvdXRQYXltZW50TWV0aG9kOiBfZShcbiAgICAgICAgICAgICAgICAgICAgbC5jaGVja291dFBheW1lbnRNZXRob2RzLFxuICAgICAgICAgICAgICAgICAgICBrZS5TRVBBLFxuICAgICAgICAgICAgICAgICAgICBcImFpcndhbGxleFwiXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbm9uQ2RlRm9ybUlucHV0czogaihsLmZvcm1EaXYpLFxuICAgICAgICAgICAgICAgICAgZm9ybUNhbGxiYWNrczogdGhpcy5mb3JtQ2FsbGJhY2tzLFxuICAgICAgICAgICAgICAgICAgY3VzdG9tUGFyYW1zOiBpLFxuICAgICAgICAgICAgICAgICAgaW5pdFJlc3VsdDogdm9pZCAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNhc2UgSS5zdHJpcGVMaW5rOiB7XG4gICAgICAgICAgICAgICAgbmUoXG4gICAgICAgICAgICAgICAgICBcIlN0cmlwZUxpbmsgY2Fubm90IGJlIHN1Ym1pdHRlZCBtYW51YWxseS4gUGxlYXNlIG1vdW50IHRoZSBidXR0b24gcHJvcGVybHkgYW5kIGlmIHVzZXIgY29tcGxldGVkIHRoZSBwYXltZW50IGZsb3cgdmlhIFN0cmlwZUxpbmsgYnV0dG9uLCB0aGUgcGF5bWVudCB3aWxsIGJlIHN1Ym1pdHRlZCBhdXRvbWF0aWNhbGx5LlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjdChhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU3VibWl0dGluZyA9ICExLCBzO1xuICAgICAgfSBjYXRjaCAocykge1xuICAgICAgICB0aHJvdyB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlLCBzO1xuICAgICAgfVxuICAgIH0sIHRoaXMuc3VibWl0V2l0aCA9IHRoaXMuZ2VuZXJhbFN1Ym1pdCwgdGhpcy5zdWJtaXQgPSB0aGlzLnN1Ym1pdENhcmQsIHRoaXMuZGVzdHJveSA9ICgpID0+IHtcbiAgICAgIGZlKFwiRGVzdHJveWluZyBPcGVuUGF5IGZvcm0uLi5cIiksIHRoaXMuY2hlY2tWYWxpZEZvcm1JbnN0YW5jZShcImRlc3Ryb3lcIiksIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgZm9yIChjb25zdCBhIG9mIE9iamVjdC52YWx1ZXModGhpcy5yZWdpc3RlcmVkRWxlbWVudHMgPz8ge30pKVxuICAgICAgICBhICYmIGEubm9kZS5yZW1vdmUoKTtcbiAgICAgIEIoKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5ldmVudEhhbmRsZXIuaGFuZGxlTWVzc2FnZS5iaW5kKHRoaXMuZXZlbnRIYW5kbGVyKSksIFdpKCksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzID0gbnVsbCwgZGVsZXRlIHdpbmRvdy5vanMsIHYoXCJmb3JtX2Rlc3Ryb3llZFwiKTtcbiAgICB9LCB0aGlzLnVwZGF0ZUNhbGxiYWNrcyA9IChhKSA9PiB7XG4gICAgICB0aGlzLmZvcm1DYWxsYmFja3Muc2V0Q2FsbGJhY2tzKGEpO1xuICAgIH0sIGhlLmFzc2lnbkFzU2luZ2xldG9uKHRoaXMpLCB0aGlzLm9qc1ZlcnNpb24gPSBcIjAuNS4yNFwiLCB0aGlzLm9qc1JlbGVhc2VWZXJzaW9uID0gXCJsb2NhbF9idWlsZFwiLCB0aGlzLmJhc2VVcmwgPSB0LmJhc2VVcmwgPz8gXCJodHRwczovL2NkZS5nZXRvcGVucGF5LmNvbVwiLCB0aGlzLmNvbmZpZyA9IHsgLi4udCwgYmFzZVVybDogdGhpcy5iYXNlVXJsIH0sIHRoaXMuZm9ybUNhbGxiYWNrcyA9IGFyLmZyb21PYmplY3QodCksIHRoaXMucmVnaXN0ZXJlZEVsZW1lbnRzID0gbnVsbCwgdGhpcy5mb3JtSWQgPSBgb3Bqcy1mb3JtLSR7djQoKX1gLCB0aGlzLnJlZmVycmVyID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiwgdGhpcy5mb3JtVGFyZ2V0ID0gdC5mb3JtVGFyZ2V0ID8/IFwiYm9keVwiLCB0aGlzLmZvcm1Qcm9wZXJ0aWVzID0geyBoZWlnaHQ6IFwiMXB4XCIgfSwgdGhpcy5jb25uZWN0aW9uTWFuYWdlciA9IG5ldyBrdSgpLCB0aGlzLmRldmljZVRva2VuID0gem4oKSwgWWkoKTtcbiAgICBjb25zdCB7IGZyYW1ld29yazogciwgdmVyc2lvbjogbiB9ID0gZnUoKTtcbiAgICBTbih0aGlzLmJhc2VVcmwpLnRoZW4oKGEpID0+IHtcbiAgICAgIGlmICghZXIuY3VycmVudC5pc1N1Y2Nlc3MpIHtcbiAgICAgICAgY29uc3QgaSA9IHtcbiAgICAgICAgICBjaGVja291dFNlY3VyZVRva2VuOiB0aGlzLmNvbmZpZy5jaGVja291dFNlY3VyZVRva2VuLFxuICAgICAgICAgIGRldmljZVRva2VuOiB0aGlzLmRldmljZVRva2VuLFxuICAgICAgICAgIGVudmlyb25tZW50OiBhLFxuICAgICAgICAgIGZyYW1ld29yazogcixcbiAgICAgICAgICBmcmFtZXdvcmtWZXJzaW9uOiBuLFxuICAgICAgICAgIG9qc1ZlcnNpb246IHRoaXMub2pzVmVyc2lvbixcbiAgICAgICAgICBvanNSZWxlYXNlVmVyc2lvbjogdGhpcy5vanNSZWxlYXNlVmVyc2lvbixcbiAgICAgICAgICByZWZlcnJlcjogdGhpcy5yZWZlcnJlcixcbiAgICAgICAgICBiYXNlVXJsOiB0aGlzLmJhc2VVcmxcbiAgICAgICAgfTtcbiAgICAgICAgZXIuc2V0KGkpO1xuICAgICAgfVxuICAgIH0pLCB2KFwiZm9ybV9pbml0XCIpLCBjb25zb2xlLmxvZyhcIk9KUyBWRVJTSU9OXCIsIHRoaXMub2pzVmVyc2lvbiksIHQuYWxsb3dUcmFjaW5nID09PSB0cnVlICYmIFB1KHRoaXMub2pzVmVyc2lvbiwgdGhpcy5iYXNlVXJsKSwgdGhpcy5ldmVudEhhbmRsZXIgPSBuZXcgQXUodGhpcy5mb3JtSWQsIHRoaXMuYmFzZVVybCwgdGhpcy5mb3JtQ2FsbGJhY2tzLCB7XG4gICAgICBzZXRGb3JtSGVpZ2h0OiB0aGlzLnNldEZvcm1IZWlnaHQsXG4gICAgICBvbkNkZUxvYWRlZDogdGhpcy5vbkNkZUxvYWRlZCxcbiAgICAgIG9uQ2RlTG9hZEVycm9yOiB0aGlzLm9uQ2RlTG9hZEVycm9yXG4gICAgfSksIEIoKT8uYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5ldmVudEhhbmRsZXIuaGFuZGxlTWVzc2FnZS5iaW5kKHRoaXMuZXZlbnRIYW5kbGVyKSksIHRoaXMuc3RhcnRGb3JtSW5pdCgpO1xuICB9XG4gIGdldCBjaGVja291dFNlY3VyZVRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jaGVja291dFNlY3VyZVRva2VuO1xuICB9XG4gIGNoZWNrVmFsaWRGb3JtSW5zdGFuY2UodCA9IFwidW5rbm93blwiKSB7XG4gICAgY29uc3QgciA9IGhlLmdldEluc3RhbmNlKCksIG4gPSB7XG4gICAgICB0aGlzRm9ybUlkOiB0aGlzLmZvcm1JZCxcbiAgICAgIGN1cnJlbnRGb3JtSWQ6IHI/LmZvcm1JZCB8fCBcIm5vLWN1cnJlbnQtaW5zdGFuY2VcIixcbiAgICAgIGlzRGVzdHJveWVkOiB0aGlzLmlzRGVzdHJveWVkLFxuICAgICAgY2hlY2tvdXRUb2tlbjogdGhpcy5jb25maWcuY2hlY2tvdXRTZWN1cmVUb2tlbi5zdWJzdHJpbmcoMCwgMTApICsgXCIuLi5cIlxuICAgIH0sIGEgPSBgXG4gICAgICBbV2FybmluZ10gSW52YWxpZCBmb3JtIGluc3RhbmNlIGRldGVjdGVkLlxuICAgICAgSXQgbG9va3MgbGlrZSB5b3UgYXJlIHN0aWxsIHVzaW5nIGFuIG9sZCBpbnN0YW5jZSB0aGF0IGhhcyBiZWVuIGRlc3Ryb3llZC5cbiAgICAgIFBsZWFzZSBtYWtlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgbGF0ZXN0IGluc3RhbmNlIG9mIHRoZSBmb3JtIGFuZCBjbGVhbnVwIGV2ZW50IGxpc3RlbmVycy5cbiAgICAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgICAgRGVidWcgSW5mbzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgLSBjYWxsZXI6ICR7dH1cbiAgICAgIC0gY2FsbGVyX2Zvcm1faWQ6ICR7bi50aGlzRm9ybUlkfVxuICAgICAgLSBjdXJyZW50X2FjdGl2ZV9mb3JtX2lkOiAke24uY3VycmVudEZvcm1JZH1cbiAgICAgIC0gaXNfZGVzdHJveWVkOiAke24uaXNEZXN0cm95ZWR9XG4gICAgICAtIGNoZWNrb3V0X3Rva2VuOiAke24uY2hlY2tvdXRUb2tlbn1cbiAgICBgO1xuICAgIHJldHVybiB0aGlzLmlzRGVzdHJveWVkID8gKG5lKGEpLCB2KFwib3V0ZGF0ZWRfZm9ybV9pbnN0YW5jZVwiLCB7IGVycm9yOiBhIH0pLCBmYWxzZSkgOiAhciB8fCByLmZvcm1JZCAhPT0gdGhpcy5mb3JtSWQgPyAobmUoYSksIHYoXCJvdXRkYXRlZF9mb3JtX2luc3RhbmNlXCIsIHsgZXJyb3I6IGEgfSksIGZhbHNlKSA6IHRydWU7XG4gIH1cbn07XG5oZS5vanNGbG93cyA9IFIsIGhlLmFzc2lnbkFzU2luZ2xldG9uID0gKHQpID0+IHtcbiAgaWYgKGhlLmdldEluc3RhbmNlKCkpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiT3BlblBheSBpbnN0YW5jZSBhbHJlYWR5IGV4aXN0cy4gT25seSBvbmUgaW5zdGFuY2UgaXMgYWxsb3dlZC5cIik7XG4gIHdpbmRvdy5vanMgPSB0O1xufSwgaGUuZ2V0SW5zdGFuY2UgPSAoKSA9PiB3aW5kb3cub2pzID8/IG51bGwsIGhlLmJ1aWxkT2pzRmxvd0NvbnRleHQgPSAodCwgciwgbiwgYSkgPT4gKHtcbiAgY2hlY2tvdXRTZWN1cmVUb2tlbjogdC5jaGVja291dFNlY3VyZVRva2VuLFxuICBiYXNlVXJsOiBuZXcgVVJMKHQuYmFzZVVybCA/PyAkbikub3JpZ2luLFxuICBmb3JtRGl2OiBhLFxuICBlbGVtZW50c1Nlc3Npb25JZDogci5zZXNzaW9uSWQsXG4gIGNoZWNrb3V0UGF5bWVudE1ldGhvZHM6IHIuY2hlY2tvdXRQYXltZW50TWV0aG9kcyxcbiAgYW55Q2RlQ29ubmVjdGlvbjogbixcbiAgY3VzdG9tSW5pdFBhcmFtczogdC5jdXN0b21Jbml0UGFyYW1zID8/IHt9LFxuICBwcmV2ZW50TmF2aWdhdGlvbkR1cmluZ1N1Ym1pc3Npb246IHQucHJldmVudE5hdmlnYXRpb25EdXJpbmdTdWJtaXNzaW9uXG59KTtcbmxldCBybiA9IGhlO1xuXG5jb25zdCB1c2VSZWFjdGl2ZUZvcm1DYWxsYmFja3MgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgZm9ybUNhbGxiYWNrcyA9IEZvcm1DYWxsYmFja3MuZnJvbU9iamVjdCh7XG4gICAgb25Gb2N1czogcHJvcHMub25Gb2N1cyxcbiAgICBvbkJsdXI6IHByb3BzLm9uQmx1cixcbiAgICBvbkNoYW5nZTogcHJvcHMub25DaGFuZ2UsXG4gICAgb25Mb2FkOiBwcm9wcy5vbkxvYWQsXG4gICAgb25Mb2FkRXJyb3I6IHByb3BzLm9uTG9hZEVycm9yLFxuICAgIG9uVmFsaWRhdGlvbkVycm9yOiBwcm9wcy5vblZhbGlkYXRpb25FcnJvcixcbiAgICBvbkNoZWNrb3V0U3RhcnRlZDogcHJvcHMub25DaGVja291dFN0YXJ0ZWQsXG4gICAgb25DaGVja291dFN1Y2Nlc3M6IHByb3BzLm9uQ2hlY2tvdXRTdWNjZXNzLFxuICAgIG9uU2V0dXBQYXltZW50TWV0aG9kU3VjY2VzczogcHJvcHMub25TZXR1cFBheW1lbnRNZXRob2RTdWNjZXNzLFxuICAgIG9uQ2hlY2tvdXRFcnJvcjogcHJvcHMub25DaGVja291dEVycm9yLFxuICAgIG9uUGF5bWVudFJlcXVlc3RMb2FkOiBwcm9wcy5vblBheW1lbnRSZXF1ZXN0TG9hZFxuICB9KTtcbiAgaWYgKHJuLmdldEluc3RhbmNlKCkpIHtcbiAgICBybi5nZXRJbnN0YW5jZSgpPy51cGRhdGVDYWxsYmFja3MoZm9ybUNhbGxiYWNrcy5nZXQpO1xuICB9XG4gIHJldHVybiBmb3JtQ2FsbGJhY2tzLmdldDtcbn07XG5cbmNvbnN0IEZPUk1fVEFSR0VUID0gXCJvcF9vanNfZm9ybVwiO1xuY29uc3QgRWxlbWVudHNGb3JtID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IFtvcEZvcm0sIHNldE9wRm9ybV0gPSB1c2VTdGF0ZSgpO1xuICBjb25zdCBbZWxlbWVudHNDb250ZXh0VmFsdWUsIHNldEVsZW1lbnRzQ29udGV4dFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbbG9hZGVkLCBzZXRMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbYXBwbGVQYXlSZXN1bHQsIHNldEFwcGxlUGF5UmVzdWx0XSA9IHVzZVN0YXRlKE1PQklMRV9XQUxMRVRfTE9BRElOR19TVEFURSk7XG4gIGNvbnN0IFtnb29nbGVQYXlSZXN1bHQsIHNldEdvb2dsZVBheVJlc3VsdF0gPSB1c2VTdGF0ZShNT0JJTEVfV0FMTEVUX0xPQURJTkdfU1RBVEUpO1xuICBjb25zdCBbc3RyaXBlTGlua0N0cmwsIHNldFN0cmlwZUxpbmtDdHJsXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBba2xhcm5hUmVzdWx0LCBzZXRLbGFybmFSZXN1bHRdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthZmZpcm1SZXN1bHQsIHNldEFmZmlybVJlc3VsdF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2FmdGVycGF5UmVzdWx0LCBzZXRBZnRlcnBheVJlc3VsdF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2xvb3BDb25maWcsIHNldExvb3BDb25maWddID0gdXNlU3RhdGUoTE9PUF9MT0FESU5HKTtcbiAgY29uc3QgW2FpcndhbGxleCwgc2V0QWlyd2FsbGV4XSA9IHVzZVN0YXRlKHtcbiAgICBnb29nbGVQYXk6IEFXWF9MT0FESU5HLFxuICAgIGFwcGxlUGF5OiBBV1hfTE9BRElOR1xuICB9KTtcbiAgY29uc3QgZm9ybUNhbGxiYWNrcyA9IHVzZVJlYWN0aXZlRm9ybUNhbGxiYWNrcyh7XG4gICAgLi4ucHJvcHMsXG4gICAgb25Mb2FkOiAodG90YWxBbW91bnRBdG9tcywgY3VycmVuY3kpID0+IHtcbiAgICAgIHNldExvYWRlZCh0cnVlKTtcbiAgICAgIHByb3BzLm9uTG9hZD8uKHRvdGFsQW1vdW50QXRvbXMsIGN1cnJlbmN5KTtcbiAgICAgIGlmIChvcEZvcm0pIHtcbiAgICAgICAgY29uc3QgYXBwbGVQYXlSZXN1bHQyID0gZ2V0QXBwbGVQYXlQcm9jZXNzb3JzKG9wRm9ybS5pbml0Rmxvd3MpO1xuICAgICAgICBzZXRBcHBsZVBheVJlc3VsdChhcHBsZVBheVJlc3VsdDIpO1xuICAgICAgICBjb25zdCBnb29nbGVQYXlSZXN1bHQyID0gZ2V0R29vZ2xlUGF5UHJvY2Vzc29ycyhvcEZvcm0uaW5pdEZsb3dzKTtcbiAgICAgICAgc2V0R29vZ2xlUGF5UmVzdWx0KGdvb2dsZVBheVJlc3VsdDIpO1xuICAgICAgICBjb25zdCBrbGFybmFSZXN1bHQyID0gZ2V0S2xhcm5hUHJvY2Vzc29ycyhvcEZvcm0uaW5pdEZsb3dzKTtcbiAgICAgICAgc2V0S2xhcm5hUmVzdWx0KGtsYXJuYVJlc3VsdDIpO1xuICAgICAgICBjb25zdCBhZmZpcm1SZXN1bHQyID0gZ2V0QWZmaXJtUHJvY2Vzc29ycyhvcEZvcm0uaW5pdEZsb3dzKTtcbiAgICAgICAgc2V0QWZmaXJtUmVzdWx0KGFmZmlybVJlc3VsdDIpO1xuICAgICAgICBjb25zdCBhZnRlcnBheVJlc3VsdDIgPSBnZXRBZnRlcnBheVByb2Nlc3NvcnMob3BGb3JtLmluaXRGbG93cyk7XG4gICAgICAgIHNldEFmdGVycGF5UmVzdWx0KGFmdGVycGF5UmVzdWx0Mik7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BGb3JtKSByZXR1cm47XG4gICAgY29uc3QgZm9ybSA9IHJuLmdldEluc3RhbmNlKCkgPz8gbmV3IHJuKHtcbiAgICAgIGNoZWNrb3V0U2VjdXJlVG9rZW46IHByb3BzLmNoZWNrb3V0U2VjdXJlVG9rZW4sXG4gICAgICBmb3JtVGFyZ2V0OiBgIyR7Rk9STV9UQVJHRVR9YCxcbiAgICAgIGJhc2VVcmw6IHByb3BzLmJhc2VVcmwsXG4gICAgICBjdXN0b21Jbml0UGFyYW1zOiBwcm9wcy5jdXN0b21Jbml0UGFyYW1zLFxuICAgICAgYWxsb3dUcmFjaW5nOiBwcm9wcy5hbGxvd1RyYWNpbmcgPz8gZmFsc2UsXG4gICAgICBwcmV2ZW50TmF2aWdhdGlvbkR1cmluZ1N1Ym1pc3Npb246IHByb3BzLnByZXZlbnROYXZpZ2F0aW9uRHVyaW5nU3VibWlzc2lvbixcbiAgICAgIC4uLmZvcm1DYWxsYmFja3NcbiAgICB9KTtcbiAgICBzZXRPcEZvcm0oZm9ybSk7XG4gICAgY29uc3QgdmFsdWUgPSBnZXRFbGVtZW50c0NvbnRleHRWYWx1ZShmb3JtKTtcbiAgICBzZXRFbGVtZW50c0NvbnRleHRWYWx1ZSh2YWx1ZSk7XG4gICAgZm9ybS5pbml0Rmxvd3Muc3RyaXBlTGluay5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZS5pc0F2YWlsYWJsZSkge1xuICAgICAgICBzZXRTdHJpcGVMaW5rQ3RybChyZXN1bHQubG9hZGVkVmFsdWUuY29udHJvbGxlcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZm9ybS5pbml0Rmxvd3MubG9vcC5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZS5pc0F2YWlsYWJsZSkge1xuICAgICAgICBzZXRMb29wQ29uZmlnKHtcbiAgICAgICAgICBpc0F2YWlsYWJsZTogdHJ1ZSxcbiAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIHdpZGdldDogcmVzdWx0LmxvYWRlZFZhbHVlLndpZGdldFByb3BzLFxuICAgICAgICAgIGNvbmZpZzogcmVzdWx0LmxvYWRlZFZhbHVlLmluaXRMb29wQ29ubmVjdFByb3BzXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmICFyZXN1bHQubG9hZGVkVmFsdWUuaXNBdmFpbGFibGUpIHtcbiAgICAgICAgc2V0TG9vcENvbmZpZyh7XG4gICAgICAgICAgaXNBdmFpbGFibGU6IGZhbHNlLFxuICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgd2lkZ2V0OiBudWxsLFxuICAgICAgICAgIGNvbmZpZzogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmb3JtLmluaXRGbG93cy5haXJ3YWxsZXhHb29nbGVQYXkucHVibGlzaGVyLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcyAmJiByZXN1bHQubG9hZGVkVmFsdWUpIHtcbiAgICAgICAgc2V0QWlyd2FsbGV4KChwcmV2KSA9PiAoe1xuICAgICAgICAgIGFwcGxlUGF5OiBwcmV2LmFwcGxlUGF5LFxuICAgICAgICAgIGdvb2dsZVBheTogcmVzdWx0LmxvYWRlZFZhbHVlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmb3JtLmluaXRGbG93cy5haXJ3YWxsZXhBcHBsZVBheS5wdWJsaXNoZXIuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzICYmIHJlc3VsdC5sb2FkZWRWYWx1ZSkge1xuICAgICAgICBzZXRBaXJ3YWxsZXgoKHByZXYpID0+ICh7XG4gICAgICAgICAgZ29vZ2xlUGF5OiBwcmV2Lmdvb2dsZVBheSxcbiAgICAgICAgICBhcHBsZVBheTogcmVzdWx0LmxvYWRlZFZhbHVlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZm9ybS5kZXN0cm95KCk7XG4gICAgfTtcbiAgfSwgW10pO1xuICBpZiAoIW9wRm9ybSkge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7fSk7XG4gIH1cbiAgY29uc3QgY2hpbGRyZW5Qcm9wcyA9IHtcbiAgICBzdWJtaXQ6IG9wRm9ybS5zdWJtaXRDYXJkLFxuICAgIHN1Ym1pdFdpdGg6IG9wRm9ybS5nZW5lcmFsU3VibWl0LFxuICAgIGFwcGxlUGF5OiBhcHBsZVBheVJlc3VsdCxcbiAgICBnb29nbGVQYXk6IGdvb2dsZVBheVJlc3VsdCxcbiAgICBsb2FkZWQsXG4gICAgLy8gRGlzYWJsZSBkeW5hbWljIHByZXZpZXdzIGZlYXR1cmUgZm9yIG5vd1xuICAgIHByZXZpZXc6IHtcbiAgICAgIGFtb3VudDogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBlcnJvcjogbnVsbFxuICAgIH0sXG4gICAgc3RyaXBlTGluazogc3RyaXBlTGlua0N0cmwsXG4gICAga2xhcm5hOiBrbGFybmFSZXN1bHQsXG4gICAgYWlyd2FsbGV4LFxuICAgIGxvb3A6IGxvb3BDb25maWcsXG4gICAgYWZmaXJtOiBhZmZpcm1SZXN1bHQsXG4gICAgYWZ0ZXJwYXk6IGFmdGVycGF5UmVzdWx0XG4gIH07XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7IGNoaWxkcmVuOiBlbGVtZW50c0NvbnRleHRWYWx1ZSA/IC8qIEBfX1BVUkVfXyAqLyBqc3goRWxlbWVudHNDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBlbGVtZW50c0NvbnRleHRWYWx1ZSwgY2hpbGRyZW46IC8qIEBfX1BVUkVfXyAqLyBqc3goXCJkaXZcIiwgeyBpZDogRk9STV9UQVJHRVQsIGNsYXNzTmFtZTogcHJvcHMuY2xhc3NOYW1lLCBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW4oY2hpbGRyZW5Qcm9wcykgfSkgfSkgOiAvKiBAX19QVVJFX18gKi8ganN4KEZyYWdtZW50LCB7fSkgfSk7XG59O1xuY29uc3QgZ2V0RWxlbWVudHNDb250ZXh0VmFsdWUgPSAob3BGb3JtKSA9PiB7XG4gIHJldHVybiB7XG4gICAgZm9ybUlkOiBvcEZvcm0uZm9ybUlkLFxuICAgIGZvcm1IZWlnaHQ6IG9wRm9ybS5mb3JtUHJvcGVydGllcy5oZWlnaHQsXG4gICAgcmVmZXJyZXI6IG9wRm9ybS5yZWZlcnJlcixcbiAgICBjaGVja291dFNlY3VyZVRva2VuOiBvcEZvcm0uY2hlY2tvdXRTZWN1cmVUb2tlbixcbiAgICByZWdpc3RlcklmcmFtZTogb3BGb3JtLnJlZ2lzdGVySWZyYW1lLFxuICAgIGJhc2VVcmw6IG9wRm9ybS5iYXNlVXJsXG4gIH07XG59O1xuXG5leHBvcnQgeyBDYXJkQ3ZjRWxlbWVudCBhcyBDLCBFcyBhcyBFLCBGcyBhcyBGLCBMbiBhcyBMLCBNcyBhcyBNLCBQZSBhcyBQLCBScyBhcyBSLCBTdWJtaXRNZXRob2RzIGFzIFMsIFRuIGFzIFQsIFVyIGFzIFUsIGF0IGFzIGEsIEZuIGFzIGIsIG90IGFzIGMsIGRyIGFzIGQsIENhcmRFbGVtZW50IGFzIGUsIGZzIGFzIGYsIENhcmRFeHBpcnlFbGVtZW50IGFzIGcsIENhcmROdW1iZXJFbGVtZW50IGFzIGgsIEVsZW1lbnRzRm9ybSBhcyBpLCBqZSBhcyBqLCBrdCBhcyBrLCBsciBhcyBsLCBGaWVsZE5hbWUgYXMgbSwgRW52aXJvbm1lbnQgYXMgbiwgb2UgYXMgbywgUGF5SW5GYWlsZWQgYXMgcCwgUGF5SW5TdGF0ZSBhcyBxLCB1c2VPcGVuUGF5RWxlbWVudHMgYXMgciwgdHIgYXMgdCwgdXIgYXMgdSwgdmFsaWRhdGVOb25DZGVGb3JtRmllbGRzIGFzIHYsIHhlIGFzIHgsIHlzIGFzIHkgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLGtCQUFBQSxVQUFzQjtBQUMvQixTQUFTLEtBQUtDLFNBQVc7QUFDekIsT0FBT0MsUUFBVztBQUNsQixTQUFTLE1BQUFDLFVBQVU7QUFDbkIsU0FBUyxPQUFBQyxJQUFLLFlBQUFDLFVBQWdCO0FBQzlCLFNBQVMsaUJBQUFDLElBQWUsY0FBQUMsSUFBWSxZQUFBQyxJQUFVLFVBQUFDLElBQVEsV0FBQUMsSUFBUyxhQUFBQyxVQUFpQjtBQUVoRixTQUFTQyxHQUFTQyxHQUFRQyxHQUFXO0FBQ25DLE1BQUlDLElBQWlCLE9BQU87QUFDNUIsRUFBQUEsSUFBaUJBLEVBQWVGLEdBQVFDLENBQVMsSUFBSUQsRUFBTyxZQUFZQztBQUMxRTtBQUNBLFNBQVNFLEdBQVNILEdBQVFJLEdBQUk7QUFDNUIsRUFBSUEsTUFBTyxXQUNUQSxJQUFLSixFQUFPO0FBR2QsTUFBSUssSUFBb0IsTUFBTTtBQUM5QixFQUFBQSxLQUFxQkEsRUFBa0JMLEdBQVFJLENBQUU7QUFDbkQ7QUFFQSxJQUFJRSxLQUFjLDRCQUFZO0FBQzVCLE1BQUlDLElBQWlCLFNBQXVCQyxHQUFHQyxHQUFHO0FBQ2hELFdBQUFGLElBQWlCLE9BQU8sa0JBQWtCO0FBQUEsTUFDeEMsV0FBVyxDQUFDO0FBQUEsSUFDZCxhQUFhLFNBQVMsU0FBVUMsR0FBR0MsR0FBRztBQUNwQyxNQUFBRCxFQUFFLFlBQVlDO0FBQUEsSUFDaEIsS0FBSyxTQUFVRCxHQUFHQyxHQUFHO0FBQ25CLGVBQVNDLEtBQUtEO0FBQ1osUUFBSSxPQUFPLFVBQVUsZUFBZSxLQUFLQSxHQUFHQyxDQUFDLE1BQUdGLEVBQUVF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QUNYLEtBQUssT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFRYixLQUFLLE9BQU87QUFBQSxnQkFDWCxLQUFLLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxHQWdCekJDLEtBQUssQ0FBQyxFQUFFLE9BQU8sR0FBRyxRQUFRLEVBQUUsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBeUJ0QixLQUFLLE9BQU87QUFBQSxnQkFDWCxLQUFLLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxxQkFVUCxLQUFLLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBZ0Y5QkMsS0FBSyxDQUFDLEdBQUcsTUFBTTtBQUNoQixRQUFNLEVBQUUsSUFBSSxHQUFH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QVNBLEVBQU87QUFDbEI7IiwKICAibmFtZXMiOiBbImNvbm5lY3RUb0NoaWxkIiwgInokMSIsICJjaGFsayIsICJ2NCIsICJqc3giLCAiRnJhZ21lbnQiLCAiY3JlYXRlQ29udGV4dCIsICJ1c2VDb250ZXh0IiwgInVzZVN0YXRlIiwgInVzZVJlZiIsICJ1c2VNZW1vIiwgInVzZUVmZmVjdCIsICJmaXhQcm90byIsICJ0YXJnZXQiLCAicHJvdG90eXBlIiwgInNldFByb3RvdHlwZU9mIiwgImZpeFN0YWNrIiwgImZuIiwgImNhcHR1cmVTdGFja1RyYWNlIiwgIl9fZXh0ZW5kcyQxIiwgIl9leHRlbmRTdGF0aWNzIiwgImQiLCAiYiIsICJwIiwgIl9fIiwgIl9zdXBlciIsICJDdXN0b21FcnJvciIsICJtZXNzYWdlIiwgIm9wdGlvbnMiLCAiX25ld1RhcmdldCIsICJfdGhpcyIsICJSZXF1aXJlZFN0cmluZyIsICJPcHRpb25hbFN0cmluZyIsICJudWxsT3JVbmRlZk9yJDEiLCAielR5cGUiLCAiRmllbGROYW1lIiwgIkZpZWxkTmFtZTIiLCAiRmllbGROYW1lRW51bSIsICJQcml2YXRlRmllbGROYW1lIiwgIlByaXZhdGVGaWVsZE5hbWUyIiwgIlByaXZhdGVGaWVsZE5hbWVFbnVtIiwgIkFsbEZpZWxkTmFtZXMiLCAiRWxlbWVudFR5cGVFbnVtIiwgIkVsZW1lbnRUeXBlRW51bTIiLCAiQ2hlY2tvdXRQYXltZW50TWV0aG9kJDEiLCAiUGF5bWVudE1ldGhvZE1pbmltYWwiLCAiQmFzZUVsZW1lbnRzU3R5bGUiLCAiRXZlbnRUeXBlIiwgIkdlbmVyaWNFdmVudFR5cGUiLCAiR2VuZXJpY0V2ZW50UGF5bG9hZCIsICJJbnB1dEV2ZW50VHlwZSIsICJJbnB1dEV2ZW50UGF5bG9hZCIsICJFcnJvckV2ZW50VHlwZSIsICJFcnJvckV2ZW50UGF5bG9hZCIsICJWYWxpZGF0aW9uRXJyb3JFdmVudFR5cGUiLCAiVmFsaWRhdGlvbkVycm9yRXZlbnRQYXlsb2FkIiwgIkxheW91dEV2ZW50UGF5bG9hZCIsICJMb2FkZWRFdmVudFBheWxvYWQiLCAiUGF5bWVudEZsb3dTdGFydGVkRXZlbnRQYXlsb2FkIiwgIlNldHVwQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkIiwgIlJlcXVpcmVkRm9ybUZpZWxkcyIsICJQUkZvcm1GaWVsZHMiLCAiU3VibWl0RXZlbnRUeXBlIiwgIlN1Ym1pdEV2ZW50UGF5bG9hZCIsICJUb2tlbml6ZVN1Y2Nlc3NFdmVudFBheWxvYWQiLCAiQ2hlY2tvdXRTdWNjZXNzRXZlbnRQYXlsb2FkIiwgIkV2ZW50UGF5bG9hZCIsICJDaGVja291dFN1Y2Nlc3NSZXNwb25zZSIsICJGaWVsZFZhbGlkYXRpb25FcnJvciIsICJUb2tlbml6ZUNhcmRFcnJvclJlc3BvbnNlIiwgIkFXWEJhbmsiLCAiQ29tbW9uTmV4dEFjdGlvbk1ldGFkYXRhIiwgIkVGVEZvcm1EYXRhIiwgIkJBQ1NGb3JtRGF0YSIsICJTRVBBRm9ybURhdGEiLCAiQUNITWljcm9EZXBvc2l0Rm9ybURhdGEiLCAiRUZUTWljcm9EZXBvc2l0Rm9ybURhdGEiLCAiQkFDU01pY3JvRGVwb3NpdEZvcm1EYXRhIiwgIlNFUEFNaWNyb0RlcG9zaXRGb3JtRGF0YSIsICJudWxsT3JVbmRlZk9yIiwgIkNvdXBvbk1pbmltYWwiLCAiTGluZUl0ZW0iLCAiQnJhbmRTZXR0aW5ncyIsICJCcmFuZCIsICJDaGVja291dFBheW1lbnRNZXRob2QiLCAiU3Vic2NyaXB0aW9uSXRlbU1pbmltYWwiLCAiU3Vic2NyaXB0aW9uTWluaW1hbCIsICJJbnZvaWNlSXRlbURpc2NvdW50QW1vdW50c01pbmltYWwiLCAiSW52b2ljZUxpbmVJdGVtTWluaW1hbCIsICJEaXNjb3VudE1pbmltYWwiLCAiSW52b2ljZU1pbmltYWwiLCAiQ3JlYXRlU3Vic2NyaXB0aW9uUmVzcG9uc2VNaW5pbWFsIiwgIlByZXZpZXdDaGVja291dFJlc3BvbnNlIiwgIl9QYXltZW50Rm9ybVByZWZpbGxDb21tb24iLCAiUGF5bWVudEZvcm1QcmVmaWxsIiwgIkNvbXBsZXRlZEZvcm1QcmVmaWxsIiwgIkV4cGlyZWRGb3JtUHJlZmlsbCIsICJDb21wbGV0ZUFkZHJlc3MiLCAiUHlkYW50aWNWYWxpZGF0aW9uRXJyb3IkMSIsICJOZXdDdXN0b21lckZpZWxkcyIsICJQcmljZVF0eSIsICJDYXJ0SW5mbyIsICJQcm9jZXNzb3JTcGVjaWZpY01ldGFkYXRhIiwgIlB5ZGFudGljVmFsaWRhdGlvbkVycm9yIiwgIlpvZEZpZWxkRXJyb3IiLCAibWFrZUNhbGxiYWNrU2FmZSIsICJjYWxsYmFja05hbWUiLCAiZXJyb3JMb2dnZXIiLCAiYXJncyIsICJlcnJvciIsICJjcmVhdGVPanNGbG93TG9nZ2VycyIsICJwcmVmaXgiLCAibG9nIiwgImVyciIsICJleHRlbmRTdGF0aWNzIiwgIl9fZXh0ZW5kcyIsICJfX2F3YWl0ZXIiLCAidGhpc0FyZyIsICJfYXJndW1lbnRzIiwgIlAiLCAiZ2VuZXJhdG9yIiwgImFkb3B0IiwgInZhbHVlIiwgInJlc29sdmUiLCAicmVqZWN0IiwgImZ1bGZpbGxlZCIsICJzdGVwIiwgImUiLCAicmVqZWN0ZWQiLCAicmVzdWx0IiwgIl9fZ2VuZXJhdG9yIiwgImJvZHkiLCAiXyIsICJ0IiwgImYiLCAieSIsICJnIiwgInZlcmIiLCAibiIsICJ2IiwgIm9wIiwgIl9fdmFsdWVzIiwgIm8iLCAicyIsICJtIiwgImkiLCAiX19yZWFkIiwgInIiLCAiYXIiLCAiX19zcHJlYWRBcnJheSIsICJ0byIsICJmcm9tIiwgInBhY2siLCAibCIsICJfX2F3YWl0IiwgIl9fYXN5bmNHZW5lcmF0b3IiLCAicSIsICJhd2FpdFJldHVybiIsICJhIiwgInJlc3VtZSIsICJzZXR0bGUiLCAiZnVsZmlsbCIsICJfX2FzeW5jVmFsdWVzIiwgImlzRnVuY3Rpb24iLCAidmFsdWUiLCAiY3JlYXRlRXJyb3JDbGFzcyIsICJjcmVhdGVJbXBsIiwgIl9zdXBlciIsICJpbnN0YW5jZSIsICJjdG9yRnVuYyIsICJVbnN1YnNjcmlwdGlvbkVycm9yIiwgImVycm9ycyIsICJlcnIiLCAiaSIsICJhcnJSZW1vdmUiLCAiYXJyIiwgIml0ZW0iLCAiaW5kZXgiLCAiU3Vic2NyaXB0aW9uIiwgImluaXRpYWxUZWFyZG93biIsICJlXzEiLCAiX2EiLCAiZV8yIiwgIl9iIiwgIl9wYXJlbnRhZ2UiLCAiX3BhcmVudGFnZV8xIiwgIl9fdmFsdWVzIiwgIl9wYXJlbnRhZ2VfMV8xIiwgInBhcmVudF8xIiwgImVfMV8xIiwgImluaXRpYWxGaW5hbGl6ZXIiLCAiZSIsICJfZmluYWxpemVycyIsICJfZmluYWxpemVyc18xIiwgIl9maW5hbGl6ZXJzXzFfMSIsICJmaW5hbGl6ZXIiLCAiZXhlY0ZpbmFsaXplciIsICJfX3NwcmVhZEFycmF5IiwgIl9fcmVhZCIsICJlXzJfMSIsICJ0ZWFyZG93biIsICJwYXJlbnQiLCAiZW1wdHkiLCAiRU1QVFlfU1VCU0NSSVBUSU9OIiwgImlzU3Vic2NyaXB0aW9uIiwgImNvbmZpZyIsICJ0aW1lb3V0UHJvdmlkZXIiLCAiaGFuZGxlciIsICJ0aW1lb3V0IiwgImFyZ3MiLCAiX2kiLCAiaGFuZGxlIiwgInJlcG9ydFVuaGFuZGxlZEVycm9yIiwgIm5vb3AiLCAiZXJyb3JDb250ZXh0IiwgImNiIiwgIlN1YnNjcmliZXIiLCAiX19leHRlbmRzIiwgImRlc3RpbmF0aW9uIiwgIl90aGlzIiwgIkVNUFRZX09CU0VSVkVSIiwgIm5leHQiLCAiZXJyb3IiLCAiY29tcGxldGUiLCAiU2FmZVN1YnNjcmliZXIiLCAiQ29uc3VtZXJPYnNlcnZlciIsICJwYXJ0aWFsT2JzZXJ2ZXIiLCAiaGFuZGxlVW5oYW5kbGVkRXJyb3IiLCAib2JzZXJ2ZXJPck5leHQiLCAiZGVmYXVsdEVycm9ySGFuZGxlciIsICJvYnNlcnZhYmxlIiwgImlkZW50aXR5IiwgIngiLCAicGlwZUZyb21BcnJheSIsICJmbnMiLCAiaW5wdXQiLCAicHJldiIsICJmbiIsICJPYnNlcnZhYmxlIiwgInN1YnNjcmliZSIsICJvcGVyYXRvciIsICJzdWJzY3JpYmVyIiwgImlzU3Vic2NyaWJlciIsICJzb3VyY2UiLCAic2luayIsICJwcm9taXNlQ3RvciIsICJnZXRQcm9taXNlQ3RvciIsICJyZXNvbHZlIiwgInJlamVjdCIsICJvcGVyYXRpb25zIiwgImlzT2JzZXJ2ZXIiLCAiaGFzTGlmdCIsICJvcGVyYXRlIiwgImluaXQiLCAibGlmdGVkU291cmNlIiwgImNyZWF0ZU9wZXJhdG9yU3Vic2NyaWJlciIsICJvbk5leHQiLCAib25Db21wbGV0ZSIsICJvbkVycm9yIiwgIm9uRmluYWxpemUiLCAiT3BlcmF0b3JTdWJzY3JpYmVyIiwgInNob3VsZFVuc3Vic2NyaWJlIiwgImNsb3NlZF8xIiwgIk9iamVjdFVuc3Vic2NyaWJlZEVycm9yIiwgIlN1YmplY3QiLCAic3ViamVjdCIsICJBbm9ueW1vdXNTdWJqZWN0IiwgIl9jIiwgIm9ic2VydmVyIiwgIm9ic2VydmVycyIsICJoYXNFcnJvciIsICJpc1N0b3BwZWQiLCAidGhyb3duRXJyb3IiLCAiZGF0ZVRpbWVzdGFtcFByb3ZpZGVyIiwgIkFjdGlvbiIsICJzY2hlZHVsZXIiLCAid29yayIsICJzdGF0ZSIsICJkZWxheSIsICJpbnRlcnZhbFByb3ZpZGVyIiwgIkFzeW5jQWN0aW9uIiwgImlkIiwgIl9pZCIsICJfc2NoZWR1bGVyIiwgIl9kZWxheSIsICJlcnJvcmVkIiwgImVycm9yVmFsdWUiLCAiYWN0aW9ucyIsICJTY2hlZHVsZXIiLCAic2NoZWR1bGVyQWN0aW9uQ3RvciIsICJub3ciLCAiQXN5bmNTY2hlZHVsZXIiLCAiU2NoZWR1bGVyQWN0aW9uIiwgImFjdGlvbiIsICJhc3luY1NjaGVkdWxlciIsICJpc0FycmF5TGlrZSIsICJpc1Byb21pc2UiLCAiaXNJbnRlcm9wT2JzZXJ2YWJsZSIsICJpc0FzeW5jSXRlcmFibGUiLCAib2JqIiwgImNyZWF0ZUludmFsaWRPYnNlcnZhYmxlVHlwZUVycm9yIiwgImdldFN5bWJvbEl0ZXJhdG9yIiwgIml0ZXJhdG9yIiwgImlzSXRlcmFibGUiLCAicmVhZGFibGVTdHJlYW1MaWtlVG9Bc3luY0dlbmVyYXRvciIsICJyZWFkYWJsZVN0cmVhbSIsICJfX2FzeW5jR2VuZXJhdG9yIiwgInJlYWRlciIsICJkb25lIiwgIl9fZ2VuZXJhdG9yIiwgIl9fYXdhaXQiLCAiaXNSZWFkYWJsZVN0cmVhbUxpa2UiLCAiaW5uZXJGcm9tIiwgImZyb21JbnRlcm9wT2JzZXJ2YWJsZSIsICJmcm9tQXJyYXlMaWtlIiwgImZyb21Qcm9taXNlIiwgImZyb21Bc3luY0l0ZXJhYmxlIiwgImZyb21JdGVyYWJsZSIsICJmcm9tUmVhZGFibGVTdHJlYW1MaWtlIiwgIm9icyIsICJhcnJheSIsICJwcm9taXNlIiwgIml0ZXJhYmxlIiwgIml0ZXJhYmxlXzEiLCAiaXRlcmFibGVfMV8xIiwgImFzeW5jSXRlcmFibGUiLCAicHJvY2VzcyIsICJhc3luY0l0ZXJhYmxlXzEiLCAiYXN5bmNJdGVyYWJsZV8xXzEiLCAiX19hd2FpdGVyIiwgIl9fYXN5bmNWYWx1ZXMiLCAiZXhlY3V0ZVNjaGVkdWxlIiwgInBhcmVudFN1YnNjcmlwdGlvbiIsICJyZXBlYXQiLCAic2NoZWR1bGVTdWJzY3JpcHRpb24iLCAidGhyb3dFcnJvciIsICJlcnJvck9yRXJyb3JGYWN0b3J5IiwgImVycm9yRmFjdG9yeSIsICJFbXB0eUVycm9yIiwgImxhc3RWYWx1ZUZyb20iLCAiX2hhc1ZhbHVlIiwgIl92YWx1ZSIsICJpc1ZhbGlkRGF0ZSIsICJUaW1lb3V0RXJyb3IiLCAiaW5mbyIsICJzY2hlZHVsZXJBcmciLCAiZmlyc3QiLCAiZWFjaCIsICJfd2l0aCIsICJ0aW1lb3V0RXJyb3JGYWN0b3J5IiwgIl9kIiwgIm1ldGEiLCAib3JpZ2luYWxTb3VyY2VTdWJzY3JpcHRpb24iLCAidGltZXJTdWJzY3JpcHRpb24iLCAibGFzdFZhbHVlIiwgInNlZW4iLCAic3RhcnRUaW1lciIsICJMb2FkZWRPbmNlUHVibGlzaGVyIiwgImVyck1zZyIsICJ2YWx1ZUlmTm90TG9hZGVkIiwgInN1YnNjcmlwdGlvbiIsICJ0aW1lb3V0Q29uZmlnIiwgImFzc2VydE5ldmVyIiwgInRpbWVvdXRQYXJhbXMiLCAieiQxIiwgImNvbm50b0Jhc2VVcmxzIiwgImdldENvbm50b1VybCIsICJlbnYiLCAiZ2V0V2luZG93U2FmZSIsICJtZXRyaWNzUHVibGlzaGVyIiwgIk1FVFJJQ1NfUVVFVUVfS0VZIiwgIk1BWF9SRVRSWV9BVFRFTVBUUyIsICJCQVRDSF9TSVpFIiwgIkJBVENIX0lOVEVSVkFMX01TIiwgImxvZ19fJDEiLCAiY3JlYXRlT2pzRmxvd0xvZ2dlcnMiLCAiTWV0cmljc1F1ZXVlIiwgImV2ZW50TmFtZSIsICJwcm9wZXJ0aWVzIiwgImNvbnRleHRQcm9wZXJ0aWVzIiwgImV2ZW50IiwgInY0IiwgInN0b3JlZFF1ZXVlIiwgInNhZmVXaW5kb3ciLCAiY29udGV4dCIsICJiYXRjaCIsICJiYXRjaFBheWxvYWQiLCAiY29ubnRvVXJsIiwgIm1ldHJpY3NSb3V0ZXIiLCAiZXZlbnRzVG9LZWVwIiwgImV4dHJhY3RJc3N1ZXNQZXJGaWVsZCIsICJpc3N1ZXNQZXJGaWVsZCIsICJrZXkiLCAiZmllbGROYW1lIiwgIkZpZWxkTmFtZUVudW0iLCAibG9nX18iLCAiZXJyX18kMSIsICJjcmVhdGVEeW5hbWljVmFsaWRhdGlvblNjaGVtYSIsICJyZXF1aXJlX3ppcF9jb2RlIiwgInJlcXVpcmVfZnVsbF9iaWxsaW5nX2FkZHJlc3MiLCAicmVxdWlyZV9mdWxsX3NoaXBwaW5nX2FkZHJlc3MiLCAicGF5bWVudF9tZXRob2QiLCAiaXNCdXNpbmVzc1B1cmNoYXNlIiwgIm5vbkNkZUZvcm1JbnB1dHMiLCAiY29uZGl0aW9uYWxGaWVsZHMiLCAiRmllbGROYW1lIiwgIlJlcXVpcmVkU3RyaW5nIiwgIlJlcXVpcmVkRm9ybUZpZWxkcyIsICJ2YWxpZGF0ZU5vbkNkZUZvcm1GaWVsZHMiLCAib25WYWxpZGF0aW9uRXJyb3IiLCAiZGVmYXVsdEZpZWxkVmFsdWVzIiwgImtleXMiLCAicmVzdWx0IiwgImZvcm1hdHRlZCIsICJpc3N1ZXMiLCAiaXNzdWVLZXlzIiwgIlBheW1lbnRQcm9jZXNzb3IiLCAiQVdYX0xPQURJTkciLCAiQWR5ZW5FbnZpcm9ubWVudCIsICJudWxsT3JVbmRlZk9yJDEiLCAiRW52aXJvbm1lbnQiLCAiRW52aXJvbm1lbnQyIiwgIlBheUluRmFpbGVkIiwgIlBheUluRmFpbGVkMiIsICJQYXlJblN0YXRlIiwgIlBheUluU3RhdGUyIiwgIkxPT1BfTE9BRElORyIsICJlcnJfXyIsICJPcHRpb25hbEZuIiwgIlpvZEZvcm1DYWxsYmFja3MiLCAiX0Zvcm1DYWxsYmFja3MiLCAicmF3Q2FsbGJhY2tzIiwgInJhd0NhbGxiYWNrIiwgInNhZmVDYWxsYmFjayIsICJtYWtlQ2FsbGJhY2tTYWZlIiwgIkZvcm1DYWxsYmFja3MiLCAiU3VibWl0TWV0aG9kcyIsICJTdWJtaXRNZXRob2RzMiIsICJNT0JJTEVfV0FMTEVUX0xPQURJTkdfU1RBVEUiLCAiZ2V0QXBwbGVQYXlQcm9jZXNzb3JzIiwgImluaXRGbG93cyIsICJhcHBsZVBheUluaXRGbG93cyIsICJhcHBsZVBheUluaXRSZXN1bHRzIiwgImZsb3ciLCAiZmxvd1ZhbHVlIiwgInN0cmlwZVBSRmxvd1Jlc3VsdCIsICJjdXN0b21QYXJhbXMiLCAic3RhcnRBcHBsZVBheUZsb3ciLCAiZ2V0R29vZ2xlUGF5UHJvY2Vzc29ycyIsICJnb29nbGVQYXlJbml0Rmxvd3MiLCAiZ29vZ2xlUGF5SW5pdFJlc3VsdHMiLCAic3RhcnRHb29nbGVQYXlGbG93IiwgImluaXRSZXN1bHRzIiwgImF2YWlsYWJsZUZsb3ciLCAiZ2V0S2xhcm5hUHJvY2Vzc29ycyIsICJrbGFybmFJbml0UmVzdWx0cyIsICJhaXJ3YWxsZXhLbGFybmFGbG93UmVzdWx0IiwgInN0cmlwZUtsYXJuYUZsb3dSZXN1bHQiLCAic3RhcnRLbGFybmFGbG93IiwgImdldEFmZmlybVByb2Nlc3NvcnMiLCAiYWZmaXJtSW5pdFJlc3VsdHMiLCAic3RyaXBlQWZmaXJtRmxvd1Jlc3VsdCIsICJzdGFydEFmZmlybUZsb3ciLCAiZ2V0QWZ0ZXJwYXlQcm9jZXNzb3JzIiwgImFmdGVycGF5SW5pdFJlc3VsdHMiLCAic3RyaXBlQWZ0ZXJwYXlGbG93UmVzdWx0IiwgInN0YXJ0QWZ0ZXJwYXlGbG93IiwgImNvbnZlcnRTdHlsZXNUb1F1ZXJ5U3RyaW5nIiwgInN0eWxlcyIsICJFbGVtZW50c0NvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJ1c2VPcGVuUGF5RWxlbWVudHMiLCAidXNlQ29udGV4dCIsICJFbGVtZW50RnJhbWUiLCAicHJvcHMiLCAiZWxlbWVudFR5cGUiLCAiZm9ybUlkIiwgInJlZmVycmVyIiwgImZvcm1IZWlnaHQiLCAiY2hlY2tvdXRTZWN1cmVUb2tlbiIsICJyZWdpc3RlcklmcmFtZSIsICJiYXNlVXJsIiwgInN1YlBhdGgiLCAiaGFzTG9hZGVkIiwgInNldEhhc0xvYWRlZCIsICJ1c2VTdGF0ZSIsICJpZnJhbWVSZWYiLCAidXNlUmVmIiwgImVsZW1lbnRTdHlsZSIsICJ1c2VNZW1vIiwgImZyYW1lU3R5bGUiLCAicXVlcnlTdHJpbmciLCAicGFyYW1zIiwgInVzZUVmZmVjdCIsICJqc3giLCAidXJsIiwgIkNhcmRFbGVtZW50IiwgIkVsZW1lbnRUeXBlRW51bSIsICJDYXJkQ3ZjRWxlbWVudCIsICJDYXJkRXhwaXJ5RWxlbWVudCIsICJDYXJkTnVtYmVyRWxlbWVudCIsICJGbyIsICJUbyIsICJObyIsICJyIiwgIm4iLCAiYSIsICJzIiwgIkxvIiwgIlQiLCAiRCIsICJwIiwgIm9uIiwgImFuIiwgInNuIiwgImNuIiwgImdlIiwgIk1vIiwgIkZ0IiwgInhvIiwgIlR0IiwgInBlIiwgIkRvIiwgIlVvIiwgIk9vIiwgImpvIiwgIiRvIiwgIkdvIiwgInFvIiwgIlZvIiwgInpvIiwgIkJvIiwgIkhvIiwgIktvIiwgIlVlIiwgIllvIiwgIldvIiwgIkpvIiwgIlpvIiwgIlFvIiwgIlhvIiwgImVhIiwgInR0IiwgInRhIiwgInJhIiwgIm5hIiwgIkYiLCAibG4iLCAib2EiLCAiYWEiLCAidW4iLCAiaWEiLCAic2EiLCAiY2EiLCAibGEiLCAidWEiLCAiZGEiLCAicGEiLCAibWEiLCAiZmEiLCAiRSIsICJ5YSIsICJkbiIsICJwbiIsICJoYSIsICJnYSIsICJxZSIsICJ3YSIsICJ2YSIsICJtbiIsICJiYSIsICJQYSIsICJFYSIsICJBciIsICJTciIsICJfbiIsICJDYSIsICJBYSIsICJQdCIsICJ5biIsICJTYSIsICJrYSIsICJJYSIsICJobiIsICJSYSIsICJnbiIsICJGYSIsICJUYSIsICJOYSIsICJMYSIsICJNYSIsICJ4YSIsICJEYSIsICJVYSIsICJPYSIsICJqYSIsICJadCIsICIkYSIsICJHYSIsICJxYSIsICJhZSIsICJWYSIsICJ6YSIsICJ3biIsICJCYSIsICJIYSIsICJWIiwgInYiLCAiSGkiLCAiam4iLCAiY2UiLCAiayIsICJjaGFsayIsICJRdCIsICJFZSIsICJLYSIsICJsIiwgIm0iLCAiYyIsICJ2biIsICJPZSIsICJFdCIsICJDdCIsICJNZSIsICJZYSIsICJ5IiwgIl8iLCAiZyIsICJoIiwgImYiLCAiV2EiLCAiWSIsICJOdCIsICJ6dCIsICJBdCIsICJzdCIsICJrciIsICJibiIsICJQbiIsICJKYSIsICJaYSIsICJFbiIsICJJciIsICJndCIsICJpciIsICJlaSIsICJYdCIsICJRYSIsICJwdCIsICJYYSIsICJzciIsICJ0aSIsICJyaSIsICJ3ZSIsICJvaSIsICJSciIsICJuaSIsICJhaSIsICJpaSIsICJzaSIsICJjaSIsICJsaSIsICJDbiIsICJGciIsICJ1aSIsICJkaSIsICJUciIsICJwaSIsICJOciIsICJtaSIsICJmaSIsICJ5aSIsICJoaSIsICJnaSIsICJ3aSIsICJ2aSIsICJiaSIsICJQaSIsICJFaSIsICJDaSIsICJBaSIsICJTaSIsICJraSIsICJJaSIsICJBbiIsICJSaSIsICJGaSIsICJUaSIsICJOaSIsICJMaSIsICJNaSIsICJ4aSIsICJEaSIsICJVaSIsICJPaSIsICJqaSIsICJiIiwgIlMiLCAiWGUiLCAiY3QiLCAiTHIiLCAiJGkiLCAiR2kiLCAiQnQiLCAiU24iLCAiTHQiLCAiQiIsICJlciIsICJNciIsICJxaSIsICJWaSIsICJ6aSIsICJtdCIsICJCaSIsICJjciIsICJrbiIsICJJbiIsICJTdCIsICJLaSIsICJSbiIsICJZaSIsICJXaSIsICJKaSIsICJaaSIsICJRaSIsICJNdCIsICJ4ciIsICJEdCIsICJ4dCIsICJYaSIsICJlcyIsICJ0cyIsICJycyIsICJucyIsICJSZSIsICJEciIsICJvcyIsICJ1IiwgImQiLCAiYXMiLCAiaXMiLCAicnQiLCAibnQiLCAibHIiLCAib3QiLCAidXIiLCAic3MiLCAiY3MiLCAibHMiLCAiSGUiLCAib2UiLCAidXMiLCAiZHMiLCAicHMiLCAibXMiLCAia3QiLCAiZnMiLCAiX3MiLCAieXMiLCAiaHMiLCAiZ3MiLCAid3MiLCAidnMiLCAiYnMiLCAiSHQiLCAiUHMiLCAiZHIiLCAidHIiLCAiRm4iLCAiVG4iLCAiRXMiLCAiZXQiLCAicHIiLCAibXIiLCAiQ3MiLCAiZnIiLCAiQXMiLCAiU3MiLCAiTm4iLCAia3MiLCAiSXMiLCAiUnMiLCAiRnMiLCAiTG4iLCAiVHMiLCAiS3QiLCAiTW4iLCAiTnMiLCAiTHMiLCAiTXMiLCAieHMiLCAiRHMiLCAiVXIiLCAiYXQiLCAiUGUiLCAieGUiLCAiWXQiLCAiVXMiLCAiamUiLCAiT3MiLCAiZnQiLCAieG4iLCAiSiIsICIkcyIsICJqcyIsICJHcyIsICJOIiwgIloiLCAiRG4iLCAicXMiLCAiVnMiLCAienMiLCAiQnMiLCAiUSIsICJVbiIsICJPciIsICJIcyIsICJfciIsICJPbiIsICJLcyIsICJjb25uZWN0VG9DaGlsZCIsICJVdCIsICJZcyIsICJXcyIsICJKcyIsICIkbiIsICJHbiIsICJJdCIsICJacyIsICJxbiIsICJqciIsICJGZSIsICJXZSIsICJRcyIsICJYcyIsICJlYyIsICJuYyIsICJ0YyIsICJyYyIsICJvYyIsICJWbiIsICJ6biIsICJhYyIsICJpYyIsICJqIiwgInNjIiwgIkJuIiwgIkNlIiwgIk90IiwgImp0IiwgImNjIiwgImxjIiwgIiR0IiwgIkhuIiwgIkd0IiwgInlyIiwgIktuIiwgImxlIiwgIlluIiwgInVjIiwgIlduIiwgImllIiwgInQiLCAiZGMiLCAicGMiLCAibWMiLCAiZmMiLCAieWMiLCAiRyIsICJKbiIsICJabiIsICJsdCIsICJPIiwgInEiLCAicmUiLCAiVSIsICJRbiIsICJWZSIsICJociIsICJXdCIsICJnciIsICJ6ZSIsICJCZSIsICJ3ciIsICJ2ZSIsICJoYyIsICJnYyIsICJLZSIsICJ3YyIsICJ2YyIsICJ3IiwgImJlIiwgImJjIiwgIlBjIiwgIkVjIiwgInZyIiwgIkNjIiwgIkFjIiwgIlhuIiwgIlNjIiwgImVvIiwgInRvIiwgInJvIiwgImJyIiwgIlByIiwgImtjIiwgInF0IiwgIkVyIiwgIkljIiwgIlJjIiwgIiRlIiwgIml0IiwgIkZjIiwgIm5vIiwgIlRjIiwgIk5jIiwgIiRyIiwgIkxjIiwgIk1jIiwgInhjIiwgIm9vIiwgImFvIiwgImlvIiwgInNvIiwgIkRjIiwgIlVjIiwgIk9jIiwgIlJvIiwgIkplIiwgImNvIiwgImpjIiwgIiRjIiwgImRlIiwgIk5lIiwgIkdjIiwgInFjIiwgIkwiLCAiQSIsICIkIiwgIlllIiwgIlZjIiwgInpjIiwgInd0IiwgIkJjIiwgIkhjIiwgIktjIiwgIlplIiwgImxvIiwgIlljIiwgIldjIiwgInNlIiwgIkxlIiwgIkpjIiwgIlpjIiwgIkMiLCAiX3QiLCAiUWMiLCAidW8iLCAiWGMiLCAiZWwiLCAicG8iLCAibW8iLCAidGwiLCAicmwiLCAidnQiLCAiZm8iLCAibmwiLCAib2wiLCAiSWUiLCAiUWUiLCAiYWwiLCAiaWwiLCAieXQiLCAic2wiLCAiY2wiLCAibGwiLCAidWwiLCAiRGUiLCAiX28iLCAieW8iLCAiZGwiLCAicGwiLCAibWwiLCAiZmwiLCAiaG8iLCAiX2wiLCAiZ28iLCAieWwiLCAiaGwiLCAid28iLCAicnIiLCAiZ2wiLCAid2wiLCAiR3IiLCAidmwiLCAidm8iLCAiYmwiLCAiUGwiLCAiVGUiLCAiUnQiLCAiRWwiLCAiYm8iLCAiQ2wiLCAia2wiLCAiQWwiLCAiU2wiLCAiRW8iLCAiUG8iLCAiTSIsICJxciIsICJJbCIsICJSbCIsICJGbCIsICJUbCIsICJlZSIsICJObCIsICJMbCIsICJNbCIsICJTZSIsICJ4bCIsICJDbyIsICJEbCIsICJVbCIsICJtZSIsICJWciIsICJBbyIsICJPbCIsICJqbCIsICJXIiwgImJ0IiwgIlNvIiwgIiRsIiwgIkdsIiwgInFsIiwgIkgiLCAibnIiLCAia28iLCAiVmwiLCAiemwiLCAiQmwiLCAiSyIsICJvciIsICJJbyIsICJIbCIsICJLbCIsICJZbCIsICJodCIsICJ6IiwgInpyIiwgIldsIiwgIkpsIiwgIlpsIiwgInV0IiwgImV1IiwgIlFsIiwgIlhsIiwgInRlIiwgInR1IiwgInJ1IiwgIm51IiwgIl9lIiwgIm91IiwgIkJyIiwgImF1IiwgIml1IiwgInN1IiwgImN1IiwgIlgiLCAibHUiLCAidXUiLCAiZHUiLCAidWUiLCAiSHIiLCAieWUiLCAiYXIiLCAicHUiLCAibXUiLCAiZnUiLCAiSSIsICJrZSIsICJLciIsICJfdSIsICJZciIsICJ5dSIsICJXciIsICJodSIsICJKciIsICJndSIsICJaciIsICJ3dSIsICJ2dSIsICJKdCIsICJidSIsICJQdSIsICJFdSIsICJRciIsICJWdCIsICJDdSIsICJBZSIsICJBdSIsICJYciIsICJTdSIsICJrdSIsICJJdSIsICJlbiIsICJ0biIsICJmZSIsICJuZSIsICJoZSIsICJDciIsICJybiIsICJ1c2VSZWFjdGl2ZUZvcm1DYWxsYmFja3MiLCAiZm9ybUNhbGxiYWNrcyIsICJGT1JNX1RBUkdFVCIsICJFbGVtZW50c0Zvcm0iLCAib3BGb3JtIiwgInNldE9wRm9ybSIsICJlbGVtZW50c0NvbnRleHRWYWx1ZSIsICJzZXRFbGVtZW50c0NvbnRleHRWYWx1ZSIsICJsb2FkZWQiLCAic2V0TG9hZGVkIiwgImFwcGxlUGF5UmVzdWx0IiwgInNldEFwcGxlUGF5UmVzdWx0IiwgImdvb2dsZVBheVJlc3VsdCIsICJzZXRHb29nbGVQYXlSZXN1bHQiLCAic3RyaXBlTGlua0N0cmwiLCAic2V0U3RyaXBlTGlua0N0cmwiLCAia2xhcm5hUmVzdWx0IiwgInNldEtsYXJuYVJlc3VsdCIsICJhZmZpcm1SZXN1bHQiLCAic2V0QWZmaXJtUmVzdWx0IiwgImFmdGVycGF5UmVzdWx0IiwgInNldEFmdGVycGF5UmVzdWx0IiwgImxvb3BDb25maWciLCAic2V0TG9vcENvbmZpZyIsICJhaXJ3YWxsZXgiLCAic2V0QWlyd2FsbGV4IiwgInRvdGFsQW1vdW50QXRvbXMiLCAiY3VycmVuY3kiLCAiYXBwbGVQYXlSZXN1bHQyIiwgImdvb2dsZVBheVJlc3VsdDIiLCAia2xhcm5hUmVzdWx0MiIsICJhZmZpcm1SZXN1bHQyIiwgImFmdGVycGF5UmVzdWx0MiIsICJmb3JtIiwgImdldEVsZW1lbnRzQ29udGV4dFZhbHVlIiwgIkZyYWdtZW50IiwgImNoaWxkcmVuUHJvcHMiXQp9Cg==
|