@myxtra/authentication-green 1.3.1-alpha.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { r as d, j as n, g as wt, u as Q, a as Qe, b as _t, E as Rt } from "./index-70801a88.mjs";
1
+ import { r as d, j as n, g as wt, u as Q, a as Qe, b as _t, E as Rt } from "./index-293d70cb.mjs";
2
2
  class H {
3
3
  constructor() {
4
4
  this.listeners = /* @__PURE__ */ new Set(), this.subscribe = this.subscribe.bind(this);
@@ -96,7 +96,7 @@ function Oe(t, e) {
96
96
  if (!e.options.mutationKey)
97
97
  return !1;
98
98
  if (s) {
99
- if (T(e.options.mutationKey) !== T(o))
99
+ if (I(e.options.mutationKey) !== I(o))
100
100
  return !1;
101
101
  } else if (!se(e.options.mutationKey, o))
102
102
  return !1;
@@ -104,9 +104,9 @@ function Oe(t, e) {
104
104
  return !(typeof r == "boolean" && e.state.status === "loading" !== r || i && !i(e));
105
105
  }
106
106
  function ge(t, e) {
107
- return ((e == null ? void 0 : e.queryKeyHashFn) || T)(t);
107
+ return ((e == null ? void 0 : e.queryKeyHashFn) || I)(t);
108
108
  }
109
- function T(t) {
109
+ function I(t) {
110
110
  return JSON.stringify(t, (e, s) => fe(s) ? Object.keys(s).sort().reduce((r, i) => (r[i] = s[i], r), {}) : s);
111
111
  }
112
112
  function se(t, e) {
@@ -930,7 +930,7 @@ function Ze() {
930
930
  variables: void 0
931
931
  };
932
932
  }
933
- class It extends H {
933
+ class Tt extends H {
934
934
  constructor(e) {
935
935
  super(), this.config = e || {}, this.mutations = [], this.mutationId = 0;
936
936
  }
@@ -992,7 +992,7 @@ class It extends H {
992
992
  }), this.resuming;
993
993
  }
994
994
  }
995
- function Tt() {
995
+ function It() {
996
996
  return {
997
997
  onFetch: (t) => {
998
998
  t.fetchFn = () => {
@@ -1067,7 +1067,7 @@ function Ut(t, e) {
1067
1067
  }
1068
1068
  class We {
1069
1069
  constructor(e = {}) {
1070
- this.queryCache = e.queryCache || new Lt(), this.mutationCache = e.mutationCache || new It(), this.logger = e.logger || be, this.defaultOptions = e.defaultOptions || {}, this.queryDefaults = [], this.mutationDefaults = [], this.mountCount = 0;
1070
+ this.queryCache = e.queryCache || new Lt(), this.mutationCache = e.mutationCache || new Tt(), this.logger = e.logger || be, this.defaultOptions = e.defaultOptions || {}, this.queryDefaults = [], this.mutationDefaults = [], this.mountCount = 0;
1071
1071
  }
1072
1072
  mount() {
1073
1073
  this.mountCount++, this.mountCount === 1 && (this.unsubscribeFocus = re.subscribe(() => {
@@ -1189,7 +1189,7 @@ class We {
1189
1189
  }
1190
1190
  fetchInfiniteQuery(e, s, r) {
1191
1191
  const i = Y(e, s, r);
1192
- return i.behavior = Tt(), this.fetchQuery(i);
1192
+ return i.behavior = It(), this.fetchQuery(i);
1193
1193
  }
1194
1194
  prefetchInfiniteQuery(e, s, r) {
1195
1195
  return this.fetchInfiniteQuery(e, s, r).then(k).catch(k);
@@ -1213,7 +1213,7 @@ class We {
1213
1213
  this.defaultOptions = e;
1214
1214
  }
1215
1215
  setQueryDefaults(e, s) {
1216
- const r = this.queryDefaults.find((i) => T(e) === T(i.queryKey));
1216
+ const r = this.queryDefaults.find((i) => I(e) === I(i.queryKey));
1217
1217
  r ? r.defaultOptions = s : this.queryDefaults.push({
1218
1218
  queryKey: e,
1219
1219
  defaultOptions: s
@@ -1226,7 +1226,7 @@ class We {
1226
1226
  return s == null ? void 0 : s.defaultOptions;
1227
1227
  }
1228
1228
  setMutationDefaults(e, s) {
1229
- const r = this.mutationDefaults.find((i) => T(e) === T(i.mutationKey));
1229
+ const r = this.mutationDefaults.find((i) => I(e) === I(i.mutationKey));
1230
1230
  r ? r.defaultOptions = s : this.mutationDefaults.push({
1231
1231
  mutationKey: e,
1232
1232
  defaultOptions: s
@@ -1918,7 +1918,10 @@ var Rs = d.forwardRef(
1918
1918
  );
1919
1919
  Rs.displayName = "TextField";
1920
1920
  d.createContext(void 0);
1921
- var Es = ({ children: t }) => /* @__PURE__ */ n.jsx("div", { className: "card__header__action", children: t }), Os = ({ children: t }) => /* @__PURE__ */ n.jsx("div", { className: "card__body", children: t }), Ss = (t) => /* @__PURE__ */ n.jsx(
1921
+ var Es = ({ children: t }) => /* @__PURE__ */ n.jsx("div", { className: "card__header__action", children: t }), Os = (t) => {
1922
+ var e = t, { children: s } = e, r = A(e, ["children"]);
1923
+ return /* @__PURE__ */ n.jsx("div", E(x({ className: "card__body" }, r), { children: s }));
1924
+ }, Ss = (t) => /* @__PURE__ */ n.jsx(
1922
1925
  "svg",
1923
1926
  E(x({
1924
1927
  width: "24",
@@ -2015,7 +2018,7 @@ var Es = ({ children: t }) => /* @__PURE__ */ n.jsx("div", { className: "card__h
2015
2018
  }
2016
2019
  )
2017
2020
  })
2018
- ), Ds = Ls, Is = (t) => /* @__PURE__ */ n.jsxs(
2021
+ ), Ds = Ls, Ts = (t) => /* @__PURE__ */ n.jsxs(
2019
2022
  "svg",
2020
2023
  E(x({
2021
2024
  width: "24",
@@ -2052,7 +2055,7 @@ var Es = ({ children: t }) => /* @__PURE__ */ n.jsx("div", { className: "card__h
2052
2055
  /* @__PURE__ */ n.jsx("defs", { children: /* @__PURE__ */ n.jsx("clipPath", { id: "clip0_19_444", children: /* @__PURE__ */ n.jsx("rect", { width: "24", height: "24", fill: "white" }) }) })
2053
2056
  ]
2054
2057
  })
2055
- ), Ts = Is, Us = (t) => /* @__PURE__ */ n.jsxs(
2058
+ ), Is = Ts, Us = (t) => /* @__PURE__ */ n.jsxs(
2056
2059
  "svg",
2057
2060
  E(x({
2058
2061
  width: "24",
@@ -2570,7 +2573,7 @@ U.Error = or;
2570
2573
  var dr = (t) => {
2571
2574
  var e = t, { type: s = "div", className: r, children: i } = e, o = A(e, ["type", "className", "children"]);
2572
2575
  return d.createElement(s, x({ className: O("dialog__body", r) }, o), i);
2573
- }, ye = () => document.body.style.removeProperty("overflow"), Ie = (t) => t.preventDefault(), hr = 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])', fr = (t) => {
2576
+ }, ye = () => document.body.style.removeProperty("overflow"), Te = (t) => t.preventDefault(), hr = 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])', fr = (t) => {
2574
2577
  var e = t, { className: s, children: r, shouldAnimate: i = !0 } = e, o = A(e, ["className", "children", "shouldAnimate"]);
2575
2578
  const { ref: a, defaultOpen: u, isModal: l, onClose: h } = X();
2576
2579
  return d.useEffect(() => {
@@ -2590,7 +2593,7 @@ var dr = (t) => {
2590
2593
  if (!c)
2591
2594
  return;
2592
2595
  if (u && (c.removeAttribute("open"), c.showModal(), c.focus()), l)
2593
- return c.addEventListener("cancel", Ie), () => c.removeEventListener("cancel", Ie);
2596
+ return c.addEventListener("cancel", Te), () => c.removeEventListener("cancel", Te);
2594
2597
  const p = ({ clientX: v, clientY: f }) => {
2595
2598
  const { top: y, right: g, bottom: m, left: C } = c.getBoundingClientRect(), _ = 0 < f && 0 < v, j = y < f && f < m, S = C < v && v < g;
2596
2599
  _ && !(j && S) && h();
@@ -2876,7 +2879,7 @@ const B = ({
2876
2879
  getTermsAndConditionsEndpoint: o,
2877
2880
  postTermsAndConditionsEndpoint: a
2878
2881
  };
2879
- }, Er = (t) => t ? /* @__PURE__ */ n.jsx("ul", { className: "bou-menu__list", children: t == null ? void 0 : t.map(({ label: e, icon: s, url: r }, i) => /* @__PURE__ */ n.jsx(
2882
+ }, Er = (t) => t != null && t.length ? /* @__PURE__ */ n.jsx("ul", { className: "bou-menu__list", children: t == null ? void 0 : t.map(({ label: e, icon: s, url: r }, i) => /* @__PURE__ */ n.jsx(
2880
2883
  B,
2881
2884
  {
2882
2885
  className: "bou-menu-item",
@@ -2942,7 +2945,7 @@ const B = ({
2942
2945
  className: "manage-privacy",
2943
2946
  mobileUrl: `${e}/manage-privacy`,
2944
2947
  desktopUrl: `${e}/manage-privacy/permissions`,
2945
- icon: /* @__PURE__ */ n.jsx(Ts, {}),
2948
+ icon: /* @__PURE__ */ n.jsx(Is, {}),
2946
2949
  label: t("privacy")
2947
2950
  }
2948
2951
  ),
@@ -2999,13 +3002,13 @@ const Ar = () => {
2999
3002
  ] })
3000
3003
  ] });
3001
3004
  };
3002
- var I = /* @__PURE__ */ ((t) => (t.Authenticated = "authenticated", t.NotAuthenticated = "notAuthenticated", t.Pending = "pending", t))(I || {});
3005
+ var T = /* @__PURE__ */ ((t) => (t.Authenticated = "authenticated", t.NotAuthenticated = "notAuthenticated", t.Pending = "pending", t))(T || {});
3003
3006
  const Nr = () => {
3004
3007
  const { authenticationStatus: t } = Re();
3005
- return t === I.NotAuthenticated ? /* @__PURE__ */ n.jsxs(n.Fragment, { children: [
3008
+ return t === T.NotAuthenticated ? /* @__PURE__ */ n.jsxs(n.Fragment, { children: [
3006
3009
  /* @__PURE__ */ n.jsx(Pr, {}),
3007
3010
  /* @__PURE__ */ n.jsx(Ar, {})
3008
- ] }) : t === I.Pending ? /* @__PURE__ */ n.jsx(Sr, {}) : /* @__PURE__ */ n.jsx(Or, {});
3011
+ ] }) : t === T.Pending ? /* @__PURE__ */ n.jsx(Sr, {}) : /* @__PURE__ */ n.jsx(Or, {});
3009
3012
  };
3010
3013
  /*! js-cookie v3.0.5 | MIT */
3011
3014
  function ee(t) {
@@ -3078,7 +3081,7 @@ function Ce(t, e) {
3078
3081
  );
3079
3082
  }
3080
3083
  var xe = Ce(Mr, { path: "/" });
3081
- class Te extends Error {
3084
+ class Ie extends Error {
3082
3085
  constructor(e) {
3083
3086
  super(e), this.name = "UnauthorizedError";
3084
3087
  }
@@ -3094,22 +3097,22 @@ const Fr = () => {
3094
3097
  headers: { "Accept-Language": t.language }
3095
3098
  });
3096
3099
  if (!r.ok)
3097
- throw r.status === 401 ? new Te(`${r.status} - ${r.statusText}`) : new Error("Network response was not ok");
3100
+ throw r.status === 401 ? new Ie(`${r.status} - ${r.statusText}`) : new Error("Network response was not ok");
3098
3101
  return await r.json();
3099
3102
  },
3100
- retry: (r, i) => i instanceof Te ? !1 : r < 2,
3103
+ retry: (r, i) => i instanceof Ie ? !1 : r < 2,
3101
3104
  refetchOnWindowFocus: !1
3102
3105
  });
3103
3106
  }, Ct = () => {
3104
3107
  var u, l;
3105
3108
  const t = xe.get("profile"), e = !!t, [s, r] = d.useState(
3106
- e ? I.Authenticated : I.Pending
3109
+ e ? T.Authenticated : T.Pending
3107
3110
  ), [i, o] = d.useState(
3108
3111
  e ? JSON.parse(t) : void 0
3109
3112
  ), a = Fr();
3110
3113
  return d.useEffect(() => {
3111
- if (a.isError && (xe.remove("profile"), r(I.NotAuthenticated)), a.isSuccess) {
3112
- r(I.Authenticated);
3114
+ if (a.isError && (xe.remove("profile"), r(T.NotAuthenticated)), a.isSuccess) {
3115
+ r(T.Authenticated);
3113
3116
  const h = {
3114
3117
  firstName: a.data.firstName,
3115
3118
  lastName: a.data.lastName
@@ -3136,14 +3139,14 @@ const Fr = () => {
3136
3139
  }
3137
3140
  );
3138
3141
  };
3139
- var Lr = Object.defineProperty, Dr = Object.defineProperties, Ir = Object.getOwnPropertyDescriptors, ae = Object.getOwnPropertySymbols, xt = Object.prototype.hasOwnProperty, gt = Object.prototype.propertyIsEnumerable, Ue = (t, e, s) => e in t ? Lr(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s, q = (t, e) => {
3142
+ var Lr = Object.defineProperty, Dr = Object.defineProperties, Tr = Object.getOwnPropertyDescriptors, ae = Object.getOwnPropertySymbols, xt = Object.prototype.hasOwnProperty, gt = Object.prototype.propertyIsEnumerable, Ue = (t, e, s) => e in t ? Lr(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s, q = (t, e) => {
3140
3143
  for (var s in e || (e = {}))
3141
3144
  xt.call(e, s) && Ue(t, s, e[s]);
3142
3145
  if (ae)
3143
3146
  for (var s of ae(e))
3144
3147
  gt.call(e, s) && Ue(t, s, e[s]);
3145
3148
  return t;
3146
- }, G = (t, e) => Dr(t, Ir(e)), Z = (t, e) => {
3149
+ }, G = (t, e) => Dr(t, Tr(e)), Z = (t, e) => {
3147
3150
  var s = {};
3148
3151
  for (var r in t)
3149
3152
  xt.call(t, r) && e.indexOf(r) < 0 && (s[r] = t[r]);
@@ -3151,7 +3154,7 @@ var Lr = Object.defineProperty, Dr = Object.defineProperties, Ir = Object.getOwn
3151
3154
  for (var r of ae(t))
3152
3155
  e.indexOf(r) < 0 && gt.call(t, r) && (s[r] = t[r]);
3153
3156
  return s;
3154
- }, Tr = d.forwardRef((t, e) => {
3157
+ }, Ir = d.forwardRef((t, e) => {
3155
3158
  const s = t, { isAuthenticated: r, className: i } = s, o = Z(s, ["isAuthenticated", "className"]);
3156
3159
  return /* @__PURE__ */ n.jsx(
3157
3160
  V,
@@ -3167,7 +3170,7 @@ var Lr = Object.defineProperty, Dr = Object.defineProperties, Ir = Object.getOwn
3167
3170
  }, o)
3168
3171
  );
3169
3172
  });
3170
- Tr.displayName = "AuthenticationButton";
3173
+ Ir.displayName = "AuthenticationButton";
3171
3174
  var Ur = (t) => {
3172
3175
  var e = t, {
3173
3176
  children: s
@@ -3230,7 +3233,7 @@ const Vr = () => {
3230
3233
  }
3231
3234
  });
3232
3235
  }, $r = () => {
3233
- const { i18n: t } = Q(), { getTermsAndConditionsEndpoint: e } = $(), { authenticationStatus: s } = Ct(), r = xe.get("hasAcceptedLatestTermsAndConditions"), i = [], o = r === "true", a = s === I.Authenticated;
3236
+ const { i18n: t } = Q(), { getTermsAndConditionsEndpoint: e } = $(), { authenticationStatus: s } = Ct(), r = xe.get("hasAcceptedLatestTermsAndConditions"), i = [], o = r === "true", a = s === T.Authenticated;
3234
3237
  return nt({
3235
3238
  queryKey: ["gdpr"],
3236
3239
  queryFn: async () => {
@@ -769,7 +769,7 @@ R();
769
769
  R();
770
770
  R();
771
771
  R();
772
- const Og = "data:text/css;base64,Lyogc3JjL3N0eWxlcy9yZXNldC5jc3MgKi8KYSwKYWJiciwKYWNyb255bSwKYWRkcmVzcywKYXBwbGV0LAphcnRpY2xlLAphc2lkZSwKYXVkaW8sCmIsCmJpZywKYmxvY2txdW90ZSwKYm9keSwKY2FudmFzLApjYXB0aW9uLApjZW50ZXIsCmNpdGUsCmNvZGUsCmRkLApkZWwsCmRldGFpbHMsCmRmbiwKZGl2LApkbCwKZHQsCmVtLAplbWJlZCwKZmllbGRzZXQsCmZpZ2NhcHRpb24sCmZpZ3VyZSwKZm9vdGVyLApmb3JtLApoMSwKaDIsCmgzLApoNCwKaDUsCmg2LApoZWFkZXIsCmhncm91cCwKaHRtbCwKaSwKaWZyYW1lLAppbWcsCmlucywKa2JkLApsYWJlbCwKbGVnZW5kLApsaSwKbWFyaywKbWVudSwKbmF2LApvYmplY3QsCm9sLApvdXRwdXQsCnAsCnByZSwKcSwKcnVieSwKcywKc2FtcCwKc2VjdGlvbiwKc21hbGwsCnNwYW4sCnN0cmlrZSwKc3Ryb25nLApzdWIsCnN1bW1hcnksCnN1cCwKdGFibGUsCnRib2R5LAp0ZCwKdGZvb3QsCnRoLAp0aGVhZCwKdGltZSwKdHIsCnR0LAp1LAp1bCwKdmFyLAp2aWRlbyB7CiAgYm9yZGVyOiAwOwogIGZvbnQ6IGluaGVyaXQ7CiAgZm9udC1zaXplOiAxMDAlOwogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQphcnRpY2xlLAphc2lkZSwKZGV0YWlscywKZmlnY2FwdGlvbiwKZmlndXJlLApmb290ZXIsCmhlYWRlciwKaGdyb3VwLAptZW51LApuYXYsCnNlY3Rpb24gewogIGRpc3BsYXk6IGJsb2NrOwp9CmJvZHkgewogIGxpbmUtaGVpZ2h0OiAxOwp9Cm9sLAp1bCB7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQpibG9ja3F1b3RlLApxIHsKICBxdW90ZXM6IG5vbmU7Cn0KYmxvY2txdW90ZTphZnRlciwKYmxvY2txdW90ZTpiZWZvcmUsCnE6YWZ0ZXIsCnE6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBjb250ZW50OiBub25lOwp9CnRhYmxlIHsKICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogIGJvcmRlci1zcGFjaW5nOiAwOwp9CgovKiBzcmMvc3R5bGVzL2dsb2JhbC5jc3MgKi8KOjpiYWNrZHJvcCwKOmhvc3QsCjpyb290IHsKICAtLW5ldXRyYWwtOTk5OiMwMDA7CiAgLS1uZXV0cmFsLTkwMDojMWIxZjI3OwogIC0tbmV1dHJhbC04MDA6IzJlM2I1NjsKICAtLW5ldXRyYWwtNzAwOiM0ODUyNmQ7CiAgLS1uZXV0cmFsLTYwMDojNjM3MDhhOwogIC0tbmV1dHJhbC01MDA6IzdjODlhMzsKICAtLW5ldXRyYWwtNDAwOiM5ZmFhYzA7CiAgLS1uZXV0cmFsLTMwMDojYmJjMWQzOwogIC0tbmV1dHJhbC0yMDA6I2ViZWRmNTsKICAtLW5ldXRyYWwtMTAwOiNmM2Y0ZmE7CiAgLS1uZXV0cmFsLTUwOiNmOWZhZmM7CiAgLS1uZXV0cmFsLTAwMDojZmZmOwogIC0tcHJpbWFyeS05MDA6IzAwM2MzNzsKICAtLXByaW1hcnktODAwOiMwMDU2NGY7CiAgLS1wcmltYXJ5LTcwMDojMDA4MDc3OwogIC0tcHJpbWFyeS02MDA6IzAwOWE4ZTsKICAtLXByaW1hcnktNTAwOiMwMGFiOWU7CiAgLS1wcmltYXJ5LTQwMDojMTliM2E4OwogIC0tcHJpbWFyeS0zMDA6IzgwZDVjZjsKICAtLXByaW1hcnktMjAwOiNjY2VlZWM7CiAgLS1wcmltYXJ5LTEwMDojZTVmN2Y1OwogIC0tcHJpbWFyeS01MDojZWZmOWY5OwogIC0tc3VjY2Vzcy0yMDA6I2YyZjllYzsKICAtLXN1Y2Nlc3MtNTAwOiMwMDlhM2U7CiAgLS1lcnJvci0yMDA6I2ZlZjRmNTsKICAtLWVycm9yLTQwMDojZmY1YzVjOwogIC0tZXJyb3ItNTAwOiNlNjJkMzI7CiAgLS13YXJuaW5nLTIwMDojZmZmYWYzOwogIC0td2FybmluZy01MDA6I2RjODYzMzsKICAtLXByaW1hcnktZ3JhZGllbnQ6bGluZWFyLWdyYWRpZW50KDEzMy41M2RlZywjMTU5YTk1IDI1LjU3JSwjMTBiOGIxIDc0LjI5JSk7CiAgLS1zaGFkb3ctY2FyZDowIDNweCA4cHggcmdiYSg0Niw1OSw4NiwuMSk7CiAgLS1zaGFkb3ctbmF2OjAgMCAxMnB4IHJnYmEoNDYsNTksODYsLjEyKTsKICAtLXNoYWRvdy1idXR0b246MCA4cHggOHB4IC01cHggcmdiYSgxLDE0MSwxMzYsLjIpOwogIC0tc2hhZG93LWZhYjowIDRweCA4cHggLTVweCByZ2JhKDEsMTQxLDEzNiwuMik7CiAgLS1zaGFkb3ctbW9kYWw6MCA3NnB4IDgwcHggcmdiKDAgMCAwLzclKSwwIDIxcHggMjRweCByZ2IoMCAwIDAvNSUpLDAgOHB4IDEwcHggcmdiKDAgMCAwLzQlKSwwIDNweCAzcHggcmdiKDAgMCAwLzIlKTsKICAtLWJvcmRlci1yYWRpdXMtc206NnB4OwogIC0tYm9yZGVyLXJhZGl1cy1tZDoxMHB4OwogIC0tYm9yZGVyLXJhZGl1cy1sZzoxOHB4OwogIC0tc3BhY2luZy0xOjRweDsKICAtLXNwYWNpbmctMjo4cHg7CiAgLS1zcGFjaW5nLTM6MTJweDsKICAtLXNwYWNpbmctNDoxNnB4OwogIC0tc3BhY2luZy01OjIwcHg7CiAgLS1zcGFjaW5nLTY6MjRweDsKICAtLXNwYWNpbmctNzoyOHB4OwogIC0tc3BhY2luZy04OjMycHg7CiAgLS1zcGFjaW5nLTk6NDBweDsKICAtLXNwYWNpbmctMTA6NDhweDsKICAtLXNwYWNpbmctMTE6NTZweDsKICAtLXNwYWNpbmctMTI6NjRweDsKICAtLWZvbnQteHRyYToiTmV1ZSIsdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxibGlua21hY3N5c3RlbWZvbnQsIlNlZ29lIFVJIixyb2JvdG8sIkhlbHZldGljYSBOZXVlIixhcmlhbCwiTm90byBTYW5zIixzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7CiAgLS1kaXNwbGF5LTEtbWVkaXVtOjUwMCAzcmVtLzEuMiB2YXIoLS1mb250LXh0cmEpOwogIC0tZGlzcGxheS0yLW1lZGl1bTo1MDAgMi41cmVtLzEuMiB2YXIoLS1mb250LXh0cmEpOwogIC0tZGlzcGxheS0zLW1lZGl1bTo1MDAgMnJlbS8xLjIgdmFyKC0tZm9udC14dHJhKTsKICAtLXRpdGxlLTEtcmVndWxhcjo0MDAgMS41cmVtLzEuMyB2YXIoLS1mb250LXh0cmEpOwogIC0tdGl0bGUtMS1tZWRpdW06NTAwIDEuNXJlbS8xLjMgdmFyKC0tZm9udC14dHJhKTsKICAtLXRpdGxlLTItcmVndWxhcjo0MDAgMS4yNXJlbS8xLjIgdmFyKC0tZm9udC14dHJhKTsKICAtLXRpdGxlLTItbWVkaXVtOjUwMCAxLjI1cmVtLzEuMiB2YXIoLS1mb250LXh0cmEpOwogIC0tdGl0bGUtMy1yZWd1bGFyOjQwMCAxLjEyNXJlbS8xLjIgdmFyKC0tZm9udC14dHJhKTsKICAtLXRpdGxlLTMtbWVkaXVtOjUwMCAxLjEyNXJlbS8xLjIgdmFyKC0tZm9udC14dHJhKTsKICAtLWJvZHktMS1yZWd1bGFyOjQwMCAxLjEyNXJlbS8xLjUgdmFyKC0tZm9udC14dHJhKTsKICAtLWJvZHktMS1tZWRpdW06NTAwIDEuMTI1cmVtLzEuNSB2YXIoLS1mb250LXh0cmEpOwogIC0tYm9keS0yLXJlZ3VsYXI6NDAwIDFyZW0vMS4zIHZhcigtLWZvbnQteHRyYSk7CiAgLS1ib2R5LTItbWVkaXVtOjUwMCAxcmVtLzEuMyB2YXIoLS1mb250LXh0cmEpOwogIC0tc3VidGV4dC1yZWd1bGFyOjQwMCAwLjg3NXJlbS8xLjUgdmFyKC0tZm9udC14dHJhKTsKICAtLXN1YnRleHQtbWVkaXVtOjUwMCAwLjg3NXJlbS8xLjUgdmFyKC0tZm9udC14dHJhKTsKICAtLWxhYmVsLXJlZ3VsYXI6NDAwIDAuNjg3NXJlbS8xLjUgdmFyKC0tZm9udC14dHJhKTsKICAtLWxhYmVsLW1lZGl1bTo1MDAgMC42ODc1cmVtLzEuNSB2YXIoLS1mb250LXh0cmEpOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTgwMCk7CiAgZm9udDogdmFyKC0tYm9keS0yLXJlZ3VsYXIpOwogIGxldHRlci1zcGFjaW5nOiAuMDFlbTsKfQouc3Itb25seSB7CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICBib3JkZXItd2lkdGg6IDA7CiAgaGVpZ2h0OiAxcHg7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgcGFkZGluZzogMDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB3aWR0aDogMXB4Owp9Cjppcyg6cm9vdCwgOmhvc3QpICogewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIDpob3N0LAogIDpyb290IHsKICAgIGZvbnQ6IHZhcigtLWJvZHktMS1yZWd1bGFyKTsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL2F0b21zL0FuY2hvci9BbmNob3IuY3NzICovCi5hbmNob3IgewogIGJvcmRlci1yYWRpdXM6IDRweDsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXdlaWdodDogNTAwOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB3aWR0aDogLW1vei1maXQtY29udGVudDsKICB3aWR0aDogZml0LWNvbnRlbnQ7Cn0KLmFuY2hvci0taW5saW5lIHsKICBjb2xvcjogdmFyKC0tcHJpbWFyeS01MDApOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmFuY2hvci0taW5saW5lOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTcwMCk7CiAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIHZhcigtLXByaW1hcnktNzAwKTsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIHZhcigtLXByaW1hcnktNzAwKTsKICB9Cn0KLmFuY2hvci0taW5saW5lOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MCk7CiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLXByaW1hcnktNTApOwogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTcwMCk7Cn0KLmFuY2hvci0taW5saW5lOm5vdCg6YWN0aXZlKTpmb2N1cyB7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNzAwKTsKICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIHZhcigtLXByaW1hcnktNzAwKTsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB2YXIoLS1wcmltYXJ5LTcwMCk7Cn0KLmFuY2hvci0tbmV1dHJhbCB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmFuY2hvci0tbmV1dHJhbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC04MDApOwogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB2YXIoLS1uZXV0cmFsLTgwMCk7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB2YXIoLS1uZXV0cmFsLTgwMCk7CiAgfQp9Ci5hbmNob3ItLW5ldXRyYWw6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3gtc2hhZG93OiAwIDAgMCB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLW5ldXRyYWwtMDAwKSwgMCAwIDAgMTBweCB2YXIoLS1uZXV0cmFsLTgwMCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtODAwKTsKfQouYW5jaG9yLS1uZXV0cmFsOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogIGJveC1zaGFkb3c6IDAgMCAwIHZhcigtLXNwYWNpbmctMikgdmFyKC0tbmV1dHJhbC0xMDApOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTgwMCk7Cn0KLmFuY2hvci0tbmV1dHJhbDpmb2N1czphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMTAwKTsKICBib3gtc2hhZG93OiAwIDAgMCB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLW5ldXRyYWwtMTAwKSwgMCAwIDAgMTBweCB2YXIoLS1uZXV0cmFsLTgwMCk7Cn0KLmFuY2hvci0tcHJpbWFyeSB7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmFuY2hvci0tbmV1dHJhbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS03MDApOwogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB2YXIoLS1wcmltYXJ5LTcwMCk7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB2YXIoLS1wcmltYXJ5LTcwMCk7CiAgfQp9Ci5hbmNob3ItLXByaW1hcnk6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3gtc2hhZG93OiAwIDAgMCB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLW5ldXRyYWwtMDAwKSwgMCAwIDAgOS41cHggdmFyKC0tcHJpbWFyeS03MDApOwogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTcwMCk7Cn0KLmFuY2hvci0tcHJpbWFyeTphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTApOwogIGJveC1zaGFkb3c6IDAgMCAwIHZhcigtLXNwYWNpbmctMikgdmFyKC0tcHJpbWFyeS01MCk7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNzAwKTsKfQouYW5jaG9yLS1wcmltYXJ5OmZvY3VzOmFjdGl2ZSB7CiAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeS01MCk7CiAgYm94LXNoYWRvdzogMCAwIDAgdmFyKC0tc3BhY2luZy0yKSB2YXIoLS1wcmltYXJ5LTUwKSwgMCAwIDAgOS41cHggdmFyKC0tcHJpbWFyeS03MDApOwp9Ci5hbmNob3ItLWRpc2FibGVkIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgovKiBzcmMvY29tcG9uZW50cy9hdG9tcy9BdmF0YXIvQXZhdGFyLmNzcyAqLwouYXZhdGFyIHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtODAwKTsKICBkaXNwbGF5OiBmbGV4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmF2YXRhci0tc21hbGwgewogIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNpbmctMSk7CiAgZm9udC1zaXplOiAxMHB4OwogIGhlaWdodDogMjRweDsKICB3aWR0aDogMjRweDsKfQouYXZhdGFyLS1tZWRpdW0gewogIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNpbmctMik7CiAgZm9udC1zaXplOiAxOHB4OwogIGhlaWdodDogNDBweDsKICB3aWR0aDogNDBweDsKfQouYXZhdGFyLS1sYXJnZSB7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2luZy00KTsKICBmb250LXNpemU6IDQycHg7CiAgaGVpZ2h0OiAxMDBweDsKICB3aWR0aDogMTAwcHg7Cn0KLmF2YXRhcl9faW5pdGlhbHMgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLyogc3JjL2NvbXBvbmVudHMvYXRvbXMvQnV0dG9uL0J1dHRvbi5jc3MgKi8KLmJ1dHRvbiB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZm9udDogaW5oZXJpdDsKICBmb250LXdlaWdodDogNTAwOwogIGxldHRlci1zcGFjaW5nOiAuMDFlbTsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zKSB2YXIoLS1zcGFjaW5nLTgpOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogIHdpZHRoOiAxMDAlOwp9Ci5idXR0b24tLXByaW1hcnkgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuYnV0dG9uLS1wcmltYXJ5OmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNjAwKTsKICB9Cn0KLmJ1dHRvbi0tcHJpbWFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS02MDApOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1wcmltYXJ5LTYwMCksIGluc2V0IDAgMCAwIDVweCB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgb3V0bGluZTogbm9uZTsKfQouYnV0dG9uLS1wcmltYXJ5OmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS03MDApOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLmJ1dHRvbi0tZGlzYWJsZWQsCi5idXR0b24tLXByaW1hcnk6ZGlzYWJsZWQgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMjAwKTsKICBib3gtc2hhZG93OiBub25lOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQouYnV0dG9uLS1zZWNvbmRhcnkgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmJ1dHRvbi0tc2Vjb25kYXJ5OmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTApOwogIH0KfQouYnV0dG9uLS1zZWNvbmRhcnk6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTApOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgb3V0bGluZTogbm9uZTsKfQouYnV0dG9uLS1zZWNvbmRhcnk6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTEwMCk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLXByaW1hcnktNjAwKTsKICBjb2xvcjogdmFyKC0tcHJpbWFyeS02MDApOwp9Ci5idXR0b24tLXNlY29uZGFyeTpkaXNhYmxlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0yMDApOwogIGJveC1zaGFkb3c6IG5vbmU7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9Ci5idXR0b24tLXNlY29uZGFyeS0tZmlsbGVkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7Cn0KLmJ1dHRvbi0tdGVydGlhcnkgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zKSB2YXIoLS1zcGFjaW5nLTEpOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuYnV0dG9uLS1zZWNvbmRhcnk6aG92ZXIgewogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAxLjVweDsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIDEuNXB4OwogIH0KfQouYnV0dG9uLS10ZXJ0aWFyeTphY3RpdmUsCi5idXR0b24tLXRlcnRpYXJ5OmZvY3VzIHsKICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIDEuNXB4OwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIDEuNXB4Owp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuYnV0dG9uLS10ZXJ0aWFyeTpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS03MDApOwogIH0KfQouYnV0dG9uLS10ZXJ0aWFyeTpmb2N1cyB7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMS41cHggdmFyKC0tcHJpbWFyeS01MDApOwogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgb3V0bGluZTogbm9uZTsKfQouYnV0dG9uLS10ZXJ0aWFyeTphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTApOwogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLmJ1dHRvbi0tdGVydGlhcnk6ZGlzYWJsZWQsCi5idXR0b24tLXRlcnRpYXJ5W2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJveC1zaGFkb3c6IG5vbmU7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNDAwKTsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQouYnV0dG9uLS13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lcnJvci01MDApOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC5idXR0b24tLXdhcm5pbmc6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXJyb3ItNDAwKTsKICB9Cn0KLmJ1dHRvbi0td2FybmluZzpmb2N1cyB7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgM3B4IHZhcigtLWVycm9yLTQwMCksIGluc2V0IDAgMCAwIDVweCB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgb3V0bGluZTogbm9uZTsKfQouYnV0dG9uLS13YXJuaW5nOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXJyb3ItNDAwKTsKICBib3gtc2hhZG93OiBub25lOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuYnV0dG9uLS13YXJuaW5nOmZvY3VzOm5vdCg6aG92ZXIpIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWVycm9yLTUwMCk7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAzcHggdmFyKC0tZXJyb3ItNTAwKSwgaW5zZXQgMCAwIDAgNXB4IHZhcigtLW5ldXRyYWwtMDAwKTsKICB9Cn0KLmJ1dHRvbi0tbmV1dHJhbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmJ1dHRvbi0tbmV1dHJhbDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTEwMCk7CiAgfQp9Ci5idXR0b24tLW5ldXRyYWw6Zm9jdXMgewogIGJveC1zaGFkb3c6CiAgICBpbnNldCAwIDAgMCAxcHggdmFyKC0tcHJpbWFyeS0yMDApLAogICAgaW5zZXQgMCAwIDAgM3B4IHZhcigtLW5ldXRyYWwtMDAwKSwKICAgIGluc2V0IDAgMCAwIDRweCB2YXIoLS1wcmltYXJ5LTIwMCk7CiAgb3V0bGluZTogbm9uZTsKfQouYnV0dG9uLS1uZXV0cmFsOmFjdGl2ZSB7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLXByaW1hcnktNTAwKTsKfQouYnV0dG9uLS1uZXV0cmFsOmRpc2FibGVkIHsKICBvcGFjaXR5OiAuNjsKfQouYnV0dG9uLS1pY29uLS1wcmltYXJ5LAouYnV0dG9uLS1pY29uLS1zZWNvbmRhcnkgewogIGJvcmRlci1yYWRpdXM6IDRweDsKICBjb2xvcjogaW5oZXJpdDsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBwYWRkaW5nOiAwOwogIHdpZHRoOiBhdXRvOwp9Ci5idXR0b24tLWljb24tLXByaW1hcnkgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLmJ1dHRvbi0taWNvbi0tcHJpbWFyeVthcmlhLWRpc2FibGVkPXRydWVdIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuYnV0dG9uLS1pY29uLS1wcmltYXJ5OmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTcwMCk7CiAgfQp9Ci5idXR0b24tLWljb24tLXByaW1hcnk6Zm9jdXMgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBvdXRsaW5lOiBub25lOwp9Ci5idXR0b24tLWljb24tLXByaW1hcnk6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwKTsKfQouYnV0dG9uLS1pY29uLS1zZWNvbmRhcnkgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC5idXR0b24tLWljb24tLXNlY29uZGFyeTpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC04MDApOwogIH0KfQouYnV0dG9uLS1pY29uLS1zZWNvbmRhcnk6Zm9jdXMgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1uZXV0cmFsLTkwMCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKICBvdXRsaW5lOiBub25lOwp9Ci5idXR0b24tLWljb24tLXNlY29uZGFyeTphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMTAwKTsKfQouYnV0dG9uLS13aXRoLWljb24gewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IHZhcigtLXNwYWNpbmctMik7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmJ1dHRvbl9faWNvbiB7CiAgZGlzcGxheTogZmxleDsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmJ1dHRvbiB7CiAgICB3aWR0aDogYXV0bzsKICB9Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2UpIHsKICAuYnV0dG9uLmJ1dHRvbi0tcGVuZGluZyB7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgIHVzZXItc2VsZWN0OiBub25lOwogIH0KICAuYnV0dG9uLmJ1dHRvbi0tcGVuZGluZzphZnRlciB7CiAgICBhbmltYXRpb246IGJ1dHRvbi1zcGlubmVyIDFzIGVhc2UgaW5maW5pdGU7CiAgICBib3JkZXI6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJvcmRlci10b3A6IDRweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgICBjb250ZW50OiAiIjsKICAgIGhlaWdodDogMTZweDsKICAgIGluc2V0OiAwOwogICAgbWFyZ2luOiBhdXRvOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDE2cHg7CiAgfQogIC5idXR0b24tLXNlY29uZGFyeS5idXR0b24tLXBlbmRpbmc6YWZ0ZXIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MDApOwogIH0KICBAa2V5ZnJhbWVzIGJ1dHRvbi1zcGlubmVyIHsKICAgIDAlIHsKICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMHR1cm4pOwogICAgfQogICAgdG8gewogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybik7CiAgICB9CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9hdG9tcy9DYWxsVG9BY3Rpb24vQ2FsbFRvQWN0aW9uLmNzcyAqLwouY2FsbC10by1hY3Rpb24gewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7Cn0KLmNhbGwtdG8tYWN0aW9uX193cmFwcGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgZGlzcGxheTogZmxleDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouY2FsbC10by1hY3Rpb25fX2JhY2tncm91bmQgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzE3NTQnIGhlaWdodD0nMTc5NScgZmlsbD0nbm9uZSclM0UlM0NlbGxpcHNlIGN4PSc4NzYuOTIzJyBjeT0nOTM3LjQ1NycgZmlsbD0nJTIzMDA5QThFJyByeD0nMzQ5JyByeT0nODA1LjUnIHRyYW5zZm9ybT0ncm90YXRlKDYzLjkzMyA4NzYuOTIzIDkzNy40NTcpJy8lM0UlM0NwYXRoIHN0cm9rZT0nJTIzMTlCM0E4JyBzdHJva2Utd2lkdGg9JzInIGQ9J001OTQuMzA0IDEwMjcuMzlDNTA4Ljg2IDgxNS44NjggNDY3LjcyOSA2MDkuNzg2IDQ3MC4yNjcgNDQ3LjYxNGMxLjI2OS04MS4wODggMTMuNDU2LTE1MS4xNDcgMzYuNDM5LTIwNS40MDcgMjIuOTgyLTU0LjI1NiA1Ni43MjUtOTIuNjQ3IDEwMS4wODYtMTEwLjU2NiA0NC4zNjEtMTcuOTE5IDk1LjMwMi0xMy43MzYgMTQ5LjUxOSA5LjMzNiA1NC4yMjIgMjMuMDc0IDExMS42NDkgNjUuMDEzIDE2OC44ODIgMTIyLjQ3IDExNC40NjcgMTE0LjkxIDIyOC4wMDcgMjkxLjc0MiAzMTMuNDQ3IDUwMy4yNjggODUuNDUgMjExLjUyNSAxMjYuNTggNDE3LjYwNSAxMjQuMDQgNTc5Ljc3NS0xLjI3IDgxLjA5LTEzLjQ1IDE1MS4xNS0zNi40NCAyMDUuNDEtMjIuOTggNTQuMjYtNTYuNzIgOTIuNjUtMTAxLjA4IDExMC41Ny00NC4zNyAxNy45Mi05NS4zMSAxMy43My0xNDkuNTItOS4zNC01NC4yMy0yMy4wNy0xMTEuNjUzLTY1LjAxLTE2OC44ODYtMTIyLjQ3LTExNC40NjMtMTE0LjkxLTIyOC4wMDYtMjkxLjc0LTMxMy40NS01MDMuMjdaJy8lM0UlM0Mvc3ZnJTNFIik7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMwNHB4IC01MjZweDsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgY29udGVudDogIiI7CiAgaGVpZ2h0OiAxNzk0LjExcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxNzUzLjg1cHg7Cn0KLmNhbGwtdG8tYWN0aW9uX19jb250ZW50IHsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTgpIHZhcigtLXNwYWNpbmctNCkgNjRweCB2YXIoLS1zcGFjaW5nLTQpOwogIHdpZHRoOiAxMDAlOwogIHotaW5kZXg6IDQ7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIC5jYWxsLXRvLWFjdGlvbiB7CiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNpbmctOCk7CiAgfQogIC5jYWxsLXRvLWFjdGlvbl9fd3JhcHBlciB7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKTsKICB9CiAgLmNhbGwtdG8tYWN0aW9uX19iYWNrZ3JvdW5kIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0yNDZweCAtNjcxcHg7CiAgfQogIC5jYWxsLXRvLWFjdGlvbl9fY29udGVudCB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTgpIHZhcigtLXNwYWNpbmctMTIpOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvYXRvbXMvQ2hpcC9DaGlwLmNzcyAqLwouY2hpcC1ncm91cCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXdyYXA6IHdyYXA7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOwp9Ci5jaGlwLWdyb3VwLAouY2hpcF9faW5wdXQtd3JhcHBlciwKLmNoaXBfX2xhYmVsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmNoaXBfX2xhYmVsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbmV1dHJhbC0yMDApOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTgwMCk7CiAgY3Vyc29yOiBwb2ludGVyOwogIGRpc3BsYXk6IGZsZXg7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zKSB2YXIoLS1zcGFjaW5nLTgpOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLmNoaXBfX2lucHV0IHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7CiAgaW5zZXQ6IDA7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmNoaXBfX2lucHV0OmlzKDpjaGVja2VkLCA6Zm9jdXMsIDpmb2N1cy13aXRoaW4sIDphY3RpdmUpIHsKICBvdXRsaW5lOiBub25lOwp9Ci5jaGlwX19pbnB1dDpkaXNhYmxlZCArIC5jaGlwX19sYWJlbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0yMDApOwp9Ci5jaGlwX19pbnB1dDppcyg6Y2hlY2tlZCwgOmFjdGl2ZSkgKyAuY2hpcF9fbGFiZWwgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBib3gtc2hhZG93OiBub25lOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC5jaGlwX19pbnB1dDpub3QoOmRpc2FibGVkLCA6Zm9jdXMtd2l0aGluLCA6YWN0aXZlLCA6Y2hlY2tlZCk6aG92ZXIgKyAuY2hpcF9fbGFiZWwgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogIH0KfQouY2hpcF9faW5wdXQ6Y2hlY2tlZDpmb2N1cy12aXNpYmxlICsgLmNoaXBfX2xhYmVsIHsKICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAzcHggdmFyKC0tcHJpbWFyeS01MDApLCBpbnNldCAwIDAgMCA1cHggdmFyKC0tbmV1dHJhbC0wMDApOwp9Ci5jaGlwX19pbnB1dDpub3QoOmRpc2FibGVkKTppcyg6Y2hlY2tlZCwgOmFjdGl2ZSwgOmZvY3VzLCA6Zm9jdXMtd2l0aGluKSArIC5jaGlwX19sYWJlbCB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2UpIHsKICAuY2hpcF9fbGFiZWwgewogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuMTVzOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvYXRvbXMvSW5wdXRGaWVsZC9JbnB1dEZpZWxkLmNzcyAqLwouaW5wdXQgewogIGJhY2tncm91bmQ6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKICBmb250OiB2YXIoLS1ib2R5LTItcmVndWxhcik7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zKSB2YXIoLS1zcGFjaW5nLTQpOwogIHdpZHRoOiAxMDAlOwp9Ci5pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNDAwKTsKfQouaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwp9Ci5pbnB1dC0tc3VjY2VzIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hbGVydC1zdWNjZXMtNTAwKTsKfQouaW5wdXRbYXJpYS1pbnZhbGlkPXRydWVdIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1lcnJvci01MDApOwp9Ci5pbnB1dDpkaXNhYmxlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7CiAgY3Vyc29yOiBkZWZhdWx0Owp9Ci5pbnB1dDppcyg6Zm9jdXMsIDpmb2N1cy13aXRoaW4sIDphY3RpdmUpIHsKICBvdXRsaW5lOiBub25lOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuaW5wdXRfX3dyYXBwZXI6aG92ZXIgLmlucHV0Om5vdCg6LW1vei1yZWFkLW9ubHksIDpkaXNhYmxlZCkgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTMwMCk7CiAgfQogIC5pbnB1dDpob3Zlcjpub3QoOmRpc2FibGVkKSwKICAuaW5wdXRfX3dyYXBwZXI6aG92ZXIgLmlucHV0Om5vdCg6cmVhZC1vbmx5LCA6ZGlzYWJsZWQpIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeS0zMDApOwogIH0KfQouaW5wdXRfX3dyYXBwZXIgLmlucHV0OmlzKDpmb2N1cywgOmFjdGl2ZSk6bm90KDotbW96LXJlYWQtb25seSwgOmRpc2FibGVkKSB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLmlucHV0X193cmFwcGVyIC5pbnB1dDppcyg6Zm9jdXMsIDphY3RpdmUpOm5vdCg6cmVhZC1vbmx5LCA6ZGlzYWJsZWQpIHsKICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQouaW5wdXQtLXdpdGgtcHJlZml4IHsKICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2luZy00KSoyICsgMjRweCk7Cn0KLmlucHV0LS13aXRoLXN1ZmZpeCB7CiAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1zcGFjaW5nLTQpKjIgKyAyNHB4KTsKfQouaW5wdXRfX3ByZWZpeCwKLmlucHV0X19zdWZmaXggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKICBkaXNwbGF5OiBmbGV4OwogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBoZWlnaHQ6IDEwMCU7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAyNHB4Owp9Ci5pbnB1dF9fcHJlZml4IHsKICBsZWZ0OiB2YXIoLS1zcGFjaW5nLTQpOwp9Ci5pbnB1dF9fc3VmZml4IHsKICByaWdodDogdmFyKC0tc3BhY2luZy00KTsKfQppbnB1dFt0eXBlPWRhdGVdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3IgewogIGJhY2tncm91bmQ6IG5vbmU7CiAgaGVpZ2h0OiAyNHB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogdmFyKC0tc3BhY2luZy00KTsKICB3aWR0aDogMjRweDsKICB6LWluZGV4OiAxOwp9CmlucHV0W3R5cGU9ZGF0ZV0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKfQppbnB1dDo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVlIHsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci5pbnB1dF9fc3VmZml4ICsgaW5wdXRbdHlwZT1kYXRlXTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmlucHV0X193cmFwcGVyIHsKICBkaXNwbGF5OiBmbGV4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLyogc3JjL2NvbXBvbmVudHMvYXRvbXMvU3RhdHVzQ2hpcC9TdGF0dXNDaGlwLmNzcyAqLwouc3RhdHVzLWNoaXAgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN0YXR1cy1jaGlwLWJhY2tncm91bmQtY29sb3IpOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBjb2xvcjogdmFyKC0tc3RhdHVzLWNoaXAtY29sb3IpOwogIGZvbnQ6IHZhcigtLXN1YnRleHQtbWVkaXVtKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTEpIHZhcigtLXNwYWNpbmctMik7Cn0KLnN0YXR1cy1jaGlwLS1zdWNjZXNzIHsKICAtLXN0YXR1cy1jaGlwLWJhY2tncm91bmQtY29sb3I6dmFyKC0tc3VjY2Vzcy01MDApOwogIC0tc3RhdHVzLWNoaXAtY29sb3I6dmFyKC0tbmV1dHJhbC0wMDApOwp9Ci5zdGF0dXMtY2hpcC0td2FybmluZyB7CiAgLS1zdGF0dXMtY2hpcC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXdhcm5pbmctNTAwKTsKICAtLXN0YXR1cy1jaGlwLWNvbG9yOnZhcigtLW5ldXRyYWwtMDAwKTsKfQouc3RhdHVzLWNoaXAtLWVycm9yIHsKICAtLXN0YXR1cy1jaGlwLWJhY2tncm91bmQtY29sb3I6dmFyKC0tZXJyb3ItNTAwKTsKICAtLXN0YXR1cy1jaGlwLWNvbG9yOnZhcigtLW5ldXRyYWwtMDAwKTsKfQouc3RhdHVzLWNoaXAtLWRpc2FibGVkIHsKICAtLXN0YXR1cy1jaGlwLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbmV1dHJhbC00MDApOwogIC0tc3RhdHVzLWNoaXAtY29sb3I6dmFyKC0tbmV1dHJhbC0wMDApOwp9CgovKiBzcmMvY29tcG9uZW50cy9hdG9tcy9Td2l0Y2gvU3dpdGNoLmNzcyAqLwouc3dpdGNoX19sYWJlbCB7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5zd2l0Y2hfX3RodW1iIHsKICAtLXN3aXRjaC13aWR0aDo1MXB4OwogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tcHJpbWFyeS01MDApIDUwJSwgdmFyKC0tbmV1dHJhbC0yMDApIDUwJSk7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJTsKICBiYWNrZ3JvdW5kLXNpemU6IDIwMCU7CiAgYm9yZGVyLXJhZGl1czogMjRweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgaGVpZ2h0OiAzMXB4OwogIG1hcmdpbjogMDsKICBtaW4td2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7CiAgcGFkZGluZzogMDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7Cn0KLnN3aXRjaF9fdGh1bWIsCmJ1dHRvbi5zd2l0Y2hfX3RodW1iIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KYnV0dG9uLnN3aXRjaF9fdGh1bWIgewogIGJvcmRlcjogbm9uZTsKfQouc3dpdGNoX190aHVtYjpjaGVja2VkLAouc3dpdGNoX190aHVtYltkYXRhLXN0YXRlPWNoZWNrZWRdIHsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwOwp9Ci5zd2l0Y2hfX3RodW1iOmFmdGVyIHsKICAtLXN3aXRjaC10aHVtYi13aWR0aDoyN3B4OwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgYm94LXNoYWRvdzogMCAzcHggOHB4IHJnYmEoMCwgMCwgMCwgLjE1KSwgMCAzcHggMXB4IHJnYigwIDAgMC82JSk7CiAgY29udGVudDogIiI7CiAgaGVpZ2h0OiAyN3B4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDJweDsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KTsKICB3aWR0aDogdmFyKC0tc3dpdGNoLXRodW1iLXdpZHRoKTsKfQpidXR0b24uc3dpdGNoX190aHVtYjphZnRlciB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMy41cHggLSB2YXIoLS1zd2l0Y2gtdGh1bWItd2lkdGgpKSk7Cn0KLnN3aXRjaF9fdGh1bWI6Y2hlY2tlZDphZnRlciB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGModmFyKC0tc3dpdGNoLXdpZHRoKSAtIHZhcigtLXN3aXRjaC10aHVtYi13aWR0aCkgLSAycHgpKTsKfQpidXR0b24uc3dpdGNoX190aHVtYltkYXRhLXN0YXRlPWNoZWNrZWRdOmFmdGVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMuNXB4KTsKfQouc3dpdGNoX19sYWJlbC0tZGlzYWJsZWQgewogIGN1cnNvcjogZGVmYXVsdDsKfQouc3dpdGNoX190aHVtYjpkaXNhYmxlZCB7CiAgYmFja2dyb3VuZDogdmFyKC0tbmV1dHJhbC0xMDApOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLnN3aXRjaF9fdGh1bWI6ZGlzYWJsZWQ6YWZ0ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3gtc2hhZG93OiBub25lOwp9CkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpuby1wcmVmZXJlbmNlKSB7CiAgLnN3aXRjaF9fdGh1bWIgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNzVtczsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtcG9zaXRpb247CiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICB9CiAgLnN3aXRjaF9fdGh1bWI6YWZ0ZXIgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjE1czsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL2F0b21zL1RleHRBcmVhL1RleHRBcmVhLmNzcyAqLwoudGV4dC1hcmVhIHsKICBib3JkZXI6IG5vbmU7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1uZXV0cmFsLTQwMCk7CiAgZm9udDogdmFyKC0tYm9keS0yLXJlZ3VsYXIpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMyk7Cn0KLnRleHQtYXJlYVthcmlhLWludmFsaWQ9dHJ1ZV0gewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1lcnJvci01MDApOwp9Ci50ZXh0LWFyZWE6Oi1tb3otcGxhY2Vob2xkZXIgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTQwMCk7Cn0KLnRleHQtYXJlYTo6cGxhY2Vob2xkZXIgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTQwMCk7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC50ZXh0LWFyZWE6aG92ZXIgewogICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLXByaW1hcnktMzAwKTsKICB9Cn0KLnRleHQtYXJlYTpmb2N1cyB7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLXByaW1hcnktNTAwKTsKICBvdXRsaW5lOiBub25lOwp9CgovKiBzcmMvY29tcG9uZW50cy9hdG9tcy9Vbm9yZGVyZWRMaXN0L1Vub3JkZXJlZExpc3QuY3NzICovCi51bm9yZGVyZWQtbGlzdC0tY2hlY2sgPiBsaSB7CiAgLS1tb2JpbGUtY2hlY2s6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnIGZpbGw9J25vbmUnJTNFJTNDcGF0aCBmaWxsPSclMjMwMEFCOUUnIGQ9J004LjAwMi4wMzdjNC41MDQuNTMyIDkuMjc1IDEuODEgMTMuNDQzIDMuNjAyLjg5NC4zODUgMS41OTYuOTYgMi4wNCAxLjczLjQ0NC43Ny41OTIgMS42NjUuNDc4IDIuNjMyLS41MzIgNC41MDUtMS44MSA5LjI3Ni0zLjYwMiAxMy40NDMtLjM4NC44OTUtLjk2IDEuNTk3LTEuNzMgMi4wNDEtLjc3LjQ0NC0xLjY2NS41OTItMi42MzIuNDc4LTQuNTA1LS41MzItOS4yNzYtMS44MS0xMy40NDMtMy42MDItLjg5NS0uMzg1LTEuNTk3LS45Ni0yLjA0MS0xLjczLS40NDQtLjc3LS41OTItMS42NjUtLjQ3OC0yLjYzMy41MzItNC41MDQgMS44MS05LjI3NiAzLjYwMi0xMy40NDMuMzg1LS44OTQuOTYtMS41OTYgMS43My0yLjA0QzYuMTQuMDcgNy4wMzQtLjA3NyA4LjAwMi4wMzdaJy8lM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMS4yNScgZD0nTTE3LjMzMyA4LjMzMyAxMCAxNS42NjZsLTMuMzMzLTMuMzMzJy8lM0UlM0Mvc3ZnJTNFIik7CiAgLS1kZXNrdG9wLWNoZWNrOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzMyJyBoZWlnaHQ9JzMyJyBmaWxsPSdub25lJyB2aWV3Qm94PScwIDAgMjQgMjQnJTNFJTNDcGF0aCBmaWxsPSclMjMwMEFCOUUnIGQ9J004LjAwMi4wMzdjNC41MDQuNTMyIDkuMjc1IDEuODEgMTMuNDQzIDMuNjAyLjg5NC4zODUgMS41OTYuOTYgMi4wNCAxLjczLjQ0NC43Ny41OTIgMS42NjUuNDc4IDIuNjMyLS41MzIgNC41MDUtMS44MSA5LjI3Ni0zLjYwMiAxMy40NDMtLjM4NC44OTUtLjk2IDEuNTk3LTEuNzMgMi4wNDEtLjc3LjQ0NC0xLjY2NS41OTItMi42MzIuNDc4LTQuNTA1LS41MzItOS4yNzYtMS44MS0xMy40NDMtMy42MDItLjg5NS0uMzg1LTEuNTk3LS45Ni0yLjA0MS0xLjczLS40NDQtLjc3LS41OTItMS42NjUtLjQ3OC0yLjYzMy41MzItNC41MDQgMS44MS05LjI3NiAzLjYwMi0xMy40NDMuMzg1LS44OTQuOTYtMS41OTYgMS43My0yLjA0QzYuMTQuMDcgNy4wMzQtLjA3NyA4LjAwMi4wMzdaJy8lM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMS4yNScgZD0nTTE3LjMzMyA4LjMzMyAxMCAxNS42NjZsLTMuMzMzLTMuMzMzJy8lM0UlM0Mvc3ZnJTNFIik7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogdmFyKC0tc3BhY2luZy0zKTsKfQoudW5vcmRlcmVkLWxpc3QtLWNoZWNrID4gbGk6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1tb2JpbGUtY2hlY2spOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgY29udGVudDogIiI7CiAgaGVpZ2h0OiAyNHB4OwogIHdpZHRoOiAyNHB4Owp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAudW5vcmRlcmVkLWxpc3QtLWNoZWNrID4gbGk6YmVmb3JlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWRlc2t0b3AtY2hlY2spOwogICAgaGVpZ2h0OiAzMnB4OwogICAgd2lkdGg6IDMycHg7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2FyZC9DYXJkQWN0aW9uL0NhcmRBY3Rpb24uY3NzICovCi5jYXJkX19oZWFkZXJfX2FjdGlvbiB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGZvbnQ6IHZhcigtLXN1YnRleHQtbWVkaXVtKTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmRfX2hlYWRlcl9fYWN0aW9uIHsKICAgIGZvbnQ6IHZhcigtLWJvZHktMS1tZWRpdW0pOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NhcmQvQ2FyZEJvZHkvQ2FyZEJvZHkuY3NzICovCi5jYXJkX19ib2R5IHsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTQpOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuY2FyZF9fYm9keSB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NhcmQvQ2FyZEVtcHR5U3RhdGUvQ2FyZEVtcHR5U3RhdGUuY3NzICovCi5jYXJkX19lbXB0eS1zdGF0ZSB7CiAgLS1jYXJkLWVtcHR5LXN0YXRlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbmV1dHJhbC0xMDApOwogIC0tY2FyZC1lbXB0eS1zdGF0ZS1pY29uLWNvbG9yOnZhcigtLW5ldXRyYWwtODAwKTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC03MDApOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7Cn0KLmNhcmRfX2VtcHR5LXN0YXRlLS1lcnJvciB7CiAgLS1jYXJkLWVtcHR5LXN0YXRlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tZXJyb3ItMjAwKTsKICAtLWNhcmQtZW1wdHktc3RhdGUtaWNvbi1jb2xvcjp2YXIoLS1lcnJvci01MDApOwp9Ci5jYXJkX19lbXB0eS1zdGF0ZS0tc3RhbmRhbG9uZSB7CiAgcGFkZGluZzogMDsKfQouY2FyZF9fZW1wdHktc3RhdGVfX3dyYXBwZXIgewogIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jYXJkLWVtcHR5LXN0YXRlLWJhY2tncm91bmQtY29sb3IpOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWFyZ2luOiBhdXRvOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNik7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5jYXJkX19lbXB0eS1zdGF0ZS0tc3RhbmRhbG9uZSAuY2FyZF9fZW1wdHktc3RhdGVfX3dyYXBwZXIgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgYm9yZGVyLXJhZGl1czogMDsKICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggdmFyKC0tbmV1dHJhbC0yMDApOwogIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTQpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQouY2FyZF9fZW1wdHktc3RhdGVfX2ljb24sCi5jYXJkX19lbXB0eS1zdGF0ZV9fdGl0bGUgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTgwMCk7Cn0KLmNhcmRfX2VtcHR5LXN0YXRlX19pY29uIHsKICBjb2xvcjogdmFyKC0tY2FyZC1lbXB0eS1zdGF0ZS1pY29uLWNvbG9yKTsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMyk7Cn0KLmNhcmRfX2VtcHR5LXN0YXRlX190aXRsZSB7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTIpOwp9Ci5jYXJkX19lbXB0eS1zdGF0ZS0tc3RhbmRhbG9uZSA6aXMoLmNhcmRfX2VtcHR5LXN0YXRlX190aXRsZSwgLmNhcmRfX2VtcHR5LXN0YXRlX19kZXNjcmlwdGlvbikgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIC5jYXJkX19lbXB0eS1zdGF0ZSB7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1jYXJkLWJvcmRlci1yYWRpdXMpOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWNhcmQtYm9yZGVyLXJhZGl1cyk7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOwogIH0KICAuY2FyZF9fZW1wdHktc3RhdGUtLXN0YW5kYWxvbmUgewogICAgcGFkZGluZzogMDsKICB9CiAgLmNhcmRfX2VtcHR5LXN0YXRlX193cmFwcGVyIHsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctOCk7CiAgfQogIC5jYXJkX19lbXB0eS1zdGF0ZS0tc3RhbmRhbG9uZSAuY2FyZF9fZW1wdHktc3RhdGVfX3dyYXBwZXIgewogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLW5ldXRyYWwtMjAwKTsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNik7CiAgfQogIC5jYXJkX19lbXB0eS1zdGF0ZV9fZGVzY3JpcHRpb24sCiAgLmNhcmRfX2VtcHR5LXN0YXRlX190aXRsZSB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1heC13aWR0aDogNTI1cHg7CiAgfQogIC5jYXJkX19lbXB0eS1zdGF0ZS0tc3RhbmRhbG9uZSA6aXMoLmNhcmRfX2VtcHR5LXN0YXRlX190aXRsZSwgLmNhcmRfX2VtcHR5LXN0YXRlX19kZXNjcmlwdGlvbikgewogICAgbWF4LXdpZHRoOiB1bnNldDsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmRGb290ZXIvQ2FyZEZvb3Rlci5jc3MgKi8KLmNhcmRfX2Zvb3RlciB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmRfX2Zvb3RlciB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NhcmQvQ2FyZEhlYWRlci9DYXJkSGVhZGVyLmNzcyAqLwouY2FyZF9faGVhZGVyIHsKICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggdmFyKC0tbmV1dHJhbC0yMDApOwogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7Cn0KLmNhcmRfX2hlYWRlci0tc3RpY2t5IHsKICAtLWNhcmQtaGVhZGVyLXN0aWNreS10b3A6MDsKICBwb3NpdGlvbjogc3RpY2t5OwogIHRvcDogdmFyKC0tY2FyZC1oZWFkZXItc3RpY2t5LXRvcCk7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmRfX2hlYWRlciB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOwogIH0KICAuY2FyZF9faGVhZGVyLmNhcmRfX2hlYWRlci0tdGFicyB7CiAgICBwYWRkaW5nOiAwOwogIH0KICAuY2FyZF9faGVhZGVyLmNhcmRfX2hlYWRlci0tdGFicyAudGFicyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmRJdGVtL0NhcmRJdGVtLmNzcyAqLwouY2FyZF9fYm9keV9faXRlbSB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGdhcDogdmFyKC0tc3BhY2luZy02KTsKfQouY2FyZF9fYm9keSAuY2FyZF9fYm9keV9faXRlbTpub3QoOmxhc3Qtb2YtdHlwZSkgewogIG1hcmdpbi1ib3R0b206IDE2cHg7Cn0KLmNhcmRfX2JvZHkgPiAuY2FyZF9fYm9keV9faXRlbTpvbmx5LW9mLXR5cGUgewogIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOwp9Ci5jYXJkX19ib2R5X19pdGVtIC5saXN0LWl0ZW0ubGlzdC1pdGVtLS13aXRoLWRpdmlkZXIgewogIGJveC1zaGFkb3c6CiAgICBpbnNldCAxcHggMCAwIHZhcigtLW5ldXRyYWwtMjAwKSwKICAgIGluc2V0IC0xcHggMCAwIHZhcigtLW5ldXRyYWwtMjAwKSwKICAgIGluc2V0IDAgLTFweCB2YXIoLS1uZXV0cmFsLTIwMCk7Cn0KLmNhcmRfX2JvZHlfX2l0ZW06bGFzdC1vZi10eXBlIC5saXN0LWl0ZW0tLXdpdGgtZGl2aWRlciB7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuY2FyZF9fYm9keSAuY2FyZF9fYm9keV9faXRlbSB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTQpIDA7CiAgfQogIC5jYXJkX19ib2R5IC5jYXJkX19ib2R5X19pdGVtOm5vdCg6bGFzdC1vZi10eXBlKSB7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggdmFyKC0tbmV1dHJhbC0yMDApOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgLmNhcmRfX2JvZHkgLmNhcmRfX2JvZHlfX2l0ZW06Zmlyc3Qtb2YtdHlwZSB7CiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy04KTsKICB9CiAgLmNhcmRfX2JvZHkgLmNhcmRfX2JvZHlfX2l0ZW06bGFzdC1vZi10eXBlIHsKICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTgpOwogIH0KICAuY2FyZF9fYm9keSAuY2FyZF9fYm9keV9faXRlbTpub3QoOmxhc3Qtb2YtdHlwZSwgOmZpcnN0LW9mLXR5cGUpIHsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctOCkgMDsKICB9CiAgLmNhcmRfX2JvZHkgLmNhcmRfX2JvZHlfX2l0ZW06b25seS1vZi10eXBlIHsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCkgMDsKICB9CiAgLmNhcmRfX2JvZHkgLmNhcmRfX2JvZHlfX2l0ZW06b25seS1jaGlsZCB7CiAgICBwYWRkaW5nOiAwOwogIH0KICAuY2FyZF9fYm9keSA+IC5jYXJkX19ib2R5X19pdGVtOm9ubHktb2YtdHlwZSB7CiAgICBwYWRkaW5nLXRvcDogMDsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmRTdWJ0aXRsZS9DYXJkU3VidGl0bGUuY3NzICovCi5jYXJkX19ib2R5X19zdWJ0aXRsZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogIGJveC1zaGFkb3c6IGluc2V0IC0xcHggMCB2YXIoLS1uZXV0cmFsLTIwMCksIGluc2V0IDFweCAwIHZhcigtLW5ldXRyYWwtMjAwKTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApOwogIGZvbnQ6IHZhcigtLXN1YnRleHQtcmVndWxhcik7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmRfX2JvZHlfX3N1YnRpdGxlIHsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCkgdmFyKC0tc3BhY2luZy02KTsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmRUaXRsZS9DYXJkVGl0bGUuY3NzICovCi5jYXJkX19oZWFkZXJfX3RpdGxlIHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7CiAgZGlzcGxheTogZmxleDsKICBmb250OiB2YXIoLS10aXRsZS0zLXJlZ3VsYXIpOwogIGdhcDogdmFyKC0tc3BhY2luZy0yKTsKfQouY2FyZF9faGVhZGVyX190aXRsZV9faWNvbiB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmRfX2hlYWRlcl9fdGl0bGUgewogICAgZm9udDogdmFyKC0tdGl0bGUtMi1yZWd1bGFyKTsKICAgIGdhcDogdmFyKC0tc3BhY2luZy00KTsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmQuY3NzICovCi5jYXJkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IHZhcigtLW5ldXRyYWwtMjAwKSwgaW5zZXQgMCAxcHggdmFyKC0tbmV1dHJhbC0yMDApOwp9Ci5jYXJkLS1kaXNhYmxlZCAqIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC01MDApICFpbXBvcnRhbnQ7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIC5jYXJkIHsKICAgIC0tY2FyZC1ib3JkZXItcmFkaXVzOnZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2FyZC1ib3JkZXItcmFkaXVzKTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgICBoZWlnaHQ6IC1tb3otZml0LWNvbnRlbnQ7CiAgICBoZWlnaHQ6IGZpdC1jb250ZW50OwogIH0KICB1bC5jYXJkIC5saXN0LWl0ZW0gewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgfQogIHVsLmNhcmQgLmxpc3QtaXRlbSA+IDppcyhhLCBidXR0b24pOmZvY3VzIHsKICAgIGJveC1zaGFkb3c6CiAgICAgIGluc2V0IDAgMCAwIDFweCB2YXIoLS1uZXV0cmFsLTIwMCksCiAgICAgIGluc2V0IDAgMCAwIDNweCB2YXIoLS1uZXV0cmFsLTAwMCksCiAgICAgIGluc2V0IDAgMCAwIDVweCB2YXIoLS1wcmltYXJ5LTIwMCk7CiAgfQogIHVsLmNhcmQgOmlzKC5saXN0LWl0ZW06Zmlyc3Qtb2YtdHlwZSwgLmxpc3QtaXRlbTpmaXJzdC1vZi10eXBlIGEpIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogIH0KICB1bC5jYXJkIDppcygubGlzdC1pdGVtOmxhc3Qtb2YtdHlwZSwgLmxpc3QtaXRlbTpsYXN0LW9mLXR5cGUgYSkgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2FyZC9DYXJkSW1hZ2VWYXJpYW50LmNzcyAqLwouY2FyZC0taW1hZ2UgewogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWFyZ2luOiBhdXRvOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5jYXJkLS1pbWFnZSwKLmNhcmQtLWltYWdlIC5jYXJkX19pbGx1c3RyYXRpb24gewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKfQouY2FyZC0taW1hZ2UgLmNhcmRfX2hlYWRlcl9fdGl0bGUgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7CiAgZm9udDogdmFyKC0tdGl0bGUtMi1tZWRpdW0pOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMikgMDsKfQouY2FyZC0taW1hZ2UgLmNhcmRfX2JvZHkgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZvbnQ6IHZhcigtLWJvZHktMS1yZWd1bGFyKTsKICBtYXJnaW46IDAgYXV0byB2YXIoLS1zcGFjaW5nLTYpOwogIG1heC13aWR0aDogNDIwcHg7CiAgcGFkZGluZzogMDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLmNhcmQtLWltYWdlIC5jYXJkX19mb290ZXIgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBwYWRkaW5nOiAwOwogIHdpZHRoOiAxMDAlOwp9Ci5jYXJkLS1pbWFnZSAuY2FyZF9fZm9vdGVyID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTQpOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuY2FyZC0taW1hZ2UgewogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy02KSB2YXIoLS1zcGFjaW5nLTgpIHZhcigtLXNwYWNpbmctMTEpOwogIH0KICAuY2FyZC0taW1hZ2UgLmNhcmRfX2Zvb3RlciB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogIH0KICAuY2FyZC0taW1hZ2UgLmNhcmRfX2Zvb3RlciA+IDpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICBtYXJnaW46IDA7CiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy00KTsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmRMaXN0L0NhcmRMaXN0LmNzcyAqLwouY2FyZC1saXN0ID4gLmNhcmQ6bm90KDpsYXN0LWNoaWxkKSB7CiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmQtbGlzdCB7CiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNpbmctOCk7CiAgfQogIC5jYXJkLWxpc3QgPiAuY2FyZDpub3QoOmxhc3QtY2hpbGQpIHsKICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNik7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hlY2tib3gvQ2hlY2tib3guY3NzICovCi5jaGVja2JveCB7CiAgLS1jaGVja2JveC13aWR0aDoyNHB4OwogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTQpOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgOmlzKC5jaGVja2JveF9faW5wdXQsIC5jaGVja2JveF9fbGFiZWwpOmhvdmVyIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICB9Cn0KLmNoZWNrYm94LS1uZXV0cmFsLAouY2hlY2tib3gtLXByaW1hcnkgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLmNoZWNrYm94X19jb250ZW50IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZm9udDogdmFyKC0tYm9keS0xLXJlZ3VsYXIpOwogIGdhcDogdmFyKC0tc3BhY2luZy0yKTsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQouY2hlY2tib3hfX3NwaW5uZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnktNTAwKTsKfQouY2hlY2tib3hfX2NoZWNrLAouY2hlY2tib3hfX3NwaW5uZXIgewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW5ldXRyYWwtMzAwKTsKICBib3JkZXItcmFkaXVzOiA2cHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGhlaWdodDogdmFyKC0tY2hlY2tib3gtd2lkdGgpOwogIG1pbi13aWR0aDogdmFyKC0tY2hlY2tib3gtd2lkdGgpOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgdmlzaWJpbGl0eTogdW5zZXQ7Cn0KLmNoZWNrYm94LmNoZWNrYm94LS1lcnJvciAuY2hlY2tib3hfX2NoZWNrIHsKICBib3JkZXItY29sb3I6IHZhcigtLWVycm9yLTUwMCk7Cn0KLmNoZWNrYm94X19pbnB1dCB7CiAgaGVpZ2h0OiB2YXIoLS1jaGVja2JveC13aWR0aCk7CiAgbWFyZ2luOiAwOwogIG9wYWNpdHk6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiB2YXIoLS1jaGVja2JveC13aWR0aCk7CiAgei1pbmRleDogMTA7Cn0KLmNoZWNrYm94X19pbnB1dCB+IC5jaGVja2JveF9fY2hlY2sgcGF0aCB7CiAgc3Ryb2tlOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC03NTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmNoZWNrYm94X19pbnB1dDpob3ZlciB+IC5jaGVja2JveF9fY2hlY2sgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MCk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICB9Cn0KLmNoZWNrYm94X19pbnB1dDpmb2N1cy13aXRoaW4gfiAuY2hlY2tib3hfX2NoZWNrIHsKICBvdXRsaW5lOiAxcHggc29saWQgdmFyKC0tcHJpbWFyeS01MDApOwogIG91dGxpbmUtb2Zmc2V0OiAycHg7Cn0KLmNoZWNrYm94X19pbnB1dDpub3QoOmluZGV0ZXJtaW5hdGUpOmlzKDpjaGVja2VkLCBbYXJpYS1jaGVja2VkPXRydWVdKSB+IC5jaGVja2JveF9fY2hlY2sgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQouY2hlY2tib3hfX2lucHV0Om5vdCg6aW5kZXRlcm1pbmF0ZSk6aXMoOmNoZWNrZWQsIFthcmlhLWNoZWNrZWQ9dHJ1ZV0pIH4gLmNoZWNrYm94X19jaGVjayBwYXRoIHsKICBzdHJva2UtZGFzaG9mZnNldDogMDsKfQouY2hlY2tib3hfX2lucHV0Om5vdCg6aW5kZXRlcm1pbmF0ZSk6ZGlzYWJsZWQgfiAuY2hlY2tib3hfX2NoZWNrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTMwMCk7Cn0KLmNoZWNrYm94X19sYWJlbCB7CiAgZm9udDogdmFyKC0tYm9keS0xLXJlZ3VsYXIpOwp9Ci5jaGVja2JveF9faGludCB7CiAgZm9udDogdmFyKC0tYm9keS0yLXJlZ3VsYXIpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQouY2hlY2tib3hfX2Vycm9yIHsKICBjb2xvcjogdmFyKC0tZXJyb3ItNTAwKTsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwp9Ci5jaGVja2JveF9faW5wdXQ6aW5kZXRlcm1pbmF0ZSB7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2UpIHsKICAuY2hlY2tib3hfX2NoZWNrIHsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjI1cyBlYXNlLWluLW91dDsKICB9CiAgLmNoZWNrYm94X19jaGVjayBwYXRoIHsKICAgIHRyYW5zaXRpb246IHN0cm9rZS1kYXNob2Zmc2V0IC4zNXMgZWFzZS1vdXQ7CiAgfQogIC5jaGVja2JveF9fc3Bpbm5lciBjaXJjbGU6bGFzdC1vZi10eXBlIHsKICAgIGFuaW1hdGlvbjogYnV0dG9uLXNwaW5uZXIgMXMgZWFzZSBpbmZpbml0ZTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICB9CiAgQGtleWZyYW1lcyBjaGVja2JveC1zcGlubmVyIHsKICAgIDAlIHsKICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMHR1cm4pOwogICAgfQogICAgdG8gewogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybik7CiAgICB9CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ29tYm9ib3gvQ29tYm9ib3guY3NzICovCi5jb21ib2JveCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CnVsW3JvbGU9bGlzdGJveF0uY29tYm9ib3hfX2xpc3QtLW9wZW4gewogIGRpc3BsYXk6IGJsb2NrOwp9CnVsW3JvbGU9bGlzdGJveF0gewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBkaXNwbGF5OiBub25lOwogIGZpbHRlcjogZHJvcC1zaGFkb3coMCAzcHggOHB4IHJnYig0NiA1OSA4Ni8xMCUpKTsKICBmb250OiB2YXIoLS1ib2R5LTItcmVndWxhcik7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTEpOwogIG1heC1oZWlnaHQ6IDE2NXB4OwogIG92ZXJmbG93OiBzY3JvbGw7CiAgb3ZlcmZsb3cteDogaGlkZGVuOwogIHBhZGRpbmc6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxMDAlOwogIHotaW5kZXg6IDEwMDA7Cn0KdWxbcm9sZT1saXN0Ym94XSBsaVtyb2xlPW9wdGlvbl0gewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTQwMCk7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zKSB2YXIoLS1zcGFjaW5nLTQpOwp9CnVsW3JvbGU9bGlzdGJveF0gbGlbcm9sZT1vcHRpb25dOm5vdCg6bGFzdC1jaGlsZCkgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTEwMCk7Cn0KLmNvbWJvYm94X19saXN0LWl0ZW0tLXNlbGVjdGVkIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC04MDApOwogIGZvbnQ6IHZhcigtLWJvZHktMi1tZWRpdW0pOwp9Ci5jb21ib2JveF9fbGlzdC1pdGVtLS1oaWdobGlnaHQgewogIGJhY2tncm91bmQ6IHZhcigtLW5ldXRyYWwtMTAwKTsKfQouY29tYm9ib3hfX2xpc3QtaXRlbS0tbG9hZGluZyB7CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIGhlaWdodDogNDhweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwp9Ci5jb21ib2JveF9fbGlzdC1pdGVtLS1sb2FkaW5nOmFmdGVyIHsKICBhbmltYXRpb246IGJ1dHRvbi1zcGlubmVyIDFzIGVhc2UgaW5maW5pdGU7CiAgYm9yZGVyOiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci10b3A6IDRweCBzb2xpZCB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgY29udGVudDogIiI7CiAgaGVpZ2h0OiAxNnB4OwogIGluc2V0OiAwOwogIG1hcmdpbjogYXV0bzsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDE2cHg7Cn0KLmNvbWJvYm94X19saXN0LWl0ZW0tLWVtcHR5IHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC04MDApOwogIGN1cnNvcjogZGVmYXVsdDsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9EZXNjcmlwdGlvbkxpc3QvRGVzY3JpcHRpb25MaXN0LmNzcyAqLwouZGVzY3JpcHRpb24tbGlzdC0tZm9ybSBkdCB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwogIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMSk7Cn0KLmRlc2NyaXB0aW9uLWxpc3QtLWZvcm0gZGQgewogIGZvbnQ6IHZhcigtLWJvZHktMi1tZWRpdW0pOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuZGVzY3JpcHRpb24tbGlzdC0tZm9ybSBkdCB7CiAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC04MDApOwogICAgZm9udDogdmFyKC0tYm9keS0xLXJlZ3VsYXIpOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgLmRlc2NyaXB0aW9uLWxpc3QtLWZvcm0gZGQgewogICAgZm9udDogdmFyKC0tYm9keS0xLW1lZGl1bSk7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvRGVzY3JpcHRpb25MaXN0L0Rlc2NyaXB0aW9uQWN0aW9uL0Rlc2NyaXB0aW9uQWN0aW9uLmNzcyAqLwouZGVzY3JpcHRpb24tbGlzdF9fYWN0aW9uIHsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LW1lZGl1bSk7Cn0KLmRlc2NyaXB0aW9uLWxpc3RfX2FjdGlvbiA+IGEgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuZGVzY3JpcHRpb24tbGlzdF9faXRlbSAuZGVzY3JpcHRpb24tbGlzdF9fYWN0aW9uIHsKICAgIGZvbnQ6IHZhcigtLWJvZHktMS1tZWRpdW0pOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0Rlc2NyaXB0aW9uTGlzdC9EZXNjcmlwdGlvbkNvbnRlbnQvRGVzY3JpcHRpb25Db250ZW50LmNzcyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmRlc2NyaXB0aW9uLWxpc3RfX2NvbnRlbnQgewogICAgZGlzcGxheTogZmxleDsKICAgIGdhcDogdmFyKC0tc3BhY2luZy00KTsKICB9CiAgLmRlc2NyaXB0aW9uLWxpc3RfX2NvbnRlbnQgPiAqIHsKICAgIGZsZXg6IDE7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvRGVzY3JpcHRpb25MaXN0L0Rlc2NyaXB0aW9uSXRlbS9EZXNjcmlwdGlvbkl0ZW0uY3NzICovCi5kZXNjcmlwdGlvbi1saXN0X19pdGVtIHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGRpc3BsYXk6IGZsZXg7Cn0KLmRlc2NyaXB0aW9uLWxpc3RfX2l0ZW0gPiAqIHsKICBmbGV4OiAxOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvRGVzY3JpcHRpb25MaXN0L0Rlc2N0aXB0aW9uU3VmZml4L0Rlc2NyaXB0aW9uU3VmZml4LmNzcyAqLwouZGVzY3JpcHRpb24tbGlzdF9fc3VmZml4IHsKICBmbGV4OiAwOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvRGlhbG9nL0RpYWxvZy5jc3MgKi8KLmRpYWxvZ1tvcGVuXTo6YmFja2Ryb3AgewogIGJhY2tncm91bmQ6IHZhcigtLW5ldXRyYWwtNjAwKTsKICBvcGFjaXR5OiAuMjU7Cn0KYm9keTpoYXMoZGlhbG9nW29wZW5dKSB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQpkaWFsb2c6bm90KFtvcGVuXSkgewogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQpkaWFsb2c6Zm9jdXMgewogIG91dGxpbmU6IG5vbmU7Cn0KLmRpYWxvZyB7CiAgYm9yZGVyOiBub25lOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBib3gtc2hhZG93OgogICAgMCA3NnB4IDgwcHggcmdiKDAgMCAwLzclKSwKICAgIDAgMjFweCAyNHB4IHJnYigwIDAgMC81JSksCiAgICAwIDhweCAxMHB4IHJnYigwIDAgMC80JSksCiAgICAwIDNweCAzcHggcmdiKDAgMCAwLzIlKTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy00KTsKICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS1zcGFjaW5nLTQpKjIpOwogIG1heC13aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tc3BhY2luZy00KSoyKTsKICBwYWRkaW5nOiAwOwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgd2lkdGg6IDEwMCU7CiAgei1pbmRleDogMTAwOwp9Ci5kaWFsb2dfX2hlYWRlciB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA4cHg7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IHZhcigtLXNwYWNpbmctNCk7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIHBvc2l0aW9uOiBzdGlja3k7CiAgdG9wOiAwOwogIHotaW5kZXg6IDEwMDA7Cn0KLmRpYWxvZ19faGVhZGVyX19pY29uIHsKICBkaXNwbGF5OiBmbGV4Owp9Ci5kaWFsb2dfX2hlYWRlcl9fdGl0bGUgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKICBkaXNwbGF5OiBmbGV4OwogIGZvbnQ6IHZhcigtLXRpdGxlLTItbWVkaXVtKTsKICBnYXA6IHZhcigtLXNwYWNpbmctNCk7Cn0KLmRpYWxvZ19faGVhZGVyX190aXRsZTpmb2N1cyB7CiAgb3V0bGluZTogbm9uZTsKfQouZGlhbG9nX19ib2R5LAouZGlhbG9nX19mb290ZXIsCi5kaWFsb2dfX2hlYWRlciB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KTsKfQouZGlhbG9nX19ib2R5IHsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9Ci5kaWFsb2dfX2JvZHksCi5kaWFsb2dfX2Zvb3RlciB7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IHZhcigtLXNwYWNpbmctNCk7Cn0KLmRpYWxvZ19fZm9vdGVyIHsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogOHB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgYm90dG9tOiAwOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogIHBvc2l0aW9uOiBzdGlja3k7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIC5kaWFsb2dfX2JvZHksCiAgLmRpYWxvZ19fZm9vdGVyLAogIC5kaWFsb2dfX2hlYWRlciB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOwogIH0KICAuZGlhbG9nX19ib2R5IHsKICAgIGdhcDogdmFyKC0tc3BhY2luZy02KTsKICB9CiAgLmRpYWxvZyB7CiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTgpOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICB9CiAgLmRpYWxvZ19fZm9vdGVyIHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgfQp9CkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpuby1wcmVmZXJlbmNlKSB7CiAgLmRpYWxvZ1tvcGVuXS5kaWFsb2ctLWFuaW1hdGVkIHsKICAgIGFuaW1hdGlvbjogem9vbS1pbiAuMTVzOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgfQogIC5kaWFsb2c6bm90KFtvcGVuXSkuZGlhbG9nLS1hbmltYXRlZCB7CiAgICBhbmltYXRpb246IHpvb20tb3V0IC4xNXM7CiAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IC4xNXM7CiAgfQogIC5kaWFsb2dbb3Blbl0uZGlhbG9nLS1hbmltYXRlZDo6YmFja2Ryb3AgewogICAgYW5pbWF0aW9uOiBmYWRlLWluIC4xNXM7CiAgfQogIC5kaWFsb2c6bm90KFtvcGVuXSkuZGlhbG9nLS1hbmltYXRlZDo6YmFja2Ryb3AgewogICAgYW5pbWF0aW9uOiBmYWRlLW91dCAuMTVzOwogIH0KfQpAa2V5ZnJhbWVzIHpvb20taW4gewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTsKICB9CiAgMC4wMDAwMDAwMDAxJSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45NSwgLjk1LCAuOTUpOwogIH0KfQpAa2V5ZnJhbWVzIHpvb20tb3V0IHsKICB0byB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45NSwgLjk1LCAuOTUpOwogIH0KfQpAa2V5ZnJhbWVzIGZhZGUtaW4gewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CkBrZXlmcmFtZXMgZmFkZS1vdXQgewogIDAlIHsKICAgIG9wYWNpdHk6IC4yNTsKICB9CiAgdG8gewogICAgb3BhY2l0eTogMDsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9MaXN0SXRlbS9MaXN0SXRlbS5jc3MgKi8KLmxpc3QtaXRlbSwKLmxpc3QtaXRlbSA+IDppcyhhLCBidXR0b24pIHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9Ci5saXN0LWl0ZW0gewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5saXN0LWl0ZW06bm90KC5saXN0LWl0ZW0tLXdpdGgtbGluayksCi5saXN0LWl0ZW0gPiA6aXMoYSwgYnV0dG9uKSB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy02KSB2YXIoLS1zcGFjaW5nLTQpOwp9Ci5saXN0LWl0ZW0gPiA6aXMoYSwgYnV0dG9uKSB7CiAgYmFja2dyb3VuZDogbm9uZTsKICBib3JkZXI6IG5vbmU7CiAgY29sb3I6IGluaGVyaXQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQ6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQteHRyYSk7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOwogIHRleHQtYWxpZ246IGxlZnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHdpZHRoOiAxMDAlOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAubGlzdC1pdGVtID4gOmlzKGEsIGJ1dHRvbik6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogICAgYm9yZGVyOiBub25lOwogIH0KfQoubGlzdC1pdGVtID4gOmlzKGEsIGJ1dHRvbik6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAzcHggdmFyKC0tbmV1dHJhbC0wMDApLCBpbnNldCAwIDAgMCA1cHggdmFyKC0tcHJpbWFyeS0yMDApOwogIG91dGxpbmU6IG5vbmU7Cn0KLmxpc3QtaXRlbSA+IDppcyhhLCBidXR0b24pOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MCk7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQoubGlzdC1pdGVtLS13aXRoLWRpdmlkZXIgewogIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCB2YXIoLS1uZXV0cmFsLTIwMCk7Cn0KLmxpc3QtaXRlbS0tZGlzYWJsZWQgewogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci5saXN0LWl0ZW0tLWRlc3RydWN0aXZlIHsKICBjb2xvcjogdmFyKC0tZXJyb3ItNTAwKTsKfQoubGlzdC1pdGVtLmxpc3QtaXRlbS0tZGVzdHJ1Y3RpdmUgLmxpc3QtaXRlbTpub3QoLmxpc3QtaXRlbS0td2l0aC1saW5rKTpmb2N1cywKLmxpc3QtaXRlbS5saXN0LWl0ZW0tLWRlc3RydWN0aXZlID4gOmlzKGEsIGJ1dHRvbik6Zm9jdXMgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1uZXV0cmFsLTAwMCksIGluc2V0IDAgMCAwIDVweCB2YXIoLS1lcnJvci0yMDApOwp9Ci5saXN0LWl0ZW0ubGlzdC1pdGVtLS1kZXN0cnVjdGl2ZSAubGlzdC1pdGVtOm5vdCgubGlzdC1pdGVtLS13aXRoLWxpbmspOmFjdGl2ZSwKLmxpc3QtaXRlbS5saXN0LWl0ZW0tLWRlc3RydWN0aXZlID4gOmlzKGEsIGJ1dHRvbik6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lcnJvci0yMDApOwogIGJveC1zaGFkb3c6IGluc2V0IDJweCAwIHZhcigtLXByaW1hcnktNTAwKTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmxpc3QtaXRlbTpub3QoLmxpc3QtaXRlbS0td2l0aC1saW5rKSwKICAubGlzdC1pdGVtID4gOmlzKGEsIGJ1dHRvbikgewogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy02KTsKICB9CiAgLmxpc3QtaXRlbS0td2l0aC1kaXZpZGVyOmxhc3Qtb2YtdHlwZSB7CiAgICBib3gtc2hhZG93OiBub25lOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0xpc3RJdGVtL0xpc3RJdGVtQ29udGVudC9MaXN0SXRlbUNvbnRlbnQuY3NzICovCi5saXN0LWl0ZW1fX2NvbnRlbnQgewogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTQpOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvTGlzdEl0ZW0vTGlzdEl0ZW1NZXRhL0xpc3RJdGVtTWV0YS5jc3MgKi8KLmxpc3QtaXRlbV9fbWV0YSB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvTGlzdEl0ZW0vTGlzdEl0ZW1QcmVmaXgvTGlzdEl0ZW1QcmVmaXguY3NzICovCi5saXN0LWl0ZW1fX3ByZWZpeCB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBjb2xvcjogaW5oZXJpdDsKICBkaXNwbGF5OiBmbGV4Owp9Ci5saXN0LWl0ZW0ubGlzdC1pdGVtLS1kZXN0cnVjdGl2ZTpub3QoLmxpc3QtaXRlbS0td2l0aC1saW5rKTphY3RpdmUgLmxpc3QtaXRlbV9fcHJlZml4LAoubGlzdC1pdGVtLmxpc3QtaXRlbS0tZGVzdHJ1Y3RpdmUgPiA6aXMoYSwgYnV0dG9uKTphY3RpdmUgLmxpc3QtaXRlbV9fcHJlZml4IHsKICBjb2xvcjogdmFyKC0tZXJyb3ItNTAwKTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0xpc3RJdGVtL0xpc3RJdGVtU3VidGl0bGUvTGlzdEl0ZW1TdWJ0aXRsZS5jc3MgKi8KLmxpc3QtaXRlbV9fc3VidGl0bGUgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7CiAgZm9udDogdmFyKC0tc3VidGV4dC1yZWd1bGFyKTsKfQoubGlzdC1pdGVtLS1kaXNhYmxlZCAubGlzdC1pdGVtX19zdWJ0aXRsZSB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMzAwKTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0xpc3RJdGVtL0xpc3RJdGVtU3VmZml4L0xpc3RJdGVtU3VmZml4LmNzcyAqLwoubGlzdC1pdGVtX19zdWZmaXggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKfQoubGlzdC1pdGVtLS13aXRoLWxpbmsgLmxpc3QtaXRlbV9fc3VmZml4IHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApOwp9Ci5saXN0LWl0ZW0tLWRpc2FibGVkIC5saXN0LWl0ZW1fX3N1ZmZpeCB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMzAwKTsKfQoubGlzdC1pdGVtLS13aXRoLWxpbmsgOmlzKGEsIGJ1dHRvbik6YWN0aXZlIC5saXN0LWl0ZW1fX3N1ZmZpeCB7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0xpc3RJdGVtL0xpc3RJdGVtVGV4dC9MaXN0SXRlbVRleHQuY3NzICovCi5saXN0LWl0ZW1fX3RleHQgewogIGNvbG9yOiBpbmhlcml0OwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoubGlzdC1pdGVtLmxpc3QtaXRlbS5saXN0LWl0ZW0tLWRlc3RydWN0aXZlOm5vdCgubGlzdC1pdGVtLS13aXRoLWxpbmspOmFjdGl2ZSAubGlzdC1pdGVtX190ZXh0LAoubGlzdC1pdGVtLmxpc3QtaXRlbS5saXN0LWl0ZW0tLWRlc3RydWN0aXZlID4gOmlzKGEsIGJ1dHRvbik6YWN0aXZlIC5saXN0LWl0ZW1fX3RleHQgewogIGNvbG9yOiB2YXIoLS1lcnJvci01MDApOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvTGlzdEl0ZW0vTGlzdEl0ZW1UaXRsZS9MaXN0SXRlbVRpdGxlLmNzcyAqLwoubGlzdC1pdGVtX190aXRsZSB7CiAgZm9udC13ZWlnaHQ6IDUwMDsKfQoubGlzdC1pdGVtLS1kaXNhYmxlZCAubGlzdC1pdGVtX190aXRsZSB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNTAwKTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lbnUvQ29udGVudC9Db250ZW50LmNzcyAqLwoubWVudV9fbGlzdCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1vZGFsKSwgaW5zZXQgMCAwIDAgMXB4IHZhcigtLW5ldXRyYWwtMTAwKTsKICBtYXJnaW4tdG9wOiAxMHB4OwogIG1pbi13aWR0aDogMjIwcHg7CiAgb3BhY2l0eTogMDsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpIDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRyYW5zZm9ybTogc2NhbGUoLjgpOwogIHZpc2liaWxpdHk6IGhpZGRlbjsKICB6LWluZGV4OiAxMDAwMDA7Cn0KLm1lbnVfX2xpc3QsCi5tZW51X19saXN0ID4gdWwgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KLm1lbnVfX2xpc3QgPiB1bCB7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTEpOwp9Ci5tZW51X19saXN0LS1hY3RpdmUgewogIG9wYWNpdHk6IDE7CiAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9Ci5tZW51X19saXN0LS1sZWZ0IHsKICBsZWZ0OiAwOwogIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0Owp9Ci5tZW51X19saXN0LS1yaWdodCB7CiAgcmlnaHQ6IDA7CiAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIHJpZ2h0Owp9CkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpuby1wcmVmZXJlbmNlKSB7CiAgLm1lbnVfX2xpc3QgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjE1czsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6CiAgICAgIHRyYW5zZm9ybSwKICAgICAgb3BhY2l0eSwKICAgICAgcm90YXRlLAogICAgICB2aXNpYmlsaXR5OwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvTWVudS9NZW51SXRlbS9NZW51SXRlbS5jc3MgKi8KLm1lbnVfX2xpc3QtaXRlbSB7CiAgZGlzcGxheTogZmxleDsKfQoubWVudV9fbGlzdC1pdGVtID4gKiB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgYm9yZGVyOiAwOwogIGNvbG9yOiBpbmhlcml0OwogIGN1cnNvcjogcG9pbnRlcjsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBmb250OiBpbmhlcml0OwogIGdhcDogdmFyKC0tc3BhY2luZy00KTsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgbWFyZ2luOiAwIDFweDsKICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDJweCk7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KSB2YXIoLS1zcGFjaW5nLTYpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB3aWR0aDogMTAwJTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLm1lbnVfX2xpc3QtaXRlbSA+IDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTEwMCk7CiAgfQp9Ci5tZW51X19saXN0LWl0ZW0gPiA6Zm9jdXMgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1uZXV0cmFsLTAwMCksIGluc2V0IDAgMCAwIDVweCB2YXIoLS1wcmltYXJ5LTIwMCk7CiAgb3V0bGluZTogbm9uZTsKfQoubWVudV9fbGlzdC1pdGVtID4gOmFjdGl2ZSB7CiAgYm94LXNoYWRvdzogbm9uZTsKfQoubWVudV9fbGlzdC1pdGVtID4gOmFjdGl2ZSwKLm1lbnVfX2xpc3QtaXRlbSA+IDphY3RpdmU6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTEwMCk7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQoubWVudV9fbGlzdC1pdGVtID4gOmFjdGl2ZTpiZWZvcmUgewogIGJveC1zaGFkb3c6IGluc2V0IDJweCAwIDAgMCB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLm1lbnVfX2xpc3QtaXRlbSAuYnV0dG9uIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5tZW51X19saXN0LWl0ZW0gLmJ1dHRvbi0td2l0aC1pY29uIHsKICBnYXA6IHZhcigtLXNwYWNpbmctNCk7Cn0KLm1lbnVfX2xpc3QtaXRlbS0tbG9nb3V0IC5idXR0b24gewogIGNvbG9yOiB2YXIoLS1lcnJvci01MDApOwp9Ci5tZW51X19saXN0LWl0ZW0tLWxvZ291dCAuYnV0dG9uOmZvY3VzIHsKICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAzcHggdmFyKC0tbmV1dHJhbC0wMDApLCBpbnNldCAwIDAgMCA1cHggcmdiYSgyNTUsIDkyLCA5MiwgLjEpOwp9Ci5tZW51X19saXN0LWl0ZW0tLWxvZ291dCAuYnV0dG9uOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDkyLCA5MiwgLjEpOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9NZW51L1RyaWdnZXIvVHJpZ2dlci5jc3MgKi8KLm1lbnVfX3RyaWdnZXJbYXJpYS1leHBhbmRlZD10cnVlXSB7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLXByaW1hcnktNTAwKTsKfQoubWVudV9fdHJpZ2dlclthcmlhLWV4cGFuZGVkPXRydWVdIC5idXR0b25fX2ljb24tcmlnaHQgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKfQpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246bm8tcHJlZmVyZW5jZSkgewogIC5tZW51X190cmlnZ2VyIC5idXR0b25fX2ljb24tcmlnaHQgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjE1czsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lbnUvTWVudS5jc3MgKi8KLm1lbnUgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7CiAgZm9udDogdmFyKC0tc3VidGV4dC1tZWRpdW0pOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NlY3Rpb25NZXNzYWdlL1NlY3Rpb25NZXNzYWdlLmNzcyAqLwouc2VjdGlvbi1tZXNzYWdlIHsKICAtLXNlY3Rpb24tbWVzc2FnZS1jb2xvcjp2YXIoLS1uZXV0cmFsLTAwMCk7CiAgLS1zZWN0aW9uLW1lc3NhZ2UtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1uZXV0cmFsLTgwMCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VjdGlvbi1tZXNzYWdlLWJhY2tncm91bmQtY29sb3IpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMykgdmFyKC0tc3BhY2luZy00KTsKfQouc2VjdGlvbi1tZXNzYWdlLAouc2VjdGlvbi1tZXNzYWdlX19pY29uIHsKICBjb2xvcjogdmFyKC0tc2VjdGlvbi1tZXNzYWdlLWNvbG9yKTsKfQouc2VjdGlvbi1tZXNzYWdlLS1pbmZvIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5zZWN0aW9uLW1lc3NhZ2UtLXByaW1hcnkgewogIC0tc2VjdGlvbi1tZXNzYWdlLWNvbG9yOnZhcigtLXByaW1hcnktNzAwKTsKICAtLXNlY3Rpb24tbWVzc2FnZS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXByaW1hcnktNTApOwp9Ci5zZWN0aW9uLW1lc3NhZ2UtLXN1Y2Nlc3MgewogIC0tc2VjdGlvbi1tZXNzYWdlLWNvbG9yOnZhcigtLXN1Y2Nlc3MtNTAwKTsKICAtLXNlY3Rpb24tbWVzc2FnZS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXN1Y2Nlc3MtMjAwKTsKfQouc2VjdGlvbi1tZXNzYWdlLS13YXJuaW5nIHsKICAtLXNlY3Rpb24tbWVzc2FnZS1jb2xvcjp2YXIoLS13YXJuaW5nLTUwMCk7CiAgLS1zZWN0aW9uLW1lc3NhZ2UtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS13YXJuaW5nLTIwMCk7Cn0KLnNlY3Rpb24tbWVzc2FnZS0tZXJyb3IgewogIC0tc2VjdGlvbi1tZXNzYWdlLWNvbG9yOnZhcigtLWVycm9yLTUwMCk7CiAgLS1zZWN0aW9uLW1lc3NhZ2UtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1lcnJvci0yMDApOwp9Ci5zZWN0aW9uLW1lc3NhZ2UtLWRpc2FibGVkIHsKICAtLXNlY3Rpb24tbWVzc2FnZS1jb2xvcjp2YXIoLS1uZXV0cmFsLTYwMCk7CiAgLS1zZWN0aW9uLW1lc3NhZ2UtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1uZXV0cmFsLTIwMCk7Cn0KLnNlY3Rpb24tbWVzc2FnZV9faWNvbiB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGhlaWdodDogMjRweDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICB3aWR0aDogMjRweDsKfQouc2VjdGlvbi1tZXNzYWdlX19pY29uLS1pbmZvIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwp9Ci5zZWN0aW9uLW1lc3NhZ2VfX2ljb24tLXByaW1hcnkgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLnNlY3Rpb24tbWVzc2FnZV9fZGVzY3JpcHRpb24sCi5zZWN0aW9uLW1lc3NhZ2VfX3RpdGxlIHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOwp9Ci5zZWN0aW9uLW1lc3NhZ2VfX2Rlc2NyaXB0aW9uIHsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwp9Ci5zZWN0aW9uLW1lc3NhZ2VfX2FjdGlvbiwKLnNlY3Rpb24tbWVzc2FnZV9fdGl0bGUgKyAuc2VjdGlvbi1tZXNzYWdlX19kZXNjcmlwdGlvbiB7CiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0yKTsKfQouc2VjdGlvbi1tZXNzYWdlX19hY3Rpb24gewogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMSkgMDsKfQouc2VjdGlvbi1tZXNzYWdlX19hY3Rpb24gOmlzKGEsIHAsIGJ1dHRvbikgewogIGNvbG9yOiBpbmhlcml0OwogIGZvbnQ6IHZhcigtLXN1YnRleHQtbWVkaXVtKTsKICBwYWRkaW5nOiAwOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB3aWR0aDogLW1vei1maXQtY29udGVudDsKICB3aWR0aDogZml0LWNvbnRlbnQ7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC5zZWN0aW9uLW1lc3NhZ2VfX2FjdGlvbiAuYW5jaG9yOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1zZWN0aW9uLW1lc3NhZ2UtY29sb3IpOwogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQp9Ci5zZWN0aW9uLW1lc3NhZ2VfX2FjdGlvbiAuYW5jaG9yOmFjdGl2ZSwKLnNlY3Rpb24tbWVzc2FnZV9fYWN0aW9uIC5hbmNob3I6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlY3Rpb24tbWVzc2FnZS1iYWNrZ3JvdW5kLWNvbG9yKTsKICBib3gtc2hhZG93OiAwIDAgMCB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLXNlY3Rpb24tbWVzc2FnZS1iYWNrZ3JvdW5kLWNvbG9yKSwgMCAwIDAgMTBweCB2YXIoLS1zZWN0aW9uLW1lc3NhZ2UtY29sb3IpOwogIGNvbG9yOiB2YXIoLS1zZWN0aW9uLW1lc3NhZ2UtY29sb3IpOwp9Ci5zZWN0aW9uLW1lc3NhZ2UtLWRpc2FibGVkIDppcyhhLCBwLCBidXR0b24pIHsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuc2VjdGlvbi1tZXNzYWdlIHsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KSB2YXIoLS1zcGFjaW5nLTUpOwogIH0KICAuc2VjdGlvbi1tZXNzYWdlX19kZXNjcmlwdGlvbiB7CiAgICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1Bob25lTnVtYmVyL1Bob25lTnVtYmVyLmNzcyAqLwoucGhvbmUtbnVtYmVyIHsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogdmFyKC0tc3BhY2luZy0yKTsKfQoucGhvbmUtbnVtYmVyIC5pbnB1dF9fd3JhcHBlciB7CiAgZmxleC1ncm93OiAxOwp9Ci5waG9uZS1udW1iZXIgLnBob25lLW51bWJlcl9fY291bnRyeS1jb2RlLXNlbGVjdCB7CiAgaGVpZ2h0OiAxMDAlOwogIHdpZHRoOiA5NnB4Owp9CgovKiBzcmMvY29tcG9uZW50cy9hdG9tcy9TZWxlY3QvU2VsZWN0LmNzcyAqLwouc2VsZWN0LXdyYXBwZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouc2VsZWN0LXdyYXBwZXI6YWZ0ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKICBjb250ZW50OiAiIjsKICBoZWlnaHQ6IDI0cHg7CiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgZmlsbD0nbm9uZSclM0UlM0NwYXRoIHN0cm9rZT0nJTIzMDAwJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMS41JyBkPSdtOCAxMCA0IDQgNC00Jy8lM0UlM0Mvc3ZnJTNFIik7CiAgbWFzay1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnIGZpbGw9J25vbmUnJTNFJTNDcGF0aCBzdHJva2U9JyUyMzAwMCcgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzEuNScgZD0nbTggMTAgNCA0IDQtNCcvJTNFJTNDL3N2ZyUzRSIpOwogIC13ZWJraXQtbWFzay1wb3NpdGlvbjogY2VudGVyOwogIG1hc2stcG9zaXRpb246IGNlbnRlcjsKICAtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7CiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDsKICAtd2Via2l0LW1hc2stc2l6ZTogY292ZXI7CiAgbWFzay1zaXplOiBjb3ZlcjsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IHZhcigtLXNwYWNpbmctNCk7CiAgdG9wOiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHdpZHRoOiAyNHB4Owp9Ci5zZWxlY3QgewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbmV1dHJhbC0yMDApOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7CiAgZm9udDogdmFyKC0tYm9keS0yLXJlZ3VsYXIpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMykgdmFyKC0tc3BhY2luZy00KTsKICB3aWR0aDogMTAwJTsKfQouc2VsZWN0LS13aXRoLXBsYWNlaG9sZGVyIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuc2VsZWN0OmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeS0zMDApOwogIH0KfQouc2VsZWN0OmZvY3VzIHsKICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBvdXRsaW5lOiBub25lOwp9Ci5zZWxlY3Qtd3JhcHBlci0tZm9jdXM6YWZ0ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NlZ21lbnRlZENvbnRyb2wvU2VnbWVudGVkQ29udHJvbC5jc3MgKi8KLnNlZ21lbnRlZC1jb250cm9sX19saXN0LAouc2VnbWVudGVkLWNvbnRyb2xfX3BhbmVsIHsKICBkaXNwbGF5OiBub25lOwp9Ci5oYXMtanMgLnNlZ21lbnRlZC1jb250cm9sX19saXN0LAouaGFzLWpzIC5zZWdtZW50ZWQtY29udHJvbF9fcGFuZWwgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5oYXMtanMgLnNlZ21lbnRlZC1jb250cm9sIFtyb2xlPXRhYnBhbmVsXVtkYXRhLXN0YXRlPWluYWN0aXZlXSB7CiAgZGlzcGxheTogbm9uZTsKfQouc2VnbWVudGVkLWNvbnRyb2wgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKfQouc2VnbWVudGVkLWNvbnRyb2xfX2xpc3RfX3dyYXBwZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMTAwKTsKICBib3JkZXItcmFkaXVzOiA4cHg7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IHZhcigtLXNwYWNpbmctMik7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0xKTsKfQouc2VnbWVudGVkLWNvbnRyb2xfX3RyaWdnZXIgewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogbm9uZTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZmxleDogMTsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LW1lZGl1bSk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLXNwYWNpbmctNCk7CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQouc2VnbWVudGVkLWNvbnRyb2xfX3RyaWdnZXJbZGF0YS1zdGF0ZT1hY3RpdmVdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKfQouc2VnbWVudGVkLWNvbnRyb2xfX3RyaWdnZXJbZGF0YS1zdGF0ZT1hY3RpdmVdOmZvY3VzLXZpc2libGUgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1wcmltYXJ5LTUwMCksIGluc2V0IDAgMCAwIDVweCB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgb3V0bGluZTogbm9uZTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLnNlZ21lbnRlZC1jb250cm9sX190cmlnZ2VyW2RhdGEtc3RhdGU9aW5hY3RpdmVdOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICB9Cn0KLnNlZ21lbnRlZC1jb250cm9sX190cmlnZ2VyW2RhdGEtc3RhdGU9aW5hY3RpdmVdOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3gtc2hhZG93OiBpbnNldCAwIC0ycHggdmFyKC0tcHJpbWFyeS01MDApOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvVGFicy9UYWJzLmNzcyAqLwoudGFicyB7CiAgZGlzcGxheTogbm9uZTsKfQoudGFicy5zZWdtZW50ZWQtY29udHJvbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogdmFyKC0tc3BhY2luZy0yKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTEpOwogIHdpZHRoOiAxMDAlOwp9Ci50YWJzLnNlZ21lbnRlZC1jb250cm9sIC50YWJzX19saW5rIHsKICB3aWR0aDogMTAwJTsKfQoudGFicy5zZWdtZW50ZWQtY29udHJvbCBhIHsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsKICBkaXNwbGF5OiBibG9jazsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LW1lZGl1bSk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLXNwYWNpbmctNCk7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci50YWJzLnNlZ21lbnRlZC1jb250cm9sIGEuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLnRhYnMsCiAgLnRhYnMuc2VnbWVudGVkLWNvbnRyb2wgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwogICAgZGlzcGxheTogZmxleDsKICAgIGZvbnQ6IHZhcigtLWJvZHktMi1tZWRpdW0pOwogICAgZ2FwOiB2YXIoLS1zcGFjaW5nLTgpOwogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KSB2YXIoLS1zcGFjaW5nLTgpIDAgdmFyKC0tc3BhY2luZy04KTsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICB0b3A6IHZhcigtLXNpdGUtaGVhZGVyLWhlaWdodCk7CiAgICB6LWluZGV4OiAxNTsKICB9CiAgLnRhYnMuc2VnbWVudGVkLWNvbnRyb2wgLnRhYnNfX2xpbmsgewogICAgd2lkdGg6IGF1dG87CiAgfQogIC50YWJzIGEsCiAgLnRhYnMudGFicy5zZWdtZW50ZWQtY29udHJvbCBhIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZm9udDogdmFyKC0tYm9keS0yLXJlZ3VsYXIpOwogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KSAwOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KICAudGFicyBhLmFjdGl2ZSwKICAudGFicy50YWJzLnNlZ21lbnRlZC1jb250cm9sIGEuYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICAgIGZvbnQ6IHZhcigtLWJvZHktMi1tZWRpdW0pOwogIH0KICAudGFicyBhOmJlZm9yZSB7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtdGV4dCk7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQ6IHZhcigtLWJvZHktMi1tZWRpdW0pOwogICAgaGVpZ2h0OiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICB9CiAgQG1lZGlhIChob3Zlcjpob3ZlcikgewogICAgLnRhYnMgYTpmb2N1cyB7CiAgICAgIG91dGxpbmU6IG5vbmU7CiAgICB9CiAgICAudGFicyBhOm5vdCguYWN0aXZlKTpob3ZlcjphZnRlciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMzAwKTsKICAgICAgYm90dG9tOiAwOwogICAgICBjb250ZW50OiAiIjsKICAgICAgaGVpZ2h0OiAycHg7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CiAgfQogIC50YWJzIGE6bm90KC5hY3RpdmUpOmZvY3VzOmFmdGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktMzAwKTsKICB9CiAgLnRhYnMgYS5hY3RpdmU6YWZ0ZXIsCiAgLnRhYnMgYTpub3QoLmFjdGl2ZSk6Zm9jdXM6YWZ0ZXIgewogICAgYm90dG9tOiAwOwogICAgY29udGVudDogIiI7CiAgICBoZWlnaHQ6IDJweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxMDAlOwogIH0KICAudGFicyBhLmFjdGl2ZTphZnRlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvVG9hc3QvVG9hc3QuY3NzICovCi50b2FzdCB7CiAgLS1zbGlkZS1pbi1lbmQ6MDsKICAtLXNsaWRlLWluLXN0YXJ0OmNhbGMoMTAwJSArIHZhcigtLXNwYWNpbmctOCkpOwogIGFuaW1hdGlvbjogc2xpZGUtaW4gMG1zLCBzbGlkZS1vdXQgMG1zIDVzIGZvcndhcmRzOwogIGJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsKICBoZWlnaHQ6IGF1dG87CiAgbGVmdDogdmFyKC0tc3BhY2luZy00KTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTQpOwogIHBvc2l0aW9uOiBmaXhlZDsKICB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tc3BhY2luZy00KSoyKTsKfQoudG9hc3QtLWVycm9yIHsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiKDIzMCA0NSA1MC81JSksIHJnYigyMzAgNDUgNTAvNSUpKSwgdmFyKC0tbmV1dHJhbC0wMDApOwogIGJveC1zaGFkb3c6CiAgICBpbnNldCAycHggMCB2YXIoLS1lcnJvci00MDApLAogICAgMCA3NnB4IDgwcHggcmdiKDAgMCAwLzclKSwKICAgIDAgMjFweCAyNHB4IHJnYigwIDAgMC81JSksCiAgICAwIDhweCAxMHB4IHJnYigwIDAgMC80JSksCiAgICAwIDNweCAzcHggcmdiKDAgMCAwLzIlKTsKICBjb2xvcjogdmFyKC0tZXJyb3ItNTAwKTsKfQoudG9hc3QtLWluZm8gewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtODAwKTsKICBib3gtc2hhZG93OgogICAgaW5zZXQgMnB4IDAgdmFyKC0tcHJpbWFyeS01MDApLAogICAgMCA3NnB4IDgwcHggcmdiKDAgMCAwLzclKSwKICAgIDAgMjFweCAyNHB4IHJnYigwIDAgMC81JSksCiAgICAwIDhweCAxMHB4IHJnYigwIDAgMC80JSksCiAgICAwIDNweCAzcHggcmdiKDAgMCAwLzIlKTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwp9Ci50b2FzdF9fdGl0bGUgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKICBmb250OiB2YXIoLS1ib2R5LTItcmVndWxhcik7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOwp9Ci50b2FzdF9fdGl0bGVfX2ljb24gewogIGRpc3BsYXk6IGZsZXg7Cn0KLnRvYXN0LS1pbmZvIC50b2FzdF9fdGl0bGVfX2ljb24gewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIC50b2FzdCB7CiAgICAtLXNsaWRlLWluLXN0YXJ0OmNhbGMoMTAwJSArIHZhcigtLXNwYWNpbmctMTIpKTsKICAgIGJvdHRvbTogdmFyKC0tc3BhY2luZy0xMCk7CiAgICBsZWZ0OiBhdXRvOwogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy02KTsKICAgIHJpZ2h0OiB2YXIoLS1zcGFjaW5nLTEwKTsKICAgIHdpZHRoOiA0MjBweDsKICB9Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2UpIHsKICAudG9hc3QgewogICAgYW5pbWF0aW9uOiBzbGlkZS1pbiAuM3MgZWFzZS1vdXQsIHNsaWRlLW91dCAuM3MgZWFzZS1pbiA1cyBmb3J3YXJkczsKICB9Cn0KQGtleWZyYW1lcyBzbGlkZS1pbiB7CiAgMCUgewogICAgb3BhY2l0eTogLjg7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tc2xpZGUtaW4tc3RhcnQpKTsKICB9CiAgdG8gewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCh2YXIoLS1zbGlkZS1pbi1lbmQpKTsKICB9Cn0KQGtleWZyYW1lcyBzbGlkZS1vdXQgewogIDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tc2xpZGUtaW4tZW5kKSk7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IC44OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLXNsaWRlLWluLXN0YXJ0KSk7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvVG9nZ2xlL1RvZ2dsZS5jc3MgKi8KLnRvZ2dsZSB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTEwMCk7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0yKTsKfQoudG9nZ2xlX19pdGVtIHsKICB3aWR0aDogMTAwJTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1N0ZXBzL1N0ZXBzLmNzcyAqLwouc3RlcHMgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXdyYXA6IHdyYXA7Cn0KLnN0ZXBzX19saW5rIGEsCi5zdGVwc19fbGluayBzcGFuIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQouc3RlcHNfX2xpbmsgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKfQouc3RlcHNfX2xpbmsgLnN0ZXBzX19saW5rX19jaGFyYWN0ZXIgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwogIGRpc3BsYXk6IGZsZXg7CiAgZm9udDogdmFyKC0tc3VidGV4dC1tZWRpdW0pOwogIGhlaWdodDogdmFyKC0tc3BhY2luZy02KTsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMik7CiAgd2lkdGg6IHZhcigtLXNwYWNpbmctNik7Cn0KLnN0ZXBzX19saW5rX19kaXZpZGVyIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwogIG1hcmdpbjogMCB2YXIoLS1zcGFjaW5nLTQpOwp9Ci5zdGVwc19fbGluazpmaXJzdC1vZi10eXBlIC5zdGVwc19fbGlua19fZGl2aWRlciB7CiAgZGlzcGxheTogbm9uZTsKfQouc3RlcHNfX2xpbmsuYWN0aXZlIC5zdGVwc19fbGlua19fY2hhcmFjdGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLnN0ZXBzX19saW5rLmFjdGl2ZSAuc3RlcHNfX2xpbmtfX2RpdmlkZXIsCi5zdGVwc19fbGluay5hY3RpdmUgYSB7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLnN0ZXBzX19saW5rX19kaXZpZGVyIHsKICAgIG1hcmdpbjogMCB2YXIoLS1zcGFjaW5nLTYpOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1RpbWVsaW5lL1RpbWVsaW5lLmNzcyAqLwoudGltZWxpbmUtY29udGFpbmVyIHsKICBkaXNwbGF5OiBub25lOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAudGltZWxpbmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MDApOwogICAgbWFyZ2luOiAwIGF1dG87CiAgICB3aWR0aDogMXB4OwogIH0KICAudGltZWxpbmVfX2xhYmVsIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXByaW1hcnktNTAwKTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICAgIGhlaWdodDogMzJweDsKICAgIG1hcmdpbjogdmFyKC0tc3BhY2luZy02KSBhdXRvIDA7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMGRlZyk7CiAgICB3aWR0aDogMzJweDsKICAgIHotaW5kZXg6IDEwOwogIH0KICAudGltZWxpbmVfX2xhYmVsLS1wcmltYXJ5IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgfQogIC50aW1lbGluZV9fbGFiZWwtY29udGVudCB7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZGlzcGxheTogZmxleDsKICAgIGhlaWdodDogMTAwJTsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgdHJhbnNmb3JtOiByb3RhdGUoLTIwZGVnKTsKICAgIHdpZHRoOiAxMDAlOwogIH0KICAudGltZWxpbmUtY29udGFpbmVyIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgfQogIC50aW1lbGluZSwKICAudGltZWxpbmVfX2xhYmVsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGdyaWQtYXJlYTogMS8xOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0Zvcm1Hcm91cC9Gb3JtR3JvdXAuY3NzICovCi5mb3JtLWdyb3VwIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi8qIHNyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9Gb3JtR3JvdXAvSGludC9IaW50LmNzcyAqLwouZm9ybS1ncm91cF9fZXJyb3IsCi5mb3JtLWdyb3VwX19oaW50IHsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwogIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMSk7CiAgd2lkdGg6IC1tb3otZml0LWNvbnRlbnQ7CiAgd2lkdGg6IGZpdC1jb250ZW50Owp9Ci5mb3JtLWdyb3VwX19oaW50IHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApOwp9Ci5mb3JtLWdyb3VwX19lcnJvciB7CiAgY29sb3I6IHZhcigtLWVycm9yLTUwMCk7Cn0KCi8qIHNyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9Gb3JtR3JvdXAvTGFiZWwvTGFiZWwuY3NzICovCi5mb3JtLWl0ZW1fX2xhYmVsIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApOwogIGZvbnQ6IHZhcigtLXN1YnRleHQtcmVndWxhcik7CiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0xKTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB3aWR0aDogLW1vei1maXQtY29udGVudDsKICB3aWR0aDogZml0LWNvbnRlbnQ7Cn0KCi8qIHNyYy9jb21wb25lbnRzL2F0b21zL1JhZGlvL1JhZGlvLmNzcyAqLwoucmFkaW8tZ3JvdXAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IHZhcigtLXNwYWNpbmctNCk7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5yYWRpb19faW5wdXQtd3JhcHBlciB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogdmFyKC0tc3BhY2luZy0zKTsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLnJhZGlvX19sYWJlbCB7CiAgY3Vyc29yOiBwb2ludGVyOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoucmFkaW9fX2lucHV0IHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW5ldXRyYWwtMzAwKTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMzAwKTsKICBkaXNwbGF5OiBncmlkOwogIGZvbnQ6IGluaGVyaXQ7CiAgaGVpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOwogIG1hcmdpbjogMDsKICBtaW4td2lkdGg6IHZhcigtLXNwYWNpbmctNik7CiAgcGxhY2UtY29udGVudDogY2VudGVyOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoucmFkaW9fX2lucHV0OmlzKDpjaGVja2VkLCA6Zm9jdXMsIDpmb2N1cy13aXRoaW4sIDphY3RpdmUpIHsKICBvdXRsaW5lOiBub25lOwp9Ci5yYWRpb19faW5wdXQ6aXMoOmNoZWNrZWQsIDphY3RpdmUpIHsKICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC5yYWRpb19faW5wdXQ6bm90KDpkaXNhYmxlZCwgOmZvY3VzLXdpdGhpbiwgOmFjdGl2ZSwgOmNoZWNrZWQpOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTApOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcHJpbWFyeS01MDApOwogIH0KfQoucmFkaW9fX2lucHV0OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MDApOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiA1MCU7CiAgdG9wOiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNTAlLCAtNTAlKTsKICB3aWR0aDogMDsKfQoucmFkaW9fX2lucHV0OmNoZWNrZWQ6YmVmb3JlIHsKICBoZWlnaHQ6IDEycHg7CiAgd2lkdGg6IDEycHg7Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2UpIHsKICAucmFkaW9fX2lucHV0OmJlZm9yZSB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuMTVzOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogd2lkdGgsIGhlaWdodDsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICB9Cn0K";
772
+ const Og = "data:text/css;base64,Lyogc3JjL3N0eWxlcy9yZXNldC5jc3MgKi8KYSwKYWJiciwKYWNyb255bSwKYWRkcmVzcywKYXBwbGV0LAphcnRpY2xlLAphc2lkZSwKYXVkaW8sCmIsCmJpZywKYmxvY2txdW90ZSwKYm9keSwKY2FudmFzLApjYXB0aW9uLApjZW50ZXIsCmNpdGUsCmNvZGUsCmRkLApkZWwsCmRldGFpbHMsCmRmbiwKZGl2LApkbCwKZHQsCmVtLAplbWJlZCwKZmllbGRzZXQsCmZpZ2NhcHRpb24sCmZpZ3VyZSwKZm9vdGVyLApmb3JtLApoMSwKaDIsCmgzLApoNCwKaDUsCmg2LApoZWFkZXIsCmhncm91cCwKaHRtbCwKaSwKaWZyYW1lLAppbWcsCmlucywKa2JkLApsYWJlbCwKbGVnZW5kLApsaSwKbWFyaywKbWVudSwKbmF2LApvYmplY3QsCm9sLApvdXRwdXQsCnAsCnByZSwKcSwKcnVieSwKcywKc2FtcCwKc2VjdGlvbiwKc21hbGwsCnNwYW4sCnN0cmlrZSwKc3Ryb25nLApzdWIsCnN1bW1hcnksCnN1cCwKdGFibGUsCnRib2R5LAp0ZCwKdGZvb3QsCnRoLAp0aGVhZCwKdGltZSwKdHIsCnR0LAp1LAp1bCwKdmFyLAp2aWRlbyB7CiAgYm9yZGVyOiAwOwogIGZvbnQ6IGluaGVyaXQ7CiAgZm9udC1zaXplOiAxMDAlOwogIG1hcmdpbjogMDsKICBwYWRkaW5nOiAwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQphcnRpY2xlLAphc2lkZSwKZGV0YWlscywKZmlnY2FwdGlvbiwKZmlndXJlLApmb290ZXIsCmhlYWRlciwKaGdyb3VwLAptZW51LApuYXYsCnNlY3Rpb24gewogIGRpc3BsYXk6IGJsb2NrOwp9CmJvZHkgewogIGxpbmUtaGVpZ2h0OiAxOwp9Cm9sLAp1bCB7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQpibG9ja3F1b3RlLApxIHsKICBxdW90ZXM6IG5vbmU7Cn0KYmxvY2txdW90ZTphZnRlciwKYmxvY2txdW90ZTpiZWZvcmUsCnE6YWZ0ZXIsCnE6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBjb250ZW50OiBub25lOwp9CnRhYmxlIHsKICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogIGJvcmRlci1zcGFjaW5nOiAwOwp9CgovKiBzcmMvc3R5bGVzL2dsb2JhbC5jc3MgKi8KOjpiYWNrZHJvcCwKOmhvc3QsCjpyb290IHsKICAtLW5ldXRyYWwtOTk5OiMwMDA7CiAgLS1uZXV0cmFsLTkwMDojMWIxZjI3OwogIC0tbmV1dHJhbC04MDA6IzJlM2I1NjsKICAtLW5ldXRyYWwtNzAwOiM0ODUyNmQ7CiAgLS1uZXV0cmFsLTYwMDojNjM3MDhhOwogIC0tbmV1dHJhbC01MDA6IzdjODlhMzsKICAtLW5ldXRyYWwtNDAwOiM5ZmFhYzA7CiAgLS1uZXV0cmFsLTMwMDojYmJjMWQzOwogIC0tbmV1dHJhbC0yMDA6I2ViZWRmNTsKICAtLW5ldXRyYWwtMTAwOiNmM2Y0ZmE7CiAgLS1uZXV0cmFsLTUwOiNmOWZhZmM7CiAgLS1uZXV0cmFsLTAwMDojZmZmOwogIC0tcHJpbWFyeS05MDA6IzAwM2MzNzsKICAtLXByaW1hcnktODAwOiMwMDU2NGY7CiAgLS1wcmltYXJ5LTcwMDojMDA4MDc3OwogIC0tcHJpbWFyeS02MDA6IzAwOWE4ZTsKICAtLXByaW1hcnktNTAwOiMwMGFiOWU7CiAgLS1wcmltYXJ5LTQwMDojMTliM2E4OwogIC0tcHJpbWFyeS0zMDA6IzgwZDVjZjsKICAtLXByaW1hcnktMjAwOiNjY2VlZWM7CiAgLS1wcmltYXJ5LTEwMDojZTVmN2Y1OwogIC0tcHJpbWFyeS01MDojZWZmOWY5OwogIC0tc3VjY2Vzcy0yMDA6I2YyZjllYzsKICAtLXN1Y2Nlc3MtNTAwOiMwMDlhM2U7CiAgLS1lcnJvci0yMDA6I2ZlZjRmNTsKICAtLWVycm9yLTQwMDojZmY1YzVjOwogIC0tZXJyb3ItNTAwOiNlNjJkMzI7CiAgLS13YXJuaW5nLTIwMDojZmZmYWYzOwogIC0td2FybmluZy01MDA6I2RjODYzMzsKICAtLXByaW1hcnktZ3JhZGllbnQ6bGluZWFyLWdyYWRpZW50KDEzMy41M2RlZywjMTU5YTk1IDI1LjU3JSwjMTBiOGIxIDc0LjI5JSk7CiAgLS1zaGFkb3ctY2FyZDowIDNweCA4cHggcmdiYSg0Niw1OSw4NiwuMSk7CiAgLS1zaGFkb3ctbmF2OjAgMCAxMnB4IHJnYmEoNDYsNTksODYsLjEyKTsKICAtLXNoYWRvdy1idXR0b246MCA4cHggOHB4IC01cHggcmdiYSgxLDE0MSwxMzYsLjIpOwogIC0tc2hhZG93LWZhYjowIDRweCA4cHggLTVweCByZ2JhKDEsMTQxLDEzNiwuMik7CiAgLS1zaGFkb3ctbW9kYWw6MCA3NnB4IDgwcHggcmdiKDAgMCAwLzclKSwwIDIxcHggMjRweCByZ2IoMCAwIDAvNSUpLDAgOHB4IDEwcHggcmdiKDAgMCAwLzQlKSwwIDNweCAzcHggcmdiKDAgMCAwLzIlKTsKICAtLWJvcmRlci1yYWRpdXMtc206NnB4OwogIC0tYm9yZGVyLXJhZGl1cy1tZDoxMHB4OwogIC0tYm9yZGVyLXJhZGl1cy1sZzoxOHB4OwogIC0tc3BhY2luZy0xOjRweDsKICAtLXNwYWNpbmctMjo4cHg7CiAgLS1zcGFjaW5nLTM6MTJweDsKICAtLXNwYWNpbmctNDoxNnB4OwogIC0tc3BhY2luZy01OjIwcHg7CiAgLS1zcGFjaW5nLTY6MjRweDsKICAtLXNwYWNpbmctNzoyOHB4OwogIC0tc3BhY2luZy04OjMycHg7CiAgLS1zcGFjaW5nLTk6NDBweDsKICAtLXNwYWNpbmctMTA6NDhweDsKICAtLXNwYWNpbmctMTE6NTZweDsKICAtLXNwYWNpbmctMTI6NjRweDsKICAtLWZvbnQteHRyYToiTmV1ZSIsdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxibGlua21hY3N5c3RlbWZvbnQsIlNlZ29lIFVJIixyb2JvdG8sIkhlbHZldGljYSBOZXVlIixhcmlhbCwiTm90byBTYW5zIixzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7CiAgLS1kaXNwbGF5LTEtbWVkaXVtOjUwMCAzcmVtLzEuMiB2YXIoLS1mb250LXh0cmEpOwogIC0tZGlzcGxheS0yLW1lZGl1bTo1MDAgMi41cmVtLzEuMiB2YXIoLS1mb250LXh0cmEpOwogIC0tZGlzcGxheS0zLW1lZGl1bTo1MDAgMnJlbS8xLjIgdmFyKC0tZm9udC14dHJhKTsKICAtLXRpdGxlLTEtcmVndWxhcjo0MDAgMS41cmVtLzEuMyB2YXIoLS1mb250LXh0cmEpOwogIC0tdGl0bGUtMS1tZWRpdW06NTAwIDEuNXJlbS8xLjMgdmFyKC0tZm9udC14dHJhKTsKICAtLXRpdGxlLTItcmVndWxhcjo0MDAgMS4yNXJlbS8xLjIgdmFyKC0tZm9udC14dHJhKTsKICAtLXRpdGxlLTItbWVkaXVtOjUwMCAxLjI1cmVtLzEuMiB2YXIoLS1mb250LXh0cmEpOwogIC0tdGl0bGUtMy1yZWd1bGFyOjQwMCAxLjEyNXJlbS8xLjIgdmFyKC0tZm9udC14dHJhKTsKICAtLXRpdGxlLTMtbWVkaXVtOjUwMCAxLjEyNXJlbS8xLjIgdmFyKC0tZm9udC14dHJhKTsKICAtLWJvZHktMS1yZWd1bGFyOjQwMCAxLjEyNXJlbS8xLjUgdmFyKC0tZm9udC14dHJhKTsKICAtLWJvZHktMS1tZWRpdW06NTAwIDEuMTI1cmVtLzEuNSB2YXIoLS1mb250LXh0cmEpOwogIC0tYm9keS0yLXJlZ3VsYXI6NDAwIDFyZW0vMS4zIHZhcigtLWZvbnQteHRyYSk7CiAgLS1ib2R5LTItbWVkaXVtOjUwMCAxcmVtLzEuMyB2YXIoLS1mb250LXh0cmEpOwogIC0tc3VidGV4dC1yZWd1bGFyOjQwMCAwLjg3NXJlbS8xLjUgdmFyKC0tZm9udC14dHJhKTsKICAtLXN1YnRleHQtbWVkaXVtOjUwMCAwLjg3NXJlbS8xLjUgdmFyKC0tZm9udC14dHJhKTsKICAtLWxhYmVsLXJlZ3VsYXI6NDAwIDAuNjg3NXJlbS8xLjUgdmFyKC0tZm9udC14dHJhKTsKICAtLWxhYmVsLW1lZGl1bTo1MDAgMC42ODc1cmVtLzEuNSB2YXIoLS1mb250LXh0cmEpOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTgwMCk7CiAgZm9udDogdmFyKC0tYm9keS0yLXJlZ3VsYXIpOwogIGxldHRlci1zcGFjaW5nOiAuMDFlbTsKfQouc3Itb25seSB7CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICBib3JkZXItd2lkdGg6IDA7CiAgaGVpZ2h0OiAxcHg7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgcGFkZGluZzogMDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB3aWR0aDogMXB4Owp9Cjppcyg6cm9vdCwgOmhvc3QpICogewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIDpob3N0LAogIDpyb290IHsKICAgIGZvbnQ6IHZhcigtLWJvZHktMS1yZWd1bGFyKTsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL2F0b21zL0FuY2hvci9BbmNob3IuY3NzICovCi5hbmNob3IgewogIGJvcmRlci1yYWRpdXM6IDRweDsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXdlaWdodDogNTAwOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB3aWR0aDogLW1vei1maXQtY29udGVudDsKICB3aWR0aDogZml0LWNvbnRlbnQ7Cn0KLmFuY2hvci0taW5saW5lIHsKICBjb2xvcjogdmFyKC0tcHJpbWFyeS01MDApOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmFuY2hvci0taW5saW5lOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTcwMCk7CiAgICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIHZhcigtLXByaW1hcnktNzAwKTsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIHZhcigtLXByaW1hcnktNzAwKTsKICB9Cn0KLmFuY2hvci0taW5saW5lOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MCk7CiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLXByaW1hcnktNTApOwogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTcwMCk7Cn0KLmFuY2hvci0taW5saW5lOm5vdCg6YWN0aXZlKTpmb2N1cyB7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNzAwKTsKICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIHZhcigtLXByaW1hcnktNzAwKTsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB2YXIoLS1wcmltYXJ5LTcwMCk7Cn0KLmFuY2hvci0tbmV1dHJhbCB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmFuY2hvci0tbmV1dHJhbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC04MDApOwogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB2YXIoLS1uZXV0cmFsLTgwMCk7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB2YXIoLS1uZXV0cmFsLTgwMCk7CiAgfQp9Ci5hbmNob3ItLW5ldXRyYWw6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3gtc2hhZG93OiAwIDAgMCB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLW5ldXRyYWwtMDAwKSwgMCAwIDAgMTBweCB2YXIoLS1uZXV0cmFsLTgwMCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtODAwKTsKfQouYW5jaG9yLS1uZXV0cmFsOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogIGJveC1zaGFkb3c6IDAgMCAwIHZhcigtLXNwYWNpbmctMikgdmFyKC0tbmV1dHJhbC0xMDApOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTgwMCk7Cn0KLmFuY2hvci0tbmV1dHJhbDpmb2N1czphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMTAwKTsKICBib3gtc2hhZG93OiAwIDAgMCB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLW5ldXRyYWwtMTAwKSwgMCAwIDAgMTBweCB2YXIoLS1uZXV0cmFsLTgwMCk7Cn0KLmFuY2hvci0tcHJpbWFyeSB7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmFuY2hvci0tbmV1dHJhbDpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS03MDApOwogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB2YXIoLS1wcmltYXJ5LTcwMCk7CiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSB2YXIoLS1wcmltYXJ5LTcwMCk7CiAgfQp9Ci5hbmNob3ItLXByaW1hcnk6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3gtc2hhZG93OiAwIDAgMCB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLW5ldXRyYWwtMDAwKSwgMCAwIDAgOS41cHggdmFyKC0tcHJpbWFyeS03MDApOwogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTcwMCk7Cn0KLmFuY2hvci0tcHJpbWFyeTphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTApOwogIGJveC1zaGFkb3c6IDAgMCAwIHZhcigtLXNwYWNpbmctMikgdmFyKC0tcHJpbWFyeS01MCk7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNzAwKTsKfQouYW5jaG9yLS1wcmltYXJ5OmZvY3VzOmFjdGl2ZSB7CiAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeS01MCk7CiAgYm94LXNoYWRvdzogMCAwIDAgdmFyKC0tc3BhY2luZy0yKSB2YXIoLS1wcmltYXJ5LTUwKSwgMCAwIDAgOS41cHggdmFyKC0tcHJpbWFyeS03MDApOwp9Ci5hbmNob3ItLWRpc2FibGVkIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgovKiBzcmMvY29tcG9uZW50cy9hdG9tcy9BdmF0YXIvQXZhdGFyLmNzcyAqLwouYXZhdGFyIHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtODAwKTsKICBkaXNwbGF5OiBmbGV4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmF2YXRhci0tc21hbGwgewogIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNpbmctMSk7CiAgZm9udC1zaXplOiAxMHB4OwogIGhlaWdodDogMjRweDsKICB3aWR0aDogMjRweDsKfQouYXZhdGFyLS1tZWRpdW0gewogIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNpbmctMik7CiAgZm9udC1zaXplOiAxOHB4OwogIGhlaWdodDogNDBweDsKICB3aWR0aDogNDBweDsKfQouYXZhdGFyLS1sYXJnZSB7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2luZy00KTsKICBmb250LXNpemU6IDQycHg7CiAgaGVpZ2h0OiAxMDBweDsKICB3aWR0aDogMTAwcHg7Cn0KLmF2YXRhcl9faW5pdGlhbHMgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLyogc3JjL2NvbXBvbmVudHMvYXRvbXMvQnV0dG9uL0J1dHRvbi5jc3MgKi8KLmJ1dHRvbiB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZm9udDogaW5oZXJpdDsKICBmb250LXdlaWdodDogNTAwOwogIGxldHRlci1zcGFjaW5nOiAuMDFlbTsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zKSB2YXIoLS1zcGFjaW5nLTgpOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogIHdpZHRoOiAxMDAlOwp9Ci5idXR0b24tLXByaW1hcnkgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuYnV0dG9uLS1wcmltYXJ5OmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNjAwKTsKICB9Cn0KLmJ1dHRvbi0tcHJpbWFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS02MDApOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1wcmltYXJ5LTYwMCksIGluc2V0IDAgMCAwIDVweCB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgb3V0bGluZTogbm9uZTsKfQouYnV0dG9uLS1wcmltYXJ5OmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS03MDApOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KLmJ1dHRvbi0tZGlzYWJsZWQsCi5idXR0b24tLXByaW1hcnk6ZGlzYWJsZWQgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMjAwKTsKICBib3gtc2hhZG93OiBub25lOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQouYnV0dG9uLS1zZWNvbmRhcnkgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmJ1dHRvbi0tc2Vjb25kYXJ5OmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTApOwogIH0KfQouYnV0dG9uLS1zZWNvbmRhcnk6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTApOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgb3V0bGluZTogbm9uZTsKfQouYnV0dG9uLS1zZWNvbmRhcnk6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTEwMCk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLXByaW1hcnktNjAwKTsKICBjb2xvcjogdmFyKC0tcHJpbWFyeS02MDApOwp9Ci5idXR0b24tLXNlY29uZGFyeTpkaXNhYmxlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0yMDApOwogIGJveC1zaGFkb3c6IG5vbmU7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9Ci5idXR0b24tLXNlY29uZGFyeS0tZmlsbGVkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7Cn0KLmJ1dHRvbi0tdGVydGlhcnkgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zKSB2YXIoLS1zcGFjaW5nLTEpOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuYnV0dG9uLS1zZWNvbmRhcnk6aG92ZXIgewogICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAxLjVweDsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIDEuNXB4OwogIH0KfQouYnV0dG9uLS10ZXJ0aWFyeTphY3RpdmUsCi5idXR0b24tLXRlcnRpYXJ5OmZvY3VzIHsKICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIDEuNXB4OwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIDEuNXB4Owp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuYnV0dG9uLS10ZXJ0aWFyeTpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS03MDApOwogIH0KfQouYnV0dG9uLS10ZXJ0aWFyeTpmb2N1cyB7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMS41cHggdmFyKC0tcHJpbWFyeS01MDApOwogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgb3V0bGluZTogbm9uZTsKfQouYnV0dG9uLS10ZXJ0aWFyeTphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTApOwogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLmJ1dHRvbi0tdGVydGlhcnk6ZGlzYWJsZWQsCi5idXR0b24tLXRlcnRpYXJ5W2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJveC1zaGFkb3c6IG5vbmU7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNDAwKTsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQouYnV0dG9uLS13YXJuaW5nIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lcnJvci01MDApOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC5idXR0b24tLXdhcm5pbmc6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXJyb3ItNDAwKTsKICB9Cn0KLmJ1dHRvbi0td2FybmluZzpmb2N1cyB7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgM3B4IHZhcigtLWVycm9yLTQwMCksIGluc2V0IDAgMCAwIDVweCB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgb3V0bGluZTogbm9uZTsKfQouYnV0dG9uLS13YXJuaW5nOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZXJyb3ItNDAwKTsKICBib3gtc2hhZG93OiBub25lOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuYnV0dG9uLS13YXJuaW5nOmZvY3VzOm5vdCg6aG92ZXIpIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWVycm9yLTUwMCk7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAzcHggdmFyKC0tZXJyb3ItNTAwKSwgaW5zZXQgMCAwIDAgNXB4IHZhcigtLW5ldXRyYWwtMDAwKTsKICB9Cn0KLmJ1dHRvbi0tbmV1dHJhbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmJ1dHRvbi0tbmV1dHJhbDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTEwMCk7CiAgfQp9Ci5idXR0b24tLW5ldXRyYWw6Zm9jdXMgewogIGJveC1zaGFkb3c6CiAgICBpbnNldCAwIDAgMCAxcHggdmFyKC0tcHJpbWFyeS0yMDApLAogICAgaW5zZXQgMCAwIDAgM3B4IHZhcigtLW5ldXRyYWwtMDAwKSwKICAgIGluc2V0IDAgMCAwIDRweCB2YXIoLS1wcmltYXJ5LTIwMCk7CiAgb3V0bGluZTogbm9uZTsKfQouYnV0dG9uLS1uZXV0cmFsOmFjdGl2ZSB7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLXByaW1hcnktNTAwKTsKfQouYnV0dG9uLS1uZXV0cmFsOmRpc2FibGVkIHsKICBvcGFjaXR5OiAuNjsKfQouYnV0dG9uLS1pY29uLS1wcmltYXJ5LAouYnV0dG9uLS1pY29uLS1zZWNvbmRhcnkgewogIGJvcmRlci1yYWRpdXM6IDRweDsKICBjb2xvcjogaW5oZXJpdDsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBwYWRkaW5nOiAwOwogIHdpZHRoOiBhdXRvOwp9Ci5idXR0b24tLWljb24tLXByaW1hcnkgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLmJ1dHRvbi0taWNvbi0tcHJpbWFyeVthcmlhLWRpc2FibGVkPXRydWVdIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuYnV0dG9uLS1pY29uLS1wcmltYXJ5OmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTcwMCk7CiAgfQp9Ci5idXR0b24tLWljb24tLXByaW1hcnk6Zm9jdXMgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBvdXRsaW5lOiBub25lOwp9Ci5idXR0b24tLWljb24tLXByaW1hcnk6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwKTsKfQouYnV0dG9uLS1pY29uLS1zZWNvbmRhcnkgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC5idXR0b24tLWljb24tLXNlY29uZGFyeTpob3ZlciB7CiAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC04MDApOwogIH0KfQouYnV0dG9uLS1pY29uLS1zZWNvbmRhcnk6Zm9jdXMgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1uZXV0cmFsLTkwMCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKICBvdXRsaW5lOiBub25lOwp9Ci5idXR0b24tLWljb24tLXNlY29uZGFyeTphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMTAwKTsKfQouYnV0dG9uLS13aXRoLWljb24gewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IHZhcigtLXNwYWNpbmctMik7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KLmJ1dHRvbl9faWNvbiB7CiAgZGlzcGxheTogZmxleDsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmJ1dHRvbiB7CiAgICB3aWR0aDogYXV0bzsKICB9Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2UpIHsKICAuYnV0dG9uLmJ1dHRvbi0tcGVuZGluZyB7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgIHVzZXItc2VsZWN0OiBub25lOwogIH0KICAuYnV0dG9uLmJ1dHRvbi0tcGVuZGluZzphZnRlciB7CiAgICBhbmltYXRpb246IGJ1dHRvbi1zcGlubmVyIDFzIGVhc2UgaW5maW5pdGU7CiAgICBib3JkZXI6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGJvcmRlci10b3A6IDRweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgICBjb250ZW50OiAiIjsKICAgIGhlaWdodDogMTZweDsKICAgIGluc2V0OiAwOwogICAgbWFyZ2luOiBhdXRvOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgd2lkdGg6IDE2cHg7CiAgfQogIC5idXR0b24tLXNlY29uZGFyeS5idXR0b24tLXBlbmRpbmc6YWZ0ZXIgewogICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MDApOwogIH0KICBAa2V5ZnJhbWVzIGJ1dHRvbi1zcGlubmVyIHsKICAgIDAlIHsKICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMHR1cm4pOwogICAgfQogICAgdG8gewogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybik7CiAgICB9CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9hdG9tcy9DYWxsVG9BY3Rpb24vQ2FsbFRvQWN0aW9uLmNzcyAqLwouY2FsbC10by1hY3Rpb24gewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7Cn0KLmNhbGwtdG8tYWN0aW9uX193cmFwcGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgZGlzcGxheTogZmxleDsKICBvdmVyZmxvdzogaGlkZGVuOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouY2FsbC10by1hY3Rpb25fX2JhY2tncm91bmQgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzE3NTQnIGhlaWdodD0nMTc5NScgZmlsbD0nbm9uZSclM0UlM0NlbGxpcHNlIGN4PSc4NzYuOTIzJyBjeT0nOTM3LjQ1NycgZmlsbD0nJTIzMDA5QThFJyByeD0nMzQ5JyByeT0nODA1LjUnIHRyYW5zZm9ybT0ncm90YXRlKDYzLjkzMyA4NzYuOTIzIDkzNy40NTcpJy8lM0UlM0NwYXRoIHN0cm9rZT0nJTIzMTlCM0E4JyBzdHJva2Utd2lkdGg9JzInIGQ9J001OTQuMzA0IDEwMjcuMzlDNTA4Ljg2IDgxNS44NjggNDY3LjcyOSA2MDkuNzg2IDQ3MC4yNjcgNDQ3LjYxNGMxLjI2OS04MS4wODggMTMuNDU2LTE1MS4xNDcgMzYuNDM5LTIwNS40MDcgMjIuOTgyLTU0LjI1NiA1Ni43MjUtOTIuNjQ3IDEwMS4wODYtMTEwLjU2NiA0NC4zNjEtMTcuOTE5IDk1LjMwMi0xMy43MzYgMTQ5LjUxOSA5LjMzNiA1NC4yMjIgMjMuMDc0IDExMS42NDkgNjUuMDEzIDE2OC44ODIgMTIyLjQ3IDExNC40NjcgMTE0LjkxIDIyOC4wMDcgMjkxLjc0MiAzMTMuNDQ3IDUwMy4yNjggODUuNDUgMjExLjUyNSAxMjYuNTggNDE3LjYwNSAxMjQuMDQgNTc5Ljc3NS0xLjI3IDgxLjA5LTEzLjQ1IDE1MS4xNS0zNi40NCAyMDUuNDEtMjIuOTggNTQuMjYtNTYuNzIgOTIuNjUtMTAxLjA4IDExMC41Ny00NC4zNyAxNy45Mi05NS4zMSAxMy43My0xNDkuNTItOS4zNC01NC4yMy0yMy4wNy0xMTEuNjUzLTY1LjAxLTE2OC44ODYtMTIyLjQ3LTExNC40NjMtMTE0LjkxLTIyOC4wMDYtMjkxLjc0LTMxMy40NS01MDMuMjdaJy8lM0UlM0Mvc3ZnJTNFIik7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMwNHB4IC01MjZweDsKICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgY29udGVudDogIiI7CiAgaGVpZ2h0OiAxNzk0LjExcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxNzUzLjg1cHg7Cn0KLmNhbGwtdG8tYWN0aW9uX19jb250ZW50IHsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTgpIHZhcigtLXNwYWNpbmctNCkgNjRweCB2YXIoLS1zcGFjaW5nLTQpOwogIHdpZHRoOiAxMDAlOwogIHotaW5kZXg6IDQ7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIC5jYWxsLXRvLWFjdGlvbiB7CiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNpbmctOCk7CiAgfQogIC5jYWxsLXRvLWFjdGlvbl9fd3JhcHBlciB7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKTsKICB9CiAgLmNhbGwtdG8tYWN0aW9uX19iYWNrZ3JvdW5kIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0yNDZweCAtNjcxcHg7CiAgfQogIC5jYWxsLXRvLWFjdGlvbl9fY29udGVudCB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTgpIHZhcigtLXNwYWNpbmctMTIpOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvYXRvbXMvQ2hpcC9DaGlwLmNzcyAqLwouY2hpcC1ncm91cCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXdyYXA6IHdyYXA7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOwp9Ci5jaGlwLWdyb3VwLAouY2hpcF9faW5wdXQtd3JhcHBlciwKLmNoaXBfX2xhYmVsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmNoaXBfX2xhYmVsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbmV1dHJhbC0yMDApOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTgwMCk7CiAgY3Vyc29yOiBwb2ludGVyOwogIGRpc3BsYXk6IGZsZXg7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zKSB2YXIoLS1zcGFjaW5nLTgpOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLmNoaXBfX2lucHV0IHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7CiAgaW5zZXQ6IDA7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmNoaXBfX2lucHV0OmlzKDpjaGVja2VkLCA6Zm9jdXMsIDpmb2N1cy13aXRoaW4sIDphY3RpdmUpIHsKICBvdXRsaW5lOiBub25lOwp9Ci5jaGlwX19pbnB1dDpkaXNhYmxlZCArIC5jaGlwX19sYWJlbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0yMDApOwp9Ci5jaGlwX19pbnB1dDppcyg6Y2hlY2tlZCwgOmFjdGl2ZSkgKyAuY2hpcF9fbGFiZWwgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBib3gtc2hhZG93OiBub25lOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC5jaGlwX19pbnB1dDpub3QoOmRpc2FibGVkLCA6Zm9jdXMtd2l0aGluLCA6YWN0aXZlLCA6Y2hlY2tlZCk6aG92ZXIgKyAuY2hpcF9fbGFiZWwgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogIH0KfQouY2hpcF9faW5wdXQ6Y2hlY2tlZDpmb2N1cy12aXNpYmxlICsgLmNoaXBfX2xhYmVsIHsKICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAzcHggdmFyKC0tcHJpbWFyeS01MDApLCBpbnNldCAwIDAgMCA1cHggdmFyKC0tbmV1dHJhbC0wMDApOwp9Ci5jaGlwX19pbnB1dDpub3QoOmRpc2FibGVkKTppcyg6Y2hlY2tlZCwgOmFjdGl2ZSwgOmZvY3VzLCA6Zm9jdXMtd2l0aGluKSArIC5jaGlwX19sYWJlbCB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2UpIHsKICAuY2hpcF9fbGFiZWwgewogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuMTVzOwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0OwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvYXRvbXMvSW5wdXRGaWVsZC9JbnB1dEZpZWxkLmNzcyAqLwouaW5wdXQgewogIGJhY2tncm91bmQ6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKICBmb250OiB2YXIoLS1ib2R5LTItcmVndWxhcik7CiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zKSB2YXIoLS1zcGFjaW5nLTQpOwogIHdpZHRoOiAxMDAlOwp9Ci5pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNDAwKTsKfQouaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwp9Ci5pbnB1dC0tc3VjY2VzIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hbGVydC1zdWNjZXMtNTAwKTsKfQouaW5wdXRbYXJpYS1pbnZhbGlkPXRydWVdIHsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1lcnJvci01MDApOwp9Ci5pbnB1dDpkaXNhYmxlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7CiAgY3Vyc29yOiBkZWZhdWx0Owp9Ci5pbnB1dDppcyg6Zm9jdXMsIDpmb2N1cy13aXRoaW4sIDphY3RpdmUpIHsKICBvdXRsaW5lOiBub25lOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuaW5wdXRfX3dyYXBwZXI6aG92ZXIgLmlucHV0Om5vdCg6LW1vei1yZWFkLW9ubHksIDpkaXNhYmxlZCkgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTMwMCk7CiAgfQogIC5pbnB1dDpob3Zlcjpub3QoOmRpc2FibGVkKSwKICAuaW5wdXRfX3dyYXBwZXI6aG92ZXIgLmlucHV0Om5vdCg6cmVhZC1vbmx5LCA6ZGlzYWJsZWQpIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeS0zMDApOwogIH0KfQouaW5wdXRfX3dyYXBwZXIgLmlucHV0OmlzKDpmb2N1cywgOmFjdGl2ZSk6bm90KDotbW96LXJlYWQtb25seSwgOmRpc2FibGVkKSB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLmlucHV0X193cmFwcGVyIC5pbnB1dDppcyg6Zm9jdXMsIDphY3RpdmUpOm5vdCg6cmVhZC1vbmx5LCA6ZGlzYWJsZWQpIHsKICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQouaW5wdXQtLXdpdGgtcHJlZml4IHsKICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2luZy00KSoyICsgMjRweCk7Cn0KLmlucHV0LS13aXRoLXN1ZmZpeCB7CiAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1zcGFjaW5nLTQpKjIgKyAyNHB4KTsKfQouaW5wdXRfX3ByZWZpeCwKLmlucHV0X19zdWZmaXggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKICBkaXNwbGF5OiBmbGV4OwogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBoZWlnaHQ6IDEwMCU7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAyNHB4Owp9Ci5pbnB1dF9fcHJlZml4IHsKICBsZWZ0OiB2YXIoLS1zcGFjaW5nLTQpOwp9Ci5pbnB1dF9fc3VmZml4IHsKICByaWdodDogdmFyKC0tc3BhY2luZy00KTsKfQppbnB1dFt0eXBlPWRhdGVdOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3IgewogIGJhY2tncm91bmQ6IG5vbmU7CiAgaGVpZ2h0OiAyNHB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogdmFyKC0tc3BhY2luZy00KTsKICB3aWR0aDogMjRweDsKICB6LWluZGV4OiAxOwp9CmlucHV0W3R5cGU9ZGF0ZV0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKfQppbnB1dDo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVlIHsKICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci5pbnB1dF9fc3VmZml4ICsgaW5wdXRbdHlwZT1kYXRlXTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yIHsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICBjb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmlucHV0X193cmFwcGVyIHsKICBkaXNwbGF5OiBmbGV4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLyogc3JjL2NvbXBvbmVudHMvYXRvbXMvU3RhdHVzQ2hpcC9TdGF0dXNDaGlwLmNzcyAqLwouc3RhdHVzLWNoaXAgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN0YXR1cy1jaGlwLWJhY2tncm91bmQtY29sb3IpOwogIGJvcmRlci1yYWRpdXM6IDRweDsKICBjb2xvcjogdmFyKC0tc3RhdHVzLWNoaXAtY29sb3IpOwogIGZvbnQ6IHZhcigtLXN1YnRleHQtbWVkaXVtKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTEpIHZhcigtLXNwYWNpbmctMik7Cn0KLnN0YXR1cy1jaGlwLS1zdWNjZXNzIHsKICAtLXN0YXR1cy1jaGlwLWJhY2tncm91bmQtY29sb3I6dmFyKC0tc3VjY2Vzcy01MDApOwogIC0tc3RhdHVzLWNoaXAtY29sb3I6dmFyKC0tbmV1dHJhbC0wMDApOwp9Ci5zdGF0dXMtY2hpcC0td2FybmluZyB7CiAgLS1zdGF0dXMtY2hpcC1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXdhcm5pbmctNTAwKTsKICAtLXN0YXR1cy1jaGlwLWNvbG9yOnZhcigtLW5ldXRyYWwtMDAwKTsKfQouc3RhdHVzLWNoaXAtLWVycm9yIHsKICAtLXN0YXR1cy1jaGlwLWJhY2tncm91bmQtY29sb3I6dmFyKC0tZXJyb3ItNTAwKTsKICAtLXN0YXR1cy1jaGlwLWNvbG9yOnZhcigtLW5ldXRyYWwtMDAwKTsKfQouc3RhdHVzLWNoaXAtLWRpc2FibGVkIHsKICAtLXN0YXR1cy1jaGlwLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbmV1dHJhbC00MDApOwogIC0tc3RhdHVzLWNoaXAtY29sb3I6dmFyKC0tbmV1dHJhbC0wMDApOwp9CgovKiBzcmMvY29tcG9uZW50cy9hdG9tcy9Td2l0Y2gvU3dpdGNoLmNzcyAqLwouc3dpdGNoX19sYWJlbCB7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5zd2l0Y2hfX3RodW1iIHsKICAtLXN3aXRjaC13aWR0aDo1MXB4OwogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tcHJpbWFyeS01MDApIDUwJSwgdmFyKC0tbmV1dHJhbC0yMDApIDUwJSk7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJTsKICBiYWNrZ3JvdW5kLXNpemU6IDIwMCU7CiAgYm9yZGVyLXJhZGl1czogMjRweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgaGVpZ2h0OiAzMXB4OwogIG1hcmdpbjogMDsKICBtaW4td2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7CiAgcGFkZGluZzogMDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7Cn0KLnN3aXRjaF9fdGh1bWIsCmJ1dHRvbi5zd2l0Y2hfX3RodW1iIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KYnV0dG9uLnN3aXRjaF9fdGh1bWIgewogIGJvcmRlcjogbm9uZTsKfQouc3dpdGNoX190aHVtYjpjaGVja2VkLAouc3dpdGNoX190aHVtYltkYXRhLXN0YXRlPWNoZWNrZWRdIHsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwOwp9Ci5zd2l0Y2hfX3RodW1iOmFmdGVyIHsKICAtLXN3aXRjaC10aHVtYi13aWR0aDoyN3B4OwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgYm94LXNoYWRvdzogMCAzcHggOHB4IHJnYmEoMCwgMCwgMCwgLjE1KSwgMCAzcHggMXB4IHJnYigwIDAgMC82JSk7CiAgY29udGVudDogIiI7CiAgaGVpZ2h0OiAyN3B4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDJweDsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KTsKICB3aWR0aDogdmFyKC0tc3dpdGNoLXRodW1iLXdpZHRoKTsKfQpidXR0b24uc3dpdGNoX190aHVtYjphZnRlciB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMy41cHggLSB2YXIoLS1zd2l0Y2gtdGh1bWItd2lkdGgpKSk7Cn0KLnN3aXRjaF9fdGh1bWI6Y2hlY2tlZDphZnRlciB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGModmFyKC0tc3dpdGNoLXdpZHRoKSAtIHZhcigtLXN3aXRjaC10aHVtYi13aWR0aCkgLSAycHgpKTsKfQpidXR0b24uc3dpdGNoX190aHVtYltkYXRhLXN0YXRlPWNoZWNrZWRdOmFmdGVyIHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMuNXB4KTsKfQouc3dpdGNoX19sYWJlbC0tZGlzYWJsZWQgewogIGN1cnNvcjogZGVmYXVsdDsKfQouc3dpdGNoX190aHVtYjpkaXNhYmxlZCB7CiAgYmFja2dyb3VuZDogdmFyKC0tbmV1dHJhbC0xMDApOwogIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KLnN3aXRjaF9fdGh1bWI6ZGlzYWJsZWQ6YWZ0ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3gtc2hhZG93OiBub25lOwp9CkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpuby1wcmVmZXJlbmNlKSB7CiAgLnN3aXRjaF9fdGh1bWIgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogNzVtczsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtcG9zaXRpb247CiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICB9CiAgLnN3aXRjaF9fdGh1bWI6YWZ0ZXIgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjE1czsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL2F0b21zL1RleHRBcmVhL1RleHRBcmVhLmNzcyAqLwoudGV4dC1hcmVhIHsKICBib3JkZXI6IG5vbmU7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1uZXV0cmFsLTQwMCk7CiAgZm9udDogdmFyKC0tYm9keS0yLXJlZ3VsYXIpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMyk7Cn0KLnRleHQtYXJlYVthcmlhLWludmFsaWQ9dHJ1ZV0gewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1lcnJvci01MDApOwp9Ci50ZXh0LWFyZWE6Oi1tb3otcGxhY2Vob2xkZXIgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTQwMCk7Cn0KLnRleHQtYXJlYTo6cGxhY2Vob2xkZXIgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTQwMCk7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC50ZXh0LWFyZWE6aG92ZXIgewogICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLXByaW1hcnktMzAwKTsKICB9Cn0KLnRleHQtYXJlYTpmb2N1cyB7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLXByaW1hcnktNTAwKTsKICBvdXRsaW5lOiBub25lOwp9CgovKiBzcmMvY29tcG9uZW50cy9hdG9tcy9Vbm9yZGVyZWRMaXN0L1Vub3JkZXJlZExpc3QuY3NzICovCi51bm9yZGVyZWQtbGlzdC0tY2hlY2sgPiBsaSB7CiAgLS1tb2JpbGUtY2hlY2s6dXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnIGZpbGw9J25vbmUnJTNFJTNDcGF0aCBmaWxsPSclMjMwMEFCOUUnIGQ9J004LjAwMi4wMzdjNC41MDQuNTMyIDkuMjc1IDEuODEgMTMuNDQzIDMuNjAyLjg5NC4zODUgMS41OTYuOTYgMi4wNCAxLjczLjQ0NC43Ny41OTIgMS42NjUuNDc4IDIuNjMyLS41MzIgNC41MDUtMS44MSA5LjI3Ni0zLjYwMiAxMy40NDMtLjM4NC44OTUtLjk2IDEuNTk3LTEuNzMgMi4wNDEtLjc3LjQ0NC0xLjY2NS41OTItMi42MzIuNDc4LTQuNTA1LS41MzItOS4yNzYtMS44MS0xMy40NDMtMy42MDItLjg5NS0uMzg1LTEuNTk3LS45Ni0yLjA0MS0xLjczLS40NDQtLjc3LS41OTItMS42NjUtLjQ3OC0yLjYzMy41MzItNC41MDQgMS44MS05LjI3NiAzLjYwMi0xMy40NDMuMzg1LS44OTQuOTYtMS41OTYgMS43My0yLjA0QzYuMTQuMDcgNy4wMzQtLjA3NyA4LjAwMi4wMzdaJy8lM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMS4yNScgZD0nTTE3LjMzMyA4LjMzMyAxMCAxNS42NjZsLTMuMzMzLTMuMzMzJy8lM0UlM0Mvc3ZnJTNFIik7CiAgLS1kZXNrdG9wLWNoZWNrOnVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzMyJyBoZWlnaHQ9JzMyJyBmaWxsPSdub25lJyB2aWV3Qm94PScwIDAgMjQgMjQnJTNFJTNDcGF0aCBmaWxsPSclMjMwMEFCOUUnIGQ9J004LjAwMi4wMzdjNC41MDQuNTMyIDkuMjc1IDEuODEgMTMuNDQzIDMuNjAyLjg5NC4zODUgMS41OTYuOTYgMi4wNCAxLjczLjQ0NC43Ny41OTIgMS42NjUuNDc4IDIuNjMyLS41MzIgNC41MDUtMS44MSA5LjI3Ni0zLjYwMiAxMy40NDMtLjM4NC44OTUtLjk2IDEuNTk3LTEuNzMgMi4wNDEtLjc3LjQ0NC0xLjY2NS41OTItMi42MzIuNDc4LTQuNTA1LS41MzItOS4yNzYtMS44MS0xMy40NDMtMy42MDItLjg5NS0uMzg1LTEuNTk3LS45Ni0yLjA0MS0xLjczLS40NDQtLjc3LS41OTItMS42NjUtLjQ3OC0yLjYzMy41MzItNC41MDQgMS44MS05LjI3NiAzLjYwMi0xMy40NDMuMzg1LS44OTQuOTYtMS41OTYgMS43My0yLjA0QzYuMTQuMDcgNy4wMzQtLjA3NyA4LjAwMi4wMzdaJy8lM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMS4yNScgZD0nTTE3LjMzMyA4LjMzMyAxMCAxNS42NjZsLTMuMzMzLTMuMzMzJy8lM0UlM0Mvc3ZnJTNFIik7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogdmFyKC0tc3BhY2luZy0zKTsKfQoudW5vcmRlcmVkLWxpc3QtLWNoZWNrID4gbGk6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1tb2JpbGUtY2hlY2spOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgY29udGVudDogIiI7CiAgaGVpZ2h0OiAyNHB4OwogIHdpZHRoOiAyNHB4Owp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAudW5vcmRlcmVkLWxpc3QtLWNoZWNrID4gbGk6YmVmb3JlIHsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWRlc2t0b3AtY2hlY2spOwogICAgaGVpZ2h0OiAzMnB4OwogICAgd2lkdGg6IDMycHg7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2FyZC9DYXJkQWN0aW9uL0NhcmRBY3Rpb24uY3NzICovCi5jYXJkX19oZWFkZXJfX2FjdGlvbiB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGZvbnQ6IHZhcigtLXN1YnRleHQtbWVkaXVtKTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmRfX2hlYWRlcl9fYWN0aW9uIHsKICAgIGZvbnQ6IHZhcigtLWJvZHktMS1tZWRpdW0pOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NhcmQvQ2FyZEJvZHkvQ2FyZEJvZHkuY3NzICovCi5jYXJkX19ib2R5IHsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTQpOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuY2FyZF9fYm9keSB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NhcmQvQ2FyZEVtcHR5U3RhdGUvQ2FyZEVtcHR5U3RhdGUuY3NzICovCi5jYXJkX19lbXB0eS1zdGF0ZSB7CiAgLS1jYXJkLWVtcHR5LXN0YXRlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tbmV1dHJhbC0xMDApOwogIC0tY2FyZC1lbXB0eS1zdGF0ZS1pY29uLWNvbG9yOnZhcigtLW5ldXRyYWwtODAwKTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC03MDApOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7Cn0KLmNhcmRfX2VtcHR5LXN0YXRlLS1lcnJvciB7CiAgLS1jYXJkLWVtcHR5LXN0YXRlLWJhY2tncm91bmQtY29sb3I6dmFyKC0tZXJyb3ItMjAwKTsKICAtLWNhcmQtZW1wdHktc3RhdGUtaWNvbi1jb2xvcjp2YXIoLS1lcnJvci01MDApOwp9Ci5jYXJkX19lbXB0eS1zdGF0ZS0tc3RhbmRhbG9uZSB7CiAgcGFkZGluZzogMDsKfQouY2FyZF9fZW1wdHktc3RhdGVfX3dyYXBwZXIgewogIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jYXJkLWVtcHR5LXN0YXRlLWJhY2tncm91bmQtY29sb3IpOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWFyZ2luOiBhdXRvOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNik7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5jYXJkX19lbXB0eS1zdGF0ZS0tc3RhbmRhbG9uZSAuY2FyZF9fZW1wdHktc3RhdGVfX3dyYXBwZXIgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgYm9yZGVyLXJhZGl1czogMDsKICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggdmFyKC0tbmV1dHJhbC0yMDApOwogIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTQpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQouY2FyZF9fZW1wdHktc3RhdGVfX2ljb24sCi5jYXJkX19lbXB0eS1zdGF0ZV9fdGl0bGUgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTgwMCk7Cn0KLmNhcmRfX2VtcHR5LXN0YXRlX19pY29uIHsKICBjb2xvcjogdmFyKC0tY2FyZC1lbXB0eS1zdGF0ZS1pY29uLWNvbG9yKTsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMyk7Cn0KLmNhcmRfX2VtcHR5LXN0YXRlX190aXRsZSB7CiAgZm9udC13ZWlnaHQ6IDgwMDsKICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLTIpOwp9Ci5jYXJkX19lbXB0eS1zdGF0ZS0tc3RhbmRhbG9uZSA6aXMoLmNhcmRfX2VtcHR5LXN0YXRlX190aXRsZSwgLmNhcmRfX2VtcHR5LXN0YXRlX19kZXNjcmlwdGlvbikgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIC5jYXJkX19lbXB0eS1zdGF0ZSB7CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1jYXJkLWJvcmRlci1yYWRpdXMpOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWNhcmQtYm9yZGVyLXJhZGl1cyk7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOwogIH0KICAuY2FyZF9fZW1wdHktc3RhdGUtLXN0YW5kYWxvbmUgewogICAgcGFkZGluZzogMDsKICB9CiAgLmNhcmRfX2VtcHR5LXN0YXRlX193cmFwcGVyIHsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctOCk7CiAgfQogIC5jYXJkX19lbXB0eS1zdGF0ZS0tc3RhbmRhbG9uZSAuY2FyZF9fZW1wdHktc3RhdGVfX3dyYXBwZXIgewogICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLW5ldXRyYWwtMjAwKTsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNik7CiAgfQogIC5jYXJkX19lbXB0eS1zdGF0ZV9fZGVzY3JpcHRpb24sCiAgLmNhcmRfX2VtcHR5LXN0YXRlX190aXRsZSB7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1heC13aWR0aDogNTI1cHg7CiAgfQogIC5jYXJkX19lbXB0eS1zdGF0ZS0tc3RhbmRhbG9uZSA6aXMoLmNhcmRfX2VtcHR5LXN0YXRlX190aXRsZSwgLmNhcmRfX2VtcHR5LXN0YXRlX19kZXNjcmlwdGlvbikgewogICAgbWF4LXdpZHRoOiB1bnNldDsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmRGb290ZXIvQ2FyZEZvb3Rlci5jc3MgKi8KLmNhcmRfX2Zvb3RlciB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmRfX2Zvb3RlciB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NhcmQvQ2FyZEhlYWRlci9DYXJkSGVhZGVyLmNzcyAqLwouY2FyZF9faGVhZGVyIHsKICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggdmFyKC0tbmV1dHJhbC0yMDApOwogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7Cn0KLmNhcmRfX2hlYWRlci0tc3RpY2t5IHsKICAtLWNhcmQtaGVhZGVyLXN0aWNreS10b3A6MDsKICBwb3NpdGlvbjogc3RpY2t5OwogIHRvcDogdmFyKC0tY2FyZC1oZWFkZXItc3RpY2t5LXRvcCk7CiAgei1pbmRleDogMTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmRfX2hlYWRlciB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOwogIH0KICAuY2FyZF9faGVhZGVyLmNhcmRfX2hlYWRlci0tdGFicyB7CiAgICBwYWRkaW5nOiAwOwogIH0KICAuY2FyZF9faGVhZGVyLmNhcmRfX2hlYWRlci0tdGFicyAudGFicyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmRJdGVtL0NhcmRJdGVtLmNzcyAqLwouY2FyZF9fYm9keV9faXRlbSB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGdhcDogdmFyKC0tc3BhY2luZy02KTsKfQouY2FyZF9fYm9keSAuY2FyZF9fYm9keV9faXRlbTpub3QoOmxhc3Qtb2YtdHlwZSkgewogIG1hcmdpbi1ib3R0b206IDE2cHg7Cn0KLmNhcmRfX2JvZHkgPiAuY2FyZF9fYm9keV9faXRlbTpvbmx5LW9mLXR5cGUgewogIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjaW5nLTQpOwp9Ci5jYXJkX19ib2R5X19pdGVtIC5saXN0LWl0ZW0ubGlzdC1pdGVtLS13aXRoLWRpdmlkZXIgewogIGJveC1zaGFkb3c6CiAgICBpbnNldCAxcHggMCAwIHZhcigtLW5ldXRyYWwtMjAwKSwKICAgIGluc2V0IC0xcHggMCAwIHZhcigtLW5ldXRyYWwtMjAwKSwKICAgIGluc2V0IDAgLTFweCB2YXIoLS1uZXV0cmFsLTIwMCk7Cn0KLmNhcmRfX2JvZHlfX2l0ZW06bGFzdC1vZi10eXBlIC5saXN0LWl0ZW0tLXdpdGgtZGl2aWRlciB7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuY2FyZF9fYm9keSAuY2FyZF9fYm9keV9faXRlbSB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTQpIDA7CiAgfQogIC5jYXJkX19ib2R5IC5jYXJkX19ib2R5X19pdGVtOm5vdCg6bGFzdC1vZi10eXBlKSB7CiAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggdmFyKC0tbmV1dHJhbC0yMDApOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgLmNhcmRfX2JvZHkgLmNhcmRfX2JvZHlfX2l0ZW06Zmlyc3Qtb2YtdHlwZSB7CiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy04KTsKICB9CiAgLmNhcmRfX2JvZHkgLmNhcmRfX2JvZHlfX2l0ZW06bGFzdC1vZi10eXBlIHsKICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTgpOwogIH0KICAuY2FyZF9fYm9keSAuY2FyZF9fYm9keV9faXRlbTpub3QoOmxhc3Qtb2YtdHlwZSwgOmZpcnN0LW9mLXR5cGUpIHsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctOCkgMDsKICB9CiAgLmNhcmRfX2JvZHkgLmNhcmRfX2JvZHlfX2l0ZW06b25seS1vZi10eXBlIHsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCkgMDsKICB9CiAgLmNhcmRfX2JvZHkgLmNhcmRfX2JvZHlfX2l0ZW06b25seS1jaGlsZCB7CiAgICBwYWRkaW5nOiAwOwogIH0KICAuY2FyZF9fYm9keSA+IC5jYXJkX19ib2R5X19pdGVtOm9ubHktb2YtdHlwZSB7CiAgICBwYWRkaW5nLXRvcDogMDsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmRTdWJ0aXRsZS9DYXJkU3VidGl0bGUuY3NzICovCi5jYXJkX19ib2R5X19zdWJ0aXRsZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogIGJveC1zaGFkb3c6IGluc2V0IC0xcHggMCB2YXIoLS1uZXV0cmFsLTIwMCksIGluc2V0IDFweCAwIHZhcigtLW5ldXRyYWwtMjAwKTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApOwogIGZvbnQ6IHZhcigtLXN1YnRleHQtcmVndWxhcik7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmRfX2JvZHlfX3N1YnRpdGxlIHsKICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCkgdmFyKC0tc3BhY2luZy02KTsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmRUaXRsZS9DYXJkVGl0bGUuY3NzICovCi5jYXJkX19oZWFkZXJfX3RpdGxlIHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTYwMCk7CiAgZGlzcGxheTogZmxleDsKICBmb250OiB2YXIoLS10aXRsZS0zLXJlZ3VsYXIpOwogIGdhcDogdmFyKC0tc3BhY2luZy0yKTsKfQouY2FyZF9faGVhZGVyX190aXRsZV9faWNvbiB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmRfX2hlYWRlcl9fdGl0bGUgewogICAgZm9udDogdmFyKC0tdGl0bGUtMi1yZWd1bGFyKTsKICAgIGdhcDogdmFyKC0tc3BhY2luZy00KTsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmQuY3NzICovCi5jYXJkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IHZhcigtLW5ldXRyYWwtMjAwKSwgaW5zZXQgMCAxcHggdmFyKC0tbmV1dHJhbC0yMDApOwp9Ci5jYXJkLS1kaXNhYmxlZCAqIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC01MDApICFpbXBvcnRhbnQ7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIC5jYXJkIHsKICAgIC0tY2FyZC1ib3JkZXItcmFkaXVzOnZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tY2FyZC1ib3JkZXItcmFkaXVzKTsKICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgICBoZWlnaHQ6IC1tb3otZml0LWNvbnRlbnQ7CiAgICBoZWlnaHQ6IGZpdC1jb250ZW50OwogIH0KICB1bC5jYXJkIC5saXN0LWl0ZW0gewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgfQogIHVsLmNhcmQgLmxpc3QtaXRlbSA+IDppcyhhLCBidXR0b24pOmZvY3VzIHsKICAgIGJveC1zaGFkb3c6CiAgICAgIGluc2V0IDAgMCAwIDFweCB2YXIoLS1uZXV0cmFsLTIwMCksCiAgICAgIGluc2V0IDAgMCAwIDNweCB2YXIoLS1uZXV0cmFsLTAwMCksCiAgICAgIGluc2V0IDAgMCAwIDVweCB2YXIoLS1wcmltYXJ5LTIwMCk7CiAgfQogIHVsLmNhcmQgOmlzKC5saXN0LWl0ZW06Zmlyc3Qtb2YtdHlwZSwgLmxpc3QtaXRlbTpmaXJzdC1vZi10eXBlIGEpIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogIH0KICB1bC5jYXJkIDppcygubGlzdC1pdGVtOmxhc3Qtb2YtdHlwZSwgLmxpc3QtaXRlbTpsYXN0LW9mLXR5cGUgYSkgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2FyZC9DYXJkSW1hZ2VWYXJpYW50LmNzcyAqLwouY2FyZC0taW1hZ2UgewogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWFyZ2luOiBhdXRvOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5jYXJkLS1pbWFnZSwKLmNhcmQtLWltYWdlIC5jYXJkX19pbGx1c3RyYXRpb24gewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKfQouY2FyZC0taW1hZ2UgLmNhcmRfX2hlYWRlcl9fdGl0bGUgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7CiAgZm9udDogdmFyKC0tdGl0bGUtMi1tZWRpdW0pOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMikgMDsKfQouY2FyZC0taW1hZ2UgLmNhcmRfX2JvZHkgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZvbnQ6IHZhcigtLWJvZHktMS1yZWd1bGFyKTsKICBtYXJnaW46IDAgYXV0byB2YXIoLS1zcGFjaW5nLTYpOwogIG1heC13aWR0aDogNDIwcHg7CiAgcGFkZGluZzogMDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLmNhcmQtLWltYWdlIC5jYXJkX19mb290ZXIgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBwYWRkaW5nOiAwOwogIHdpZHRoOiAxMDAlOwp9Ci5jYXJkLS1pbWFnZSAuY2FyZF9fZm9vdGVyID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTQpOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuY2FyZC0taW1hZ2UgewogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy02KSB2YXIoLS1zcGFjaW5nLTgpIHZhcigtLXNwYWNpbmctMTEpOwogIH0KICAuY2FyZC0taW1hZ2UgLmNhcmRfX2Zvb3RlciB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogIH0KICAuY2FyZC0taW1hZ2UgLmNhcmRfX2Zvb3RlciA+IDpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICBtYXJnaW46IDA7CiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2luZy00KTsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DYXJkL0NhcmRMaXN0L0NhcmRMaXN0LmNzcyAqLwouY2FyZC1saXN0ID4gLmNhcmQ6bm90KDpsYXN0LWNoaWxkKSB7CiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmNhcmQtbGlzdCB7CiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNpbmctOCk7CiAgfQogIC5jYXJkLWxpc3QgPiAuY2FyZDpub3QoOmxhc3QtY2hpbGQpIHsKICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctNik7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hlY2tib3gvQ2hlY2tib3guY3NzICovCi5jaGVja2JveCB7CiAgLS1jaGVja2JveC13aWR0aDoyNHB4OwogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTQpOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgOmlzKC5jaGVja2JveF9faW5wdXQsIC5jaGVja2JveF9fbGFiZWwpOmhvdmVyIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICB9Cn0KLmNoZWNrYm94LS1uZXV0cmFsLAouY2hlY2tib3gtLXByaW1hcnkgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLmNoZWNrYm94X19jb250ZW50IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZm9udDogdmFyKC0tYm9keS0xLXJlZ3VsYXIpOwogIGdhcDogdmFyKC0tc3BhY2luZy0yKTsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQouY2hlY2tib3hfX3NwaW5uZXIgewogIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnktNTAwKTsKfQouY2hlY2tib3hfX2NoZWNrLAouY2hlY2tib3hfX3NwaW5uZXIgewogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW5ldXRyYWwtMzAwKTsKICBib3JkZXItcmFkaXVzOiA2cHg7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGhlaWdodDogdmFyKC0tY2hlY2tib3gtd2lkdGgpOwogIG1pbi13aWR0aDogdmFyKC0tY2hlY2tib3gtd2lkdGgpOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgdmlzaWJpbGl0eTogdW5zZXQ7Cn0KLmNoZWNrYm94LmNoZWNrYm94LS1lcnJvciAuY2hlY2tib3hfX2NoZWNrIHsKICBib3JkZXItY29sb3I6IHZhcigtLWVycm9yLTUwMCk7Cn0KLmNoZWNrYm94X19pbnB1dCB7CiAgaGVpZ2h0OiB2YXIoLS1jaGVja2JveC13aWR0aCk7CiAgbWFyZ2luOiAwOwogIG9wYWNpdHk6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiB2YXIoLS1jaGVja2JveC13aWR0aCk7CiAgei1pbmRleDogMTA7Cn0KLmNoZWNrYm94X19pbnB1dCB+IC5jaGVja2JveF9fY2hlY2sgcGF0aCB7CiAgc3Ryb2tlOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC03NTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLmNoZWNrYm94X19pbnB1dDpob3ZlciB+IC5jaGVja2JveF9fY2hlY2sgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MCk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICB9Cn0KLmNoZWNrYm94X19pbnB1dDpmb2N1cy13aXRoaW4gfiAuY2hlY2tib3hfX2NoZWNrIHsKICBvdXRsaW5lOiAxcHggc29saWQgdmFyKC0tcHJpbWFyeS01MDApOwogIG91dGxpbmUtb2Zmc2V0OiAycHg7Cn0KLmNoZWNrYm94X19pbnB1dDpub3QoOmluZGV0ZXJtaW5hdGUpOmlzKDpjaGVja2VkLCBbYXJpYS1jaGVja2VkPXRydWVdKSB+IC5jaGVja2JveF9fY2hlY2sgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQouY2hlY2tib3hfX2lucHV0Om5vdCg6aW5kZXRlcm1pbmF0ZSk6aXMoOmNoZWNrZWQsIFthcmlhLWNoZWNrZWQ9dHJ1ZV0pIH4gLmNoZWNrYm94X19jaGVjayBwYXRoIHsKICBzdHJva2UtZGFzaG9mZnNldDogMDsKfQouY2hlY2tib3hfX2lucHV0Om5vdCg6aW5kZXRlcm1pbmF0ZSk6ZGlzYWJsZWQgfiAuY2hlY2tib3hfX2NoZWNrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTMwMCk7Cn0KLmNoZWNrYm94X19sYWJlbCB7CiAgZm9udDogdmFyKC0tYm9keS0xLXJlZ3VsYXIpOwp9Ci5jaGVja2JveF9faGludCB7CiAgZm9udDogdmFyKC0tYm9keS0yLXJlZ3VsYXIpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQouY2hlY2tib3hfX2Vycm9yIHsKICBjb2xvcjogdmFyKC0tZXJyb3ItNTAwKTsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwp9Ci5jaGVja2JveF9faW5wdXQ6aW5kZXRlcm1pbmF0ZSB7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2UpIHsKICAuY2hlY2tib3hfX2NoZWNrIHsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjI1cyBlYXNlLWluLW91dDsKICB9CiAgLmNoZWNrYm94X19jaGVjayBwYXRoIHsKICAgIHRyYW5zaXRpb246IHN0cm9rZS1kYXNob2Zmc2V0IC4zNXMgZWFzZS1vdXQ7CiAgfQogIC5jaGVja2JveF9fc3Bpbm5lciBjaXJjbGU6bGFzdC1vZi10eXBlIHsKICAgIGFuaW1hdGlvbjogYnV0dG9uLXNwaW5uZXIgMXMgZWFzZSBpbmZpbml0ZTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjsKICB9CiAgQGtleWZyYW1lcyBjaGVja2JveC1zcGlubmVyIHsKICAgIDAlIHsKICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMHR1cm4pOwogICAgfQogICAgdG8gewogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybik7CiAgICB9CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ29tYm9ib3gvQ29tYm9ib3guY3NzICovCi5jb21ib2JveCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CnVsW3JvbGU9bGlzdGJveF0uY29tYm9ib3hfX2xpc3QtLW9wZW4gewogIGRpc3BsYXk6IGJsb2NrOwp9CnVsW3JvbGU9bGlzdGJveF0gewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBkaXNwbGF5OiBub25lOwogIGZpbHRlcjogZHJvcC1zaGFkb3coMCAzcHggOHB4IHJnYig0NiA1OSA4Ni8xMCUpKTsKICBmb250OiB2YXIoLS1ib2R5LTItcmVndWxhcik7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTEpOwogIG1heC1oZWlnaHQ6IDE2NXB4OwogIG92ZXJmbG93OiBzY3JvbGw7CiAgb3ZlcmZsb3cteDogaGlkZGVuOwogIHBhZGRpbmc6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxMDAlOwogIHotaW5kZXg6IDEwMDA7Cn0KdWxbcm9sZT1saXN0Ym94XSBsaVtyb2xlPW9wdGlvbl0gewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTQwMCk7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0zKSB2YXIoLS1zcGFjaW5nLTQpOwp9CnVsW3JvbGU9bGlzdGJveF0gbGlbcm9sZT1vcHRpb25dOm5vdCg6bGFzdC1jaGlsZCkgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTEwMCk7Cn0KLmNvbWJvYm94X19saXN0LWl0ZW0tLXNlbGVjdGVkIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC04MDApOwogIGZvbnQ6IHZhcigtLWJvZHktMi1tZWRpdW0pOwp9Ci5jb21ib2JveF9fbGlzdC1pdGVtLS1oaWdobGlnaHQgewogIGJhY2tncm91bmQ6IHZhcigtLW5ldXRyYWwtMTAwKTsKfQouY29tYm9ib3hfX2xpc3QtaXRlbS0tbG9hZGluZyB7CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIGhlaWdodDogNDhweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwp9Ci5jb21ib2JveF9fbGlzdC1pdGVtLS1sb2FkaW5nOmFmdGVyIHsKICBhbmltYXRpb246IGJ1dHRvbi1zcGlubmVyIDFzIGVhc2UgaW5maW5pdGU7CiAgYm9yZGVyOiA0cHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGJvcmRlci10b3A6IDRweCBzb2xpZCB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgY29udGVudDogIiI7CiAgaGVpZ2h0OiAxNnB4OwogIGluc2V0OiAwOwogIG1hcmdpbjogYXV0bzsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDE2cHg7Cn0KLmNvbWJvYm94X19saXN0LWl0ZW0tLWVtcHR5IHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC04MDApOwogIGN1cnNvcjogZGVmYXVsdDsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctNCk7Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9EZXNjcmlwdGlvbkxpc3QvRGVzY3JpcHRpb25MaXN0LmNzcyAqLwouZGVzY3JpcHRpb24tbGlzdC0tZm9ybSBkdCB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwogIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctMSk7Cn0KLmRlc2NyaXB0aW9uLWxpc3QtLWZvcm0gZGQgewogIGZvbnQ6IHZhcigtLWJvZHktMi1tZWRpdW0pOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuZGVzY3JpcHRpb24tbGlzdC0tZm9ybSBkdCB7CiAgICBjb2xvcjogdmFyKC0tbmV1dHJhbC04MDApOwogICAgZm9udDogdmFyKC0tYm9keS0xLXJlZ3VsYXIpOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgLmRlc2NyaXB0aW9uLWxpc3QtLWZvcm0gZGQgewogICAgZm9udDogdmFyKC0tYm9keS0xLW1lZGl1bSk7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvRGVzY3JpcHRpb25MaXN0L0Rlc2NyaXB0aW9uQWN0aW9uL0Rlc2NyaXB0aW9uQWN0aW9uLmNzcyAqLwouZGVzY3JpcHRpb24tbGlzdF9fYWN0aW9uIHsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LW1lZGl1bSk7Cn0KLmRlc2NyaXB0aW9uLWxpc3RfX2FjdGlvbiA+IGEgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuZGVzY3JpcHRpb24tbGlzdF9faXRlbSAuZGVzY3JpcHRpb24tbGlzdF9fYWN0aW9uIHsKICAgIGZvbnQ6IHZhcigtLWJvZHktMS1tZWRpdW0pOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0Rlc2NyaXB0aW9uTGlzdC9EZXNjcmlwdGlvbkNvbnRlbnQvRGVzY3JpcHRpb25Db250ZW50LmNzcyAqLwpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmRlc2NyaXB0aW9uLWxpc3RfX2NvbnRlbnQgewogICAgZGlzcGxheTogZmxleDsKICAgIGdhcDogdmFyKC0tc3BhY2luZy00KTsKICB9CiAgLmRlc2NyaXB0aW9uLWxpc3RfX2NvbnRlbnQgPiAqIHsKICAgIGZsZXg6IDE7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvRGVzY3JpcHRpb25MaXN0L0Rlc2NyaXB0aW9uSXRlbS9EZXNjcmlwdGlvbkl0ZW0uY3NzICovCi5kZXNjcmlwdGlvbi1saXN0X19pdGVtIHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGRpc3BsYXk6IGZsZXg7Cn0KLmRlc2NyaXB0aW9uLWxpc3RfX2l0ZW0gPiAqIHsKICBmbGV4OiAxOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvRGVzY3JpcHRpb25MaXN0L0Rlc2N0aXB0aW9uU3VmZml4L0Rlc2NyaXB0aW9uU3VmZml4LmNzcyAqLwouZGVzY3JpcHRpb24tbGlzdF9fc3VmZml4IHsKICBmbGV4OiAwOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvRGlhbG9nL0RpYWxvZy5jc3MgKi8KLmRpYWxvZ1tvcGVuXTo6YmFja2Ryb3AgewogIGJhY2tncm91bmQ6IHZhcigtLW5ldXRyYWwtNjAwKTsKICBvcGFjaXR5OiAuMjU7Cn0KYm9keTpoYXMoZGlhbG9nW29wZW5dKSB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQpkaWFsb2c6bm90KFtvcGVuXSkgewogIHZpc2liaWxpdHk6IGhpZGRlbjsKfQpkaWFsb2c6Zm9jdXMgewogIG91dGxpbmU6IG5vbmU7Cn0KLmRpYWxvZyB7CiAgYm9yZGVyOiBub25lOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBib3gtc2hhZG93OgogICAgMCA3NnB4IDgwcHggcmdiKDAgMCAwLzclKSwKICAgIDAgMjFweCAyNHB4IHJnYigwIDAgMC81JSksCiAgICAwIDhweCAxMHB4IHJnYigwIDAgMC80JSksCiAgICAwIDNweCAzcHggcmdiKDAgMCAwLzIlKTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy00KTsKICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS1zcGFjaW5nLTQpKjIpOwogIG1heC13aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tc3BhY2luZy00KSoyKTsKICBwYWRkaW5nOiAwOwogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgd2lkdGg6IDEwMCU7CiAgei1pbmRleDogMTAwOwp9Ci5kaWFsb2dfX2hlYWRlciB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOHB4OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA4cHg7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IHZhcigtLXNwYWNpbmctNCk7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIHBvc2l0aW9uOiBzdGlja3k7CiAgdG9wOiAwOwogIHotaW5kZXg6IDEwMDA7Cn0KLmRpYWxvZ19faGVhZGVyX19pY29uIHsKICBkaXNwbGF5OiBmbGV4Owp9Ci5kaWFsb2dfX2hlYWRlcl9fdGl0bGUgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKICBkaXNwbGF5OiBmbGV4OwogIGZvbnQ6IHZhcigtLXRpdGxlLTItbWVkaXVtKTsKICBnYXA6IHZhcigtLXNwYWNpbmctNCk7Cn0KLmRpYWxvZ19faGVhZGVyX190aXRsZTpmb2N1cyB7CiAgb3V0bGluZTogbm9uZTsKfQouZGlhbG9nX19ib2R5LAouZGlhbG9nX19mb290ZXIsCi5kaWFsb2dfX2hlYWRlciB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KTsKfQouZGlhbG9nX19ib2R5IHsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9Ci5kaWFsb2dfX2JvZHksCi5kaWFsb2dfX2Zvb3RlciB7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IHZhcigtLXNwYWNpbmctNCk7Cn0KLmRpYWxvZ19fZm9vdGVyIHsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogOHB4OwogIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1uZXV0cmFsLTIwMCk7CiAgYm90dG9tOiAwOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogIHBvc2l0aW9uOiBzdGlja3k7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIC5kaWFsb2dfX2JvZHksCiAgLmRpYWxvZ19fZm9vdGVyLAogIC5kaWFsb2dfX2hlYWRlciB7CiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTYpOwogIH0KICAuZGlhbG9nX19ib2R5IHsKICAgIGdhcDogdmFyKC0tc3BhY2luZy02KTsKICB9CiAgLmRpYWxvZyB7CiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjaW5nLTgpOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICB9CiAgLmRpYWxvZ19fZm9vdGVyIHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgfQp9CkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpuby1wcmVmZXJlbmNlKSB7CiAgLmRpYWxvZ1tvcGVuXS5kaWFsb2ctLWFuaW1hdGVkIHsKICAgIGFuaW1hdGlvbjogem9vbS1pbiAuMTVzOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7CiAgfQogIC5kaWFsb2c6bm90KFtvcGVuXSkuZGlhbG9nLS1hbmltYXRlZCB7CiAgICBhbmltYXRpb246IHpvb20tb3V0IC4xNXM7CiAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IC4xNXM7CiAgfQogIC5kaWFsb2dbb3Blbl0uZGlhbG9nLS1hbmltYXRlZDo6YmFja2Ryb3AgewogICAgYW5pbWF0aW9uOiBmYWRlLWluIC4xNXM7CiAgfQogIC5kaWFsb2c6bm90KFtvcGVuXSkuZGlhbG9nLS1hbmltYXRlZDo6YmFja2Ryb3AgewogICAgYW5pbWF0aW9uOiBmYWRlLW91dCAuMTVzOwogIH0KfQpAa2V5ZnJhbWVzIHpvb20taW4gewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTsKICB9CiAgMC4wMDAwMDAwMDAxJSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45NSwgLjk1LCAuOTUpOwogIH0KfQpAa2V5ZnJhbWVzIHpvb20tb3V0IHsKICB0byB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZTNkKC45NSwgLjk1LCAuOTUpOwogIH0KfQpAa2V5ZnJhbWVzIGZhZGUtaW4gewogIDAlIHsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CkBrZXlmcmFtZXMgZmFkZS1vdXQgewogIDAlIHsKICAgIG9wYWNpdHk6IC4yNTsKICB9CiAgdG8gewogICAgb3BhY2l0eTogMDsKICB9Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9MaXN0SXRlbS9MaXN0SXRlbS5jc3MgKi8KLmxpc3QtaXRlbSwKLmxpc3QtaXRlbSA+IDppcyhhLCBidXR0b24pIHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9Ci5saXN0LWl0ZW0gewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5saXN0LWl0ZW06bm90KC5saXN0LWl0ZW0tLXdpdGgtbGluayksCi5saXN0LWl0ZW0gPiA6aXMoYSwgYnV0dG9uKSB7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy02KSB2YXIoLS1zcGFjaW5nLTQpOwp9Ci5saXN0LWl0ZW0gPiA6aXMoYSwgYnV0dG9uKSB7CiAgYmFja2dyb3VuZDogbm9uZTsKICBib3JkZXI6IG5vbmU7CiAgY29sb3I6IGluaGVyaXQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGZvbnQ6IGluaGVyaXQ7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQteHRyYSk7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOwogIHRleHQtYWxpZ246IGxlZnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHdpZHRoOiAxMDAlOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAubGlzdC1pdGVtID4gOmlzKGEsIGJ1dHRvbik6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogICAgYm9yZGVyOiBub25lOwogIH0KfQoubGlzdC1pdGVtID4gOmlzKGEsIGJ1dHRvbik6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAzcHggdmFyKC0tbmV1dHJhbC0wMDApLCBpbnNldCAwIDAgMCA1cHggdmFyKC0tcHJpbWFyeS0yMDApOwogIG91dGxpbmU6IG5vbmU7Cn0KLmxpc3QtaXRlbSA+IDppcyhhLCBidXR0b24pOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MCk7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQoubGlzdC1pdGVtLS13aXRoLWRpdmlkZXIgewogIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCB2YXIoLS1uZXV0cmFsLTIwMCk7Cn0KLmxpc3QtaXRlbS0tZGlzYWJsZWQgewogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci5saXN0LWl0ZW0tLWRlc3RydWN0aXZlIHsKICBjb2xvcjogdmFyKC0tZXJyb3ItNTAwKTsKfQoubGlzdC1pdGVtLmxpc3QtaXRlbS0tZGVzdHJ1Y3RpdmUgLmxpc3QtaXRlbTpub3QoLmxpc3QtaXRlbS0td2l0aC1saW5rKTpmb2N1cywKLmxpc3QtaXRlbS5saXN0LWl0ZW0tLWRlc3RydWN0aXZlID4gOmlzKGEsIGJ1dHRvbik6Zm9jdXMgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1uZXV0cmFsLTAwMCksIGluc2V0IDAgMCAwIDVweCB2YXIoLS1lcnJvci0yMDApOwp9Ci5saXN0LWl0ZW0ubGlzdC1pdGVtLS1kZXN0cnVjdGl2ZSAubGlzdC1pdGVtOm5vdCgubGlzdC1pdGVtLS13aXRoLWxpbmspOmFjdGl2ZSwKLmxpc3QtaXRlbS5saXN0LWl0ZW0tLWRlc3RydWN0aXZlID4gOmlzKGEsIGJ1dHRvbik6YWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1lcnJvci0yMDApOwogIGJveC1zaGFkb3c6IGluc2V0IDJweCAwIHZhcigtLXByaW1hcnktNTAwKTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLmxpc3QtaXRlbTpub3QoLmxpc3QtaXRlbS0td2l0aC1saW5rKSwKICAubGlzdC1pdGVtID4gOmlzKGEsIGJ1dHRvbikgewogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy02KTsKICB9CiAgLmxpc3QtaXRlbS0td2l0aC1kaXZpZGVyOmxhc3Qtb2YtdHlwZSB7CiAgICBib3gtc2hhZG93OiBub25lOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0xpc3RJdGVtL0xpc3RJdGVtQ29udGVudC9MaXN0SXRlbUNvbnRlbnQuY3NzICovCi5saXN0LWl0ZW1fX2NvbnRlbnQgewogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTQpOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvTGlzdEl0ZW0vTGlzdEl0ZW1NZXRhL0xpc3RJdGVtTWV0YS5jc3MgKi8KLmxpc3QtaXRlbV9fbWV0YSB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvTGlzdEl0ZW0vTGlzdEl0ZW1QcmVmaXgvTGlzdEl0ZW1QcmVmaXguY3NzICovCi5saXN0LWl0ZW1fX3ByZWZpeCB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBjb2xvcjogaW5oZXJpdDsKICBkaXNwbGF5OiBmbGV4Owp9Ci5saXN0LWl0ZW0ubGlzdC1pdGVtLS1kZXN0cnVjdGl2ZTpub3QoLmxpc3QtaXRlbS0td2l0aC1saW5rKTphY3RpdmUgLmxpc3QtaXRlbV9fcHJlZml4LAoubGlzdC1pdGVtLmxpc3QtaXRlbS0tZGVzdHJ1Y3RpdmUgPiA6aXMoYSwgYnV0dG9uKTphY3RpdmUgLmxpc3QtaXRlbV9fcHJlZml4IHsKICBjb2xvcjogdmFyKC0tZXJyb3ItNTAwKTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0xpc3RJdGVtL0xpc3RJdGVtU3VidGl0bGUvTGlzdEl0ZW1TdWJ0aXRsZS5jc3MgKi8KLmxpc3QtaXRlbV9fc3VidGl0bGUgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTUwMCk7CiAgZm9udDogdmFyKC0tc3VidGV4dC1yZWd1bGFyKTsKfQoubGlzdC1pdGVtLS1kaXNhYmxlZCAubGlzdC1pdGVtX19zdWJ0aXRsZSB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMzAwKTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0xpc3RJdGVtL0xpc3RJdGVtU3VmZml4L0xpc3RJdGVtU3VmZml4LmNzcyAqLwoubGlzdC1pdGVtX19zdWZmaXggewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKfQoubGlzdC1pdGVtLS13aXRoLWxpbmsgLmxpc3QtaXRlbV9fc3VmZml4IHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApOwp9Ci5saXN0LWl0ZW0tLWRpc2FibGVkIC5saXN0LWl0ZW1fX3N1ZmZpeCB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMzAwKTsKfQoubGlzdC1pdGVtLS13aXRoLWxpbmsgOmlzKGEsIGJ1dHRvbik6YWN0aXZlIC5saXN0LWl0ZW1fX3N1ZmZpeCB7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0xpc3RJdGVtL0xpc3RJdGVtVGV4dC9MaXN0SXRlbVRleHQuY3NzICovCi5saXN0LWl0ZW1fX3RleHQgewogIGNvbG9yOiBpbmhlcml0OwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoubGlzdC1pdGVtLmxpc3QtaXRlbS5saXN0LWl0ZW0tLWRlc3RydWN0aXZlOm5vdCgubGlzdC1pdGVtLS13aXRoLWxpbmspOmFjdGl2ZSAubGlzdC1pdGVtX190ZXh0LAoubGlzdC1pdGVtLmxpc3QtaXRlbS5saXN0LWl0ZW0tLWRlc3RydWN0aXZlID4gOmlzKGEsIGJ1dHRvbik6YWN0aXZlIC5saXN0LWl0ZW1fX3RleHQgewogIGNvbG9yOiB2YXIoLS1lcnJvci01MDApOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvTGlzdEl0ZW0vTGlzdEl0ZW1UaXRsZS9MaXN0SXRlbVRpdGxlLmNzcyAqLwoubGlzdC1pdGVtX190aXRsZSB7CiAgZm9udC13ZWlnaHQ6IDUwMDsKfQoubGlzdC1pdGVtLS1kaXNhYmxlZCAubGlzdC1pdGVtX190aXRsZSB7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNTAwKTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lbnUvQ29udGVudC9Db250ZW50LmNzcyAqLwoubWVudV9fbGlzdCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwogIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1vZGFsKSwgaW5zZXQgMCAwIDAgMXB4IHZhcigtLW5ldXRyYWwtMTAwKTsKICBtYXJnaW4tdG9wOiAxMHB4OwogIG1pbi13aWR0aDogMjIwcHg7CiAgb3BhY2l0eTogMDsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpIDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRyYW5zZm9ybTogc2NhbGUoLjgpOwogIHZpc2liaWxpdHk6IGhpZGRlbjsKICB6LWluZGV4OiAxMDAwMDA7Cn0KLm1lbnVfX2xpc3QsCi5tZW51X19saXN0ID4gdWwgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KLm1lbnVfX2xpc3QgPiB1bCB7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTEpOwp9Ci5tZW51X19saXN0LS1hY3RpdmUgewogIG9wYWNpdHk6IDE7CiAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9Ci5tZW51X19saXN0LS1sZWZ0IHsKICBsZWZ0OiAwOwogIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0Owp9Ci5tZW51X19saXN0LS1yaWdodCB7CiAgcmlnaHQ6IDA7CiAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIHJpZ2h0Owp9CkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpuby1wcmVmZXJlbmNlKSB7CiAgLm1lbnVfX2xpc3QgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjE1czsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6CiAgICAgIHRyYW5zZm9ybSwKICAgICAgb3BhY2l0eSwKICAgICAgcm90YXRlLAogICAgICB2aXNpYmlsaXR5OwogICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvTWVudS9NZW51SXRlbS9NZW51SXRlbS5jc3MgKi8KLm1lbnVfX2xpc3QtaXRlbSB7CiAgZGlzcGxheTogZmxleDsKfQoubWVudV9fbGlzdC1pdGVtID4gKiB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgYm9yZGVyOiAwOwogIGNvbG9yOiBpbmhlcml0OwogIGN1cnNvcjogcG9pbnRlcjsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBmb250OiBpbmhlcml0OwogIGdhcDogdmFyKC0tc3BhY2luZy00KTsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgbWFyZ2luOiAwIDFweDsKICBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDJweCk7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KSB2YXIoLS1zcGFjaW5nLTYpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB3aWR0aDogMTAwJTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLm1lbnVfX2xpc3QtaXRlbSA+IDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTEwMCk7CiAgfQp9Ci5tZW51X19saXN0LWl0ZW0gPiA6Zm9jdXMgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1uZXV0cmFsLTAwMCksIGluc2V0IDAgMCAwIDVweCB2YXIoLS1wcmltYXJ5LTIwMCk7CiAgb3V0bGluZTogbm9uZTsKfQoubWVudV9fbGlzdC1pdGVtID4gOmFjdGl2ZSB7CiAgYm94LXNoYWRvdzogbm9uZTsKfQoubWVudV9fbGlzdC1pdGVtID4gOmFjdGl2ZSwKLm1lbnVfX2xpc3QtaXRlbSA+IDphY3RpdmU6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTEwMCk7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQoubWVudV9fbGlzdC1pdGVtID4gOmFjdGl2ZTpiZWZvcmUgewogIGJveC1zaGFkb3c6IGluc2V0IDJweCAwIDAgMCB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLm1lbnVfX2xpc3QtaXRlbSAuYnV0dG9uIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5tZW51X19saXN0LWl0ZW0gLmJ1dHRvbi0td2l0aC1pY29uIHsKICBnYXA6IHZhcigtLXNwYWNpbmctNCk7Cn0KLm1lbnVfX2xpc3QtaXRlbS0tbG9nb3V0IC5idXR0b24gewogIGNvbG9yOiB2YXIoLS1lcnJvci01MDApOwp9Ci5tZW51X19saXN0LWl0ZW0tLWxvZ291dCAuYnV0dG9uOmZvY3VzIHsKICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAzcHggdmFyKC0tbmV1dHJhbC0wMDApLCBpbnNldCAwIDAgMCA1cHggcmdiYSgyNTUsIDkyLCA5MiwgLjEpOwp9Ci5tZW51X19saXN0LWl0ZW0tLWxvZ291dCAuYnV0dG9uOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDkyLCA5MiwgLjEpOwogIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi8qIHNyYy9jb21wb25lbnRzL21vbGVjdWxlcy9NZW51L1RyaWdnZXIvVHJpZ2dlci5jc3MgKi8KLm1lbnVfX3RyaWdnZXJbYXJpYS1leHBhbmRlZD10cnVlXSB7CiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4IHZhcigtLXByaW1hcnktNTAwKTsKfQoubWVudV9fdHJpZ2dlclthcmlhLWV4cGFuZGVkPXRydWVdIC5idXR0b25fX2ljb24tcmlnaHQgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKfQpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246bm8tcHJlZmVyZW5jZSkgewogIC5tZW51X190cmlnZ2VyIC5idXR0b25fX2ljb24tcmlnaHQgewogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjE1czsKICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lbnUvTWVudS5jc3MgKi8KLm1lbnUgewogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7CiAgZm9udDogdmFyKC0tc3VidGV4dC1tZWRpdW0pOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NlY3Rpb25NZXNzYWdlL1NlY3Rpb25NZXNzYWdlLmNzcyAqLwouc2VjdGlvbi1tZXNzYWdlIHsKICAtLXNlY3Rpb24tbWVzc2FnZS1jb2xvcjp2YXIoLS1uZXV0cmFsLTAwMCk7CiAgLS1zZWN0aW9uLW1lc3NhZ2UtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1uZXV0cmFsLTgwMCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VjdGlvbi1tZXNzYWdlLWJhY2tncm91bmQtY29sb3IpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMykgdmFyKC0tc3BhY2luZy00KTsKfQouc2VjdGlvbi1tZXNzYWdlLAouc2VjdGlvbi1tZXNzYWdlX19pY29uIHsKICBjb2xvcjogdmFyKC0tc2VjdGlvbi1tZXNzYWdlLWNvbG9yKTsKfQouc2VjdGlvbi1tZXNzYWdlLS1pbmZvIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5zZWN0aW9uLW1lc3NhZ2UtLXByaW1hcnkgewogIC0tc2VjdGlvbi1tZXNzYWdlLWNvbG9yOnZhcigtLXByaW1hcnktNzAwKTsKICAtLXNlY3Rpb24tbWVzc2FnZS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXByaW1hcnktNTApOwp9Ci5zZWN0aW9uLW1lc3NhZ2UtLXN1Y2Nlc3MgewogIC0tc2VjdGlvbi1tZXNzYWdlLWNvbG9yOnZhcigtLXN1Y2Nlc3MtNTAwKTsKICAtLXNlY3Rpb24tbWVzc2FnZS1iYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXN1Y2Nlc3MtMjAwKTsKfQouc2VjdGlvbi1tZXNzYWdlLS13YXJuaW5nIHsKICAtLXNlY3Rpb24tbWVzc2FnZS1jb2xvcjp2YXIoLS13YXJuaW5nLTUwMCk7CiAgLS1zZWN0aW9uLW1lc3NhZ2UtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS13YXJuaW5nLTIwMCk7Cn0KLnNlY3Rpb24tbWVzc2FnZS0tZXJyb3IgewogIC0tc2VjdGlvbi1tZXNzYWdlLWNvbG9yOnZhcigtLWVycm9yLTUwMCk7CiAgLS1zZWN0aW9uLW1lc3NhZ2UtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1lcnJvci0yMDApOwp9Ci5zZWN0aW9uLW1lc3NhZ2UtLWRpc2FibGVkIHsKICAtLXNlY3Rpb24tbWVzc2FnZS1jb2xvcjp2YXIoLS1uZXV0cmFsLTYwMCk7CiAgLS1zZWN0aW9uLW1lc3NhZ2UtYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1uZXV0cmFsLTIwMCk7Cn0KLnNlY3Rpb24tbWVzc2FnZV9faWNvbiB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGhlaWdodDogMjRweDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICB3aWR0aDogMjRweDsKfQouc2VjdGlvbi1tZXNzYWdlX19pY29uLS1pbmZvIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwp9Ci5zZWN0aW9uLW1lc3NhZ2VfX2ljb24tLXByaW1hcnkgewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLnNlY3Rpb24tbWVzc2FnZV9fZGVzY3JpcHRpb24sCi5zZWN0aW9uLW1lc3NhZ2VfX3RpdGxlIHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGRpc3BsYXk6IGZsZXg7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOwp9Ci5zZWN0aW9uLW1lc3NhZ2VfX2Rlc2NyaXB0aW9uIHsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwp9Ci5zZWN0aW9uLW1lc3NhZ2VfX2FjdGlvbiwKLnNlY3Rpb24tbWVzc2FnZV9fdGl0bGUgKyAuc2VjdGlvbi1tZXNzYWdlX19kZXNjcmlwdGlvbiB7CiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy0yKTsKfQouc2VjdGlvbi1tZXNzYWdlX19hY3Rpb24gewogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMSkgMDsKfQouc2VjdGlvbi1tZXNzYWdlX19hY3Rpb24gOmlzKGEsIHAsIGJ1dHRvbikgewogIGNvbG9yOiBpbmhlcml0OwogIGZvbnQ6IHZhcigtLXN1YnRleHQtbWVkaXVtKTsKICBwYWRkaW5nOiAwOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB3aWR0aDogLW1vei1maXQtY29udGVudDsKICB3aWR0aDogZml0LWNvbnRlbnQ7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC5zZWN0aW9uLW1lc3NhZ2VfX2FjdGlvbiAuYW5jaG9yOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS1zZWN0aW9uLW1lc3NhZ2UtY29sb3IpOwogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQp9Ci5zZWN0aW9uLW1lc3NhZ2VfX2FjdGlvbiAuYW5jaG9yOmFjdGl2ZSwKLnNlY3Rpb24tbWVzc2FnZV9fYWN0aW9uIC5hbmNob3I6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlY3Rpb24tbWVzc2FnZS1iYWNrZ3JvdW5kLWNvbG9yKTsKICBib3gtc2hhZG93OiAwIDAgMCB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLXNlY3Rpb24tbWVzc2FnZS1iYWNrZ3JvdW5kLWNvbG9yKSwgMCAwIDAgMTBweCB2YXIoLS1zZWN0aW9uLW1lc3NhZ2UtY29sb3IpOwogIGNvbG9yOiB2YXIoLS1zZWN0aW9uLW1lc3NhZ2UtY29sb3IpOwp9Ci5zZWN0aW9uLW1lc3NhZ2UtLWRpc2FibGVkIDppcyhhLCBwLCBidXR0b24pIHsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAuc2VjdGlvbi1tZXNzYWdlIHsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KSB2YXIoLS1zcGFjaW5nLTUpOwogIH0KICAuc2VjdGlvbi1tZXNzYWdlX19kZXNjcmlwdGlvbiB7CiAgICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1Bob25lTnVtYmVyL1Bob25lTnVtYmVyLmNzcyAqLwoucGhvbmUtbnVtYmVyIHsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogdmFyKC0tc3BhY2luZy0yKTsKfQoucGhvbmUtbnVtYmVyIC5pbnB1dF9fd3JhcHBlciB7CiAgZmxleC1ncm93OiAxOwp9Ci5waG9uZS1udW1iZXIgLnBob25lLW51bWJlcl9fY291bnRyeS1jb2RlLXNlbGVjdCB7CiAgaGVpZ2h0OiAxMDAlOwogIHdpZHRoOiA5NnB4Owp9CgovKiBzcmMvY29tcG9uZW50cy9hdG9tcy9TZWxlY3QvU2VsZWN0LmNzcyAqLwouc2VsZWN0LXdyYXBwZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQouc2VsZWN0LXdyYXBwZXI6YWZ0ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtOTAwKTsKICBjb250ZW50OiAiIjsKICBoZWlnaHQ6IDI0cHg7CiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgZmlsbD0nbm9uZSclM0UlM0NwYXRoIHN0cm9rZT0nJTIzMDAwJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMS41JyBkPSdtOCAxMCA0IDQgNC00Jy8lM0UlM0Mvc3ZnJTNFIik7CiAgbWFzay1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnIGZpbGw9J25vbmUnJTNFJTNDcGF0aCBzdHJva2U9JyUyMzAwMCcgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzEuNScgZD0nbTggMTAgNCA0IDQtNCcvJTNFJTNDL3N2ZyUzRSIpOwogIC13ZWJraXQtbWFzay1wb3NpdGlvbjogY2VudGVyOwogIG1hc2stcG9zaXRpb246IGNlbnRlcjsKICAtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7CiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDsKICAtd2Via2l0LW1hc2stc2l6ZTogY292ZXI7CiAgbWFzay1zaXplOiBjb3ZlcjsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IHZhcigtLXNwYWNpbmctNCk7CiAgdG9wOiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwogIHdpZHRoOiAyNHB4Owp9Ci5zZWxlY3QgewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbmV1dHJhbC0yMDApOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogIGNvbG9yOiB2YXIoLS1uZXV0cmFsLTkwMCk7CiAgZm9udDogdmFyKC0tYm9keS0yLXJlZ3VsYXIpOwogIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctMykgdmFyKC0tc3BhY2luZy00KTsKICB3aWR0aDogMTAwJTsKfQouc2VsZWN0LS13aXRoLXBsYWNlaG9sZGVyIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwp9CkBtZWRpYSAoaG92ZXI6aG92ZXIpIHsKICAuc2VsZWN0OmhvdmVyIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeS0zMDApOwogIH0KfQouc2VsZWN0OmZvY3VzIHsKICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBvdXRsaW5lOiBub25lOwp9Ci5zZWxlY3Qtd3JhcHBlci0tZm9jdXM6YWZ0ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NlZ21lbnRlZENvbnRyb2wvU2VnbWVudGVkQ29udHJvbC5jc3MgKi8KLnNlZ21lbnRlZC1jb250cm9sX19saXN0LAouc2VnbWVudGVkLWNvbnRyb2xfX3BhbmVsIHsKICBkaXNwbGF5OiBub25lOwp9Ci5oYXMtanMgLnNlZ21lbnRlZC1jb250cm9sX19saXN0LAouaGFzLWpzIC5zZWdtZW50ZWQtY29udHJvbF9fcGFuZWwgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5oYXMtanMgLnNlZ21lbnRlZC1jb250cm9sIFtyb2xlPXRhYnBhbmVsXVtkYXRhLXN0YXRlPWluYWN0aXZlXSB7CiAgZGlzcGxheTogbm9uZTsKfQouc2VnbWVudGVkLWNvbnRyb2wgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKfQouc2VnbWVudGVkLWNvbnRyb2xfX2xpc3RfX3dyYXBwZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMTAwKTsKICBib3JkZXItcmFkaXVzOiA4cHg7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IHZhcigtLXNwYWNpbmctMik7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0xKTsKfQouc2VnbWVudGVkLWNvbnRyb2xfX3RyaWdnZXIgewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogbm9uZTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZmxleDogMTsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LW1lZGl1bSk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLXNwYWNpbmctNCk7CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQouc2VnbWVudGVkLWNvbnRyb2xfX3RyaWdnZXJbZGF0YS1zdGF0ZT1hY3RpdmVdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKfQouc2VnbWVudGVkLWNvbnRyb2xfX3RyaWdnZXJbZGF0YS1zdGF0ZT1hY3RpdmVdOmZvY3VzLXZpc2libGUgewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDNweCB2YXIoLS1wcmltYXJ5LTUwMCksIGluc2V0IDAgMCAwIDVweCB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgb3V0bGluZTogbm9uZTsKfQpAbWVkaWEgKGhvdmVyOmhvdmVyKSB7CiAgLnNlZ21lbnRlZC1jb250cm9sX190cmlnZ2VyW2RhdGEtc3RhdGU9aW5hY3RpdmVdOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKICB9Cn0KLnNlZ21lbnRlZC1jb250cm9sX190cmlnZ2VyW2RhdGEtc3RhdGU9aW5hY3RpdmVdOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3gtc2hhZG93OiBpbnNldCAwIC0ycHggdmFyKC0tcHJpbWFyeS01MDApOwp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvVGFicy9UYWJzLmNzcyAqLwoudGFicyB7CiAgZGlzcGxheTogbm9uZTsKfQoudGFicy5zZWdtZW50ZWQtY29udHJvbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0xMDApOwogIGJvcmRlci1yYWRpdXM6IDhweDsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogdmFyKC0tc3BhY2luZy0yKTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTEpOwogIHdpZHRoOiAxMDAlOwp9Ci50YWJzLnNlZ21lbnRlZC1jb250cm9sIC50YWJzX19saW5rIHsKICB3aWR0aDogMTAwJTsKfQoudGFicy5zZWdtZW50ZWQtY29udHJvbCBhIHsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtNjAwKTsKICBkaXNwbGF5OiBibG9jazsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LW1lZGl1bSk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTIpIHZhcigtLXNwYWNpbmctNCk7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci50YWJzLnNlZ21lbnRlZC1jb250cm9sIGEuYWN0aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMDAwKTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLnRhYnMsCiAgLnRhYnMuc2VnbWVudGVkLWNvbnRyb2wgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwogICAgZGlzcGxheTogZmxleDsKICAgIGZvbnQ6IHZhcigtLWJvZHktMi1tZWRpdW0pOwogICAgZ2FwOiB2YXIoLS1zcGFjaW5nLTgpOwogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KSB2YXIoLS1zcGFjaW5nLTgpIDAgdmFyKC0tc3BhY2luZy04KTsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICB0b3A6IHZhcigtLXNpdGUtaGVhZGVyLWhlaWdodCk7CiAgICB6LWluZGV4OiAxNTsKICB9CiAgLnRhYnMuc2VnbWVudGVkLWNvbnRyb2wgLnRhYnNfX2xpbmsgewogICAgd2lkdGg6IGF1dG87CiAgfQogIC50YWJzIGEsCiAgLnRhYnMudGFicy5zZWdtZW50ZWQtY29udHJvbCBhIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZm9udDogdmFyKC0tYm9keS0yLXJlZ3VsYXIpOwogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy00KSAwOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIH0KICAudGFicyBhLmFjdGl2ZSwKICAudGFicy50YWJzLnNlZ21lbnRlZC1jb250cm9sIGEuYWN0aXZlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICAgIGZvbnQ6IHZhcigtLWJvZHktMi1tZWRpdW0pOwogIH0KICAudGFicyBhOmJlZm9yZSB7CiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICBjb250ZW50OiBhdHRyKGRhdGEtdGV4dCk7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQ6IHZhcigtLWJvZHktMi1tZWRpdW0pOwogICAgaGVpZ2h0OiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICB9CiAgQG1lZGlhIChob3Zlcjpob3ZlcikgewogICAgLnRhYnMgYTpmb2N1cyB7CiAgICAgIG91dGxpbmU6IG5vbmU7CiAgICB9CiAgICAudGFicyBhOm5vdCguYWN0aXZlKTpob3ZlcjphZnRlciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtMzAwKTsKICAgICAgYm90dG9tOiAwOwogICAgICBjb250ZW50OiAiIjsKICAgICAgaGVpZ2h0OiAycHg7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CiAgfQogIC50YWJzIGE6bm90KC5hY3RpdmUpOmZvY3VzOmFmdGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktMzAwKTsKICB9CiAgLnRhYnMgYS5hY3RpdmU6YWZ0ZXIsCiAgLnRhYnMgYTpub3QoLmFjdGl2ZSk6Zm9jdXM6YWZ0ZXIgewogICAgYm90dG9tOiAwOwogICAgY29udGVudDogIiI7CiAgICBoZWlnaHQ6IDJweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAxMDAlOwogIH0KICAudGFicyBhLmFjdGl2ZTphZnRlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvVG9hc3QvVG9hc3QuY3NzICovCi50b2FzdCB7CiAgLS1zbGlkZS1pbi1lbmQ6MDsKICAtLXNsaWRlLWluLXN0YXJ0OmNhbGMoMTAwJSArIHZhcigtLXNwYWNpbmctOCkpOwogIGFuaW1hdGlvbjogc2xpZGUtaW4gMG1zLCBzbGlkZS1vdXQgMG1zIDVzIGZvcndhcmRzOwogIGJvdHRvbTogdmFyKC0tc3BhY2luZy00KTsKICBoZWlnaHQ6IGF1dG87CiAgbGVmdDogdmFyKC0tc3BhY2luZy00KTsKICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLTQpOwogIHBvc2l0aW9uOiBmaXhlZDsKICB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tc3BhY2luZy00KSoyKTsKfQoudG9hc3QtLWVycm9yIHsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiKDIzMCA0NSA1MC81JSksIHJnYigyMzAgNDUgNTAvNSUpKSwgdmFyKC0tbmV1dHJhbC0wMDApOwogIGJveC1zaGFkb3c6CiAgICBpbnNldCAycHggMCB2YXIoLS1lcnJvci00MDApLAogICAgMCA3NnB4IDgwcHggcmdiKDAgMCAwLzclKSwKICAgIDAgMjFweCAyNHB4IHJnYigwIDAgMC81JSksCiAgICAwIDhweCAxMHB4IHJnYigwIDAgMC80JSksCiAgICAwIDNweCAzcHggcmdiKDAgMCAwLzIlKTsKICBjb2xvcjogdmFyKC0tZXJyb3ItNTAwKTsKfQoudG9hc3QtLWluZm8gewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5ldXRyYWwtODAwKTsKICBib3gtc2hhZG93OgogICAgaW5zZXQgMnB4IDAgdmFyKC0tcHJpbWFyeS01MDApLAogICAgMCA3NnB4IDgwcHggcmdiKDAgMCAwLzclKSwKICAgIDAgMjFweCAyNHB4IHJnYigwIDAgMC81JSksCiAgICAwIDhweCAxMHB4IHJnYigwIDAgMC80JSksCiAgICAwIDNweCAzcHggcmdiKDAgMCAwLzIlKTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwp9Ci50b2FzdF9fdGl0bGUgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKICBmb250OiB2YXIoLS1ib2R5LTItcmVndWxhcik7CiAgZ2FwOiB2YXIoLS1zcGFjaW5nLTIpOwp9Ci50b2FzdF9fdGl0bGVfX2ljb24gewogIGRpc3BsYXk6IGZsZXg7Cn0KLnRvYXN0LS1pbmZvIC50b2FzdF9fdGl0bGVfX2ljb24gewogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NHJlbSkgewogIC50b2FzdCB7CiAgICAtLXNsaWRlLWluLXN0YXJ0OmNhbGMoMTAwJSArIHZhcigtLXNwYWNpbmctMTIpKTsKICAgIGJvdHRvbTogdmFyKC0tc3BhY2luZy0xMCk7CiAgICBsZWZ0OiBhdXRvOwogICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy02KTsKICAgIHJpZ2h0OiB2YXIoLS1zcGFjaW5nLTEwKTsKICAgIHdpZHRoOiA0MjBweDsKICB9Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2UpIHsKICAudG9hc3QgewogICAgYW5pbWF0aW9uOiBzbGlkZS1pbiAuM3MgZWFzZS1vdXQsIHNsaWRlLW91dCAuM3MgZWFzZS1pbiA1cyBmb3J3YXJkczsKICB9Cn0KQGtleWZyYW1lcyBzbGlkZS1pbiB7CiAgMCUgewogICAgb3BhY2l0eTogLjg7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tc2xpZGUtaW4tc3RhcnQpKTsKICB9CiAgdG8gewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCh2YXIoLS1zbGlkZS1pbi1lbmQpKTsKICB9Cn0KQGtleWZyYW1lcyBzbGlkZS1vdXQgewogIDAlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tc2xpZGUtaW4tZW5kKSk7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IC44OwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLXNsaWRlLWluLXN0YXJ0KSk7CiAgfQp9CgovKiBzcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvVG9nZ2xlL1RvZ2dsZS5jc3MgKi8KLnRvZ2dsZSB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTEwMCk7CiAgYm9yZGVyLXJhZGl1czogOHB4OwogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy0yKTsKfQoudG9nZ2xlX19pdGVtIHsKICB3aWR0aDogMTAwJTsKfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1N0ZXBzL1N0ZXBzLmNzcyAqLwouc3RlcHMgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXdyYXA6IHdyYXA7Cn0KLnN0ZXBzX19saW5rIGEsCi5zdGVwc19fbGluayBzcGFuIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQouc3RlcHNfX2xpbmsgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgZGlzcGxheTogZmxleDsKfQouc3RlcHNfX2xpbmsgLnN0ZXBzX19saW5rX19jaGFyYWN0ZXIgewogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwogIGRpc3BsYXk6IGZsZXg7CiAgZm9udDogdmFyKC0tc3VidGV4dC1tZWRpdW0pOwogIGhlaWdodDogdmFyKC0tc3BhY2luZy02KTsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmctMik7CiAgd2lkdGg6IHZhcigtLXNwYWNpbmctNik7Cn0KLnN0ZXBzX19saW5rX19kaXZpZGVyIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC00MDApOwogIG1hcmdpbjogMCB2YXIoLS1zcGFjaW5nLTQpOwp9Ci5zdGVwc19fbGluazpmaXJzdC1vZi10eXBlIC5zdGVwc19fbGlua19fZGl2aWRlciB7CiAgZGlzcGxheTogbm9uZTsKfQouc3RlcHNfX2xpbmsuYWN0aXZlIC5zdGVwc19fbGlua19fY2hhcmFjdGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KLnN0ZXBzX19saW5rLmFjdGl2ZSAuc3RlcHNfX2xpbmtfX2RpdmlkZXIsCi5zdGVwc19fbGluay5hY3RpdmUgYSB7CiAgY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjY0cmVtKSB7CiAgLnN0ZXBzX19saW5rX19kaXZpZGVyIHsKICAgIG1hcmdpbjogMCB2YXIoLS1zcGFjaW5nLTYpOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1RpbWVsaW5lL1RpbWVsaW5lLmNzcyAqLwoudGltZWxpbmUtY29udGFpbmVyLm1vYmlsZS1vbmx5IHsKICBkaXNwbGF5OiBub25lOwp9Ci50aW1lbGluZS1jb250YWluZXIgewogIHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2luZy0zKTsKfQoudGltZWxpbmUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTAwKTsKICBtYXJnaW46IDAgYXV0bzsKfQoudGltZWxpbmUuaG9yaXpvbnRhbCB7CiAgaGVpZ2h0OiAxcHg7CiAgd2lkdGg6IDEwMCU7Cn0KLnRpbWVsaW5lLnZlcnRpY2FsIHsKICBoZWlnaHQ6IDEwMCU7CiAgd2lkdGg6IDFweDsKfQoudGltZWxpbmVfX2xhYmVsIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uZXV0cmFsLTAwMCk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcHJpbWFyeS01MDApOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMtbWQpOwogIGNvbG9yOiB2YXIoLS1wcmltYXJ5LTUwMCk7CiAgaGVpZ2h0OiAzMnB4OwogIHRyYW5zZm9ybTogcm90YXRlKDIwZGVnKTsKICB3aWR0aDogMzJweDsKICB6LWluZGV4OiAxMDsKfQoudGltZWxpbmVfX2xhYmVsLmhvcml6b250YWwgewogIG1hcmdpbi1sZWZ0OiAtMTcwcHg7CiAgcG9zaXRpb246IGFic29sdXRlOwp9Ci50aW1lbGluZV9fbGFiZWwudmVydGljYWwgewogIG1hcmdpbjogdmFyKC0tc3BhY2luZy02KSBhdXRvIDA7Cn0KLnRpbWVsaW5lX19sYWJlbC0tcHJpbWFyeSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MDApOwogIGJvcmRlcjogbm9uZTsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC0wMDApOwp9Ci50aW1lbGluZV9fbGFiZWwtY29udGVudCB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGhlaWdodDogMTAwJTsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtMjBkZWcpOwogIHdpZHRoOiAxMDAlOwp9Ci50aW1lbGluZS1jb250YWluZXIuaG9yaXpvbnRhbDpub3QoLm1vYmlsZS1vbmx5KSB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGhlaWdodDogNTBweDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICB3aWR0aDogMTAwJTsKfQoudGltZWxpbmUtY29udGFpbmVyLnZlcnRpY2FsOm5vdCgubW9iaWxlLW9ubHkpIHsKICBkaXNwbGF5OiBncmlkOwp9Ci50aW1lbGluZSwKLnRpbWVsaW5lX19sYWJlbCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGdyaWQtYXJlYTogMS8xOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NjRyZW0pIHsKICAudGltZWxpbmUtY29udGFpbmVyLmhvcml6b250YWwgewogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBoZWlnaHQ6IDUwcHg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHBhZGRpbmc6IDA7CiAgICB3aWR0aDogMTAwJTsKICB9CiAgLnRpbWVsaW5lLWNvbnRhaW5lci52ZXJ0aWNhbCB7CiAgICBkaXNwbGF5OiBncmlkOwogIH0KfQoKLyogc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0Zvcm1Hcm91cC9Gb3JtR3JvdXAuY3NzICovCi5mb3JtLWdyb3VwIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi8qIHNyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9Gb3JtR3JvdXAvSGludC9IaW50LmNzcyAqLwouZm9ybS1ncm91cF9fZXJyb3IsCi5mb3JtLWdyb3VwX19oaW50IHsKICBmb250OiB2YXIoLS1zdWJ0ZXh0LXJlZ3VsYXIpOwogIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctMSk7CiAgd2lkdGg6IC1tb3otZml0LWNvbnRlbnQ7CiAgd2lkdGg6IGZpdC1jb250ZW50Owp9Ci5mb3JtLWdyb3VwX19oaW50IHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApOwp9Ci5mb3JtLWdyb3VwX19lcnJvciB7CiAgY29sb3I6IHZhcigtLWVycm9yLTUwMCk7Cn0KCi8qIHNyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9Gb3JtR3JvdXAvTGFiZWwvTGFiZWwuY3NzICovCi5mb3JtLWl0ZW1fX2xhYmVsIHsKICBjb2xvcjogdmFyKC0tbmV1dHJhbC02MDApOwogIGZvbnQ6IHZhcigtLXN1YnRleHQtcmVndWxhcik7CiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy0xKTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB3aWR0aDogLW1vei1maXQtY29udGVudDsKICB3aWR0aDogZml0LWNvbnRlbnQ7Cn0KCi8qIHNyYy9jb21wb25lbnRzL2F0b21zL1JhZGlvL1JhZGlvLmNzcyAqLwoucmFkaW8tZ3JvdXAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IHZhcigtLXNwYWNpbmctNCk7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5yYWRpb19faW5wdXQtd3JhcHBlciB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogdmFyKC0tc3BhY2luZy0zKTsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLnJhZGlvX19sYWJlbCB7CiAgY3Vyc29yOiBwb2ludGVyOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoucmFkaW9fX2lucHV0IHsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLW5ldXRyYWwtMzAwKTsKICBib3JkZXItcmFkaXVzOiA1MCU7CiAgY29sb3I6IHZhcigtLW5ldXRyYWwtMzAwKTsKICBkaXNwbGF5OiBncmlkOwogIGZvbnQ6IGluaGVyaXQ7CiAgaGVpZ2h0OiB2YXIoLS1zcGFjaW5nLTYpOwogIG1hcmdpbjogMDsKICBtaW4td2lkdGg6IHZhcigtLXNwYWNpbmctNik7CiAgcGxhY2UtY29udGVudDogY2VudGVyOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoucmFkaW9fX2lucHV0OmlzKDpjaGVja2VkLCA6Zm9jdXMsIDpmb2N1cy13aXRoaW4sIDphY3RpdmUpIHsKICBvdXRsaW5lOiBub25lOwp9Ci5yYWRpb19faW5wdXQ6aXMoOmNoZWNrZWQsIDphY3RpdmUpIHsKICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1wcmltYXJ5LTUwMCk7Cn0KQG1lZGlhIChob3Zlcjpob3ZlcikgewogIC5yYWRpb19faW5wdXQ6bm90KDpkaXNhYmxlZCwgOmZvY3VzLXdpdGhpbiwgOmFjdGl2ZSwgOmNoZWNrZWQpOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktNTApOwogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcHJpbWFyeS01MDApOwogIH0KfQoucmFkaW9fX2lucHV0OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS01MDApOwogIGJvcmRlci1yYWRpdXM6IDUwJTsKICBjb250ZW50OiAiIjsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiA1MCU7CiAgdG9wOiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNTAlLCAtNTAlKTsKICB3aWR0aDogMDsKfQoucmFkaW9fX2lucHV0OmNoZWNrZWQ6YmVmb3JlIHsKICBoZWlnaHQ6IDEycHg7CiAgd2lkdGg6IDEycHg7Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2UpIHsKICAucmFkaW9fX2lucHV0OmJlZm9yZSB7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuMTVzOwogICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogd2lkdGgsIGhlaWdodDsKICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDsKICB9Cn0K";
773
773
  var Ns = { exports: {} }, Le = {}, Ss = { exports: {} }, ks = {};
774
774
  /**
775
775
  * @license React
@@ -8987,7 +8987,7 @@ class sh extends HTMLElement {
8987
8987
  async connectedCallback() {
8988
8988
  const t = this.attachShadow({ mode: "open" });
8989
8989
  uh(t);
8990
- const n = Rd(t), r = (await import("./App-a6a528b7.mjs")).default;
8990
+ const n = Rd(t), r = (await import("./App-036ed3f0.mjs")).default;
8991
8991
  n.render(
8992
8992
  /* @__PURE__ */ nr.jsx(
8993
8993
  r,
@@ -1,4 +1,4 @@
1
- import { c as f } from "./index-70801a88.mjs";
1
+ import { c as f } from "./index-293d70cb.mjs";
2
2
  export {
3
3
  f as default
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myxtra/authentication-green",
3
- "version": "1.3.1-alpha.0",
3
+ "version": "1.3.1",
4
4
  "main": "./dist/xtra-authentication.mjs",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -19,9 +19,9 @@
19
19
  "translations:pull": "crowdin pull && prettier --write './src/assets/locales'"
20
20
  },
21
21
  "dependencies": {
22
- "@myxtra/authentication-react": "1.7.1-alpha.0",
23
- "@myxtra/shared": "1.7.0-alpha.0",
24
- "@myxtra/ui-react": "1.7.1-alpha.0",
22
+ "@myxtra/authentication-react": "1.7.1",
23
+ "@myxtra/shared": "1.7.0",
24
+ "@myxtra/ui-react": "1.7.1",
25
25
  "@tanstack/react-query": "^4.32.0",
26
26
  "clsx": "^2.0.0",
27
27
  "i18next": "^22.5.1",