tide-design-system 2.4.0 → 2.4.2

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.
Files changed (42) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/tide-design-system.cjs +2 -2
  3. package/dist/tide-design-system.esm.d.ts +17 -17
  4. package/dist/tide-design-system.esm.js +8 -8
  5. package/netlify.toml +3 -0
  6. package/package.json +5 -3
  7. package/src/components/TideCard.vue +1 -1
  8. package/src/components/TideChipAction.vue +1 -1
  9. package/src/components/TideImage.vue +1 -1
  10. package/src/components/TideImageBackground.vue +2 -2
  11. package/src/components/TideInputCheckboxDeprecated.vue +2 -2
  12. package/src/components/TideInputRadioDeprecated.vue +2 -2
  13. package/src/components/TideInputTextDeprecated.vue +2 -2
  14. package/src/stories/FoundationsBorder.stories.ts +25 -13
  15. package/src/stories/FoundationsTypography.stories.ts +24 -0
  16. package/src/types/Storybook.ts +10 -0
  17. package/vite.config.sandbox.ts +29 -0
  18. package/dist/css/fonts.css +0 -36
  19. package/dist/css/grid-layout.css +0 -34
  20. package/dist/css/main.css +0 -5
  21. package/dist/css/realm/aero.css +0 -25
  22. package/dist/css/realm/atv.css +0 -25
  23. package/dist/css/realm/boatmart.css +0 -25
  24. package/dist/css/realm/cycle.css +0 -24
  25. package/dist/css/realm/equipment.css +0 -25
  26. package/dist/css/realm/pwc.css +0 -25
  27. package/dist/css/realm/rv.css +0 -25
  28. package/dist/css/realm/snow.css +0 -25
  29. package/dist/css/realm/truck.css +0 -25
  30. package/dist/css/reset.css +0 -95
  31. package/dist/css/storybook.css +0 -17
  32. package/dist/css/utilities-base.css +0 -545
  33. package/dist/css/utilities-responsive.css +0 -2737
  34. package/dist/css/utilities.css +0 -16
  35. package/dist/css/variables.css +0 -205
  36. package/dist/utilities/event.ts +0 -4
  37. package/dist/utilities/format.ts +0 -184
  38. package/dist/utilities/forms.ts +0 -22
  39. package/dist/utilities/storybook.ts +0 -352
  40. package/dist/utilities/validation-deprecated.ts +0 -252
  41. package/dist/utilities/validation.ts +0 -132
  42. package/dist/utilities/viewport.ts +0 -63
@@ -1303,7 +1303,7 @@ const dt = {
1303
1303
  _: 1
1304
1304
  }, 8, ["class", "href"]));
1305
1305
  }
1306
- }), $o = /* @__PURE__ */ x(ys, [["__scopeId", "data-v-98f24c4f"]]), bs = /* @__PURE__ */ P({
1306
+ }), $o = /* @__PURE__ */ x(ys, [["__scopeId", "data-v-07bbeec7"]]), bs = /* @__PURE__ */ P({
1307
1307
  __name: "TideCarousel",
1308
1308
  props: {
1309
1309
  bleed: { default: void 0 },
@@ -1506,7 +1506,7 @@ const dt = {
1506
1506
  _: 1
1507
1507
  }, 8, ["class", "href", "target"]));
1508
1508
  }
1509
- }), zo = /* @__PURE__ */ x(Us, [["__scopeId", "data-v-2f57438d"]]), Bs = /* @__PURE__ */ P({
1509
+ }), zo = /* @__PURE__ */ x(Us, [["__scopeId", "data-v-483e4d18"]]), Bs = /* @__PURE__ */ P({
1510
1510
  __name: "TideChipFilter",
1511
1511
  props: {
1512
1512
  isActive: { type: Boolean },
@@ -1656,7 +1656,7 @@ const dt = {
1656
1656
  }, null, 42, Ys)
1657
1657
  ], 6));
1658
1658
  }
1659
- }), Ws = /* @__PURE__ */ x(Xs, [["__scopeId", "data-v-beafed0f"]]), Vs = /* @__PURE__ */ P({
1659
+ }), Ws = /* @__PURE__ */ x(Xs, [["__scopeId", "data-v-4ce98c1f"]]), Vs = /* @__PURE__ */ P({
1660
1660
  __name: "TideImageBackground",
1661
1661
  props: {
1662
1662
  alt: { default: "" },
@@ -1691,7 +1691,7 @@ const dt = {
1691
1691
  K(i.$slots, "default", {}, void 0, !0)
1692
1692
  ], 2));
1693
1693
  }
1694
- }), jo = /* @__PURE__ */ x(Vs, [["__scopeId", "data-v-0d40d1c6"]]), $s = {
1694
+ }), jo = /* @__PURE__ */ x(Vs, [["__scopeId", "data-v-8f2f8198"]]), $s = {
1695
1695
  key: 0,
1696
1696
  class: /* @__PURE__ */ r(["tide-indicator-label"])
1697
1697
  }, Ks = /* @__PURE__ */ P({
@@ -2004,7 +2004,7 @@ const Zs = ["for"], js = ["checked", "disabled", "name", "id"], Js = /* @__PURE_
2004
2004
  ], 10, ti)) : g("", !0)
2005
2005
  ], 2));
2006
2006
  }
2007
- }), sn = /* @__PURE__ */ x(ii, [["__scopeId", "data-v-f2c2a903"]]), oi = ["for"], ni = ["disabled", "name", "value", "id"], ai = /* @__PURE__ */ P({
2007
+ }), sn = /* @__PURE__ */ x(ii, [["__scopeId", "data-v-345366c5"]]), oi = ["for"], ni = ["disabled", "name", "value", "id"], ai = /* @__PURE__ */ P({
2008
2008
  __name: "TideInputRadio",
2009
2009
  props: /* @__PURE__ */ ue({
2010
2010
  disabled: { type: Boolean, default: !1 },
@@ -2147,7 +2147,7 @@ const Zs = ["for"], js = ["checked", "disabled", "name", "id"], Js = /* @__PURE_
2147
2147
  ], 10, ri)
2148
2148
  ], 2));
2149
2149
  }
2150
- }), nn = /* @__PURE__ */ x(di, [["__scopeId", "data-v-644264c2"]]), an = {
2150
+ }), nn = /* @__PURE__ */ x(di, [["__scopeId", "data-v-9fc90442"]]), an = {
2151
2151
  NUMBER: oe,
2152
2152
  PHONE: vs,
2153
2153
  PRICE: As
@@ -2917,7 +2917,7 @@ const mi = ["for"], gi = ["disabled", "name", "required", "id"], pi = ["label"],
2917
2917
  ], 2)) : g("", !0)
2918
2918
  ], 2));
2919
2919
  }
2920
- }), un = /* @__PURE__ */ x(Gi, [["__scopeId", "data-v-06b25fb2"]]), xi = ["for"], wi = ["maxlength", "minlength", "name", "required", "rows", "id"], Hi = /* @__PURE__ */ P({
2920
+ }), un = /* @__PURE__ */ x(Gi, [["__scopeId", "data-v-fde9724b"]]), xi = ["for"], wi = ["maxlength", "minlength", "name", "required", "rows", "id"], Hi = /* @__PURE__ */ P({
2921
2921
  __name: "TideInputTextarea",
2922
2922
  props: /* @__PURE__ */ ue({
2923
2923
  error: { default: "" },
@@ -4667,4 +4667,4 @@ export {
4667
4667
  ln as VALIDATOR,
4668
4668
  en as useTideForm
4669
4669
  };
4670
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmVzbS5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCcmVhZENydW1icy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2FyZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBBY3Rpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBGaWx0ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBJbnB1dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ29sdW1ucy52dWUiLCIuLi9zcmMvdHlwZXMvSW1hZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlQmFja2dyb3VuZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlRm9ybS50cyIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpb0RlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3Jtcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWFEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9CcmVha3BvaW50LnRzIiwiLi4vc3JjL3V0aWxpdGllcy92aWV3cG9ydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNb2RhbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUGFnaW5hdGlvbi52dWUiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9jb3JlL2Rpc3QvZmxvYXRpbmctdWkuY29yZS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdnVlL2Rpc3QvZmxvYXRpbmctdWkudnVlLm1qcyIsIi4uL3NyYy91dGlsaXRpZXMvZXZlbnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUG9wb3Zlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU2VvTGlua3MudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNoZWV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBPUklFTlRBVElPTiA9IHtcbiAgSE9SSVpPTlRBTDogJ2hvcml6b250YWwnLFxuICBWRVJUSUNBTDogJ3ZlcnRpY2FsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gKHR5cGVvZiBPUklFTlRBVElPTilba2V5b2YgdHlwZW9mIE9SSUVOVEFUSU9OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuaW1wb3J0IHR5cGUgeyBCcmVha3BvaW50IH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcblxuZXhwb3J0IGNvbnN0IENTUyA9IHtcbiAgd2l0aEJyZWFrcG9pbnQ6ICh1dGlsaXRpZXM6IHN0cmluZ1tdLCBicmVha3BvaW50OiBCcmVha3BvaW50KTogc3RyaW5nW10gPT4ge1xuICAgIHJldHVybiB1dGlsaXRpZXMubWFwKCh1dGlsaXR5KSA9PiBgJHticmVha3BvaW50fS0ke3V0aWxpdHl9YCk7XG4gIH0sXG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBKVVNUSUZZOiAndGlkZS10ZXh0LWp1c3RpZnknLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLWF4aXMyLXN0cmV0Y2gnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYmctc3VyZmFjZS1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJnLXN1cmZhY2UtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1iZy1zdXJmYWNlLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJnLXN1cmZhY2Utb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1iZy1zdXJmYWNlLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYmctc3VyZmFjZS1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJnLXN1cmZhY2Utc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYmctc3VyZmFjZS10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1iZy1zdXJmYWNlLXllbGxvdycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYm9yZGVyLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYm9yZGVyLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYm9yZGVyLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJvcmRlci1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJvcmRlci1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJvcmRlci1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJvcmRlci1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1ib3JkZXItdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYm9yZGVyLXllbGxvdycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgU1RZTEU6IHtcbiAgICAgIERBU0hFRDogJ3RpZGUtYm9yZGVyLWRhc2hlZCcsXG4gICAgICBTT0xJRDogJ3RpZGUtYm9yZGVyLXNvbGlkJyxcbiAgICB9LFxuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItbGVmdC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1yaWdodC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci10b3AtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX0lOU0lERToge1xuICAgIEFWT0lEX0NPTFVNTjogJ3RpZGUtYnJlYWstaW5zaWRlLWF2b2lkLWNvbHVtbicsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPRkY6ICd0aWRlLWJyZWFrLWluaXRpYWwnLFxuICAgIE9OOiAndGlkZS1icmVhay13b3JkJyxcbiAgfSxcbiAgQ09MVU1OUzoge1xuICAgIElOSVRJQUw6ICd0aWRlLWNvbHVtbnMtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1kaXNwbGF5LWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ3RpZGUtZGlzcGxheS1pbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRUxMSVBTSVM6ICd0aWRlLWVsbGlwc2lzJyxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBBVVRPOiAndGlkZS1mbGV4LWJhc2lzLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtZmxleC1iYXNpcy0wJyxcbiAgICB9LFxuICAgIERJUkVDVElPTjoge1xuICAgICAgQ09MVU1OOiAndGlkZS1mbGV4LWNvbHVtbicsXG4gICAgICBDT0xVTU5fUkVWRVJTRTogJ3RpZGUtZmxleC1jb2x1bW4tcmV2ZXJzZScsXG4gICAgICBST1c6ICd0aWRlLWZsZXgtcm93JyxcbiAgICAgIFJPV19SRVZFUlNFOiAndGlkZS1mbGV4LXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1mb250LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtZm9udC1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtZm9udC1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtZm9udC13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1mb250LWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWZvbnQtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1mb250LXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1mb250LXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQteWVsbG93JyxcblxuICAgICAgICBQUklNQVJZOiB7XG4gICAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1wcmltYXJ5LWJsdWUnLFxuICAgICAgICAgIEdSRUVOOiAndGlkZS1mb250LXByaW1hcnktZ3JlZW4nLFxuICAgICAgICAgIExJTUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1saW1lJyxcbiAgICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtcHJpbWFyeS1vcmFuZ2UnLFxuICAgICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wcmltYXJ5LXB1cnBsZScsXG4gICAgICAgICAgUkVEOiAndGlkZS1mb250LXByaW1hcnktcmVkJyxcbiAgICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtcHJpbWFyeS1zYWxtb24nLFxuICAgICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtcHJpbWFyeS10ZWFsJyxcbiAgICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQtcHJpbWFyeS15ZWxsb3cnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIElURU06ICd0aWRlLWdyaWQtaXRlbScsXG4gICAgTEFZT1VUOiAndGlkZS1ncmlkLWxheW91dCcsXG4gICAgWEw6ICd0aWRlLWdyaWQteGwnLFxuICB9LFxuICBIRUlHSFQ6IHtcbiAgICBBVVRPOiAndGlkZS1oZWlnaHQtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtaGVpZ2h0LTAnLFxuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LWhlaWdodC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLWhlaWdodC0wJyxcbiAgfSxcbiAgSVNPTEFUSU9OOiB7XG4gICAgSVNPTEFURTogJ3RpZGUtaXNvbGF0ZScsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tYm90dG9tLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi10b3AtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICB9LFxuICB9LFxuICBPQkpFQ1Q6IHtcbiAgICBDRU5URVI6ICd0aWRlLW9iamVjdC1jZW50ZXInLFxuICAgIENPTlRBSU46ICd0aWRlLW9iamVjdC1jb250YWluJyxcbiAgICBDT1ZFUjogJ3RpZGUtb2JqZWN0LWNvdmVyJyxcbiAgICBTQ0FMRV9ET1dOOiAndGlkZS1vYmplY3Qtc2NhbGUtZG93bicsXG4gIH0sXG4gIE9QQUNJVFk6IHtcbiAgICBESVNBQkxFRDogJ3RpZGUtb3BhY2l0eS1kaXNhYmxlZCcsXG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVEFUSUM6ICd0aWRlLXBvc2l0aW9uLXN0YXRpYycsXG4gICAgU1RJQ0tZOiAndGlkZS1wb3NpdGlvbi1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBSQVRJTzoge1xuICAgIE9ORV9UT19PTkU6ICd0aWRlLXJhdGlvLTEvMScsXG4gICAgU0lYVEVFTl9UT19OSU5FOiAndGlkZS1yYXRpby0xNi85JyxcbiAgICBUSFJFRV9UT19UV086ICd0aWRlLXJhdGlvLTMvMicsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBJTklUSUFMOiAndGlkZS1zaGFkb3ctaW5pdGlhbCcsXG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICAgIFRFWFQ6ICd0aWRlLXNoYWRvdy10ZXh0JyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zY3JvbGwtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc2Nyb2xsLXNuYXAtc3RhcnQnLFxuICB9LFxuICBTVFJJS0VUSFJPVUdIOiB7XG4gICAgT0ZGOiAndGlkZS1zdHJpa2V0aHJvdWdoLW5vbmUnLFxuICAgIE9OOiAndGlkZS1zdHJpa2V0aHJvdWdoJyxcbiAgfSxcbiAgVEVYVF9UUkFOU0ZPUk06IHtcbiAgICBMT1dFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbG93ZXInLFxuICAgIE5PTkU6ICd0aWRlLXRleHQtdHJhbnNmb3JtLW5vbmUnLFxuICAgIFVQUEVSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS11cHBlcicsXG4gIH0sXG4gIFVOREVSTElORToge1xuICAgIEhPVkVSOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyLW5vbmUnLFxuICAgIH0sXG4gICAgUkVTVDoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ub25lJyxcbiAgICB9LFxuICB9LFxuICBVU0VSX1NFTEVDVDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXVzZXItc2VsZWN0LWluaXRpYWwnLFxuICAgIE5PTkU6ICd0aWRlLXVzZXItc2VsZWN0LW5vbmUnLFxuICB9LFxuICBWSVNJQklMSVRZOiB7XG4gICAgT0ZGOiAndGlkZS12aXNpYmxlLW5vbmUnLFxuICAgIE9OOiAndGlkZS12aXNpYmxlJyxcbiAgfSxcbiAgV0hJVEVTUEFDRV9XUkFQOiB7XG4gICAgT0ZGOiAndGlkZS13aGl0ZXNwYWNlLW5vd3JhcCcsXG4gIH0sXG4gIFdJRFRIOiB7XG4gICAgQVVUTzogJ3RpZGUtd2lkdGgtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gICAgRlVMTDogJ3RpZGUtd2lkdGgtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC13aWR0aC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLXdpZHRoLTAnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtei1pbmRleC1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgT1JJRU5UQVRJT04gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT3JpZW50YXRpb24gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIG9yaWVudGF0aW9uPzogT3JpZW50YXRpb247XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvcmllbnRhdGlvbjogT1JJRU5UQVRJT04uSE9SSVpPTlRBTCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1kaXZpZGVyJ11cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICBwcm9wcy5vcmllbnRhdGlvbiA9PT0gT1JJRU5UQVRJT04uSE9SSVpPTlRBTFxuICAgICAgICAgID8gW0NTUy5NQVJHSU4uWS5IQUxGLCBDU1MuQk9SREVSLkJPVFRPTS5PTkUsIENTUy5XSURUSC5GVUxMXVxuICAgICAgICAgIDogW0NTUy5NQVJHSU4uWC5IQUxGLCBDU1MuQk9SREVSLlJJR0hULk9ORSwgQ1NTLkhFSUdIVC5GVUxMXSxcbiAgICAgIF1cIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtZGl2aWRlciB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3RvZ2dsZSddKTtcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuICAgIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBsYWJlbDogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ3RvZ2dsZScpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBwcm9wcy5pc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAwZnI7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgUHJpb3JpdHkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb246IEljb247XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIHByaW9yaXR5PzogUHJpb3JpdHk7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDphcmlhLWxhYmVsPVwicHJvcHMuaWNvblwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gJ3RpZGUtbGluay1hcy1idXR0b24taWNvbicgOiAndGlkZS1idXR0b24taWNvbicsXG4gICAgICBwcm9wcy5wcmlvcml0eSAmJiBgdGlkZS1idXR0b24tJHtwcm9wcy5wcmlvcml0eX1gLFxuICAgICAgW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIENTUy5QQURESU5HLkZVTEwuSEFMRl0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiAnJyxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gJ2EnIDogJ2J1dHRvbidcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCJleHBvcnQgY29uc3QgQUxFUlQgPSB7XG4gIEVSUk9SOiAnZXJyb3InLFxuICBJTkZPOiAnaW5mbycsXG4gIFNVQ0NFU1M6ICdzdWNjZXNzJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxlcnQgPSAodHlwZW9mIEFMRVJUKVtrZXlvZiB0eXBlb2YgQUxFUlRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBBTEVSVCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ2Nsb3NlJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgaWNvblR5cGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SKSByZXR1cm4gSUNPTi5QUklPUklUWV9ISUdIO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTKSByZXR1cm4gSUNPTi5DSEVDSztcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORykgcmV0dXJuIElDT04uV0FSTklORztcbiAgICByZXR1cm4gSUNPTi5JTkZPUk1BVElPTjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5FUlJPUl0gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLklORk8sIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLklORk9dIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5TVUNDRVNTLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TVUNDRVNTXVxuICAgICAgICA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklOR1xuICAgICAgICA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuV0FSTklORywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuV0FSTklOR11cbiAgICAgICAgOiAnJyxcbiAgICAgIHByb3BzLmlzVG9hc3QgPyBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLCBDU1MuU0hBRE9XLkJPVFRPTV0gOiBDU1MuQk9SREVSLkxFRlQuVFdPLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1hbGVydC1pY29uJyxcbiAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0UsXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUixcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuSU5GTyxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuU1VDQ0VTUyxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuV0FSTklORyxcbiAgICAgIF1cIlxuICAgICAgdi1pZj1cIiFwcm9wcy5pc1RvYXN0XCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpY29uVHlwZVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtaGVhZGluZycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRF1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWNsb3NlJywgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJlbWl0KCdjbG9zZScpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBhbGVydFwiXG4gICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWJvZHknLCBDU1MuRk9OVC5ST0xFLkJPRFlfMiwgIXByb3BzLmlzVG9hc3QgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUiA9IHtcbiAgQkxBQ0s6ICdibGFjaycsXG4gIEJMVUU6ICdibHVlJyxcbiAgR1JFRU46ICdncmVlbicsXG4gIExJTUU6ICdsaW1lJyxcbiAgT1JBTkdFOiAnb3JhbmdlJyxcbiAgUFVSUExFOiAncHVycGxlJyxcbiAgUkVEOiAncmVkJyxcbiAgU0FMTU9OOiAnc2FsbW9uJyxcbiAgVEVBTDogJ3RlYWwnLFxuICBZRUxMT1c6ICd5ZWxsb3cnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SX0RFVEFJTFM6IFJlY29yZDxcbiAgQmFkZ2VDb2xvcixcbiAge1xuICAgIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gICAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIFtCQURHRV9DT0xPUi5CTEFDS106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5ISUdILFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICB9LFxuICBbQkFER0VfQ09MT1IuQkxVRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuQkxVRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkJMVUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5HUkVFTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuR1JFRU4sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5HUkVFTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkxJTUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkxJTUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5MSU1FLFxuICB9LFxuICBbQkFER0VfQ09MT1IuT1JBTkdFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5PUkFOR0UsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5PUkFOR0UsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5QVVJQTEVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlBVUlBMRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlBVUlBMRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlJFRF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUkVELFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVELFxuICB9LFxuICBbQkFER0VfQ09MT1IuU0FMTU9OXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TQUxNT04sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5TQUxNT04sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5URUFMXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5URUFMLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuVEVBTCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLllFTExPV106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuWUVMTE9XLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuWUVMTE9XLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfNTogJzUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQmFkZ2VDb2xvciA9ICh0eXBlb2YgQkFER0VfQ09MT1IpW2tleW9mIHR5cGVvZiBCQURHRV9DT0xPUl07XG5leHBvcnQgdHlwZSBCYWRnZVRydXN0ZWRZZWFycyA9ICh0eXBlb2YgQkFER0VfVFJVU1RFRClba2V5b2YgdHlwZW9mIEJBREdFX1RSVVNURURdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCQURHRV9DT0xPUl9ERVRBSUxTIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJhZGdlQ29sb3IgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNvbG9yPzogQmFkZ2VDb2xvcjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNvbG9yOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UnLFxuICAgICAgcHJvcHMuaXNGbG9hdGluZyB8fCBwcm9wcy5jb2xvciA/IFtDU1MuQkcuU1VSRkFDRS5GTE9BVElORywgQ1NTLlNIQURPVy5CT1RUT01dIDogW0NTUy5CRy5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIHByb3BzLmNvbG9yICYmIFtDU1MuQk9SREVSLkxFRlQuVFdPLCBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5ib3JkZXJDb2xvcl0sXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIHByb3BzLmNvbG9yICYmIEJBREdFX0NPTE9SX0RFVEFJTFNbcHJvcHMuY29sb3JdLmljb25Db2xvcl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJBREdFX1RSVVNURUQgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJhZGdlVHJ1c3RlZFllYXJzIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICB5ZWFycz86IEJhZGdlVHJ1c3RlZFllYXJzO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgeWVhcnM6IEJBREdFX1RSVVNURUQuWUVBUlNfNSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UtdHJ1c3RlZC1wYXJ0bmVyJyxcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkQsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5BV0FSRF9TVEFSXCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPlxuICAgICAgPHNwYW4+e3sgcHJvcHMueWVhcnMgfX0geWVhciB0cnVzdGVkIHBhcnRuZXI8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXZlcmlmaWVkLXZlaGljbGUnLFxuICAgICAgQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWSxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5WRVJJRklFRFwiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+VmVyaWZpZWQgdmVoaWNsZTwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pY29uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1pbmZvLXByaW1hcnkpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJyZWFkQ3J1bWIgfSBmcm9tICdAL3R5cGVzL0JyZWFkQ3J1bWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYnJlYWRDcnVtYnM6IEJyZWFkQ3J1bWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJyZWFkQ3J1bWJzOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHVsIDpjbGFzcz1cIlsndGlkZS1icmVhZC1jcnVtYnMnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgOmtleT1cImNydW1iLmxhYmVsXCJcbiAgICAgIHYtZm9yPVwiKGNydW1iLCBpbmRleCkgaW4gcHJvcHMuYnJlYWRDcnVtYnNcIlxuICAgID5cbiAgICAgIDxsaSA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIDpocmVmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgICB2LWlmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgdi1pZj1cInByb3BzLmJyZWFkQ3J1bWJzICYmIGluZGV4IDwgcHJvcHMuYnJlYWRDcnVtYnMubGVuZ3RoIC0gMVwiPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6aWNvbj1cIklDT04uQVJST1dfUklHSFRcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvdWw+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSwgU0laRV9CVVRUT04gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZUJ1dHRvbiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBwcmlvcml0eT86IFByaW9yaXR5O1xuICAgIHNpemU/OiBTaXplQnV0dG9uO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHNpemU6IFNJWkVfQlVUVE9OLkxBUkdFLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24nLFxuICAgICAgcHJvcHMucHJpb3JpdHkgJiYgYHRpZGUtYnV0dG9uLSR7cHJvcHMucHJpb3JpdHl9YCxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWF0gOiBbQ1NTLkRJU1BMQVkuRkxFWF0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGIDogJycsXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5TTUFMTCAmJiBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMiwgQ1NTLlBBRERJTkcuWC5PTkUsIENTUy5QQURESU5HLlkuSEFMRl0sXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSAmJiBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSwgQ1NTLlBBRERJTkcuWC5UV08sIENTUy5QQURESU5HLlkuT05FXSxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gRUxFTUVOVC5MSU5LIDogRUxFTUVOVC5CVVRUT05cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICB7eyBwcm9wcy5sYWJlbCB9fVxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cInNpemUgPT09IFNJWkVfQlVUVE9OLkxBUkdFID8gU0laRS5MQVJHRSA6IFNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgRUxFTUVOVF9URVhUX0FTX0lDT04gfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50VGV4dEFzSWNvbiB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnRUZXh0QXNJY29uO1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5UX1RFWFRfQVNfSUNPTi5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkxJTksgPyAndGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uJyA6ICd0aWRlLWJ1dHRvbi1pY29uJyxcbiAgICAgIFtDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIENTUy5QQURESU5HLkZVTEwuSEFMRl0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX1RFWFRfQVNfSUNPTi5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX1RFWFRfQVNfSUNPTi5ESVYgPyBbQ1NTLkNVUlNPUi5QT0lOVEVSXSA6ICcnLFxuICAgICAgW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfM10sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9URVhUX0FTX0lDT04uQlVUVE9OICYmIHByb3BzLmRpc2FibGVkXCJcbiAgICA6aHJlZj1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDppcz1cIlxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9URVhUX0FTX0lDT04uTElOS1xuICAgICAgICA/ICdhJ1xuICAgICAgICA6IHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkJVVFRPTlxuICAgICAgICA/ICdidXR0b24nXG4gICAgICAgIDogJ2RpdidcbiAgICBcIlxuICA+XG4gICAgPHNwYW4gOmNsYXNzPVwiWydsYWJlbCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24taWNvbixcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb246ZGlzYWJsZWQsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb246ZGlzYWJsZWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb24gLmxhYmVsLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uIC5sYWJlbCB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFjdGl2ZVRhYjogbnVtYmVyO1xuICAgIHRhYnM6IFRhYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWN0aXZlVGFiOiAwLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGVtaXQoJ2NoYW5nZScsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkJyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWInLFxuICAgICAgICBpbmRleCA9PT0gYWN0aXZlVGFiXG4gICAgICAgICAgPyBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULCBDU1MuU0hBRE9XLkJPVFRPTV1cbiAgICAgICAgICA6IFsnaW5hY3RpdmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLFxuICAgICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICAgIF1cIlxuICAgICAgOmRhdGEtdHJhY2s9XCJ0YWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKGluZGV4KVwiXG4gICAgICB2LWZvcj1cIih0YWIsIGluZGV4KSBpbiBwcm9wcy50YWJzXCJcbiAgICA+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIlxuICAgICAgICB2LWlmPVwidGFiLmNvdW50ICYmIHRhYi5jb3VudCA+IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiLmNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQge1xuICAgIG1heC13aWR0aDogMjMuM3JlbTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiIHtcbiAgICBmbGV4OiAxO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpub3QoOmhvdmVyKSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAuaW5hY3RpdmU6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZGVmYXVsdCk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVFlQRV9DQVJEID0ge1xuICBBQ1RJT05BQkxFOiAnYWN0aW9uJyxcbiAgSU5GT1JNQVRJT05BTDogJ2luZm9ybWF0aW9uYWwnLFxuICBTRUxFQ1RBQkxFOiAnc2VsZWN0Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIENhcmRUeXBlID0gKHR5cGVvZiBUWVBFX0NBUkQpW2tleW9mIHR5cGVvZiBUWVBFX0NBUkRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBUWVBFX0NBUkQgfSBmcm9tICdAL3R5cGVzL0NhcmQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQ2FyZFR5cGUgfSBmcm9tICdAL3R5cGVzL0NhcmQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaGVhZGluZzogc3RyaW5nO1xuICAgIGljb24/OiBJY29uO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICB0eXBlOiBDYXJkVHlwZTtcbiAgICBocmVmPzogc3RyaW5nO1xuICB9O1xuXG4gIHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZDogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jYXJkJyxcbiAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgdHlwZSAhPT0gVFlQRV9DQVJELklORk9STUFUSU9OQUwgJiYgJ2hvdmVyYWJsZScsXG4gICAgICB0eXBlID09PSBUWVBFX0NBUkQuU0VMRUNUQUJMRSAmJiBzZWxlY3RlZCAmJiAnc2VsZWN0ZWQnLFxuICAgIF1cIlxuICAgIDpocmVmPVwiaHJlZlwiXG4gICAgOmlzPVwiaHJlZiA/ICdhJyA6IHR5cGUgPT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMID8gJ2RpdicgOiAnYnV0dG9uJ1wiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJpY29uXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvblwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5BWElTMi5TVEFSVCwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xELCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICAgIHt7IGhlYWRpbmcgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwiZGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2FyZC5ob3ZlcmFibGU6bm90KC5zZWxlY3RlZCk6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItcmVzdCk7XG4gIH1cbiAgLnRpZGUtY2FyZC5zZWxlY3RlZCB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25Nb3VudGVkLCBvblVubW91bnRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBibGVlZD86IG51bWJlcjtcbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcbiAgICBpc0hlYWRsaW5lMT86IGJvb2xlYW47XG4gICAgaXNIaWRlYXdheUJ1dHRvbnM/OiBib29sZWFuO1xuICAgIGlzU2Nyb2xsQnlQYWdlPzogYm9vbGVhbjtcbiAgICBpc1RvdWNoc2NyZWVuPzogYm9vbGVhbjtcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICB0aXRsZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJsZWVkOiB1bmRlZmluZWQsXG4gICAgaXNGbG9hdGluZzogZmFsc2UsXG4gICAgaXNIZWFkbGluZTE6IGZhbHNlLFxuICAgIGlzSGlkZWF3YXlCdXR0b25zOiB0cnVlLFxuICAgIGlzU2Nyb2xsQnlQYWdlOiB0cnVlLFxuICAgIGlzVG91Y2hzY3JlZW46IHVuZGVmaW5lZCxcbiAgICBzdWJ0aXRsZTogdW5kZWZpbmVkLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNJblZpZXc6IG51bWJlcltdKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgY29udGFpbmVyUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGlzRmlyc3RTbGlkZSA9IHJlZjxib29sZWFuPih0cnVlKTtcbiAgY29uc3QgaXNMYXN0U2xpZGUgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzaG93QnV0dG9ucyA9IHJlZjxib29sZWFuPih0cnVlKTtcbiAgY29uc3Qgc2xpZGVPYnNlcnZlciA9IHJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzbGlkZXNJblZpZXcgPSByZWY8bnVtYmVyW10+KFtdKTtcbiAgY29uc3Qgc2xvdE9ic2VydmVyID0gcmVmPE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBzbGlkZXMgPSByZWY8SFRNTEVsZW1lbnRbXT4oW10pO1xuXG4gIC8vIFRPRE86IGRlYm91bmNlXG4gIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICB1cGRhdGVDb250YWluZXJCbGVlZCgpO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbGlkZXMgPSAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IGNvbnRhaW5lclJlZj8udmFsdWUsXG4gICAgICByb290TWFyZ2luOiAnMHB4IDFweCAwcHggMHB4JyxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICB9O1xuXG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZSA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgbGV0IHNsaWRlc0FkZGVkVG9WaWV3OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBzbGlkZXMudmFsdWUuaW5kZXhPZihlbnRyeS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIHNsaWRlc0FkZGVkVG9WaWV3LnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmZpbHRlcigoc2xpZGUpID0+IHNsaWRlICE9PSBzbGlkZUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNsaWRlc0luVmlldy52YWx1ZS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9KTtcblxuICAgICAgaXNGaXJzdFNsaWRlLnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmluY2x1ZGVzKDApO1xuICAgICAgaXNMYXN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDEpO1xuXG4gICAgICBpZiAoc2xpZGVzQWRkZWRUb1ZpZXcubGVuZ3RoID4gMCkgZW1pdCgnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNBZGRlZFRvVmlldyk7XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBzbGlkZXMudmFsdWUuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChzbGlkZU9ic2VydmVyLnZhbHVlKSBzbGlkZU9ic2VydmVyLnZhbHVlLm9ic2VydmUoY2hpbGQpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbG90ID0gKCkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICAgIHNsaWRlcy52YWx1ZSA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIH07XG5cbiAgICBzbG90T2JzZXJ2ZXIudmFsdWUgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvYnNlcnZlckNhbGxiYWNrKTtcblxuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUpIHNsb3RPYnNlcnZlci52YWx1ZS5vYnNlcnZlKGNvbnRhaW5lclJlZi52YWx1ZSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsVG9PZmZzZXQgPSAodGFyZ2V0OiBudW1iZXIpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsVG8oe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgbGVmdDogdGFyZ2V0LFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0UGFnZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV4dFNsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCAtIDFdICsgMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdLm9mZnNldExlZnQpO1xuICB9O1xuXG4gIGNvbnN0IHNob3dQcmV2aW91c1BhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IHByZXZpb3VzU2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVswXSAtIHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGg7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbcHJldmlvdXNTbGlkZV0/Lm9mZnNldExlZnQgfHwgMCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRTbGlkZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV4dFNsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID4gMSA/IHNsaWRlc0luVmlldy52YWx1ZVsxXSA6IHNsaWRlc0luVmlldy52YWx1ZVswXSArIDE7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbbmV4dFNsaWRlXS5vZmZzZXRMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNTbGlkZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlWzBdIC0gMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXS5vZmZzZXRMZWZ0KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVDb250YWluZXJCbGVlZCA9ICgpID0+IHtcbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG4gICAgaWYgKHByb3BzLmJsZWVkID09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgaWYgKGlzTGFzdFNsaWRlLnZhbHVlICYmIHNob3dCdXR0b25zLnZhbHVlKSB7XG4gICAgICAvLyBQcmV2ZW50IGdyYWRpZW50IGZyb20gYmxlZWRpbmcgb2ZmIGxlZnQgZWRnZSBpbiBsYXN0IHBvc2l0aW9uLlxuICAgICAgY29udGFpbmVyUmVmLnZhbHVlLnN0eWxlLm1hcmdpbiA9IGAtJHtwcm9wcy5ibGVlZH1weCAtJHtwcm9wcy5ibGVlZH1weCAtJHtwcm9wcy5ibGVlZH1weCAwYDtcbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zdHlsZS5wYWRkaW5nID0gYCR7cHJvcHMuYmxlZWR9cHggJHtwcm9wcy5ibGVlZH1weCAke3Byb3BzLmJsZWVkfXB4IDBgO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmV2ZW50IGdyYWRpZW50IGZyb20gYmxlZWRpbmcgb2ZmIHJpZ2h0IGVkZ2UgaW4gZmlyc3QgcG9zaXRpb24uXG4gICAgICBjb250YWluZXJSZWYudmFsdWUuc3R5bGUubWFyZ2luID0gYC0ke3Byb3BzLmJsZWVkfXB4IDAgLSR7cHJvcHMuYmxlZWR9cHggLSR7cHJvcHMuYmxlZWR9cHhgO1xuICAgICAgY29udGFpbmVyUmVmLnZhbHVlLnN0eWxlLnBhZGRpbmcgPSBgJHtwcm9wcy5ibGVlZH1weCAwICR7cHJvcHMuYmxlZWR9cHggJHtwcm9wcy5ibGVlZH1weGA7XG4gICAgfVxuICB9O1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgc2xpZGVzLnZhbHVlID0gQXJyYXkuZnJvbShjb250YWluZXJSZWYudmFsdWUuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG5cbiAgICBvYnNlcnZlU2xpZGVzKCk7XG4gICAgb2JzZXJ2ZVNsb3QoKTtcbiAgICB1cGRhdGVDb250YWluZXJCbGVlZCgpO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICAgIHNsb3RPYnNlcnZlci52YWx1ZT8uZGlzY29ubmVjdCgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2Fyb3VzZWwnLFxuICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLk9ORSxcbiAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICBdXCJcbiAgICByZWY9XCJjYXJvdXNlbFJlZlwiXG4gID5cbiAgICA8c2VjdGlvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIHByb3BzLnRpdGxlID8gQ1NTLkFYSVMxLkJFVFdFRU4gOiBDU1MuQVhJUzEuRU5ELCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICAgICAgdi1pZj1cIighcHJvcHMuaXNGbG9hdGluZyAmJiBzaG93QnV0dG9ucykgfHwgcHJvcHMudGl0bGVcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsIGlzSGVhZGxpbmUxID8gQ1NTLkZPTlQuUk9MRS5IRUFETElORV8xIDogQ1NTLkZPTlQuUk9MRS5IRUFETElORV8yXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsIENTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1YnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnN1YnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCIhcHJvcHMuaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzRmlyc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd1ByZXZpb3VzUGFnZSgpIDogc2hvd1ByZXZpb3VzU2xpZGUoKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93TmV4dFBhZ2UoKSA6IHNob3dOZXh0U2xpZGUoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2xvdCBuYW1lPVwibWlzY1wiIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuUE9TSVRJT04uUkVMQVRJVkVdXCI+XG4gICAgICA8dWxcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWNvbnRhaW5lcicsXG4gICAgICAgICAgcHJvcHMuYmxlZWQgJiYgJ2JsZWVkJyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuT05FLFxuICAgICAgICAgIENTUy5MSVNUX0JVTExFVFMuT0ZGLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICBDU1MuU0NST0xMQkFSLk9GRixcbiAgICAgICAgICBDU1MuU05BUC5PTixcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImNvbnRhaW5lclJlZlwiXG4gICAgICAgIEBzY3JvbGw9XCJoYW5kbGVTY3JvbGxcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC91bD5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXknLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuVE9QLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICBwcm9wcy5pc0hpZGVhd2F5QnV0dG9ucyA/ICdoaWRlYXdheScgOiAnJyxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJpc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzRmlyc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PTl1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93TmV4dFBhZ2UoKSA6IHNob3dOZXh0U2xpZGUoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2Fyb3VzZWwtY29udGFpbmVyLmJsZWVkIHtcbiAgICB0cmFuc2l0aW9uOiBtYXJnaW4gdmFyKC0tdGlkZS1hbmltYXRlKSwgcGFkZGluZyB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbDpob3ZlciAudGlkZS1jYXJvdXNlbC1idXR0b24tb3ZlcmxheS5oaWRlYXdheSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZWxlbWVudDogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtYWN0aW9uJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxJTktfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIENTUy5VTkRFUkxJTkUuUkVTVC5PRkYsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwiZWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb24gOmljb249XCJJQ09OLlNFQVJDSFwiIC8+XG5cbiAgICA8c3Bhbj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWFjdGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1maWx0ZXInLFxuICAgICAgcHJvcHMuaXNBY3RpdmVcbiAgICAgICAgPyBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVxuICAgICAgICA6IFtDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnYWN0aXZlJyA6ICcnLFxuICAgIF1cIlxuICA+XG4gICAgPHNsb3QgLz5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbcHJvcHMuaXNBY3RpdmUgPyAnJyA6ICdpY29uLXNwYWNpbmcnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGXVwiPlxuICAgICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC8qIEJvcmRlciBtdXN0IGFsd2F5cyBleGlzdCB0byBwcmV2ZW50IHJlc2l6ZSBvbiBob3ZlciBzdGF0ZSwgYnV0IG1hdGNoIGJhY2tncm91bmQgY29sb3Igb24gcmVzdCBzdGF0ZSB0byBibGVuZCBpbi4gKi9cbiAgLnRpZGUtY2hpcC1maWx0ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1maWx0ZXIuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtZmlsdGVyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1pbnB1dCcsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICBdXCJcbiAgPlxuICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5DTE9TRVwiIC8+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2hpcC1pbnB1dCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1jaGlwLWlucHV0OmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6ICcnLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGlkZS1jb2x1bW5zXCI+XG4gICAgPGgyIDpjbGFzcz1cIltDU1MuTUFSR0lOLkJPVFRPTS5IQUxGXVwiPlxuICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgIDwvaDI+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5HQVAuVFdPLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24xXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24yXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb24zXCIgLz5cbiAgICAgIDwvbGk+XG5cbiAgICAgIDxsaSBjbGFzcz1cInRpZGUtY29sdW1ucy1jb2x1bW5cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb240XCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSAycmVtKSAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjMycHgpIHtcbiAgICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDZyZW0pIC8gNCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IE9CSkVDVF9GSVQgPSB7XG4gIENPTlRBSU46ICdjb250YWluJyxcbiAgQ09WRVI6ICdjb3ZlcicsXG4gIFNDQUxFX0RPV046ICdzY2FsZS1kb3duJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9iamVjdEZpdCA9ICh0eXBlb2YgT0JKRUNUX0ZJVClba2V5b2YgdHlwZW9mIE9CSkVDVF9GSVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgT0JKRUNUX0ZJVCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBPYmplY3RGaXQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHR5cGUgeyBTb3VyY2UgfSBmcm9tICdAL3R5cGVzL1NvdXJjZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhbHQ6IHN0cmluZztcbiAgICBoZWlnaHQ/OiBzdHJpbmc7XG4gICAgaXNMYXp5PzogYm9vbGVhbjtcbiAgICBvYmplY3RGaXQ/OiBPYmplY3RGaXQ7XG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuICAgIHNyYz86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIG9iamVjdEZpdDogT0JKRUNUX0ZJVC5DT1ZFUixcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBwaWN0dXJlID0gcmVmKCk7XG4gIGNvbnN0IGltZyA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9ICdodHRwczovL2Nkbi1zdGF0aWMudGlsYWJzLmlvL21hcmtldHBsYWNlL2NvbW1vbi9pbWFnZS1jb21pbmctc29vbi5zdmcnO1xuXG4gIGNvbnN0IG9iamVjdEZpdENsYXNzTmFtZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHN3aXRjaCAocHJvcHMub2JqZWN0Rml0KSB7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuQ09OVEFJTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09OVEFJTjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT1ZFUjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09WRVI7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuU0NBTEVfRE9XTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuU0NBTEVfRE9XTjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBPQkpFQ1RfRklULkNPVkVSO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tRGVmYXVsdCA9ICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U3JjID0gaW1nLnZhbHVlPy5jdXJyZW50U3JjO1xuICAgIGNvbnN0IHBpY3R1cmVTb3VyY2UgPSBwaWN0dXJlLnZhbHVlPy5xdWVyeVNlbGVjdG9yKGBzb3VyY2Vbc3Jjc2V0PVwiJHtjdXJyZW50U3JjfVwiXWApO1xuXG4gICAgaWYgKGN1cnJlbnRTcmMgJiYgcGljdHVyZVNvdXJjZSkge1xuICAgICAgcGljdHVyZVNvdXJjZS5zcmNzZXQgPSBpbWFnZURlZmF1bHQ7XG4gICAgfSBlbHNlIGlmIChpbWcudmFsdWUpIHtcbiAgICAgIGltZy52YWx1ZS5zcmMgPSBpbWFnZURlZmF1bHQ7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHBpY3R1cmVcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UnLCBDU1MuRElTUExBWS5CTE9DS11cIlxuICAgIHJlZj1cInBpY3R1cmVcIlxuICAgIDpzdHlsZT1cIlxuICAgICAgd2lkdGggfHwgaGVpZ2h0XG4gICAgICAgID8ge1xuICAgICAgICAgICAgd2lkdGg6IHdpZHRoIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgXCJcbiAgPlxuICAgIDxzb3VyY2VcbiAgICAgIDprZXk9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIDptZWRpYT1cImAobWluLXdpZHRoOiR7c291cmNlLm1lZGlhfXB4KWBcIlxuICAgICAgOnNyY3NldD1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgdi1mb3I9XCJzb3VyY2UgaW4gcHJvcHMuc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxpbWdcbiAgICAgIDphbHQ9XCJhbHRcIlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWltYWdlLWltZycsIENTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5PQkpFQ1QuQ0VOVEVSLCBvYmplY3RGaXRDbGFzc05hbWVdXCJcbiAgICAgIDpmZXRjaHByaW9yaXR5PVwiaXNMYXp5ID8gdW5kZWZpbmVkIDogJ2hpZ2gnXCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW1hZ2UtaW1nIHtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJbWFnZSBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSc7XG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWx0OiBzdHJpbmc7XG4gICAgaXNMYXp5OiBib29sZWFuO1xuICAgIHNvdXJjZXM/OiBTb3VyY2VbXTtcbiAgICBzcmM/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhbHQ6ICcnLFxuICAgIGlzTGF6eTogdHJ1ZSxcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbWFnZS1iYWNrZ3JvdW5kJywgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLCBDU1MuSVNPTEFUSU9OLklTT0xBVEVdXCI+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUltYWdlXG4gICAgICAgIDphbHQ9XCJwcm9wcy5hbHRcIlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5IRUlHSFQuRlVMTF1cIlxuICAgICAgICA6aXMtbGF6eT1cInByb3BzLmlzTGF6eVwiXG4gICAgICAgIDpvYmplY3QtZml0PVwiT0JKRUNUX0ZJVC5DT1ZFUlwiXG4gICAgICAgIDpzb3VyY2VzPVwicHJvcHMuc291cmNlc1wiXG4gICAgICAgIDpzcmM9XCJwcm9wcy5zcmNcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxzbG90IC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgOmRlZXAoLnRpZGUtaW1hZ2UpIHtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGxhYmVsPzogc3RyaW5nIHwgbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5kaWNhdG9yJyxcbiAgICAgIHByb3BzLmxhYmVsID8gJycgOiAnZG90JyxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9CTE9DSyxcbiAgICAgIENTUy5BTElHTi5YLkNFTlRFUixcbiAgICAgIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5sYWJlbCAmJiBwcm9wcy5sYWJlbC50b1N0cmluZygpLmxlbmd0aCA+IDEgPyBbQ1NTLlBBRERJTkcuWC5IQUxGXSA6IFtdLFxuICAgICAgcHJvcHMubGFiZWxcbiAgICAgICAgPyBbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzMsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRV1cbiAgICAgICAgOiBbQ1NTLkJPUkRFUi5GVUxMLk9ORV0sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5kaWNhdG9yLWxhYmVsJ11cIlxuICAgICAgdi1pZj1cInByb3BzLmxhYmVsXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWluZGljYXRvcjpub3QoLmRvdCkge1xuICAgIG1pbi13aWR0aDogMXJlbTtcbiAgICBtaW4taGVpZ2h0OiAxcmVtO1xuICB9XG5cbiAgLnRpZGUtaW5kaWNhdG9yLmRvdCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWdyYXktMTAwKTtcbiAgICB3aWR0aDogMTBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3ItbGFiZWwge1xuICAgIC8qIFVzZSBib3R0b20td2VpZ2h0aW5nIHRvIG9mZnNldCB0aGUgbWF0aGVtYXRpY2FsIGNlbnRlciB0byB0aGUgb3B0aWNhbCBjZW50ZXIuICovXG4gICAgbWFyZ2luLXRvcDogLTFweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc0Vycm9yOiBib29sZWFuO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgfTtcbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzMsXG4gICAgICBpc0Vycm9yID8gW0NTUy5GT05ULkNPTE9SLkdMT0JBTC5FUlJPUl0gOiBbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImlzRXJyb3JcIlxuICAgIC8+XG5cbiAgICA8ZGl2PlxuICAgICAge3sgbWVzc2FnZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxudHlwZSBUaWRlRm9ybUNvbnRleHQgPSB7XG4gIGZvcmNlU2hvd0Vycm9yczogUmVmPGJvb2xlYW4+O1xufTtcblxuY29uc3QgRk9STV9LRVkgPSBTeW1ib2woJ3RpZGUtZm9ybScpO1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZUZvcm0gPSAoKSA9PiB7XG4gIGNvbnN0IGZvcmNlU2hvd0Vycm9ycyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJvdmlkZTxUaWRlRm9ybUNvbnRleHQ+KEZPUk1fS0VZLCB7IGZvcmNlU2hvd0Vycm9ycyB9KTtcblxuICBjb25zdCByZXZlYWxWYWxpZGF0aW9uRXJyb3JzID0gKCkgPT4ge1xuICAgIGZvcmNlU2hvd0Vycm9ycy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIHsgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUZvcm1Db250ZXh0ID0gKCkgPT4ge1xuICByZXR1cm4gaW5qZWN0PFRpZGVGb3JtQ29udGV4dD4oRk9STV9LRVkpO1xufTtcbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkxlbmd0aCwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuZXhwb3J0IGNvbnN0IGVycm9yTWVzc2FnZURlZmF1bHQgPSAnUGxlYXNlIGVudGVyIGEgdmFsaWQgdmFsdWUnO1xuXG5leHBvcnQgY29uc3QgVkFMSURBVElPTl9SRVNVTFQgPSB7XG4gIE5PX0VSUk9SOiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH0sXG4gIFJFUVVJUkVEOiB7XG4gICAgbWVzc2FnZTogJ1BsZWFzZSBmaWxsIG91dCB0aGlzIGZpZWxkJyxcbiAgICB2YWxpZDogZmFsc2UsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGb3JtYXQgPSAoZm9ybWF0OiBSZWdFeHAsIG1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdCA9IFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlID8/IGVycm9yTWVzc2FnZURlZmF1bHQsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExlbmd0aElzVmFsaWQgPSAoeyBtYXhsZW5ndGgsIG1pbmxlbmd0aCwgcmVxdWlyZWQsIHZhbHVlIH06IFZhbGlkYXRpb25MZW5ndGgpID0+IHtcbiAgY29uc3QgaXNFbXB0eUFuZFVucmVxdWlyZWQgPSB2YWx1ZS5sZW5ndGggPT09IDAgJiYgIXJlcXVpcmVkO1xuICBjb25zdCBpc1Rvb0xvbmcgPSBtYXhsZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4bGVuZ3RoO1xuICBjb25zdCBpc1Rvb1Nob3J0ID0gIWlzRW1wdHlBbmRVbnJlcXVpcmVkICYmIG1pbmxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5sZW5ndGg7XG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCA9ICh7XG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQsXG4gIHZhbGlkYXRvcnMsXG4gIHZhbHVlLFxufToge1xuICBlcnJvckZyb21Qcm9wczogc3RyaW5nO1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgdmFsdWU6IFJlZjxzdHJpbmc+O1xufSk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuICBpZiAoZXJyb3JGcm9tUHJvcHMgIT09ICcnKVxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiBlcnJvckZyb21Qcm9wcyxcbiAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICB9O1xuXG4gIC8vIGN1c3RvbSB2YWxpZGF0b3IgcHJvcCBlcnJvcnMgZnJvbSBoYXZlIHNlY29uZCBoaWdoZXN0IHByZWNlZGVuY2VcbiAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZS52YWx1ZSwgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFsbCBvdGhlciBwcm9wLWJhc2VkIGVycm9ycyBjb21lIGxhc3RcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlLnZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuUkVRVUlSRUQ7XG4gIH1cblxuICBpZiAobWF4bGVuZ3RoIHx8IG1pbmxlbmd0aCkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb24gPSB2YWxpZGF0ZUxlbmd0aCh7XG4gICAgICBtYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGgsXG4gICAgICByZXF1aXJlZCxcbiAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RoVmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIGxlbmd0aFZhbGlkYXRpb247XG4gICAgfVxuICB9XG4gIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUxlbmd0aCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICBjb25zdCByZXNwb25zZSA9IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcblxuICByZXNwb25zZS52YWxpZCA9IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCh7XG4gICAgbWF4bGVuZ3RoLFxuICAgIG1pbmxlbmd0aCxcbiAgICByZXF1aXJlZCxcbiAgICB2YWx1ZSxcbiAgfSk7XG5cbiAgaWYgKHJlc3BvbnNlLnZhbGlkKSByZXR1cm4gcmVzcG9uc2U7XG5cbiAgcmVzcG9uc2UubWVzc2FnZSA9IGVycm9yTWVzc2FnZURlZmF1bHQ7XG5cbiAgaWYgKG1heGxlbmd0aCAmJiBtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYEVudGVyIGEgdmFsdWUgYmV0d2VlbiAke2Zvcm1hdE51bWJlcihtaW5sZW5ndGgpfSBhbmQgJHtmb3JtYXROdW1iZXIobWF4bGVuZ3RoKX0gY2hhcmFjdGVyc2A7XG4gIH0gZWxzZSBpZiAobWF4bGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBVc2UgJHtmb3JtYXROdW1iZXIobWF4bGVuZ3RoKX0gY2hhcmFjdGVycyBvciBmZXdlcmA7XG4gIH0gZWxzZSBpZiAobWlubGVuZ3RoKSB7XG4gICAgcmVzcG9uc2UubWVzc2FnZSA9IGBFbnRlciBhdCBsZWFzdCAke2Zvcm1hdE51bWJlcihtaW5sZW5ndGgpfSBjaGFyYWN0ZXJzYDtcbiAgfVxuXG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlOiBzdHJpbmcsIHZhbGlkYXRvcnM6ICgodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdClbXSk6IFZhbGlkYXRpb25SZXN1bHQge1xuICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRvcih2YWx1ZSk7XG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xufVxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG4gIGltcG9ydCB7IFZBTElEQVRJT05fUkVTVUxUIH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgdmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgfHwgcHJvcHMuaW5kZXRlcm1pbmF0ZSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKTtcblxuICBjb25zdCBnZXRDaGVja2JveFZhbGlkYXRpb25SZXN1bHQgPSAoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgaWYgKHByb3BzLmVycm9yICE9PSAnJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1lc3NhZ2U6IHByb3BzLmVycm9yLFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIGlmICghcHJvcHMucmVxdWlyZWQgfHwgaXNDaGVja2VkLnZhbHVlKSByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG4gICAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULlJFUVVJUkVEO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCgpO1xuICB9KTtcblxuICB3YXRjaChcbiAgICBtb2RlbFZhbHVlLFxuICAgICgpID0+IHtcbiAgICAgIGlmIChtb2RlbFZhbHVlLnZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1jaGVja2JveCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUl1cIj5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlVTRVJfU0VMRUNULk5PTkUsXG4gICAgICAgIHNob3dFcnJvciA/IENTUy5GT05ULkNPTE9SLkdMT0JBTC5FUlJPUiA6IENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgZGlzYWJsZWQgPyBbQ1NTLk9QQUNJVFkuRElTQUJMRUQsIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdIDogW0NTUy5DVVJTT1IuUE9JTlRFUl0sXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgOmNoZWNrZWQ9XCJpc0NoZWNrZWRcIlxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2NyZWVuLXJlYWRlci1vbmx5J11cIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbScsXG4gICAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgIGlzQ2hlY2tlZFxuICAgICAgICAgICAgPyBbc2hvd0Vycm9yID8gQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SIDogW0NTUy5CRy5TRUNPTkRBUlksIENTUy5CT1JERVIuQ09MT1IuSElHSF1dXG4gICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICBzaG93RXJyb3JcbiAgICAgICAgICAgICAgICAgID8gW0NTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkVSUk9SLCBDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuRVJST1JdXG4gICAgICAgICAgICAgICAgICA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICBdXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cIlxuICAgICAgICAgIDppY29uPVwiaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgICB2LWlmPVwiaXNDaGVja2VkXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguR1JPVy5PTiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+e3sgZm9ybWF0dGVkTGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cIm51bWJlclwiXG4gICAgICAgID5cbiAgICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKG51bWJlcikgfX0pXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIGlzLWVycm9yXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LWNoZWNrYm94IHtcbiAgICBhbGlnbi1zZWxmOiBzdGFydDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWNoZWNrYm94LWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgbGFiZWw6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRDaGVja2JveC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuY2hlY2tlZCB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1jaGVja2JveCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgZGlzYWJsZWQgPyBbJ2Rpc2FibGVkJywgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl0gOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiaXNDaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cInByb3BzLm5hbWVcIlxuICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0gsIENTUy5CRy5TRUNPTkRBUlldIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICAgIGlzQ2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgIDppY29uPVwicHJvcHMuaW5kZXRlcm1pbmF0ZSA/IElDT04uUkVNT1ZFIDogSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQkVUV0VFTixcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgICAgQGNsaWNrLnByZXZlbnRcbiAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1jaGVja2JveC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1jaGVja2JveC1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBudW1iZXI/OiBudW1iZXI7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBpc0NoZWNrZWQgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSBwcm9wcy52YWx1ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8bGFiZWxcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1yYWRpbycsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5VU0VSX1NFTEVDVC5OT05FLFxuICAgICAgcHJvcHMuZGlzYWJsZWQgPyBbQ1NTLk9QQUNJVFkuRElTQUJMRUQsIENTUy5DVVJTT1IuTk9UX0FMTE9XRURdIDogW0NTUy5DVVJTT1IuUE9JTlRFUl0sXG4gICAgXVwiXG4gICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2NyZWVuLXJlYWRlci1vbmx5J11cIlxuICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgIDp2YWx1ZT1cInZhbHVlXCJcbiAgICAgIDppZD1cInByb3BzLmlucHV0SWRcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGlzQ2hlY2tlZCA/IFtDU1MuQk9SREVSLkNPTE9SLkhJR0hdIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVF0sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtcmFkaW8tY2hlY2snLCBDU1MuQk9SREVSLlJBRElVUy5GVUxMLCBpc0NoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguR1JPVy5PTiwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiPlxuICAgICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5udW1iZXJcIlxuICAgICAgPlxuICAgICAgICAoe3sgZm9ybWF0TnVtYmVyKHByb3BzLm51bWJlcikgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbGFiZWw+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC1yYWRpby1jdXN0b20ge1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWNoZWNrIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cblxuICBsYWJlbDpoYXMoaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFJhZGlvLnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgY2hlY2tlZD86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBjaGVja2VkID0gcmVmKHByb3BzLmNoZWNrZWQpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmNoZWNrZWQsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gY2hlY2tlZC52YWx1ZSkge1xuICAgICAgICBjaGVja2VkLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXJhZGlvJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiY2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBuYW1lPVwiXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2YWx1ZT1cIlwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBjaGVja2VkID8gQ1NTLkJPUkRFUi5DT0xPUi5ISUdIIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgICAgY2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIHByb3BzLmNoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGhvbmUsIGZvcm1hdFByaWNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgRm9ybWF0dGVkID0ge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBGT1JNQVQgPSB7XG4gIE5VTUJFUjogZm9ybWF0TnVtYmVyLFxuICBQSE9ORTogZm9ybWF0UGhvbmUsXG4gIFBSSUNFOiBmb3JtYXRQcmljZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBGT1JNQVRfUkVHRVggPSB7XG4gIGFscGhhOiAvXlthLXpBLVpdKyQvZyxcbiAgYWxwaGFOdW1iZXJPckVtcHR5OiAvXiR8XlthLXowLTldKyQvaSxcbiAgYWxwaGFTcGFjZTogL15bYS16QS1aIF0rJC9nLFxuICBlbWFpbDpcbiAgICAvXigoW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcXSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC8sXG4gIG51bWJlckZvcm1hdHRlZDogL14kfCg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICBwaG9uZTogL14oPzpcXGR7M30tXFxkezN9LVxcZHs0fXxcXGR7MX0tXFxkezN9LVxcZHszfS1cXGR7NH0pPyQvLFxuICBwcmljZTogLyg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxufTtcbiIsImltcG9ydCB7IEZPUk1BVF9SRUdFWCB9IGZyb20gJ0AvdHlwZXMvRm9ybWF0dGVkJztcbmltcG9ydCB7IGNoZWNrRm9ybWF0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUT1IgPSB7XG4gIEFMUEhBX05VTUJFUl9FTVBUWTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhTnVtYmVyT3JFbXB0eSksXG4gIEFMUEhBX1NQQUNFOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFTcGFjZSksXG4gIEVNQUlMOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguZW1haWwsICdFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgKGUuZy4gbmFtZUBleGFtcGxlLmNvbSknKSxcbiAgTlVNQkVSOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgubnVtYmVyRm9ybWF0dGVkLCAnRW50ZXIgYSB2YWxpZCBudW1iZXInKSxcbiAgUEhPTkU6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5waG9uZSwgJ0VudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyJyksXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3IgPSBzdHJpbmcgfCBib29sZWFuO1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25MZW5ndGggPSB7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuXG5leHBvcnQgY29uc3QgRVJST1JfRElTUExBWSA9IHtcbiAgRUFHRVI6ICdlYWdlcicsXG4gIExBWlk6ICdsYXp5Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVycm9yRGlzcGxheSA9ICh0eXBlb2YgRVJST1JfRElTUExBWSlba2V5b2YgdHlwZW9mIEVSUk9SX0RJU1BMQVldO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgdXNlSWQsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG9wdGdyb3Vwcz86IChTZWxlY3RPcHRpb24gfCBTZWxlY3RPcHRpb25Hcm91cClbXSB8IHJlYWRvbmx5IChTZWxlY3RPcHRpb24gfCBTZWxlY3RPcHRpb25Hcm91cClbXTtcbiAgICBvcHRpb25zPzogU2VsZWN0T3B0aW9uW10gfCByZWFkb25seSBTZWxlY3RPcHRpb25bXTtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBvcHRncm91cHM6IHVuZGVmaW5lZCxcbiAgICBvcHRpb25zOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlucHV0SWQgPSB1c2VJZCgpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzZWxlY3RFbGVtZW50ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgc2VsZWN0RWxlbWVudD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgc2hvd0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwic2VsZWN0RWxlbWVudFwiXG4gICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gcHJvcHMub3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwibW9kZWxWYWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwibW9kZWxWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFQsIENTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBzZWxlY3Qge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3Q6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHByaWNlVG9OdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5pbXBvcnQgdHlwZSB7IFN0cmluZ0lucHV0IH0gZnJvbSAnQC90eXBlcy9Gb3JtRGVwcmVjYXRlZCc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG50eXBlIFJhbmdlRGF0YSA9IHtcbiAgbWluOiBudW1iZXIgfCBudWxsO1xuICBtYXg6IG51bWJlciB8IG51bGw7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlLic7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IG5vRXJyb3IgPSB7XG4gIG1lc3NhZ2U6ICcnLFxuICB2YWxpZDogdHJ1ZSxcbn0gYXMgUmVhZG9ubHk8VmFsaWRhdGlvblJlc3VsdD47XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKHR5cGVvZiBlcnJvckZyb21Qcm9wcyA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUHJvcHMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9yRnJvbVByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgZXJyb3JGcm9tUmVmID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21SZWYubGVuZ3RoID4gMCA/IGVycm9yRnJvbVJlZiA6IGVycm9yTWVzc2FnZURlZmF1bHQ7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZEhhc0Vycm9yID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PlxuICBlcnJvckZyb21Qcm9wcyAhPT0gZmFsc2UgfHwgZXJyb3JGcm9tUmVmICE9PSBmYWxzZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0TWF4UmFuZ2VJc1ZhbGlkID0gKHsgbWluIH06IFBpY2s8UmFuZ2VEYXRhLCAnbWluJz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNYXg6IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01heCA9ICFpc05hTihuZXdNYXgpID8gbmV3TWF4IDogbnVsbDtcbiAgICBpZiAobWluICYmIG5ld01heCkge1xuICAgICAgaWYgKG5ld01heCA+PSBtaW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNaW5SYW5nZUlzVmFsaWQgPSAoeyBtYXggfTogUGljazxSYW5nZURhdGEsICdtYXgnPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01pbjogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWluID0gIWlzTmFOKG5ld01pbikgPyBuZXdNaW4gOiBudWxsO1xuICAgIGlmIChtYXggJiYgbmV3TWluKSB7XG4gICAgICBpZiAobmV3TWluIDw9IG1heCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBsZXNzIHRoYW4gbWF4YCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlRmllbGRWYWxpZGF0aW9uID0gKHtcbiAgZXJyb3IsXG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yOiBSZWY8VmFsaWRhdGlvbkVycm9yPjtcbiAgZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvcjtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZT86IFJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlPy52YWx1ZSB8fCAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlPy52YWx1ZSB8fCAnJyxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RoVmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSBsZW5ndGhWYWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0Zyb21SZWZzKGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBSZWY8U3RyaW5nSW5wdXQgfCBudWxsPiB9KSB7XG4gIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkc1trZXldLnZhbHVlPy5yZXF1aXJlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XS52YWx1ZT8udmFsdWU7XG4gICAgICB2YWxpZCA9IHZhbGlkICYmICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpZWxkc1trZXldLnZhbHVlPy5lcnJvcjtcbiAgICB2YWxpZCA9IHZhbGlkICYmICFlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoe1xuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsdWUsXG59OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFNlbGVjdC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0RmllbGQgfSBmcm9tICdAL3R5cGVzL0ZpZWxkRGVwcmVjYXRlZCc7XG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcblxuICBleHBvcnQgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gcHJvcHMub3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG5cbmV4cG9ydCBjb25zdCBJTlBVVF9NT0RFID0ge1xuICBERUNJTUFMOiAnZGVjaW1hbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBOVU1FUklDOiAnbnVtZXJpYycsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVVJMOiAndXJsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIElucHV0TW9kZSA9ICh0eXBlb2YgSU5QVVRfTU9ERSlba2V5b2YgdHlwZW9mIElOUFVUX01PREVdO1xuIiwiaW1wb3J0IHsgSU5QVVRfTU9ERSwgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuZXhwb3J0IGNvbnN0IGdldFRleHRJbnB1dE1vZGUgPSAodHlwZTogVGV4dElucHV0VHlwZSwgaW5wdXRtb2RlPzogSW5wdXRNb2RlKTogSW5wdXRNb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlucHV0bW9kZSkgcmV0dXJuIGlucHV0bW9kZTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5URUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5URUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuU0VBUkNIOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuU0VBUkNIO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLk5VTUJFUjpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLk5VTUVSSUM7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuRU1BSUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5FTUFJTDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5VUkw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5VUkw7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBnZXRUZXh0SW5wdXRNb2RlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybXMnO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgSW5wdXRNb2RlLCBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgaW5wdXRtb2RlPzogSW5wdXRNb2RlO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlcjtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgaW5wdXRtb2RlOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dEVsZW1lbnQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpbnB1dE1vZGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxJbnB1dE1vZGUgfCB1bmRlZmluZWQ+KCgpID0+IGdldFRleHRJbnB1dE1vZGUocHJvcHMudHlwZSwgcHJvcHMuaW5wdXRtb2RlKSk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzaG91bGRTaG93Q2xlYXJCdXR0b24gPSBjb21wdXRlZChcbiAgICAoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiBtb2RlbFZhbHVlLnZhbHVlICYmIHByb3BzLnR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFxuICApO1xuICBjb25zdCBzaG91bGRTaG93UGFzc3dvcmRCdXR0b24gPSBjb21wdXRlZCgoKSA9PiBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICBtb2RlbFZhbHVlLnZhbHVlID0gJyc7XG4gICAgaW5wdXRFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpZWxkQ2xpY2sgPSAoKSA9PiB7XG4gICAgaW5wdXRFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IHByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWhhc0ZvY3VzLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGUudGFyZ2V0ICE9PSBpbnB1dEVsZW1lbnQudmFsdWUpIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgW21vZGVsVmFsdWUsICgpID0+IHByb3BzLnRyYW5zZm9ybVZhbHVlXSxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoIXByb3BzLnRyYW5zZm9ybVZhbHVlKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGRpZ2l0cyA9IG1vZGVsVmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcbiAgICAgIG1vZGVsVmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHQtZmllbGQnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBzaG91bGRTaG93Q2xlYXJCdXR0b24gPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVGaWVsZENsaWNrXCJcbiAgICAgIEBtb3VzZWRvd249XCJwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93blwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgOmljb249XCJpY29uTGVhZGluZ1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1wcmVmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF1cIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgOmlucHV0bW9kZT1cImlucHV0TW9kZUF0dHJpYnV0ZVwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0RWxlbWVudFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHYtaWY9XCJzaG91bGRTaG93Q2xlYXJCdXR0b25cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dQYXNzd29yZEJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2Zvcm1WYWx1ZTogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRFWFRfSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWYoZmFsc2UpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0NsZWFyID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgdmFsdWUudmFsdWUpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKFxuICAgICgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpXG4gICk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyB8fCB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgaW5wdXRUeXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgaGFuZGxlVmFsaWRhdGlvbigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy50cmFuc2Zvcm1WYWx1ZSkge1xuICAgICAgY29uc3QgZGlnaXRzID0gdmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcblxuICAgICAgdmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB1cGRhdGVWYWx1ZSxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHQtZmllbGQnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgaGFzQ2xlYXIgPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICA6aWNvbj1cImljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHYtaWY9XCJoYXNDbGVhciAmJiB0eXBlICE9PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkRcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdi1pZj1cInR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImhhc0Vycm9yXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfM11cIj5cbiAgICAgICAge3sgaGFzRXJyb3IgPyBlcnJvck1lc3NhZ2UgOiBzdXBwb3J0aW5nVGV4dCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgZXJyb3JEaXNwbGF5PzogRXJyb3JEaXNwbGF5O1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCB0ZXh0YXJlYUVsZW1lbnQgPSByZWY8SFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWVsZENsaWNrID0gKCkgPT4ge1xuICAgIHRleHRhcmVhRWxlbWVudC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFoYXNGb2N1cy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChlLnRhcmdldCAhPT0gdGV4dGFyZWFFbGVtZW50LnZhbHVlKSBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0KHtcbiAgICAgIGVycm9yRnJvbVByb3BzOiBwcm9wcy5lcnJvcixcbiAgICAgIG1heGxlbmd0aDogcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbWlubGVuZ3RoOiBwcm9wcy5taW5sZW5ndGgsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWxpZGF0b3JzOiBwcm9wcy52YWxpZGF0b3JzLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXRleHRhcmVhJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBzaG93RXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVGaWVsZENsaWNrXCJcbiAgICAgIEBtb3VzZWRvd249XCJwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJ0ZXh0YXJlYUVsZW1lbnRcIlxuICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgIDpyb3dzPVwicm93c1wiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0VGV4dGFyZWEudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCcsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5MRUZULk9ORSxcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsJyxcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJyb3dzXCJcbiAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgb3V0bGluZTogdmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSBzb2xpZCB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgb3V0bGluZS1vZmZzZXQ6IGNhbGModmFyKC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoKSAqIC0xKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWZvcmVncm91bmQpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGljb25UcmFpbGluZz86IEljb247XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgc3VidGxlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpY29uVHJhaWxpbmc6IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBzdWJ0bGU6IGZhbHNlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1saW5rJyxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORSxcbiAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICBzdWJ0bGUgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRiwgQ1NTLlVOREVSTElORS5IT1ZFUi5PTl0gOiBbQ1NTLlVOREVSTElORS5SRVNULk9OLCBDU1MuVU5ERVJMSU5FLkhPVkVSLk9GRl0sXG4gICAgXVwiXG4gICAgOmhyZWY9XCJwcm9wcy5ocmVmXCJcbiAgICA6dGFyZ2V0PVwicHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gRUxFTUVOVC5MSU5LIDogRUxFTUVOVC5CVVRUT05cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQUxJR04uWS5NSURETEUsIENTUy5NQVJHSU4uUklHSFQuUVVBUlRFUl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkFMSUdOLlkuTUlERExFXVwiPlxuICAgICAge3sgcHJvcHMubGFiZWwgfX1cbiAgICA8L3NwYW4+XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5BTElHTi5ZLk1JRERMRSwgQ1NTLk1BUkdJTi5MRUZULlFVQVJURVJdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IEJSRUFLUE9JTlQgPSB7XG4gIFNNOiAnc20nLFxuICBNRDogJ21kJyxcbiAgTEc6ICdsZycsXG4gIFhMOiAneGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IE1FRElBID0ge1xuICBTTTogNzY4LFxuICBNRDogOTkyLFxuICBMRzogMTIzMixcbiAgWEw6IDE5MjAsXG59O1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50ID0gKHR5cGVvZiBCUkVBS1BPSU5UKVtrZXlvZiB0eXBlb2YgQlJFQUtQT0lOVF07XG5leHBvcnQgdHlwZSBNZWRpYSA9ICh0eXBlb2YgTUVESUEpW2tleW9mIHR5cGVvZiBNRURJQV07XG4iLCJpbXBvcnQgeyBuZXh0VGljayB9IGZyb20gJ3Z1ZSc7XG5cbi8qKlxuICogRGlyZWN0bHkgbW9kaWZpZXMgdGhlIGA8Ym9keT5gIGVsZW1lbnQgdG8gYXBwbHkgb3IgcmVtb3ZlIHNjcm9sbCBsb2NrLlxuICogV2hlbiBgZmFsc2VgIGlzIHByb3ZpZGVkLCBpdCBvbmx5IHVubG9ja3Mgc2Nyb2xsIGlmIHRoZXJlIGFyZSBubyBvcGVuXG4gKiBIVE1MIGRpYWxvZyBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFNjcm9sbExvY2sgPSBhc3luYyAoaXNMb2NrZWQ6IGJvb2xlYW4pID0+IHtcbiAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgLy8gY29uc3QgQk9EWV9MT0NLX0NMQVNTID0gJ2JvZHktc2Nyb2xsLWxvY2snO1xuXG4gIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuXG4gIGlmIChpc0xvY2tlZCkge1xuICAgIGlmICghYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZKSB7XG4gICAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG5cbiAgICAgIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSA9IHNjcm9sbFkudG9TdHJpbmcoKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2F2ZWQtc2Nyb2xsLXknLCBgJHtzY3JvbGxZfXB4YCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdpbnNldCcsICcwJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdtYXJnaW4tdG9wJywgYGNhbGMoMHB4IC0gdmFyKC0tc2F2ZWQtc2Nyb2xsLXksIDBweCkpYCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgJ3Njcm9sbCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24nLCAnZml4ZWQnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LmFkZChCT0RZX0xPQ0tfQ0xBU1MpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGlhbG9nW29wZW5dJykpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsWSA9IHBhcnNlSW50KGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSB8fCAnMCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfTE9DS19DTEFTUyk7XG5cbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2luc2V0Jyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXJnaW5Ub3AnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ292ZXJmbG93WScpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgncG9zaXRpb24nKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tc2F2ZWQtc2Nyb2xsLXknKTtcblxuICAgICAgd2luZG93LnNjcm9sbFRvKHtcbiAgICAgICAgYmVoYXZpb3I6ICdhdXRvJyxcbiAgICAgICAgdG9wOiBzYXZlZFNjcm9sbFksXG4gICAgICB9KTtcblxuICAgICAgZGVsZXRlIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBUT1BfTEFZRVJfSUQgPSAndGlkZS10b3AtbGF5ZXInO1xuXG5leHBvcnQgY29uc3QgaW5pdEZhdXhUb3BMYXllciA9ICgpID0+IHtcbiAgbGV0IHRvcExheWVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVE9QX0xBWUVSX0lEKTtcbiAgaWYgKCF0b3BMYXllcikge1xuICAgIHRvcExheWVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdG9wTGF5ZXIuaWQgPSBUT1BfTEFZRVJfSUQ7XG4gICAgdG9wTGF5ZXIuc2V0QXR0cmlidXRlKCdkYXRhLWNzcy1zY29wZScsICcnKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvcExheWVyKTtcbiAgfVxuICB0b3BMYXllci5zdHlsZS5pc29sYXRpb24gPSAnaXNvbGF0ZSc7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgbmV4dFRpY2ssIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCUkVBS1BPSU5UIH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgc2V0U2Nyb2xsTG9jayB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGlzQmFja0J1dHRvbjogZmFsc2UsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdjbG9zZScpOiB2b2lkO1xuICAgIChlOiAnYmFjaycpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RhbENvbnRlbnQ6IFJlZjxIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcbiAgY29uc3QgbW9kYWxEaWFsb2c6IFJlZjxIVE1MRGlhbG9nRWxlbWVudCB8IHVuZGVmaW5lZD4gPSByZWYoKTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBtb2RhbERpYWxvZy52YWx1ZT8uc2hvd01vZGFsKCk7XG4gIH07XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5jbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbENvbnRlbnRUb1RvcCA9ICgpID0+IHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsQ29udGVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgbW9kYWxDb250ZW50LnZhbHVlLnNjcm9sbFRvcCA9IDA7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9ICgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNEaXNtaXNzaWJsZSkgZW1pdCgnY2xvc2UnKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmlzT3BlbixcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmICghbW9kYWxEaWFsb2cudmFsdWUpIHJldHVybjtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgICAgICBzY3JvbGxDb250ZW50VG9Ub3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgICAgfVxuICAgICAgc2V0U2Nyb2xsTG9jayhuZXdWYWx1ZSk7XG4gICAgfVxuICApO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzT3Blbikge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpYWxvZ1xuICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgcmVmPVwibW9kYWxEaWFsb2dcIlxuICAgIDpzdHlsZT1cInsgJy0tbW9kYWwtd2lkdGgnOiBwcm9wcy53aWR0aCB9XCJcbiAgICBAY2xpY2suc2VsZj1cImhhbmRsZUJhY2tkcm9wQ2xpY2tcIlxuICAgIEBjbG9zZS5wcmV2ZW50XG4gICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLW1vZGFsLWJvZHknLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5PTkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkJPVFRPTSxcbiAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgICAgIENTUy53aXRoQnJlYWtwb2ludChbQ1NTLlNIQURPVy5CT1RUT01dLCBCUkVBS1BPSU5ULlNNKSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxoZWFkZXJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWhlYWRlcicsXG4gICAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgIENTUy5QQURESU5HLlkuT05FLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICBDU1MuWl9JTkRFWC5PTkUsXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgIHRpdGxlPVwiQmFja1wiXG4gICAgICAgICAgdi1pZj1cImlzQmFja0J1dHRvblwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzJdXCJcbiAgICAgICAgICB2LXRleHQ9XCJ0aXRsZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICAgICAgdi1pZj1cImlzRGlzbWlzc2libGVcIlxuICAgICAgICAvPlxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWNvbnRlbnQnLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgIENTUy5QQURESU5HLlkuVFdPLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwibW9kYWxDb250ZW50XCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Zm9vdGVyXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1tb2RhbC1mb290ZXInLFxuICAgICAgICAgIENTUy5BWElTMS5FTkQsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuR0FQLlRXTyxcbiAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgQ1NTLlNIQURPVy5UT1AsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwiJHNsb3RzLmZvb3RlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGlhbG9nPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtbW9kYWwge1xuICAgIC0tbW9kYWwtcGFkZGluZy14OiAyMHB4O1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cbiAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICB9XG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICB3aWR0aDogdmFyKC0tbW9kYWwtd2lkdGgsIDU3NnB4KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpO1xuICB9XG5cbiAgLnRpZGUtbW9kYWwtaGVhZGVyLFxuICAudGlkZS1tb2RhbC1mb290ZXIge1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIC50aWRlLW1vZGFsLWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tbW9kYWwtcGFkZGluZy14KSAxZnIgdmFyKC0tbW9kYWwtcGFkZGluZy14KTtcbiAgfVxuICA6d2hlcmUoLnRpZGUtbW9kYWwtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG4gIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgIC50aWRlLW1vZGFsIHtcbiAgICAgIC0tbW9kYWwtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMik7XG4gICAgfVxuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgbWF4LWhlaWdodDogODUlO1xuICAgICAgYm90dG9tOiBpbml0aWFsO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVCdXR0b25QYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uUGFnaW5hdGlvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgcGFnZUN1cnJlbnQ/OiBudW1iZXI7XG4gICAgcGFnZVRvdGFsPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgcGFnZUN1cnJlbnQ6IDEsXG4gICAgcGFnZVRvdGFsOiAxLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgcGFnZUN1cnJlbnQgPSByZWYocHJvcHMucGFnZUN1cnJlbnQpO1xuXG4gIGNvbnN0IHBhZ2luYXRpb25CdXR0b25zID0gY29tcHV0ZWQoKCkgPT4gbmV3IEFycmF5KHByb3BzLnBhZ2VUb3RhbCkuZmlsbCgnJykubWFwKChlbXB0eSwgaW5kZXgpID0+IGluZGV4ICsgMSkpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBwYWdlQ3VycmVudC52YWx1ZSA9IGluZGV4O1xuXG4gICAgZW1pdCgnY2hhbmdlJywgZXZlbnQsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uXG4gICAgOmNsYXNzPVwiWyd0aWRlLXBhZ2luYXRpb24nLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzEuQ0VOVEVSLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiXG4gID5cbiAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgIDpkaXNhYmxlZD1cInBhZ2VDdXJyZW50ID09PSAxXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdlQ3VycmVudCAtIDEpXCJcbiAgICAvPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDprZXk9XCJwYWdpbmF0aW9uQnV0dG9uXCJcbiAgICAgICAgdi1mb3I9XCJwYWdpbmF0aW9uQnV0dG9uIGluIHBhZ2luYXRpb25CdXR0b25zXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVCdXR0b25QYWdpbmF0aW9uXG4gICAgICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpsYWJlbD1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2luYXRpb25CdXR0b24pXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IHBhZ2luYXRpb25CdXR0b25zW3BhZ2luYXRpb25CdXR0b25zLmxlbmd0aCAtIDFdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnZUN1cnJlbnQgKyAxKVwiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiLyoqXG4gKiBDdXN0b20gcG9zaXRpb25pbmcgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvdmlydHVhbC1lbGVtZW50c1xuICovXG5cbmNvbnN0IHNpZGVzID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXTtcbmNvbnN0IGFsaWdubWVudHMgPSBbJ3N0YXJ0JywgJ2VuZCddO1xuY29uc3QgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9zaWRlcy5yZWR1Y2UoKGFjYywgc2lkZSkgPT4gYWNjLmNvbmNhdChzaWRlLCBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnRzWzBdLCBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnRzWzFdKSwgW10pO1xuY29uc3QgbWluID0gTWF0aC5taW47XG5jb25zdCBtYXggPSBNYXRoLm1heDtcbmNvbnN0IHJvdW5kID0gTWF0aC5yb3VuZDtcbmNvbnN0IGZsb29yID0gTWF0aC5mbG9vcjtcbmNvbnN0IGNyZWF0ZUNvb3JkcyA9IHYgPT4gKHtcbiAgeDogdixcbiAgeTogdlxufSk7XG5jb25zdCBvcHBvc2l0ZVNpZGVNYXAgPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5jb25zdCBvcHBvc2l0ZUFsaWdubWVudE1hcCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5mdW5jdGlvbiBjbGFtcChzdGFydCwgdmFsdWUsIGVuZCkge1xuICByZXR1cm4gbWF4KHN0YXJ0LCBtaW4odmFsdWUsIGVuZCkpO1xufVxuZnVuY3Rpb24gZXZhbHVhdGUodmFsdWUsIHBhcmFtKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB2YWx1ZShwYXJhbSkgOiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldFNpZGUocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn1cbmZ1bmN0aW9uIGdldEF4aXNMZW5ndGgoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGdldE9wcG9zaXRlQXhpcyhnZXRTaWRlQXhpcyhwbGFjZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCkge1xuICBpZiAocnRsID09PSB2b2lkIDApIHtcbiAgICBydGwgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgbGV0IG1haW5BbGlnbm1lbnRTaWRlID0gYWxpZ25tZW50QXhpcyA9PT0gJ3gnID8gYWxpZ25tZW50ID09PSAocnRsID8gJ2VuZCcgOiAnc3RhcnQnKSA/ICdyaWdodCcgOiAnbGVmdCcgOiBhbGlnbm1lbnQgPT09ICdzdGFydCcgPyAnYm90dG9tJyA6ICd0b3AnO1xuICBpZiAocmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gPiByZWN0cy5mbG9hdGluZ1tsZW5ndGhdKSB7XG4gICAgbWFpbkFsaWdubWVudFNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSk7XG4gIH1cbiAgcmV0dXJuIFttYWluQWxpZ25tZW50U2lkZSwgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpXTtcbn1cbmZ1bmN0aW9uIGdldEV4cGFuZGVkUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgY29uc3Qgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGFsaWdubWVudCA9PiBvcHBvc2l0ZUFsaWdubWVudE1hcFthbGlnbm1lbnRdKTtcbn1cbmZ1bmN0aW9uIGdldFNpZGVMaXN0KHNpZGUsIGlzU3RhcnQsIHJ0bCkge1xuICBjb25zdCBsciA9IFsnbGVmdCcsICdyaWdodCddO1xuICBjb25zdCBybCA9IFsncmlnaHQnLCAnbGVmdCddO1xuICBjb25zdCB0YiA9IFsndG9wJywgJ2JvdHRvbSddO1xuICBjb25zdCBidCA9IFsnYm90dG9tJywgJ3RvcCddO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBpZiAocnRsKSByZXR1cm4gaXNTdGFydCA/IHJsIDogbHI7XG4gICAgICByZXR1cm4gaXNTdGFydCA/IGxyIDogcmw7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIGlzU3RhcnQgPyB0YiA6IGJ0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMocGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBkaXJlY3Rpb24sIHJ0bCkge1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgbGV0IGxpc3QgPSBnZXRTaWRlTGlzdChnZXRTaWRlKHBsYWNlbWVudCksIGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JywgcnRsKTtcbiAgaWYgKGFsaWdubWVudCkge1xuICAgIGxpc3QgPSBsaXN0Lm1hcChzaWRlID0+IHNpZGUgKyBcIi1cIiArIGFsaWdubWVudCk7XG4gICAgaWYgKGZsaXBBbGlnbm1lbnQpIHtcbiAgICAgIGxpc3QgPSBsaXN0LmNvbmNhdChsaXN0Lm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGlzdDtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBzaWRlID0+IG9wcG9zaXRlU2lkZU1hcFtzaWRlXSk7XG59XG5mdW5jdGlvbiBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgLi4ucGFkZGluZ1xuICB9O1xufVxuZnVuY3Rpb24gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIDoge1xuICAgIHRvcDogcGFkZGluZyxcbiAgICByaWdodDogcGFkZGluZyxcbiAgICBib3R0b206IHBhZGRpbmcsXG4gICAgbGVmdDogcGFkZGluZ1xuICB9O1xufVxuZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSByZWN0O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgbGVmdDogeCxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZXhwb3J0IHsgYWxpZ25tZW50cywgY2xhbXAsIGNyZWF0ZUNvb3JkcywgZXZhbHVhdGUsIGV4cGFuZFBhZGRpbmdPYmplY3QsIGZsb29yLCBnZXRBbGlnbm1lbnQsIGdldEFsaWdubWVudEF4aXMsIGdldEFsaWdubWVudFNpZGVzLCBnZXRBeGlzTGVuZ3RoLCBnZXRFeHBhbmRlZFBsYWNlbWVudHMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZUF4aXMsIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMsIGdldE9wcG9zaXRlUGxhY2VtZW50LCBnZXRQYWRkaW5nT2JqZWN0LCBnZXRTaWRlLCBnZXRTaWRlQXhpcywgbWF4LCBtaW4sIHBsYWNlbWVudHMsIHJlY3RUb0NsaWVudFJlY3QsIHJvdW5kLCBzaWRlcyB9O1xuIiwiaW1wb3J0IHsgZ2V0U2lkZUF4aXMsIGdldEFsaWdubWVudEF4aXMsIGdldEF4aXNMZW5ndGgsIGdldFNpZGUsIGdldEFsaWdubWVudCwgZXZhbHVhdGUsIGdldFBhZGRpbmdPYmplY3QsIHJlY3RUb0NsaWVudFJlY3QsIG1pbiwgY2xhbXAsIHBsYWNlbWVudHMsIGdldEFsaWdubWVudFNpZGVzLCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgc2lkZXMsIG1heCwgZ2V0T3Bwb3NpdGVBeGlzIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcbmV4cG9ydCB7IHJlY3RUb0NsaWVudFJlY3QgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuXG5mdW5jdGlvbiBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChfcmVmLCBwbGFjZW1lbnQsIHJ0bCkge1xuICBsZXQge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9ID0gX3JlZjtcbiAgY29uc3Qgc2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbkxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYWxpZ25tZW50QXhpcyk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBzaWRlQXhpcyA9PT0gJ3knO1xuICBjb25zdCBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZmxvYXRpbmcud2lkdGggLyAyO1xuICBjb25zdCBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGZsb2F0aW5nLmhlaWdodCAvIDI7XG4gIGNvbnN0IGNvbW1vbkFsaWduID0gcmVmZXJlbmNlW2FsaWduTGVuZ3RoXSAvIDIgLSBmbG9hdGluZ1thbGlnbkxlbmd0aF0gLyAyO1xuICBsZXQgY29vcmRzO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGZsb2F0aW5nLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBmbG9hdGluZy53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54LFxuICAgICAgICB5OiByZWZlcmVuY2UueVxuICAgICAgfTtcbiAgfVxuICBzd2l0Y2ggKGdldEFsaWdubWVudChwbGFjZW1lbnQpKSB7XG4gICAgY2FzZSAnc3RhcnQnOlxuICAgICAgY29vcmRzW2FsaWdubWVudEF4aXNdIC09IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VuZCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gKz0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGNvb3Jkcztcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKlxuICogVGhpcyBleHBvcnQgZG9lcyBub3QgaGF2ZSBhbnkgYHBsYXRmb3JtYCBpbnRlcmZhY2UgbG9naWMuIFlvdSB3aWxsIG5lZWQgdG9cbiAqIHdyaXRlIG9uZSBmb3IgdGhlIHBsYXRmb3JtIHlvdSBhcmUgdXNpbmcgRmxvYXRpbmcgVUkgd2l0aC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gYXN5bmMgKHJlZmVyZW5jZSwgZmxvYXRpbmcsIGNvbmZpZykgPT4ge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50ID0gJ2JvdHRvbScsXG4gICAgc3RyYXRlZ3kgPSAnYWJzb2x1dGUnLFxuICAgIG1pZGRsZXdhcmUgPSBbXSxcbiAgICBwbGF0Zm9ybVxuICB9ID0gY29uZmlnO1xuICBjb25zdCB2YWxpZE1pZGRsZXdhcmUgPSBtaWRkbGV3YXJlLmZpbHRlcihCb29sZWFuKTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChmbG9hdGluZykpO1xuICBsZXQgcmVjdHMgPSBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZyxcbiAgICBzdHJhdGVneVxuICB9KTtcbiAgbGV0IHtcbiAgICB4LFxuICAgIHlcbiAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBwbGFjZW1lbnQsIHJ0bCk7XG4gIGxldCBzdGF0ZWZ1bFBsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgbGV0IG1pZGRsZXdhcmVEYXRhID0ge307XG4gIGxldCByZXNldENvdW50ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWxpZE1pZGRsZXdhcmUubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB7XG4gICAgICBuYW1lLFxuICAgICAgZm5cbiAgICB9ID0gdmFsaWRNaWRkbGV3YXJlW2ldO1xuICAgIGNvbnN0IHtcbiAgICAgIHg6IG5leHRYLFxuICAgICAgeTogbmV4dFksXG4gICAgICBkYXRhLFxuICAgICAgcmVzZXRcbiAgICB9ID0gYXdhaXQgZm4oe1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBpbml0aWFsUGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgIGZsb2F0aW5nXG4gICAgICB9XG4gICAgfSk7XG4gICAgeCA9IG5leHRYICE9IG51bGwgPyBuZXh0WCA6IHg7XG4gICAgeSA9IG5leHRZICE9IG51bGwgPyBuZXh0WSA6IHk7XG4gICAgbWlkZGxld2FyZURhdGEgPSB7XG4gICAgICAuLi5taWRkbGV3YXJlRGF0YSxcbiAgICAgIFtuYW1lXToge1xuICAgICAgICAuLi5taWRkbGV3YXJlRGF0YVtuYW1lXSxcbiAgICAgICAgLi4uZGF0YVxuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHJlc2V0ICYmIHJlc2V0Q291bnQgPD0gNTApIHtcbiAgICAgIHJlc2V0Q291bnQrKztcbiAgICAgIGlmICh0eXBlb2YgcmVzZXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChyZXNldC5wbGFjZW1lbnQpIHtcbiAgICAgICAgICBzdGF0ZWZ1bFBsYWNlbWVudCA9IHJlc2V0LnBsYWNlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzZXQucmVjdHMpIHtcbiAgICAgICAgICByZWN0cyA9IHJlc2V0LnJlY3RzID09PSB0cnVlID8gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIGZsb2F0aW5nLFxuICAgICAgICAgICAgc3RyYXRlZ3lcbiAgICAgICAgICB9KSA6IHJlc2V0LnJlY3RzO1xuICAgICAgICB9XG4gICAgICAgICh7XG4gICAgICAgICAgeCxcbiAgICAgICAgICB5XG4gICAgICAgIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgc3RhdGVmdWxQbGFjZW1lbnQsIHJ0bCkpO1xuICAgICAgfVxuICAgICAgaSA9IC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgIHN0cmF0ZWd5LFxuICAgIG1pZGRsZXdhcmVEYXRhXG4gIH07XG59O1xuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9hd2FpdCRwbGF0Zm9ybSRpc0VsZTtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYXRmb3JtLFxuICAgIHJlY3RzLFxuICAgIGVsZW1lbnRzLFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBzdGF0ZTtcbiAgY29uc3Qge1xuICAgIGJvdW5kYXJ5ID0gJ2NsaXBwaW5nQW5jZXN0b3JzJyxcbiAgICByb290Qm91bmRhcnkgPSAndmlld3BvcnQnLFxuICAgIGVsZW1lbnRDb250ZXh0ID0gJ2Zsb2F0aW5nJyxcbiAgICBhbHRCb3VuZGFyeSA9IGZhbHNlLFxuICAgIHBhZGRpbmcgPSAwXG4gIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICBjb25zdCBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyAncmVmZXJlbmNlJyA6ICdmbG9hdGluZyc7XG4gIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIGNvbnN0IGNsaXBwaW5nQ2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QoYXdhaXQgcGxhdGZvcm0uZ2V0Q2xpcHBpbmdSZWN0KHtcbiAgICBlbGVtZW50OiAoKF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA9IGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChlbGVtZW50KSkpICE9IG51bGwgPyBfYXdhaXQkcGxhdGZvcm0kaXNFbGUgOiB0cnVlKSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IChhd2FpdCAocGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpKSksXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0pKTtcbiAgY29uc3QgcmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aDogcmVjdHMuZmxvYXRpbmcud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0cy5mbG9hdGluZy5oZWlnaHRcbiAgfSA6IHJlY3RzLnJlZmVyZW5jZTtcbiAgY29uc3Qgb2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IG9mZnNldFNjYWxlID0gKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSkgPyAoYXdhaXQgKHBsYXRmb3JtLmdldFNjYWxlID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRTY2FsZShvZmZzZXRQYXJlbnQpKSkgfHwge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9IDoge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCBlbGVtZW50Q2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QocGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QgPyBhd2FpdCBwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCh7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSkgOiByZWN0KTtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IChjbGlwcGluZ0NsaWVudFJlY3QudG9wIC0gZWxlbWVudENsaWVudFJlY3QudG9wICsgcGFkZGluZ09iamVjdC50b3ApIC8gb2Zmc2V0U2NhbGUueSxcbiAgICBib3R0b206IChlbGVtZW50Q2xpZW50UmVjdC5ib3R0b20gLSBjbGlwcGluZ0NsaWVudFJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIC8gb2Zmc2V0U2NhbGUueSxcbiAgICBsZWZ0OiAoY2xpcHBpbmdDbGllbnRSZWN0LmxlZnQgLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgcGFkZGluZ09iamVjdC5sZWZ0KSAvIG9mZnNldFNjYWxlLngsXG4gICAgcmlnaHQ6IChlbGVtZW50Q2xpZW50UmVjdC5yaWdodCAtIGNsaXBwaW5nQ2xpZW50UmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQpIC8gb2Zmc2V0U2NhbGUueFxuICB9O1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4gKHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgb3B0aW9ucyxcbiAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICBjb25zdCB7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50cyxcbiAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgfSA9IHN0YXRlO1xuICAgIC8vIFNpbmNlIGBlbGVtZW50YCBpcyByZXF1aXJlZCwgd2UgZG9uJ3QgUGFydGlhbDw+IHRoZSB0eXBlLlxuICAgIGNvbnN0IHtcbiAgICAgIGVsZW1lbnQsXG4gICAgICBwYWRkaW5nID0gMFxuICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSkgfHwge307XG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0UGFkZGluZ09iamVjdChwYWRkaW5nKTtcbiAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICB4LFxuICAgICAgeVxuICAgIH07XG4gICAgY29uc3QgYXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGF4aXMpO1xuICAgIGNvbnN0IGFycm93RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgY29uc3QgaXNZQXhpcyA9IGF4aXMgPT09ICd5JztcbiAgICBjb25zdCBtaW5Qcm9wID0gaXNZQXhpcyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgIGNvbnN0IG1heFByb3AgPSBpc1lBeGlzID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgIGNvbnN0IGNsaWVudFByb3AgPSBpc1lBeGlzID8gJ2NsaWVudEhlaWdodCcgOiAnY2xpZW50V2lkdGgnO1xuICAgIGNvbnN0IGVuZERpZmYgPSByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSArIHJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIGNvb3Jkc1theGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgY29uc3Qgc3RhcnREaWZmID0gY29vcmRzW2F4aXNdIC0gcmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICAgIGNvbnN0IGFycm93T2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpKTtcbiAgICBsZXQgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXJyb3dPZmZzZXRQYXJlbnRbY2xpZW50UHJvcF0gOiAwO1xuXG4gICAgLy8gRE9NIHBsYXRmb3JtIGNhbiByZXR1cm4gYHdpbmRvd2AgYXMgdGhlIGBvZmZzZXRQYXJlbnRgLlxuICAgIGlmICghY2xpZW50U2l6ZSB8fCAhKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChhcnJvd09mZnNldFBhcmVudCkpKSkge1xuICAgICAgY2xpZW50U2l6ZSA9IGVsZW1lbnRzLmZsb2F0aW5nW2NsaWVudFByb3BdIHx8IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgfVxuICAgIGNvbnN0IGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyO1xuXG4gICAgLy8gSWYgdGhlIHBhZGRpbmcgaXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgY2F1c2VzIHRoZSBhcnJvdyB0byBubyBsb25nZXIgYmVcbiAgICAvLyBjZW50ZXJlZCwgbW9kaWZ5IHRoZSBwYWRkaW5nIHNvIHRoYXQgaXQgaXMgY2VudGVyZWQuXG4gICAgY29uc3QgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIC0gMTtcbiAgICBjb25zdCBtaW5QYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWluUHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuICAgIGNvbnN0IG1heFBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttYXhQcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaWYgdGhlIGNlbnRlclxuICAgIC8vIHBvaW50IGlzIG91dHNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQncyBib3VuZHMuXG4gICAgY29uc3QgbWluJDEgPSBtaW5QYWRkaW5nO1xuICAgIGNvbnN0IG1heCA9IGNsaWVudFNpemUgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAtIG1heFBhZGRpbmc7XG4gICAgY29uc3QgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgICBjb25zdCBvZmZzZXQgPSBjbGFtcChtaW4kMSwgY2VudGVyLCBtYXgpO1xuXG4gICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBzbWFsbCBlbm91Z2ggdGhhdCB0aGUgYXJyb3cncyBwYWRkaW5nIGNhdXNlcyBpdCB0b1xuICAgIC8vIHRvIHBvaW50IHRvIG5vdGhpbmcgZm9yIGFuIGFsaWduZWQgcGxhY2VtZW50LCBhZGp1c3QgdGhlIG9mZnNldCBvZiB0aGVcbiAgICAvLyBmbG9hdGluZyBlbGVtZW50IGl0c2VsZi4gVG8gZW5zdXJlIGBzaGlmdCgpYCBjb250aW51ZXMgdG8gdGFrZSBhY3Rpb24sXG4gICAgLy8gYSBzaW5nbGUgcmVzZXQgaXMgcGVyZm9ybWVkIHdoZW4gdGhpcyBpcyB0cnVlLlxuICAgIGNvbnN0IHNob3VsZEFkZE9mZnNldCA9ICFtaWRkbGV3YXJlRGF0YS5hcnJvdyAmJiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSAhPSBudWxsICYmIGNlbnRlciAhPT0gb2Zmc2V0ICYmIHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdIC8gMiAtIChjZW50ZXIgPCBtaW4kMSA/IG1pblBhZGRpbmcgOiBtYXhQYWRkaW5nKSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiA8IDA7XG4gICAgY29uc3QgYWxpZ25tZW50T2Zmc2V0ID0gc2hvdWxkQWRkT2Zmc2V0ID8gY2VudGVyIDwgbWluJDEgPyBjZW50ZXIgLSBtaW4kMSA6IGNlbnRlciAtIG1heCA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtheGlzXTogY29vcmRzW2F4aXNdICsgYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgZGF0YToge1xuICAgICAgICBbYXhpc106IG9mZnNldCxcbiAgICAgICAgY2VudGVyT2Zmc2V0OiBjZW50ZXIgLSBvZmZzZXQgLSBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICAgIC4uLihzaG91bGRBZGRPZmZzZXQgJiYge1xuICAgICAgICAgIGFsaWdubWVudE9mZnNldFxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICAgIHJlc2V0OiBzaG91bGRBZGRPZmZzZXRcbiAgICB9O1xuICB9XG59KTtcblxuZnVuY3Rpb24gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSB7XG4gIGNvbnN0IGFsbG93ZWRQbGFjZW1lbnRzU29ydGVkQnlBbGlnbm1lbnQgPSBhbGlnbm1lbnQgPyBbLi4uYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50KSwgLi4uYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSAhPT0gYWxpZ25tZW50KV0gOiBhbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldFNpZGUocGxhY2VtZW50KSA9PT0gcGxhY2VtZW50KTtcbiAgcmV0dXJuIGFsbG93ZWRQbGFjZW1lbnRzU29ydGVkQnlBbGlnbm1lbnQuZmlsdGVyKHBsYWNlbWVudCA9PiB7XG4gICAgaWYgKGFsaWdubWVudCkge1xuICAgICAgcmV0dXJuIGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQgfHwgKGF1dG9BbGlnbm1lbnQgPyBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpICE9PSBwbGFjZW1lbnQgOiBmYWxzZSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn1cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhdXRvUGxhY2VtZW50JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGF1dG9QLCBfbWlkZGxld2FyZURhdGEkYXV0b1AyLCBfcGxhY2VtZW50c1RoYXRGaXRPbkU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGFsaWdubWVudCxcbiAgICAgICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLFxuICAgICAgICBhdXRvQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgcGxhY2VtZW50cyQxID0gYWxpZ25tZW50ICE9PSB1bmRlZmluZWQgfHwgYWxsb3dlZFBsYWNlbWVudHMgPT09IHBsYWNlbWVudHMgPyBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCB8fCBudWxsLCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykgOiBhbGxvd2VkUGxhY2VtZW50cztcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSAoKF9taWRkbGV3YXJlRGF0YSRhdXRvUCA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AuaW5kZXgpIHx8IDA7XG4gICAgICBjb25zdCBjdXJyZW50UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleF07XG4gICAgICBpZiAoY3VycmVudFBsYWNlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFsaWdubWVudFNpZGVzID0gZ2V0QWxpZ25tZW50U2lkZXMoY3VycmVudFBsYWNlbWVudCwgcmVjdHMsIGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSk7XG5cbiAgICAgIC8vIE1ha2UgYGNvbXB1dGVDb29yZHNgIHN0YXJ0IGZyb20gdGhlIHJpZ2h0IHBsYWNlLlxuICAgICAgaWYgKHBsYWNlbWVudCAhPT0gY3VycmVudFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudHMkMVswXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRPdmVyZmxvd3MgPSBbb3ZlcmZsb3dbZ2V0U2lkZShjdXJyZW50UGxhY2VtZW50KV0sIG92ZXJmbG93W2FsaWdubWVudFNpZGVzWzBdXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMV1dXTtcbiAgICAgIGNvbnN0IGFsbE92ZXJmbG93cyA9IFsuLi4oKChfbWlkZGxld2FyZURhdGEkYXV0b1AyID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUDIub3ZlcmZsb3dzKSB8fCBbXSksIHtcbiAgICAgICAgcGxhY2VtZW50OiBjdXJyZW50UGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3M6IGN1cnJlbnRPdmVyZmxvd3NcbiAgICAgIH1dO1xuICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHMkMVtjdXJyZW50SW5kZXggKyAxXTtcblxuICAgICAgLy8gVGhlcmUgYXJlIG1vcmUgcGxhY2VtZW50cyB0byBjaGVjay5cbiAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogbmV4dFBsYWNlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZSA9IGFsbE92ZXJmbG93cy5tYXAoZCA9PiB7XG4gICAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChkLnBsYWNlbWVudCk7XG4gICAgICAgIHJldHVybiBbZC5wbGFjZW1lbnQsIGFsaWdubWVudCAmJiBjcm9zc0F4aXMgP1xuICAgICAgICAvLyBDaGVjayBhbG9uZyB0aGUgbWFpbkF4aXMgYW5kIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGQub3ZlcmZsb3dzLnNsaWNlKDAsIDIpLnJlZHVjZSgoYWNjLCB2KSA9PiBhY2MgKyB2LCAwKSA6XG4gICAgICAgIC8vIENoZWNrIG9ubHkgdGhlIG1haW5BeGlzLlxuICAgICAgICBkLm92ZXJmbG93c1swXSwgZC5vdmVyZmxvd3NdO1xuICAgICAgfSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pO1xuICAgICAgY29uc3QgcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlID0gcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlLmZpbHRlcihkID0+IGRbMl0uc2xpY2UoMCxcbiAgICAgIC8vIEFsaWduZWQgcGxhY2VtZW50cyBzaG91bGQgbm90IGNoZWNrIHRoZWlyIG9wcG9zaXRlIGNyb3NzQXhpc1xuICAgICAgLy8gc2lkZS5cbiAgICAgIGdldEFsaWdubWVudChkWzBdKSA/IDIgOiAzKS5ldmVyeSh2ID0+IHYgPD0gMCkpO1xuICAgICAgY29uc3QgcmVzZXRQbGFjZW1lbnQgPSAoKF9wbGFjZW1lbnRzVGhhdEZpdE9uRSA9IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wbGFjZW1lbnRzVGhhdEZpdE9uRVswXSkgfHwgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlWzBdWzBdO1xuICAgICAgaWYgKHJlc2V0UGxhY2VtZW50ICE9PSBwbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZmxpcCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRhcnJvdywgX21pZGRsZXdhcmVEYXRhJGZsaXA7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBpbml0aWFsUGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZSxcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICAgIGZhbGxiYWNrU3RyYXRlZ3kgPSAnYmVzdEZpdCcsXG4gICAgICAgIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSAnbm9uZScsXG4gICAgICAgIGZsaXBBbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgICAgIC8vIElmIGEgcmVzZXQgYnkgdGhlIGFycm93IHdhcyBjYXVzZWQgZHVlIHRvIGFuIGFsaWdubWVudCBvZmZzZXQgYmVpbmdcbiAgICAgIC8vIGFkZGVkLCB3ZSBzaG91bGQgc2tpcCBhbnkgbG9naWMgbm93IHNpbmNlIGBmbGlwKClgIGhhcyBhbHJlYWR5IGRvbmUgaXRzXG4gICAgICAvLyB3b3JrLlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yNTQ5I2lzc3VlY29tbWVudC0xNzE5NjAxNjQzXG4gICAgICBpZiAoKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGluaXRpYWxTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGluaXRpYWxQbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNCYXNlUGxhY2VtZW50ID0gZ2V0U2lkZShpbml0aWFsUGxhY2VtZW50KSA9PT0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwQWxpZ25tZW50ID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KGluaXRpYWxQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiAhPT0gJ25vbmUnO1xuICAgICAgaWYgKCFzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgJiYgaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbikge1xuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHMucHVzaCguLi5nZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24sIHJ0bCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFtpbml0aWFsUGxhY2VtZW50LCAuLi5mYWxsYmFja1BsYWNlbWVudHNdO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93cyA9IFtdO1xuICAgICAgbGV0IG92ZXJmbG93c0RhdGEgPSAoKF9taWRkbGV3YXJlRGF0YSRmbGlwID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwLm92ZXJmbG93cykgfHwgW107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlXSk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3Qgc2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpO1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlc1swXV0sIG92ZXJmbG93W3NpZGVzWzFdXSk7XG4gICAgICB9XG4gICAgICBvdmVyZmxvd3NEYXRhID0gWy4uLm92ZXJmbG93c0RhdGEsIHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3NcbiAgICAgIH1dO1xuXG4gICAgICAvLyBPbmUgb3IgbW9yZSBzaWRlcyBpcyBvdmVyZmxvd2luZy5cbiAgICAgIGlmICghb3ZlcmZsb3dzLmV2ZXJ5KHNpZGUgPT4gc2lkZSA8PSAwKSkge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGZsaXAyLCBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXI7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9ICgoKF9taWRkbGV3YXJlRGF0YSRmbGlwMiA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcDIuaW5kZXgpIHx8IDApICsgMTtcbiAgICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHNbbmV4dEluZGV4XTtcbiAgICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgICAvLyBUcnkgbmV4dCBwbGFjZW1lbnQgYW5kIHJlLXJ1biB0aGUgbGlmZWN5Y2xlLlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGluZGV4OiBuZXh0SW5kZXgsXG4gICAgICAgICAgICAgIG92ZXJmbG93czogb3ZlcmZsb3dzRGF0YVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogbmV4dFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaXJzdCwgZmluZCB0aGUgY2FuZGlkYXRlcyB0aGF0IGZpdCBvbiB0aGUgbWFpbkF4aXMgc2lkZSBvZiBvdmVyZmxvdyxcbiAgICAgICAgLy8gdGhlbiBmaW5kIHRoZSBwbGFjZW1lbnQgdGhhdCBmaXRzIHRoZSBiZXN0IG9uIHRoZSBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBsZXQgcmVzZXRQbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoZCA9PiBkLm92ZXJmbG93c1swXSA8PSAwKS5zb3J0KChhLCBiKSA9PiBhLm92ZXJmbG93c1sxXSAtIGIub3ZlcmZsb3dzWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlci5wbGFjZW1lbnQ7XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGxiYWNrLlxuICAgICAgICBpZiAoIXJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgc3dpdGNoIChmYWxsYmFja1N0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdiZXN0Rml0JzpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhciBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoZCA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoaGFzRmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhkLnBsYWNlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2lkZUF4aXMgPT09IGluaXRpYWxTaWRlQXhpcyB8fFxuICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBiaWFzIHRvIHRoZSBgeWAgc2lkZSBheGlzIGR1ZSB0byBob3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAgIC8vIHJlYWRpbmcgZGlyZWN0aW9ucyBmYXZvcmluZyBncmVhdGVyIHdpZHRoLlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2lkZUF4aXMgPT09ICd5JztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0pLm1hcChkID0+IFtkLnBsYWNlbWVudCwgZC5vdmVyZmxvd3MuZmlsdGVyKG92ZXJmbG93ID0+IG92ZXJmbG93ID4gMCkucmVkdWNlKChhY2MsIG92ZXJmbG93KSA9PiBhY2MgKyBvdmVyZmxvdywgMCldKS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIyWzBdO1xuICAgICAgICAgICAgICAgIGlmIChwbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnaW5pdGlhbFBsYWNlbWVudCc6XG4gICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwbGFjZW1lbnQgIT09IHJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aFxuICB9O1xufVxuZnVuY3Rpb24gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG92ZXJmbG93KSB7XG4gIHJldHVybiBzaWRlcy5zb21lKHNpZGUgPT4gb3ZlcmZsb3dbc2lkZV0gPj0gMCk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaGlkZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBzdHJhdGVneSA9ICdyZWZlcmVuY2VIaWRkZW4nLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgJ3JlZmVyZW5jZUhpZGRlbic6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLnJlZmVyZW5jZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW46IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnZXNjYXBlZCc6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMuZmxvYXRpbmcpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGVzY2FwZWRPZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIGVzY2FwZWQ6IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nUmVjdChyZWN0cykge1xuICBjb25zdCBtaW5YID0gbWluKC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICBjb25zdCBtaW5ZID0gbWluKC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QudG9wKSk7XG4gIGNvbnN0IG1heFggPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICBjb25zdCBtYXhZID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QuYm90dG9tKSk7XG4gIHJldHVybiB7XG4gICAgeDogbWluWCxcbiAgICB5OiBtaW5ZLFxuICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRSZWN0c0J5TGluZShyZWN0cykge1xuICBjb25zdCBzb3J0ZWRSZWN0cyA9IHJlY3RzLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYS55IC0gYi55KTtcbiAgY29uc3QgZ3JvdXBzID0gW107XG4gIGxldCBwcmV2UmVjdCA9IG51bGw7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkUmVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCByZWN0ID0gc29ydGVkUmVjdHNbaV07XG4gICAgaWYgKCFwcmV2UmVjdCB8fCByZWN0LnkgLSBwcmV2UmVjdC55ID4gcHJldlJlY3QuaGVpZ2h0IC8gMikge1xuICAgICAgZ3JvdXBzLnB1c2goW3JlY3RdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBzW2dyb3Vwcy5sZW5ndGggLSAxXS5wdXNoKHJlY3QpO1xuICAgIH1cbiAgICBwcmV2UmVjdCA9IHJlY3Q7XG4gIH1cbiAgcmV0dXJuIGdyb3Vwcy5tYXAocmVjdCA9PiByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChyZWN0KSkpO1xufVxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdpbmxpbmUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgLy8gQSBNb3VzZUV2ZW50J3MgY2xpZW50e1gsWX0gY29vcmRzIGNhbiBiZSB1cCB0byAyIHBpeGVscyBvZmYgYVxuICAgICAgLy8gQ2xpZW50UmVjdCdzIGJvdW5kcywgZGVzcGl0ZSB0aGUgZXZlbnQgbGlzdGVuZXIgYmVpbmcgdHJpZ2dlcmVkLiBBXG4gICAgICAvLyBwYWRkaW5nIG9mIDIgc2VlbXMgdG8gaGFuZGxlIHRoaXMgaXNzdWUuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHBhZGRpbmcgPSAyLFxuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgbmF0aXZlQ2xpZW50UmVjdHMgPSBBcnJheS5mcm9tKChhd2FpdCAocGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldENsaWVudFJlY3RzKGVsZW1lbnRzLnJlZmVyZW5jZSkpKSB8fCBbXSk7XG4gICAgICBjb25zdCBjbGllbnRSZWN0cyA9IGdldFJlY3RzQnlMaW5lKG5hdGl2ZUNsaWVudFJlY3RzKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrID0gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QobmF0aXZlQ2xpZW50UmVjdHMpKTtcbiAgICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgICAgZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkge1xuICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHJlY3RzIGFuZCB0aGV5IGFyZSBkaXNqb2luZWQuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPT09IDIgJiYgY2xpZW50UmVjdHNbMF0ubGVmdCA+IGNsaWVudFJlY3RzWzFdLnJpZ2h0ICYmIHggIT0gbnVsbCAmJiB5ICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCByZWN0IGluIHdoaWNoIHRoZSBwb2ludCBpcyBmdWxseSBpbnNpZGUuXG4gICAgICAgICAgcmV0dXJuIGNsaWVudFJlY3RzLmZpbmQocmVjdCA9PiB4ID4gcmVjdC5sZWZ0IC0gcGFkZGluZ09iamVjdC5sZWZ0ICYmIHggPCByZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCAmJiB5ID4gcmVjdC50b3AgLSBwYWRkaW5nT2JqZWN0LnRvcCAmJiB5IDwgcmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgfHwgZmFsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGVyZSBhcmUgMiBvciBtb3JlIGNvbm5lY3RlZCByZWN0cy5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgaWYgKGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09ICd5Jykge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RSZWN0ID0gY2xpZW50UmVjdHNbMF07XG4gICAgICAgICAgICBjb25zdCBsYXN0UmVjdCA9IGNsaWVudFJlY3RzW2NsaWVudFJlY3RzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgaXNUb3AgPSBnZXRTaWRlKHBsYWNlbWVudCkgPT09ICd0b3AnO1xuICAgICAgICAgICAgY29uc3QgdG9wID0gZmlyc3RSZWN0LnRvcDtcbiAgICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IGxhc3RSZWN0LmJvdHRvbTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBpc1RvcCA/IGZpcnN0UmVjdC5sZWZ0IDogbGFzdFJlY3QubGVmdDtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gaXNUb3AgPyBmaXJzdFJlY3QucmlnaHQgOiBsYXN0UmVjdC5yaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGlzTGVmdFNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCkgPT09ICdsZWZ0JztcbiAgICAgICAgICBjb25zdCBtYXhSaWdodCA9IG1heCguLi5jbGllbnRSZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gICAgICAgICAgY29uc3QgbWluTGVmdCA9IG1pbiguLi5jbGllbnRSZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgICAgICAgICBjb25zdCBtZWFzdXJlUmVjdHMgPSBjbGllbnRSZWN0cy5maWx0ZXIocmVjdCA9PiBpc0xlZnRTaWRlID8gcmVjdC5sZWZ0ID09PSBtaW5MZWZ0IDogcmVjdC5yaWdodCA9PT0gbWF4UmlnaHQpO1xuICAgICAgICAgIGNvbnN0IHRvcCA9IG1lYXN1cmVSZWN0c1swXS50b3A7XG4gICAgICAgICAgY29uc3QgYm90dG9tID0gbWVhc3VyZVJlY3RzW21lYXN1cmVSZWN0cy5sZW5ndGggLSAxXS5ib3R0b207XG4gICAgICAgICAgY29uc3QgbGVmdCA9IG1pbkxlZnQ7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBtYXhSaWdodDtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzZXRSZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuICAgICAgICB9LFxuICAgICAgICBmbG9hdGluZzogZWxlbWVudHMuZmxvYXRpbmcsXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9KTtcbiAgICAgIGlmIChyZWN0cy5yZWZlcmVuY2UueCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UueCB8fCByZWN0cy5yZWZlcmVuY2UueSAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UueSB8fCByZWN0cy5yZWZlcmVuY2Uud2lkdGggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLndpZHRoIHx8IHJlY3RzLnJlZmVyZW5jZS5oZWlnaHQgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogcmVzZXRSZWN0c1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG4vLyBGb3IgdHlwZSBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSwgdGhlIGBPZmZzZXRPcHRpb25zYCB0eXBlIHdhcyBhbHNvXG4vLyBEZXJpdmFibGUuXG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQsXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHNcbiAgfSA9IHN0YXRlO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICBjb25zdCBtYWluQXhpc011bHRpID0gWydsZWZ0JywgJ3RvcCddLmluY2x1ZGVzKHNpZGUpID8gLTEgOiAxO1xuICBjb25zdCBjcm9zc0F4aXNNdWx0aSA9IHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxO1xuICBjb25zdCByYXdWYWx1ZSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG4gIGxldCB7XG4gICAgbWFpbkF4aXMsXG4gICAgY3Jvc3NBeGlzLFxuICAgIGFsaWdubWVudEF4aXNcbiAgfSA9IHR5cGVvZiByYXdWYWx1ZSA9PT0gJ251bWJlcicgPyB7XG4gICAgbWFpbkF4aXM6IHJhd1ZhbHVlLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsXG4gIH0gOiB7XG4gICAgbWFpbkF4aXM6IHJhd1ZhbHVlLm1haW5BeGlzIHx8IDAsXG4gICAgY3Jvc3NBeGlzOiByYXdWYWx1ZS5jcm9zc0F4aXMgfHwgMCxcbiAgICBhbGlnbm1lbnRBeGlzOiByYXdWYWx1ZS5hbGlnbm1lbnRBeGlzXG4gIH07XG4gIGlmIChhbGlnbm1lbnQgJiYgdHlwZW9mIGFsaWdubWVudEF4aXMgPT09ICdudW1iZXInKSB7XG4gICAgY3Jvc3NBeGlzID0gYWxpZ25tZW50ID09PSAnZW5kJyA/IGFsaWdubWVudEF4aXMgKiAtMSA6IGFsaWdubWVudEF4aXM7XG4gIH1cbiAgcmV0dXJuIGlzVmVydGljYWwgPyB7XG4gICAgeDogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGksXG4gICAgeTogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpXG4gIH0gOiB7XG4gICAgeDogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpLFxuICAgIHk6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpXG4gIH07XG59XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRhcnJvdztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgZGlmZkNvb3JkcyA9IGF3YWl0IGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKTtcblxuICAgICAgLy8gSWYgdGhlIHBsYWNlbWVudCBpcyB0aGUgc2FtZSBhbmQgdGhlIGFycm93IGNhdXNlZCBhbiBhbGlnbm1lbnQgb2Zmc2V0XG4gICAgICAvLyB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSBwb3NpdGlvbmluZyBjb29yZGluYXRlcy5cbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlLnBsYWNlbWVudCkgJiYgKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCArIGRpZmZDb29yZHMueCxcbiAgICAgICAgeTogeSArIGRpZmZDb29yZHMueSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLmRpZmZDb29yZHMsXG4gICAgICAgICAgcGxhY2VtZW50XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaGlmdCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnRcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGxpbWl0ZXIgPSB7XG4gICAgICAgICAgZm46IF9yZWYgPT4ge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gbWFpbkF4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBtYWluQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIG1haW5BeGlzQ29vcmQgPSBjbGFtcChtaW4sIG1haW5BeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gY3Jvc3NBeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gY3Jvc3NBeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBjbGFtcChtaW4sIGNyb3NzQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGltaXRlZENvb3JkcyA9IGxpbWl0ZXIuZm4oe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmxpbWl0ZWRDb29yZHMsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB4OiBsaW1pdGVkQ29vcmRzLnggLSB4LFxuICAgICAgICAgIHk6IGxpbWl0ZWRDb29yZHMueSAtIHksXG4gICAgICAgICAgZW5hYmxlZDoge1xuICAgICAgICAgICAgW21haW5BeGlzXTogY2hlY2tNYWluQXhpcyxcbiAgICAgICAgICAgIFtjcm9zc0F4aXNdOiBjaGVja0Nyb3NzQXhpc1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBvcHRpb25zLFxuICAgIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG9mZnNldCA9IDAsXG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWVcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgbWFpbkF4aXMgPSBnZXRPcHBvc2l0ZUF4aXMoY3Jvc3NBeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgY29uc3QgcmF3T2Zmc2V0ID0gZXZhbHVhdGUob2Zmc2V0LCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb21wdXRlZE9mZnNldCA9IHR5cGVvZiByYXdPZmZzZXQgPT09ICdudW1iZXInID8ge1xuICAgICAgICBtYWluQXhpczogcmF3T2Zmc2V0LFxuICAgICAgICBjcm9zc0F4aXM6IDBcbiAgICAgIH0gOiB7XG4gICAgICAgIG1haW5BeGlzOiAwLFxuICAgICAgICBjcm9zc0F4aXM6IDAsXG4gICAgICAgIC4uLnJhd09mZnNldFxuICAgICAgfTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gLSBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgaWYgKG1haW5BeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChtYWluQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkb2Zmc2UyO1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgICAgICBjb25zdCBpc09yaWdpblNpZGUgPSBbJ3RvcCcsICdsZWZ0J10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2VbY3Jvc3NBeGlzXSkgfHwgMCA6IDApICsgKGlzT3JpZ2luU2lkZSA/IDAgOiBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMpO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gMCA6ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlMiA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZTJbY3Jvc3NBeGlzXSkgfHwgMCkgLSAoaXNPcmlnaW5TaWRlID8gY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzIDogMCk7XG4gICAgICAgIGlmIChjcm9zc0F4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChjcm9zc0F4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2l6ZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YSwgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMjtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFwcGx5ID0gKCkgPT4ge30sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc1lBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knO1xuICAgICAgY29uc3Qge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gcmVjdHMuZmxvYXRpbmc7XG4gICAgICBsZXQgaGVpZ2h0U2lkZTtcbiAgICAgIGxldCB3aWR0aFNpZGU7XG4gICAgICBpZiAoc2lkZSA9PT0gJ3RvcCcgfHwgc2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IHNpZGU7XG4gICAgICAgIHdpZHRoU2lkZSA9IGFsaWdubWVudCA9PT0gKChhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpID8gJ3N0YXJ0JyA6ICdlbmQnKSA/ICdsZWZ0JyA6ICdyaWdodCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aWR0aFNpZGUgPSBzaWRlO1xuICAgICAgICBoZWlnaHRTaWRlID0gYWxpZ25tZW50ID09PSAnZW5kJyA/ICd0b3AnIDogJ2JvdHRvbSc7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCA9IHdpZHRoIC0gb3ZlcmZsb3cubGVmdCAtIG92ZXJmbG93LnJpZ2h0O1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBtaW4oaGVpZ2h0IC0gb3ZlcmZsb3dbaGVpZ2h0U2lkZV0sIG1heGltdW1DbGlwcGluZ0hlaWdodCk7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoID0gbWluKHdpZHRoIC0gb3ZlcmZsb3dbd2lkdGhTaWRlXSwgbWF4aW11bUNsaXBwaW5nV2lkdGgpO1xuICAgICAgY29uc3Qgbm9TaGlmdCA9ICFzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdDtcbiAgICAgIGxldCBhdmFpbGFibGVIZWlnaHQgPSBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodDtcbiAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IG92ZXJmbG93QXZhaWxhYmxlV2lkdGg7XG4gICAgICBpZiAoKF9zdGF0ZSRtaWRkbGV3YXJlRGF0YSA9IHN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSAhPSBudWxsICYmIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YS5lbmFibGVkLngpIHtcbiAgICAgICAgYXZhaWxhYmxlV2lkdGggPSBtYXhpbXVtQ2xpcHBpbmdXaWR0aDtcbiAgICAgIH1cbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhMiA9IHN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSAhPSBudWxsICYmIF9zdGF0ZSRtaWRkbGV3YXJlRGF0YTIuZW5hYmxlZC55KSB7XG4gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IG1heGltdW1DbGlwcGluZ0hlaWdodDtcbiAgICAgIH1cbiAgICAgIGlmIChub1NoaWZ0ICYmICFhbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc3QgeE1pbiA9IG1heChvdmVyZmxvdy5sZWZ0LCAwKTtcbiAgICAgICAgY29uc3QgeE1heCA9IG1heChvdmVyZmxvdy5yaWdodCwgMCk7XG4gICAgICAgIGNvbnN0IHlNaW4gPSBtYXgob3ZlcmZsb3cudG9wLCAwKTtcbiAgICAgICAgY29uc3QgeU1heCA9IG1heChvdmVyZmxvdy5ib3R0b20sIDApO1xuICAgICAgICBpZiAoaXNZQXhpcykge1xuICAgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gd2lkdGggLSAyICogKHhNaW4gIT09IDAgfHwgeE1heCAhPT0gMCA/IHhNaW4gKyB4TWF4IDogbWF4KG92ZXJmbG93LmxlZnQsIG92ZXJmbG93LnJpZ2h0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gaGVpZ2h0IC0gMiAqICh5TWluICE9PSAwIHx8IHlNYXggIT09IDAgPyB5TWluICsgeU1heCA6IG1heChvdmVyZmxvdy50b3AsIG92ZXJmbG93LmJvdHRvbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCBhcHBseSh7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhdmFpbGFibGVXaWR0aCxcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG5leHREaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50cy5mbG9hdGluZyk7XG4gICAgICBpZiAod2lkdGggIT09IG5leHREaW1lbnNpb25zLndpZHRoIHx8IGhlaWdodCAhPT0gbmV4dERpbWVuc2lvbnMuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgc2hpZnQsIHNpemUgfTtcbiIsImZ1bmN0aW9uIGhhc1dpbmRvdygpIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobm9kZSkge1xuICBpZiAoaXNOb2RlKG5vZGUpKSB7XG4gICAgcmV0dXJuIChub2RlLm5vZGVOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIC8vIE1vY2tlZCBub2RlcyBpbiB0ZXN0aW5nIGVudmlyb25tZW50cyBtYXkgbm90IGJlIGluc3RhbmNlcyBvZiBOb2RlLiBCeVxuICAvLyByZXR1cm5pbmcgYCNkb2N1bWVudGAgYW4gaW5maW5pdGUgbG9vcCB3b24ndCBvY2N1ci5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8yMzE3XG4gIHJldHVybiAnI2RvY3VtZW50Jztcbn1cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50O1xuICByZXR1cm4gKG5vZGUgPT0gbnVsbCB8fCAoX25vZGUkb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIHx8IHdpbmRvdztcbn1cbmZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChub2RlKSB7XG4gIHZhciBfcmVmO1xuICByZXR1cm4gKF9yZWYgPSAoaXNOb2RlKG5vZGUpID8gbm9kZS5vd25lckRvY3VtZW50IDogbm9kZS5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX3JlZi5kb2N1bWVudEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc05vZGUodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBOb2RlIHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5Ob2RlO1xufVxuZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gIGlmICghaGFzV2luZG93KCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuSFRNTEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc1NoYWRvd1Jvb3QodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSB8fCB0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2hhZG93Um9vdCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuU2hhZG93Um9vdDtcbn1cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIG92ZXJmbG93LFxuICAgIG92ZXJmbG93WCxcbiAgICBvdmVyZmxvd1ksXG4gICAgZGlzcGxheVxuICB9ID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKSAmJiAhWydpbmxpbmUnLCAnY29udGVudHMnXS5pbmNsdWRlcyhkaXNwbGF5KTtcbn1cbmZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShlbGVtZW50KSk7XG59XG5mdW5jdGlvbiBpc1RvcExheWVyKGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsnOnBvcG92ZXItb3BlbicsICc6bW9kYWwnXS5zb21lKHNlbGVjdG9yID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhzZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBpc0NvbnRhaW5pbmdCbG9jayhlbGVtZW50T3JDc3MpIHtcbiAgY29uc3Qgd2Via2l0ID0gaXNXZWJLaXQoKTtcbiAgY29uc3QgY3NzID0gaXNFbGVtZW50KGVsZW1lbnRPckNzcykgPyBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnRPckNzcykgOiBlbGVtZW50T3JDc3M7XG5cbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcbiAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10cmFuc2Zvcm1zLTIvI2luZGl2aWR1YWwtdHJhbnNmb3Jtc1xuICByZXR1cm4gWyd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlJywgJ3NjYWxlJywgJ3JvdGF0ZScsICdwZXJzcGVjdGl2ZSddLnNvbWUodmFsdWUgPT4gY3NzW3ZhbHVlXSA/IGNzc1t2YWx1ZV0gIT09ICdub25lJyA6IGZhbHNlKSB8fCAoY3NzLmNvbnRhaW5lclR5cGUgPyBjc3MuY29udGFpbmVyVHlwZSAhPT0gJ25vcm1hbCcgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmJhY2tkcm9wRmlsdGVyID8gY3NzLmJhY2tkcm9wRmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmZpbHRlciA/IGNzcy5maWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJywgJ2ZpbHRlciddLnNvbWUodmFsdWUgPT4gKGNzcy53aWxsQ2hhbmdlIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpIHx8IFsncGFpbnQnLCAnbGF5b3V0JywgJ3N0cmljdCcsICdjb250ZW50J10uc29tZSh2YWx1ZSA9PiAoY3NzLmNvbnRhaW4gfHwgJycpLmluY2x1ZGVzKHZhbHVlKSk7XG59XG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICBsZXQgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBpZiAoaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIGlmIChpc1RvcExheWVyKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBpc1dlYktpdCgpIHtcbiAgaWYgKHR5cGVvZiBDU1MgPT09ICd1bmRlZmluZWQnIHx8ICFDU1Muc3VwcG9ydHMpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIENTUy5zdXBwb3J0cygnLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXInLCAnbm9uZScpO1xufVxuZnVuY3Rpb24gaXNMYXN0VHJhdmVyc2FibGVOb2RlKG5vZGUpIHtcbiAgcmV0dXJuIFsnaHRtbCcsICdib2R5JywgJyNkb2N1bWVudCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKG5vZGUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59XG5mdW5jdGlvbiBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpIHtcbiAgaWYgKGlzRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB7XG4gICAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsWCxcbiAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsWVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShub2RlKSB7XG4gIGlmIChnZXROb2RlTmFtZShub2RlKSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID1cbiAgLy8gU3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGUuXG4gIG5vZGUuYXNzaWduZWRTbG90IHx8XG4gIC8vIERPTSBFbGVtZW50IGRldGVjdGVkLlxuICBub2RlLnBhcmVudE5vZGUgfHxcbiAgLy8gU2hhZG93Um9vdCBkZXRlY3RlZC5cbiAgaXNTaGFkb3dSb290KG5vZGUpICYmIG5vZGUuaG9zdCB8fFxuICAvLyBGYWxsYmFjay5cbiAgZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpO1xuICByZXR1cm4gaXNTaGFkb3dSb290KHJlc3VsdCkgPyByZXN1bHQuaG9zdCA6IHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUobm9kZSk7XG4gIGlmIChpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50ID8gbm9kZS5vd25lckRvY3VtZW50LmJvZHkgOiBub2RlLmJvZHk7XG4gIH1cbiAgaWYgKGlzSFRNTEVsZW1lbnQocGFyZW50Tm9kZSkgJiYgaXNPdmVyZmxvd0VsZW1lbnQocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gcGFyZW50Tm9kZTtcbiAgfVxuICByZXR1cm4gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IocGFyZW50Tm9kZSk7XG59XG5mdW5jdGlvbiBnZXRPdmVyZmxvd0FuY2VzdG9ycyhub2RlLCBsaXN0LCB0cmF2ZXJzZUlmcmFtZXMpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQyO1xuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG4gIGlmICh0cmF2ZXJzZUlmcmFtZXMgPT09IHZvaWQgMCkge1xuICAgIHRyYXZlcnNlSWZyYW1lcyA9IHRydWU7XG4gIH1cbiAgY29uc3Qgc2Nyb2xsYWJsZUFuY2VzdG9yID0gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSk7XG4gIGNvbnN0IGlzQm9keSA9IHNjcm9sbGFibGVBbmNlc3RvciA9PT0gKChfbm9kZSRvd25lckRvY3VtZW50MiA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQyLmJvZHkpO1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsYWJsZUFuY2VzdG9yKTtcbiAgaWYgKGlzQm9keSkge1xuICAgIGNvbnN0IGZyYW1lRWxlbWVudCA9IGdldEZyYW1lRWxlbWVudCh3aW4pO1xuICAgIHJldHVybiBsaXN0LmNvbmNhdCh3aW4sIHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNPdmVyZmxvd0VsZW1lbnQoc2Nyb2xsYWJsZUFuY2VzdG9yKSA/IHNjcm9sbGFibGVBbmNlc3RvciA6IFtdLCBmcmFtZUVsZW1lbnQgJiYgdHJhdmVyc2VJZnJhbWVzID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZnJhbWVFbGVtZW50KSA6IFtdKTtcbiAgfVxuICByZXR1cm4gbGlzdC5jb25jYXQoc2Nyb2xsYWJsZUFuY2VzdG9yLCBnZXRPdmVyZmxvd0FuY2VzdG9ycyhzY3JvbGxhYmxlQW5jZXN0b3IsIFtdLCB0cmF2ZXJzZUlmcmFtZXMpKTtcbn1cbmZ1bmN0aW9uIGdldEZyYW1lRWxlbWVudCh3aW4pIHtcbiAgcmV0dXJuIHdpbi5wYXJlbnQgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKHdpbi5wYXJlbnQpID8gd2luLmZyYW1lRWxlbWVudCA6IG51bGw7XG59XG5cbmV4cG9ydCB7IGdldENvbXB1dGVkU3R5bGUsIGdldENvbnRhaW5pbmdCbG9jaywgZ2V0RG9jdW1lbnRFbGVtZW50LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yLCBnZXROb2RlTmFtZSwgZ2V0Tm9kZVNjcm9sbCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGdldFBhcmVudE5vZGUsIGdldFdpbmRvdywgaXNDb250YWluaW5nQmxvY2ssIGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc05vZGUsIGlzT3ZlcmZsb3dFbGVtZW50LCBpc1NoYWRvd1Jvb3QsIGlzVGFibGVFbGVtZW50LCBpc1RvcExheWVyLCBpc1dlYktpdCB9O1xuIiwiaW1wb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCwgZGV0ZWN0T3ZlcmZsb3cgYXMgZGV0ZWN0T3ZlcmZsb3ckMSwgb2Zmc2V0IGFzIG9mZnNldCQxLCBhdXRvUGxhY2VtZW50IGFzIGF1dG9QbGFjZW1lbnQkMSwgc2hpZnQgYXMgc2hpZnQkMSwgZmxpcCBhcyBmbGlwJDEsIHNpemUgYXMgc2l6ZSQxLCBoaWRlIGFzIGhpZGUkMSwgYXJyb3cgYXMgYXJyb3ckMSwgaW5saW5lIGFzIGlubGluZSQxLCBsaW1pdFNoaWZ0IGFzIGxpbWl0U2hpZnQkMSwgY29tcHV0ZVBvc2l0aW9uIGFzIGNvbXB1dGVQb3NpdGlvbiQxIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUnO1xuaW1wb3J0IHsgcm91bmQsIGNyZWF0ZUNvb3JkcywgbWF4LCBtaW4sIGZsb29yIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzJztcbmltcG9ydCB7IGdldENvbXB1dGVkU3R5bGUsIGlzSFRNTEVsZW1lbnQsIGlzRWxlbWVudCwgZ2V0V2luZG93LCBpc1dlYktpdCwgZ2V0RnJhbWVFbGVtZW50LCBnZXROb2RlU2Nyb2xsLCBnZXREb2N1bWVudEVsZW1lbnQsIGlzVG9wTGF5ZXIsIGdldE5vZGVOYW1lLCBpc092ZXJmbG93RWxlbWVudCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGdldFBhcmVudE5vZGUsIGlzTGFzdFRyYXZlcnNhYmxlTm9kZSwgaXNDb250YWluaW5nQmxvY2ssIGlzVGFibGVFbGVtZW50LCBnZXRDb250YWluaW5nQmxvY2sgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmV4cG9ydCB7IGdldE92ZXJmbG93QW5jZXN0b3JzIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3V0aWxzL2RvbSc7XG5cbmZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAvLyBJbiB0ZXN0aW5nIGVudmlyb25tZW50cywgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIHByb3BlcnRpZXMgYXJlIGVtcHR5XG4gIC8vIHN0cmluZ3MgZm9yIFNWRyBlbGVtZW50cywgcmV0dXJuaW5nIE5hTi4gRmFsbGJhY2sgdG8gYDBgIGluIHRoaXMgY2FzZS5cbiAgbGV0IHdpZHRoID0gcGFyc2VGbG9hdChjc3Mud2lkdGgpIHx8IDA7XG4gIGxldCBoZWlnaHQgPSBwYXJzZUZsb2F0KGNzcy5oZWlnaHQpIHx8IDA7XG4gIGNvbnN0IGhhc09mZnNldCA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IG9mZnNldFdpZHRoID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRXaWR0aCA6IHdpZHRoO1xuICBjb25zdCBvZmZzZXRIZWlnaHQgPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldEhlaWdodCA6IGhlaWdodDtcbiAgY29uc3Qgc2hvdWxkRmFsbGJhY2sgPSByb3VuZCh3aWR0aCkgIT09IG9mZnNldFdpZHRoIHx8IHJvdW5kKGhlaWdodCkgIT09IG9mZnNldEhlaWdodDtcbiAgaWYgKHNob3VsZEZhbGxiYWNrKSB7XG4gICAgd2lkdGggPSBvZmZzZXRXaWR0aDtcbiAgICBoZWlnaHQgPSBvZmZzZXRIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJDogc2hvdWxkRmFsbGJhY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gdW53cmFwRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiAhaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5jb250ZXh0RWxlbWVudCA6IGVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGdldFNjYWxlKGVsZW1lbnQpIHtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChkb21FbGVtZW50KSkge1xuICAgIHJldHVybiBjcmVhdGVDb29yZHMoMSk7XG4gIH1cbiAgY29uc3QgcmVjdCA9IGRvbUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhkb21FbGVtZW50KTtcbiAgbGV0IHggPSAoJCA/IHJvdW5kKHJlY3Qud2lkdGgpIDogcmVjdC53aWR0aCkgLyB3aWR0aDtcbiAgbGV0IHkgPSAoJCA/IHJvdW5kKHJlY3QuaGVpZ2h0KSA6IHJlY3QuaGVpZ2h0KSAvIGhlaWdodDtcblxuICAvLyAwLCBOYU4sIG9yIEluZmluaXR5IHNob3VsZCBhbHdheXMgZmFsbGJhY2sgdG8gMS5cblxuICBpZiAoIXggfHwgIU51bWJlci5pc0Zpbml0ZSh4KSkge1xuICAgIHggPSAxO1xuICB9XG4gIGlmICgheSB8fCAhTnVtYmVyLmlzRmluaXRlKHkpKSB7XG4gICAgeSA9IDE7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuY29uc3Qgbm9PZmZzZXRzID0gLyojX19QVVJFX18qL2NyZWF0ZUNvb3JkcygwKTtcbmZ1bmN0aW9uIGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmICghaXNXZWJLaXQoKSB8fCAhd2luLnZpc3VhbFZpZXdwb3J0KSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0LFxuICAgIHk6IHdpbi52aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3BcbiAgfTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFkZFZpc3VhbE9mZnNldHMoZWxlbWVudCwgaXNGaXhlZCwgZmxvYXRpbmdPZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuICBpZiAoIWZsb2F0aW5nT2Zmc2V0UGFyZW50IHx8IGlzRml4ZWQgJiYgZmxvYXRpbmdPZmZzZXRQYXJlbnQgIT09IGdldFdpbmRvdyhlbGVtZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNGaXhlZDtcbn1cblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGlmIChpbmNsdWRlU2NhbGUpIHtcbiAgICBpZiAob2Zmc2V0UGFyZW50KSB7XG4gICAgICBpZiAoaXNFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCB2aXN1YWxPZmZzZXRzID0gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50LCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkgPyBnZXRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDApO1xuICBsZXQgeCA9IChjbGllbnRSZWN0LmxlZnQgKyB2aXN1YWxPZmZzZXRzLngpIC8gc2NhbGUueDtcbiAgbGV0IHkgPSAoY2xpZW50UmVjdC50b3AgKyB2aXN1YWxPZmZzZXRzLnkpIC8gc2NhbGUueTtcbiAgbGV0IHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlLng7XG4gIGxldCBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlLnk7XG4gIGlmIChkb21FbGVtZW50KSB7XG4gICAgY29uc3Qgd2luID0gZ2V0V2luZG93KGRvbUVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldFdpbiA9IG9mZnNldFBhcmVudCAmJiBpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSA/IGdldFdpbmRvdyhvZmZzZXRQYXJlbnQpIDogb2Zmc2V0UGFyZW50O1xuICAgIGxldCBjdXJyZW50V2luID0gd2luO1xuICAgIGxldCBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIHdoaWxlIChjdXJyZW50SUZyYW1lICYmIG9mZnNldFBhcmVudCAmJiBvZmZzZXRXaW4gIT09IGN1cnJlbnRXaW4pIHtcbiAgICAgIGNvbnN0IGlmcmFtZVNjYWxlID0gZ2V0U2NhbGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBpZnJhbWVSZWN0ID0gY3VycmVudElGcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBsZWZ0ID0gaWZyYW1lUmVjdC5sZWZ0ICsgKGN1cnJlbnRJRnJhbWUuY2xpZW50TGVmdCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdMZWZ0KSkgKiBpZnJhbWVTY2FsZS54O1xuICAgICAgY29uc3QgdG9wID0gaWZyYW1lUmVjdC50b3AgKyAoY3VycmVudElGcmFtZS5jbGllbnRUb3AgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nVG9wKSkgKiBpZnJhbWVTY2FsZS55O1xuICAgICAgeCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgeSAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgd2lkdGggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIGhlaWdodCAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgeCArPSBsZWZ0O1xuICAgICAgeSArPSB0b3A7XG4gICAgICBjdXJyZW50V2luID0gZ2V0V2luZG93KGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY3VycmVudElGcmFtZSA9IGdldEZyYW1lRWxlbWVudChjdXJyZW50V2luKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3Qoe1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfSk7XG59XG5cbi8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbi8vIGluY29ycmVjdCBmb3IgUlRMLlxuZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50LCByZWN0KSB7XG4gIGNvbnN0IGxlZnRTY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG4gIGlmICghcmVjdCkge1xuICAgIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgbGVmdFNjcm9sbDtcbiAgfVxuICByZXR1cm4gcmVjdC5sZWZ0ICsgbGVmdFNjcm9sbDtcbn1cblxuZnVuY3Rpb24gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgaWdub3JlU2Nyb2xsYmFyWCkge1xuICBpZiAoaWdub3JlU2Nyb2xsYmFyWCA9PT0gdm9pZCAwKSB7XG4gICAgaWdub3JlU2Nyb2xsYmFyWCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGh0bWxSZWN0ID0gZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB4ID0gaHRtbFJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gKGlnbm9yZVNjcm9sbGJhclggPyAwIDpcbiAgLy8gUlRMIDxib2R5PiBzY3JvbGxiYXIuXG4gIGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50LCBodG1sUmVjdCkpO1xuICBjb25zdCB5ID0gaHRtbFJlY3QudG9wICsgc2Nyb2xsLnNjcm9sbFRvcDtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnRzLFxuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCB0b3BMYXllciA9IGVsZW1lbnRzID8gaXNUb3BMYXllcihlbGVtZW50cy5mbG9hdGluZykgOiBmYWxzZTtcbiAgaWYgKG9mZnNldFBhcmVudCA9PT0gZG9jdW1lbnRFbGVtZW50IHx8IHRvcExheWVyICYmIGlzRml4ZWQpIHtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQpO1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwsIHRydWUpIDogY3JlYXRlQ29vcmRzKDApO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiByZWN0LndpZHRoICogc2NhbGUueCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0ICogc2NhbGUueSxcbiAgICB4OiByZWN0LnggKiBzY2FsZS54IC0gc2Nyb2xsLnNjcm9sbExlZnQgKiBzY2FsZS54ICsgb2Zmc2V0cy54ICsgaHRtbE9mZnNldC54LFxuICAgIHk6IHJlY3QueSAqIHNjYWxlLnkgLSBzY3JvbGwuc2Nyb2xsVG9wICogc2NhbGUueSArIG9mZnNldHMueSArIGh0bWxPZmZzZXQueVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0cyhlbGVtZW50KSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKSk7XG59XG5cbi8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpO1xuICBjb25zdCBib2R5ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5jbGllbnRIZWlnaHQpO1xuICBsZXQgeCA9IC1zY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIGNvbnN0IHkgPSAtc2Nyb2xsLnNjcm9sbFRvcDtcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUoYm9keSkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpIC0gd2lkdGg7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICBsZXQgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICBsZXQgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIGxldCB4ID0gMDtcbiAgbGV0IHkgPSAwO1xuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDtcbiAgICBjb25zdCB2aXN1YWxWaWV3cG9ydEJhc2VkID0gaXNXZWJLaXQoKTtcbiAgICBpZiAoIXZpc3VhbFZpZXdwb3J0QmFzZWQgfHwgdmlzdWFsVmlld3BvcnRCYXNlZCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuLy8gUmV0dXJucyB0aGUgaW5uZXIgY2xpZW50IHJlY3QsIHN1YnRyYWN0aW5nIHNjcm9sbGJhcnMgaWYgcHJlc2VudC5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgc3RyYXRlZ3kgPT09ICdmaXhlZCcpO1xuICBjb25zdCB0b3AgPSBjbGllbnRSZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICBjb25zdCBsZWZ0ID0gY2xpZW50UmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICBjb25zdCBzY2FsZSA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgPyBnZXRTY2FsZShlbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgd2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoICogc2NhbGUueDtcbiAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQgKiBzY2FsZS55O1xuICBjb25zdCB4ID0gbGVmdCAqIHNjYWxlLng7XG4gIGNvbnN0IHkgPSB0b3AgKiBzY2FsZS55O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkge1xuICBsZXQgcmVjdDtcbiAgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICd2aWV3cG9ydCcpIHtcbiAgICByZWN0ID0gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAnZG9jdW1lbnQnKSB7XG4gICAgcmVjdCA9IGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpO1xuICB9IGVsc2UgaWYgKGlzRWxlbWVudChjbGlwcGluZ0FuY2VzdG9yKSkge1xuICAgIHJlY3QgPSBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCk7XG4gICAgcmVjdCA9IHtcbiAgICAgIHg6IGNsaXBwaW5nQW5jZXN0b3IueCAtIHZpc3VhbE9mZnNldHMueCxcbiAgICAgIHk6IGNsaXBwaW5nQW5jZXN0b3IueSAtIHZpc3VhbE9mZnNldHMueSxcbiAgICAgIHdpZHRoOiBjbGlwcGluZ0FuY2VzdG9yLndpZHRoLFxuICAgICAgaGVpZ2h0OiBjbGlwcGluZ0FuY2VzdG9yLmhlaWdodFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3QocmVjdCk7XG59XG5mdW5jdGlvbiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgc3RvcE5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIGlmIChwYXJlbnROb2RlID09PSBzdG9wTm9kZSB8fCAhaXNFbGVtZW50KHBhcmVudE5vZGUpIHx8IGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShwYXJlbnROb2RlKS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJyB8fCBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IocGFyZW50Tm9kZSwgc3RvcE5vZGUpO1xufVxuXG4vLyBBIFwiY2xpcHBpbmcgYW5jZXN0b3JcIiBpcyBhbiBgb3ZlcmZsb3dgIGVsZW1lbnQgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIGNoaWxkIGVsZW1lbnRzLiBUaGlzIHJldHVybnMgYWxsIGNsaXBwaW5nIGFuY2VzdG9yc1xuLy8gb2YgdGhlIGdpdmVuIGVsZW1lbnQgdXAgdGhlIHRyZWUuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgY2FjaGUpIHtcbiAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGUuZ2V0KGVsZW1lbnQpO1xuICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgfVxuICBsZXQgcmVzdWx0ID0gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZWxlbWVudCwgW10sIGZhbHNlKS5maWx0ZXIoZWwgPT4gaXNFbGVtZW50KGVsKSAmJiBnZXROb2RlTmFtZShlbCkgIT09ICdib2R5Jyk7XG4gIGxldCBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gIGNvbnN0IGVsZW1lbnRJc0ZpeGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJztcbiAgbGV0IGN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIDogZWxlbWVudDtcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICB3aGlsZSAoaXNFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTtcbiAgICBjb25zdCBjdXJyZW50Tm9kZUlzQ29udGFpbmluZyA9IGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKTtcbiAgICBpZiAoIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgc2hvdWxkRHJvcEN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIDogIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICdzdGF0aWMnICYmICEhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgJiYgWydhYnNvbHV0ZScsICdmaXhlZCddLmluY2x1ZGVzKGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlLnBvc2l0aW9uKSB8fCBpc092ZXJmbG93RWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBjdXJyZW50Tm9kZSk7XG4gICAgaWYgKHNob3VsZERyb3BDdXJyZW50Tm9kZSkge1xuICAgICAgLy8gRHJvcCBub24tY29udGFpbmluZyBibG9ja3MuXG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGFuY2VzdG9yID0+IGFuY2VzdG9yICE9PSBjdXJyZW50Tm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlY29yZCBsYXN0IGNvbnRhaW5pbmcgYmxvY2sgZm9yIG5leHQgaXRlcmF0aW9uLlxuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBjb21wdXRlZFN0eWxlO1xuICAgIH1cbiAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICB9XG4gIGNhY2hlLnNldChlbGVtZW50LCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBhbmNlc3RvcnMuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ1JlY3QoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnQsXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBlbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nQW5jZXN0b3JzJyA/IGlzVG9wTGF5ZXIoZWxlbWVudCkgPyBbXSA6IGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCB0aGlzLl9jKSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIGNvbnN0IGNsaXBwaW5nQW5jZXN0b3JzID0gWy4uLmVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycywgcm9vdEJvdW5kYXJ5XTtcbiAgY29uc3QgZmlyc3RDbGlwcGluZ0FuY2VzdG9yID0gY2xpcHBpbmdBbmNlc3RvcnNbMF07XG4gIGNvbnN0IGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nQW5jZXN0b3JzLnJlZHVjZSgoYWNjUmVjdCwgY2xpcHBpbmdBbmNlc3RvcikgPT4ge1xuICAgIGNvbnN0IHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBmaXJzdENsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIGhlaWdodDogY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3AsXG4gICAgeDogY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgeTogY2xpcHBpbmdSZWN0LnRvcFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZWxlbWVudCwgb2Zmc2V0UGFyZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSBjcmVhdGVDb29yZHMoMCk7XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50KSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgLy8gSWYgdGhlIDxib2R5PiBzY3JvbGxiYXIgYXBwZWFycyBvbiB0aGUgbGVmdCAoZS5nLiBSVEwgc3lzdGVtcykuIFVzZVxuICAgICAgLy8gRmlyZWZveCB3aXRoIGxheW91dC5zY3JvbGxiYXIuc2lkZSA9IDMgaW4gYWJvdXQ6Y29uZmlnIHRvIHRlc3QgdGhpcy5cbiAgICAgIG9mZnNldHMueCA9IGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgaHRtbE9mZnNldCA9IGRvY3VtZW50RWxlbWVudCAmJiAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQgPyBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsKSA6IGNyZWF0ZUNvb3JkcygwKTtcbiAgY29uc3QgeCA9IHJlY3QubGVmdCArIHNjcm9sbC5zY3JvbGxMZWZ0IC0gb2Zmc2V0cy54IC0gaHRtbE9mZnNldC54O1xuICBjb25zdCB5ID0gcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55IC0gaHRtbE9mZnNldC55O1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzU3RhdGljUG9zaXRpb25lZChlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJztcbn1cblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChwb2x5ZmlsbCkge1xuICAgIHJldHVybiBwb2x5ZmlsbChlbGVtZW50KTtcbiAgfVxuICBsZXQgcmF3T2Zmc2V0UGFyZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG5cbiAgLy8gRmlyZWZveCByZXR1cm5zIHRoZSA8aHRtbD4gZWxlbWVudCBhcyB0aGUgb2Zmc2V0UGFyZW50IGlmIGl0J3Mgbm9uLXN0YXRpYyxcbiAgLy8gd2hpbGUgQ2hyb21lIGFuZCBTYWZhcmkgcmV0dXJuIHRoZSA8Ym9keT4gZWxlbWVudC4gVGhlIDxib2R5PiBlbGVtZW50IG11c3RcbiAgLy8gYmUgdXNlZCB0byBwZXJmb3JtIHRoZSBjb3JyZWN0IGNhbGN1bGF0aW9ucyBldmVuIGlmIHRoZSA8aHRtbD4gZWxlbWVudCBpc1xuICAvLyBub24tc3RhdGljLlxuICBpZiAoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpID09PSByYXdPZmZzZXRQYXJlbnQpIHtcbiAgICByYXdPZmZzZXRQYXJlbnQgPSByYXdPZmZzZXRQYXJlbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICB9XG4gIHJldHVybiByYXdPZmZzZXRQYXJlbnQ7XG59XG5cbi8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5mdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoaXNUb3BMYXllcihlbGVtZW50KSkge1xuICAgIHJldHVybiB3aW47XG4gIH1cbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgbGV0IHN2Z09mZnNldFBhcmVudCA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gICAgd2hpbGUgKHN2Z09mZnNldFBhcmVudCAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKHN2Z09mZnNldFBhcmVudCkpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQoc3ZnT2Zmc2V0UGFyZW50KSAmJiAhaXNTdGF0aWNQb3NpdGlvbmVkKHN2Z09mZnNldFBhcmVudCkpIHtcbiAgICAgICAgcmV0dXJuIHN2Z09mZnNldFBhcmVudDtcbiAgICAgIH1cbiAgICAgIHN2Z09mZnNldFBhcmVudCA9IGdldFBhcmVudE5vZGUoc3ZnT2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBsZXQgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCk7XG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc1N0YXRpY1Bvc2l0aW9uZWQob2Zmc2V0UGFyZW50KSkge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50LCBwb2x5ZmlsbCk7XG4gIH1cbiAgaWYgKG9mZnNldFBhcmVudCAmJiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUob2Zmc2V0UGFyZW50KSAmJiBpc1N0YXRpY1Bvc2l0aW9uZWQob2Zmc2V0UGFyZW50KSAmJiAhaXNDb250YWluaW5nQmxvY2sob2Zmc2V0UGFyZW50KSkge1xuICAgIHJldHVybiB3aW47XG4gIH1cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luO1xufVxuXG5jb25zdCBnZXRFbGVtZW50UmVjdHMgPSBhc3luYyBmdW5jdGlvbiAoZGF0YSkge1xuICBjb25zdCBnZXRPZmZzZXRQYXJlbnRGbiA9IHRoaXMuZ2V0T2Zmc2V0UGFyZW50IHx8IGdldE9mZnNldFBhcmVudDtcbiAgY29uc3QgZ2V0RGltZW5zaW9uc0ZuID0gdGhpcy5nZXREaW1lbnNpb25zO1xuICBjb25zdCBmbG9hdGluZ0RpbWVuc2lvbnMgPSBhd2FpdCBnZXREaW1lbnNpb25zRm4oZGF0YS5mbG9hdGluZyk7XG4gIHJldHVybiB7XG4gICAgcmVmZXJlbmNlOiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChkYXRhLnJlZmVyZW5jZSwgYXdhaXQgZ2V0T2Zmc2V0UGFyZW50Rm4oZGF0YS5mbG9hdGluZyksIGRhdGEuc3RyYXRlZ3kpLFxuICAgIGZsb2F0aW5nOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHdpZHRoOiBmbG9hdGluZ0RpbWVuc2lvbnMud2lkdGgsXG4gICAgICBoZWlnaHQ6IGZsb2F0aW5nRGltZW5zaW9ucy5oZWlnaHRcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBpc1JUTChlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLmRpcmVjdGlvbiA9PT0gJ3J0bCc7XG59XG5cbmNvbnN0IHBsYXRmb3JtID0ge1xuICBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCxcbiAgZ2V0RG9jdW1lbnRFbGVtZW50LFxuICBnZXRDbGlwcGluZ1JlY3QsXG4gIGdldE9mZnNldFBhcmVudCxcbiAgZ2V0RWxlbWVudFJlY3RzLFxuICBnZXRDbGllbnRSZWN0cyxcbiAgZ2V0RGltZW5zaW9ucyxcbiAgZ2V0U2NhbGUsXG4gIGlzRWxlbWVudCxcbiAgaXNSVExcbn07XG5cbmZ1bmN0aW9uIHJlY3RzQXJlRXF1YWwoYSwgYikge1xuICByZXR1cm4gYS54ID09PSBiLnggJiYgYS55ID09PSBiLnkgJiYgYS53aWR0aCA9PT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PT0gYi5oZWlnaHQ7XG59XG5cbi8vIGh0dHBzOi8vc2FtdGhvci5hdS8yMDIxL29ic2VydmluZy1kb20vXG5mdW5jdGlvbiBvYnNlcnZlTW92ZShlbGVtZW50LCBvbk1vdmUpIHtcbiAgbGV0IGlvID0gbnVsbDtcbiAgbGV0IHRpbWVvdXRJZDtcbiAgY29uc3Qgcm9vdCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICB2YXIgX2lvO1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgIChfaW8gPSBpbykgPT0gbnVsbCB8fCBfaW8uZGlzY29ubmVjdCgpO1xuICAgIGlvID0gbnVsbDtcbiAgfVxuICBmdW5jdGlvbiByZWZyZXNoKHNraXAsIHRocmVzaG9sZCkge1xuICAgIGlmIChza2lwID09PSB2b2lkIDApIHtcbiAgICAgIHNraXAgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRocmVzaG9sZCA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJlc2hvbGQgPSAxO1xuICAgIH1cbiAgICBjbGVhbnVwKCk7XG4gICAgY29uc3QgZWxlbWVudFJlY3RGb3JSb290TWFyZ2luID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB7XG4gICAgICBsZWZ0LFxuICAgICAgdG9wLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9ID0gZWxlbWVudFJlY3RGb3JSb290TWFyZ2luO1xuICAgIGlmICghc2tpcCkge1xuICAgICAgb25Nb3ZlKCk7XG4gICAgfVxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbnNldFRvcCA9IGZsb29yKHRvcCk7XG4gICAgY29uc3QgaW5zZXRSaWdodCA9IGZsb29yKHJvb3QuY2xpZW50V2lkdGggLSAobGVmdCArIHdpZHRoKSk7XG4gICAgY29uc3QgaW5zZXRCb3R0b20gPSBmbG9vcihyb290LmNsaWVudEhlaWdodCAtICh0b3AgKyBoZWlnaHQpKTtcbiAgICBjb25zdCBpbnNldExlZnQgPSBmbG9vcihsZWZ0KTtcbiAgICBjb25zdCByb290TWFyZ2luID0gLWluc2V0VG9wICsgXCJweCBcIiArIC1pbnNldFJpZ2h0ICsgXCJweCBcIiArIC1pbnNldEJvdHRvbSArIFwicHggXCIgKyAtaW5zZXRMZWZ0ICsgXCJweFwiO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luLFxuICAgICAgdGhyZXNob2xkOiBtYXgoMCwgbWluKDEsIHRocmVzaG9sZCkpIHx8IDFcbiAgICB9O1xuICAgIGxldCBpc0ZpcnN0VXBkYXRlID0gdHJ1ZTtcbiAgICBmdW5jdGlvbiBoYW5kbGVPYnNlcnZlKGVudHJpZXMpIHtcbiAgICAgIGNvbnN0IHJhdGlvID0gZW50cmllc1swXS5pbnRlcnNlY3Rpb25SYXRpbztcbiAgICAgIGlmIChyYXRpbyAhPT0gdGhyZXNob2xkKSB7XG4gICAgICAgIGlmICghaXNGaXJzdFVwZGF0ZSkge1xuICAgICAgICAgIHJldHVybiByZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyYXRpbykge1xuICAgICAgICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgY2xpcHBlZCwgdGhlIHJhdGlvIGlzIDAuIFRocm90dGxlIHRoZSByZWZyZXNoXG4gICAgICAgICAgLy8gdG8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wIG9mIHVwZGF0ZXMuXG4gICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICByZWZyZXNoKGZhbHNlLCAxZS03KTtcbiAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWZyZXNoKGZhbHNlLCByYXRpbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyYXRpbyA9PT0gMSAmJiAhcmVjdHNBcmVFcXVhbChlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4sIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKSB7XG4gICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBldmVuIHRob3VnaCB0aGUgcmF0aW8gaXMgcmVwb3J0ZWQgYXMgMSwgdGhlXG4gICAgICAgIC8vIGVsZW1lbnQgaXMgbm90IGFjdHVhbGx5IGZ1bGx5IHdpdGhpbiB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIncyByb290XG4gICAgICAgIC8vIGFyZWEgYW55bW9yZS4gVGhpcyBjYW4gaGFwcGVuIHVuZGVyIHBlcmZvcm1hbmNlIGNvbnN0cmFpbnRzLiBUaGlzIG1heVxuICAgICAgICAvLyBiZSBhIGJ1ZyBpbiB0aGUgYnJvd3NlcidzIEludGVyc2VjdGlvbk9ic2VydmVyIGltcGxlbWVudGF0aW9uLiBUb1xuICAgICAgICAvLyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBjb21wYXJlIHRoZSBlbGVtZW50J3MgYm91bmRpbmcgcmVjdCBub3cgd2l0aFxuICAgICAgICAvLyB3aGF0IGl0IHdhcyBhdCB0aGUgdGltZSB3ZSBjcmVhdGVkIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlci4gSWYgdGhleVxuICAgICAgICAvLyBhcmUgbm90IGVxdWFsIHRoZW4gdGhlIGVsZW1lbnQgbW92ZWQsIHNvIHdlIHJlZnJlc2guXG4gICAgICAgIHJlZnJlc2goKTtcbiAgICAgIH1cbiAgICAgIGlzRmlyc3RVcGRhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbGRlciBicm93c2VycyBkb24ndCBzdXBwb3J0IGEgYGRvY3VtZW50YCBhcyB0aGUgcm9vdCBhbmQgd2lsbCB0aHJvdyBhblxuICAgIC8vIGVycm9yLlxuICAgIHRyeSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIC8vIEhhbmRsZSA8aWZyYW1lPnNcbiAgICAgICAgcm9vdDogcm9vdC5vd25lckRvY3VtZW50XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaW8ub2JzZXJ2ZShlbGVtZW50KTtcbiAgfVxuICByZWZyZXNoKHRydWUpO1xuICByZXR1cm4gY2xlYW51cDtcbn1cblxuLyoqXG4gKiBBdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHdoZW4gbmVjZXNzYXJ5LlxuICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXMgbW91bnRlZCBvbiB0aGUgRE9NIG9yXG4gKiB2aXNpYmxlIG9uIHRoZSBzY3JlZW4uXG4gKiBAcmV0dXJucyBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGludm9rZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpc1xuICogcmVtb3ZlZCBmcm9tIHRoZSBET00gb3IgaGlkZGVuIGZyb20gdGhlIHNjcmVlbi5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvVXBkYXRlXG4gKi9cbmZ1bmN0aW9uIGF1dG9VcGRhdGUocmVmZXJlbmNlLCBmbG9hdGluZywgdXBkYXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIGFuY2VzdG9yU2Nyb2xsID0gdHJ1ZSxcbiAgICBhbmNlc3RvclJlc2l6ZSA9IHRydWUsXG4gICAgZWxlbWVudFJlc2l6ZSA9IHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBsYXlvdXRTaGlmdCA9IHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9PT0gJ2Z1bmN0aW9uJyxcbiAgICBhbmltYXRpb25GcmFtZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCByZWZlcmVuY2VFbCA9IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlKTtcbiAgY29uc3QgYW5jZXN0b3JzID0gYW5jZXN0b3JTY3JvbGwgfHwgYW5jZXN0b3JSZXNpemUgPyBbLi4uKHJlZmVyZW5jZUVsID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocmVmZXJlbmNlRWwpIDogW10pLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUsIHtcbiAgICAgIHBhc3NpdmU6IHRydWVcbiAgICB9KTtcbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICB9KTtcbiAgY29uc3QgY2xlYW51cElvID0gcmVmZXJlbmNlRWwgJiYgbGF5b3V0U2hpZnQgPyBvYnNlcnZlTW92ZShyZWZlcmVuY2VFbCwgdXBkYXRlKSA6IG51bGw7XG4gIGxldCByZW9ic2VydmVGcmFtZSA9IC0xO1xuICBsZXQgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICBpZiAoZWxlbWVudFJlc2l6ZSkge1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKF9yZWYgPT4ge1xuICAgICAgbGV0IFtmaXJzdEVudHJ5XSA9IF9yZWY7XG4gICAgICBpZiAoZmlyc3RFbnRyeSAmJiBmaXJzdEVudHJ5LnRhcmdldCA9PT0gcmVmZXJlbmNlRWwgJiYgcmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgLy8gUHJldmVudCB1cGRhdGUgbG9vcHMgd2hlbiB1c2luZyB0aGUgYHNpemVgIG1pZGRsZXdhcmUuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9hdGluZy11aS9mbG9hdGluZy11aS9pc3N1ZXMvMTc0MFxuICAgICAgICByZXNpemVPYnNlcnZlci51bm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyZW9ic2VydmVGcmFtZSk7XG4gICAgICAgIHJlb2JzZXJ2ZUZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyO1xuICAgICAgICAgIChfcmVzaXplT2JzZXJ2ZXIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdXBkYXRlKCk7XG4gICAgfSk7XG4gICAgaWYgKHJlZmVyZW5jZUVsICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2VFbCk7XG4gICAgfVxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICB9XG4gIGxldCBmcmFtZUlkO1xuICBsZXQgcHJldlJlZlJlY3QgPSBhbmltYXRpb25GcmFtZSA/IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpIDogbnVsbDtcbiAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgZnJhbWVMb29wKCk7XG4gIH1cbiAgZnVuY3Rpb24gZnJhbWVMb29wKCkge1xuICAgIGNvbnN0IG5leHRSZWZSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSk7XG4gICAgaWYgKHByZXZSZWZSZWN0ICYmICFyZWN0c0FyZUVxdWFsKHByZXZSZWZSZWN0LCBuZXh0UmVmUmVjdCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyMjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICBjbGVhbnVwSW8gPT0gbnVsbCB8fCBjbGVhbnVwSW8oKTtcbiAgICAoX3Jlc2l6ZU9ic2VydmVyMiA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlcjIuZGlzY29ubmVjdCgpO1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmNvbnN0IGRldGVjdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3ckMTtcblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gYXV0b1BsYWNlbWVudCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBzaGlmdCQxO1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBmbGlwcGluZyB0aGUgYHBsYWNlbWVudGBcbiAqIGluIG9yZGVyIHRvIGtlZXAgaXQgaW4gdmlldyB3aGVuIHRoZSBwcmVmZXJyZWQgcGxhY2VtZW50KHMpIHdpbGwgb3ZlcmZsb3cgdGhlXG4gKiBjbGlwcGluZyBib3VuZGFyeS4gQWx0ZXJuYXRpdmUgdG8gYGF1dG9QbGFjZW1lbnRgLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2ZsaXBcbiAqL1xuY29uc3QgZmxpcCA9IGZsaXAkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gc2l6ZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGhpZGUkMTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBhcnJvdyQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBpbmxpbmUkMTtcblxuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGxpbWl0U2hpZnQkMTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgZ2l2ZW4gcmVmZXJlbmNlIGVsZW1lbnQuXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIC8vIFRoaXMgY2FjaGVzIHRoZSBleHBlbnNpdmUgYGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9yc2AgZnVuY3Rpb24gc28gdGhhdFxuICAvLyBtdWx0aXBsZSBsaWZlY3ljbGUgcmVzZXRzIHJlLXVzZSB0aGUgc2FtZSByZXN1bHQuIEl0IG9ubHkgbGl2ZXMgZm9yIGFcbiAgLy8gc2luZ2xlIGNhbGwuIElmIG90aGVyIGZ1bmN0aW9ucyBiZWNvbWUgZXhwZW5zaXZlLCB3ZSBjYW4gYWRkIHRoZW0gYXMgd2VsbC5cbiAgY29uc3QgY2FjaGUgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZVxuICB9O1xuICByZXR1cm4gY29tcHV0ZVBvc2l0aW9uJDEocmVmZXJlbmNlLCBmbG9hdGluZywge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMsXG4gICAgcGxhdGZvcm06IHBsYXRmb3JtV2l0aENhY2hlXG4gIH0pO1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfTtcbiIsImltcG9ydCB7IGFycm93IGFzIGFycm93JDEsIGNvbXB1dGVQb3NpdGlvbiB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuZXhwb3J0IHsgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBwbGF0Zm9ybSwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IGlzTm9kZSwgZ2V0Tm9kZU5hbWUgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcbmltcG9ydCB7IHVucmVmLCBjb21wdXRlZCwgcmVmLCBzaGFsbG93UmVmLCB3YXRjaCwgZ2V0Q3VycmVudFNjb3BlLCBvblNjb3BlRGlzcG9zZSwgc2hhbGxvd1JlYWRvbmx5IH0gZnJvbSAndnVlLWRlbWknO1xuXG5mdW5jdGlvbiBpc0NvbXBvbmVudFB1YmxpY0luc3RhbmNlKHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0ICE9IG51bGwgJiYgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgJyRlbCcgaW4gdGFyZ2V0O1xufVxuZnVuY3Rpb24gdW53cmFwRWxlbWVudCh0YXJnZXQpIHtcbiAgaWYgKGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0YXJnZXQuJGVsO1xuICAgIHJldHVybiBpc05vZGUoZWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICcjY29tbWVudCcgPyBudWxsIDogZWxlbWVudDtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiB0b1ZhbHVlKHNvdXJjZSkge1xuICByZXR1cm4gdHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZSgpIDogdW5yZWYoc291cmNlKTtcbn1cblxuLyoqXG4gKiBQb3NpdGlvbnMgYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzdWNoIHRoYXQgaXQgaXMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIGFycm93IG9wdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuZnVuY3Rpb24gYXJyb3cob3B0aW9ucykge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhcnJvdycsXG4gICAgb3B0aW9ucyxcbiAgICBmbihhcmdzKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdW53cmFwRWxlbWVudCh0b1ZhbHVlKG9wdGlvbnMuZWxlbWVudCkpO1xuICAgICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyb3ckMSh7XG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIHBhZGRpbmc6IG9wdGlvbnMucGFkZGluZ1xuICAgICAgfSkuZm4oYXJncyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXREUFIoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICByZXR1cm4gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn1cblxuZnVuY3Rpb24gcm91bmRCeURQUihlbGVtZW50LCB2YWx1ZSkge1xuICBjb25zdCBkcHIgPSBnZXREUFIoZWxlbWVudCk7XG4gIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZHByKSAvIGRwcjtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50IG5leHQgdG8gYSByZWZlcmVuY2UgZWxlbWVudCB3aGVuIGl0IGlzIGdpdmVuIGEgY2VydGFpbiBDU1MgcG9zaXRpb25pbmcgc3RyYXRlZ3kuXG4gKiBAcGFyYW0gcmVmZXJlbmNlIFRoZSByZWZlcmVuY2UgdGVtcGxhdGUgcmVmLlxuICogQHBhcmFtIGZsb2F0aW5nIFRoZSBmbG9hdGluZyB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgZmxvYXRpbmcgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92dWVcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmcocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uID0gb3B0aW9ucy53aGlsZUVsZW1lbnRzTW91bnRlZDtcbiAgY29uc3Qgb3Blbk9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU7XG4gICAgcmV0dXJuIChfdG9WYWx1ZSA9IHRvVmFsdWUob3B0aW9ucy5vcGVuKSkgIT0gbnVsbCA/IF90b1ZhbHVlIDogdHJ1ZTtcbiAgfSk7XG4gIGNvbnN0IG1pZGRsZXdhcmVPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB0b1ZhbHVlKG9wdGlvbnMubWlkZGxld2FyZSkpO1xuICBjb25zdCBwbGFjZW1lbnRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlMjtcbiAgICByZXR1cm4gKF90b1ZhbHVlMiA9IHRvVmFsdWUob3B0aW9ucy5wbGFjZW1lbnQpKSAhPSBudWxsID8gX3RvVmFsdWUyIDogJ2JvdHRvbSc7XG4gIH0pO1xuICBjb25zdCBzdHJhdGVneU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUzO1xuICAgIHJldHVybiAoX3RvVmFsdWUzID0gdG9WYWx1ZShvcHRpb25zLnN0cmF0ZWd5KSkgIT0gbnVsbCA/IF90b1ZhbHVlMyA6ICdhYnNvbHV0ZSc7XG4gIH0pO1xuICBjb25zdCB0cmFuc2Zvcm1PcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdmFyIF90b1ZhbHVlNDtcbiAgICByZXR1cm4gKF90b1ZhbHVlNCA9IHRvVmFsdWUob3B0aW9ucy50cmFuc2Zvcm0pKSAhPSBudWxsID8gX3RvVmFsdWU0IDogdHJ1ZTtcbiAgfSk7XG4gIGNvbnN0IHJlZmVyZW5jZUVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB1bndyYXBFbGVtZW50KHJlZmVyZW5jZS52YWx1ZSkpO1xuICBjb25zdCBmbG9hdGluZ0VsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiB1bndyYXBFbGVtZW50KGZsb2F0aW5nLnZhbHVlKSk7XG4gIGNvbnN0IHggPSByZWYoMCk7XG4gIGNvbnN0IHkgPSByZWYoMCk7XG4gIGNvbnN0IHN0cmF0ZWd5ID0gcmVmKHN0cmF0ZWd5T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgcGxhY2VtZW50ID0gcmVmKHBsYWNlbWVudE9wdGlvbi52YWx1ZSk7XG4gIGNvbnN0IG1pZGRsZXdhcmVEYXRhID0gc2hhbGxvd1JlZih7fSk7XG4gIGNvbnN0IGlzUG9zaXRpb25lZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGZsb2F0aW5nU3R5bGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxTdHlsZXMgPSB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3kudmFsdWUsXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICB0b3A6ICcwJ1xuICAgIH07XG4gICAgaWYgKCFmbG9hdGluZ0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHJldHVybiBpbml0aWFsU3R5bGVzO1xuICAgIH1cbiAgICBjb25zdCB4VmFsID0gcm91bmRCeURQUihmbG9hdGluZ0VsZW1lbnQudmFsdWUsIHgudmFsdWUpO1xuICAgIGNvbnN0IHlWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeS52YWx1ZSk7XG4gICAgaWYgKHRyYW5zZm9ybU9wdGlvbi52YWx1ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5pdGlhbFN0eWxlcyxcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIiArIHhWYWwgKyBcInB4LCBcIiArIHlWYWwgKyBcInB4KVwiLFxuICAgICAgICAuLi4oZ2V0RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSkgPj0gMS41ICYmIHtcbiAgICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJ1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6IHhWYWwgKyBcInB4XCIsXG4gICAgICB0b3A6IHlWYWwgKyBcInB4XCJcbiAgICB9O1xuICB9KTtcbiAgbGV0IHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cDtcbiAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIGlmIChyZWZlcmVuY2VFbGVtZW50LnZhbHVlID09IG51bGwgfHwgZmxvYXRpbmdFbGVtZW50LnZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb3BlbiA9IG9wZW5PcHRpb24udmFsdWU7XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUsIGZsb2F0aW5nRWxlbWVudC52YWx1ZSwge1xuICAgICAgbWlkZGxld2FyZTogbWlkZGxld2FyZU9wdGlvbi52YWx1ZSxcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50T3B0aW9uLnZhbHVlLFxuICAgICAgc3RyYXRlZ3k6IHN0cmF0ZWd5T3B0aW9uLnZhbHVlXG4gICAgfSkudGhlbihwb3NpdGlvbiA9PiB7XG4gICAgICB4LnZhbHVlID0gcG9zaXRpb24ueDtcbiAgICAgIHkudmFsdWUgPSBwb3NpdGlvbi55O1xuICAgICAgc3RyYXRlZ3kudmFsdWUgPSBwb3NpdGlvbi5zdHJhdGVneTtcbiAgICAgIHBsYWNlbWVudC52YWx1ZSA9IHBvc2l0aW9uLnBsYWNlbWVudDtcbiAgICAgIG1pZGRsZXdhcmVEYXRhLnZhbHVlID0gcG9zaXRpb24ubWlkZGxld2FyZURhdGE7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBmbG9hdGluZyBlbGVtZW50J3MgcG9zaXRpb24gbWF5IGJlIHJlY29tcHV0ZWQgd2hpbGUgaXQncyBjbG9zZWRcbiAgICAgICAqIGJ1dCBzdGlsbCBtb3VudGVkIChzdWNoIGFzIHdoZW4gdHJhbnNpdGlvbmluZyBvdXQpLiBUbyBlbnN1cmVcbiAgICAgICAqIGBpc1Bvc2l0aW9uZWRgIHdpbGwgYmUgYGZhbHNlYCBpbml0aWFsbHkgb24gdGhlIG5leHQgb3BlbiwgYXZvaWRcbiAgICAgICAqIHNldHRpbmcgaXQgdG8gYHRydWVgIHdoZW4gYG9wZW4gPT09IGZhbHNlYCAobXVzdCBiZSBzcGVjaWZpZWQpLlxuICAgICAgICovXG4gICAgICBpc1Bvc2l0aW9uZWQudmFsdWUgPSBvcGVuICE9PSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGlmICh0eXBlb2Ygd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAoKTtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gYXR0YWNoKCkge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAod2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyZWZlcmVuY2VFbGVtZW50LnZhbHVlICE9IG51bGwgJiYgZmxvYXRpbmdFbGVtZW50LnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCA9IHdoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUsIGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgdXBkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgaWYgKCFvcGVuT3B0aW9uLnZhbHVlKSB7XG4gICAgICBpc1Bvc2l0aW9uZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgd2F0Y2goW21pZGRsZXdhcmVPcHRpb24sIHBsYWNlbWVudE9wdGlvbiwgc3RyYXRlZ3lPcHRpb24sIG9wZW5PcHRpb25dLCB1cGRhdGUsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChbcmVmZXJlbmNlRWxlbWVudCwgZmxvYXRpbmdFbGVtZW50XSwgYXR0YWNoLCB7XG4gICAgZmx1c2g6ICdzeW5jJ1xuICB9KTtcbiAgd2F0Y2gob3Blbk9wdGlvbiwgcmVzZXQsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICBpZiAoZ2V0Q3VycmVudFNjb3BlKCkpIHtcbiAgICBvblNjb3BlRGlzcG9zZShjbGVhbnVwKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHNoYWxsb3dSZWFkb25seSh4KSxcbiAgICB5OiBzaGFsbG93UmVhZG9ubHkoeSksXG4gICAgc3RyYXRlZ3k6IHNoYWxsb3dSZWFkb25seShzdHJhdGVneSksXG4gICAgcGxhY2VtZW50OiBzaGFsbG93UmVhZG9ubHkocGxhY2VtZW50KSxcbiAgICBtaWRkbGV3YXJlRGF0YTogc2hhbGxvd1JlYWRvbmx5KG1pZGRsZXdhcmVEYXRhKSxcbiAgICBpc1Bvc2l0aW9uZWQ6IHNoYWxsb3dSZWFkb25seShpc1Bvc2l0aW9uZWQpLFxuICAgIGZsb2F0aW5nU3R5bGVzLFxuICAgIHVwZGF0ZVxuICB9O1xufVxuXG5leHBvcnQgeyBhcnJvdywgdXNlRmxvYXRpbmcgfTtcbiIsImV4cG9ydCBjb25zdCBpc0NsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCwgZWxlbWVudHM6IEhUTUxFbGVtZW50IHwgSFRNTEVsZW1lbnRbXSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB0YXJnZXRzID0gQXJyYXkuaXNBcnJheShlbGVtZW50cykgPyBlbGVtZW50cyA6IFtlbGVtZW50c107XG4gIHJldHVybiAhdGFyZ2V0cy5zb21lKChlbCkgPT4gZWwuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKTtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBvZmZzZXQgYXMgb2Zmc2V0TWlkZGxld2FyZSwgc2hpZnQsIHVzZUZsb2F0aW5nIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3Z1ZSc7XG4gIGltcG9ydCB7IGNvbXB1dGVkLCBvbkJlZm9yZU1vdW50LCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBpc0NsaWNrT3V0c2lkZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2V2ZW50JztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFuY2hvcklkOiBzdHJpbmc7XG4gICAgb2Zmc2V0PzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb2Zmc2V0OiAxNixcbiAgfSk7XG5cbiAgY29uc3QgYW5jaG9yOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgZmxvYXRpbmc6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCByb290OiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3QgaXNIb3ZlcmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaXNUb2dnbGVkT3BlbiA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IG1pZGRsZXdhcmUgPSByZWYoW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldKTtcblxuICBjb25zdCBpc1Nob3dQb3BvdmVyID0gY29tcHV0ZWQoKCkgPT4gaXNIb3ZlcmVkLnZhbHVlIHx8IGlzVG9nZ2xlZE9wZW4udmFsdWUpO1xuXG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKGFuY2hvciwgZmxvYXRpbmcsIHtcbiAgICBtaWRkbGV3YXJlLFxuICAgIHN0cmF0ZWd5OiAnZml4ZWQnLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICB9KTtcblxuICBjb25zdCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSB8fCAhZmxvYXRpbmcudmFsdWUpIHJldHVybjtcbiAgICBpZiAoaXNDbGlja091dHNpZGUoZSwgW2FuY2hvci52YWx1ZSwgZmxvYXRpbmcudmFsdWVdKSkge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciA9ICgpID0+IHtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpc1RvZ2dsZWRPcGVuLnZhbHVlKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICBpc0hvdmVyZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93biA9IChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRPcGVuTGlzdGVuZXJzVG9Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVBbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGFuY2hvci52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmFuY2hvcklkKTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBpc1RvZ2dsZWRPcGVuLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCgpO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5hbmNob3JJZCxcbiAgICAoKSA9PiB7XG4gICAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICAgICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gICAgfVxuICApO1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBtaWRkbGV3YXJlLnZhbHVlID0gW2F1dG9QbGFjZW1lbnQoKSwgb2Zmc2V0TWlkZGxld2FyZSh7IG1haW5BeGlzOiBwcm9wcy5vZmZzZXQgfSksIHNoaWZ0KHsgcGFkZGluZzogMTYgfSldO1xuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgdXBkYXRlQW5jaG9yRWxlbWVudCgpO1xuICAgIHJvb3QudmFsdWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuXG4gIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxUZWxlcG9ydCA6dG89XCJgIyR7VE9QX0xBWUVSX0lEfWBcIj5cbiAgICA8VHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLXBvcG92ZXInLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5MT1csXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8yLFxuICAgICAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5TSEFET1cuQk9UVE9NLFxuICAgICAgICBdXCJcbiAgICAgICAgcmVmPVwiZmxvYXRpbmdcIlxuICAgICAgICA6c3R5bGU9XCJ7IC4uLmZsb2F0aW5nU3R5bGVzIH1cIlxuICAgICAgICB2LXNob3c9XCJpc1Nob3dQb3BvdmVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvVHJhbnNpdGlvbj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXBvcG92ZXIge1xuICAgIG1heC13aWR0aDogMjU2cHg7XG4gIH1cbiAgLnYtZW50ZXItZnJvbSxcbiAgLnYtbGVhdmUtdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgLnYtZW50ZXItYWN0aXZlLFxuICAudi1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuICAudi1lbnRlci10byxcbiAgLnYtbGVhdmUtZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgTGluayB9IGZyb20gJ0AvdHlwZXMvTGluayc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGxpbmtzOiBMaW5rW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiAnJyxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cInRpZGUtc2VvLWxpbmtzXCI+XG4gICAgPGgyIDpjbGFzcz1cIltDU1MuTUFSR0lOLkJPVFRPTS5IQUxGXVwiPlxuICAgICAge3sgcHJvcHMuaGVhZGluZyB9fVxuICAgIDwvaDI+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLldSQVAsIENTUy5HQVAuVFdPLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2VvLWxpbmsnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIENTUy5GT05ULlJPTEUuQk9EWV8yXVwiXG4gICAgICAgIDprZXk9XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCJsaW5rIGluIHByb3BzLmxpbmtzXCJcbiAgICAgID5cbiAgICAgICAgPGFcbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLlVOREVSTElORS5SRVNULk9GRl1cIlxuICAgICAgICAgIDpocmVmPVwibGluay51cmxcIlxuICAgICAgICAgIDp0YXJnZXQ9XCJsaW5rLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgbGluay5sYWJlbCB9fVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC8qIFRPRE86IFJlZmFjdG9yIHRvIGFjY2VwdCBicmVha3BvaW50IHByb3AgaW4gb3JkZXIgdG8gYWNjb21wbGlzaCB0aGlzIHdpdGggbmVpdGhlciBjdXN0b20gYnJlYWtwb2ludHMgbm9yIGRlcGVuZGVuY3kgb24gVmlld3BvcnRTdG9yZS4gKi9cbiAgLnRpZGUtc2VvLWxpbmsge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSAycmVtKSAvIDIpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMjMycHgpIHtcbiAgICAudGlkZS1zZW8tbGluayB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDZyZW0pIC8gNCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRPUF9MQVlFUl9JRCwgaW5pdEZhdXhUb3BMYXllciwgc2V0U2Nyb2xsTG9jayB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZpZXdwb3J0JztcblxuICBpbXBvcnQgVGlkZURpdmlkZXIgZnJvbSAnLi9UaWRlRGl2aWRlci52dWUnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICB9O1xuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gICAgKGU6ICdjbG9zZScpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBkaWFsb2dFbGVtZW50OiBSZWY8SFRNTERpYWxvZ0VsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgZGlhbG9nRWxlbWVudC52YWx1ZT8uY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXNjYXBlS2V5ZG93biA9IChlOiBFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmlzT3BlbixcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmICghZGlhbG9nRWxlbWVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHNldFNjcm9sbExvY2sobmV3VmFsdWUpO1xuICAgIH1cbiAgKTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLmlzT3Blbikge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zaGVldCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJkaWFsb2dFbGVtZW50XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtc2hlZXQtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlRPUC5PTkUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIDxUaWRlRGl2aWRlciAvPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1zaGVldC1jb250ZW50JyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWS5BVVRPLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RpYWxvZz5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXNoZWV0IHtcbiAgICAtLXNoZWV0LXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTEpO1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAganVzdGlmeS1pdGVtczogcmlnaHQ7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQ6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS10cmFuc3BhcmVudC00MDApO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWJvZHkge1xuICAgIG1heC13aWR0aDogbWluKGNhbGMoMTAwdncgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpLCAzMTFweCk7XG4gIH1cblxuICAudGlkZS1zaGVldC1jb250ZW50IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHZhcigtLXNoZWV0LXBhZGRpbmcteCkgMWZyIHZhcigtLXNoZWV0LXBhZGRpbmcteCk7XG4gIH1cblxuICA6d2hlcmUoLnRpZGUtc2hlZXQtY29udGVudCk6ZGVlcCg+IDp3aGVyZSgqKSkge1xuICAgIGdyaWQtY29sdW1uOiAyO1xuICB9XG5cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1zaGVldFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cblxuICAgIC50aWRlLXNoZWV0W29wZW5dOjpiYWNrZHJvcCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogdmFyKC0tdGlkZS1iZy1ibHVyKTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpc0FjdGl2ZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgICBlbWl0KCdjaGFuZ2UnKTtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtc3dpdGNoJyxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICcnIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gQ1NTLkJHLlNFQ09OREFSWSA6IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgIEBjbGljaz1cImhhbmRsZUNsaWNrXCJcbiAgICBhcmlhLWxhYmVsPVwiU3dpdGNoXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtc3dpdGNoLWluZGljYXRvcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUIDogQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zd2l0Y2gge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAudGlkZS1zd2l0Y2g6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtb3BhY2l0eSk7XG4gIH1cblxuICAudGlkZS1zd2l0Y2guYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogMzZweDtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC1pbmRpY2F0b3Ige1xuICAgIGxlZnQ6IDRweDtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQsIGJvcmRlci1jb2xvciwgYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6WyJPUklFTlRBVElPTiIsIkNTUyIsInV0aWxpdGllcyIsImJyZWFrcG9pbnQiLCJ1dGlsaXR5IiwicHJvcHMiLCJfX3Byb3BzIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfaG9pc3RlZF8xIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ub3JtYWxpemVDbGFzcyIsIl91bnJlZiIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJfY3JlYXRlQmxvY2siLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJJQ09OIiwiSUNPTl9SRUFMTSIsImVtaXQiLCJfX2VtaXQiLCJoYW5kbGVUb2dnbGVDbGljayIsIlRpZGVEaXZpZGVyIiwiX3RvRGlzcGxheVN0cmluZyIsIl9jcmVhdGVWTm9kZSIsIlRpZGVJY29uIiwiX3JlbmRlclNsb3QiLCJfY3R4IiwiRUxFTUVOVCIsIkVMRU1FTlRfVEVYVF9BU19JQ09OIiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJBTEVSVCIsImljb25UeXBlIiwiY29tcHV0ZWQiLCJUaWRlQnV0dG9uSWNvbiIsIkJBREdFX0NPTE9SIiwiQkFER0VfQ09MT1JfREVUQUlMUyIsIkJBREdFX1RSVVNURUQiLCJfRnJhZ21lbnQiLCJjcnVtYiIsImluZGV4IiwiX2hvaXN0ZWRfMiIsIl9ob2lzdGVkXzMiLCJfY3JlYXRlVGV4dFZOb2RlIiwiaGFuZGxlQ2xpY2siLCJ0YWIiLCIkZXZlbnQiLCJUWVBFX0NBUkQiLCJjb250YWluZXJSZWYiLCJpc0ZpcnN0U2xpZGUiLCJpc0xhc3RTbGlkZSIsInNob3dCdXR0b25zIiwic2xpZGVPYnNlcnZlciIsInNsaWRlc0luVmlldyIsInNsb3RPYnNlcnZlciIsInNsaWRlcyIsImhhbmRsZVNjcm9sbCIsInVwZGF0ZUNvbnRhaW5lckJsZWVkIiwib2JzZXJ2ZVNsaWRlcyIsIm9wdGlvbnMiLCJlbnRyaWVzIiwic2xpZGVzQWRkZWRUb1ZpZXciLCJlbnRyeSIsInNsaWRlSW5kZXgiLCJzbGlkZSIsImEiLCJiIiwiY2hpbGQiLCJvYnNlcnZlU2xvdCIsIm9ic2VydmVyQ2FsbGJhY2siLCJzY3JvbGxUb09mZnNldCIsInRhcmdldCIsInNob3dOZXh0UGFnZSIsIm5leHRTbGlkZSIsInNob3dQcmV2aW91c1BhZ2UiLCJwcmV2aW91c1NsaWRlIiwiX2EiLCJzaG93TmV4dFNsaWRlIiwic2hvd1ByZXZpb3VzU2xpZGUiLCJvbk1vdW50ZWQiLCJvblVubW91bnRlZCIsIl9iIiwiX2NhY2hlIiwiX2hvaXN0ZWRfNCIsIl9ob2lzdGVkXzUiLCJPQkpFQ1RfRklUIiwiaW1hZ2VEZWZhdWx0IiwicGljdHVyZSIsImltZyIsIm9iamVjdEZpdENsYXNzTmFtZSIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwicGljdHVyZVNvdXJjZSIsIl9ub3JtYWxpemVTdHlsZSIsIl9yZW5kZXJMaXN0Iiwic291cmNlIiwiVGlkZUltYWdlIiwiRk9STV9LRVkiLCJ1c2VUaWRlRm9ybSIsImZvcmNlU2hvd0Vycm9ycyIsInByb3ZpZGUiLCJ1c2VGb3JtQ29udGV4dCIsImluamVjdCIsImVycm9yTWVzc2FnZURlZmF1bHQiLCJWQUxJREFUSU9OX1JFU1VMVCIsImNoZWNrRm9ybWF0IiwiZm9ybWF0IiwibWVzc2FnZSIsInZhbHVlIiwicmVzdWx0IiwiZ2V0RmllbGRMZW5ndGhJc1ZhbGlkIiwibWF4bGVuZ3RoIiwibWlubGVuZ3RoIiwicmVxdWlyZWQiLCJpc0VtcHR5QW5kVW5yZXF1aXJlZCIsImlzVG9vTG9uZyIsImdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCIsImVycm9yRnJvbVByb3BzIiwidmFsaWRhdG9ycyIsInZhbGlkYXRpb24iLCJ2YWxpZGF0ZVByb3BlcnR5IiwibGVuZ3RoVmFsaWRhdGlvbiIsInZhbGlkYXRlTGVuZ3RoIiwicmVzcG9uc2UiLCJ2YWxpZGF0b3IiLCJtb2RlbFZhbHVlIiwiX3VzZU1vZGVsIiwiZm9ybUNvbnRleHQiLCJpc1ZhbGlkYXRpbmciLCJlcnJvclJlZiIsImZvcm1hdHRlZExhYmVsIiwiaXNDaGVja2VkIiwic2hvd0Vycm9yIiwiaGFzRXJyb3JGcm9tUHJvcCIsInN1cHBvcnRpbmdUZXh0TWVzc2FnZSIsImdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCIsIndhdGNoRWZmZWN0IiwibmV3VmFsdWUiLCJUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCIsIl9fZGVmYXVsdF9fIiwiY2hlY2tlZCIsIm9sZFZhbHVlIiwiRk9STUFUIiwiRk9STUFUX1JFR0VYIiwiVkFMSURBVE9SIiwiRVJST1JfRElTUExBWSIsImhhc0ZvY3VzIiwiaW5wdXRJZCIsInVzZUlkIiwic2VsZWN0RWxlbWVudCIsImhhc01pbmlsYWJlbCIsImlzRW1wdHkiLCJleHBhbmRPcHRpb25zIiwiZXZlbnQiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0Iiwib3B0Z3JvdXAiLCJvcHRpb24iLCJfaG9pc3RlZF82IiwiZ2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiaGFzRXJyb3IiLCJfX2V4cG9zZSIsIlRFWFRfSU5QVVRfVFlQRSIsIklOUFVUX01PREUiLCJnZXRUZXh0SW5wdXRNb2RlIiwidHlwZSIsImlucHV0bW9kZSIsImlucHV0RWxlbWVudCIsInNob3dQYXNzd29yZCIsImlucHV0TW9kZUF0dHJpYnV0ZSIsImlucHV0VHlwZSIsInNob3VsZFNob3dDbGVhckJ1dHRvbiIsInNob3VsZFNob3dQYXNzd29yZEJ1dHRvbiIsImhhbmRsZUNsZWFyIiwiaGFuZGxlRmllbGRDbGljayIsInByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duIiwiZSIsImhhc0NsZWFyIiwiaGFuZGxlVmFsaWRhdGlvbiIsImhhbmRsZUlucHV0IiwidXBkYXRlVmFsdWUiLCJ0ZXh0YXJlYUVsZW1lbnQiLCJwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93biIsIkJSRUFLUE9JTlQiLCJNRURJQSIsInNldFNjcm9sbExvY2siLCJpc0xvY2tlZCIsImJvZHkiLCJzY3JvbGxZIiwibmV4dFRpY2siLCJzYXZlZFNjcm9sbFkiLCJUT1BfTEFZRVJfSUQiLCJpbml0RmF1eFRvcExheWVyIiwidG9wTGF5ZXIiLCJtb2RhbENvbnRlbnQiLCJtb2RhbERpYWxvZyIsInRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlIiwic2Nyb2xsQ29udGVudFRvVG9wIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImhhbmRsZUVzY2FwZUtleWRvd24iLCIkc2xvdHMiLCJwYWdlQ3VycmVudCIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJwYWdpbmF0aW9uQnV0dG9uIiwiVGlkZUJ1dHRvblBhZ2luYXRpb24iLCJzaWRlcyIsImFsaWdubWVudHMiLCJwbGFjZW1lbnRzIiwiYWNjIiwic2lkZSIsIm1pbiIsIm1heCIsInJvdW5kIiwiZmxvb3IiLCJjcmVhdGVDb29yZHMiLCJ2Iiwib3Bwb3NpdGVTaWRlTWFwIiwib3Bwb3NpdGVBbGlnbm1lbnRNYXAiLCJjbGFtcCIsInN0YXJ0IiwiZW5kIiwiZXZhbHVhdGUiLCJwYXJhbSIsImdldFNpZGUiLCJwbGFjZW1lbnQiLCJnZXRBbGlnbm1lbnQiLCJnZXRPcHBvc2l0ZUF4aXMiLCJheGlzIiwiZ2V0QXhpc0xlbmd0aCIsImdldFNpZGVBeGlzIiwiZ2V0QWxpZ25tZW50QXhpcyIsImdldEFsaWdubWVudFNpZGVzIiwicmVjdHMiLCJydGwiLCJhbGlnbm1lbnQiLCJhbGlnbm1lbnRBeGlzIiwibGVuZ3RoIiwibWFpbkFsaWdubWVudFNpZGUiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsImdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50IiwiZXhwYW5kUGFkZGluZ09iamVjdCIsInBhZGRpbmciLCJnZXRQYWRkaW5nT2JqZWN0IiwicmVjdFRvQ2xpZW50UmVjdCIsInJlY3QiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwiY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQiLCJfcmVmIiwicmVmZXJlbmNlIiwiZmxvYXRpbmciLCJzaWRlQXhpcyIsImFsaWduTGVuZ3RoIiwiaXNWZXJ0aWNhbCIsImNvbW1vblgiLCJjb21tb25ZIiwiY29tbW9uQWxpZ24iLCJjb29yZHMiLCJjb21wdXRlUG9zaXRpb24iLCJjb25maWciLCJzdHJhdGVneSIsIm1pZGRsZXdhcmUiLCJwbGF0Zm9ybSIsInZhbGlkTWlkZGxld2FyZSIsInN0YXRlZnVsUGxhY2VtZW50IiwibWlkZGxld2FyZURhdGEiLCJyZXNldENvdW50IiwiaSIsImZuIiwibmV4dFgiLCJuZXh0WSIsImRhdGEiLCJyZXNldCIsImRldGVjdE92ZXJmbG93Iiwic3RhdGUiLCJfYXdhaXQkcGxhdGZvcm0kaXNFbGUiLCJlbGVtZW50cyIsImJvdW5kYXJ5Iiwicm9vdEJvdW5kYXJ5IiwiZWxlbWVudENvbnRleHQiLCJhbHRCb3VuZGFyeSIsInBhZGRpbmdPYmplY3QiLCJlbGVtZW50IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudEluZGV4IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJvZmZzZXQiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJub2RlIiwiaXNOb2RlIiwiZ2V0V2luZG93IiwiX25vZGUkb3duZXJEb2N1bWVudCIsImdldERvY3VtZW50RWxlbWVudCIsImlzRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJpc1NoYWRvd1Jvb3QiLCJpc092ZXJmbG93RWxlbWVudCIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImRpc3BsYXkiLCJnZXRDb21wdXRlZFN0eWxlIiwiaXNUYWJsZUVsZW1lbnQiLCJpc1RvcExheWVyIiwic2VsZWN0b3IiLCJpc0NvbnRhaW5pbmdCbG9jayIsImVsZW1lbnRPckNzcyIsIndlYmtpdCIsImlzV2ViS2l0IiwiY3NzIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiY3VycmVudE5vZGUiLCJnZXRQYXJlbnROb2RlIiwiaXNMYXN0VHJhdmVyc2FibGVOb2RlIiwiZ2V0Tm9kZVNjcm9sbCIsImdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yIiwicGFyZW50Tm9kZSIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwibGlzdCIsInRyYXZlcnNlSWZyYW1lcyIsIl9ub2RlJG93bmVyRG9jdW1lbnQyIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5Iiwid2luIiwiZnJhbWVFbGVtZW50IiwiZ2V0RnJhbWVFbGVtZW50IiwiZ2V0Q3NzRGltZW5zaW9ucyIsImhhc09mZnNldCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0Iiwic2hvdWxkRmFsbGJhY2siLCJ1bndyYXBFbGVtZW50IiwiZ2V0U2NhbGUiLCJkb21FbGVtZW50IiwiJCIsIm5vT2Zmc2V0cyIsImdldFZpc3VhbE9mZnNldHMiLCJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwiaXNGaXhlZCIsImZsb2F0aW5nT2Zmc2V0UGFyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaW5jbHVkZVNjYWxlIiwiaXNGaXhlZFN0cmF0ZWd5IiwiY2xpZW50UmVjdCIsInNjYWxlIiwidmlzdWFsT2Zmc2V0cyIsIm9mZnNldFdpbiIsImN1cnJlbnRXaW4iLCJjdXJyZW50SUZyYW1lIiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwibGVmdCIsInRvcCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJsZWZ0U2Nyb2xsIiwiZ2V0SFRNTE9mZnNldCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsImlnbm9yZVNjcm9sbGJhclgiLCJodG1sUmVjdCIsImNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0Iiwib2Zmc2V0cyIsImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50Iiwib2Zmc2V0UmVjdCIsImh0bWxPZmZzZXQiLCJnZXRDbGllbnRSZWN0cyIsImdldERvY3VtZW50UmVjdCIsImh0bWwiLCJnZXRWaWV3cG9ydFJlY3QiLCJ2aXN1YWxWaWV3cG9ydCIsInZpc3VhbFZpZXdwb3J0QmFzZWQiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsImdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nQW5jZXN0b3IiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImNhY2hlIiwiY2FjaGVkUmVzdWx0IiwiZWwiLCJjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSIsImVsZW1lbnRJc0ZpeGVkIiwiY29tcHV0ZWRTdHlsZSIsImN1cnJlbnROb2RlSXNDb250YWluaW5nIiwiYW5jZXN0b3IiLCJnZXRDbGlwcGluZ1JlY3QiLCJjbGlwcGluZ0FuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXREaW1lbnNpb25zIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc1N0YXRpY1Bvc2l0aW9uZWQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwicG9seWZpbGwiLCJyYXdPZmZzZXRQYXJlbnQiLCJnZXRPZmZzZXRQYXJlbnQiLCJzdmdPZmZzZXRQYXJlbnQiLCJnZXRFbGVtZW50UmVjdHMiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImZsb2F0aW5nRGltZW5zaW9ucyIsImlzUlRMIiwicmVjdHNBcmVFcXVhbCIsIm9ic2VydmVNb3ZlIiwib25Nb3ZlIiwiaW8iLCJ0aW1lb3V0SWQiLCJyb290IiwiY2xlYW51cCIsIl9pbyIsInJlZnJlc2giLCJza2lwIiwidGhyZXNob2xkIiwiZWxlbWVudFJlY3RGb3JSb290TWFyZ2luIiwiaW5zZXRUb3AiLCJpbnNldFJpZ2h0IiwiaW5zZXRCb3R0b20iLCJpbnNldExlZnQiLCJpc0ZpcnN0VXBkYXRlIiwiaGFuZGxlT2JzZXJ2ZSIsInJhdGlvIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwibGF5b3V0U2hpZnQiLCJhbmltYXRpb25GcmFtZSIsInJlZmVyZW5jZUVsIiwiYW5jZXN0b3JzIiwiY2xlYW51cElvIiwicmVvYnNlcnZlRnJhbWUiLCJyZXNpemVPYnNlcnZlciIsImZpcnN0RW50cnkiLCJfcmVzaXplT2JzZXJ2ZXIiLCJmcmFtZUlkIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9yZXNpemVPYnNlcnZlcjIiLCJvZmZzZXQkMSIsImF1dG9QbGFjZW1lbnQkMSIsInNoaWZ0JDEiLCJtZXJnZWRPcHRpb25zIiwicGxhdGZvcm1XaXRoQ2FjaGUiLCJjb21wdXRlUG9zaXRpb24kMSIsImlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UiLCJ0b1ZhbHVlIiwidW5yZWYiLCJnZXREUFIiLCJyb3VuZEJ5RFBSIiwiZHByIiwidXNlRmxvYXRpbmciLCJ3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiIsIm9wZW5PcHRpb24iLCJfdG9WYWx1ZSIsIm1pZGRsZXdhcmVPcHRpb24iLCJwbGFjZW1lbnRPcHRpb24iLCJfdG9WYWx1ZTIiLCJzdHJhdGVneU9wdGlvbiIsIl90b1ZhbHVlMyIsInRyYW5zZm9ybU9wdGlvbiIsIl90b1ZhbHVlNCIsInJlZmVyZW5jZUVsZW1lbnQiLCJmbG9hdGluZ0VsZW1lbnQiLCJzaGFsbG93UmVmIiwiaXNQb3NpdGlvbmVkIiwiZmxvYXRpbmdTdHlsZXMiLCJpbml0aWFsU3R5bGVzIiwieFZhbCIsInlWYWwiLCJ3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAiLCJvcGVuIiwicG9zaXRpb24iLCJhdHRhY2giLCJnZXRDdXJyZW50U2NvcGUiLCJvblNjb3BlRGlzcG9zZSIsInNoYWxsb3dSZWFkb25seSIsImlzQ2xpY2tPdXRzaWRlIiwiYW5jaG9yIiwiaXNIb3ZlcmVkIiwiaXNUb2dnbGVkT3BlbiIsIm9mZnNldE1pZGRsZXdhcmUiLCJpc1Nob3dQb3BvdmVyIiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIiLCJoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSIsImhhbmRsZUFuY2hvckVsZW1lbnRDbGljayIsImFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCIsInJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50IiwiaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duIiwiYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCIsInJlbW92ZU9wZW5MaXN0ZW5lcnNGcm9tUm9vdCIsInVwZGF0ZUFuY2hvckVsZW1lbnQiLCJvbkJlZm9yZU1vdW50IiwiX1RlbGVwb3J0IiwiX1RyYW5zaXRpb24iLCJsaW5rIiwiZGlhbG9nRWxlbWVudCJdLCJtYXBwaW5ncyI6IjtBQUFPLE1BQU1BLEtBQWM7QUFBQSxFQUN6QixZQUFZO0FBQUEsRUFDWixVQUFVO0FBQ1osR0NDYUMsSUFBTTtBQUFBLEVBQ2pCLGdCQUFnQixDQUFDQyxHQUFxQkMsTUFDN0JELEVBQVUsSUFBSSxDQUFDRSxNQUFZLEdBQUdELENBQVUsSUFBSUMsQ0FBTyxFQUFFO0FBQUEsRUFFOUQsT0FBTztBQUFBLElBQ0wsR0FBRztBQUFBLE1BQ0QsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sT0FBTztBQUFBLElBQUE7QUFBQSxJQUVULEdBQUc7QUFBQSxNQUNELFNBQVM7QUFBQSxNQUNULFFBQVE7QUFBQSxJQUFBO0FBQUEsRUFDVjtBQUFBLEVBRUYsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsU0FBUztBQUFBLElBQ1QsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLEVBQUE7QUFBQSxFQUVULE9BQU87QUFBQSxJQUNMLFFBQVE7QUFBQSxJQUNSLFFBQVE7QUFBQSxJQUNSLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLFNBQVM7QUFBQSxFQUFBO0FBQUEsRUFFWCxJQUFJO0FBQUEsSUFDRixRQUFRO0FBQUEsTUFDTixTQUFTO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsTUFBQTtBQUFBLE1BRVgsU0FBUztBQUFBLFFBQ1AsT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLFFBQ04sU0FBUztBQUFBLFFBQ1QsU0FBUztBQUFBLFFBRVQsTUFBTTtBQUFBLFFBQ04sT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsS0FBSztBQUFBLFFBQ0wsUUFBUTtBQUFBLFFBQ1IsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLE1BQUE7QUFBQSxJQUNWO0FBQUEsSUFFRixTQUFTO0FBQUEsSUFDVCxNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsSUFDVCxXQUFXO0FBQUEsSUFDWCxTQUFTO0FBQUEsTUFDUCxRQUFRO0FBQUEsTUFDUixPQUFPO0FBQUEsTUFDUCxTQUFTO0FBQUEsTUFDVCxVQUFVO0FBQUEsTUFDVixVQUFVO0FBQUEsTUFDVixTQUFTO0FBQUEsSUFBQTtBQUFBLElBRVgsYUFBYTtBQUFBLE1BQ1gsYUFBYTtBQUFBLE1BQ2IsYUFBYTtBQUFBLE1BQ2IsZUFBZTtBQUFBLE1BQ2YsY0FBYztBQUFBLElBQUE7QUFBQSxFQUNoQjtBQUFBLEVBRUYsUUFBUTtBQUFBLElBQ04sT0FBTztBQUFBLE1BQ0wsUUFBUTtBQUFBLFFBQ04sT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLFFBQ04sU0FBUztBQUFBLFFBQ1QsU0FBUztBQUFBLFFBRVQsTUFBTTtBQUFBLFFBQ04sT0FBTztBQUFBLFFBQ1AsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLFFBQ1IsUUFBUTtBQUFBLFFBQ1IsS0FBSztBQUFBLFFBQ0wsUUFBUTtBQUFBLFFBQ1IsTUFBTTtBQUFBLFFBQ04sUUFBUTtBQUFBLE1BQUE7QUFBQSxNQUVWLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxJQUFBO0FBQUEsSUFFWCxRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsT0FBTztBQUFBLE1BQ0wsUUFBUTtBQUFBLE1BQ1IsT0FBTztBQUFBLElBQUE7QUFBQSxJQUVULFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUFBO0FBQUEsSUFFUCxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsSUFBQTtBQUFBLElBRVAsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQUE7QUFBQSxJQUVQLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUFBO0FBQUEsSUFFUCxLQUFLO0FBQUEsTUFDSCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsSUFBQTtBQUFBLEVBQ1A7QUFBQSxFQUVGLFlBQVk7QUFBQSxJQUNWLFlBQVk7QUFB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QUFBQSxJQUFBO0FBQUEsRUFDakI7QUFBQSxFQUVGLEtBQUs7QUFBQSxJQUNILE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULE1BQU07QUFBQSxJQUNOLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFBQSxJQUNMLE1BQU07QUFBQSxFQUFBO0FBQUEsRUFFUixNQUFNO0FBQUEsSUFDSixPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsSUFDTixRQUFRO0FBQUEsSUFDUixJQUFJO0FBQUEsRUFBQTtBQUFBLEVBRU4sUUFBUTtBQUFBLElBQ04sTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLElBQ04sTUFBTTtBQUFBLElBQ04sVUFBVTtBQUFBLElBQ1YsVUFBVTtBQUFBLEVBQUE7QUFBQSxFQUVaLFdBQVc7QUFBQSxJQUNULFNBQVM7QUFBQSxFQUFBO0FBQUEsRUFFWCxjQUFjO0FBQUEsSUFDWixLQUFLO0FBQUEsRUFBQTtBQUFBLEVBRVAsUUFBUTtBQUFBLElBQ04sUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEtBQUs7QUFBQSxNQUNILE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxFQUNSO0FBQUEsRUFFRixRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsSUFDUCxZQUFZO0FBQUEsRUFBQTtBQUFBLEVBRWQsU0FBUztBQUFBLElBQ1AsVUFBVTtBQUFBLElBQ1YsS0FBSztBQUFBLElBQ0wsSUFBSTtBQUFBLEVBQUE7QUFBQSxFQUVOLFVBQVU7QUFBQSxJQUNSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxNQUNSLFFBQVE7QUFBQSxJQUFBO0FBQUEsSUFFVixJQUFJO0FBQUEsTUFDRixNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFBQTtBQUFBLElBRVYsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLElBQUE7QUFBQSxFQUNWO0FBQUEsRUFFRixTQUFTO0FBQUEsSUFDUCxRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFB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QUFhdkQsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDdUQsR0FBWSxLQUFLLEdBQUc7QUFBQSxJQUNuQixhQUFhdkQsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDdUQsR0FBWSxJQUFJLEdBQUc7QUFBQSxJQUNsQixhQUFhdkQsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDdUQsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFhdkQsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDdUQsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFhdkQsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDdUQsR0FBWSxHQUFHLEdBQUc7QUFBQSxJQUNqQixhQUFhdkQsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDdUQsR0FBWSxNQUFNLEdBQUc7QUFBQSxJQUNwQixhQUFhdkQsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdBQVdBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUUzQyxDQUFDdUQsR0FBWSxJQUFJLEdBQUc7QUFBQSxJQUNsQixhQUFhdkQsRUFBSSxPQUFPLE1BQU0sT0FBTztBQUFBLElBQ3JDLFdB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QUFBQSxjQUFpQlcsRUFBQVgsQ0FBQSxFQUFJLFVBQVU7QUFBQSxZQUFBOztZQVV4TzZDLEVBQVFDLEVBQUEsUUFBQSxXQUFBLENBQUEsR0FBQSxRQUFBLEVBQUE7QUFBQSxVQUFBOzs7Ozs7Ozs7Ozs7O0FDckhoQixVQUFNMUMsSUFBUUMsR0FLUmlDLElBQU9DLEdBRVB5QixJQUFjLE1BQU07QUFDeEIsTUFBSzVELEVBQU0sWUFDVGtDLEVBQUssUUFBUTtBQUFBLElBRWpCOzJCQUlBL0IsRUFnQ1MsVUFBQTtBQUFBLE1BL0JOLE9BQUtHLEVBQUE7QUFBQTtRQUErQk4sRUFBTSxXQUFRLFdBQUE7QUFBQSxRQUF3Qk8sRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFFBQWNXLEVBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUs7QUFBQSxRQUFXVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsUUFBWUksRUFBTSxXQUFRLEtBQVFPLEVBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU07QUFBQSxRQUFlVyxFQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHO0FBQUEsUUFBY0ksRUFBTSxXQUFXTyxFQUFBWCxDQUFBLEVBQUksR0FBRyxZQUFZVyxLQUFJLEdBQUcsUUFBUTtBQUFBLE1BQUE7TUFXMVQsVUFBVVAsRUFBTTtBQUFBLE1BQ2hCLFNBQU80RDtBQUFBLE1BQ1IsY0FBVztBQUFBLElBQUE7TUFFWHZELEVBZU0sT0FBQTtBQUFBLFFBZEgsT0FBS0MsRUFBQTtBQUFBO1VBQTZDQyxFQUFBWCxDQUFBLEVBQUksU0FBUztBQUFBLFVBQWtCVyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFVBQWNXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxVQUFjSSxFQUFNLFdBQVdPLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsVUFBVVcsRUFBQVgsQ0FBQSxFQUFJLEdBQUc7QUFBQSxRQUFBOztRQVVqUDJDLEVBR0VDLEdBQUE7QUFBQSxVQUZDLE1BQU1qQyxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsVUFDWCxNQUFNekIsRUFBQUUsQ0FBQSxFQUFLO0FBQUEsUUFBQTs7Ozs7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzU3LDU4LDU5LDYwLDYxXX0=
4670
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmVzbS5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzL09yaWVudGF0aW9uLnRzIiwiLi4vc3JjL3R5cGVzL1N0eWxlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSIsIi4uL3NyYy90eXBlcy9SZWFsbS50cyIsIi4uL3NyYy90eXBlcy9TaXplLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3JtYXQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSWNvbi52dWUiLCIuLi9zcmMvdHlwZXMvSWNvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBY2NvcmRpb25JdGVtLnZ1ZSIsIi4uL3NyYy90eXBlcy9FbGVtZW50LnRzIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCcmVhZENydW1icy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2FyZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBBY3Rpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBGaWx0ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBJbnB1dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ29sdW1ucy52dWUiLCIuLi9zcmMvdHlwZXMvSW1hZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlQmFja2dyb3VuZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlRm9ybS50cyIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpb0RlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3Jtcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWFEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9CcmVha3BvaW50LnRzIiwiLi4vc3JjL3V0aWxpdGllcy92aWV3cG9ydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNb2RhbC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUGFnaW5hdGlvbi52dWUiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9jb3JlL2Rpc3QvZmxvYXRpbmctdWkuY29yZS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvdnVlL2Rpc3QvZmxvYXRpbmctdWkudnVlLm1qcyIsIi4uL3NyYy91dGlsaXRpZXMvZXZlbnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlUG9wb3Zlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU2VvTGlua3MudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNoZWV0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTd2l0Y2gudnVlIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBPUklFTlRBVElPTiA9IHtcbiAgSE9SSVpPTlRBTDogJ2hvcml6b250YWwnLFxuICBWRVJUSUNBTDogJ3ZlcnRpY2FsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIE9yaWVudGF0aW9uID0gKHR5cGVvZiBPUklFTlRBVElPTilba2V5b2YgdHlwZW9mIE9SSUVOVEFUSU9OXTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuaW1wb3J0IHR5cGUgeyBCcmVha3BvaW50IH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcblxuZXhwb3J0IGNvbnN0IENTUyA9IHtcbiAgd2l0aEJyZWFrcG9pbnQ6ICh1dGlsaXRpZXM6IHN0cmluZ1tdLCBicmVha3BvaW50OiBCcmVha3BvaW50KTogc3RyaW5nW10gPT4ge1xuICAgIHJldHVybiB1dGlsaXRpZXMubWFwKCh1dGlsaXR5KSA9PiBgJHticmVha3BvaW50fS0ke3V0aWxpdHl9YCk7XG4gIH0sXG4gIEFMSUdOOiB7XG4gICAgWDoge1xuICAgICAgQ0VOVEVSOiAndGlkZS10ZXh0LWNlbnRlcicsXG4gICAgICBKVVNUSUZZOiAndGlkZS10ZXh0LWp1c3RpZnknLFxuICAgICAgTEVGVDogJ3RpZGUtdGV4dC1sZWZ0JyxcbiAgICAgIFJJR0hUOiAndGlkZS10ZXh0LXJpZ2h0JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIElOSVRJQUw6ICd0aWRlLWFsaWduLWluaXRpYWwnLFxuICAgICAgTUlERExFOiAndGlkZS1hbGlnbi1taWRkbGUnLFxuICAgIH0sXG4gIH0sXG4gIEFYSVMxOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMS1hcm91bmQnLFxuICAgIEJFVFdFRU46ICd0aWRlLWF4aXMxLWJldHdlZW4nLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczEtY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMxLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMxLXN0YXJ0JyxcbiAgfSxcbiAgQVhJUzI6IHtcbiAgICBBUk9VTkQ6ICd0aWRlLWF4aXMyLWFyb3VuZCcsXG4gICAgQ0VOVEVSOiAndGlkZS1heGlzMi1jZW50ZXInLFxuICAgIEVORDogJ3RpZGUtYXhpczItZW5kJyxcbiAgICBTVEFSVDogJ3RpZGUtYXhpczItc3RhcnQnLFxuICAgIFNUUkVUQ0g6ICd0aWRlLWF4aXMyLXN0cmV0Y2gnLFxuICB9LFxuICBCRzoge1xuICAgIEdMT0JBTDoge1xuICAgICAgUFJJTUFSWToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctcHJpbWFyeS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXByaW1hcnktaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXByaW1hcnktc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXByaW1hcnktd2FybmluZycsXG4gICAgICB9LFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYmctc3VyZmFjZS1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJnLXN1cmZhY2UtaW5mbycsXG4gICAgICAgIFNVQ0NFU1M6ICd0aWRlLWJnLXN1cmZhY2Utc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJnLXN1cmZhY2Utd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYmctc3VyZmFjZS1ibHVlJyxcbiAgICAgICAgR1JFRU46ICd0aWRlLWJnLXN1cmZhY2UtZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1iZy1zdXJmYWNlLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJnLXN1cmZhY2Utb3JhbmdlJyxcbiAgICAgICAgUFVSUExFOiAndGlkZS1iZy1zdXJmYWNlLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYmctc3VyZmFjZS1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJnLXN1cmZhY2Utc2FsbW9uJyxcbiAgICAgICAgVEVBTDogJ3RpZGUtYmctc3VyZmFjZS10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1iZy1zdXJmYWNlLXllbGxvdycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgSU5JVElBTDogJ3RpZGUtYmctaW5pdGlhbCcsXG4gICAgQkxVUjogJ3RpZGUtYmctYmx1cicsXG4gICAgUFJJTUFSWTogJ3RpZGUtYmctcHJpbWFyeScsXG4gICAgU0VDT05EQVJZOiAndGlkZS1iZy1zZWNvbmRhcnknLFxuICAgIFNVUkZBQ0U6IHtcbiAgICAgIEFDQ0VOVDogJ3RpZGUtYmctc3VyZmFjZS1hY2NlbnQnLFxuICAgICAgQlJBTkQ6ICd0aWRlLWJnLXN1cmZhY2UtYnJhbmQnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYmctc3VyZmFjZScsXG4gICAgICBGTE9BVElORzogJ3RpZGUtYmctc3VyZmFjZS1mbG9hdGluZycsXG4gICAgICBHUkFESUVOVDogJ3RpZGUtYmctc3VyZmFjZS1ncmFkaWVudCcsXG4gICAgICBWQVJJQU5UOiAndGlkZS1iZy1zdXJmYWNlLXZhcmlhbnQnLFxuICAgIH0sXG4gICAgVFJBTlNQQVJFTlQ6IHtcbiAgICAgIE9ORV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0xMDAnLFxuICAgICAgVFdPX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTIwMCcsXG4gICAgICBUSFJFRV9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC0zMDAnLFxuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS10cmFuc3BhcmVudC00MDAnLFxuICAgIH0sXG4gIH0sXG4gIEJPUkRFUjoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJvcmRlci1lcnJvcicsXG4gICAgICAgIElORk86ICd0aWRlLWJvcmRlci1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtYm9yZGVyLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1ib3JkZXItd2FybmluZycsXG5cbiAgICAgICAgQkxVRTogJ3RpZGUtYm9yZGVyLWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtYm9yZGVyLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYm9yZGVyLWxpbWUnLFxuICAgICAgICBPUkFOR0U6ICd0aWRlLWJvcmRlci1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWJvcmRlci1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJvcmRlci1yZWQnLFxuICAgICAgICBTQUxNT046ICd0aWRlLWJvcmRlci1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1ib3JkZXItdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYm9yZGVyLXllbGxvdycsXG4gICAgICB9LFxuICAgICAgSU5JVElBTDogJ3RpZGUtYm9yZGVyLWNvbG9yLWluaXRpYWwnLFxuICAgICAgREVGQVVMVDogJ3RpZGUtYm9yZGVyJyxcbiAgICAgIEZMT0FUSU5HOiAndGlkZS1ib3JkZXItZmxvYXRpbmcnLFxuICAgICAgSElHSDogJ3RpZGUtYm9yZGVyLWhpZ2gnLFxuICAgICAgTE9XOiAndGlkZS1ib3JkZXItbG93JyxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWJvcmRlci1wcmltYXJ5JyxcbiAgICB9LFxuICAgIFJBRElVUzoge1xuICAgICAgWkVSTzogJ3RpZGUtcmFkaXVzLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcmFkaXVzLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1yYWRpdXMtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcmFkaXVzLTEnLFxuICAgICAgRlVMTDogJ3RpZGUtcmFkaXVzLWZ1bGwnLFxuICAgIH0sXG4gICAgU1RZTEU6IHtcbiAgICAgIERBU0hFRDogJ3RpZGUtYm9yZGVyLWRhc2hlZCcsXG4gICAgICBTT0xJRDogJ3RpZGUtYm9yZGVyLXNvbGlkJyxcbiAgICB9LFxuICAgIEJPVFRPTToge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWJvdHRvbS0yJyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItMicsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItbGVmdC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1sZWZ0LTInLFxuICAgIH0sXG4gICAgUklHSFQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1yaWdodC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItcmlnaHQtMicsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci10b3AtMCcsXG4gICAgICBPTkU6ICd0aWRlLWJvcmRlci10b3AtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci10b3AtMicsXG4gICAgfSxcbiAgfSxcbiAgQk9YX1NJWklORzoge1xuICAgIEJPUkRFUl9CT1g6ICd0aWRlLWJveC1ib3JkZXInLFxuICAgIENPTlRFTlRfQk9YOiAndGlkZS1ib3gtY29udGVudCcsXG4gIH0sXG4gIEJSRUFLX0lOU0lERToge1xuICAgIEFWT0lEX0NPTFVNTjogJ3RpZGUtYnJlYWstaW5zaWRlLWF2b2lkLWNvbHVtbicsXG4gIH0sXG4gIEJSRUFLX1dPUkQ6IHtcbiAgICBPRkY6ICd0aWRlLWJyZWFrLWluaXRpYWwnLFxuICAgIE9OOiAndGlkZS1icmVhay13b3JkJyxcbiAgfSxcbiAgQ09MVU1OUzoge1xuICAgIElOSVRJQUw6ICd0aWRlLWNvbHVtbnMtaW5pdGlhbCcsXG4gICAgT05FOiAndGlkZS1jb2x1bW5zLTEnLFxuICAgIFRXTzogJ3RpZGUtY29sdW1ucy0yJyxcbiAgICBUSFJFRTogJ3RpZGUtY29sdW1ucy0zJyxcbiAgICBGT1VSOiAndGlkZS1jb2x1bW5zLTQnLFxuICB9LFxuICBDVVJTT1I6IHtcbiAgICBOT1RfQUxMT1dFRDogJ3RpZGUtY3Vyc29yLW5vdC1hbGxvd2VkJyxcbiAgICBQT0lOVEVSOiAndGlkZS1jdXJzb3ItcG9pbnRlcicsXG4gICAgVEVYVDogJ3RpZGUtY3Vyc29yLXRleHQnLFxuICB9LFxuICBESVNQTEFZOiB7XG4gICAgQkxPQ0s6ICd0aWRlLWRpc3BsYXktYmxvY2snLFxuICAgIENPTlRFTlRTOiAndGlkZS1kaXNwbGF5LWNvbnRlbnRzJyxcbiAgICBGTEVYOiAndGlkZS1kaXNwbGF5LWZsZXgnLFxuICAgIEdSSUQ6ICd0aWRlLWRpc3BsYXktZ3JpZCcsXG4gICAgSU5JVElBTDogJ3RpZGUtZGlzcGxheS1pbml0aWFsJyxcbiAgICBJTkxJTkU6ICd0aWRlLWRpc3BsYXktaW5saW5lJyxcbiAgICBJTkxJTkVfQkxPQ0s6ICd0aWRlLWRpc3BsYXktaW5saW5lLWJsb2NrJyxcbiAgICBJTkxJTkVfRkxFWDogJ3RpZGUtZGlzcGxheS1pbmxpbmUtZmxleCcsXG4gICAgTk9ORTogJ3RpZGUtZGlzcGxheS1ub25lJyxcbiAgfSxcbiAgRUxMSVBTSVM6ICd0aWRlLWVsbGlwc2lzJyxcbiAgRkxFWDoge1xuICAgIEJBU0lTOiB7XG4gICAgICBBVVRPOiAndGlkZS1mbGV4LWJhc2lzLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtZmxleC1iYXNpcy0wJyxcbiAgICB9LFxuICAgIERJUkVDVElPTjoge1xuICAgICAgQ09MVU1OOiAndGlkZS1mbGV4LWNvbHVtbicsXG4gICAgICBDT0xVTU5fUkVWRVJTRTogJ3RpZGUtZmxleC1jb2x1bW4tcmV2ZXJzZScsXG4gICAgICBST1c6ICd0aWRlLWZsZXgtcm93JyxcbiAgICAgIFJPV19SRVZFUlNFOiAndGlkZS1mbGV4LXJvdy1yZXZlcnNlJyxcbiAgICB9LFxuICAgIEdST1c6IHtcbiAgICAgIE9GRjogJ3RpZGUtZ3Jvdy1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1ncm93JyxcbiAgICB9LFxuICAgIFNIUklOSzoge1xuICAgICAgT0ZGOiAndGlkZS1zaHJpbmstbm9uZScsXG4gICAgICBPTjogJ3RpZGUtc2hyaW5rJyxcbiAgICB9LFxuICAgIFdSQVA6ICd0aWRlLWZsZXgtd3JhcCcsXG4gIH0sXG4gIEZPTlQ6IHtcbiAgICBDT0xPUjoge1xuICAgICAgR0xPQkFMOiB7XG4gICAgICAgIEVSUk9SOiAndGlkZS1mb250LWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtZm9udC1pbmZvJyxcbiAgICAgICAgU1VDQ0VTUzogJ3RpZGUtZm9udC1zdWNjZXNzJyxcbiAgICAgICAgV0FSTklORzogJ3RpZGUtZm9udC13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1mb250LWJsdWUnLFxuICAgICAgICBHUkVFTjogJ3RpZGUtZm9udC1ncmVlbicsXG4gICAgICAgIExJTUU6ICd0aWRlLWZvbnQtbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1vcmFuZ2UnLFxuICAgICAgICBQVVJQTEU6ICd0aWRlLWZvbnQtcHVycGxlJyxcbiAgICAgICAgUkVEOiAndGlkZS1mb250LXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1zYWxtb24nLFxuICAgICAgICBURUFMOiAndGlkZS1mb250LXRlYWwnLFxuICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQteWVsbG93JyxcblxuICAgICAgICBQUklNQVJZOiB7XG4gICAgICAgICAgQkxVRTogJ3RpZGUtZm9udC1wcmltYXJ5LWJsdWUnLFxuICAgICAgICAgIEdSRUVOOiAndGlkZS1mb250LXByaW1hcnktZ3JlZW4nLFxuICAgICAgICAgIExJTUU6ICd0aWRlLWZvbnQtcHJpbWFyeS1saW1lJyxcbiAgICAgICAgICBPUkFOR0U6ICd0aWRlLWZvbnQtcHJpbWFyeS1vcmFuZ2UnLFxuICAgICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wcmltYXJ5LXB1cnBsZScsXG4gICAgICAgICAgUkVEOiAndGlkZS1mb250LXByaW1hcnktcmVkJyxcbiAgICAgICAgICBTQUxNT046ICd0aWRlLWZvbnQtcHJpbWFyeS1zYWxtb24nLFxuICAgICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtcHJpbWFyeS10ZWFsJyxcbiAgICAgICAgICBZRUxMT1c6ICd0aWRlLWZvbnQtcHJpbWFyeS15ZWxsb3cnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIFBSSU1BUlk6ICd0aWRlLWZvbnQtb24tcHJpbWFyeScsXG4gICAgICBTRUNPTkRBUlk6ICd0aWRlLWZvbnQtb24tc2Vjb25kYXJ5JyxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgQlJBTkQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1icmFuZCcsXG4gICAgICAgIERFRkFVTFQ6ICd0aWRlLWZvbnQtb24tc3VyZmFjZScsXG4gICAgICAgIElOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgICAgVkFSSUFOVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQnLFxuICAgICAgICBWQVJJQU5UX0lOVkVSU0U6ICd0aWRlLWZvbnQtb24tc3VyZmFjZS12YXJpYW50LWludmVyc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIFJPTEU6IHtcbiAgICAgIERJU1BMQVlfMTogJ3RpZGUtdHlwb2dyYXBoeS1kaXNwbGF5LTEnLFxuICAgICAgSEVBRExJTkVfMTogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0xJyxcbiAgICAgIEhFQURMSU5FXzI6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMicsXG4gICAgICBIRUFETElORV8zOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTMnLFxuICAgICAgVElUTEVfMTogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0xJyxcbiAgICAgIFRJVExFXzI6ICd0aWRlLXR5cG9ncmFwaHktdGl0bGUtMicsXG4gICAgICBCT0RZXzE6ICd0aWRlLXR5cG9ncmFwaHktYm9keS0xJyxcbiAgICAgIEJPRFlfMjogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTInLFxuICAgICAgTEFCRUxfMTogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xJyxcbiAgICAgIExBQkVMXzFfU0VNSUJPTEQ6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMS1zZW1pYm9sZCcsXG4gICAgICBMQUJFTF8yOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTInLFxuICAgICAgTEFCRUxfMl9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0yLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzM6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMycsXG4gICAgICBMSU5LXzE6ICd0aWRlLXR5cG9ncmFwaHktbGluay0xJyxcbiAgICAgIExJTktfMjogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTInLFxuICAgICAgTElOS18zOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMycsXG4gICAgICBCVVRUT05fMTogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMScsXG4gICAgICBCVVRUT05fMjogJ3RpZGUtdHlwb2dyYXBoeS1idXR0b24tMicsXG4gICAgfSxcbiAgICBTSVpFOiB7XG4gICAgICBUV0VMVkU6ICd0aWRlLWZvbnQtMTInLFxuICAgICAgRk9VUlRFRU46ICd0aWRlLWZvbnQtMTQnLFxuICAgICAgU0lYVEVFTjogJ3RpZGUtZm9udC0xNicsXG4gICAgICBUV0VOVFk6ICd0aWRlLWZvbnQtMjAnLFxuICAgICAgVFdFTlRZX0ZPVVI6ICd0aWRlLWZvbnQtMjQnLFxuICAgICAgVEhJUlRZX1RXTzogJ3RpZGUtZm9udC0zMicsXG4gICAgfSxcbiAgICBXRUlHSFQ6IHtcbiAgICAgIEZPVVJfSFVORFJFRDogJ3RpZGUtZm9udC00MDAnLFxuICAgICAgRklWRV9IVU5EUkVEOiAndGlkZS1mb250LTUwMCcsXG4gICAgICBTSVhfSFVORFJFRDogJ3RpZGUtZm9udC02MDAnLFxuICAgICAgU0VWRU5fSFVORFJFRDogJ3RpZGUtZm9udC03MDAnLFxuICAgIH0sXG4gIH0sXG4gIEdBUDoge1xuICAgIFpFUk86ICd0aWRlLWdhcC0wJyxcbiAgICBRVUFSVEVSOiAndGlkZS1nYXAtMS80JyxcbiAgICBIQUxGOiAndGlkZS1nYXAtMS8yJyxcbiAgICBPTkU6ICd0aWRlLWdhcC0xJyxcbiAgICBUV086ICd0aWRlLWdhcC0yJyxcbiAgICBGT1VSOiAndGlkZS1nYXAtNCcsXG4gIH0sXG4gIEdSSUQ6IHtcbiAgICBGTFVJRDogJ3RpZGUtZmx1aWQnLFxuICAgIElURU06ICd0aWRlLWdyaWQtaXRlbScsXG4gICAgTEFZT1VUOiAndGlkZS1ncmlkLWxheW91dCcsXG4gICAgWEw6ICd0aWRlLWdyaWQteGwnLFxuICB9LFxuICBIRUlHSFQ6IHtcbiAgICBBVVRPOiAndGlkZS1oZWlnaHQtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtaGVpZ2h0LTAnLFxuICAgIEZVTEw6ICd0aWRlLWhlaWdodC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LWhlaWdodC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLWhlaWdodC0wJyxcbiAgfSxcbiAgSVNPTEFUSU9OOiB7XG4gICAgSVNPTEFURTogJ3RpZGUtaXNvbGF0ZScsXG4gIH0sXG4gIExJU1RfQlVMTEVUUzoge1xuICAgIE9GRjogJ3RpZGUtbGlzdC1ub25lJyxcbiAgfSxcbiAgTUFSR0lOOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tYm90dG9tLWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1ib3R0b20tMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1ib3R0b20tNCcsXG4gICAgfSxcbiAgICBGVUxMOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi00JyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1sZWZ0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tbGVmdC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1sZWZ0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tcmlnaHQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi10b3AtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXRvcC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXRvcC00JyxcbiAgICB9LFxuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi14LWF1dG8nLFxuICAgICAgWkVSTzogJ3RpZGUtbWFyZ2luLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4teC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtbWFyZ2luLXgtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi14LTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi15LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXktMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teS00JyxcbiAgICB9LFxuICB9LFxuICBPQkpFQ1Q6IHtcbiAgICBDRU5URVI6ICd0aWRlLW9iamVjdC1jZW50ZXInLFxuICAgIENPTlRBSU46ICd0aWRlLW9iamVjdC1jb250YWluJyxcbiAgICBDT1ZFUjogJ3RpZGUtb2JqZWN0LWNvdmVyJyxcbiAgICBTQ0FMRV9ET1dOOiAndGlkZS1vYmplY3Qtc2NhbGUtZG93bicsXG4gIH0sXG4gIE9QQUNJVFk6IHtcbiAgICBESVNBQkxFRDogJ3RpZGUtb3BhY2l0eS1kaXNhYmxlZCcsXG4gICAgT0ZGOiAndGlkZS1vcGFjaXR5LW5vbmUnLFxuICAgIE9OOiAndGlkZS1vcGFjaXR5JyxcbiAgfSxcbiAgT1ZFUkZMT1c6IHtcbiAgICBYOiB7XG4gICAgICBBVVRPOiAndGlkZS14LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14LWhpZGRlbicsXG4gICAgICBTQ1JPTEw6ICd0aWRlLXgtc2Nyb2xsJyxcbiAgICB9LFxuICAgIFhZOiB7XG4gICAgICBBVVRPOiAndGlkZS14eS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteHktaGlkZGVuJyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXktYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXktaGlkZGVuJyxcbiAgICB9LFxuICB9LFxuICBQQURESU5HOiB7XG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1ib3R0b20tMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1sZWZ0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLWxlZnQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1sZWZ0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLWxlZnQtNCcsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy1yaWdodC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctcmlnaHQtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy1yaWdodC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctcmlnaHQtNCcsXG4gICAgfSxcbiAgICBUT1A6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctdG9wLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy10b3AtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctdG9wLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXRvcC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy14LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1wYWRkaW5nLXgtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy14LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1wYWRkaW5nLXgtNCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXktMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteS0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXktMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteS00JyxcbiAgICB9LFxuICB9LFxuICBQT0lOVEVSX0VWRU5UUzoge1xuICAgIE9GRjogJ3RpZGUtcG9pbnRlci1ldmVudHMtbm9uZScsXG4gICAgT046ICd0aWRlLXBvaW50ZXItZXZlbnRzJyxcbiAgfSxcbiAgUE9TSVRJT046IHtcbiAgICBBQlNPTFVURTogJ3RpZGUtcG9zaXRpb24tYWJzb2x1dGUnLFxuICAgIEZJWEVEOiAndGlkZS1wb3NpdGlvbi1maXhlZCcsXG4gICAgUkVMQVRJVkU6ICd0aWRlLXBvc2l0aW9uLXJlbGF0aXZlJyxcbiAgICBTVEFUSUM6ICd0aWRlLXBvc2l0aW9uLXN0YXRpYycsXG4gICAgU1RJQ0tZOiAndGlkZS1wb3NpdGlvbi1zdGlja3knLFxuICB9LFxuICBQT1NJVElPTklORzoge1xuICAgIEJPVFRPTTogJ3RpZGUtYm90dG9tLTAnLFxuICAgIExFRlQ6ICd0aWRlLWxlZnQtMCcsXG4gICAgUklHSFQ6ICd0aWRlLXJpZ2h0LTAnLFxuICAgIFRPUDogJ3RpZGUtdG9wLTAnLFxuICB9LFxuICBSQVRJTzoge1xuICAgIE9ORV9UT19PTkU6ICd0aWRlLXJhdGlvLTEvMScsXG4gICAgU0lYVEVFTl9UT19OSU5FOiAndGlkZS1yYXRpby0xNi85JyxcbiAgICBUSFJFRV9UT19UV086ICd0aWRlLXJhdGlvLTMvMicsXG4gIH0sXG4gIFNDUk9MTEJBUjoge1xuICAgIE9GRjogJ3RpZGUtc2Nyb2xsYmFyLW5vbmUnLFxuICB9LFxuICBTSEFET1c6IHtcbiAgICBJTklUSUFMOiAndGlkZS1zaGFkb3ctaW5pdGlhbCcsXG4gICAgQk9UVE9NOiAndGlkZS1zaGFkb3ctYm90dG9tJyxcbiAgICBUT1A6ICd0aWRlLXNoYWRvdy10b3AnLFxuICAgIFRFWFQ6ICd0aWRlLXNoYWRvdy10ZXh0JyxcbiAgfSxcbiAgU05BUDoge1xuICAgIE9OOiAndGlkZS1zY3JvbGwtc25hcCcsXG4gIH0sXG4gIFNOQVBfQUxJR046IHtcbiAgICBTVEFSVDogJ3RpZGUtc2Nyb2xsLXNuYXAtc3RhcnQnLFxuICB9LFxuICBTVFJJS0VUSFJPVUdIOiB7XG4gICAgT0ZGOiAndGlkZS1zdHJpa2V0aHJvdWdoLW5vbmUnLFxuICAgIE9OOiAndGlkZS1zdHJpa2V0aHJvdWdoJyxcbiAgfSxcbiAgVEVYVF9UUkFOU0ZPUk06IHtcbiAgICBMT1dFUjogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbG93ZXInLFxuICAgIE5PTkU6ICd0aWRlLXRleHQtdHJhbnNmb3JtLW5vbmUnLFxuICAgIFVQUEVSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS11cHBlcicsXG4gIH0sXG4gIFVOREVSTElORToge1xuICAgIEhPVkVSOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLWhvdmVyLW5vbmUnLFxuICAgIH0sXG4gICAgUkVTVDoge1xuICAgICAgT046ICd0aWRlLXVuZGVybGluZScsXG4gICAgICBPRkY6ICd0aWRlLXVuZGVybGluZS1ub25lJyxcbiAgICB9LFxuICB9LFxuICBVU0VSX1NFTEVDVDoge1xuICAgIElOSVRJQUw6ICd0aWRlLXVzZXItc2VsZWN0LWluaXRpYWwnLFxuICAgIE5PTkU6ICd0aWRlLXVzZXItc2VsZWN0LW5vbmUnLFxuICB9LFxuICBWSVNJQklMSVRZOiB7XG4gICAgT0ZGOiAndGlkZS12aXNpYmxlLW5vbmUnLFxuICAgIE9OOiAndGlkZS12aXNpYmxlJyxcbiAgfSxcbiAgV0hJVEVTUEFDRV9XUkFQOiB7XG4gICAgT0ZGOiAndGlkZS13aGl0ZXNwYWNlLW5vd3JhcCcsXG4gIH0sXG4gIFdJRFRIOiB7XG4gICAgQVVUTzogJ3RpZGUtd2lkdGgtYXV0bycsXG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gICAgRlVMTDogJ3RpZGUtd2lkdGgtZnVsbCcsXG4gICAgTUFYX0ZVTEw6ICd0aWRlLW1heC13aWR0aC1mdWxsJyxcbiAgICBNSU5fWkVSTzogJ3RpZGUtbWluLXdpZHRoLTAnLFxuICB9LFxuICBaX0lOREVYOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtei1pbmRleC1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLXotaW5kZXgtMScsXG4gIH0sXG59IGFzIGNvbnN0O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgT1JJRU5UQVRJT04gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgT3JpZW50YXRpb24gfSBmcm9tICdAL3R5cGVzL09yaWVudGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIG9yaWVudGF0aW9uPzogT3JpZW50YXRpb247XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvcmllbnRhdGlvbjogT1JJRU5UQVRJT04uSE9SSVpPTlRBTCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1kaXZpZGVyJ11cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICBwcm9wcy5vcmllbnRhdGlvbiA9PT0gT1JJRU5UQVRJT04uSE9SSVpPTlRBTFxuICAgICAgICAgID8gW0NTUy5NQVJHSU4uWS5IQUxGLCBDU1MuQk9SREVSLkJPVFRPTS5PTkUsIENTUy5XSURUSC5GVUxMXVxuICAgICAgICAgIDogW0NTUy5NQVJHSU4uWC5IQUxGLCBDU1MuQk9SREVSLlJJR0hULk9ORSwgQ1NTLkhFSUdIVC5GVUxMXSxcbiAgICAgIF1cIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtZGl2aWRlciB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBSRUFMTSA9IHtcbiAgQUVSTzogJ2Flcm8nLFxuICBBVFY6ICdhdHYnLFxuICBCT0FUTUFSVDogJ2JvYXRtYXJ0JyxcbiAgQ1lDTEU6ICdjeWNsZScsXG4gIEVRVUlQTUVOVDogJ2VxdWlwbWVudCcsXG4gIFBXQzogJ3B3YycsXG4gIFJWOiAncnYnLFxuICBTTk9XOiAnc25vdycsXG4gIFRSVUNLOiAndHJ1Y2snLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgUmVhbG1LZXkgPSBrZXlvZiB0eXBlb2YgUkVBTE07XG5leHBvcnQgdHlwZSBSZWFsbSA9ICh0eXBlb2YgUkVBTE0pW1JlYWxtS2V5XTtcbiIsImV4cG9ydCBjb25zdCBTSVpFID0ge1xuICBMQVJHRTogJ2xhcmdlJyxcbiAgU01BTEw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBTaXplID0gKHR5cGVvZiBTSVpFKVtrZXlvZiB0eXBlb2YgU0laRV07XG5cbmV4cG9ydCBjb25zdCBTSVpFX0JVVFRPTiA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZUJ1dHRvbiA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuIiwiY29uc3QgY2FwaXRhbGl6ZUZpcnN0ID0gKHN0cmluZzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59O1xuXG5jb25zdCBmb3JtYXRDYW1lbENhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvXltcXHNfLV0vLCAnJylcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IHdvcmQgOiB3b3JkLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdEtlYmFiQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnLScpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdExhYmVsID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgZmFsc2U6ICdObycsXG4gICAgdHJ1ZTogJ1llcycsXG4gIH07XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGxhYmVsTWFwLCB2YWx1ZSkgPyBsYWJlbE1hcFt2YWx1ZV0gOiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZvcm1hdE51bWJlciA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGRpZ2l0cyA9IGRpZ2l0cy5yZXBsYWNlKC9cXEQvZywgJycpO1xuICAgIGlmIChOdW1iZXIoZGlnaXRzKSkge1xuICAgICAgb3V0cHV0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KE51bWJlcihkaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0ID0gJzAnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQYXNjYWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFBob25lID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgb3V0cHV0ID0gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyA/IFN0cmluZyhpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJycpO1xuICBsZXQgZGlnaXRzID0gb3V0cHV0O1xuICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcblxuICBzd2l0Y2ggKGRpZ2l0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDc6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMyl9LSR7ZGlnaXRzLnNsaWNlKDMpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEwOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzLCA2KX0tJHtkaWdpdHMuc2xpY2UoNil9YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBvdXRwdXQgPSBgJHtkaWdpdHMuc2xpY2UoMCwgMSl9LSR7ZGlnaXRzLnNsaWNlKDEsIDQpfS0ke2RpZ2l0cy5zbGljZSg0LCA3KX0tJHtkaWdpdHMuc2xpY2UoNyl9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBvdXRwdXQgPSBkaWdpdHM7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQcmljZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJCR7b3V0cHV0fWA7XG59O1xuXG5jb25zdCBmb3JtYXRRdW90ZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnXCInKSAmJiB2YWx1ZS5lbmRzV2l0aCgnXCInKSkge1xuICAgIHJldHVybiB2YWx1ZS5zbGljZSgxLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59O1xuXG5jb25zdCBmb3JtYXRTZW50ZW5jZUNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBzZW50ZW5jZUNhc2UgPSBpbnB1dDtcblxuICBpZiAoaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGxvd2VyQ2FzZSA9IGlucHV0XG4gICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpO1xuXG4gICAgc2VudGVuY2VDYXNlID0gbG93ZXJDYXNlLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsb3dlckNhc2Uuc2xpY2UoMSk7XG4gIH1cblxuICByZXR1cm4gc2VudGVuY2VDYXNlO1xufTtcblxuY29uc3QgZm9ybWF0U25ha2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICdfJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VGl0bGVDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5yZXBsYWNlKC9bXFxzXy1dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCcgJylcbiAgICAgICAgLm1hcCgod29yZCkgPT4gd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRVcmxGcm9tUm9vdCA9ICh1cmw6IHN0cmluZykgPT4ge1xuICBjb25zdCB1cmxGb3JtYXR0ZWQgPSB1cmwuc3BsaXQoJy5jb20vJyk7XG5cbiAgcmV0dXJuIHVybEZvcm1hdHRlZC5sZW5ndGggPiAxID8gYC8ke3VybEZvcm1hdHRlZFsxXX1gIDogdXJsO1xufTtcblxuY29uc3QgZm9ybWF0V2VpZ2h0ID0gKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dCA/IGZvcm1hdE51bWJlcihpbnB1dCkgOiBTdHJpbmcoaW5wdXQgfHwgJzAnKTtcbiAgcmV0dXJuIGAke291dHB1dH0gbGJzYDtcbn07XG5cbmNvbnN0IGdldEFydGljbGUgPSAobm91bjogc3RyaW5nLCBpc1BsdXJhbCA9IGZhbHNlLCBpc0RlZmluaXRlID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgdm93ZWxzID0gWydhJywgJ2UnLCAnaScsICdvJywgJ3UnXTtcbiAgY29uc3QgaXNWb3dlbExlYWRpbmcgPSB2b3dlbHMuaW5jbHVkZXMobm91bi5jaGFyQXQoMCkpO1xuXG4gIHJldHVybiBpc0RlZmluaXRlID8gJ3RoZScgOiBpc1BsdXJhbCA/ICdzb21lJyA6IGlzVm93ZWxMZWFkaW5nID8gJ2FuJyA6ICdhJztcbn07XG5cbmNvbnN0IHByaWNlVG9OdW1iZXIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoTnVtYmVyLmlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCckJywgJycpO1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59O1xuXG5jb25zdCB1bmZvcm1hdFByaWNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKC9cXCQvZywgJycpLnJlcGxhY2UoLywvZywgJycpO1xuICByZXR1cm4gYCR7b3V0cHV0fWA7XG59O1xuXG5leHBvcnQge1xuICBjYXBpdGFsaXplRmlyc3QsXG4gIGZvcm1hdENhbWVsQ2FzZSxcbiAgZm9ybWF0S2ViYWJDYXNlLFxuICBmb3JtYXRMYWJlbCxcbiAgZm9ybWF0TnVtYmVyLFxuICBmb3JtYXRQYXNjYWxDYXNlLFxuICBmb3JtYXRQaG9uZSxcbiAgZm9ybWF0UHJpY2UsXG4gIGZvcm1hdFF1b3RlcyxcbiAgZm9ybWF0U2VudGVuY2VDYXNlLFxuICBmb3JtYXRTbmFrZUNhc2UsXG4gIGZvcm1hdFRpdGxlQ2FzZSxcbiAgZm9ybWF0VXJsRnJvbVJvb3QsXG4gIGZvcm1hdFdlaWdodCxcbiAgZ2V0QXJ0aWNsZSxcbiAgcHJpY2VUb051bWJlcixcbiAgdW5mb3JtYXRQcmljZSxcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBkZWZpbmVBc3luY0NvbXBvbmVudCwgbWFya1JhdywgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgUkVBTE0gfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0UGFzY2FsQ2FzZSB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBTaXplIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaWNvbjogSWNvbjtcbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHJlYWxtRm9sZGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGltcG9ydChgLi4vYXNzZXRzL3N2Zy9pY29ucy9yZWFsbS8ke3JlYWxtRm9sZGVyfS9JY29uJHtuYW1lfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpbm5lclNWRy52YWx1ZSA9IG1hcmtSYXcoY29tcG9uZW50KTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWljb24nLCBwcm9wcy5zaXplXVwiPlxuICAgIDxDb21wb25lbnRcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5CTE9DS11cIlxuICAgICAgOmRhdGEtaWNvbj1cImljb25cIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICA6aXM9XCJpbm5lclNWR1wiXG4gICAgICB2LWlmPVwiaW5uZXJTVkdcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlPlxuICAudGlkZS1pY29uIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbi5zbWFsbCB7XG4gICAgd2lkdGg6IDEuMjVyZW07XG4gICAgaGVpZ2h0OiAxLjI1cmVtO1xuICB9XG5cbiAgLnRpZGUtaWNvbiBzdmcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB0eXBlIHsgUmVhbG1LZXkgfSBmcm9tICdAL3R5cGVzL1JlYWxtJztcblxuZXhwb3J0IGNvbnN0IElDT04gPSB7XG4gIEFDQ09VTlRfQkFMQU5DRTogJ2FjY291bnQtYmFsYW5jZScsXG4gIEFDVVRFOiAnYWN1dGUnLFxuICBBREQ6ICdhZGQnLFxuICBBSV9ERVNDUklQVElPTjogJ2FpLWRlc2NyaXB0aW9uJyxcbiAgQUxJR05fU1BBQ0VfRVZFTjogJ2FsaWduLXNwYWNlLWV2ZW4nLFxuICBBUFBMRV9QQVk6ICdhcHBsZS1wYXknLFxuICBBUlJPV19CQUNLOiAnYXJyb3ctYmFjaycsXG4gIEFSUk9XX0NZQ0xFOiAnYXJyb3ctY3ljbGUnLFxuICBBUlJPV19GT1JXQVJEOiAnYXJyb3ctZm9yd2FyZCcsXG4gIEFSUk9XX1JJR0hUOiAnYXJyb3ctcmlnaHQnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNVTU1BUklaRTogJ3N1bW1hcml6ZScsXG4gIFNXQVBfSE9SSVo6ICdzd2FwLWhvcml6JyxcbiAgU1dBUF9WRVJUOiAnc3dhcC12ZXJ0JyxcbiAgVEhSRUVfRF9ST1RBVElPTjogJ3RocmVlLWQtcm90YXRpb24nLFxuICBUSFVNQl9VUDogJ3RodW1iLXVwJyxcbiAgVFJFTkRJTkdfRE9XTjogJ3RyZW5kaW5nLWRvd24nLFxuICBUUk9QSFk6ICd0cm9waHknLFxuICBUVU5FOiAndHVuZScsXG4gIFRXSVRURVI6ICd0d2l0dGVyJyxcbiAgVU1CUkVMTEE6ICd1bWJyZWxsYScsXG4gIFZFUklGSUVEOiAndmVyaWZpZWQnLFxuICBWSURFT0NBTTogJ3ZpZGVvY2FtJyxcbiAgVklFV19JTl9BUjogJ3ZpZXctaW4tYXInLFxuICBWSVNJQklMSVRZOiAndmlzaWJpbGl0eScsXG4gIFZPTFVNRV9PRkY6ICd2b2x1bWUtb2ZmJyxcbiAgVk9MVU1FX09OOiAndm9sdW1lLW9uJyxcbiAgV0FSRUhPVVNFOiAnd2FyZWhvdXNlJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBXQVRFUjogJ3dhdGVyJyxcbiAgV0VJR0hUOiAnd2VpZ2h0JyxcbiAgV0lEVEg6ICd3aWR0aCcsXG4gIFdPUktTUEFDRV9QUkVNSVVNOiAnd29ya3NwYWNlLXByZW1pdW0nLFxuICBXUkVOQ0g6ICd3cmVuY2gnLFxuICBZT1VUVUJFOiAneW91dHViZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgSUNPTl9SRUFMTSA9IHtcbiAgQVRWOiB7XG4gICAgQVRWOiAnYXR2LWF0dicsXG4gICAgRFVORV9CVUdHWTogJ2F0di1kdW5lLWJ1Z2d5JyxcbiAgICBHT0xGX0NBUlQ6ICdhdHYtZ29sZi1jYXJ0JyxcbiAgICBHT19LQVJUOiAnYXR2LWdvLWthcnQnLFxuICAgIFNBTkRfUkFJTDogJ2F0di1zYW5kLXJhaWwnLFxuICAgIFNJREVfQllfU0lERTogJ2F0di1zaWRlLWJ5LXNpZGUnLFxuICAgIFRSQUlMRVI6ICdhdHYtdHJhaWxlcicsXG4gIH0sXG4gIEJPQVRNQVJUOiB7XG4gICAgUFdDOiAnYm9hdG1hcnQtcHdjJyxcbiAgICBUUkFJTEVSOiAnYm9hdG1hcnQtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ3RvZ2dsZSddKTtcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhhc0JvdHRvbURpdmlkZXI/OiBib29sZWFuO1xuICAgIGhhc1RvcERpdmlkZXI/OiBib29sZWFuO1xuICAgIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgICBsYWJlbDogJycsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZUNsaWNrID0gKCkgPT4ge1xuICAgIGVtaXQoJ3RvZ2dsZScpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRpZGUtYWNjb3JkaW9uLWl0ZW1cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1oZWFkJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5QQURESU5HLlkuSEFMRiwgQ1NTLkNVUlNPUi5QT0lOVEVSXVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVUb2dnbGVDbGlja1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5IQUxGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTERdXCI+XG4gICAgICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5pc09wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgIChvcHRpb25hbClcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cImlzRXhwYW5kZWQgPyBJQ09OLkVYUEFORF9MRVNTIDogSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWNjb3JkaW9uLWJvZHknLCBwcm9wcy5pc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnLCBDU1MuRElTUExBWS5HUklEXVwiPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLk9WRVJGTE9XLlkuSElEREVOLCBDU1MuTUFSR0lOLlkuT05FLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cInByb3BzLmhhc0JvdHRvbURpdmlkZXJcIiAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmNvbGxhcHNlZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAwZnI7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgRUxFTUVOVCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEVMRU1FTlRfVEVYVF9BU19JQ09OID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBESVY6ICdkaXYnLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFbGVtZW50ID0gKHR5cGVvZiBFTEVNRU5UKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF07XG5leHBvcnQgdHlwZSBFbGVtZW50VGV4dEFzSWNvbiA9ICh0eXBlb2YgRUxFTUVOVF9URVhUX0FTX0lDT04pW2tleW9mIHR5cGVvZiBFTEVNRU5UX1RFWFRfQVNfSUNPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgUHJpb3JpdHkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlbGVtZW50PzogRWxlbWVudDtcbiAgICBocmVmPzogc3RyaW5nO1xuICAgIGljb246IEljb247XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIHByaW9yaXR5PzogUHJpb3JpdHk7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZWxlbWVudDogRUxFTUVOVC5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBpc05ld1RhYjogZmFsc2UsXG4gICAgcHJpb3JpdHk6IFBSSU9SSVRZLlBSSU1BUlksXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDphcmlhLWxhYmVsPVwicHJvcHMuaWNvblwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gJ3RpZGUtbGluay1hcy1idXR0b24taWNvbicgOiAndGlkZS1idXR0b24taWNvbicsXG4gICAgICBwcm9wcy5wcmlvcml0eSAmJiBgdGlkZS1idXR0b24tJHtwcm9wcy5wcmlvcml0eX1gLFxuICAgICAgW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIENTUy5QQURESU5HLkZVTEwuSEFMRl0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiAnJyxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gJ2EnIDogJ2J1dHRvbidcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCJleHBvcnQgY29uc3QgQUxFUlQgPSB7XG4gIEVSUk9SOiAnZXJyb3InLFxuICBJTkZPOiAnaW5mbycsXG4gIFNVQ0NFU1M6ICdzdWNjZXNzJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxlcnQgPSAodHlwZW9mIEFMRVJUKVtrZXlvZiB0eXBlb2YgQUxFUlRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBBTEVSVCB9IGZyb20gJ0AvdHlwZXMvQWxlcnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEFsZXJ0IH0gZnJvbSAnQC90eXBlcy9BbGVydCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICAgIGlzRGlzbWlzc2libGU/OiBib29sZWFuO1xuICAgIGlzVG9hc3Q/OiBib29sZWFuO1xuICAgIHR5cGU/OiBBbGVydDtcbiAgfTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ2Nsb3NlJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgaWNvblR5cGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SKSByZXR1cm4gSUNPTi5QUklPUklUWV9ISUdIO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTKSByZXR1cm4gSUNPTi5DSEVDSztcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORykgcmV0dXJuIElDT04uV0FSTklORztcbiAgICByZXR1cm4gSUNPTi5JTkZPUk1BVElPTjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5ESVNQTEFZLkdSSUQsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5FUlJPUl0gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLklORk8sIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLklORk9dIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5TVUNDRVNTLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TVUNDRVNTXVxuICAgICAgICA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklOR1xuICAgICAgICA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuV0FSTklORywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuV0FSTklOR11cbiAgICAgICAgOiAnJyxcbiAgICAgIHByb3BzLmlzVG9hc3QgPyBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLCBDU1MuU0hBRE9XLkJPVFRPTV0gOiBDU1MuQk9SREVSLkxFRlQuVFdPLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1hbGVydC1pY29uJyxcbiAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0UsXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUixcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuSU5GTyxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuU1VDQ0VTUyxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuV0FSTklORyxcbiAgICAgIF1cIlxuICAgICAgdi1pZj1cIiFwcm9wcy5pc1RvYXN0XCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpY29uVHlwZVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtaGVhZGluZycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRF1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2Rpdj5cblxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWNsb3NlJywgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJlbWl0KCdjbG9zZScpXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBhbGVydFwiXG4gICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFsZXJ0LWJvZHknLCBDU1MuRk9OVC5ST0xFLkJPRFlfMiwgIXByb3BzLmlzVG9hc3QgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgPHNsb3QgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnIgYXV0bztcbiAgICBncmlkLWNvbHVtbi1nYXA6IDAuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaWNvbiB7XG4gICAgZ3JpZC1hcmVhOiBpY29uO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtaGVhZGluZyB7XG4gICAgZ3JpZC1hcmVhOiBoZWFkaW5nO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtY2xvc2Uge1xuICAgIGdyaWQtYXJlYTogY2xvc2U7XG4gIH1cblxuICAudGlkZS1hbGVydC1ib2R5IHtcbiAgICBncmlkLWFyZWE6IGJvZHk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUiA9IHtcbiAgQkxBQ0s6ICdibGFjaycsXG4gIEJMVUU6ICdibHVlJyxcbiAgR1JFRU46ICdncmVlbicsXG4gIExJTUU6ICdsaW1lJyxcbiAgT1JBTkdFOiAnb3JhbmdlJyxcbiAgUFVSUExFOiAncHVycGxlJyxcbiAgUkVEOiAncmVkJyxcbiAgU0FMTU9OOiAnc2FsbW9uJyxcbiAgVEVBTDogJ3RlYWwnLFxuICBZRUxMT1c6ICd5ZWxsb3cnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEJBREdFX0NPTE9SX0RFVEFJTFM6IFJlY29yZDxcbiAgQmFkZ2VDb2xvcixcbiAge1xuICAgIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gICAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIH1cbj4gPSB7XG4gIFtCQURHRV9DT0xPUi5CTEFDS106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5ISUdILFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICB9LFxuICBbQkFER0VfQ09MT1IuQkxVRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuQkxVRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLkJMVUUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5HUkVFTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuR1JFRU4sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5HUkVFTixcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkxJTUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkxJTUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5MSU1FLFxuICB9LFxuICBbQkFER0VfQ09MT1IuT1JBTkdFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5PUkFOR0UsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5PUkFOR0UsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5QVVJQTEVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlBVUlBMRSxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlBVUlBMRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlJFRF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuUkVELFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuUkVELFxuICB9LFxuICBbQkFER0VfQ09MT1IuU0FMTU9OXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TQUxNT04sXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5TQUxNT04sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5URUFMXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5URUFMLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuVEVBTCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLllFTExPV106IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuWUVMTE9XLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuWUVMTE9XLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEJBREdFX1RSVVNURUQgPSB7XG4gIFlFQVJTXzEwOiAnMTAnLFxuICBZRUFSU18xNTogJzE1JyxcbiAgWUVBUlNfNTogJzUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQmFkZ2VDb2xvciA9ICh0eXBlb2YgQkFER0VfQ09MT1IpW2tleW9mIHR5cGVvZiBCQURHRV9DT0xPUl07XG5leHBvcnQgdHlwZSBCYWRnZVRydXN0ZWRZZWFycyA9ICh0eXBlb2YgQkFER0VfVFJVU1RFRClba2V5b2YgdHlwZW9mIEJBREdFX1RSVVNURURdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCQURHRV9DT0xPUl9ERVRBSUxTIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJhZGdlQ29sb3IgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNvbG9yPzogQmFkZ2VDb2xvcjtcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNvbG9yOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpc0Zsb2F0aW5nOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UnLFxuICAgICAgcHJvcHMuaXNGbG9hdGluZyB8fCBwcm9wcy5jb2xvciA/IFtDU1MuQkcuU1VSRkFDRS5GTE9BVElORywgQ1NTLlNIQURPVy5CT1RUT01dIDogW0NTUy5CRy5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlkuUVVBUlRFUixcbiAgICAgIENTUy5QQURESU5HLlguSEFMRixcbiAgICAgIHByb3BzLmNvbG9yICYmIFtDU1MuQk9SREVSLkxFRlQuVFdPLCBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5ib3JkZXJDb2xvcl0sXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkYsIHByb3BzLmNvbG9yICYmIEJBREdFX0NPTE9SX0RFVEFJTFNbcHJvcHMuY29sb3JdLmljb25Db2xvcl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJBREdFX1RSVVNURUQgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJhZGdlVHJ1c3RlZFllYXJzIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICB5ZWFycz86IEJhZGdlVHJ1c3RlZFllYXJzO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgeWVhcnM6IEJBREdFX1RSVVNURUQuWUVBUlNfNSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYmFkZ2UtdHJ1c3RlZC1wYXJ0bmVyJyxcbiAgICAgIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkQsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkVfRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5BV0FSRF9TVEFSXCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkVMTElQU0lTXVwiPlxuICAgICAgPHNwYW4+e3sgcHJvcHMueWVhcnMgfX0geWVhciB0cnVzdGVkIHBhcnRuZXI8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXZlcmlmaWVkLXZlaGljbGUnLFxuICAgICAgQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWSxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5WRVJJRklFRFwiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+VmVyaWZpZWQgdmVoaWNsZTwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pY29uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1pbmZvLXByaW1hcnkpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJyZWFkQ3J1bWIgfSBmcm9tICdAL3R5cGVzL0JyZWFkQ3J1bWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYnJlYWRDcnVtYnM6IEJyZWFkQ3J1bWJbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGJyZWFkQ3J1bWJzOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHVsIDpjbGFzcz1cIlsndGlkZS1icmVhZC1jcnVtYnMnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgIDx0ZW1wbGF0ZVxuICAgICAgOmtleT1cImNydW1iLmxhYmVsXCJcbiAgICAgIHYtZm9yPVwiKGNydW1iLCBpbmRleCkgaW4gcHJvcHMuYnJlYWRDcnVtYnNcIlxuICAgID5cbiAgICAgIDxsaSA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIDpocmVmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgICB2LWlmPVwiY3J1bWIudXJsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNydW1iLmxhYmVsIH19XG4gICAgICAgIDwvYT5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIDpkYXRhLXRyYWNrPVwiY3J1bWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgdi1pZj1cInByb3BzLmJyZWFkQ3J1bWJzICYmIGluZGV4IDwgcHJvcHMuYnJlYWRDcnVtYnMubGVuZ3RoIC0gMVwiPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6aWNvbj1cIklDT04uQVJST1dfUklHSFRcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvdWw+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgU0laRSwgU0laRV9CVVRUT04gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZUJ1dHRvbiB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBwcmlvcml0eT86IFByaW9yaXR5O1xuICAgIHNpemU/OiBTaXplQnV0dG9uO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHNpemU6IFNJWkVfQlVUVE9OLkxBUkdFLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24nLFxuICAgICAgcHJvcHMucHJpb3JpdHkgJiYgYHRpZGUtYnV0dG9uLSR7cHJvcHMucHJpb3JpdHl9YCxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IFtDU1MuRElTUExBWS5JTkxJTkVfRkxFWF0gOiBbQ1NTLkRJU1BMQVkuRkxFWF0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGIDogJycsXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5TTUFMTCAmJiBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMiwgQ1NTLlBBRERJTkcuWC5PTkUsIENTUy5QQURESU5HLlkuSEFMRl0sXG4gICAgICBzaXplID09PSBTSVpFX0JVVFRPTi5MQVJHRSAmJiBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSwgQ1NTLlBBRERJTkcuWC5UV08sIENTUy5QQURESU5HLlkuT05FXSxcbiAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBwcm9wcy5kaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgcHJvcHMuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOmlzPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gRUxFTUVOVC5MSU5LIDogRUxFTUVOVC5CVVRUT05cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICB7eyBwcm9wcy5sYWJlbCB9fVxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cInNpemUgPT09IFNJWkVfQlVUVE9OLkxBUkdFID8gU0laRS5MQVJHRSA6IFNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgRUxFTUVOVF9URVhUX0FTX0lDT04gfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50VGV4dEFzSWNvbiB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgZWxlbWVudD86IEVsZW1lbnRUZXh0QXNJY29uO1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlbGVtZW50OiBFTEVNRU5UX1RFWFRfQVNfSUNPTi5CVVRUT04sXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkxJTksgPyAndGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uJyA6ICd0aWRlLWJ1dHRvbi1pY29uJyxcbiAgICAgIFtDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIENTUy5QQURESU5HLkZVTEwuSEFMRl0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX1RFWFRfQVNfSUNPTi5MSU5LID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogJycsXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX1RFWFRfQVNfSUNPTi5ESVYgPyBbQ1NTLkNVUlNPUi5QT0lOVEVSXSA6ICcnLFxuICAgICAgW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfM10sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwicHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9URVhUX0FTX0lDT04uQlVUVE9OICYmIHByb3BzLmRpc2FibGVkXCJcbiAgICA6aHJlZj1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkxJTksgJiYgcHJvcHMuaHJlZiA/IHByb3BzLmhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDppcz1cIlxuICAgICAgcHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVF9URVhUX0FTX0lDT04uTElOS1xuICAgICAgICA/ICdhJ1xuICAgICAgICA6IHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfVEVYVF9BU19JQ09OLkJVVFRPTlxuICAgICAgICA/ICdidXR0b24nXG4gICAgICAgIDogJ2RpdidcbiAgICBcIlxuICA+XG4gICAgPHNwYW4gOmNsYXNzPVwiWydsYWJlbCcsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVJdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1idXR0b24taWNvbixcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbiB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS13aGl0ZSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb246ZGlzYWJsZWQsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb246ZGlzYWJsZWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb24gLmxhYmVsLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uIC5sYWJlbCB7XG4gICAgd2lkdGg6IDEuNXJlbTtcbiAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFjdGl2ZVRhYjogbnVtYmVyO1xuICAgIHRhYnM6IFRhYltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYWN0aXZlVGFiOiAwLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoWydjaGFuZ2UnXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGVtaXQoJ2NoYW5nZScsIGluZGV4KTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkJyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICBdXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWInLFxuICAgICAgICBpbmRleCA9PT0gYWN0aXZlVGFiXG4gICAgICAgICAgPyBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULCBDU1MuU0hBRE9XLkJPVFRPTV1cbiAgICAgICAgICA6IFsnaW5hY3RpdmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICBDU1MuRkxFWC5HUk9XLk9OLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuVFdPLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLFxuICAgICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICAgIF1cIlxuICAgICAgOmRhdGEtdHJhY2s9XCJ0YWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKGluZGV4KVwiXG4gICAgICB2LWZvcj1cIih0YWIsIGluZGV4KSBpbiBwcm9wcy50YWJzXCJcbiAgICA+XG4gICAgICA8c3BhbiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yX1NFTUlCT0xEXVwiPlxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIlxuICAgICAgICB2LWlmPVwidGFiLmNvdW50ICYmIHRhYi5jb3VudCA+IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiLmNvdW50IH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQge1xuICAgIG1heC13aWR0aDogMjMuM3JlbTtcbiAgfVxuXG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQtdGFiIHtcbiAgICBmbGV4OiAxO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpub3QoOmhvdmVyKSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAuaW5hY3RpdmU6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZGVmYXVsdCk7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgVFlQRV9DQVJEID0ge1xuICBBQ1RJT05BQkxFOiAnYWN0aW9uJyxcbiAgSU5GT1JNQVRJT05BTDogJ2luZm9ybWF0aW9uYWwnLFxuICBTRUxFQ1RBQkxFOiAnc2VsZWN0Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIENhcmRUeXBlID0gKHR5cGVvZiBUWVBFX0NBUkQpW2tleW9mIHR5cGVvZiBUWVBFX0NBUkRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBUWVBFX0NBUkQgfSBmcm9tICdAL3R5cGVzL0NhcmQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQ2FyZFR5cGUgfSBmcm9tICdAL3R5cGVzL0NhcmQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaGVhZGluZzogc3RyaW5nO1xuICAgIGljb24/OiBJY29uO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICB0eXBlPzogQ2FyZFR5cGU7XG4gICAgaHJlZj86IHN0cmluZztcbiAgfTtcblxuICB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2FyZCcsXG4gICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIHR5cGUgIT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMICYmICdob3ZlcmFibGUnLFxuICAgICAgdHlwZSA9PT0gVFlQRV9DQVJELlNFTEVDVEFCTEUgJiYgc2VsZWN0ZWQgJiYgJ3NlbGVjdGVkJyxcbiAgICBdXCJcbiAgICA6aHJlZj1cImhyZWZcIlxuICAgIDppcz1cImhyZWYgPyAnYScgOiB0eXBlID09PSBUWVBFX0NBUkQuSU5GT1JNQVRJT05BTCA/ICdkaXYnIDogJ2J1dHRvbidcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImljb25cIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuQVhJUzIuU1RBUlQsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuSEFMRl1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMV9TRU1JQk9MRCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiPlxuICAgICAgICB7eyBoZWFkaW5nIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcmQuaG92ZXJhYmxlOm5vdCguc2VsZWN0ZWQpOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLXJlc3QpO1xuICB9XG4gIC50aWRlLWNhcmQuc2VsZWN0ZWQge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYmxlZWQ/OiBudW1iZXI7XG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG4gICAgaXNIZWFkbGluZTE/OiBib29sZWFuO1xuICAgIGlzSGlkZWF3YXlCdXR0b25zPzogYm9vbGVhbjtcbiAgICBpc1Njcm9sbEJ5UGFnZT86IGJvb2xlYW47XG4gICAgaXNUb3VjaHNjcmVlbj86IGJvb2xlYW47XG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBibGVlZDogdW5kZWZpbmVkLFxuICAgIGlzRmxvYXRpbmc6IGZhbHNlLFxuICAgIGlzSGVhZGxpbmUxOiBmYWxzZSxcbiAgICBpc0hpZGVhd2F5QnV0dG9uczogdHJ1ZSxcbiAgICBpc1Njcm9sbEJ5UGFnZTogdHJ1ZSxcbiAgICBpc1RvdWNoc2NyZWVuOiB1bmRlZmluZWQsXG4gICAgc3VidGl0bGU6IHVuZGVmaW5lZCxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3NsaWRlc0FkZGVkVG9WaWV3Jywgc2xpZGVzSW5WaWV3OiBudW1iZXJbXSk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBpc0ZpcnN0U2xpZGUgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IGlzTGFzdFNsaWRlID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd0J1dHRvbnMgPSByZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gIGNvbnN0IHNsaWRlT2JzZXJ2ZXIgPSByZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3Qgc2xpZGVzSW5WaWV3ID0gcmVmPG51bWJlcltdPihbXSk7XG4gIGNvbnN0IHNsb3RPYnNlcnZlciA9IHJlZjxNdXRhdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3Qgc2xpZGVzID0gcmVmPEhUTUxFbGVtZW50W10+KFtdKTtcblxuICAvLyBUT0RPOiBkZWJvdW5jZVxuICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgdXBkYXRlQ29udGFpbmVyQmxlZWQoKTtcbiAgfTtcblxuICBjb25zdCBvYnNlcnZlU2xpZGVzID0gKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290OiBjb250YWluZXJSZWY/LnZhbHVlLFxuICAgICAgcm9vdE1hcmdpbjogJzBweCAxcHggMHB4IDBweCcsXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgfTtcblxuICAgIHNsaWRlT2JzZXJ2ZXIudmFsdWUgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGxldCBzbGlkZXNBZGRlZFRvVmlldzogbnVtYmVyW10gPSBbXTtcblxuICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZUluZGV4ID0gc2xpZGVzLnZhbHVlLmluZGV4T2YoZW50cnkudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcblxuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICBzbGlkZXNBZGRlZFRvVmlldy5wdXNoKHNsaWRlSW5kZXgpO1xuICAgICAgICAgIHNsaWRlc0luVmlldy52YWx1ZS5wdXNoKHNsaWRlSW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNsaWRlc0luVmlldy52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5maWx0ZXIoKHNsaWRlKSA9PiBzbGlkZSAhPT0gc2xpZGVJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICBzbGlkZXNJblZpZXcudmFsdWUuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgfSk7XG5cbiAgICAgIGlzRmlyc3RTbGlkZS52YWx1ZSA9IHNsaWRlc0luVmlldy52YWx1ZS5pbmNsdWRlcygwKTtcbiAgICAgIGlzTGFzdFNsaWRlLnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmluY2x1ZGVzKHNsaWRlcy52YWx1ZS5sZW5ndGggLSAxKTtcblxuICAgICAgaWYgKHNsaWRlc0FkZGVkVG9WaWV3Lmxlbmd0aCA+IDApIGVtaXQoJ3NsaWRlc0FkZGVkVG9WaWV3Jywgc2xpZGVzQWRkZWRUb1ZpZXcpO1xuICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgc2xpZGVzLnZhbHVlLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoc2xpZGVPYnNlcnZlci52YWx1ZSkgc2xpZGVPYnNlcnZlci52YWx1ZS5vYnNlcnZlKGNoaWxkKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvYnNlcnZlU2xvdCA9ICgpID0+IHtcbiAgICBjb25zdCBvYnNlcnZlckNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICBzbGlkZXMudmFsdWUgPSBBcnJheS5mcm9tKGNvbnRhaW5lclJlZi52YWx1ZS5jaGlsZHJlbikgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgIG9ic2VydmVTbGlkZXMoKTtcbiAgICB9O1xuXG4gICAgc2xvdE9ic2VydmVyLnZhbHVlID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIob2JzZXJ2ZXJDYWxsYmFjayk7XG5cbiAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlKSBzbG90T2JzZXJ2ZXIudmFsdWUub2JzZXJ2ZShjb250YWluZXJSZWYudmFsdWUsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbFRvT2Zmc2V0ID0gKHRhcmdldDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IHRhcmdldCxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBzaG93TmV4dFBhZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlW3NsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggLSAxXSArIDE7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbbmV4dFNsaWRlXS5vZmZzZXRMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNQYWdlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmV2aW91c1NsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWVbMF0gLSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW3ByZXZpb3VzU2xpZGVdPy5vZmZzZXRMZWZ0IHx8IDApO1xuICB9O1xuXG4gIGNvbnN0IHNob3dOZXh0U2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA+IDEgPyBzbGlkZXNJblZpZXcudmFsdWVbMV0gOiBzbGlkZXNJblZpZXcudmFsdWVbMF0gKyAxO1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQoc2xpZGVzLnZhbHVlW25leHRTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd1ByZXZpb3VzU2xpZGUgPSAoKSA9PiB7XG4gICAgaWYgKHNsaWRlc0luVmlldy52YWx1ZS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IHByZXZpb3VzU2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVswXSAtIDE7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbcHJldmlvdXNTbGlkZV0ub2Zmc2V0TGVmdCk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlQ29udGFpbmVyQmxlZWQgPSAoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lclJlZi52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGlmIChwcm9wcy5ibGVlZCA9PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgIGlmIChpc0xhc3RTbGlkZS52YWx1ZSAmJiBzaG93QnV0dG9ucy52YWx1ZSkge1xuICAgICAgLy8gUHJldmVudCBncmFkaWVudCBmcm9tIGJsZWVkaW5nIG9mZiBsZWZ0IGVkZ2UgaW4gbGFzdCBwb3NpdGlvbi5cbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zdHlsZS5tYXJnaW4gPSBgLSR7cHJvcHMuYmxlZWR9cHggLSR7cHJvcHMuYmxlZWR9cHggLSR7cHJvcHMuYmxlZWR9cHggMGA7XG4gICAgICBjb250YWluZXJSZWYudmFsdWUuc3R5bGUucGFkZGluZyA9IGAke3Byb3BzLmJsZWVkfXB4ICR7cHJvcHMuYmxlZWR9cHggJHtwcm9wcy5ibGVlZH1weCAwYDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUHJldmVudCBncmFkaWVudCBmcm9tIGJsZWVkaW5nIG9mZiByaWdodCBlZGdlIGluIGZpcnN0IHBvc2l0aW9uLlxuICAgICAgY29udGFpbmVyUmVmLnZhbHVlLnN0eWxlLm1hcmdpbiA9IGAtJHtwcm9wcy5ibGVlZH1weCAwIC0ke3Byb3BzLmJsZWVkfXB4IC0ke3Byb3BzLmJsZWVkfXB4YDtcbiAgICAgIGNvbnRhaW5lclJlZi52YWx1ZS5zdHlsZS5wYWRkaW5nID0gYCR7cHJvcHMuYmxlZWR9cHggMCAke3Byb3BzLmJsZWVkfXB4ICR7cHJvcHMuYmxlZWR9cHhgO1xuICAgIH1cbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgIHNsaWRlcy52YWx1ZSA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIG9ic2VydmVTbG90KCk7XG4gICAgdXBkYXRlQ29udGFpbmVyQmxlZWQoKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHNsaWRlT2JzZXJ2ZXIudmFsdWU/LmRpc2Nvbm5lY3QoKTtcbiAgICBzbG90T2JzZXJ2ZXIudmFsdWU/LmRpc2Nvbm5lY3QoKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNhcm91c2VsJyxcbiAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5PTkUsXG4gICAgICBDU1MuV0lEVEguTUFYX0ZVTEwsXG4gICAgXVwiXG4gICAgcmVmPVwiY2Fyb3VzZWxSZWZcIlxuICA+XG4gICAgPHNlY3Rpb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBwcm9wcy50aXRsZSA/IENTUy5BWElTMS5CRVRXRUVOIDogQ1NTLkFYSVMxLkVORCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgICAgIHYtaWY9XCIoIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnMpIHx8IHByb3BzLnRpdGxlXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwicHJvcHMudGl0bGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSElURVNQQUNFX1dSQVAuT0ZGLCBpc0hlYWRsaW5lMSA/IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMSA6IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSElURVNQQUNFX1dSQVAuT0ZGLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5zdWJ0aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy5zdWJ0aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLk9ORV1cIlxuICAgICAgICB2LWlmPVwiIXByb3BzLmlzRmxvYXRpbmcgJiYgc2hvd0J1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlRFUlRJQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJpc1Njcm9sbEJ5UGFnZSA/IHNob3dQcmV2aW91c1BhZ2UoKSA6IHNob3dQcmV2aW91c1NsaWRlKClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzTGFzdFNsaWRlXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9SSUdIVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNsb3QgbmFtZT1cIm1pc2NcIiAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFXVwiPlxuICAgICAgPHVsXG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1jYXJvdXNlbC1jb250YWluZXInLFxuICAgICAgICAgIHByb3BzLmJsZWVkICYmICdibGVlZCcsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuR0FQLk9ORSxcbiAgICAgICAgICBDU1MuTElTVF9CVUxMRVRTLk9GRixcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gICAgICAgICAgQ1NTLlNDUk9MTEJBUi5PRkYsXG4gICAgICAgICAgQ1NTLlNOQVAuT04sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJjb250YWluZXJSZWZcIlxuICAgICAgICBAc2Nyb2xsPVwiaGFuZGxlU2Nyb2xsXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvdWw+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5JyxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgcHJvcHMuaXNIaWRlYXdheUJ1dHRvbnMgPyAnaGlkZWF3YXknIDogJycsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwiaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd1ByZXZpb3VzUGFnZSgpIDogc2hvd1ByZXZpb3VzU2xpZGUoKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcm91c2VsLWNvbnRhaW5lci5ibGVlZCB7XG4gICAgdHJhbnNpdGlvbjogbWFyZ2luIHZhcigtLXRpZGUtYW5pbWF0ZSksIHBhZGRpbmcgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWw6aG92ZXIgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuICAgIGhyZWY/OiBzdHJpbmc7XG4gICAgaXNOZXdUYWI/OiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlbGVtZW50OiBFTEVNRU5ULkxJTkssXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1hY3Rpb24nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgIENTUy5GT05ULlJPTEUuTElOS18yLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgQ1NTLlVOREVSTElORS5SRVNULk9GRixcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6aXM9XCJlbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvbiA6aWNvbj1cIklDT04uU0VBUkNIXCIgLz5cblxuICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNoaXAtYWN0aW9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzQWN0aXZlOiBib29sZWFuO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWZpbHRlcicsXG4gICAgICBwcm9wcy5pc0FjdGl2ZVxuICAgICAgICA/IFtDU1MuQkcuU0VDT05EQVJZLCBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXG4gICAgICAgIDogW0NTUy5CRy5TVVJGQUNFLlZBUklBTlQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgICBwcm9wcy5pc0FjdGl2ZSA/ICdhY3RpdmUnIDogJycsXG4gICAgXVwiXG4gID5cbiAgICA8c2xvdCAvPlxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRl1cIj5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltwcm9wcy5pc0FjdGl2ZSA/ICcnIDogJ2ljb24tc3BhY2luZycsIENTUy5GT05ULlJPTEUuTEFCRUxfMSwgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkZdXCI+XG4gICAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLyogQm9yZGVyIG11c3QgYWx3YXlzIGV4aXN0IHRvIHByZXZlbnQgcmVzaXplIG9uIGhvdmVyIHN0YXRlLCBidXQgbWF0Y2ggYmFja2dyb3VuZCBjb2xvciBvbiByZXN0IHN0YXRlIHRvIGJsZW5kIGluLiAqL1xuICAudGlkZS1jaGlwLWZpbHRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAudGlkZS1jaGlwLWZpbHRlci5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1maWx0ZXI6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1vbi1zdXJmYWNlKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWlucHV0JyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgIF1cIlxuICA+XG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG5cbiAgICA8VGlkZUljb24gOmljb249XCJJQ09OLkNMT1NFXCIgLz5cbiAgPC9idXR0b24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jaGlwLWlucHV0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtaW5wdXQ6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBoZWFkaW5nPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogJycsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0aWRlLWNvbHVtbnNcIj5cbiAgICA8aDIgOmNsYXNzPVwiW0NTUy5NQVJHSU4uQk9UVE9NLkhBTEZdXCI+XG4gICAgICB7eyBwcm9wcy5oZWFkaW5nIH19XG4gICAgPC9oMj5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguV1JBUCwgQ1NTLkdBUC5UV08sIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjFcIiAvPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjJcIiAvPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjNcIiAvPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIGNsYXNzPVwidGlkZS1jb2x1bW5zLWNvbHVtblwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VjdGlvbjRcIiAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgICAudGlkZS1jb2x1bW5zLWNvbHVtbiB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDJyZW0pIC8gMik7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDEyMzJweCkge1xuICAgIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gNnJlbSkgLyA0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgT0JKRUNUX0ZJVCA9IHtcbiAgQ09OVEFJTjogJ2NvbnRhaW4nLFxuICBDT1ZFUjogJ2NvdmVyJyxcbiAgU0NBTEVfRE9XTjogJ3NjYWxlLWRvd24nLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgT2JqZWN0Rml0ID0gKHR5cGVvZiBPQkpFQ1RfRklUKVtrZXlvZiB0eXBlb2YgT0JKRUNUX0ZJVF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBPQkpFQ1RfRklUIH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IE9iamVjdEZpdCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gJ0AvdHlwZXMvU291cmNlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGFsdD86IHN0cmluZztcbiAgICBoZWlnaHQ/OiBzdHJpbmc7XG4gICAgaXNMYXp5PzogYm9vbGVhbjtcbiAgICBvYmplY3RGaXQ/OiBPYmplY3RGaXQ7XG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuICAgIHNyYz86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIG9iamVjdEZpdDogT0JKRUNUX0ZJVC5DT1ZFUixcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBwaWN0dXJlID0gcmVmKCk7XG4gIGNvbnN0IGltZyA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9ICdodHRwczovL2Nkbi1zdGF0aWMudGlsYWJzLmlvL21hcmtldHBsYWNlL2NvbW1vbi9pbWFnZS1jb21pbmctc29vbi5zdmcnO1xuXG4gIGNvbnN0IG9iamVjdEZpdENsYXNzTmFtZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHN3aXRjaCAocHJvcHMub2JqZWN0Rml0KSB7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuQ09OVEFJTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09OVEFJTjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT1ZFUjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09WRVI7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuU0NBTEVfRE9XTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuU0NBTEVfRE9XTjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBPQkpFQ1RfRklULkNPVkVSO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tRGVmYXVsdCA9ICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U3JjID0gaW1nLnZhbHVlPy5jdXJyZW50U3JjO1xuICAgIGNvbnN0IHBpY3R1cmVTb3VyY2UgPSBwaWN0dXJlLnZhbHVlPy5xdWVyeVNlbGVjdG9yKGBzb3VyY2Vbc3Jjc2V0PVwiJHtjdXJyZW50U3JjfVwiXWApO1xuXG4gICAgaWYgKGN1cnJlbnRTcmMgJiYgcGljdHVyZVNvdXJjZSkge1xuICAgICAgcGljdHVyZVNvdXJjZS5zcmNzZXQgPSBpbWFnZURlZmF1bHQ7XG4gICAgfSBlbHNlIGlmIChpbWcudmFsdWUpIHtcbiAgICAgIGltZy52YWx1ZS5zcmMgPSBpbWFnZURlZmF1bHQ7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHBpY3R1cmVcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW1hZ2UnLCBDU1MuRElTUExBWS5CTE9DS11cIlxuICAgIHJlZj1cInBpY3R1cmVcIlxuICAgIDpzdHlsZT1cIlxuICAgICAgd2lkdGggfHwgaGVpZ2h0XG4gICAgICAgID8ge1xuICAgICAgICAgICAgd2lkdGg6IHdpZHRoIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgXCJcbiAgPlxuICAgIDxzb3VyY2VcbiAgICAgIDprZXk9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIDptZWRpYT1cImAobWluLXdpZHRoOiR7c291cmNlLm1lZGlhfXB4KWBcIlxuICAgICAgOnNyY3NldD1cInNvdXJjZS5zcmNzZXRcIlxuICAgICAgdi1mb3I9XCJzb3VyY2UgaW4gcHJvcHMuc291cmNlc1wiXG4gICAgLz5cblxuICAgIDxpbWdcbiAgICAgIDphbHQ9XCJhbHRcIlxuICAgICAgOmNsYXNzPVwiWyd0aWRlLWltYWdlLWltZycsIENTUy5XSURUSC5GVUxMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5PQkpFQ1QuQ0VOVEVSLCBvYmplY3RGaXRDbGFzc05hbWVdXCJcbiAgICAgIDpmZXRjaHByaW9yaXR5PVwiaXNMYXp5ID8gdW5kZWZpbmVkIDogJ2hpZ2gnXCJcbiAgICAgIDpsb2FkaW5nPVwicHJvcHMuaXNMYXp5ID8gJ2xhenknIDogJ2VhZ2VyJ1wiXG4gICAgICByZWY9XCJpbWdcIlxuICAgICAgOnNyYz1cInNyYyA/PyBpbWFnZURlZmF1bHRcIlxuICAgICAgQGVycm9yPVwic2V0SW1hZ2VGcm9tRGVmYXVsdFwiXG4gICAgLz5cbiAgPC9waWN0dXJlPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW1hZ2UtaW1nIHtcbiAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJbWFnZSBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSc7XG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIGlzTGF6eT86IGJvb2xlYW47XG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuICAgIHNyYz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWltYWdlLWJhY2tncm91bmQnLCBDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5PVkVSRkxPVy5YWS5ISURERU4sIENTUy5JU09MQVRJT04uSVNPTEFURV1cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSW1hZ2VcbiAgICAgICAgOmFsdD1cInByb3BzLmFsdFwiXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkhFSUdIVC5GVUxMXVwiXG4gICAgICAgIDppcy1sYXp5PVwicHJvcHMuaXNMYXp5XCJcbiAgICAgICAgOm9iamVjdC1maXQ9XCJPQkpFQ1RfRklULkNPVkVSXCJcbiAgICAgICAgOnNvdXJjZXM9XCJwcm9wcy5zb3VyY2VzXCJcbiAgICAgICAgOnNyYz1cInByb3BzLnNyY1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPHNsb3QgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICA6ZGVlcCgudGlkZS1pbWFnZSkge1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgbGFiZWw/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbmRpY2F0b3InLFxuICAgICAgcHJvcHMubGFiZWwgPyAnJyA6ICdkb3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLFxuICAgICAgQ1NTLkFMSUdOLlguQ0VOVEVSLFxuICAgICAgQ1NTLkJHLkdMT0JBTC5QUklNQVJZLkVSUk9SLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmxhYmVsICYmIHByb3BzLmxhYmVsLnRvU3RyaW5nKCkubGVuZ3RoID4gMSA/IFtDU1MuUEFERElORy5YLkhBTEZdIDogW10sXG4gICAgICBwcm9wcy5sYWJlbFxuICAgICAgICA/IFtDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5GT05ULlJPTEUuTEFCRUxfMywgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5JTlZFUlNFXVxuICAgICAgICA6IFtDU1MuQk9SREVSLkZVTEwuT05FXSxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1pbmRpY2F0b3ItbGFiZWwnXVwiXG4gICAgICB2LWlmPVwicHJvcHMubGFiZWxcIlxuICAgID5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5kaWNhdG9yOm5vdCguZG90KSB7XG4gICAgbWluLXdpZHRoOiAxcmVtO1xuICAgIG1pbi1oZWlnaHQ6IDFyZW07XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3IuZG90IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtZ3JheS0xMDApO1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTBweDtcbiAgfVxuXG4gIC50aWRlLWluZGljYXRvci1sYWJlbCB7XG4gICAgLyogVXNlIGJvdHRvbS13ZWlnaHRpbmcgdG8gb2Zmc2V0IHRoZSBtYXRoZW1hdGljYWwgY2VudGVyIHRvIHRoZSBvcHRpY2FsIGNlbnRlci4gKi9cbiAgICBtYXJnaW4tdG9wOiAtMXB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzRXJyb3I6IGJvb2xlYW47XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICB9O1xuICBkZWZpbmVQcm9wczxQcm9wcz4oKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMyxcbiAgICAgIGlzRXJyb3IgPyBbQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SXSA6IFtDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkVSUk9SXCJcbiAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaXNFcnJvclwiXG4gICAgLz5cblxuICAgIDxkaXY+XG4gICAgICB7eyBtZXNzYWdlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbiIsImltcG9ydCB7IGluamVjdCwgcHJvdmlkZSwgcmVmIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG50eXBlIFRpZGVGb3JtQ29udGV4dCA9IHtcbiAgZm9yY2VTaG93RXJyb3JzOiBSZWY8Ym9vbGVhbj47XG59O1xuXG5jb25zdCBGT1JNX0tFWSA9IFN5bWJvbCgndGlkZS1mb3JtJyk7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWRlRm9ybSA9ICgpID0+IHtcbiAgY29uc3QgZm9yY2VTaG93RXJyb3JzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcm92aWRlPFRpZGVGb3JtQ29udGV4dD4oRk9STV9LRVksIHsgZm9yY2VTaG93RXJyb3JzIH0pO1xuXG4gIGNvbnN0IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgPSAoKSA9PiB7XG4gICAgZm9yY2VTaG93RXJyb3JzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4geyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH07XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRm9ybUNvbnRleHQgPSAoKSA9PiB7XG4gIHJldHVybiBpbmplY3Q8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSk7XG59O1xuIiwiaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG5leHBvcnQgY29uc3QgZXJyb3JNZXNzYWdlRGVmYXVsdCA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB2YWx1ZSc7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUSU9OX1JFU1VMVCA9IHtcbiAgTk9fRVJST1I6IHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfSxcbiAgUkVRVUlSRUQ6IHtcbiAgICBtZXNzYWdlOiAnUGxlYXNlIGZpbGwgb3V0IHRoaXMgZmllbGQnLFxuICAgIHZhbGlkOiBmYWxzZSxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBjaGVja0Zvcm1hdCA9IChmb3JtYXQ6IFJlZ0V4cCwgbWVzc2FnZT86IHN0cmluZykgPT4ge1xuICByZXR1cm4gKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBsZXQgcmVzdWx0OiBWYWxpZGF0aW9uUmVzdWx0ID0gVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1I7XG5cbiAgICBpZiAoIXZhbHVlLnRyaW0oKS5tYXRjaChmb3JtYXQpKSB7XG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgPz8gZXJyb3JNZXNzYWdlRGVmYXVsdCxcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGVuZ3RoSXNWYWxpZCA9ICh7IG1heGxlbmd0aCwgbWlubGVuZ3RoLCByZXF1aXJlZCwgdmFsdWUgfTogVmFsaWRhdGlvbkxlbmd0aCkgPT4ge1xuICBjb25zdCBpc0VtcHR5QW5kVW5yZXF1aXJlZCA9IHZhbHVlLmxlbmd0aCA9PT0gMCAmJiAhcmVxdWlyZWQ7XG4gIGNvbnN0IGlzVG9vTG9uZyA9IG1heGxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhsZW5ndGg7XG4gIGNvbnN0IGlzVG9vU2hvcnQgPSAhaXNFbXB0eUFuZFVucmVxdWlyZWQgJiYgbWlubGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbmxlbmd0aDtcbiAgcmV0dXJuICFpc1Rvb1Nob3J0ICYmICFpc1Rvb0xvbmc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0ID0gKHtcbiAgZXJyb3JGcm9tUHJvcHMsXG4gIG1heGxlbmd0aCxcbiAgbWlubGVuZ3RoLFxuICByZXF1aXJlZCxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yRnJvbVByb3BzOiBzdHJpbmc7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZTogUmVmPHN0cmluZz47XG59KTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIC8vIGVycm9yIGluIHByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGF0aW9uIGVycm9yXG4gIGlmIChlcnJvckZyb21Qcm9wcyAhPT0gJycpXG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IGVycm9yRnJvbVByb3BzLFxuICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgIH07XG5cbiAgLy8gY3VzdG9tIHZhbGlkYXRvciBwcm9wIGVycm9ycyBmcm9tIGhhdmUgc2Vjb25kIGhpZ2hlc3QgcHJlY2VkZW5jZVxuICBpZiAodmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlLnZhbHVlLCB2YWxpZGF0b3JzKTtcblxuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gYWxsIG90aGVyIHByb3AtYmFzZWQgZXJyb3JzIGNvbWUgbGFzdFxuICBpZiAocmVxdWlyZWQgJiYgdmFsdWUudmFsdWUudHJpbSgpID09PSAnJykge1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfVxuXG4gIGlmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGFuZCAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFVzZSAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzIG9yIGZld2VyYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYEVudGVyIGF0IGxlYXN0ICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCB2YWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCA9ICgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBpZiAocHJvcHMuZXJyb3IgIT09ICcnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZTogcHJvcHMuZXJyb3IsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgaWYgKCFwcm9wcy5yZXF1aXJlZCB8fCBpc0NoZWNrZWQudmFsdWUpIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcbiAgICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuUkVRVUlSRUQ7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0KCk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIG1vZGVsVmFsdWUsXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKG1vZGVsVmFsdWUudmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LWNoZWNrYm94JywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSXVwiPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgICAgc2hvd0Vycm9yID8gQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SIDogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBkaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgaXNDaGVja2VkXG4gICAgICAgICAgICA/IFtzaG93RXJyb3IgPyBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IgOiBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXV1cbiAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgIHNob3dFcnJvclxuICAgICAgICAgICAgICAgICAgPyBbQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuRVJST1IsIENTUy5CRy5HTE9CQUwuU1VSRkFDRS5FUlJPUl1cbiAgICAgICAgICAgICAgICAgIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgICAgOmljb249XCJpbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5BWElTMS5CRVRXRUVOLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBmb3JtYXR0ZWRMYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwibnVtYmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICh7eyBmb3JtYXROdW1iZXIobnVtYmVyKSB9fSlcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgaXMtZXJyb3JcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gge1xuICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICBsYWJlbDpoYXMoaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dENoZWNrYm94LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmNoZWNrZWQgfHwgcHJvcHMuaW5kZXRlcm1pbmF0ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgIGRpc2FibGVkID8gWydkaXNhYmxlZCcsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdILCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICBpc0NoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cIlxuICAgICAgICA6aWNvbj1cInByb3BzLmluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaXNDaGVja2VkXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICB2LWlmPVwibGFiZWxcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3guZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gcHJvcHMudmFsdWUpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGxhYmVsXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgIHByb3BzLmRpc2FibGVkID8gW0NTUy5PUEFDSVRZLkRJU0FCTEVELCBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXSA6IFtDU1MuQ1VSU09SLlBPSU5URVJdLFxuICAgIF1cIlxuICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNjcmVlbi1yZWFkZXItb25seSddXCJcbiAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICA6dmFsdWU9XCJ2YWx1ZVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgaXNDaGVja2VkICYmIENTUy5CRy5TRUNPTkRBUlldXCIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkdST1cuT04sIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIj5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2xhYmVsPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG5cbiAgbGFiZWw6aGFzKGlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRSYWRpby52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGNoZWNrZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBjaGVja2VkID0gcmVmKHByb3BzLmNoZWNrZWQpO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmNoZWNrZWQsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gY2hlY2tlZC52YWx1ZSkge1xuICAgICAgICBjaGVja2VkLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXJhZGlvJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgIHByb3BzLmRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgXVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjaGVja2VkPVwiY2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICBuYW1lPVwiXCJcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICB2YWx1ZT1cIlwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8tY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBjaGVja2VkID8gQ1NTLkJPUkRFUi5DT0xPUi5ISUdIIDogQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgICAgY2hlY2tlZCAmJiAnY2hlY2tlZCcsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIHByb3BzLmNoZWNrZWQgJiYgQ1NTLkJHLlNFQ09OREFSWV1cIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGhvbmUsIGZvcm1hdFByaWNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgRm9ybWF0dGVkID0ge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBGT1JNQVQgPSB7XG4gIE5VTUJFUjogZm9ybWF0TnVtYmVyLFxuICBQSE9ORTogZm9ybWF0UGhvbmUsXG4gIFBSSUNFOiBmb3JtYXRQcmljZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBGT1JNQVRfUkVHRVggPSB7XG4gIGFscGhhOiAvXlthLXpBLVpdKyQvZyxcbiAgYWxwaGFOdW1iZXJPckVtcHR5OiAvXiR8XlthLXowLTldKyQvaSxcbiAgYWxwaGFTcGFjZTogL15bYS16QS1aIF0rJC9nLFxuICBlbWFpbDpcbiAgICAvXigoW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcXSl8KChbYS16QS1aXFwtMC05XStcXC4pK1thLXpBLVpdezIsfSkpJC8sXG4gIG51bWJlckZvcm1hdHRlZDogL14kfCg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICBwaG9uZTogL14oPzpcXGR7M30tXFxkezN9LVxcZHs0fXxcXGR7MX0tXFxkezN9LVxcZHszfS1cXGR7NH0pPyQvLFxuICBwcmljZTogLyg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxufTtcbiIsImltcG9ydCB7IEZPUk1BVF9SRUdFWCB9IGZyb20gJ0AvdHlwZXMvRm9ybWF0dGVkJztcbmltcG9ydCB7IGNoZWNrRm9ybWF0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbmV4cG9ydCBjb25zdCBWQUxJREFUT1IgPSB7XG4gIEFMUEhBX05VTUJFUl9FTVBUWTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLmFscGhhTnVtYmVyT3JFbXB0eSksXG4gIEFMUEhBX1NQQUNFOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFTcGFjZSksXG4gIEVNQUlMOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguZW1haWwsICdFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MgKGUuZy4gbmFtZUBleGFtcGxlLmNvbSknKSxcbiAgTlVNQkVSOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVgubnVtYmVyRm9ybWF0dGVkLCAnRW50ZXIgYSB2YWxpZCBudW1iZXInKSxcbiAgUEhPTkU6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5waG9uZSwgJ0VudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyJyksXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3IgPSBzdHJpbmcgfCBib29sZWFuO1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YWxpZDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25MZW5ndGggPSB7XG4gIG1heGxlbmd0aD86IG51bWJlcjtcbiAgbWlubGVuZ3RoPzogbnVtYmVyO1xuICByZXF1aXJlZDogYm9vbGVhbjtcbiAgdmFsdWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9ICh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0O1xuXG5leHBvcnQgY29uc3QgRVJST1JfRElTUExBWSA9IHtcbiAgRUFHRVI6ICdlYWdlcicsXG4gIExBWlk6ICdsYXp5Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVycm9yRGlzcGxheSA9ICh0eXBlb2YgRVJST1JfRElTUExBWSlba2V5b2YgdHlwZW9mIEVSUk9SX0RJU1BMQVldO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgdXNlSWQsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG9wdGdyb3Vwcz86IChTZWxlY3RPcHRpb24gfCBTZWxlY3RPcHRpb25Hcm91cClbXSB8IHJlYWRvbmx5IChTZWxlY3RPcHRpb24gfCBTZWxlY3RPcHRpb25Hcm91cClbXTtcbiAgICBvcHRpb25zPzogU2VsZWN0T3B0aW9uW10gfCByZWFkb25seSBTZWxlY3RPcHRpb25bXTtcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBvcHRncm91cHM6IHVuZGVmaW5lZCxcbiAgICBvcHRpb25zOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlucHV0SWQgPSB1c2VJZCgpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzZWxlY3RFbGVtZW50ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGV4cGFuZE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgnbW91c2Vkb3duJyk7XG4gICAgc2VsZWN0RWxlbWVudD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgc2hvd0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LWJvcmRlcicsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiAnJyxcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiZXhwYW5kT3B0aW9uc1wiXG4gICAgPlxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTklORy5MRUZULFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5UT1AuSEFMRixcbiAgICAgICAgICAgIENTUy5NQVJHSU4uTEVGVC5PTkUsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgcmVmPVwic2VsZWN0RWxlbWVudFwiXG4gICAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gcHJvcHMub3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwibW9kZWxWYWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWVcIlxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikubGFiZWwgfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgOnNlbGVjdGVkPVwibW9kZWxWYWx1ZSA9PT0gb3B0aW9uLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA6dmFsdWU9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLlBPU0lUSU9OLkFCU09MVVRFLCBDU1MuUE9TSVRJT05JTkcuUklHSFQsIENTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FWFBBTkRfTU9SRVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0XG4gICAgICA6aXMtZXJyb3I9XCJzaG93RXJyb3JcIlxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICBzZWxlY3Qge1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cblxuICBsYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgbGFiZWw6bm90KC5taW5pbGFiZWwpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3IgLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3Q6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHByaWNlVG9OdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5pbXBvcnQgdHlwZSB7IFN0cmluZ0lucHV0IH0gZnJvbSAnQC90eXBlcy9Gb3JtRGVwcmVjYXRlZCc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG50eXBlIFJhbmdlRGF0YSA9IHtcbiAgbWluOiBudW1iZXIgfCBudWxsO1xuICBtYXg6IG51bWJlciB8IG51bGw7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlLic7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IG5vRXJyb3IgPSB7XG4gIG1lc3NhZ2U6ICcnLFxuICB2YWxpZDogdHJ1ZSxcbn0gYXMgUmVhZG9ubHk8VmFsaWRhdGlvblJlc3VsdD47XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKHR5cGVvZiBlcnJvckZyb21Qcm9wcyA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUHJvcHMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9yRnJvbVByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgZXJyb3JGcm9tUmVmID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21SZWYubGVuZ3RoID4gMCA/IGVycm9yRnJvbVJlZiA6IGVycm9yTWVzc2FnZURlZmF1bHQ7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZEhhc0Vycm9yID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PlxuICBlcnJvckZyb21Qcm9wcyAhPT0gZmFsc2UgfHwgZXJyb3JGcm9tUmVmICE9PSBmYWxzZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0TWF4UmFuZ2VJc1ZhbGlkID0gKHsgbWluIH06IFBpY2s8UmFuZ2VEYXRhLCAnbWluJz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNYXg6IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01heCA9ICFpc05hTihuZXdNYXgpID8gbmV3TWF4IDogbnVsbDtcbiAgICBpZiAobWluICYmIG5ld01heCkge1xuICAgICAgaWYgKG5ld01heCA+PSBtaW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNaW5SYW5nZUlzVmFsaWQgPSAoeyBtYXggfTogUGljazxSYW5nZURhdGEsICdtYXgnPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01pbjogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWluID0gIWlzTmFOKG5ld01pbikgPyBuZXdNaW4gOiBudWxsO1xuICAgIGlmIChtYXggJiYgbmV3TWluKSB7XG4gICAgICBpZiAobmV3TWluIDw9IG1heCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBsZXNzIHRoYW4gbWF4YCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlRmllbGRWYWxpZGF0aW9uID0gKHtcbiAgZXJyb3IsXG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yOiBSZWY8VmFsaWRhdGlvbkVycm9yPjtcbiAgZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvcjtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZT86IFJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlPy52YWx1ZSB8fCAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlPy52YWx1ZSB8fCAnJyxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RoVmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSBsZW5ndGhWYWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0Zyb21SZWZzKGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBSZWY8U3RyaW5nSW5wdXQgfCBudWxsPiB9KSB7XG4gIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkc1trZXldLnZhbHVlPy5yZXF1aXJlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XS52YWx1ZT8udmFsdWU7XG4gICAgICB2YWxpZCA9IHZhbGlkICYmICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpZWxkc1trZXldLnZhbHVlPy5lcnJvcjtcbiAgICB2YWxpZCA9IHZhbGlkICYmICFlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoe1xuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsdWUsXG59OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFNlbGVjdC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0RmllbGQgfSBmcm9tICdAL3R5cGVzL0ZpZWxkRGVwcmVjYXRlZCc7XG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcblxuICBleHBvcnQgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gcHJvcHMub3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LWJvcmRlciB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1zZWxlY3QuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIG9wdGlvbiB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cblxuICBzZWxlY3Qge1xuICAgIHBhZGRpbmctdG9wOiAyN3B4O1xuICB9XG48L3N0eWxlPlxuIiwiZXhwb3J0IGNvbnN0IFRFWFRfSU5QVVRfVFlQRSA9IHtcbiAgREFURTogJ2RhdGUnLFxuICBEQVRFVElNRV9MT0NBTDogJ2RhdGV0aW1lLWxvY2FsJyxcbiAgRU1BSUw6ICdlbWFpbCcsXG4gIE1PTlRIOiAnbW9udGgnLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBQQVNTV09SRDogJ3Bhc3N3b3JkJyxcbiAgU0VBUkNIOiAnc2VhcmNoJyxcbiAgVEVMOiAndGVsJyxcbiAgVEVYVDogJ3RleHQnLFxuICBUSU1FOiAndGltZScsXG4gIFVSTDogJ3VybCcsXG4gIFdFRUs6ICd3ZWVrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRleHRJbnB1dFR5cGUgPSAodHlwZW9mIFRFWFRfSU5QVVRfVFlQRSlba2V5b2YgdHlwZW9mIFRFWFRfSU5QVVRfVFlQRV07XG5cbmV4cG9ydCBjb25zdCBJTlBVVF9NT0RFID0ge1xuICBERUNJTUFMOiAnZGVjaW1hbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBOVU1FUklDOiAnbnVtZXJpYycsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVVJMOiAndXJsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIElucHV0TW9kZSA9ICh0eXBlb2YgSU5QVVRfTU9ERSlba2V5b2YgdHlwZW9mIElOUFVUX01PREVdO1xuIiwiaW1wb3J0IHsgSU5QVVRfTU9ERSwgVEVYVF9JTlBVVF9UWVBFIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuXG5pbXBvcnQgdHlwZSB7IElucHV0TW9kZSwgVGV4dElucHV0VHlwZSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuZXhwb3J0IGNvbnN0IGdldFRleHRJbnB1dE1vZGUgPSAodHlwZTogVGV4dElucHV0VHlwZSwgaW5wdXRtb2RlPzogSW5wdXRNb2RlKTogSW5wdXRNb2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKGlucHV0bW9kZSkgcmV0dXJuIGlucHV0bW9kZTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5URUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5URUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuU0VBUkNIOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuU0VBUkNIO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLk5VTUJFUjpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLk5VTUVSSUM7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuRU1BSUw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5FTUFJTDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5VUkw6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5VUkw7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsIjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBnZXRUZXh0SW5wdXRNb2RlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybXMnO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgSW5wdXRNb2RlLCBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGVycm9yPzogc3RyaW5nO1xuICAgIGVycm9yRGlzcGxheT86IEVycm9yRGlzcGxheTtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgaW5wdXRtb2RlPzogSW5wdXRNb2RlO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlcjtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuICAgIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGF1dG9jb21wbGV0ZTogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVycm9yOiAnJyxcbiAgICBlcnJvckRpc3BsYXk6IEVSUk9SX0RJU1BMQVkuTEFaWSxcbiAgICBoYXNDbGVhcjogZmFsc2UsXG4gICAgaWNvbkxlYWRpbmc6IHVuZGVmaW5lZCxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgaW5wdXRtb2RlOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdHJhbnNmb3JtVmFsdWU6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiBURVhUX0lOUFVUX1RZUEUuVEVYVCxcbiAgICB2YWxpZGF0b3JzOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGVsVmFsdWUgPSBkZWZpbmVNb2RlbDxzdHJpbmc+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgZm9ybUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpO1xuXG4gIGNvbnN0IGVycm9yUmVmID0gcmVmPFZhbGlkYXRpb25SZXN1bHQ+KFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBpbnB1dEVsZW1lbnQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpbnB1dE1vZGVBdHRyaWJ1dGUgPSBjb21wdXRlZDxJbnB1dE1vZGUgfCB1bmRlZmluZWQ+KCgpID0+IGdldFRleHRJbnB1dE1vZGUocHJvcHMudHlwZSwgcHJvcHMuaW5wdXRtb2RlKSk7XG4gIGNvbnN0IGlucHV0VHlwZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgcHJvcHMudHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEICYmIHNob3dQYXNzd29yZC52YWx1ZSA9PT0gdHJ1ZSA/IFRFWFRfSU5QVVRfVFlQRS5URVhUIDogcHJvcHMudHlwZVxuICApO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzaG91bGRTaG93Q2xlYXJCdXR0b24gPSBjb21wdXRlZChcbiAgICAoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiBtb2RlbFZhbHVlLnZhbHVlICYmIHByb3BzLnR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFxuICApO1xuICBjb25zdCBzaG91bGRTaG93UGFzc3dvcmRCdXR0b24gPSBjb21wdXRlZCgoKSA9PiBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICBtb2RlbFZhbHVlLnZhbHVlID0gJyc7XG4gICAgaW5wdXRFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpZWxkQ2xpY2sgPSAoKSA9PiB7XG4gICAgaW5wdXRFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IHByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWhhc0ZvY3VzLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGUudGFyZ2V0ICE9PSBpbnB1dEVsZW1lbnQudmFsdWUpIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgW21vZGVsVmFsdWUsICgpID0+IHByb3BzLnRyYW5zZm9ybVZhbHVlXSxcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoIXByb3BzLnRyYW5zZm9ybVZhbHVlKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGRpZ2l0cyA9IG1vZGVsVmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcbiAgICAgIG1vZGVsVmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHQtZmllbGQnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBzaG91bGRTaG93Q2xlYXJCdXR0b24gPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVGaWVsZENsaWNrXCJcbiAgICAgIEBtb3VzZWRvd249XCJwcmV2ZW50SW5wdXRGb2N1c0xvc3NPbk1vdXNlZG93blwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgOmljb249XCJpY29uTGVhZGluZ1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJpY29uTGVhZGluZ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVIsIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1wcmVmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF1cIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgOmlucHV0bW9kZT1cImlucHV0TW9kZUF0dHJpYnV0ZVwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0RWxlbWVudFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHYtaWY9XCJzaG91bGRTaG93Q2xlYXJCdXR0b25cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdi1pZj1cInNob3VsZFNob3dQYXNzd29yZEJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5WSVNJQklMSVRZXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1sYWJlbDpub3QoLm1pbmlsYWJlbCksXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4Om5vdCgub2Zmc2V0KSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXg6bm90KC5vZmZzZXQpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCBjYWxjKDkgLyAxNiAqIDFyZW0pKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtcHJlZml4LFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQ6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNob3dQYXNzd29yZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHByb3BzLmxhYmVsID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzQ2xlYXIgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5oYXNDbGVhciAmJiB2YWx1ZS52YWx1ZSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcblxuICBjb25zdCBoYW5kbGVDbGVhciA9ICgpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIGlucHV0LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBoYW5kbGVWYWxpZGF0aW9uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXQgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLnRyYW5zZm9ybVZhbHVlKSB7XG4gICAgICBjb25zdCBkaWdpdHMgPSB2YWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuXG4gICAgICB2YWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVZhbHVlID0gKG5ld1ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHVwZGF0ZVZhbHVlLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC10ZXh0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIGhhc0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1maWVsZCcsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBoYXNDbGVhciA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIGRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6IENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIDppY29uPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtcHJlZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcmVmaXggfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LWxhYmVsJyxcbiAgICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsIENTUy5GT05ULlJPTEUuQk9EWV8xXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJoYW5kbGVWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIEBpbnB1dD1cImhhbmRsZUlucHV0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1zdWZmaXgnLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdi1pZj1cImhhc0NsZWFyICYmIHR5cGUgIT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRFwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkZVTEwuSEFMRl1cIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cInNob3dQYXNzd29yZCA9ICFzaG93UGFzc3dvcmRcIlxuICAgICAgICB2LWlmPVwidHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1mb3JlZ3JvdW5kKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSW5wdXRTdXBwb3J0aW5nVGV4dC52dWUnO1xuICBpbXBvcnQgeyB1c2VGb3JtQ29udGV4dCB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBtYXhsZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHJvd3M/OiBudW1iZXI7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZXZlbnQ6ICd2YWxpZCcsIGlzVmFsaWQ6IGJvb2xlYW4pOiB2b2lkO1xuICB9O1xuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlzVmFsaWRhdGluZyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHRleHRhcmVhRWxlbWVudCA9IHJlZjxIVE1MVGV4dEFyZWFFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkVBR0VSKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5MQVpZKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpZWxkQ2xpY2sgPSAoKSA9PiB7XG4gICAgdGV4dGFyZWFFbGVtZW50LnZhbHVlPy5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IHByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIWhhc0ZvY3VzLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGUudGFyZ2V0ICE9PSB0ZXh0YXJlYUVsZW1lbnQudmFsdWUpIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZTogbW9kZWxWYWx1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIHNob3dFcnJvciAmJiAnZXJyb3InXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQnLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLlBBRERJTkcuTEVGVC5PTkUsXG4gICAgICAgIENTUy5QQURESU5HLlRPUC5IQUxGLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUZpZWxkQ2xpY2tcIlxuICAgICAgQG1vdXNlZG93bj1cInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCcsXG4gICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cInRleHRhcmVhRWxlbWVudFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJyb3dzXCJcbiAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICB2LW1vZGVsPVwibW9kZWxWYWx1ZVwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0YXJlYS52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IsIGhhbmRsZUZpZWxkVmFsaWRhdGlvbiB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24tZGVwcmVjYXRlZCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGVycm9yPzogVmFsaWRhdGlvbkVycm9yO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgICByb3dzPzogbnVtYmVyO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgcm93czogOCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yID0gcmVmKHByb3BzLmVycm9yKTtcbiAgY29uc3QgaGFzRm9jdXMgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpbnB1dCA9IHJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHZhbHVlID0gcmVmKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiBnZXRFcnJvck1lc3NhZ2UocHJvcHMuZXJyb3IsIGVycm9yLnZhbHVlKSk7XG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaGFzRXJyb3IgPSBjb21wdXRlZChcbiAgICAoKSA9PiAocHJvcHMucmVxdWlyZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUudmFsdWUpIHx8IGdldEZpZWxkSGFzRXJyb3IoZXJyb3IudmFsdWUsIHByb3BzLmVycm9yKVxuICApO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB2YWx1ZS52YWx1ZSA9PT0gJycgfHwgdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzT3V0ID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIXZhbHVlLnZhbHVlKSB7XG4gICAgICB2YWx1ZS52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVWYWxpZGF0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiBoYW5kbGVGaWVsZFZhbGlkYXRpb24oe1xuICAgICAgZXJyb3IsXG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMudmFsdWUsXG4gICAgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdWYWx1ZSAhPT0gdmFsdWUudmFsdWUpIHtcbiAgICAgICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgZGVmaW5lRXhwb3NlKHtcbiAgICBlcnJvcixcbiAgICByZXF1aXJlZDogcHJvcHMucmVxdWlyZWQsXG4gICAgdmFsdWUsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgaGFzRXJyb3IgJiYgJ2Vycm9yJ11cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkJyxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhaGFzRXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7eyBmb3JtYXR0ZWRMYWJlbCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0ssIENTUy5XSURUSC5GVUxMLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgQGZvY3Vzb3V0PVwiaGFuZGxlRm9jdXNPdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdi1tb2RlbD1cInZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuR0FQLlFVQVJURVJdXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dCB8fCBoYXNFcnJvclwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1zdXJmYWNlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWE6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtZm9yZWdyb3VuZCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG4gICAgaHJlZj86IHN0cmluZztcbiAgICBpY29uTGVhZGluZz86IEljb247XG4gICAgaWNvblRyYWlsaW5nPzogSWNvbjtcbiAgICBpc05ld1RhYj86IGJvb2xlYW47XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBzdWJ0bGU/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHN1YnRsZTogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWxpbmsnLFxuICAgICAgQ1NTLkRJU1BMQVkuSU5MSU5FLFxuICAgICAgQ1NTLkFMSUdOLlguTEVGVCxcbiAgICAgIHN1YnRsZSA/IFtDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLCBDU1MuVU5ERVJMSU5FLkhPVkVSLk9OXSA6IFtDU1MuVU5ERVJMSU5FLlJFU1QuT04sIENTUy5VTkRFUkxJTkUuSE9WRVIuT0ZGXSxcbiAgICBdXCJcbiAgICA6aHJlZj1cInByb3BzLmhyZWZcIlxuICAgIDp0YXJnZXQ9XCJwcm9wcy5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICA6aXM9XCJwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBFTEVNRU5ULkxJTksgOiBFTEVNRU5ULkJVVFRPTlwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5BTElHTi5ZLk1JRERMRSwgQ1NTLk1BUkdJTi5SSUdIVC5RVUFSVEVSXVwiXG4gICAgICA6aWNvbj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuQUxJR04uWS5NSURETEVdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkFMSUdOLlkuTUlERExFLCBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiLyogZXNsaW50LWRpc2FibGUgdnVlL3NvcnQta2V5cyAqL1xuXG5leHBvcnQgY29uc3QgQlJFQUtQT0lOVCA9IHtcbiAgU006ICdzbScsXG4gIE1EOiAnbWQnLFxuICBMRzogJ2xnJyxcbiAgWEw6ICd4bCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTUVESUEgPSB7XG4gIFNNOiA3NjgsXG4gIE1EOiA5OTIsXG4gIExHOiAxMjMyLFxuICBYTDogMTkyMCxcbn07XG5cbmV4cG9ydCB0eXBlIEJyZWFrcG9pbnQgPSAodHlwZW9mIEJSRUFLUE9JTlQpW2tleW9mIHR5cGVvZiBCUkVBS1BPSU5UXTtcbmV4cG9ydCB0eXBlIE1lZGlhID0gKHR5cGVvZiBNRURJQSlba2V5b2YgdHlwZW9mIE1FRElBXTtcbiIsImltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBEaXJlY3RseSBtb2RpZmllcyB0aGUgYDxib2R5PmAgZWxlbWVudCB0byBhcHBseSBvciByZW1vdmUgc2Nyb2xsIGxvY2suXG4gKiBXaGVuIGBmYWxzZWAgaXMgcHJvdmlkZWQsIGl0IG9ubHkgdW5sb2NrcyBzY3JvbGwgaWYgdGhlcmUgYXJlIG5vIG9wZW5cbiAqIEhUTUwgZGlhbG9nIGVsZW1lbnRzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0U2Nyb2xsTG9jayA9IGFzeW5jIChpc0xvY2tlZDogYm9vbGVhbikgPT4ge1xuICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAvLyBjb25zdCBCT0RZX0xPQ0tfQ0xBU1MgPSAnYm9keS1zY3JvbGwtbG9jayc7XG5cbiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG5cbiAgaWYgKGlzTG9ja2VkKSB7XG4gICAgaWYgKCFib2R5LmRhdGFzZXQuc2Nyb2xsTG9ja1kpIHtcbiAgICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWTtcblxuICAgICAgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZID0gc2Nyb2xsWS50b1N0cmluZygpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScsIGAke3Njcm9sbFl9cHhgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ2luc2V0JywgJzAnKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi10b3AnLCBgY2FsYygwcHggLSB2YXIoLS1zYXZlZC1zY3JvbGwteSwgMHB4KSlgKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93LXknLCAnc2Nyb2xsJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsICdmaXhlZCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QuYWRkKEJPRFlfTE9DS19DTEFTUyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2dbb3Blbl0nKSkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxZID0gcGFyc2VJbnQoYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZIHx8ICcwJyk7XG5cbiAgICAgIC8vIENhbm5vdCBiZSBhcHBsaWVkIHRvIGJvZHkgdGFnIGluIG1hcmtldHBsYWNlIHJlcG8gZHVlIHRvIGRhdGEtY3NzLXNjb3BlXG4gICAgICAvLyBib2R5LmNsYXNzTGlzdC5yZW1vdmUoQk9EWV9MT0NLX0NMQVNTKTtcblxuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnaW5zZXQnKTtcbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ21hcmdpblRvcCcpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnb3ZlcmZsb3dZJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdwb3NpdGlvbicpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScpO1xuXG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ2F1dG8nLFxuICAgICAgICB0b3A6IHNhdmVkU2Nyb2xsWSxcbiAgICAgIH0pO1xuXG4gICAgICBkZWxldGUgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFRPUF9MQVlFUl9JRCA9ICd0aWRlLXRvcC1sYXllcic7XG5cbmV4cG9ydCBjb25zdCBpbml0RmF1eFRvcExheWVyID0gKCkgPT4ge1xuICBsZXQgdG9wTGF5ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChUT1BfTEFZRVJfSUQpO1xuICBpZiAoIXRvcExheWVyKSB7XG4gICAgdG9wTGF5ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0b3BMYXllci5pZCA9IFRPUF9MQVlFUl9JRDtcbiAgICB0b3BMYXllci5zZXRBdHRyaWJ1dGUoJ2RhdGEtY3NzLXNjb3BlJywgJycpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9wTGF5ZXIpO1xuICB9XG4gIHRvcExheWVyLnN0eWxlLmlzb2xhdGlvbiA9ICdpc29sYXRlJztcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBuZXh0VGljaywgb25Nb3VudGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUJ1dHRvbkljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJSRUFLUE9JTlQgfSBmcm9tICdAL3R5cGVzL0JyZWFrcG9pbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNtaXNzaWJsZT86IGJvb2xlYW47XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgICBpc0Rpc21pc3NpYmxlOiB0cnVlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2Nsb3NlJyk6IHZvaWQ7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGFsQ29udGVudDogUmVmPEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuICBjb25zdCBtb2RhbERpYWxvZzogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgfTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UgPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LmNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQ29udGVudFRvVG9wID0gKCkgPT4ge1xuICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgIGlmICghbW9kYWxDb250ZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBtb2RhbENvbnRlbnQudmFsdWUuc2Nyb2xsVG9wID0gMDtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBlbWl0KCdjbG9zZScpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVzY2FwZUtleWRvd24gPSAoZTogRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaXNPcGVuLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKCFtb2RhbERpYWxvZy52YWx1ZSkgcmV0dXJuO1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICAgIHNjcm9sbENvbnRlbnRUb1RvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgICB9XG4gICAgICBzZXRTY3JvbGxMb2NrKG5ld1ZhbHVlKTtcbiAgICB9XG4gICk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNPcGVuKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGlhbG9nXG4gICAgOmNsYXNzPVwiWyd0aWRlLW1vZGFsJywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICByZWY9XCJtb2RhbERpYWxvZ1wiXG4gICAgOnN0eWxlPVwieyAnLS1tb2RhbC13aWR0aCc6IHByb3BzLndpZHRoIH1cIlxuICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgQGNsb3NlLnByZXZlbnRcbiAgICBAa2V5ZG93bi5lc2NhcGU9XCJoYW5kbGVFc2NhcGVLZXlkb3duXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtbW9kYWwtYm9keScsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLk9ORSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NLFxuICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICAgICAgQ1NTLndpdGhCcmVha3BvaW50KFtDU1MuU0hBRE9XLkJPVFRPTV0sIEJSRUFLUE9JTlQuU00pLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPGhlYWRlclxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtaGVhZGVyJyxcbiAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgIENTUy5CT1JERVIuQk9UVE9NLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5PTkUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2JhY2snKVwiXG4gICAgICAgICAgdGl0bGU9XCJCYWNrXCJcbiAgICAgICAgICB2LWlmPVwiaXNCYWNrQnV0dG9uXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtdGV4dD1cInRpdGxlXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdjbG9zZScpXCJcbiAgICAgICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtbW9kYWwtY29udGVudCcsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgQ1NTLlBBRERJTkcuWS5UV08sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJtb2RhbENvbnRlbnRcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxmb290ZXJcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWZvb3RlcicsXG4gICAgICAgICAgQ1NTLkFYSVMxLkVORCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5HQVAuVFdPLFxuICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICBDU1MuU0hBRE9XLlRPUCxcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiIC8+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaWFsb2c+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1tb2RhbCB7XG4gICAgLS1tb2RhbC1wYWRkaW5nLXg6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsW29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gIH1cbiAgLnRpZGUtbW9kYWw6OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdGlkZS1hbmltYXRlKSBhbGxvdy1kaXNjcmV0ZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cbiAgQHN0YXJ0aW5nLXN0eWxlIHtcbiAgICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gICAgfVxuICB9XG4gIC50aWRlLW1vZGFsLWJvZHkge1xuICAgIHdpZHRoOiB2YXIoLS1tb2RhbC13aWR0aCwgNTc2cHgpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSk7XG4gIH1cblxuICAudGlkZS1tb2RhbC1oZWFkZXIsXG4gIC50aWRlLW1vZGFsLWZvb3RlciB7XG4gICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgLnRpZGUtbW9kYWwtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpIDFmciB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIDp3aGVyZSgudGlkZS1tb2RhbC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICB9XG4gIH1cbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLnRpZGUtbW9kYWwge1xuICAgICAgLS1tb2RhbC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0yKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWwtYm9keSB7XG4gICAgICBtYXgtaGVpZ2h0OiA4NSU7XG4gICAgICBib3R0b206IGluaXRpYWw7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvblBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBwYWdlQ3VycmVudD86IG51bWJlcjtcbiAgICBwYWdlVG90YWw/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBwYWdlQ3VycmVudDogMSxcbiAgICBwYWdlVG90YWw6IDEsXG4gIH0pO1xuXG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbJ2NoYW5nZSddKTtcblxuICBjb25zdCBwYWdlQ3VycmVudCA9IHJlZihwcm9wcy5wYWdlQ3VycmVudCk7XG5cbiAgY29uc3QgcGFnaW5hdGlvbkJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiBuZXcgQXJyYXkocHJvcHMucGFnZVRvdGFsKS5maWxsKCcnKS5tYXAoKGVtcHR5LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIHBhZ2VDdXJyZW50LnZhbHVlID0gaW5kZXg7XG5cbiAgICBlbWl0KCdjaGFuZ2UnLCBldmVudCwgaW5kZXgpO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbJ3RpZGUtcGFnaW5hdGlvbicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCJcbiAgPlxuICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgOmRpc2FibGVkPVwicGFnZUN1cnJlbnQgPT09IDFcIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUNsaWNrKHBhZ2VDdXJyZW50IC0gMSlcIlxuICAgIC8+XG5cbiAgICA8dWwgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmtleT1cInBhZ2luYXRpb25CdXR0b25cIlxuICAgICAgICB2LWZvcj1cInBhZ2luYXRpb25CdXR0b24gaW4gcGFnaW5hdGlvbkJ1dHRvbnNcIlxuICAgICAgPlxuICAgICAgICA8VGlkZUJ1dHRvblBhZ2luYXRpb25cbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOmxhYmVsPVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJwYWdlQ3VycmVudCA9PT0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVDbGljayhwYWdlQ3VycmVudCArIDEpXCJcbiAgICAvPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUubWFpbkF4aXMgfHwgMCxcbiAgICBjcm9zc0F4aXM6IHJhd1ZhbHVlLmNyb3NzQXhpcyB8fCAwLFxuICAgIGFsaWdubWVudEF4aXM6IHJhd1ZhbHVlLmFsaWdubWVudEF4aXNcbiAgfTtcbiAgaWYgKGFsaWdubWVudCAmJiB0eXBlb2YgYWxpZ25tZW50QXhpcyA9PT0gJ251bWJlcicpIHtcbiAgICBjcm9zc0F4aXMgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gYWxpZ25tZW50QXhpcyAqIC0xIDogYWxpZ25tZW50QXhpcztcbiAgfVxuICByZXR1cm4gaXNWZXJ0aWNhbCA/IHtcbiAgICB4OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aSxcbiAgICB5OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGlcbiAgfSA6IHtcbiAgICB4OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGksXG4gICAgeTogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGlcbiAgfTtcbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29mZnNldCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJGFycm93O1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCBkaWZmQ29vcmRzID0gYXdhaXQgY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpO1xuXG4gICAgICAvLyBJZiB0aGUgcGxhY2VtZW50IGlzIHRoZSBzYW1lIGFuZCB0aGUgYXJyb3cgY2F1c2VkIGFuIGFsaWdubWVudCBvZmZzZXRcbiAgICAgIC8vIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uaW5nIGNvb3JkaW5hdGVzLlxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UucGxhY2VtZW50KSAmJiAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGlmZkNvb3Jkcy54LFxuICAgICAgICB5OiB5ICsgZGlmZkNvb3Jkcy55LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uZGlmZkNvb3JkcyxcbiAgICAgICAgICBwbGFjZW1lbnRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NoaWZ0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgbGltaXRlciA9IHtcbiAgICAgICAgICBmbjogX3JlZiA9PiB7XG4gICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBtYWluQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IG1haW5BeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgbWFpbkF4aXNDb29yZCA9IGNsYW1wKG1pbiwgbWFpbkF4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBjcm9zc0F4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBjcm9zc0F4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGNsYW1wKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geSxcbiAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICBbbWFpbkF4aXNdOiBjaGVja01haW5BeGlzLFxuICAgICAgICAgICAgW2Nyb3NzQXhpc106IGNoZWNrQ3Jvc3NBeGlzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLCBfc3RhdGUkbWlkZGxld2FyZURhdGEyO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7fSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzWUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICBoZWlnaHRTaWRlID0gc2lkZTtcbiAgICAgICAgd2lkdGhTaWRlID0gYWxpZ25tZW50ID09PSAoKGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSkgPyAnc3RhcnQnIDogJ2VuZCcpID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IG1pbihoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXSwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSBtaW4od2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCk7XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLmVuYWJsZWQueCkge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEyID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMi5lbmFibGVkLnkpIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1lBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiZnVuY3Rpb24gaGFzV2luZG93KCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIGlmIChpc05vZGUobm9kZSkpIHtcbiAgICByZXR1cm4gKG5vZGUubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgLy8gTW9ja2VkIG5vZGVzIGluIHRlc3RpbmcgZW52aXJvbm1lbnRzIG1heSBub3QgYmUgaW5zdGFuY2VzIG9mIE5vZGUuIEJ5XG4gIC8vIHJldHVybmluZyBgI2RvY3VtZW50YCBhbiBpbmZpbml0ZSBsb29wIHdvbid0IG9jY3VyLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIzMTdcbiAgcmV0dXJuICcjZG9jdW1lbnQnO1xufVxuZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiAobm9kZSA9PSBudWxsIHx8IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpIHtcbiAgdmFyIF9yZWY7XG4gIHJldHVybiAoX3JlZiA9IChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcmVmLmRvY3VtZW50RWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIE5vZGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5IVE1MRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpIHx8IHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBTaGFkb3dSb290IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5TaGFkb3dSb290O1xufVxuZnVuY3Rpb24gaXNPdmVyZmxvd0VsZW1lbnQoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgb3ZlcmZsb3csXG4gICAgb3ZlcmZsb3dYLFxuICAgIG92ZXJmbG93WSxcbiAgICBkaXNwbGF5XG4gIH0gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzVG9wTGF5ZXIoZWxlbWVudCkge1xuICByZXR1cm4gWyc6cG9wb3Zlci1vcGVuJywgJzptb2RhbCddLnNvbWUoc2VsZWN0b3IgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnRPckNzcykge1xuICBjb25zdCB3ZWJraXQgPSBpc1dlYktpdCgpO1xuICBjb25zdCBjc3MgPSBpc0VsZW1lbnQoZWxlbWVudE9yQ3NzKSA/IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudE9yQ3NzKSA6IGVsZW1lbnRPckNzcztcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zZm9ybXMtMi8jaW5kaXZpZHVhbC10cmFuc2Zvcm1zXG4gIHJldHVybiBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJ10uc29tZSh2YWx1ZSA9PiBjc3NbdmFsdWVdID8gY3NzW3ZhbHVlXSAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IChjc3MuY29udGFpbmVyVHlwZSA/IGNzcy5jb250YWluZXJUeXBlICE9PSAnbm9ybWFsJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuYmFja2Ryb3BGaWx0ZXIgPyBjc3MuYmFja2Ryb3BGaWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuZmlsdGVyID8gY3NzLmZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuZnVuY3Rpb24gcmVjdHNBcmVFcXVhbChhLCBiKSB7XG4gIHJldHVybiBhLnggPT09IGIueCAmJiBhLnkgPT09IGIueSAmJiBhLndpZHRoID09PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09PSBiLmhlaWdodDtcbn1cblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlZnQsXG4gICAgICB0b3AsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW47XG4gICAgaWYgKCFza2lwKSB7XG4gICAgICBvbk1vdmUoKTtcbiAgICB9XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc2V0VG9wID0gZmxvb3IodG9wKTtcbiAgICBjb25zdCBpbnNldFJpZ2h0ID0gZmxvb3Iocm9vdC5jbGllbnRXaWR0aCAtIChsZWZ0ICsgd2lkdGgpKTtcbiAgICBjb25zdCBpbnNldEJvdHRvbSA9IGZsb29yKHJvb3QuY2xpZW50SGVpZ2h0IC0gKHRvcCArIGhlaWdodCkpO1xuICAgIGNvbnN0IGluc2V0TGVmdCA9IGZsb29yKGxlZnQpO1xuICAgIGNvbnN0IHJvb3RNYXJnaW4gPSAtaW5zZXRUb3AgKyBcInB4IFwiICsgLWluc2V0UmlnaHQgKyBcInB4IFwiICsgLWluc2V0Qm90dG9tICsgXCJweCBcIiArIC1pbnNldExlZnQgKyBcInB4XCI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW4sXG4gICAgICB0aHJlc2hvbGQ6IG1heCgwLCBtaW4oMSwgdGhyZXNob2xkKSkgfHwgMVxuICAgIH07XG4gICAgbGV0IGlzRmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU9ic2VydmUoZW50cmllcykge1xuICAgICAgY29uc3QgcmF0aW8gPSBlbnRyaWVzWzBdLmludGVyc2VjdGlvblJhdGlvO1xuICAgICAgaWYgKHJhdGlvICE9PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgaWYgKCFpc0ZpcnN0VXBkYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhdGlvKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBjbGlwcGVkLCB0aGUgcmF0aW8gaXMgMC4gVGhyb3R0bGUgdGhlIHJlZnJlc2hcbiAgICAgICAgICAvLyB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3Agb2YgdXBkYXRlcy5cbiAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2goZmFsc2UsIDFlLTcpO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZnJlc2goZmFsc2UsIHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJhdGlvID09PSAxICYmICFyZWN0c0FyZUVxdWFsKGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiwgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpIHtcbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGV2ZW4gdGhvdWdoIHRoZSByYXRpbyBpcyByZXBvcnRlZCBhcyAxLCB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpcyBub3QgYWN0dWFsbHkgZnVsbHkgd2l0aGluIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlcidzIHJvb3RcbiAgICAgICAgLy8gYXJlYSBhbnltb3JlLiBUaGlzIGNhbiBoYXBwZW4gdW5kZXIgcGVyZm9ybWFuY2UgY29uc3RyYWludHMuIFRoaXMgbWF5XG4gICAgICAgIC8vIGJlIGEgYnVnIGluIHRoZSBicm93c2VyJ3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24uIFRvXG4gICAgICAgIC8vIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGNvbXBhcmUgdGhlIGVsZW1lbnQncyBib3VuZGluZyByZWN0IG5vdyB3aXRoXG4gICAgICAgIC8vIHdoYXQgaXQgd2FzIGF0IHRoZSB0aW1lIHdlIGNyZWF0ZWQgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyLiBJZiB0aGV5XG4gICAgICAgIC8vIGFyZSBub3QgZXF1YWwgdGhlbiB0aGUgZWxlbWVudCBtb3ZlZCwgc28gd2UgcmVmcmVzaC5cbiAgICAgICAgcmVmcmVzaCgpO1xuICAgICAgfVxuICAgICAgaXNGaXJzdFVwZGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE9sZGVyIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgYSBgZG9jdW1lbnRgIGFzIHRoZSByb290IGFuZCB3aWxsIHRocm93IGFuXG4gICAgLy8gZXJyb3IuXG4gICAgdHJ5IHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLy8gSGFuZGxlIDxpZnJhbWU+c1xuICAgICAgICByb290OiByb290Lm93bmVyRG9jdW1lbnRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpby5vYnNlcnZlKGVsZW1lbnQpO1xuICB9XG4gIHJlZnJlc2godHJ1ZSk7XG4gIHJldHVybiBjbGVhbnVwO1xufVxuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hlbiBuZWNlc3NhcnkuXG4gKiBTaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBtb3VudGVkIG9uIHRoZSBET00gb3JcbiAqIHZpc2libGUgb24gdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIGNsZWFudXAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgaW52b2tlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzXG4gKiByZW1vdmVkIGZyb20gdGhlIERPTSBvciBoaWRkZW4gZnJvbSB0aGUgc2NyZWVuLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9VcGRhdGVcbiAqL1xuZnVuY3Rpb24gYXV0b1VwZGF0ZShyZWZlcmVuY2UsIGZsb2F0aW5nLCB1cGRhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5jZXN0b3JTY3JvbGwgPSB0cnVlLFxuICAgIGFuY2VzdG9yUmVzaXplID0gdHJ1ZSxcbiAgICBlbGVtZW50UmVzaXplID0gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGxheW91dFNoaWZ0ID0gdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gdW53cmFwRWxlbWVudChyZWZlcmVuY2UpO1xuICBjb25zdCBhbmNlc3RvcnMgPSBhbmNlc3RvclNjcm9sbCB8fCBhbmNlc3RvclJlc2l6ZSA/IFsuLi4ocmVmZXJlbmNlRWwgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2VFbCkgOiBbXSksIC4uLmdldE92ZXJmbG93QW5jZXN0b3JzKGZsb2F0aW5nKV0gOiBbXTtcbiAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gIH0pO1xuICBjb25zdCBjbGVhbnVwSW8gPSByZWZlcmVuY2VFbCAmJiBsYXlvdXRTaGlmdCA/IG9ic2VydmVNb3ZlKHJlZmVyZW5jZUVsLCB1cGRhdGUpIDogbnVsbDtcbiAgbGV0IHJlb2JzZXJ2ZUZyYW1lID0gLTE7XG4gIGxldCByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gIGlmIChlbGVtZW50UmVzaXplKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoX3JlZiA9PiB7XG4gICAgICBsZXQgW2ZpcnN0RW50cnldID0gX3JlZjtcbiAgICAgIGlmIChmaXJzdEVudHJ5ICYmIGZpcnN0RW50cnkudGFyZ2V0ID09PSByZWZlcmVuY2VFbCAmJiByZXNpemVPYnNlcnZlcikge1xuICAgICAgICAvLyBQcmV2ZW50IHVwZGF0ZSBsb29wcyB3aGVuIHVzaW5nIHRoZSBgc2l6ZWAgbWlkZGxld2FyZS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzQwXG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJlb2JzZXJ2ZUZyYW1lKTtcbiAgICAgICAgcmVvYnNlcnZlRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHZhciBfcmVzaXplT2JzZXJ2ZXI7XG4gICAgICAgICAgKF9yZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgIWFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZUVsKTtcbiAgICB9XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gIH1cbiAgbGV0IGZyYW1lSWQ7XG4gIGxldCBwcmV2UmVmUmVjdCA9IGFuaW1hdGlvbkZyYW1lID8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSkgOiBudWxsO1xuICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICBmcmFtZUxvb3AoKTtcbiAgfVxuICBmdW5jdGlvbiBmcmFtZUxvb3AoKSB7XG4gICAgY29uc3QgbmV4dFJlZlJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKTtcbiAgICBpZiAocHJldlJlZlJlY3QgJiYgIXJlY3RzQXJlRXF1YWwocHJldlJlZlJlY3QsIG5leHRSZWZSZWN0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuY29uc3QgZGV0ZWN0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyQxO1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBvZmZzZXQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBhdXRvUGxhY2VtZW50JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IHNoaWZ0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZmxpcCQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBzaXplJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gaGlkZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IGFycm93JDE7XG5cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGlubGluZSQxO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gbGltaXRTaGlmdCQxO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgYXJyb3cgYXMgYXJyb3ckMSwgY29tcHV0ZVBvc2l0aW9uIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5leHBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgaXNOb2RlLCBnZXROb2RlTmFtZSB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuaW1wb3J0IHsgdW5yZWYsIGNvbXB1dGVkLCByZWYsIHNoYWxsb3dSZWYsIHdhdGNoLCBnZXRDdXJyZW50U2NvcGUsIG9uU2NvcGVEaXNwb3NlLCBzaGFsbG93UmVhZG9ubHkgfSBmcm9tICd2dWUtZGVtaSc7XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgIT0gbnVsbCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAnJGVsJyBpbiB0YXJnZXQ7XG59XG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KHRhcmdldCkge1xuICBpZiAoaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRhcmdldC4kZWw7XG4gICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KSAmJiBnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJyNjb21tZW50JyA/IG51bGwgOiBlbGVtZW50O1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHRvVmFsdWUoc291cmNlKSB7XG4gIHJldHVybiB0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nID8gc291cmNlKCkgOiB1bnJlZihzb3VyY2UpO1xufVxuXG4vKipcbiAqIFBvc2l0aW9ucyBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHN1Y2ggdGhhdCBpdCBpcyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgYXJyb3cgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5mdW5jdGlvbiBhcnJvdyhvcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKGFyZ3MpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB1bndyYXBFbGVtZW50KHRvVmFsdWUob3B0aW9ucy5lbGVtZW50KSk7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZzogb3B0aW9ucy5wYWRkaW5nXG4gICAgICB9KS5mbihhcmdzKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERQUihlbGVtZW50KSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHdpbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xufVxuXG5mdW5jdGlvbiByb3VuZEJ5RFBSKGVsZW1lbnQsIHZhbHVlKSB7XG4gIGNvbnN0IGRwciA9IGdldERQUihlbGVtZW50KTtcbiAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBkcHIpIC8gZHByO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnQgbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIENTUyBwb3NpdGlvbmluZyBzdHJhdGVneS5cbiAqIEBwYXJhbSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gZmxvYXRpbmcgVGhlIGZsb2F0aW5nIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBmbG9hdGluZyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3Z1ZVxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qgd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPSBvcHRpb25zLndoaWxlRWxlbWVudHNNb3VudGVkO1xuICBjb25zdCBvcGVuT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTtcbiAgICByZXR1cm4gKF90b1ZhbHVlID0gdG9WYWx1ZShvcHRpb25zLm9wZW4pKSAhPSBudWxsID8gX3RvVmFsdWUgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgbWlkZGxld2FyZU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRvVmFsdWUob3B0aW9ucy5taWRkbGV3YXJlKSk7XG4gIGNvbnN0IHBsYWNlbWVudE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUyO1xuICAgIHJldHVybiAoX3RvVmFsdWUyID0gdG9WYWx1ZShvcHRpb25zLnBsYWNlbWVudCkpICE9IG51bGwgPyBfdG9WYWx1ZTIgOiAnYm90dG9tJztcbiAgfSk7XG4gIGNvbnN0IHN0cmF0ZWd5T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTM7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTMgPSB0b1ZhbHVlKG9wdGlvbnMuc3RyYXRlZ3kpKSAhPSBudWxsID8gX3RvVmFsdWUzIDogJ2Fic29sdXRlJztcbiAgfSk7XG4gIGNvbnN0IHRyYW5zZm9ybU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU0O1xuICAgIHJldHVybiAoX3RvVmFsdWU0ID0gdG9WYWx1ZShvcHRpb25zLnRyYW5zZm9ybSkpICE9IG51bGwgPyBfdG9WYWx1ZTQgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcmVmZXJlbmNlRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlLnZhbHVlKSk7XG4gIGNvbnN0IGZsb2F0aW5nRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQoZmxvYXRpbmcudmFsdWUpKTtcbiAgY29uc3QgeCA9IHJlZigwKTtcbiAgY29uc3QgeSA9IHJlZigwKTtcbiAgY29uc3Qgc3RyYXRlZ3kgPSByZWYoc3RyYXRlZ3lPcHRpb24udmFsdWUpO1xuICBjb25zdCBwbGFjZW1lbnQgPSByZWYocGxhY2VtZW50T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgbWlkZGxld2FyZURhdGEgPSBzaGFsbG93UmVmKHt9KTtcbiAgY29uc3QgaXNQb3NpdGlvbmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnXG4gICAgfTtcbiAgICBpZiAoIWZsb2F0aW5nRWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHhWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeC52YWx1ZSk7XG4gICAgY29uc3QgeVZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB5LnZhbHVlKTtcbiAgICBpZiAodHJhbnNmb3JtT3B0aW9uLnZhbHVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeFZhbCArIFwicHgsIFwiICsgeVZhbCArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlKSA+PSAxLjUgJiYge1xuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogeFZhbCArIFwicHhcIixcbiAgICAgIHRvcDogeVZhbCArIFwicHhcIlxuICAgIH07XG4gIH0pO1xuICBsZXQgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwO1xuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgPT0gbnVsbCB8fCBmbG9hdGluZ0VsZW1lbnQudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcGVuID0gb3Blbk9wdGlvbi52YWx1ZTtcbiAgICBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB7XG4gICAgICBtaWRkbGV3YXJlOiBtaWRkbGV3YXJlT3B0aW9uLnZhbHVlLFxuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPcHRpb24udmFsdWUsXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ3lPcHRpb24udmFsdWVcbiAgICB9KS50aGVuKHBvc2l0aW9uID0+IHtcbiAgICAgIHgudmFsdWUgPSBwb3NpdGlvbi54O1xuICAgICAgeS52YWx1ZSA9IHBvc2l0aW9uLnk7XG4gICAgICBzdHJhdGVneS52YWx1ZSA9IHBvc2l0aW9uLnN0cmF0ZWd5O1xuICAgICAgcGxhY2VtZW50LnZhbHVlID0gcG9zaXRpb24ucGxhY2VtZW50O1xuICAgICAgbWlkZGxld2FyZURhdGEudmFsdWUgPSBwb3NpdGlvbi5taWRkbGV3YXJlRGF0YTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICogYnV0IHN0aWxsIG1vdW50ZWQgKHN1Y2ggYXMgd2hlbiB0cmFuc2l0aW9uaW5nIG91dCkuIFRvIGVuc3VyZVxuICAgICAgICogYGlzUG9zaXRpb25lZGAgd2lsbCBiZSBgZmFsc2VgIGluaXRpYWxseSBvbiB0aGUgbmV4dCBvcGVuLCBhdm9pZFxuICAgICAgICogc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgKi9cbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IG9wZW4gIT09IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgaWYgKHR5cGVvZiB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCgpO1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhdHRhY2goKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmICh3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgIT0gbnVsbCAmJiBmbG9hdGluZ0VsZW1lbnQudmFsdWUgIT0gbnVsbCkge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB1cGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBpZiAoIW9wZW5PcHRpb24udmFsdWUpIHtcbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB3YXRjaChbbWlkZGxld2FyZU9wdGlvbiwgcGxhY2VtZW50T3B0aW9uLCBzdHJhdGVneU9wdGlvbiwgb3Blbk9wdGlvbl0sIHVwZGF0ZSwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKFtyZWZlcmVuY2VFbGVtZW50LCBmbG9hdGluZ0VsZW1lbnRdLCBhdHRhY2gsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChvcGVuT3B0aW9uLCByZXNldCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIGlmIChnZXRDdXJyZW50U2NvcGUoKSkge1xuICAgIG9uU2NvcGVEaXNwb3NlKGNsZWFudXApO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogc2hhbGxvd1JlYWRvbmx5KHgpLFxuICAgIHk6IHNoYWxsb3dSZWFkb25seSh5KSxcbiAgICBzdHJhdGVneTogc2hhbGxvd1JlYWRvbmx5KHN0cmF0ZWd5KSxcbiAgICBwbGFjZW1lbnQ6IHNoYWxsb3dSZWFkb25seShwbGFjZW1lbnQpLFxuICAgIG1pZGRsZXdhcmVEYXRhOiBzaGFsbG93UmVhZG9ubHkobWlkZGxld2FyZURhdGEpLFxuICAgIGlzUG9zaXRpb25lZDogc2hhbGxvd1JlYWRvbmx5KGlzUG9zaXRpb25lZCksXG4gICAgZmxvYXRpbmdTdHlsZXMsXG4gICAgdXBkYXRlXG4gIH07XG59XG5cbmV4cG9ydCB7IGFycm93LCB1c2VGbG9hdGluZyB9O1xuIiwiZXhwb3J0IGNvbnN0IGlzQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBlbGVtZW50czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnRzKSA/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgcmV0dXJuICF0YXJnZXRzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIG9mZnNldCBhcyBvZmZzZXRNaWRkbGV3YXJlLCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tICdAZmxvYXRpbmctdWkvdnVlJztcbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGlzQ2xpY2tPdXRzaWRlIH0gZnJvbSAnQC91dGlsaXRpZXMvZXZlbnQnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgYW5jaG9ySWQ6IHN0cmluZztcbiAgICBvZmZzZXQ/OiBudW1iZXI7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBvZmZzZXQ6IDE2LFxuICB9KTtcblxuICBjb25zdCBhbmNob3I6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZzogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IHJvb3Q6IFJlZjxIVE1MRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuICBjb25zdCBpc0hvdmVyZWQgPSByZWYoZmFsc2UpO1xuICBjb25zdCBpc1RvZ2dsZWRPcGVuID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgbWlkZGxld2FyZSA9IHJlZihbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV0pO1xuXG4gIGNvbnN0IGlzU2hvd1BvcG92ZXIgPSBjb21wdXRlZCgoKSA9PiBpc0hvdmVyZWQudmFsdWUgfHwgaXNUb2dnbGVkT3Blbi52YWx1ZSk7XG5cbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoYW5jaG9yLCBmbG9hdGluZywge1xuICAgIG1pZGRsZXdhcmUsXG4gICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlIHx8ICFmbG9hdGluZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc0NsaWNrT3V0c2lkZShlLCBbYW5jaG9yLnZhbHVlLCBmbG9hdGluZy52YWx1ZV0pKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyID0gKCkgPT4ge1xuICAgIGlzSG92ZXJlZC52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzVG9nZ2xlZE9wZW4udmFsdWUpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGlzSG92ZXJlZC52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVMaXN0ZW5lcnNGcm9tQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBpZiAoIWFuY2hvci52YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlTGVhdmUpO1xuICAgIGFuY2hvci52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckVsZW1lbnRDbGljayk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICBpc1RvZ2dsZWRPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGFkZE9wZW5MaXN0ZW5lcnNUb1Jvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290ID0gKCkgPT4ge1xuICAgIGlmICghcm9vdC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrLCB0cnVlKTtcbiAgICByb290LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24pO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUFuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgYW5jaG9yLnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuYW5jaG9ySWQpO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGlzVG9nZ2xlZE9wZW4udmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290KCk7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmFuY2hvcklkLFxuICAgICgpID0+IHtcbiAgICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gICAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgICB9XG4gICk7XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIG1pZGRsZXdhcmUudmFsdWUgPSBbYXV0b1BsYWNlbWVudCgpLCBvZmZzZXRNaWRkbGV3YXJlKHsgbWFpbkF4aXM6IHByb3BzLm9mZnNldCB9KSwgc2hpZnQoeyBwYWRkaW5nOiAxNiB9KV07XG4gIH0pO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICB1cGRhdGVBbmNob3JFbGVtZW50KCk7XG4gICAgcm9vdC52YWx1ZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50KCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxUcmFuc2l0aW9uPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtcG9wb3ZlcicsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzIsXG4gICAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLlNIQURPVy5CT1RUT00sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJmbG9hdGluZ1wiXG4gICAgICAgIDpzdHlsZT1cInsgLi4uZmxvYXRpbmdTdHlsZXMgfVwiXG4gICAgICAgIHYtc2hvdz1cImlzU2hvd1BvcG92ZXJcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9UcmFuc2l0aW9uPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtcG9wb3ZlciB7XG4gICAgbWF4LXdpZHRoOiAyNTZweDtcbiAgfVxuICAudi1lbnRlci1mcm9tLFxuICAudi1sZWF2ZS10byB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAudi1lbnRlci1hY3RpdmUsXG4gIC52LWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG4gIC52LWVudGVyLXRvLFxuICAudi1sZWF2ZS1mcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBMaW5rIH0gZnJvbSAnQC90eXBlcy9MaW5rJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gICAgbGlua3M6IExpbmtbXTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGhlYWRpbmc6ICcnLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxzZWN0aW9uIGNsYXNzPVwidGlkZS1zZW8tbGlua3NcIj5cbiAgICA8aDIgOmNsYXNzPVwiW0NTUy5NQVJHSU4uQk9UVE9NLkhBTEZdXCI+XG4gICAgICB7eyBwcm9wcy5oZWFkaW5nIH19XG4gICAgPC9oMj5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguV1JBUCwgQ1NTLkdBUC5UV08sIENTUy5MSVNUX0JVTExFVFMuT0ZGXVwiPlxuICAgICAgPGxpXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zZW8tbGluaycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzJdXCJcbiAgICAgICAgOmtleT1cImxpbmsubGFiZWxcIlxuICAgICAgICB2LWZvcj1cImxpbmsgaW4gcHJvcHMubGlua3NcIlxuICAgICAgPlxuICAgICAgICA8YVxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGXVwiXG4gICAgICAgICAgOmhyZWY9XCJsaW5rLnVybFwiXG4gICAgICAgICAgOnRhcmdldD1cImxpbmsuaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBsaW5rLmxhYmVsIH19XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9zZWN0aW9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLyogVE9ETzogUmVmYWN0b3IgdG8gYWNjZXB0IGJyZWFrcG9pbnQgcHJvcCBpbiBvcmRlciB0byBhY2NvbXBsaXNoIHRoaXMgd2l0aCBuZWl0aGVyIGN1c3RvbSBicmVha3BvaW50cyBub3IgZGVwZW5kZW5jeSBvbiBWaWV3cG9ydFN0b3JlLiAqL1xuICAudGlkZS1zZW8tbGluayB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgICAudGlkZS1zZW8tbGluayB7XG4gICAgICB3aWR0aDogY2FsYygoMTAwJSAtIDJyZW0pIC8gMik7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIChtaW4td2lkdGg6IDEyMzJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gNnJlbSkgLyA0KTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBvbkJlZm9yZU1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyLCBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCBUaWRlRGl2aWRlciBmcm9tICcuL1RpZGVEaXZpZGVyLnZ1ZSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaXNPcGVuOiBib29sZWFuO1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIH07XG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgICAoZTogJ2Nsb3NlJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IGRpYWxvZ0VsZW1lbnQ6IFJlZjxIVE1MRGlhbG9nRWxlbWVudCB8IG51bGw+ID0gcmVmKG51bGwpO1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuID0gKCkgPT4ge1xuICAgIGRpYWxvZ0VsZW1lbnQudmFsdWU/LnNob3dNb2RhbCgpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5jbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgZW1pdCgnY2xvc2UnKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGVtaXQoJ2Nsb3NlJyk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuaXNPcGVuLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKCFkaWFsb2dFbGVtZW50LnZhbHVlKSByZXR1cm47XG4gICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSgpO1xuICAgICAgfVxuICAgICAgc2V0U2Nyb2xsTG9jayhuZXdWYWx1ZSk7XG4gICAgfVxuICApO1xuXG4gIG9uQmVmb3JlTW91bnQoKCkgPT4ge1xuICAgIGluaXRGYXV4VG9wTGF5ZXIoKTtcbiAgfSk7XG5cbiAgb25Nb3VudGVkKCgpID0+IHtcbiAgICBpZiAocHJvcHMuaXNPcGVuKSB7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbigpO1xuICAgIH1cbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPGRpYWxvZ1xuICAgICAgOmNsYXNzPVwiWyd0aWRlLXNoZWV0JywgQ1NTLkJHLklOSVRJQUwsIENTUy5IRUlHSFQuRlVMTCwgQ1NTLldJRFRILkZVTEwsIENTUy5PVkVSRkxPVy5YWS5ISURERU5dXCJcbiAgICAgIHJlZj1cImRpYWxvZ0VsZW1lbnRcIlxuICAgICAgQGNsaWNrLnNlbGY9XCJoYW5kbGVCYWNrZHJvcENsaWNrXCJcbiAgICAgIEBjbG9zZS5wcmV2ZW50XG4gICAgICBAa2V5ZG93bi5lc2NhcGU9XCJoYW5kbGVFc2NhcGVLZXlkb3duXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1zaGVldC1ib2R5JyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICBDU1MuSEVJR0hULkZVTEwsXG4gICAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgXVwiXG4gICAgICA+XG4gICAgICAgIDxoZWFkZXJcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgIF1cIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJlbWl0KCdiYWNrJylcIlxuICAgICAgICAgICAgdi1pZj1cImlzQmFja0J1dHRvblwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGLCBDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnY2xvc2UnKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPFRpZGVEaXZpZGVyIC8+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLXNoZWV0LWNvbnRlbnQnLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5ISURERU4sXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgXVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGlhbG9nPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc2hlZXQge1xuICAgIC0tc2hlZXQtcGFkZGluZy14OiB2YXIoLS10aWRlLXNwYWNpbmctMSk7XG4gICAgbWF4LXdpZHRoOiB1bnNldDtcbiAgICBtYXgtaGVpZ2h0OiB1bnNldDtcbiAgICBqdXN0aWZ5LWl0ZW1zOiByaWdodDtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwJSk7XG4gIH1cblxuICAudGlkZS1zaGVldDo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQtYm9keSB7XG4gICAgbWF4LXdpZHRoOiBtaW4oY2FsYygxMDB2dyAtIHZhcigtLXRpZGUtc3BhY2luZy0yKSksIDMxMXB4KTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0LWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tc2hlZXQtcGFkZGluZy14KSAxZnIgdmFyKC0tc2hlZXQtcGFkZGluZy14KTtcbiAgfVxuXG4gIDp3aGVyZSgudGlkZS1zaGVldC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxuXG4gICAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaXNBY3RpdmU/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlzQWN0aXZlOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzKFsnY2hhbmdlJ10pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlmICghcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIGVtaXQoJ2NoYW5nZScpO1xuICAgIH1cbiAgfTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxidXR0b25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1zd2l0Y2gnLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyAnYWN0aXZlJyA6ICcnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgIHByb3BzLmlzQWN0aXZlID8gJycgOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgcHJvcHMuaXNBY3RpdmUgPyBDU1MuQkcuU0VDT05EQVJZIDogQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJTd2l0Y2hcIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1zd2l0Y2gtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBwcm9wcy5pc0FjdGl2ZSA/IENTUy5CRy5TVVJGQUNFLkRFRkFVTFQgOiBDU1MuQkcuU0VDT05EQVJZLFxuICAgICAgXVwiXG4gICAgPlxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDppY29uPVwiSUNPTi5DSEVDS1wiXG4gICAgICAgIDpzaXplPVwiU0laRS5MQVJHRVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXN3aXRjaCB7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaDpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1vcGFjaXR5KTtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLmFjdGl2ZSAudGlkZS1zd2l0Y2gtaW5kaWNhdG9yIHtcbiAgICBsZWZ0OiAzNnB4O1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogNHB4O1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG48L3N0eWxlPlxuIl0sIm5hbWVzIjpbIk9SSUVOVEFUSU9OIiwiQ1NTIiwidXRpbGl0aWVzIiwiYnJlYWtwb2ludCIsInV0aWxpdHkiLCJwcm9wcyIsIl9fcHJvcHMiLCJfb3BlbkJsb2NrIiwiX2NyZWF0ZUVsZW1lbnRCbG9jayIsIl9ob2lzdGVkXzEiLCJfY3JlYXRlRWxlbWVudFZOb2RlIiwiX25vcm1hbGl6ZUNsYXNzIiwiX3VucmVmIiwiUkVBTE0iLCJTSVpFIiwiU0laRV9CVVRUT04iLCJmb3JtYXROdW1iZXIiLCJpbnB1dCIsIm91dHB1dCIsImRpZ2l0cyIsImZvcm1hdFBhc2NhbENhc2UiLCJ3b3JkIiwiZm9ybWF0UGhvbmUiLCJmb3JtYXRQcmljZSIsImlubmVyU1ZHIiwicmVmIiwid2F0Y2giLCJpZCIsIm5hbWUiLCJwcmVmaXgiLCJyZWFsbUZvbGRlciIsImNvbXBvbmVudCIsImRlZmluZUFzeW5jQ29tcG9uZW50IiwiX192YXJpYWJsZUR5bmFtaWNJbXBvcnRSdW50aW1lSGVscGVyIiwibWFya1JhdyIsIl9jcmVhdGVCbG9jayIsIl9yZXNvbHZlRHluYW1pY0NvbXBvbmVudCIsIklDT04iLCJJQ09OX1JFQUxNIiwiZW1pdCIsIl9fZW1pdCIsImhhbmRsZVRvZ2dsZUNsaWNrIiwiVGlkZURpdmlkZXIiLCJfdG9EaXNwbGF5U3RyaW5nIiwiX2NyZWF0ZVZOb2RlIiwiVGlkZUljb24iLCJfcmVuZGVyU2xvdCIsIl9jdHgiLCJFTEVNRU5UIiwiRUxFTUVOVF9URVhUX0FTX0lDT04iLCJQUklPUklUWSIsIlRBUkdFVCIsIkFMRVJUIiwiaWNvblR5cGUiLCJjb21wdXRlZCIsIlRpZGVCdXR0b25JY29uIiwiQkFER0VfQ09MT1IiLCJCQURHRV9DT0xPUl9ERVRBSUxTIiwiQkFER0VfVFJVU1RFRCIsIl9GcmFnbWVudCIsImNydW1iIiwiaW5kZXgiLCJfaG9pc3RlZF8yIiwiX2hvaXN0ZWRfMyIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJoYW5kbGVDbGljayIsInRhYiIsIiRldmVudCIsIlRZUEVfQ0FSRCIsImNvbnRhaW5lclJlZiIsImlzRmlyc3RTbGlkZSIsImlzTGFzdFNsaWRlIiwic2hvd0J1dHRvbnMiLCJzbGlkZU9ic2VydmVyIiwic2xpZGVzSW5WaWV3Iiwic2xvdE9ic2VydmVyIiwic2xpZGVzIiwiaGFuZGxlU2Nyb2xsIiwidXBkYXRlQ29udGFpbmVyQmxlZWQiLCJvYnNlcnZlU2xpZGVzIiwib3B0aW9ucyIsImVudHJpZXMiLCJzbGlkZXNBZGRlZFRvVmlldyIsImVudHJ5Iiwic2xpZGVJbmRleCIsInNsaWRlIiwiYSIsImIiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsInNjcm9sbFRvT2Zmc2V0IiwidGFyZ2V0Iiwic2hvd05leHRQYWdlIiwibmV4dFNsaWRlIiwic2hvd1ByZXZpb3VzUGFnZSIsInByZXZpb3VzU2xpZGUiLCJfYSIsInNob3dOZXh0U2xpZGUiLCJzaG93UHJldmlvdXNTbGlkZSIsIm9uTW91bnRlZCIsIm9uVW5tb3VudGVkIiwiX2IiLCJfY2FjaGUiLCJfaG9pc3RlZF80IiwiX2hvaXN0ZWRfNSIsIk9CSkVDVF9GSVQiLCJpbWFnZURlZmF1bHQiLCJwaWN0dXJlIiwiaW1nIiwib2JqZWN0Rml0Q2xhc3NOYW1lIiwic2V0SW1hZ2VGcm9tRGVmYXVsdCIsImN1cnJlbnRTcmMiLCJwaWN0dXJlU291cmNlIiwiX25vcm1hbGl6ZVN0eWxlIiwiX3JlbmRlckxpc3QiLCJzb3VyY2UiLCJUaWRlSW1hZ2UiLCJGT1JNX0tFWSIsInVzZVRpZGVGb3JtIiwiZm9yY2VTaG93RXJyb3JzIiwicHJvdmlkZSIsInVzZUZvcm1Db250ZXh0IiwiaW5qZWN0IiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsIlZBTElEQVRJT05fUkVTVUxUIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJtZXNzYWdlIiwidmFsdWUiLCJyZXN1bHQiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IiwiZXJyb3JGcm9tUHJvcHMiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsIm1vZGVsVmFsdWUiLCJfdXNlTW9kZWwiLCJmb3JtQ29udGV4dCIsImlzVmFsaWRhdGluZyIsImVycm9yUmVmIiwiZm9ybWF0dGVkTGFiZWwiLCJpc0NoZWNrZWQiLCJzaG93RXJyb3IiLCJoYXNFcnJvckZyb21Qcm9wIiwic3VwcG9ydGluZ1RleHRNZXNzYWdlIiwiZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0Iiwid2F0Y2hFZmZlY3QiLCJuZXdWYWx1ZSIsIlRpZGVJbnB1dFN1cHBvcnRpbmdUZXh0IiwiX19kZWZhdWx0X18iLCJjaGVja2VkIiwib2xkVmFsdWUiLCJGT1JNQVQiLCJGT1JNQVRfUkVHRVgiLCJWQUxJREFUT1IiLCJFUlJPUl9ESVNQTEFZIiwiaGFzRm9jdXMiLCJpbnB1dElkIiwidXNlSWQiLCJzZWxlY3RFbGVtZW50IiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJldmVudCIsImhhbmRsZUZvY3VzIiwiaGFuZGxlRm9jdXNPdXQiLCJvcHRncm91cCIsIm9wdGlvbiIsIl9ob2lzdGVkXzYiLCJnZXRFcnJvck1lc3NhZ2UiLCJlcnJvckZyb21SZWYiLCJnZXRGaWVsZEhhc0Vycm9yIiwiaGFuZGxlRmllbGRWYWxpZGF0aW9uIiwiZXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJoYXNFcnJvciIsIl9fZXhwb3NlIiwiVEVYVF9JTlBVVF9UWVBFIiwiSU5QVVRfTU9ERSIsImdldFRleHRJbnB1dE1vZGUiLCJ0eXBlIiwiaW5wdXRtb2RlIiwiaW5wdXRFbGVtZW50Iiwic2hvd1Bhc3N3b3JkIiwiaW5wdXRNb2RlQXR0cmlidXRlIiwiaW5wdXRUeXBlIiwic2hvdWxkU2hvd0NsZWFyQnV0dG9uIiwic2hvdWxkU2hvd1Bhc3N3b3JkQnV0dG9uIiwiaGFuZGxlQ2xlYXIiLCJoYW5kbGVGaWVsZENsaWNrIiwicHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd24iLCJlIiwiaGFzQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJ1cGRhdGVWYWx1ZSIsInRleHRhcmVhRWxlbWVudCIsInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duIiwiQlJFQUtQT0lOVCIsIk1FRElBIiwic2V0U2Nyb2xsTG9jayIsImlzTG9ja2VkIiwiYm9keSIsInNjcm9sbFkiLCJuZXh0VGljayIsInNhdmVkU2Nyb2xsWSIsIlRPUF9MQVlFUl9JRCIsImluaXRGYXV4VG9wTGF5ZXIiLCJ0b3BMYXllciIsIm1vZGFsQ29udGVudCIsIm1vZGFsRGlhbG9nIiwidHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4iLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UiLCJzY3JvbGxDb250ZW50VG9Ub3AiLCJoYW5kbGVCYWNrZHJvcENsaWNrIiwiaGFuZGxlRXNjYXBlS2V5ZG93biIsIiRzbG90cyIsInBhZ2VDdXJyZW50IiwicGFnaW5hdGlvbkJ1dHRvbnMiLCJlbXB0eSIsInBhZ2luYXRpb25CdXR0b24iLCJUaWRlQnV0dG9uUGFnaW5hdGlvbiIsInNpZGVzIiwiYWxpZ25tZW50cyIsInBsYWNlbWVudHMiLCJhY2MiLCJzaWRlIiwibWluIiwibWF4Iiwicm91bmQiLCJmbG9vciIsImNyZWF0ZUNvb3JkcyIsInYiLCJvcHBvc2l0ZVNpZGVNYXAiLCJvcHBvc2l0ZUFsaWdubWVudE1hcCIsImNsYW1wIiwic3RhcnQiLCJlbmQiLCJldmFsdWF0ZSIsInBhcmFtIiwiZ2V0U2lkZSIsInBsYWNlbWVudCIsImdldEFsaWdubWVudCIsImdldE9wcG9zaXRlQXhpcyIsImF4aXMiLCJnZXRBeGlzTGVuZ3RoIiwiZ2V0U2lkZUF4aXMiLCJnZXRBbGlnbm1lbnRBeGlzIiwiZ2V0QWxpZ25tZW50U2lkZXMiLCJyZWN0cyIsInJ0bCIsImFsaWdubWVudCIsImFsaWdubWVudEF4aXMiLCJsZW5ndGgiLCJtYWluQWxpZ25tZW50U2lkZSIsImdldE9wcG9zaXRlUGxhY2VtZW50IiwiZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQiLCJleHBhbmRQYWRkaW5nT2JqZWN0IiwicGFkZGluZyIsImdldFBhZGRpbmdPYmplY3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsIl9yZWYiLCJyZWZlcmVuY2UiLCJmbG9hdGluZyIsInNpZGVBeGlzIiwiYWxpZ25MZW5ndGgiLCJpc1ZlcnRpY2FsIiwiY29tbW9uWCIsImNvbW1vblkiLCJjb21tb25BbGlnbiIsImNvb3JkcyIsImNvbXB1dGVQb3NpdGlvbiIsImNvbmZpZyIsInN0cmF0ZWd5IiwibWlkZGxld2FyZSIsInBsYXRmb3JtIiwidmFsaWRNaWRkbGV3YXJlIiwic3RhdGVmdWxQbGFjZW1lbnQiLCJtaWRkbGV3YXJlRGF0YSIsInJlc2V0Q291bnQiLCJpIiwiZm4iLCJuZXh0WCIsIm5leHRZIiwiZGF0YSIsInJlc2V0IiwiZGV0ZWN0T3ZlcmZsb3ciLCJzdGF0ZSIsIl9hd2FpdCRwbGF0Zm9ybSRpc0VsZSIsImVsZW1lbnRzIiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJlbGVtZW50Q29udGV4dCIsImFsdEJvdW5kYXJ5IiwicGFkZGluZ09iamVjdCIsImVsZW1lbnQiLCJjbGlwcGluZ0NsaWVudFJlY3QiLCJvZmZzZXRQYXJlbnQiLCJvZmZzZXRTY2FsZSIsImVsZW1lbnRDbGllbnRSZWN0IiwiZ2V0UGxhY2VtZW50TGlzdCIsImF1dG9BbGlnbm1lbnQiLCJhbGxvd2VkUGxhY2VtZW50cyIsImF1dG9QbGFjZW1lbnQiLCJfbWlkZGxld2FyZURhdGEkYXV0b1AiLCJfbWlkZGxld2FyZURhdGEkYXV0b1AyIiwiX3BsYWNlbWVudHNUaGF0Rml0T25FIiwiY3Jvc3NBeGlzIiwiZGV0ZWN0T3ZlcmZsb3dPcHRpb25zIiwicGxhY2VtZW50cyQxIiwib3ZlcmZsb3ciLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50UGxhY2VtZW50IiwiYWxpZ25tZW50U2lkZXMiLCJjdXJyZW50T3ZlcmZsb3dzIiwiYWxsT3ZlcmZsb3dzIiwibmV4dFBsYWNlbWVudCIsInBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZSIsImQiLCJyZXNldFBsYWNlbWVudCIsImNvbnZlcnRWYWx1ZVRvQ29vcmRzIiwibWFpbkF4aXNNdWx0aSIsImNyb3NzQXhpc011bHRpIiwicmF3VmFsdWUiLCJtYWluQXhpcyIsIm9mZnNldCIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZSIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdyIsImRpZmZDb29yZHMiLCJzaGlmdCIsImNoZWNrTWFpbkF4aXMiLCJjaGVja0Nyb3NzQXhpcyIsImxpbWl0ZXIiLCJtYWluQXhpc0Nvb3JkIiwiY3Jvc3NBeGlzQ29vcmQiLCJtaW5TaWRlIiwibWF4U2lkZSIsImxpbWl0ZWRDb29yZHMiLCJoYXNXaW5kb3ciLCJnZXROb2RlTmFtZSIsIm5vZGUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRvVmFsdWUiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwib2Zmc2V0TWlkZGxld2FyZSIsImlzU2hvd1BvcG92ZXIiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrIiwiaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlIiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIm9uQmVmb3JlTW91bnQiLCJfVGVsZXBvcnQiLCJfVHJhbnNpdGlvbiIsImxpbmsiLCJkaWFsb2dFbGVtZW50Il0sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTUEsS0FBYztBQUFBLEVBQ3pCLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFDWixHQ0NhQyxJQUFNO0FBQUEsRUFDakIsZ0JBQWdCLENBQUNDLEdBQXFCQyxNQUM3QkQsRUFBVSxJQUFJLENBQUNFLE1BQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUU7QUFBQSxFQUU5RCxPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsR0FBRztBQUFBLE1BQ0QsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLElBQUE7QUFBQSxFQUNWO0FBQUEsRUFFRixPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsRUFBQTtBQUFBLEVBRVQsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLElBQUk7QUFBQSxJQUNGLFFBQVE7QUFBQSxNQUNOLFNBQVM7QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxNQUFBO0FBQUEsTUFFWCxTQUFTO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLElBQ1Y7QUFBQSxJQUVGLFNBQVM7QUFBQSxJQUNULE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxNQUNWLFNBQVM7QUFBQSxJQUFBO0FBQUEsSUFFWCxhQUFhO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixhQUFhO0FBQUEsTUFDYixlQUFlO0FBQUEsTUFDZixjQUFjO0FBQUEsSUFBQTtBQUFBLEVBQ2hCO0FBQUEsRUFFRixRQUFRO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLE1BRVYsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1QsVUFBVTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsU0FBUztBQUFBLElBQUE7QUFBQSxJQUVYLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsTUFDUixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsUUFBUTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQUE7QUFBQSxJQUVQLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUFBO0FBQUEsSUFFUCxNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsSUFBQTtBQUFBLElBRVAsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLElBQUE7QUFBQSxJQUVQLEtBQUs7QUFBQSxNQUNILE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUFBO0FBQUEsRUFDUDtBQUFBLEVBRUYsWUFBWTtBQUFBLElB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TCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsS0FBSztBQUFBLE1BQ0gsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLEVBQ1I7QUFBQSxFQUVGLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxFQUFBO0FBQUEsRUFFZCxTQUFTO0FBQUEsSUFDUCxVQUFVO0FBQUEsSUFDVixLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBRU4sVUFBVTtBQUFBLElBQ1IsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQUE7QUFBQSxJQUVWLElBQUk7QUFBQSxNQUNGLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUFBO0FBQUEsSUFFVixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFBQTtBQUFBLEVBQ1Y7QUFBQSxFQUVGLFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixLQUFLO0FBQUEsTUFDSCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsRUFDUjtBQUFBLEVBRUYsZ0JBQWdCO0FBQUEsSUFDZCxLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBRU4sVUFBVTtBQUFBLElBQ1IsVUFBVTtBQUFBLElBQ1YsT0FBTztBQUFBLElBQ1AsVUFBVTtBQUFBLElBQ1YsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLEVBQUE7QUFBQSxFQUVWLGFBQWE7QUFBQSxJQUNYLFFBQVE7QUFBQSxJ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QUFBLElBQ2xCLGFBQWF2RCxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUN1RCxHQUFZLEtBQUssR0FBRztBQUFBLElBQ25CLGFBQWF2RCxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUN1RCxHQUFZLElBQUksR0FBRztBQUFBLElBQ2xCLGFBQWF2RCxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUN1RCxHQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWF2RCxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUN1RCxHQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWF2RCxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUN1RCxHQUFZLEdBQUcsR0FBRztBQUFBLElBQ2pCLGFBQWF2RCxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUN1RCxHQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWF2RCxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUN1RCxHQUFZLElBQUksR0FBRztBQUFBLElBQ2xCLGFBQWF2RCxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUFBLEVBRTNDLENBQUN1RCxHQUFZLE1BQU0sR0FBRztBQUFBLElBQ3BCLGFBQWF2RCxFQUFJLE9BQU8sTUFBTSxPQUFPO0FBQUEsSUFDckMsV0FBV0EsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRO0FBQUEsRUFBQTtBQUU3QyxHQUVheUQsS0FBZ0I7QUFBQSxFQUMzQixVQUFVO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixTQUFTO0FBQ1g7Ozs7Ozs7OztBQ3JERSxVQUFNckQsSUFBUUM7MkJBUWRFLEVBdUJNLE9BQUE7QUFBQSxNQXRCSCxPQUFLRyxFQUFBO0FBQUE7UUFBOEJOLEVBQU0sY0FBY0EsRUFBTSxRQUFLLENBQUlPLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsVUFBVVcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxJQUFBLENBQUtXLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTztBQUFBLFFBQVNXLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBbUJXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1csRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFlVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsUUFBZVcsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRTtBQUFBLFFBQWVXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxRQUFZSSxFQUFNLFNBQUssQ0FBS08sRUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxLQUFLVyxFQUFBNkMsRUFBQSxFQUFvQnBELEVBQU0sS0FBSyxFQUFFLFdBQVc7QUFBQSxRQUFTTyxFQUFBWCxDQUFBLEVBQUk7QUFBQSxRQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLFFBQWVXLEVBQUFYLENBQUEsRUFBSSxnQkFBZ0I7QUFBQSxNQUFBOztNQWtCbGRJLEVBQU0sb0JBSGQ4QixFQUlFVSxHQUFBO0FBQUE7UUFIQyxVQUFRakMsRUFBQVgsQ0FBQSxFQUFJLEtBQUssT0FBTyxLQUFLSSxFQUFNLFNBQVNPLEVBQUE2QyxFQUFBLEVBQW9CcEQsRUFBTSxLQUFLLEVBQUUsU0FBUyxDQUFBO0FBQUEsUUFDdEYsTUFBTUEsRUFBTTtBQUFBLE1BQUE7TUFJZkssRUFBc0QsUUFBQTtBQUFBLFFBQS9DLE9BQUtDLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsQ0FBQTtBQUFBLE1BQUEsR0FBTTBDLEVBQUF0QyxFQUFNLEtBQUssR0FBQSxDQUFBO0FBQUEsSUFBQTs7Ozs7Ozs7QUNqQzlDLFVBQU1BLElBQVFDOzJCQU1kRSxFQW9CTSxPQUFBO0FBQUEsTUFuQkgsT0FBS0csRUFBQTtBQUFBO1FBQThDQyxFQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVE7QUFBQSxRQUFhVyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFFBQW1CVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFFBQWNXLEVBQUFYLENBQUEsRUFBSSxJQUFJO0FBQUEsUUFBZVcsRUFBQVgsQ0FBQSxFQUFJO0FBQUEsUUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxRQUFlVyxFQUFBWCxDQUFBLEVBQUksZ0JBQWdCO0FBQUEsTUFBQTs7TUFXM08yQyxFQUdFQyxHQUFBO0FBQUEsUUFGQyxVQUFRakMsRUFBQVgsQ0FBQSxFQUFJLEtBQUssT0FBTyxHQUFHLENBQUE7QUFBQSxRQUMzQixNQUFNVyxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsTUFBQTtNQUdkM0IsRUFFTSxPQUFBO0FBQUEsUUFGQSxPQUFLQyxFQUFBLENBQUdDLEVBQUFYLENBQUEsRUFBSSxRQUFRLENBQUE7QUFBQSxNQUFBO1FBQ3hCUyxFQUFtRCxRQUFBLE1BQUFpQyxFQUExQ3RDLEVBQU0sS0FBSyxJQUFHLHlCQUFxQixDQUFBO0FBQUEsTUFBQTs7Ozs7OzJCQzdCaERHLEVBc0JNLE9BQUE7QUFBQSxNQXJCSCxPQUFLRyxFQUFBO0FBQUE7UUFBK0NDLEVBQUFYLENBQUEsRUFBSSxHQUFHO0FBQUEsUUFBaUJXLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxRQUFlVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNO0FBQUEsUUFBaUJXLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBbUJXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1csRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFlVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsUUFBZVcsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRTtBQUFBLFFBQWVXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUk7QUFBQSxRQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLGdCQUFnQjtBQUFBLE1BQUE7O01BZXhWMkMsRUFHRUMsR0FBQTtBQUFBLFFBRkMsVUFBUWpDLEVBQUFYLENBQUEsRUFBSSxLQUFLLE9BQU8sR0FBRyxDQUFBO0FBQUEsUUFDM0IsTUFBTVcsRUFBQXlCLENBQUEsRUFBSztBQUFBLE1BQUE7TUFHZDNCLEVBQXFELFFBQUE7QUFBQSxRQUE5QyxPQUFLQyxFQUFBLENBQUdDLEVBQUFYLENBQUEsRUFBSSxRQUFRLENBQUE7QUFBQSxNQUFBLEdBQUcsb0JBQWdCLENBQUE7QUFBQSxJQUFBOzs7Ozs7OztBQ2hCaEQsVUFBTUksSUFBUUM7MkJBTWRFLEVBK0JLLE1BQUE7QUFBQSxNQS9CQSxPQUFLRyxFQUFBLENBQUEscUJBQXdCQyxLQUFJLFFBQVEsTUFBTUEsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sUUFBUVcsRUFBQVgsQ0FBQSxFQUFJLElBQUksU0FBU1csRUFBQVgsQ0FBQSxFQUFJLGFBQWEsR0FBRyxDQUFBO0FBQUEsSUFBQTtPQUN6R00sRUFBQSxFQUFBLEdBQUFDLEVBNkJXbUQsWUEzQmdCdEQsRUFBTSxhQUFXLENBQWxDdUQsR0FBT0M7UUFEVCxLQUFBRCxFQUFNO0FBQUEsTUFBQTtRQUdabEQsRUFpQkssTUFBQTtBQUFBLFVBakJBLFVBQVFFLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBO0FBQUEsUUFBQTtVQUt2QjJELEVBQU0sWUFKZHBELEVBT0ksS0FBQTtBQUFBO1lBTkQsVUFBUUksRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFRVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBO0FBQUEsWUFDNUQsY0FBWTJELEVBQU0sYUFBYTtBQUFBLFlBQy9CLE1BQU1BLEVBQU07QUFBQSxVQUFBLEdBR1ZqQixFQUFBaUIsRUFBTSxLQUFLLEdBQUEsSUFBQW5ELEVBQUEsV0FHaEJELEVBTU8sUUFBQTtBQUFBO1lBTEosVUFBUUksRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxTQUFTVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBO0FBQUEsWUFDN0QsY0FBWTJELEVBQU0sYUFBYTtBQUFBLFVBQUEsR0FHN0JqQixFQUFBaUIsRUFBTSxLQUFLLEdBQUEsSUFBQUUsRUFBQTtBQUFBLFFBQUE7UUFJUnpELEVBQU0sZUFBZXdELElBQVF4RCxFQUFNLFlBQVksU0FBTSxVQUEvREcsRUFLSyxNQUFBdUQsSUFBQTtBQUFBLFVBSkhuQixFQUdFQyxHQUFBO0FBQUEsWUFGQyxNQUFNakMsRUFBQXlCLENBQUEsRUFBSztBQUFBLFlBQ1gsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQnBCLFVBQU1ULElBQVFDO3NCQWNkQyxLQUFBNEIsRUFnQ1lDLEdBZkwvQixFQUFNLFlBQVlPLEVBQUFvQyxDQUFBLEVBQVEsT0FBT3BDLEtBQVEsT0FBT0EsRUFBQW9DLENBQUEsRUFBUSxNQUFNLEdBQUE7QUFBQSxNQWhCbEUsT0FBS3JDLEVBQUE7QUFBQTtRQUErQk4sRUFBTSxZQUFRLGVBQW1CQSxFQUFNLFFBQVE7QUFBQSxRQUFVQSxFQUFNLFlBQVlPLEVBQUFvQyxDQUFBLEVBQVEsT0FBSSxDQUFJcEMsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsV0FBVyxJQUFBLENBQUtXLEtBQUksUUFBUSxJQUFJO0FBQUEsUUFBU1AsRUFBTSxZQUFZTyxFQUFBb0MsQ0FBQSxFQUFRLE9BQU9wQyxFQUFBWCxDQUFBLEVBQUksVUFBVSxLQUFLLE1BQUc7QUFBQSxRQUFhSyxFQUFBLFNBQVNNLEVBQUFHLEVBQUEsRUFBWSxTQUFLLENBQUtILEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssVUFBVVcsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxLQUFLVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLElBQUk7QUFBQSxRQUFTSyxFQUFBLFNBQVNNLEVBQUFHLEVBQUEsRUFBWSxTQUFLLENBQUtILEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssVUFBVVcsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxLQUFLVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFLEdBQUc7QUFBQSxRQUFTVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFFBQWNXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1csRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLE1BQUE7TUFhampCLFVBQVVJLEVBQU0sWUFBWU8sRUFBQW9DLENBQUEsRUFBUSxVQUFVM0MsRUFBTTtBQUFBLE1BQ3BELE1BQU1BLEVBQU0sWUFBWU8sS0FBUSxRQUFRUCxFQUFNLE9BQU9BLEVBQU0sT0FBTztBQUFBLE1BQ2xFLFFBQVFBLEVBQU0sWUFBWU8sRUFBQW9DLENBQUEsRUFBUSxRQUFRM0MsRUFBTSxXQUFXTyxFQUFBdUMsRUFBQSxFQUFPLFFBQVF2QyxFQUFBdUMsRUFBQSxFQUFPO0FBQUEsSUFBQTtrQkFHbEYsTUFJRTtBQUFBLFFBRE05QyxFQUFNLG9CQUhkOEIsRUFJRVUsR0FBQTtBQUFBO1VBSEMsTUFBTXhDLEVBQU07QUFBQSxVQUNaLE1BQU1DLEVBQUEsU0FBU00sRUFBQUcsRUFBQSxFQUFZLFFBQVFILEVBQUFFLENBQUEsRUFBSyxRQUFRRixFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBO1FBRXREa0QsR0FBQSxNQUVGckIsRUFBR3RDLEVBQU0sS0FBSyxJQUFHLEtBRWpCLENBQUE7QUFBQSxRQUdRQSxFQUFNLHFCQUhkOEIsRUFJRVUsR0FBQTtBQUFBO1VBSEMsTUFBTXhDLEVBQU07QUFBQSxVQUNaLE1BQU1DLEVBQUEsU0FBU00sRUFBQUcsRUFBQSxFQUFZLFFBQVFILEVBQUFFLENBQUEsRUFBSyxRQUFRRixFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBOzs7Ozs7Ozs7Ozs7OztBQ3ZEMUQsVUFBTVQsSUFBUUM7MkJBU2Q2QixFQXFCWUM7QUFBQUEsTUFYRS9CLEVBQU0sWUFBWU8sRUFBQXFDLEVBQUEsRUFBcUIsYUFBNkI1QyxFQUFNLFlBQVlPLEVBQUFxQyxFQUFBLEVBQXFCOztNQVR0SCxPQUFLdEMsRUFBQTtBQUFBLFFBQVVOLEVBQU0sWUFBWU8sRUFBQXFDLEVBQUEsRUFBcUIsT0FBSSw2QkFBQTtBQUFBLFFBQTJELENBQUFyQyxFQUFBWCxDQUFBLEVBQUksUUFBUSxjQUFjVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssSUFBSTtBQUFBLFFBQVNJLEVBQU0sWUFBWU8sRUFBQXFDLEVBQUEsRUFBcUIsT0FBSSxDQUFJckMsRUFBQVgsQ0FBQSxFQUFJLFVBQVUsS0FBSyxHQUFHLElBQUE7QUFBQSxRQUFjSSxFQUFNLFlBQVlPLEVBQUFxQyxFQUFBLEVBQXFCLE1BQUcsQ0FBSXJDLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sSUFBQTtBQUFBLFFBQWUsQ0FBQVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxVQUFVO0FBQUEsTUFBQTtNQU8vWCxVQUFVSSxFQUFNLFlBQVlPLEVBQUFxQyxFQUFBLEVBQXFCLFVBQVU1QyxFQUFNO0FBQUEsTUFDakUsTUFBTUEsRUFBTSxZQUFZTyxNQUFxQixRQUFRUCxFQUFNLE9BQU9BLEVBQU0sT0FBTztBQUFBLElBQUE7a0JBU2hGLE1BRU87QUFBQSxRQUZQSyxFQUVPLFFBQUE7QUFBQSxVQUZBLG1CQUFpQkUsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sUUFBUVcsS0FBSSxNQUFNLE1BQU0sQ0FBQTtBQUFBLFFBQUEsR0FDdkUrQixFQUFBdEMsRUFBTSxLQUFLLEdBQUEsQ0FBQTtBQUFBLE1BQUE7Ozs7Ozs7Ozs7OztBQy9CbEIsVUFBTUEsSUFBUUMsR0FJUmlDLElBQU9DLEdBRVB5QixJQUFjLENBQUNKLE1BQWtCO0FBQ3JDLE1BQUF0QixFQUFLLFVBQVVzQixDQUFLO0FBQUEsSUFDdEI7MkJBSUFyRCxFQTBDTSxPQUFBO0FBQUEsTUF6Q0gsT0FBS0csRUFBQTtBQUFBO1FBQXlDQyxFQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRO0FBQUEsUUFBZVcsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksSUFBSTtBQUFBLFFBQWVXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLO0FBQUEsUUFBZVcsRUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRztBQUFBLFFBQWNXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsTUFBQTs7T0FXbE9NLEVBQUEsRUFBQSxHQUFBQyxFQTZCU21ELFlBWmdCdEQsRUFBTSxNQUFJLENBQXpCNkQsR0FBS0wsWUFqQmZyRCxFQTZCUyxVQUFBO0FBQUEsUUE1Qk4sT0FBS0csRUFBQTtBQUFBO1VBQWlEa0QsTUFBVXZELEVBQUEsYUFBdUJNLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsU0FBU1csS0FBSSxLQUFLLE1BQU0sUUFBUSxTQUFTQSxFQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLElBQTJCLENBQUEsWUFBQVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU87QUFBQSxVQUFXVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsVUFBWVcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLFVBQWFXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsVUFBaUJXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLFVBQWtCVyxFQUFBWCxDQUFBLEVBQUksZ0JBQWdCO0FBQUEsUUFBQTtRQWF0YSxjQUFZaUUsRUFBSSxhQUFhO0FBQUEsUUFDN0IsS0FBS0EsRUFBSTtBQUFBLFFBQ1QsU0FBSyxDQUFBQyxNQUFFRixFQUFZSixDQUFLO0FBQUEsTUFBQTtRQUd6Qm5ELEVBRU8sUUFBQTtBQUFBLFVBRkEsVUFBUUUsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQTtBQUFBLFFBQUEsR0FDeEMwQyxFQUFBdUIsRUFBSSxLQUFLLEdBQUEsQ0FBQTtBQUFBLFFBS05BLEVBQUksU0FBU0EsRUFBSSxRQUFLLFVBRjlCMUQsRUFLTyxRQUFBO0FBQUE7VUFKSixVQUFRSSxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLGdCQUFnQixDQUFBO0FBQUEsUUFBQSxHQUV4QyxPQUNFMEMsRUFBR3VCLEVBQUksS0FBSyxJQUFHLE1BQ2xCLENBQUE7Ozs7b0VDOURPRSxLQUFZO0FBQUEsRUFDdkIsWUFBWTtBQUFBLEVBQ1osZUFBZTtBQUFBLEVBQ2YsWUFBWTtBQUNkOzs7Ozs7Ozs7OztzQkN3QkU3RCxFQUFBLEdBQUE0QixFQXFDWUMsR0FyQkw5QixFQUFBLE9BQUksTUFBU0EsV0FBU00sRUFBQXdELEVBQUEsRUFBVSxnQkFBYSxRQUFBLFFBQUEsR0FBQTtBQUFBLE1BZmpELE9BQUt6RCxFQUFBO0FBQUE7UUFBNkJDLEVBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU07QUFBQSxRQUFXVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLO0FBQUEsUUFBV1csRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFFBQVlXLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLO0FBQUEsUUFBV1csRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksTUFBTSxFQUFFO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVTtBQUFBLFFBQWNLLEVBQUEsU0FBU00sRUFBQXdELEVBQUEsRUFBVSxpQkFBYTtBQUFBLFFBQXVCOUQsRUFBQSxTQUFTTSxFQUFBd0QsRUFBQSxFQUFVLGNBQWM5RCxFQUFBLFlBQVE7QUFBQSxNQUFBO01BYzlXLE1BQU1BLEVBQUE7QUFBQSxJQUFBO2tCQUdQLE1BS0U7QUFBQSxRQURNQSxFQUFBLGFBSlI2QixFQUtFVSxHQUFBO0FBQUE7VUFKQyxPQUFLbEMsRUFBQSxDQUFHQyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLEtBQUtXLEtBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQTtBQUFBLFVBQzlDLE1BQU1OLEVBQUE7QUFBQSxVQUNOLE1BQU1NLEVBQUFFLENBQUEsRUFBSztBQUFBLFFBQUE7UUFJZEosRUFXTSxPQUFBO0FBQUEsVUFYQSxPQUFLQyxFQUFBLENBQUdDLEVBQUFYLENBQUEsRUFBSSxNQUFNLE9BQU9XLEVBQUFYLENBQUEsRUFBSSxRQUFRLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxLQUFLLFVBQVUsUUFBUVcsRUFBQVgsQ0FBQSxFQUFJLElBQUksSUFBSSxDQUFBO0FBQUEsUUFBQTtVQUN0RlMsRUFFTSxPQUFBO0FBQUEsWUFGQSxVQUFRRSxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLGtCQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFVBQUEsS0FDdkVLLEVBQUEsT0FBTyxHQUFBLENBQUE7QUFBQSxVQUtKQSxFQUFBLG9CQUZSRSxFQUtNLE9BQUE7QUFBQTtZQUpILFVBQVFJLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssU0FBU1csRUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFVBQUEsS0FHM0RLLEVBQUEsV0FBVyxHQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0NwQixVQUFNRCxJQUFRQyxHQWVSaUMsSUFBT0MsR0FFUDZCLElBQWU1QyxFQUEyQixJQUFJLEdBQzlDNkMsSUFBZTdDLEVBQWEsRUFBSSxHQUNoQzhDLElBQWM5QyxFQUFhLEVBQUssR0FDaEMrQyxJQUFjL0MsRUFBYSxFQUFJLEdBQy9CZ0QsSUFBZ0JoRCxFQUFpQyxJQUFJLEdBQ3JEaUQsSUFBZWpELEVBQWMsRUFBRSxHQUMvQmtELElBQWVsRCxFQUE2QixJQUFJLEdBRWhEbUQsSUFBU25ELEVBQW1CLEVBQUUsR0FHOUJvRCxJQUFlLE1BQU07QUFDekIsTUFBQUMsRUFBQTtBQUFBLElBQ0YsR0FFTUMsSUFBZ0IsTUFBTTtBQUMxQixZQUFNQyxJQUFVO0FBQUEsUUFDZCxNQUFNWCxLQUFBLGdCQUFBQSxFQUFjO0FBQUEsUUFDcEIsWUFBWTtBQUFBLFFBQ1osV0FBVztBQUFBLE1BQUE7QUFHYixNQUFBSSxFQUFjLFFBQVEsSUFBSSxxQkFBcUIsQ0FBQ1EsTUFBWTtBQUMxRCxZQUFJQyxJQUE4QixDQUFBO0FBRWxDLFFBQUFELEVBQVEsUUFBUSxDQUFDRSxNQUFVO0FBQ3pCLGdCQUFNQyxJQUFhUixFQUFPLE1BQU0sUUFBUU8sRUFBTSxNQUFxQjtBQUVuRSxVQUFJQSxFQUFNLGtCQUNSRCxFQUFrQixLQUFLRSxDQUFVLEdBQ2pDVixFQUFhLE1BQU0sS0FBS1UsQ0FBVSxLQUVsQ1YsRUFBYSxRQUFRQSxFQUFhLE1BQU0sT0FBTyxDQUFDVyxNQUFVQSxNQUFVRCxDQUFVLEdBR2hGVixFQUFhLE1BQU0sS0FBSyxDQUFDWSxHQUFHQyxNQUFNRCxJQUFJQyxDQUFDO0FBQUEsUUFDekMsQ0FBQyxHQUVEakIsRUFBYSxRQUFRSSxFQUFhLE1BQU0sU0FBUyxDQUFDLEdBQ2xESCxFQUFZLFFBQVFHLEVBQWEsTUFBTSxTQUFTRSxFQUFPLE1BQU0sU0FBUyxDQUFDLEdBRW5FTSxFQUFrQixTQUFTLEtBQUczQyxFQUFLLHFCQUFxQjJDLENBQWlCO0FBQUEsTUFDL0UsR0FBR0YsQ0FBTyxHQUVWSixFQUFPLE1BQU0sUUFBUSxDQUFDWSxNQUFVO0FBQzlCLFFBQUlmLEVBQWMsU0FBT0EsRUFBYyxNQUFNLFFBQVFlLENBQUs7QUFBQSxNQUM1RCxDQUFDO0FBQUEsSUFDSCxHQUVNQyxJQUFjLE1BQU07QUFDeEIsWUFBTUMsSUFBbUIsTUFBTTtBQUM3QixRQUFJckIsRUFBYSxVQUFVLFNBRTNCTyxFQUFPLFFBQVEsTUFBTSxLQUFLUCxFQUFhLE1BQU0sUUFBUSxHQUNyRFUsRUFBQTtBQUFBLE1BQ0Y7QUFFQSxNQUFBSixFQUFhLFFBQVEsSUFBSSxpQkFBaUJlLENBQWdCLEdBRXREckIsRUFBYSxTQUFPTSxFQUFhLE1BQU0sUUFBUU4sRUFBYSxPQUFPLEVBQUUsV0FBVyxJQUFNO0FBQUEsSUFDNUYsR0FFTXNCLElBQWlCLENBQUNDLE1BQW1CO0FBQ3pDLE1BQUl2QixFQUFhLFVBQVUsUUFFM0JBLEVBQWEsTUFBTSxTQUFTO0FBQUEsUUFDMUIsVUFBVTtBQUFBLFFBQ1YsTUFBTXVCO0FBQUEsTUFBQSxDQUNQO0FBQUEsSUFDSCxHQUVNQyxJQUFlLE1BQU07QUFDekIsVUFBSW5CLEVBQWEsTUFBTSxXQUFXLEVBQUc7QUFFckMsWUFBTW9CLElBQW9CcEIsRUFBYSxNQUFNQSxFQUFhLE1BQU0sU0FBUyxDQUFDLElBQUk7QUFFOUUsTUFBQWlCLEVBQWVmLEVBQU8sTUFBTWtCLENBQVMsRUFBRSxVQUFVO0FBQUEsSUFDbkQsR0FFTUMsSUFBbUIsTUFBTTs7QUFDN0IsVUFBSXJCLEVBQWEsTUFBTSxXQUFXLEVBQUc7QUFFckMsWUFBTXNCLElBQXdCdEIsRUFBYSxNQUFNLENBQUMsSUFBSUEsRUFBYSxNQUFNO0FBRXpFLE1BQUFpQixJQUFlTSxJQUFBckIsRUFBTyxNQUFNb0IsQ0FBYSxNQUExQixnQkFBQUMsRUFBNkIsZUFBYyxDQUFDO0FBQUEsSUFDN0QsR0FFTUMsSUFBZ0IsTUFBTTtBQUMxQixVQUFJeEIsRUFBYSxNQUFNLFdBQVcsRUFBRztBQUVyQyxZQUFNb0IsSUFBb0JwQixFQUFhLE1BQU0sU0FBUyxJQUFJQSxFQUFhLE1BQU0sQ0FBQyxJQUFJQSxFQUFhLE1BQU0sQ0FBQyxJQUFJO0FBRTFHLE1BQUFpQixFQUFlZixFQUFPLE1BQU1rQixDQUFTLEVBQUUsVUFBVTtBQUFBLElBQ25ELEdBRU1LLElBQW9CLE1BQU07QUFDOUIsVUFBSXpCLEVBQWEsTUFBTSxXQUFXLEVBQUc7QUFFckMsWUFBTXNCLElBQXdCdEIsRUFBYSxNQUFNLENBQUMsSUFBSTtBQUV0RCxNQUFBaUIsRUFBZWYsRUFBTyxNQUFNb0IsQ0FBYSxFQUFFLFVBQVU7QUFBQSxJQUN2RCxHQUVNbEIsSUFBdUIsTUFBTTtBQUNqQyxNQUFJVCxFQUFhLFVBQVUsUUFDdkJoRSxFQUFNLFNBQVMsU0FFZmtFLEVBQVksU0FBU0MsRUFBWSxTQUVuQ0gsRUFBYSxNQUFNLE1BQU0sU0FBUyxJQUFJaEUsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBSyxPQUFPQSxFQUFNLEtBQUssUUFDckZnRSxFQUFhLE1BQU0sTUFBTSxVQUFVLEdBQUdoRSxFQUFNLEtBQUssTUFBTUEsRUFBTSxLQUFLLE1BQU1BLEVBQU0sS0FBSyxXQUduRmdFLEVBQWEsTUFBTSxNQUFNLFNBQVMsSUFBSWhFLEVBQU0sS0FBSyxTQUFTQSxFQUFNLEtBQUssT0FBT0EsRUFBTSxLQUFLLE1BQ3ZGZ0UsRUFBYSxNQUFNLE1BQU0sVUFBVSxHQUFHaEUsRUFBTSxLQUFLLFFBQVFBLEVBQU0sS0FBSyxNQUFNQSxFQUFNLEtBQUs7QUFBQSxJQUV6RjtBQUVBLFdBQUErRixHQUFVLE1BQU07QUFDZCxNQUFJL0IsRUFBYSxVQUFVLFNBRTNCTyxFQUFPLFFBQVEsTUFBTSxLQUFLUCxFQUFhLE1BQU0sUUFBUSxHQUVyRFUsRUFBQSxHQUNBVSxFQUFBLEdBQ0FYLEVBQUE7QUFBQSxJQUNGLENBQUMsR0FFRHVCLEdBQVksTUFBTTs7QUFDaEIsT0FBQUosSUFBQXhCLEVBQWMsVUFBZCxRQUFBd0IsRUFBcUIsZUFDckJLLElBQUEzQixFQUFhLFVBQWIsUUFBQTJCLEVBQW9CO0FBQUEsSUFDdEIsQ0FBQyxtQkFJRDlGLEVBMEdVLFdBQUE7QUFBQSxNQXpHUCxPQUFLRyxFQUFBO0FBQUE7UUFBaUNDLEVBQUFYLENBQUEsRUFBSSxTQUFTO0FBQUEsUUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVTtBQUFBLFFBQWNXLEVBQUFYLENBQUEsRUFBSSxJQUFJO0FBQUEsUUFBV1csRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxNQUFBO01BUTFKLEtBQUk7QUFBQSxJQUFBO01BSU0sQ0FBQUksRUFBTSxjQUFjbUUsV0FBZ0JuRSxFQUFNLGNBRnBERyxFQXlDVSxXQUFBO0FBQUE7UUF4Q1AsT0FBS0csRUFBQSxDQUFHQyxFQUFBWCxDQUFBLEVBQUksUUFBUSxNQUFNSSxFQUFNLFFBQVFPLEVBQUFYLENBQUEsRUFBSSxNQUFNLFVBQVVXLEVBQUFYLENBQUEsRUFBSSxNQUFNLEtBQUtXLEVBQUFYLENBQUEsRUFBSSxNQUFNLFFBQVFXLEVBQUFYLENBQUEsRUFBSSxNQUFNLElBQUksQ0FBQTtBQUFBLE1BQUE7UUFLcEdJLEVBQU0sY0FGZEcsRUFpQk0sT0FBQTtBQUFBO1VBaEJILE9BQUtHLEVBQUEsQ0FBR0MsS0FBSSxRQUFRLE1BQU1BLEVBQUFYLENBQUEsRUFBSSxLQUFLLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxNQUFNLFFBQVFXLEVBQUFYLENBQUEsRUFBSSxJQUFJLEdBQUcsQ0FBQTtBQUFBLFFBQUE7VUFLL0RJLEVBQU0sY0FGZEcsRUFLTSxPQUFBO0FBQUE7WUFKSCxPQUFLRyxFQUFBLENBQUdDLEtBQUksZ0JBQWdCLEtBQUtOLEVBQUEsY0FBY00sRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxhQUFhVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLFVBQVUsQ0FBQTtBQUFBLFVBQUEsR0FHaEcwQyxFQUFBdEMsRUFBTSxLQUFLLEdBQUEsQ0FBQTtVQUtSQSxFQUFNLGlCQUZkRyxFQUtNLE9BQUE7QUFBQTtZQUpILE9BQUtHLEVBQUEsQ0FBR0MsS0FBSSxnQkFBZ0IsS0FBS0EsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxTQUFTVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBO0FBQUEsVUFBQSxHQUdwRjBDLEVBQUF0QyxFQUFNLFFBQVEsR0FBQSxDQUFBOztTQU1aQSxFQUFNLGNBQWNtRSxFQUFBLGNBRjdCaEUsRUFpQk0sT0FBQTtBQUFBO1VBaEJILFVBQVFJLEVBQUFYLENBQUEsRUFBSSxRQUFRLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxNQUFNLFFBQVFXLEtBQUksSUFBSSxHQUFHLENBQUE7QUFBQSxRQUFBO1VBR3hEZ0MsRUFLRVcsR0FBQTtBQUFBLFlBSkMsVUFBVWUsRUFBQTtBQUFBLFlBQ1YsTUFBTTFELEVBQUF5QixDQUFBLEVBQUs7QUFBQSxZQUNYLFVBQVV6QixFQUFBc0MsQ0FBQSxFQUFTO0FBQUEsWUFDbkIsU0FBS3FELEVBQUEsQ0FBQSxNQUFBQSxFQUFBLENBQUEsSUFBQSxDQUFBcEMsTUFBRTdELEVBQUEsaUJBQWlCeUYsRUFBQSxJQUFxQkksRUFBQTtBQUFBLFVBQWlCO1VBR2pFdkQsRUFLRVcsR0FBQTtBQUFBLFlBSkMsVUFBVWdCLEVBQUE7QUFBQSxZQUNWLE1BQU0zRCxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsWUFDWCxVQUFVekIsRUFBQXNDLENBQUEsRUFBUztBQUFBLFlBQ25CLFNBQUtxRCxFQUFBLENBQUEsTUFBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQXBDLE1BQUU3RCxFQUFBLGlCQUFpQnVGLEVBQUEsSUFBaUJLLEVBQUE7QUFBQSxVQUFhOzs7TUFLN0RwRCxFQUFvQkMsRUFBQSxRQUFBLFFBQUEsQ0FBQSxHQUFBLFFBQUEsRUFBQTtBQUFBLE1BRXBCckMsRUFpRE0sT0FBQTtBQUFBLFFBakRBLE9BQUtDLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLFNBQVMsUUFBUSxDQUFBO0FBQUEsTUFBQTtRQUNqQ1MsRUFlSyxNQUFBO0FBQUEsVUFkRixPQUFLQyxFQUFBO0FBQUE7WUFBbUROLEVBQU0sU0FBSztBQUFBLFlBQXVCTyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFlBQWdCVyxFQUFBWCxDQUFBLEVBQUksSUFBSTtBQUFBLFlBQWVXLEVBQUFYLENBQUEsRUFBSSxhQUFhO0FBQUEsWUFBZVcsRUFBQVgsQ0FBQSxFQUFJLFNBQVMsRUFBRTtBQUFBLFlBQWtCVyxFQUFBWCxDQUFBLEVBQUksVUFBVTtBQUFBLFlBQWVXLEVBQUFYLENBQUEsRUFBSSxLQUFLO0FBQUEsVUFBQTttQkFValA7QUFBQSxVQUFKLEtBQUlvRTtBQUFBLFVBQ0gsVUFBUVE7QUFBQSxRQUFBO1VBRVQvQixFQUFRQyxFQUFBLFFBQUEsV0FBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsUUFBQTtRQWdCRnpDLEVBQUEsY0FBY2tFLEVBQUEsY0FidEJoRSxFQThCTSxPQUFBO0FBQUE7VUE3QkgsT0FBS0csRUFBQTtBQUFBO1lBQXdEQyxFQUFBWCxDQUFBLEVBQUksU0FBUztBQUFBLFlBQW9CVyxFQUFBWCxDQUFBLEVBQUksWUFBWTtBQUFBLFlBQWVXLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsWUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsWUFBbUJXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsWUFBa0JXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsWUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxPQUFPO0FBQUEsWUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxlQUFlO0FBQUEsWUFBZUksRUFBTSxvQkFBaUIsYUFBQTtBQUFBLFVBQUE7O1VBY2pVdUMsRUFNRVcsR0FBQTtBQUFBLFlBTEMsT0FBSzVDLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxLQUFLVyxFQUFBWCxDQUFBLEVBQUksZUFBZSxFQUFFLENBQUE7QUFBQSxZQUNsRCxVQUFVcUUsRUFBQTtBQUFBLFlBQ1YsTUFBTTFELEVBQUF5QixDQUFBLEVBQUs7QUFBQSxZQUNYLFVBQVV6QixFQUFBc0MsQ0FBQSxFQUFTO0FBQUEsWUFDbkIsU0FBS3FELEVBQUEsQ0FBQSxNQUFBQSxFQUFBLENBQUEsSUFBQSxDQUFBcEMsTUFBRTdELEVBQUEsaUJBQWlCeUYsRUFBQSxJQUFxQkksRUFBQTtBQUFBLFVBQWlCO1VBR2pFdkQsRUFNRVcsR0FBQTtBQUFBLFlBTEMsT0FBSzVDLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxLQUFLVyxFQUFBWCxDQUFBLEVBQUksZUFBZSxFQUFFLENBQUE7QUFBQSxZQUNuRCxVQUFVc0UsRUFBQTtBQUFBLFlBQ1YsTUFBTTNELEVBQUF5QixDQUFBLEVBQUs7QUFBQSxZQUNYLFVBQVV6QixFQUFBc0MsQ0FBQSxFQUFTO0FBQUEsWUFDbkIsU0FBS3FELEVBQUEsQ0FBQSxNQUFBQSxFQUFBLENBQUEsSUFBQSxDQUFBcEMsTUFBRTdELEVBQUEsaUJBQWlCdUYsRUFBQSxJQUFpQkssRUFBQTtBQUFBLFVBQWE7Ozs7Ozs7Ozs7Ozs7O0FDalEvRCxVQUFNN0YsSUFBUUM7c0JBUWRDLEtBQUE0QixFQXNCWUMsR0FMTDlCLEVBQUEsT0FBTyxHQUFBO0FBQUEsTUFoQlgsT0FBS0ssRUFBQTtBQUFBO1FBQW9DQyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFFBQVlXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1csRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLO0FBQUEsUUFBV1csRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFFBQVlXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxRQUFXVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLFFBQWVXLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxRQUFjVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVE7QUFBQSxRQUFlVyxFQUFBWCxDQUFBLEVBQUksVUFBVSxLQUFLO0FBQUEsTUFBQTtNQWM1VSxNQUFNSSxFQUFNO0FBQUEsTUFDWixRQUFRQSxFQUFNLFdBQVdPLEVBQUF1QyxFQUFBLEVBQU8sUUFBUXZDLEVBQUF1QyxFQUFBLEVBQU87QUFBQSxJQUFBO2tCQUdoRCxNQUFnQztBQUFBLFFBQWhDUCxFQUFnQ0MsR0FBQTtBQUFBLFVBQXJCLE1BQU1qQyxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsUUFBQTtRQUV0QjNCLEVBQThCLFFBQUEsTUFBQWlDLEVBQXJCdEMsRUFBTSxLQUFLLEdBQUEsQ0FBQTtBQUFBLE1BQUE7Ozs7Ozs7Ozs7O0FDckN0QixVQUFNQSxJQUFRQzsyQkFJZEUsRUF1QlMsVUFBQTtBQUFBLE1BdEJOLE9BQUtHLEVBQUE7QUFBQTtRQUFvQ04sRUFBTSxZQUFvQk8sRUFBQVgsQ0FBQSxFQUFJLEdBQUcsV0FBV1csRUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxTQUFTLElBQWEsQ0FBQVcsRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxTQUFTVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTztBQUFBLFFBQVNXLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjVyxFQUFBWCxDQUFBLEVBQUksSUFBSTtBQUFBLFFBQVlXLEVBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUs7QUFBQSxRQUFXVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRTtBQUFBLFFBQVdXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsUUFBZUksRUFBTSxXQUFRLFdBQUE7QUFBQSxNQUFBOztNQWdCclp5QyxFQUFRQyxFQUFBLFFBQUEsV0FBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsTUFDUnJDLEVBSU0sT0FBQTtBQUFBLFFBSkEsT0FBS0MsRUFBQSxDQUFHQyxLQUFJLFFBQVEsTUFBTUEsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sUUFBUVcsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sUUFBUVcsRUFBQVgsQ0FBQSxFQUFJLElBQUksSUFBSSxDQUFBO0FBQUEsTUFBQTtRQUM5RVMsRUFFTyxRQUFBO0FBQUEsVUFGQSxVQUFRTCxFQUFNLFdBQVEsS0FBQSxnQkFBd0JPLEtBQUksS0FBSyxLQUFLLFNBQVNBLEtBQUksZ0JBQWdCLEdBQUcsQ0FBQTtBQUFBLFFBQUEsR0FDOUYrQixFQUFBdEMsRUFBTSxLQUFLLEdBQUEsQ0FBQTtBQUFBLE1BQUE7Ozs7Ozs7OztBQ3ZCcEIsVUFBTUEsSUFBUUM7MkJBSWRFLEVBa0JTLFVBQUE7QUFBQSxNQWpCTixPQUFLRyxFQUFBO0FBQUE7UUFBbUNDLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxRQUFlVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNO0FBQUEsUUFBZVcsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFFBQWNXLEVBQUFYLENBQUEsRUFBSSxJQUFJO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLFFBQVdXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsUUFBV1csRUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRTtBQUFBLFFBQVlXLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxNQUFBOztNQWNuU1MsRUFBOEIsUUFBQSxNQUFBaUMsRUFBckJ0QyxFQUFNLEtBQUssR0FBQSxDQUFBO0FBQUEsTUFFcEJ1QyxFQUErQkMsR0FBQTtBQUFBLFFBQXBCLE1BQU1qQyxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsTUFBQTs7Ozs7Ozs7O0FDdkJ4QixVQUFNaEMsSUFBUUM7c0JBTWRDLEVBQUEsR0FBQUMsRUFzQlUsV0F0QlZDLElBc0JVO0FBQUEsTUFyQlJDLEVBRUssTUFBQTtBQUFBLFFBRkEsVUFBUUUsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxJQUFJLENBQUE7QUFBQSxNQUFBLEdBQzlCMEMsRUFBQXRDLEVBQU0sT0FBTyxHQUFBLENBQUE7QUFBQSxNQUdsQkssRUFnQkssTUFBQTtBQUFBLFFBaEJBLE9BQUtDLEVBQUEsQ0FBR0MsS0FBSSxRQUFRLE1BQU1BLEVBQUFYLENBQUEsRUFBSSxLQUFLLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxJQUFJLEtBQUtXLEVBQUFYLENBQUEsRUFBSSxhQUFhLEdBQUcsQ0FBQTtBQUFBLE1BQUE7UUFDN0VTLEVBRUssTUFGTG9ELElBRUs7QUFBQSxVQURIaEIsRUFBd0JDLEVBQUEsUUFBQSxZQUFBLENBQUEsR0FBQSxRQUFBLEVBQUE7QUFBQSxRQUFBO1FBRzFCckMsRUFFSyxNQUZMcUQsSUFFSztBQUFBLFVBREhqQixFQUF3QkMsRUFBQSxRQUFBLFlBQUEsQ0FBQSxHQUFBLFFBQUEsRUFBQTtBQUFBLFFBQUE7UUFHMUJyQyxFQUVLLE1BRkw4RixJQUVLO0FBQUEsVUFESDFELEVBQXdCQyxFQUFBLFFBQUEsWUFBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsUUFBQTtRQUcxQnJDLEVBRUssTUFGTCtGLElBRUs7QUFBQSxVQURIM0QsRUFBd0JDLEVBQUEsUUFBQSxZQUFBLENBQUEsR0FBQSxRQUFBLEVBQUE7QUFBQSxRQUFBOzs7O29FQ2hDbkIyRCxLQUFhO0FBQUEsRUFDeEIsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsWUFBWTtBQUNkLDhFQzRCUUMsS0FBZTs7Ozs7Ozs7Ozs7O0FBYnJCLFVBQU10RyxJQUFRQyxHQVVSc0csSUFBVW5GLEVBQUEsR0FDVm9GLElBQU1wRixFQUFBLEdBSU5xRixJQUFxQnhELEVBQWlCLE1BQU07QUFDaEQsY0FBUWpELEVBQU0sV0FBQTtBQUFBLFFBQ1osS0FBS3FHLEdBQVc7QUFDZCxpQkFBT3pHLEVBQUksT0FBTztBQUFBLFFBQ3BCLEtBQUt5RyxHQUFXO0FBQ2QsaUJBQU96RyxFQUFJLE9BQU87QUFBQSxRQUNwQixLQUFLeUcsR0FBVztBQUNkLGlCQUFPekcsRUFBSSxPQUFPO0FBQUEsUUFDcEI7QUFDRSxpQkFBT3lHLEdBQVc7QUFBQSxNQUFBO0FBQUEsSUFFeEIsQ0FBQyxHQUVLSyxJQUFzQixNQUFNOztBQUNoQyxZQUFNQyxLQUFhZixJQUFBWSxFQUFJLFVBQUosZ0JBQUFaLEVBQVcsWUFDeEJnQixLQUFnQlgsSUFBQU0sRUFBUSxVQUFSLGdCQUFBTixFQUFlLGNBQWMsa0JBQWtCVSxDQUFVO0FBRS9FLE1BQUlBLEtBQWNDLElBQ2hCQSxFQUFjLFNBQVNOLEtBQ2RFLEVBQUksVUFDYkEsRUFBSSxNQUFNLE1BQU1GO0FBQUEsSUFFcEI7MkJBSUFuRyxFQTRCVSxXQUFBO0FBQUEsTUEzQlAsT0FBS0csRUFBQSxDQUFBLGNBQWlCQyxFQUFBWCxDQUFBLEVBQUksUUFBUSxLQUFLLENBQUE7QUFBQSxlQUNwQztBQUFBLE1BQUosS0FBSTJHO0FBQUEsTUFDSCxPQUFLTTtBQUFBQSxRQUFTNUcsRUFBQSxTQUFTQSxFQUFBO1VBQXNDLE9BQUFBLEVBQUEsU0FBUztBQUFBLFVBQStCLFFBQUFBLEVBQUEsVUFBVTtBQUFBLFFBQUEsSUFBaUM7QUFBQSxNQUFBO0FBQUE7T0FTakpDLEVBQUEsRUFBQSxHQUFBQyxFQUtFbUQsR0FBQSxNQUFBd0QsR0FEaUI5RyxFQUFNLFVBQWhCK0csWUFKVDVHLEVBS0UsVUFBQTtBQUFBLFFBSkMsS0FBSzRHLEVBQU87QUFBQSxRQUNaLE9BQUssY0FBZ0JBLEVBQU8sS0FBSztBQUFBLFFBQ2pDLFFBQVFBLEVBQU87QUFBQSxNQUFBO01BSWxCMUcsRUFRRSxPQUFBO0FBQUEsUUFQQyxLQUFLSixFQUFBO0FBQUEsUUFDTCw0QkFBMEJNLEVBQUFYLENBQUEsRUFBSSxNQUFNLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxPQUFPLFFBQVE2RyxFQUFBLEtBQWtCLENBQUE7QUFBQSxRQUNoRyxlQUFleEcsRUFBQSxTQUFTLFNBQVM7QUFBQSxRQUNqQyxTQUFTRCxFQUFNLFNBQU0sU0FBQTtBQUFBLGlCQUNsQjtBQUFBLFFBQUosS0FBSXdHO0FBQUEsUUFDSCxLQUFLdkcsRUFBQSxPQUFPcUc7QUFBQSxRQUNaLFNBQU9JO0FBQUEsTUFBQTs7Ozs7Ozs7Ozs7O0FDeEVaLFVBQU0xRyxJQUFRQzsyQkFTZEUsRUFzQk0sT0FBQTtBQUFBLE1BdEJBLG1DQUFpQ0ksRUFBQVgsQ0FBQSxFQUFJLFNBQVMsVUFBVVcsRUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxRQUFRVyxLQUFJLFVBQVUsT0FBTyxDQUFBO0FBQUEsSUFBQTtNQUN6R0YsRUFrQk0sT0FBQTtBQUFBLFFBakJILE9BQUtDLEVBQUE7QUFBQSxVQUFZQyxFQUFBWCxDQUFBLEVBQUksU0FBUztBQUFBLFVBQWtCVyxFQUFBWCxDQUFBLEVBQUksT0FBTztBQUFBLFVBQWNXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFFBQUE7O1FBU2hLMkMsRUFPRXlFLElBQUE7QUFBQSxVQU5DLEtBQUtoSCxFQUFNO0FBQUEsVUFDWCxPQUFLTSxFQUFBLENBQUdDLEVBQUFYLENBQUEsRUFBSSxNQUFNLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxPQUFPLElBQUksQ0FBQTtBQUFBLFVBQ3ZDLFdBQVNJLEVBQU07QUFBQSxVQUNmLGNBQVlPLEVBQUE4RixFQUFBLEVBQVc7QUFBQSxVQUN2QixTQUFTckcsRUFBTTtBQUFBLFVBQ2YsS0FBS0EsRUFBTTtBQUFBLFFBQUE7O01BSWhCeUMsRUFBUUMsRUFBQSxRQUFBLFdBQUEsQ0FBQSxHQUFBLFFBQUEsRUFBQTtBQUFBLElBQUE7Ozs7Ozs7Ozs7O0FDckNWLFVBQU0xQyxJQUFRQzsyQkFNZEUsRUFvQk0sT0FBQTtBQUFBLE1BbkJILE9BQUtHLEVBQUE7QUFBQTtRQUFrQ04sRUFBTSxRQUFLLEtBQUE7QUFBQSxRQUFxQk8sRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFvQlcsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sRUFBRTtBQUFBLFFBQWNXLEVBQUFYLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUTtBQUFBLFFBQWFXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxRQUFZSSxFQUFNLFNBQVNBLEVBQU0sTUFBTSxTQUFBLEVBQVcsY0FBY08sRUFBQVgsQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFJLElBQUEsQ0FBQTtBQUFBLFFBQWNJLEVBQU0sU0FBaUJPLEVBQUFYLENBQUEsRUFBSSxTQUFTLFVBQVVXLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssU0FBU1csS0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLElBQWEsQ0FBQUEsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSyxHQUFHO0FBQUEsTUFBQTs7TUFlbFpJLEVBQU0sU0FGZEUsRUFBQSxHQUFBQyxFQUtNLE9BTE5DLElBS01rQyxFQUREdEMsRUFBTSxLQUFLLEdBQUEsQ0FBQTs7Ozs7Ozs7OzsyQkNqQmxCRyxFQW1CTSxPQUFBO0FBQUEsTUFsQkgsT0FBS0csRUFBQTtBQUFBLFFBQVVDLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjVyxFQUFBWCxDQUFBLEVBQUksSUFBSTtBQUFBLFFBQWVXLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxRQUFlSyxFQUFBLFdBQVdNLEVBQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sT0FBTyxLQUFLLElBQUEsQ0FBS1csRUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU87QUFBQSxNQUFBOztNQVlyTEssRUFBQSxnQkFKUjZCLEVBS0VVLEdBQUE7QUFBQTtRQUpDLFVBQVFqQyxFQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQTtBQUFBLFFBQzNCLE1BQU1XLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxRQUNYLE1BQU16QixFQUFBRSxDQUFBLEVBQUs7QUFBQSxNQUFBO01BSWRKLEVBRU0sZUFEREosRUFBQSxPQUFPLEdBQUEsQ0FBQTtBQUFBLElBQUE7O0lDdkJWZ0gsS0FBVyxPQUFPLFdBQVcsR0FFdEJDLEtBQWMsTUFBTTtBQUMvQixRQUFNQyxJQUFrQi9GLEVBQWEsRUFBSztBQUUxQyxTQUFBZ0csR0FBeUJILElBQVUsRUFBRSxpQkFBQUUsR0FBaUIsR0FNL0MsRUFBRSx3QkFKc0IsTUFBTTtBQUNuQyxJQUFBQSxFQUFnQixRQUFRO0FBQUEsRUFDMUIsRUFFUztBQUNYLEdBRWFFLEtBQWlCLE1BQ3JCQyxHQUF3QkwsRUFBUSxHQ2xCNUJNLEtBQXNCLDhCQUV0QkMsS0FBb0I7QUFBQSxFQUMvQixVQUFVO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsRUFBQTtBQUFBLEVBRVQsVUFBVTtBQUFBLElBQ1IsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLEVBQUE7QUFFWCxHQUVhQyxLQUFjLENBQUNDLEdBQWdCQyxNQUNuQyxDQUFDQyxNQUFvQztBQUMxQyxNQUFJQyxJQUEyQkwsR0FBa0I7QUFFakQsU0FBS0ksRUFBTSxLQUFBLEVBQU8sTUFBTUYsQ0FBTSxNQUM1QkcsSUFBUztBQUFBLElBQ1AsU0FBU0YsS0FBV0o7QUFBQUEsSUFDcEIsT0FBTztBQUFBLEVBQUEsSUFJSk07QUFDVCxHQUdXQyxLQUF3QixDQUFDLEVBQUUsV0FBQUMsR0FBVyxXQUFBQyxHQUFXLFVBQUFDLEdBQVUsT0FBQUwsUUFBOEI7QUFDcEcsUUFBTU0sSUFBdUJOLEVBQU0sV0FBVyxLQUFLLENBQUNLLEdBQzlDRSxJQUFZSixLQUFhSCxFQUFNLFNBQVNHO0FBRTlDLFNBQU8sRUFEWSxDQUFDRyxLQUF3QkYsS0FBYUosRUFBTSxTQUFTSSxNQUNsRCxDQUFDRztBQUN6QixHQUVhQyxLQUEyQixDQUFDO0FBQUEsRUFDdkMsZ0JBQUFDO0FBQUEsRUFDQSxXQUFBTjtBQUFBLEVBQ0EsV0FBQUM7QUFBQSxFQUNBLFVBQUFDO0FBQUEsRUFDQSxZQUFBSztBQUFBLEVBQ0EsT0FBQVY7QUFDRixNQU93QjtBQUV0QixNQUFJUyxNQUFtQjtBQUNyQixXQUFPO0FBQUEsTUFDTCxTQUFTQTtBQUFBLE1BQ1QsT0FBTztBQUFBLElBQUE7QUFJWCxNQUFJQyxHQUFZO0FBQ2QsVUFBTUMsSUFBYUMsR0FBaUJaLEVBQU0sT0FBT1UsQ0FBVTtBQUUzRCxRQUFJLENBQUNDLEVBQVc7QUFDZCxhQUFPQTtBQUFBLEVBRVg7QUFHQSxNQUFJTixLQUFZTCxFQUFNLE1BQU0sS0FBQSxNQUFXO0FBQ3JDLFdBQU9KLEdBQWtCO0FBRzNCLE1BQUlPLEtBQWFDLEdBQVc7QUFDMUIsVUFBTVMsSUFBbUJDLEdBQWU7QUFBQSxNQUN0QyxXQUFBWDtBQUFBLE1BQ0EsV0FBQUM7QUFBQSxNQUNBLFVBQUFDO0FBQUEsTUFDQSxPQUFPTCxFQUFNO0FBQUEsSUFBQSxDQUNkO0FBRUQsUUFBSSxDQUFDYSxFQUFpQjtBQUNwQixhQUFPQTtBQUFBLEVBRVg7QUFDQSxTQUFPakIsR0FBa0I7QUFDM0IsR0FFYWtCLEtBQWlCLENBQUMsRUFBRSxXQUFBWCxHQUFXLFdBQUFDLEdBQVcsVUFBQUMsR0FBVSxPQUFBTCxRQUFnRDtBQUMvRyxRQUFNZSxJQUFXO0FBQUEsSUFDZixTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsRUFBQTtBQVVULFNBUEFBLEVBQVMsUUFBUWIsR0FBc0I7QUFBQSxJQUNyQyxXQUFBQztBQUFBLElBQ0EsV0FBQUM7QUFBQSxJQUNBLFVBQUFDO0FBQUEsSUFDQSxPQUFBTDtBQUFBLEVBQUEsQ0FDRCxHQUVHZSxFQUFTLFVBRWJBLEVBQVMsVUFBVXBCLElBRWZRLEtBQWFDLElBQ2ZXLEVBQVMsVUFBVSx5QkFBeUJoSSxHQUFhcUgsQ0FBUyxDQUFDLFFBQVFySCxHQUFhb0gsQ0FBUyxDQUFDLGdCQUN6RkEsSUFDVFksRUFBUyxVQUFVLE9BQU9oSSxHQUFhb0gsQ0FBUyxDQUFDLHlCQUN4Q0MsTUFDVFcsRUFBUyxVQUFVLGtCQUFrQmhJLEdBQWFxSCxDQUFTLENBQUMsaUJBR3ZEVztBQUNUO0FBRU8sU0FBU0gsR0FBaUJaLEdBQWVVLEdBQXVFO0FBQ3JILGFBQVdNLEtBQWFOLEdBQVk7QUFDbEMsVUFBTUMsSUFBYUssRUFBVWhCLENBQUs7QUFDbEMsUUFBSSxDQUFDVyxFQUFXO0FBQ2QsYUFBT0E7QUFBQSxFQUVYO0FBRUEsU0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLEVBQUE7QUFFWDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUdFLFVBQU12SSxJQUFRQyxHQWNSaUMsSUFBT0MsR0FFUDBHLElBQWFDLGtCQUF1QyxHQUVwREMsSUFBYzFCLEdBQUEsR0FFZDJCLElBQWU1SCxFQUFhLEVBQUssR0FDakM2SCxJQUFXN0gsRUFBc0JvRyxHQUFrQixRQUFRLEdBRTNEMEIsSUFBaUJqRyxFQUFTLE1BQU9qRCxFQUFNLFdBQVcsR0FBR0EsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBTSxHQUNuRm1KLElBQVlsRyxFQUFTLE1BQU00RixFQUFXLFNBQVM3SSxFQUFNLGFBQWEsR0FDbEVvSixJQUFZbkcsRUFBUyxNQUNyQm9HLEVBQWlCLFFBQWMsS0FDOUJMLEVBQWEsUUFDWCxDQUFDQyxFQUFTLE1BQU0sUUFEUyxFQUVqQyxHQUNLSSxJQUFtQnBHLEVBQVMsTUFBTWpELEVBQU0sVUFBVSxFQUFFLEdBQ3BEc0osSUFBd0JyRyxFQUFTLE1BQU1tRyxFQUFVLFNBQVNILEVBQVMsTUFBTSxPQUFPLEdBRWhGTSxJQUE4QixNQUM5QnZKLEVBQU0sVUFBVSxLQUNYO0FBQUEsTUFDTCxTQUFTQSxFQUFNO0FBQUEsTUFDZixPQUFPO0FBQUEsSUFBQSxJQUVQLENBQUNBLEVBQU0sWUFBWW1KLEVBQVUsUUFBYzNCLEdBQWtCLFdBQzFEQSxHQUFrQjtBQUczQixXQUFBZ0MsR0FBWSxNQUFNO0FBQ2hCLE1BQUFQLEVBQVMsUUFBUU0sRUFBQTtBQUFBLElBQ25CLENBQUMsR0FFRGxJO0FBQUEsTUFDRXdIO0FBQUEsTUFDQSxNQUFNO0FBQ0osUUFBSUEsRUFBVyxVQUFPRyxFQUFhLFFBQVE7QUFBQSxNQUM3QztBQUFBLE1BQ0EsRUFBRSxXQUFXLEdBQUE7QUFBQSxJQUFLLEdBR3BCM0g7QUFBQSxNQUNFLE1BQU0wSCxLQUFBLGdCQUFBQSxFQUFhLGdCQUFnQjtBQUFBLE1BQ25DLENBQUNVLE1BQWE7QUFDWixRQUFJQSxRQUF1QixRQUFRO0FBQUEsTUFDckM7QUFBQSxNQUNBLEVBQUUsV0FBVyxHQUFBO0FBQUEsSUFBSyxHQUdwQnBJO0FBQUEsTUFDRTRIO0FBQUEsTUFDQSxNQUFNO0FBQ0osUUFBQS9HLEVBQUssU0FBUytHLEVBQVMsTUFBTSxLQUFLO0FBQUEsTUFDcEM7QUFBQSxNQUNBLEVBQUUsTUFBTSxJQUFNLFdBQVcsR0FBQTtBQUFBLElBQUssbUJBS2hDOUksRUF1RU0sT0FBQTtBQUFBLE1BdkVBLGlDQUErQkksRUFBQVgsQ0FBQSxFQUFJLFFBQVEsTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxRQUFRVyxLQUFJLElBQUksT0FBTyxDQUFBO0FBQUEsSUFBQTtNQUMvRkYsRUErRFEsU0FBQTtBQUFBLFFBOURMLE9BQUtDLEVBQUE7QUFBQSxVQUFZQyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCVyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFVBQWNXLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxVQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksWUFBWTtBQUFBLFVBQWN3SixFQUFBLFFBQVk3SSxFQUFBWCxDQUFBLEVBQUksS0FBSyxNQUFNLE9BQU8sUUFBUVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsVUFBaUJLLEVBQUEsWUFBWU0sRUFBQVgsQ0FBQSxFQUFJLFFBQVEsVUFBVVcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sV0FBVyxJQUFBLENBQUtXLEtBQUksT0FBTyxPQUFPO0FBQUEsUUFBQTtRQVN4VCxLQUFLTixFQUFBO0FBQUEsTUFBQTtXQUVOSSxFQVNFLFNBQUE7QUFBQSxVQVJDLFNBQVM4SSxFQUFBO0FBQUEsVUFDVCxTQUFPLENBQUEseUJBQUEsQ0FBMkI7QUFBQSxVQUNsQyxVQUFVbEosRUFBQTtBQUFBLFVBQ1YsTUFBTUEsRUFBQTtBQUFBLFVBQ1AsS0FBSTtBQUFBLFVBQ0gsSUFBSUEsRUFBQTtBQUFBLFVBQ0wsTUFBSztBQUFBLHdEQUNJNEksRUFBVSxRQUFBL0U7QUFBQSxRQUFBO2VBQVYrRSxFQUFBLEtBQVU7QUFBQSxRQUFBO1FBR3JCeEksRUF5Qk0sT0FBQTtBQUFBLFVBeEJILE9BQUtDLEVBQUE7QUFBQTtZQUFzREMsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxZQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxZQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLFlBQWVXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxZQUFtQlcsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxZQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssT0FBTztBQUFBLFlBQWVXLEVBQUFYLENBQUEsRUFBSSxTQUFTO0FBQUEsWUFBb0J1SixFQUFBLFNBQXlCQyxFQUFBLFFBQVk3SSxLQUFJLEdBQUcsT0FBTyxRQUFRLFFBQUssQ0FBSUEsS0FBSSxHQUFHLFdBQVdBLEVBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBSSxDQUFBO2NBQW1Dd0osRUFBQSxRQUErQixDQUFBN0ksRUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxPQUFPLE9BQU9XLEVBQUFYLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUSxLQUFLLElBQXVCLENBQUFXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sU0FBU1csRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPO0FBQUEsWUFBQTtBQUFBOztVQXNCMWpCdUosRUFBQSxjQUpSckgsRUFLRVUsR0FBQTtBQUFBO1lBSkMsVUFBUWpDLEVBQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sU0FBUyxDQUFBO0FBQUEsWUFDaEMsTUFBTUssa0JBQWdCTSxFQUFBeUIsQ0FBQSxFQUFLLFNBQVN6QixFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsWUFDekMsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFVBQUE7O1FBT1JSLEVBQUEsY0FGUkUsRUFZTSxPQUFBO0FBQUE7VUFYSCxPQUFLRyxFQUFBLENBQUdDLEVBQUFYLENBQUEsRUFBSSxNQUFNLFNBQVNXLEVBQUFYLENBQUEsRUFBSSxRQUFRLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssSUFBSVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxNQUFNLENBQUE7QUFBQSxRQUFBO1VBR3BGUyxFQUFpQyxnQkFBeEI2SSxFQUFBLEtBQWMsR0FBQSxDQUFBO0FBQUEsVUFJZmpKLEVBQUEsZUFGUkUsRUFLTyxRQUFBO0FBQUE7WUFKSixPQUFLRyxFQUFBLENBQUdDLEtBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBO0FBQUEsVUFBQSxHQUV4QyxPQUNFK0IsRUFBRy9CLEVBQUFJLEVBQUEsRUFBYVYsRUFBQSxNQUFNLEtBQUksTUFDN0IsQ0FBQTs7O01BT0lxSixFQUFBLGNBSFJ4SCxFQUlFNEgsSUFBQTtBQUFBO1FBSEMsU0FBU0osRUFBQTtBQUFBLFFBQ1YsWUFBQTtBQUFBLE1BQUE7Ozs4SENsS0pLLEtBQWUsQ0FBQTs7Ozs7Ozs7Ozs7OztBQXNCZixVQUFNM0osSUFBUUMsR0FVUmtKLElBQVlsRyxFQUFTLE1BQU1qRCxFQUFNLFdBQVdBLEVBQU0sYUFBYTsyQkFJckVHLEVBZ0VNLE9BQUE7QUFBQSxNQS9ESCxPQUFLRyxFQUFBO0FBQUE7UUFBdUNDLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjVyxFQUFBWCxDQUFBLEVBQUksSUFBSTtBQUFBLFFBQVlXLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxRQUFjSyxFQUFBLFdBQVEsQ0FBQSxZQUFnQk0sRUFBQVgsQ0FBQSxFQUFJLGVBQWUsR0FBRyxJQUFJVyxFQUFBWCxDQUFBLEVBQUksT0FBTztBQUFBLE1BQUE7O01BUzFNUyxFQVNFLFNBQUE7QUFBQSxRQVJDLFNBQVM4SSxFQUFBO0FBQUEsUUFDVCxPQUFLN0ksRUFBQSxDQUFHQyxFQUFBWCxDQUFBLEVBQUksUUFBUSxJQUFJLENBQUE7QUFBQSxRQUN4QixVQUFVSSxFQUFNO0FBQUEsUUFDaEIsTUFBTUEsRUFBTTtBQUFBLFFBQ2IsS0FBSTtBQUFBLFFBQ0gsNEJBQUQsTUFBQTtBQUFBLFFBQUEsR0FBYyxDQUFBLFNBQUEsQ0FBQTtBQUFBLFFBQ2IsSUFBSUEsRUFBTTtBQUFBLFFBQ1gsTUFBSztBQUFBLE1BQUE7TUFHUEssRUFxQk0sT0FBQTtBQUFBLFFBcEJILE9BQUtDLEVBQUE7QUFBQTtVQUFrREMsRUFBQVgsQ0FBQSxFQUFJLFNBQVM7QUFBQSxVQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPO0FBQUEsVUFBYVcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLFVBQWF1SixFQUFBLFFBQVMsQ0FBSTVJLEVBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEdBQUcsU0FBUyxJQUFBLENBQUtXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sU0FBU1csRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPO0FBQUEsVUFBV1csRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFVBQWlCdUosRUFBQSxTQUFTO0FBQUEsVUFBdUJsSixFQUFBLFdBQVdNLEVBQUFYLENBQUEsRUFBSSxPQUFPLGNBQWNXLEVBQUFYLENBQUEsRUFBSSxPQUFPO0FBQUEsUUFBQTs7UUFrQjdidUosRUFBQSxjQUpSckgsRUFLRVUsR0FBQTtBQUFBO1VBSkMsVUFBUWpDLEVBQUFYLENBQUEsRUFBSSxLQUFLLE1BQU0sU0FBUyxDQUFBO0FBQUEsVUFDaEMsTUFBTUksRUFBTSxnQkFBZ0JPLEVBQUF5QixDQUFBLEVBQUssU0FBU3pCLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxVQUMvQyxNQUFNekIsRUFBQUUsQ0FBQSxFQUFLO0FBQUEsUUFBQTs7TUFlUlIsRUFBQSxjQVZSRSxFQW1CUSxTQUFBO0FBQUE7UUFsQkwsT0FBS0csRUFBQTtBQUFBLFVBQVlDLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFpQlcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLFVBQVlXLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxVQUFnQkssRUFBQSxXQUFXTSxFQUFBWCxDQUFBLEVBQUksT0FBTyxjQUFjVyxFQUFBWCxDQUFBLEVBQUksT0FBTztBQUFBLFFBQUE7UUFPN0ssS0FBS0ksRUFBTTtBQUFBLFFBQ1gsNEJBQUQsTUFBQTtBQUFBLFFBQUEsR0FBYyxDQUFBLFNBQUEsQ0FBQTtBQUFBLE1BQUE7UUFHZEssRUFBd0IsZ0JBQWZKLEVBQUEsS0FBSyxHQUFBLENBQUE7QUFBQSxRQUdORCxFQUFNLGVBRmRHLEVBS08sUUFBQTtBQUFBO1VBSkosT0FBS0csRUFBQSxDQUFHQyxLQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFFBQUEsR0FFeEMsU0FDS0EsRUFBQUksRUFBQSxFQUFhWCxFQUFNLE1BQU0sS0FBSSxNQUNuQyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkZKLFVBQU1BLElBQVFDLEdBT1I0SSxJQUFhQyxrQkFBc0MsR0FFbkRLLElBQVlsRyxFQUFTLE1BQU00RixFQUFXLFVBQVU3SSxFQUFNLEtBQUs7MkJBSWpFRyxFQWdEUSxTQUFBO0FBQUEsTUEvQ0wsT0FBS0csRUFBQTtBQUFBO1FBQW9DQyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFFBQVlXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1csRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksWUFBWTtBQUFBLFFBQVlJLEVBQU0sV0FBUSxDQUFJTyxLQUFJLFFBQVEsVUFBVUEsS0FBSSxPQUFPLFdBQVcsSUFBQSxDQUFLQSxLQUFJLE9BQU8sT0FBTztBQUFBLE1BQUE7TUFROU4sS0FBS1AsRUFBTTtBQUFBLElBQUE7U0FFWkssRUFRRSxTQUFBO0FBQUEsUUFQQyxTQUFPLENBQUEseUJBQUEsQ0FBMkI7QUFBQSxRQUNsQyxVQUFVSixFQUFBO0FBQUEsUUFDVixNQUFNQSxFQUFBO0FBQUEsUUFDTixPQUFPQSxFQUFBO0FBQUEsUUFDUCxJQUFJRCxFQUFNO0FBQUEsUUFDWCxNQUFLO0FBQUEsc0RBQ0k2SSxFQUFVLFFBQUEvRTtBQUFBLE1BQUE7YUFBVitFLEVBQUEsS0FBVTtBQUFBLE1BQUE7TUFHckJ4SSxFQWdCTSxPQUFBO0FBQUEsUUFmSCxPQUFLQyxFQUFBO0FBQUE7VUFBK0NDLEVBQUFYLENBQUEsRUFBSSxTQUFTO0FBQUEsVUFBa0JXLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLFVBQWF1SixFQUFBLFFBQVMsQ0FBSTVJLEVBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBSSxJQUFBLENBQUtXLEtBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxVQUFXQSxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLFVBQWlCVyxFQUFBWCxDQUFBLEVBQUksT0FBTztBQUFBLFVBQWlCVyxFQUFBWCxDQUFBLEVBQUksZUFBZTtBQUFBLFFBQUE7O1FBY3hYUyxFQUFrRyxPQUFBO0FBQUEsVUFBNUYsT0FBS0MsRUFBQSxDQUFBLDBCQUE2QkMsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTyxNQUFNdUosV0FBYTVJLEVBQUFYLENBQUEsRUFBSSxHQUFHLFNBQVMsQ0FBQTtBQUFBLFFBQUE7O01BRy9GUyxFQVFNLE9BQUE7QUFBQSxRQVJBLE9BQUtDLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxJQUFJVyxFQUFBWCxDQUFBLEVBQUksTUFBTSxTQUFTVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQTtBQUFBLE1BQUE7UUFDdkZTLEVBQXdCLGdCQUFmSixFQUFBLEtBQUssR0FBQSxDQUFBO0FBQUEsUUFHTkQsRUFBTSxlQUZkRyxFQUtPLFFBQUE7QUFBQTtVQUpKLE9BQUtHLEVBQUEsQ0FBR0MsS0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUE7QUFBQSxRQUFBLEdBRXhDLFNBQ0tBLEVBQUFJLEVBQUEsRUFBYVgsRUFBTSxNQUFNLEtBQUksTUFDbkMsQ0FBQTs7OzswR0N0RUoySixLQUFlLENBQUE7Ozs7Ozs7Ozs7OztBQWtCZixVQUFNM0osSUFBUUMsR0FRUjJKLElBQVV4SSxFQUFJcEIsRUFBTSxPQUFPO0FBRWpDLFdBQUFxQjtBQUFBLE1BQ0UsTUFBTXJCLEVBQU07QUFBQSxNQUNaLENBQUN5SixHQUFVSSxNQUFhO0FBQ3RCLFNBQUlKLE1BQWFJLEtBQVlKLE1BQWFHLEVBQVEsV0FDaERBLEVBQVEsUUFBUUg7QUFBQSxNQUVwQjtBQUFBLElBQUEsbUJBS0Z0SixFQXlETSxPQUFBO0FBQUEsTUF4REgsT0FBS0csRUFBQTtBQUFBO1FBQW9DQyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFFBQVlXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1csRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksZUFBZTtBQUFBLFFBQVdJLEVBQU0sWUFBUTtBQUFBLE1BQUE7O01BUzFKSyxFQU9FLFNBQUE7QUFBQSxRQU5DLFNBQVN1SixFQUFBO0FBQUEsUUFDVCxPQUFLdEosRUFBQSxDQUFHQyxFQUFBWCxDQUFBLEVBQUksUUFBUSxJQUFJLENBQUE7QUFBQSxRQUN4QixJQUFJSSxFQUFNO0FBQUEsUUFDWCxNQUFLO0FBQUEsUUFDTCxNQUFLO0FBQUEsUUFDTCxPQUFNO0FBQUEsTUFBQTtNQUdSSyxFQWlCTSxPQUFBO0FBQUEsUUFoQkgsT0FBS0MsRUFBQTtBQUFBO1VBQStDQyxFQUFBWCxDQUFBLEVBQUksU0FBUztBQUFBLFVBQWtCVyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFVBQWNXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUs7QUFBQSxVQUFhZ0ssRUFBQSxRQUFVckosRUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxPQUFPVyxLQUFJLE9BQU8sTUFBTTtBQUFBLFVBQWlCQSxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLFVBQWlCVyxFQUFBWCxDQUFBLEVBQUksT0FBTztBQUFBLFVBQWlCVyxFQUFBWCxDQUFBLEVBQUksZUFBZTtBQUFBLFVBQVlnSyxFQUFBLFNBQU87QUFBQSxRQUFBOztRQWVyWXZKLEVBQXNHLE9BQUE7QUFBQSxVQUFoRyxvQ0FBa0NFLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU8sTUFBTUksRUFBTSxXQUFXTyxLQUFJLEdBQUcsU0FBUyxDQUFBO0FBQUEsUUFBQTs7TUFHbkdGLEVBa0JRLFNBQUE7QUFBQSxRQWpCTCxPQUFLQyxFQUFBO0FBQUEsVUFBWUMsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsVUFBWVcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFpQlcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLFVBQWdCVyxFQUFBWCxDQUFBLEVBQUksT0FBTztBQUFBLFVBQWlCVyxFQUFBWCxDQUFBLEVBQUksZUFBZTtBQUFBLFFBQUE7UUFRN0ssS0FBS0ksRUFBTTtBQUFBLE1BQUE7UUFFWkssRUFBd0IsZ0JBQWZKLEVBQUEsS0FBSyxHQUFBLENBQUE7QUFBQSxRQUdORCxFQUFNLGVBRmRHLEVBS08sUUFBQTtBQUFBO1VBSkosT0FBS0csRUFBQSxDQUFHQyxLQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFFBQUEsR0FFeEMsU0FDS0EsRUFBQUksRUFBQSxFQUFhWCxFQUFNLE1BQU0sS0FBSSxNQUNuQyxDQUFBOzs7O29FQzVGTzhKLEtBQVM7QUFBQSxFQUNwQixRQUFRbko7QUFBQSxFQUNSLE9BQU9NO0FBQUEsRUFDUCxPQUFPQztBQUNULEdBRWE2SSxLQUFlO0FBQUEsRUFDMUIsT0FBTztBQUFBLEVBQ1Asb0JBQW9CO0FBQUEsRUFDcEIsWUFBWTtBQUFBLEVBQ1osT0FDRTtBQUFBLEVBQ0YsaUJBQWlCO0FBQUEsRUFDakIsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUNULEdDbEJhQyxLQUFZO0FBQUEsRUFDdkIsb0JBQW9CdkMsR0FBWXNDLEdBQWEsa0JBQWtCO0FBQUEsRUFDL0QsYUFBYXRDLEdBQVlzQyxHQUFhLFVBQVU7QUFBQSxFQUNoRCxPQUFPdEMsR0FBWXNDLEdBQWEsT0FBTyxxREFBcUQ7QUFBQSxFQUM1RixRQUFRdEMsR0FBWXNDLEdBQWEsaUJBQWlCLHNCQUFzQjtBQUFBLEVBQ3hFLE9BQU90QyxHQUFZc0MsR0FBYSxPQUFPLDRCQUE0QjtBQUNyRSxHQWlCYUUsS0FBZ0I7QUFBQSxFQUMzQixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQ1I7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0ZFLFVBQU1qSyxJQUFRQyxHQWlCUmlDLElBQU9DLEdBRVAwRyxJQUFhQyxrQkFBc0MsR0FFbkRDLElBQWMxQixHQUFBLEdBRWQ0QixJQUFXN0gsRUFBc0JvRyxHQUFrQixRQUFRLEdBQzNEMEMsSUFBVzlJLEVBQWEsRUFBSyxHQUM3QitJLElBQVVDLEdBQUEsR0FDVnBCLElBQWU1SCxFQUFhLEVBQUssR0FDakNpSixJQUFnQmpKLEVBQThCLElBQUksR0FFbEQ4SCxJQUFpQmpHLEVBQVMsTUFBT2pELEVBQU0sV0FBVyxHQUFHQSxFQUFNLEtBQUssT0FBT0EsRUFBTSxLQUFNLEdBQ25Gb0osSUFBWW5HLEVBQVMsTUFDckJvRyxFQUFpQixRQUFjLEtBQzlCTCxFQUFhLFFBQ1gsQ0FBQ0MsRUFBUyxNQUFNLFFBRFMsRUFFakMsR0FDS0ksSUFBbUJwRyxFQUFTLE1BQU1qRCxFQUFNLFVBQVUsRUFBRSxHQUNwRHNLLElBQWVySCxFQUFTLE1BQU1pSCxFQUFTLFNBQVMsQ0FBQ0ssRUFBUSxLQUFLLEdBQzlEQSxJQUFVdEgsRUFBUyxNQUFNNEYsRUFBVyxVQUFVLEVBQUUsR0FDaERTLElBQXdCckcsRUFBUyxNQUFPbUcsRUFBVSxTQUFTSCxFQUFTLE1BQU0sV0FBWWpKLEVBQU0sY0FBYyxHQUUxR3dLLElBQWdCLE1BQU07O0FBQzFCLFlBQU1DLElBQVEsSUFBSSxXQUFXLFdBQVc7QUFDeEMsT0FBQTdFLElBQUF5RSxLQUFBLGdCQUFBQSxFQUFlLFVBQWYsUUFBQXpFLEVBQXNCLGNBQWM2RTtBQUFBLElBQ3RDLEdBRU1DLElBQWMsTUFBTTtBQUN4QixNQUFBUixFQUFTLFFBQVEsSUFDYmxLLEVBQU0saUJBQWlCaUssR0FBYyxZQUFvQixRQUFRO0FBQUEsSUFDdkUsR0FFTVUsSUFBaUIsTUFBTTtBQUMzQixNQUFBVCxFQUFTLFFBQVEsSUFDYmxLLEVBQU0saUJBQWlCaUssR0FBYyxXQUFtQixRQUFRO0FBQUEsSUFDdEU7QUFFQSxXQUFBVCxHQUFZLE1BQU07QUFDaEIsTUFBQVAsRUFBUyxRQUFRYixHQUF5QjtBQUFBLFFBQ3hDLGdCQUFnQnBJLEVBQU07QUFBQSxRQUN0QixVQUFVQSxFQUFNO0FBQUEsUUFDaEIsT0FBTzZJO0FBQUEsTUFBQSxDQUNSO0FBQUEsSUFDSCxDQUFDLEdBRUR4SDtBQUFBLE1BQ0UsTUFBTTBILEtBQUEsZ0JBQUFBLEVBQWEsZ0JBQWdCO0FBQUEsTUFDbkMsQ0FBQ1UsTUFBYTtBQUNaLFFBQUlBLFFBQXVCLFFBQVE7QUFBQSxNQUNyQztBQUFBLE1BQ0EsRUFBRSxXQUFXLEdBQUE7QUFBQSxJQUFLLEdBR3BCcEk7QUFBQSxNQUNFNEg7QUFBQSxNQUNBLE1BQU07QUFDSixRQUFBL0csRUFBSyxTQUFTK0csRUFBUyxNQUFNLEtBQUs7QUFBQSxNQUNwQztBQUFBLE1BQ0EsRUFBRSxNQUFNLElBQU0sV0FBVyxHQUFBO0FBQUEsSUFBSyxtQkFLaEM5SSxFQThHTSxPQUFBO0FBQUEsTUE3R0gsT0FBS0csRUFBQTtBQUFBO1FBQXFDQyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFFBQVlXLEVBQUFYLENBQUEsRUFBSSxLQUFLLFVBQVU7QUFBQSxRQUFjVyxFQUFBWCxDQUFBLEVBQUksSUFBSTtBQUFBLFFBQWVLLEVBQUEsWUFBUTtBQUFBLFFBQXNCbUosRUFBQSxTQUFTO0FBQUEsTUFBQTs7TUFTbEsvSSxFQTZGTSxPQUFBO0FBQUEsUUE1RkgsT0FBS0MsRUFBQTtBQUFBO1VBQXlDQyxFQUFBWCxDQUFBLEVBQUksU0FBUztBQUFBLFVBQWtCVyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFVBQWNXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxJQUFJO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFVBQWNXLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxVQUFpQkksRUFBTSxXQUFXTyxLQUFJLE9BQU8sY0FBVztBQUFBLFVBQWVBLEVBQUFYLENBQUEsRUFBSSxTQUFTLEdBQUc7QUFBQSxRQUFBO1FBVzdSLFNBQU80SztBQUFBLE1BQUE7UUFFUm5LLEVBd0VNLE9BQUE7QUFBQSxVQXhFQSxVQUFRRSxFQUFBWCxDQUFBLEVBQUksUUFBUSxNQUFNVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLFFBQVFXLEtBQUksTUFBTSxJQUFJLENBQUE7QUFBQSxRQUFBO1VBWS9ETixFQUFBLGNBWFJFLEVBY1EsU0FBQTtBQUFBO1lBYkwsT0FBS0csRUFBQTtBQUFBLGNBQWdCZ0ssRUFBQSxRQUFZLENBQUEsYUFBaUIvSixFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sSUFBSVcsS0FBSSxLQUFLLEtBQUs7QUFBQSxjQUFxQkEsRUFBQVgsQ0FBQSxFQUFJLFNBQVM7QUFBQSxjQUFzQlcsRUFBQVgsQ0FBQSxFQUFJLFlBQVk7QUFBQSxjQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sSUFBSTtBQUFBLGNBQWtCVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLO0FBQUEsZUFBa0J3SixFQUFBLFNBQWE3SSxLQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsY0FBcUJBLEVBQUFYLENBQUEsRUFBSSxlQUFlO0FBQUEsWUFBQTtZQVNsVSxLQUFLVyxFQUFBNEosQ0FBQTtBQUFBLFVBQUEsS0FHSGpCLEVBQUEsS0FBYyxHQUFBLElBQUE5SSxFQUFBO2FBR25CQyxFQXNEUyxVQUFBO0FBQUEsWUFyRE4sT0FBS0MsRUFBQTtBQUFBLGNBQWdCQyxFQUFBWCxDQUFBLEVBQUksUUFBUSxPQUFPO0FBQUEsY0FBa0JXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxjQUFpQlcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxjQUFrQkssRUFBQSxZQUFZTSxFQUFBWCxDQUFBLEVBQUksT0FBTztBQUFBLGNBQXlCVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsWUFBQTtZQU9uTCxVQUFVSyxFQUFBO0FBQUEsWUFDVixNQUFNQSxFQUFBO0FBQUEscUJBQ0g7QUFBQSxZQUFKLEtBQUlvSztBQUFBLFlBQ0gsVUFBVXBLLEVBQUE7QUFBQSxZQUNWLFNBQU95SztBQUFBLFlBQ1AsWUFBVUM7QUFBQSxZQUNWLElBQUlwSyxFQUFBNEosQ0FBQTtBQUFBLDBEQUNJdEIsRUFBVSxRQUFBL0U7QUFBQSxVQUFBO2FBRW5CNUQsRUFBQSxFQUFBLEdBQUFDLEVBMEJXbUQsR0FBQSxNQUFBd0QsR0ExQmtCOUcsRUFBTSxZQUFsQjRLO2NBS05BLEVBQStCLGdCQUp4Q3pLLEVBY1csWUFBQTtBQUFBLGdCQWJSLE9BQUtHLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUE7QUFBQSxnQkFDOUMsS0FBTWdMLEVBQStCO0FBQUEsZ0JBQ3JDLE9BQVFBLEVBQStCO0FBQUEsY0FBQTtpQkFHeEMxSyxFQUFBLEVBQUEsR0FBQUMsRUFPU21ELEdBQUEsTUFBQXdELEdBSFc4RCxFQUErQixVQUExQ0MsWUFKVDFLLEVBT1MsVUFBQTtBQUFBLGtCQU5OLE9BQUtHLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUE7QUFBQSxrQkFDOUMsS0FBS2lMLEVBQU87QUFBQSxrQkFDWixPQUFPQSxFQUFPO0FBQUEsZ0JBQUEsR0FHWnZJLEVBQUF1SSxFQUFPLEtBQUssR0FBQSxJQUFBMUUsRUFBQTtrQ0FJbkJoRyxFQVFTLFVBQUE7QUFBQSxnQkFQTixPQUFLRyxFQUFBLENBQUdDLEVBQUFYLENBQUEsRUFBSSxNQUFNLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBO0FBQUEsZ0JBQzlDLEtBQU1nTCxFQUEwQjtBQUFBLGdCQUNoQyxVQUFVL0IsRUFBQSxVQUFnQitCLEVBQTBCLGFBQWU7QUFBQSxnQkFDbkUsT0FBUUEsRUFBMEI7QUFBQSxjQUFBLEdBRy9CdEksRUFBQXNJLEVBQTBCLEtBQUssR0FBQSxJQUFBeEUsRUFBQTtBQUFBLFlBQUE7b0JBSXZDakcsRUFRU21ELEdBQUEsTUFBQXdELEdBSFU3RyxFQUFBLFNBQU8sQ0FBakI0SyxZQUxUMUssRUFRUyxVQUFBO0FBQUEsY0FQTixPQUFLRyxFQUFBLENBQUdDLEVBQUFYLENBQUEsRUFBSSxNQUFNLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBO0FBQUEsY0FDOUMsS0FBS2lMLEVBQU87QUFBQSxjQUNaLFVBQVVoQyxFQUFBLFVBQWVnQyxFQUFPLGFBQWU7QUFBQSxjQUMvQyxPQUFPQSxFQUFPO0FBQUEsWUFBQSxHQUdadkksRUFBQXVJLEVBQU8sS0FBSyxHQUFBLElBQUFDLEVBQUE7O2lCQXJDUmpDLEVBQUEsS0FBVTtBQUFBLFVBQUE7O1FBMEN2QnRHLEVBSUVDLEdBQUE7QUFBQSxVQUhDLE9BQUtsQyxFQUFBLENBQUdDLEVBQUFYLENBQUEsRUFBSSxTQUFTLFVBQVVXLEVBQUFYLENBQUEsRUFBSSxZQUFZLE9BQU9XLEVBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU0sS0FBS1csRUFBQVgsQ0FBQSxFQUFJLGVBQWUsR0FBRyxDQUFBO0FBQUEsVUFDbEcsTUFBTVcsRUFBQXlCLENBQUEsRUFBSztBQUFBLFVBQ1gsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFFBQUE7O01BT1I2SSxFQUFBLGNBSFJ4SCxFQUlFNEgsSUFBQTtBQUFBO1FBSEMsWUFBVU4sRUFBQTtBQUFBLFFBQ1YsU0FBU0UsRUFBQTtBQUFBLE1BQUE7OztvRUNyTUgvQixLQUFzQiwrQkErQnRCd0QsS0FBa0IsQ0FBQzFDLEdBQWlDMkMsTUFFM0QsT0FBTzNDLEtBQW1CLFlBQVlBLEVBQWUsU0FBUyxJQUFVQSxJQUVyRSxPQUFPMkMsS0FBaUIsWUFBWUEsRUFBYSxTQUFTLElBQUlBLElBQWV6RCxJQU16RTBELEtBQW1CLENBQUM1QyxHQUFpQzJDLE1BQ2hFM0MsTUFBbUIsTUFBUzJDLE1BQWlCLElBS2xDbEQsS0FBd0IsQ0FBQyxFQUFFLFdBQUFDLEdBQVcsV0FBQUMsR0FBVyxVQUFBQyxHQUFVLE9BQUFMLFFBQThCO0FBQ3BHLFFBQU1NLElBQXVCTixFQUFNLFdBQVcsS0FBSyxDQUFDSyxHQUM5Q0UsSUFBWUosS0FBYUgsRUFBTSxTQUFTRztBQUc5QyxTQUFPLEVBRlksQ0FBQ0csS0FBd0JGLEtBQWFKLEVBQU0sU0FBU0ksTUFFbEQsQ0FBQ0c7QUFDekIsR0FtRWErQyxLQUF3QixDQUFDO0FBQUEsRUFDcEMsT0FBQUM7QUFBQSxFQUNBLGdCQUFBOUM7QUFBQSxFQUNBLFdBQUFOO0FBQUEsRUFDQSxXQUFBQztBQUFBLEVBQ0EsVUFBQUMsSUFBVztBQUFBLEVBQ1gsWUFBQUs7QUFBQSxFQUNBLE9BQUFWO0FBQ0YsTUFRTTtBQUtKLE1BRkF1RCxFQUFNLFFBQVE5QyxLQUFrQyxJQUU1QyxDQUFDOEMsRUFBTSxTQUFTN0MsR0FBWTtBQUM5QixVQUFNQyxJQUFhQyxJQUFpQlosS0FBQSxnQkFBQUEsRUFBTyxVQUFTLElBQUlVLENBQVU7QUFFbEUsSUFBS0MsRUFBVyxVQUNkNEMsRUFBTSxRQUFRNUMsRUFBVztBQUFBLEVBRTdCO0FBRUEsTUFBSSxDQUFDNEMsRUFBTSxVQUFVcEQsS0FBYUMsSUFBWTtBQUM1QyxVQUFNUyxJQUFtQkMsR0FBZTtBQUFBLE1BQ3RDLFdBQUFYO0FBQUEsTUFDQSxXQUFBQztBQUFBLE1BQ0EsVUFBQUM7QUFBQSxNQUNBLFFBQU9MLEtBQUEsZ0JBQUFBLEVBQU8sVUFBUztBQUFBLElBQUEsQ0FDeEI7QUFFRCxJQUFLYSxFQUFpQixVQUNwQjBDLEVBQU0sUUFBUTFDLEVBQWlCO0FBQUEsRUFFbkM7QUFDRixHQXdCYUMsS0FBaUIsQ0FBQztBQUFBLEVBQzdCLFdBQUFYO0FBQUEsRUFDQSxXQUFBQztBQUFBLEVBQ0EsVUFBQUMsSUFBVztBQUFBLEVBQ1gsT0FBQUw7QUFDRixNQUEwQztBQUN4QyxRQUFNZSxJQUFXO0FBQUEsSUFDZixTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsRUFBQTtBQVVULFNBUEFBLEVBQVMsUUFBUWIsR0FBc0I7QUFBQSxJQUNyQyxXQUFBQztBQUFBLElBQ0EsV0FBQUM7QUFBQSxJQUNBLFVBQUFDO0FBQUEsSUFDQSxPQUFBTDtBQUFBLEVBQUEsQ0FDRCxHQUVHZSxFQUFTLFVBRWJBLEVBQVMsVUFBVXBCLElBRWZRLEtBQWFDLElBQ2ZXLEVBQVMsVUFBVSxnQ0FBZ0NYLENBQVMsUUFBUUQsQ0FBUywyQkFDcEVBLElBQ1RZLEVBQVMsVUFBVSxxQ0FBcUNaLENBQVMsMkJBQ3hEQyxNQUNUVyxFQUFTLFVBQVUscUNBQXFDWCxDQUFTLDRCQUc1RFc7QUFDVDtBQUtPLFNBQVNILEdBQWlCWixHQUFlVSxHQUF1RTtBQUNySCxhQUFXTSxLQUFhTixHQUFZO0FBQ2xDLFVBQU1DLElBQWFLLEVBQVVoQixDQUFLO0FBQ2xDLFFBQUksQ0FBQ1csRUFBVztBQUNkLGFBQU9BO0FBQUEsRUFFWDtBQUVBLFNBQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxFQUFBO0FBRVg7eUpDdlBFb0IsS0FBZSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBb0JmLFVBQU0zSixJQUFRQyxHQVVSa0wsSUFBUS9KLEVBQUlwQixFQUFNLEtBQUssR0FDdkJrSyxJQUFXOUksRUFBSSxFQUFLLEdBQ3BCUixJQUFRUSxFQUE4QixJQUFJLEdBQzFDNkcsSUFBVzdHLEVBQUlwQixFQUFNLFFBQVEsR0FDN0I0SCxJQUFReEcsRUFBd0JwQixFQUFNLEtBQUssR0FFM0NvTCxJQUFlbkksRUFBUyxNQUFNOEgsR0FBZ0IvSyxFQUFNLE9BQU9tTCxFQUFNLEtBQUssQ0FBQyxHQUN2RWpDLElBQWlCakcsRUFBUyxNQUFPakQsRUFBTSxXQUFXLEdBQUdBLEVBQU0sS0FBSyxPQUFPQSxFQUFNLEtBQU0sR0FDbkZxTCxJQUFXcEksRUFBUyxNQUFPakQsRUFBTSxZQUFZLENBQUM0SCxFQUFNLFNBQVVxRCxHQUFpQkUsRUFBTSxPQUFPbkwsRUFBTSxLQUFLLENBQUMsR0FDeEdzSyxJQUFlckgsRUFBUyxNQUFNaUgsRUFBUyxTQUFTLENBQUNLLEVBQVEsS0FBSyxHQUM5REEsSUFBVXRILEVBQVMsTUFBTTJFLEVBQU0sVUFBVSxNQUFTLEdBRWxENEMsSUFBZ0IsTUFBTTs7QUFDMUIsWUFBTUMsSUFBUSxJQUFJLFdBQVcsV0FBVztBQUN4QyxPQUFBN0UsSUFBQWhGLEtBQUEsZ0JBQUFBLEVBQU8sVUFBUCxRQUFBZ0YsRUFBYyxjQUFjNkU7QUFBQSxJQUM5QixHQUVNQyxJQUFjLE1BQU07QUFDeEIsTUFBQVIsRUFBUyxRQUFRO0FBQUEsSUFDbkIsR0FFTVMsSUFBaUIsTUFBTTtBQUMzQixNQUFBVCxFQUFTLFFBQVE7QUFBQSxJQUNuQjtBQUVBLFdBQUE3STtBQUFBLE1BQ0UsTUFBTXJCLEVBQU07QUFBQSxNQUNaLENBQUN5SixHQUFVSSxNQUFhO0FBQ3RCLFNBQUlKLE1BQWFJLEtBQVlKLE1BQWE3QixFQUFNLFdBQzlDQSxFQUFNLFFBQVE2QjtBQUFBLE1BRWxCO0FBQUEsSUFBQSxHQUdGNkIsRUFBYSxFQUFFLE9BQUFILEdBQU8sT0FBQXZELEdBQU8sbUJBSTdCekgsRUF3SE0sT0FBQTtBQUFBLE1BdkhILE9BQUtHLEVBQUE7QUFBQTtRQUFxQ0MsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVO0FBQUEsUUFBY1csRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFlSyxFQUFBLFlBQVE7QUFBQSxRQUFzQm9MLEVBQUEsU0FBUTtBQUFBLE1BQUE7O01BU2pLaEwsRUE2Rk0sT0FBQTtBQUFBLFFBNUZILE9BQUtDLEVBQUE7QUFBQTtVQUF5Q0MsRUFBQVgsQ0FBQSxFQUFJLFNBQVM7QUFBQSxVQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCVyxFQUFBWCxDQUFBLEVBQUksSUFBSTtBQUFBLFVBQWNXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRO0FBQUEsVUFBaUJJLEVBQU0sV0FBV08sS0FBSSxPQUFPLGNBQVc7QUFBQSxVQUFlQSxFQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHO0FBQUEsUUFBQTtRQVc3UixTQUFPNEs7QUFBQSxNQUFBO1FBRVJuSyxFQXdFTSxPQUFBO0FBQUEsVUF4RUEsVUFBUUUsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxRQUFRVyxLQUFJLE1BQU0sSUFBSSxDQUFBO0FBQUEsUUFBQTtVQVkvRE4sRUFBQSxjQVhSRSxFQWNRLFNBQUE7QUFBQTtZQWJMLE9BQUtHLEVBQUE7QUFBQSxjQUFnQmdLLEVBQUEsUUFBWSxDQUFBLGFBQWlCL0osRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLElBQUlXLEtBQUksS0FBSyxLQUFLO0FBQUEsY0FBcUJBLEVBQUFYLENBQUEsRUFBSSxTQUFTO0FBQUEsY0FBc0JXLEVBQUFYLENBQUEsRUFBSSxZQUFZO0FBQUEsY0FBa0JXLEVBQUFYLENBQUEsRUFBSSxPQUFPLElBQUk7QUFBQSxjQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLGVBQWtCeUwsRUFBQSxTQUFZOUssS0FBSSxLQUFLLE1BQU0sUUFBUTtBQUFBLGNBQXFCQSxFQUFBWCxDQUFBLEVBQUksZUFBZTtBQUFBLFlBQUE7WUFTalUsS0FBS0ksRUFBTTtBQUFBLFVBQUEsS0FHVGtKLEVBQUEsS0FBYyxHQUFBLElBQUE5SSxFQUFBO2FBR25CQyxFQXNEUyxVQUFBO0FBQUEsWUFyRE4sT0FBS0MsRUFBQTtBQUFBLGNBQWdCQyxFQUFBWCxDQUFBLEVBQUksUUFBUSxPQUFPO0FBQUEsY0FBa0JXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxjQUFpQlcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxjQUFrQkssRUFBQSxZQUFZTSxFQUFBWCxDQUFBLEVBQUksT0FBTztBQUFBLGNBQXlCVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsWUFBQTtZQU9uTCxVQUFVSyxFQUFBO0FBQUEsWUFDVixNQUFNQSxFQUFBO0FBQUEscUJBQ0g7QUFBQSxZQUFKLEtBQUlXO0FBQUEsWUFDSCxVQUFVcUgsRUFBQTtBQUFBLFlBQ1YsU0FBT3lDO0FBQUEsWUFDUCxZQUFVQztBQUFBLFlBQ1YsSUFBSTNLLEVBQU07QUFBQSwwREFDRjRILEVBQUssUUFBQTlEO0FBQUEsVUFBQTthQUVkNUQsRUFBQSxFQUFBLEdBQUFDLEVBMEJXbUQsR0FBQSxNQUFBd0QsR0ExQmtCOUcsRUFBTSxZQUFsQjRLO2NBS05BLEVBQStCLGdCQUp4Q3pLLEVBY1csWUFBQTtBQUFBLGdCQWJSLE9BQUtHLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUE7QUFBQSxnQkFDOUMsS0FBTWdMLEVBQStCO0FBQUEsZ0JBQ3JDLE9BQVFBLEVBQStCO0FBQUEsY0FBQTtpQkFHeEMxSyxFQUFBLEVBQUEsR0FBQUMsRUFPU21ELEdBQUEsTUFBQXdELEdBSFc4RCxFQUErQixVQUExQ0MsWUFKVDFLLEVBT1MsVUFBQTtBQUFBLGtCQU5OLE9BQUtHLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUE7QUFBQSxrQkFDOUMsS0FBS2lMLEVBQU87QUFBQSxrQkFDWixPQUFPQSxFQUFPO0FBQUEsZ0JBQUEsR0FHWnZJLEVBQUF1SSxFQUFPLEtBQUssR0FBQSxJQUFBMUUsRUFBQTtrQ0FJbkJoRyxFQVFTLFVBQUE7QUFBQSxnQkFQTixPQUFLRyxFQUFBLENBQUdDLEVBQUFYLENBQUEsRUFBSSxNQUFNLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBO0FBQUEsZ0JBQzlDLEtBQU1nTCxFQUEwQjtBQUFBLGdCQUNoQyxVQUFVaEQsRUFBQSxVQUFXZ0QsRUFBMEIsYUFBZTtBQUFBLGdCQUM5RCxPQUFRQSxFQUEwQjtBQUFBLGNBQUEsR0FHL0J0SSxFQUFBc0ksRUFBMEIsS0FBSyxHQUFBLElBQUF4RSxFQUFBO0FBQUEsWUFBQTtvQkFJdkNqRyxFQVFTbUQsR0FBQSxNQUFBd0QsR0FIVTdHLEVBQUEsU0FBTyxDQUFqQjRLLFlBTFQxSyxFQVFTLFVBQUE7QUFBQSxjQVBOLE9BQUtHLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUE7QUFBQSxjQUM5QyxLQUFLaUwsRUFBTztBQUFBLGNBQ1osVUFBVWpELEVBQUEsVUFBVWlELEVBQU8sYUFBZTtBQUFBLGNBQzFDLE9BQU9BLEVBQU87QUFBQSxZQUFBLEdBR1p2SSxFQUFBdUksRUFBTyxLQUFLLEdBQUEsSUFBQUMsRUFBQTs7aUJBckNSbEQsRUFBQSxLQUFLO0FBQUEsVUFBQTs7UUEwQ2xCckYsRUFJRUMsR0FBQTtBQUFBLFVBSEMsT0FBS2xDLEVBQUEsQ0FBR0MsRUFBQVgsQ0FBQSxFQUFJLFNBQVMsVUFBVVcsRUFBQVgsQ0FBQSxFQUFJLFlBQVksT0FBT1csRUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxLQUFLVyxFQUFBWCxDQUFBLEVBQUksZUFBZSxHQUFHLENBQUE7QUFBQSxVQUNsRyxNQUFNVyxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsVUFDWCxNQUFNekIsRUFBQUUsQ0FBQSxFQUFLO0FBQUEsUUFBQTs7TUFNUlQsRUFBTSxrQkFBa0JxTCxFQUFBLGNBRmhDbEwsRUFjTSxPQUFBO0FBQUE7UUFiSCxVQUFRSSxFQUFBWCxDQUFBLEVBQUksUUFBUSxNQUFNVyxFQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFRVyxLQUFJLElBQUksT0FBTyxDQUFBO0FBQUEsTUFBQTtRQU9wRDhLLEVBQUEsY0FKUnZKLEVBS0VVLEdBQUE7QUFBQTtVQUpDLFNBQU8sRUFBRTtBQUFBLFVBQ1QsTUFBTWpDLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxVQUNYLE1BQU16QixFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBO1FBSWRKLEVBRU0sT0FBQTtBQUFBLFVBRkEsVUFBUUUsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLENBQUE7QUFBQSxRQUFBLEdBQzlCMEMsRUFBQStJLEVBQUEsUUFBV0QsRUFBQSxRQUFlcEwsRUFBTSxjQUFjLEdBQUEsQ0FBQTtBQUFBLE1BQUE7OztvRUM3TDVDdUwsSUFBa0I7QUFBQSxFQUM3QixNQUFNO0FBQUEsRUFDTixnQkFBZ0I7QUFBQSxFQUNoQixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixVQUFVO0FBQUEsRUFDVixRQUFRO0FBQUEsRUFDUixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQUEsRUFDTixNQUFNO0FBQUEsRUFDTixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQ1IsR0FJYUMsS0FBYTtBQUFBLEVBQ3hCLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULFFBQVE7QUFBQSxFQUNSLEtBQUs7QUFBQSxFQUNMLE1BQU07QUFBQSxFQUNOLEtBQUs7QUFDUCxHQ3JCYUMsS0FBbUIsQ0FBQ0MsR0FBcUJDLE1BQWlEO0FBQ3JHLE1BQUlBLEVBQVcsUUFBT0E7QUFFdEIsVUFBUUQsR0FBQTtBQUFBLElBQ04sS0FBS0gsRUFBZ0I7QUFDbkIsYUFBT0MsR0FBVztBQUFBLElBQ3BCLEtBQUtELEVBQWdCO0FBQ25CLGFBQU9DLEdBQVc7QUFBQSxJQUNwQixLQUFLRCxFQUFnQjtBQUNuQixhQUFPQyxHQUFXO0FBQUEsSUFDcEIsS0FBS0QsRUFBZ0I7QUFDbkIsYUFBT0MsR0FBVztBQUFBLElBQ3BCLEtBQUtELEVBQWdCO0FBQ25CLGFBQU9DLEdBQVc7QUFBQSxFQUFBO0FBSXhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDb0JFLFVBQU14TCxJQUFRQyxHQXlCUmlDLElBQU9DLEdBRVAwRyxJQUFhQyxrQkFBc0MsR0FFbkRDLElBQWMxQixHQUFBLEdBRWQ0QixJQUFXN0gsRUFBc0JvRyxHQUFrQixRQUFRLEdBQzNEMEMsSUFBVzlJLEVBQWEsRUFBSyxHQUM3QndLLElBQWV4SyxFQUE2QixJQUFJLEdBQ2hENEgsSUFBZTVILEVBQWEsRUFBSyxHQUNqQ3lLLElBQWV6SyxFQUFhLEVBQUssR0FFakM4SCxJQUFpQmpHLEVBQVMsTUFBT2pELEVBQU0sWUFBWUEsRUFBTSxRQUFRLEdBQUdBLEVBQU0sS0FBSyxPQUFPQSxFQUFNLEtBQU0sR0FDbEdvSixJQUFZbkcsRUFBUyxNQUNyQm9HLEVBQWlCLFFBQWMsS0FDOUJMLEVBQWEsUUFDWCxDQUFDQyxFQUFTLE1BQU0sUUFEUyxFQUVqQyxHQUNLSSxJQUFtQnBHLEVBQVMsTUFBTWpELEVBQU0sVUFBVSxFQUFFLEdBQ3BEc0ssSUFBZXJILEVBQVMsTUFBTWlILEVBQVMsU0FBUyxDQUFDSyxFQUFRLEtBQUssR0FDOUR1QixJQUFxQjdJLEVBQWdDLE1BQU13SSxHQUFpQnpMLEVBQU0sTUFBTUEsRUFBTSxTQUFTLENBQUMsR0FDeEcrTCxJQUFZOUk7QUFBQSxNQUFTLE1BQ3pCakQsRUFBTSxTQUFTdUwsRUFBZ0IsWUFBWU0sRUFBYSxVQUFVLEtBQU9OLEVBQWdCLE9BQU92TCxFQUFNO0FBQUEsSUFBQSxHQUVsR3VLLElBQVV0SCxFQUFTLE1BQU00RixFQUFXLFVBQVUsRUFBRSxHQUNoRG1ELElBQXdCL0k7QUFBQSxNQUM1QixNQUFNakQsRUFBTSxZQUFZNkksRUFBVyxTQUFTN0ksRUFBTSxTQUFTdUwsRUFBZ0I7QUFBQSxJQUFBLEdBRXZFVSxJQUEyQmhKLEVBQVMsTUFBTWpELEVBQU0sU0FBU3VMLEVBQWdCLFFBQVEsR0FDakZqQyxJQUF3QnJHLEVBQVMsTUFBT21HLEVBQVUsU0FBU0gsRUFBUyxNQUFNLFdBQVlqSixFQUFNLGNBQWMsR0FFMUdrTSxJQUFjLE1BQU07O0FBQ3hCLE1BQUFyRCxFQUFXLFFBQVEsS0FDbkJqRCxJQUFBZ0csRUFBYSxVQUFiLFFBQUFoRyxFQUFvQjtBQUFBLElBQ3RCLEdBRU04RSxJQUFjLE1BQU07QUFDeEIsTUFBQVIsRUFBUyxRQUFRLElBQ2JsSyxFQUFNLGlCQUFpQmlLLEdBQWMsWUFBb0IsUUFBUTtBQUFBLElBQ3ZFLEdBRU1VLElBQWlCLE1BQU07QUFDM0IsTUFBQVQsRUFBUyxRQUFRLElBQ2JsSyxFQUFNLGlCQUFpQmlLLEdBQWMsV0FBbUIsUUFBUTtBQUFBLElBQ3RFLEdBRU1rQyxJQUFtQixNQUFNOztBQUM3QixPQUFBdkcsSUFBQWdHLEVBQWEsVUFBYixRQUFBaEcsRUFBb0I7QUFBQSxJQUN0QixHQUVNd0csSUFBbUMsQ0FBQ0MsTUFBa0I7QUFDMUQsTUFBS25DLEVBQVMsU0FDVm1DLEVBQUUsV0FBV1QsRUFBYSxXQUFTLGVBQUE7QUFBQSxJQUN6QztBQUVBLFdBQUFwQyxHQUFZLE1BQU07QUFDaEIsTUFBQVAsRUFBUyxRQUFRYixHQUF5QjtBQUFBLFFBQ3hDLGdCQUFnQnBJLEVBQU07QUFBQSxRQUN0QixXQUFXQSxFQUFNO0FBQUEsUUFDakIsV0FBV0EsRUFBTTtBQUFBLFFBQ2pCLFVBQVVBLEVBQU07QUFBQSxRQUNoQixZQUFZQSxFQUFNO0FBQUEsUUFDbEIsT0FBTzZJO0FBQUEsTUFBQSxDQUNSO0FBQUEsSUFDSCxDQUFDLEdBRUR4SDtBQUFBLE1BQ0UsQ0FBQ3dILEdBQVksTUFBTTdJLEVBQU0sY0FBYztBQUFBLE1BQ3ZDLE1BQU07O0FBQ0osWUFBSSxDQUFDQSxFQUFNLGVBQWdCO0FBRTNCLGNBQU1jLE1BQVNtRixNQUFBTCxJQUFBaUQsRUFBVyxVQUFYLGdCQUFBakQsRUFBa0IsTUFBTSxXQUF4QixnQkFBQUssR0FBZ0MsS0FBSyxRQUFPO0FBQzNELFFBQUE0QyxFQUFXLFFBQVEvSCxJQUFTZCxFQUFNLGVBQWVjLENBQU0sSUFBSTtBQUFBLE1BQzdEO0FBQUEsTUFDQSxFQUFFLFdBQVcsR0FBQTtBQUFBLElBQUssR0FHcEJPO0FBQUEsTUFDRSxNQUFNMEgsS0FBQSxnQkFBQUEsRUFBYSxnQkFBZ0I7QUFBQSxNQUNuQyxDQUFDVSxNQUFhO0FBQ1osUUFBSUEsUUFBdUIsUUFBUTtBQUFBLE1BQ3JDO0FBQUEsTUFDQSxFQUFFLFdBQVcsR0FBQTtBQUFBLElBQUssR0FHcEJwSTtBQUFBLE1BQ0U0SDtBQUFBLE1BQ0EsTUFBTTtBQUNKLFFBQUEvRyxFQUFLLFNBQVMrRyxFQUFTLE1BQU0sS0FBSztBQUFBLE1BQ3BDO0FBQUEsTUFDQSxFQUFFLE1BQU0sSUFBTSxXQUFXLEdBQUE7QUFBQSxJQUFLLG1CQUtoQzlJLEVBd0hNLE9BQUE7QUFBQSxNQXZISCxPQUFLRyxFQUFBO0FBQUE7UUFBbUNDLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVTtBQUFBLFFBQWNXLEVBQUFYLENBQUEsRUFBSSxJQUFJO0FBQUEsUUFBZUssRUFBQSxZQUFRO0FBQUEsUUFBc0JtSixFQUFBLFNBQVM7QUFBQSxNQUFBOztNQVNoSy9JLEVBdUdRLFNBQUE7QUFBQSxRQXRHTCxPQUFLQyxFQUFBO0FBQUE7VUFBNkNDLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksU0FBUztBQUFBLFVBQWtCVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLFVBQWlCVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsVUFBY29NLEVBQUEsUUFBcUIsQ0FBSXpMLEtBQUksUUFBUSxNQUFNLE1BQU1BLEVBQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssR0FBRyxJQUFBLENBQUtXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsR0FBRztBQUFBLFVBQVdLLEVBQUEsV0FBV00sRUFBQVgsQ0FBQSxFQUFJLE9BQU8sY0FBY1csRUFBQVgsQ0FBQSxFQUFJLE9BQU87QUFBQSxRQUFBO1FBWTVZLEtBQUtLLEVBQUE7QUFBQSxRQUNMLFNBQU9rTTtBQUFBLFFBQ1AsYUFBV0M7QUFBQSxNQUFBO1FBTUpuTSxFQUFBLG9CQUpSNkIsRUFLRVUsR0FBQTtBQUFBO1VBSkMsT0FBS2xDLEVBQUEsQ0FBR0MsS0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUE7QUFBQSxVQUN0QyxNQUFNTixFQUFBO0FBQUEsVUFDTixNQUFNTSxFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBO1FBSWRKLEVBd0RNLE9BQUE7QUFBQSxVQXhEQSxPQUFLQyxFQUFBLENBQUdDLEtBQUksUUFBUSxNQUFNQSxFQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFRVyxFQUFBWCxDQUFBLEVBQUksSUFBSSxTQUFTVyxFQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFJLENBQUE7QUFBQSxRQUFBO1VBUXZFSyxFQUFBLGVBUFJFLEVBVU0sT0FBQTtBQUFBO1lBVEgsT0FBS0csRUFBQTtBQUFBO2NBQXNEQyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsZUFBcUJ3SixFQUFBLFNBQWE3SSxLQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsY0FBcUIrSixFQUFBLFFBQVksS0FBQTtBQUFBLFlBQUE7ZUFRaktySyxFQUFBLE1BQU0sR0FBQSxDQUFBO1VBR1hJLEVBOEJNLE9BQUE7QUFBQSxZQTlCQSxVQUFRRSxFQUFBWCxDQUFBLEVBQUksUUFBUSxNQUFNVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLFFBQVFXLEtBQUksTUFBTSxJQUFJLENBQUE7QUFBQSxVQUFBO1lBUy9ETixFQUFBLGNBUlJFLEVBV00sT0FBQTtBQUFBO2NBVkgsT0FBS0csRUFBQTtBQUFBO2dCQUF5RGdLLEVBQUEsUUFBWSxDQUFBLGFBQWlCL0osRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLElBQUlXLEtBQUksS0FBSyxLQUFLO0FBQUEsaUJBQXdCNkksRUFBQSxTQUFhN0ksS0FBSSxLQUFLLE1BQU0sUUFBUTtBQUFBLGdCQUF1QkEsRUFBQVgsQ0FBQSxFQUFJLE9BQU87QUFBQSxnQkFBb0JXLEVBQUFYLENBQUEsRUFBSSxlQUFlO0FBQUEsY0FBQTtpQkFTclFzSixFQUFBLEtBQWMsR0FBQSxDQUFBO2VBR25CN0ksRUFlRSxTQUFBO0FBQUEsY0FkQyxjQUFjSixFQUFBLGVBQVksT0FBQTtBQUFBLGNBQzFCLE9BQUtLLEVBQUEsQ0FBR0MsS0FBSSxNQUFNLE1BQU1BLEtBQUksS0FBSyxLQUFLLFFBQVFOLEVBQUEsWUFBWU0sRUFBQVgsQ0FBQSxFQUFJLE9BQU8sV0FBVyxDQUFBO0FBQUEsY0FDaEYsVUFBVUssRUFBQTtBQUFBLGNBQ1YsV0FBVzZMLEVBQUE7QUFBQSxjQUNYLFdBQVc3TCxFQUFBO0FBQUEsY0FDWCxXQUFXQSxFQUFBO0FBQUEsY0FDWCxNQUFNQSxFQUFBO0FBQUEsdUJBQ0g7QUFBQSxjQUFKLEtBQUkyTDtBQUFBLGNBQ0gsVUFBVTNMLEVBQUE7QUFBQSxjQUNWLE1BQU04TCxFQUFBO0FBQUEsY0FDTixTQUFPckI7QUFBQSxjQUNQLFlBQVVDO0FBQUEsY0FDVixJQUFJMUssRUFBQTtBQUFBLDZEQUNJNEksRUFBVSxRQUFBL0U7QUFBQSxZQUFBO21CQUFWK0UsRUFBQSxLQUFVO0FBQUEsWUFBQTs7VUFXZjVJLEVBQUEsZUFQUkUsRUFVTSxPQUFBO0FBQUE7WUFUSCxPQUFLRyxFQUFBO0FBQUE7Y0FBc0RDLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxlQUFxQndKLEVBQUEsU0FBYTdJLEtBQUksS0FBSyxNQUFNLFFBQVE7QUFBQSxjQUFxQitKLEVBQUEsUUFBWSxLQUFBO0FBQUEsWUFBQTtlQVFqS3JLLEVBQUEsTUFBTSxHQUFBLENBQUE7O1FBTUwrTCxFQUFBLGNBRlI3TCxFQVNTLFVBQUE7QUFBQTtVQVJOLFNBQU8rTDtBQUFBLFFBQUE7VUFHUjNKLEVBSUVDLEdBQUE7QUFBQSxZQUhDLFVBQVFqQyxFQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQTtBQUFBLFlBQzVCLE1BQU1XLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxZQUNYLE1BQU16QixFQUFBRSxDQUFBLEVBQUs7QUFBQSxVQUFBOztRQU1Sd0wsRUFBQSxjQUZSOUwsRUFTUyxVQUFBO0FBQUE7VUFSTixTQUFLK0YsRUFBQSxDQUFBLE1BQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUFwQyxPQUFFK0gsRUFBQSxRQUFZLENBQUlBLEVBQUE7QUFBQSxRQUFBO1VBR3hCdEosRUFJRUMsR0FBQTtBQUFBLFlBSEMsVUFBUWpDLEVBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBSSxDQUFBO0FBQUEsWUFDNUIsTUFBTVcsRUFBQXlCLENBQUEsRUFBSztBQUFBLFlBQ1gsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFVBQUE7OztNQVFWNkksRUFBQSxjQUhSeEgsRUFJRTRILElBQUE7QUFBQTtRQUhDLFlBQVVOLEVBQUE7QUFBQSxRQUNWLFNBQVNFLEVBQUE7QUFBQSxNQUFBOzs7aUxDbFJkSyxLQUFlLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVDZixVQUFNM0osSUFBUUMsR0FvQlJrTCxJQUFRL0osRUFBSXBCLEVBQU0sS0FBSyxHQUN2QmtLLElBQVc5SSxFQUFJLEVBQUssR0FDcEJSLElBQVFRLEVBQTZCLElBQUksR0FDekN5SyxJQUFlekssRUFBSSxFQUFLLEdBQ3hCd0csSUFBUXhHLEVBQUlwQixFQUFNLEtBQUssR0FFdkJvTCxJQUFlbkksRUFBUyxNQUFNOEgsR0FBZ0IvSyxFQUFNLE9BQU9tTCxFQUFNLEtBQUssQ0FBQyxHQUN2RWpDLElBQWlCakcsRUFBUyxNQUFPakQsRUFBTSxZQUFZQSxFQUFNLFFBQVEsR0FBR0EsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBTSxHQUNsR3NNLElBQVdySixFQUFTLE1BQU1qRCxFQUFNLFlBQVk0SCxFQUFNLEtBQUssR0FDdkR5RCxJQUFXcEk7QUFBQSxNQUNmLE1BQU9qRCxFQUFNLFlBQVk0SCxFQUFNLFVBQVUsVUFBYSxDQUFDQSxFQUFNLFNBQVVxRCxHQUFpQkUsRUFBTSxPQUFPbkwsRUFBTSxLQUFLO0FBQUEsSUFBQSxHQUU1R3NLLElBQWVySCxFQUFTLE1BQU1pSCxFQUFTLFNBQVMsQ0FBQ0ssRUFBUSxLQUFLLEdBQzlEQSxJQUFVdEgsRUFBUyxNQUFNMkUsRUFBTSxVQUFVLE1BQU1BLEVBQU0sVUFBVSxNQUFTLEdBQ3hFbUUsSUFBWTlJO0FBQUEsTUFBUyxNQUN6QmpELEVBQU0sU0FBU3VMLEVBQWdCLFlBQVlNLEVBQWEsVUFBVSxLQUFPTixFQUFnQixPQUFPdkwsRUFBTTtBQUFBLElBQUEsR0FHbEdrTSxJQUFjLE1BQU07O0FBQ3hCLE1BQUF0RSxFQUFNLFFBQVEsS0FDZGhDLElBQUFoRixFQUFNLFVBQU4sUUFBQWdGLEVBQWE7QUFBQSxJQUNmLEdBRU04RSxJQUFjLE1BQU07QUFDeEIsTUFBQVIsRUFBUyxRQUFRO0FBQUEsSUFDbkIsR0FFTVMsSUFBaUIsTUFBTTtBQUMzQixNQUFBVCxFQUFTLFFBQVEsSUFFWnRDLEVBQU0sVUFDVEEsRUFBTSxRQUFRLEtBR2hCMkUsRUFBQTtBQUFBLElBQ0YsR0FFTUMsSUFBYyxNQUFNOztBQUN4QixVQUFJeE0sRUFBTSxnQkFBZ0I7QUFDeEIsY0FBTWMsTUFBU21GLEtBQUFMLElBQUFnQyxFQUFNLFVBQU4sZ0JBQUFoQyxFQUFhLE1BQU0sV0FBbkIsZ0JBQUFLLEVBQTJCLEtBQUssUUFBTztBQUV0RCxRQUFBMkIsRUFBTSxRQUFROUcsSUFBU2QsRUFBTSxlQUFlYyxDQUFNLElBQUk7QUFBQSxNQUN4RDtBQUFBLElBQ0YsR0FFTXlMLElBQW1CLE1BQU07QUFDN0IsTUFBQXJCLEdBQXNCO0FBQUEsUUFDcEIsT0FBQUM7QUFBQSxRQUNBLGdCQUFnQm5MLEVBQU07QUFBQSxRQUN0QixXQUFXQSxFQUFNO0FBQUEsUUFDakIsV0FBV0EsRUFBTTtBQUFBLFFBQ2pCLFVBQVVBLEVBQU07QUFBQSxRQUNoQixZQUFZQSxFQUFNO0FBQUEsUUFDbEIsT0FBQTRIO0FBQUEsTUFBQSxDQUNEO0FBQUEsSUFDSCxHQUVNNkUsSUFBYyxDQUFDaEQsTUFBcUI7QUFDeEMsTUFBQTdCLEVBQU0sUUFBUTZCO0FBQUEsSUFDaEI7QUFFQSxXQUFBcEk7QUFBQSxNQUNFLE1BQU1yQixFQUFNO0FBQUEsTUFDWixDQUFDeUosR0FBVUksTUFBYTtBQUN0QixTQUFJSixNQUFhSSxLQUFZSixNQUFhN0IsRUFBTSxXQUM5Q0EsRUFBTSxRQUFRNkI7QUFBQSxNQUVsQjtBQUFBLElBQUEsR0FHRjZCLEVBQWE7QUFBQSxNQUNYLE9BQUFIO0FBQUEsTUFDQSxVQUFVbkwsRUFBTTtBQUFBLE1BQ2hCLGFBQUF5TTtBQUFBLE1BQ0EsT0FBQTdFO0FBQUEsSUFBQSxDQUNELG1CQUlEekgsRUFpSU0sT0FBQTtBQUFBLE1BaElILE9BQUtHLEVBQUE7QUFBQTtRQUFtQ0MsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFZVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVO0FBQUEsUUFBY1csRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFlSyxFQUFBLFlBQVE7QUFBQSxRQUFzQm9MLEVBQUEsU0FBUTtBQUFBLE1BQUE7O01BUy9KaEwsRUFzR1EsU0FBQTtBQUFBLFFBckdMLE9BQUtDLEVBQUE7QUFBQTtVQUE2Q0MsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCVyxFQUFBWCxDQUFBLEVBQUksSUFBSTtBQUFBLFVBQWNXLEVBQUFYLENBQUEsRUFBSSxTQUFTO0FBQUEsVUFBa0JXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRO0FBQUEsVUFBaUIwTSxFQUFBLFFBQVEsQ0FBSS9MLEtBQUksUUFBUSxNQUFNLE1BQU1BLEVBQUFYLENBQUEsRUFBSSxRQUFRLEtBQUssR0FBRyxJQUFBLENBQUtXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUUsR0FBRztBQUFBLFVBQVdXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxVQUFjSyxFQUFBLFdBQVdNLEVBQUFYLENBQUEsRUFBSSxPQUFPLGNBQWNXLEVBQUFYLENBQUEsRUFBSSxPQUFPO0FBQUEsUUFBQTtRQVkvWCxLQUFLSyxFQUFBO0FBQUEsTUFBQTtRQU1FQSxFQUFBLG9CQUpSNkIsRUFLRVUsR0FBQTtBQUFBO1VBSkMsT0FBS2xDLEVBQUEsQ0FBR0MsS0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUE7QUFBQSxVQUN0QyxNQUFNTixFQUFBO0FBQUEsVUFDTixNQUFNTSxFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBO1FBSWRKLEVBeURNLE9BQUE7QUFBQSxVQXpEQSxPQUFLQyxFQUFBLENBQUdDLEtBQUksUUFBUSxNQUFNQSxFQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFRVyxFQUFBWCxDQUFBLEVBQUksSUFBSSxTQUFTVyxFQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFJLENBQUE7QUFBQSxRQUFBO1VBUXZFSyxFQUFBLGVBUFJFLEVBVU0sT0FBQTtBQUFBO1lBVEgsT0FBS0csRUFBQTtBQUFBO2NBQXNEQyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsZUFBcUJ5TCxFQUFBLFNBQVk5SyxLQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsY0FBcUIrSixFQUFBLFFBQVksS0FBQTtBQUFBLFlBQUE7ZUFRaEtySyxFQUFBLE1BQU0sR0FBQSxDQUFBO1VBR1hJLEVBK0JNLE9BQUE7QUFBQSxZQS9CQSxVQUFRRSxFQUFBWCxDQUFBLEVBQUksUUFBUSxNQUFNVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxVQUFVLFFBQVFXLEtBQUksTUFBTSxJQUFJLENBQUE7QUFBQSxVQUFBO1lBUy9ETixFQUFBLGNBUlJFLEVBV00sT0FBQTtBQUFBO2NBVkgsT0FBS0csRUFBQTtBQUFBO2dCQUF5RGdLLEVBQUEsUUFBWSxDQUFBLGFBQWlCL0osRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLElBQUlXLEtBQUksS0FBSyxLQUFLO0FBQUEsaUJBQXdCOEssRUFBQSxTQUFZOUssS0FBSSxLQUFLLE1BQU0sUUFBUTtBQUFBLGdCQUF1QkEsRUFBQVgsQ0FBQSxFQUFJLE9BQU87QUFBQSxnQkFBb0JXLEVBQUFYLENBQUEsRUFBSSxlQUFlO0FBQUEsY0FBQTtpQkFTcFFzSixFQUFBLEtBQWMsR0FBQSxDQUFBO2VBR25CN0ksRUFnQkUsU0FBQTtBQUFBLGNBZkMsY0FBY0osRUFBQSxlQUFZLE9BQUE7QUFBQSxjQUMxQixPQUFLSyxFQUFBLENBQUdDLEtBQUksTUFBTSxNQUFNTixjQUFZTSxFQUFBWCxDQUFBLEVBQUksT0FBTyxhQUFhVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQTtBQUFBLGNBQ2hGLFVBQVVLLEVBQUE7QUFBQSxjQUNWLFdBQVdBLEVBQUE7QUFBQSxjQUNYLFdBQVdBLEVBQUE7QUFBQSxjQUNYLE1BQU1BLEVBQUE7QUFBQSx1QkFDSDtBQUFBLGNBQUosS0FBSVc7QUFBQSxjQUNILFVBQVVYLEVBQUE7QUFBQSxjQUNWLE1BQU04TCxFQUFBO0FBQUEsY0FDTixVQUFRUTtBQUFBLGNBQ1IsU0FBTzdCO0FBQUEsY0FDUCxZQUFVQztBQUFBLGNBQ1YsU0FBTzZCO0FBQUEsY0FDUCxJQUFJdk0sRUFBQTtBQUFBLDREQUNJMkgsRUFBSyxRQUFBOUQ7QUFBQSxZQUFBO21CQUFMOEQsRUFBQSxLQUFLO0FBQUEsWUFBQTs7VUFXVjNILEVBQUEsZUFQUkUsRUFVTSxPQUFBO0FBQUE7WUFUSCxPQUFLRyxFQUFBO0FBQUE7Y0FBc0RDLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxlQUFxQnlMLEVBQUEsU0FBWTlLLEtBQUksS0FBSyxNQUFNLFFBQVE7QUFBQSxjQUFxQitKLEVBQUEsUUFBWSxLQUFBO0FBQUEsWUFBQTtlQVFoS3JLLEVBQUEsTUFBTSxHQUFBLENBQUE7O1FBTUxxTSxFQUFBLFNBQVlyTSxFQUFBLFNBQVNNLEVBQUFnTCxDQUFBLEVBQWdCLGlCQUY3Q3BMLEVBU1MsVUFBQTtBQUFBO1VBUk4sU0FBTytMO0FBQUEsUUFBQTtVQUdSM0osRUFJRUMsR0FBQTtBQUFBLFlBSEMsVUFBUWpDLEVBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBSSxDQUFBO0FBQUEsWUFDNUIsTUFBTVcsRUFBQXlCLENBQUEsRUFBSztBQUFBLFlBQ1gsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFVBQUE7O1FBTVJSLEVBQUEsU0FBU00sRUFBQWdMLENBQUEsRUFBZ0IsaUJBRmpDcEwsRUFTUyxVQUFBO0FBQUE7VUFSTixTQUFLK0YsRUFBQSxDQUFBLE1BQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUFwQyxNQUFFK0gsRUFBQSxRQUFZLENBQUlBLEVBQUE7QUFBQSxRQUFBO1VBR3hCdEosRUFJRUMsR0FBQTtBQUFBLFlBSEMsVUFBUWpDLEVBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBSSxDQUFBO0FBQUEsWUFDNUIsTUFBTVcsRUFBQXlCLENBQUEsRUFBSztBQUFBLFlBQ1gsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFVBQUE7OztNQU9WUixFQUFBLGtCQUFrQm9MLEVBQUEsY0FGMUJsTCxFQWNNLE9BQUE7QUFBQTtRQWJILFVBQVFJLEVBQUFYLENBQUEsRUFBSSxRQUFRLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxNQUFNLFFBQVFXLEtBQUksSUFBSSxPQUFPLENBQUE7QUFBQSxNQUFBO1FBT3BEOEssRUFBQSxjQUpSdkosRUFLRVUsR0FBQTtBQUFBO1VBSkMsU0FBTyxFQUFFO0FBQUEsVUFDVCxNQUFNakMsRUFBQXlCLENBQUEsRUFBSztBQUFBLFVBQ1gsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFFBQUE7UUFJZEosRUFFTSxPQUFBO0FBQUEsVUFGQSxVQUFRRSxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQTtBQUFBLFFBQUEsS0FDOUJ5TCxFQUFBLFFBQVdELEVBQUEsUUFBZW5MLEVBQUEsY0FBYyxHQUFBLENBQUE7QUFBQSxNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25QakQsVUFBTUQsSUFBUUMsR0FpQlJpQyxJQUFPQyxHQUVQMEcsSUFBYUMsa0JBQXNDLEdBRW5EQyxJQUFjMUIsR0FBQSxHQUVkNEIsSUFBVzdILEVBQXNCb0csR0FBa0IsUUFBUSxHQUMzRDBDLElBQVc5SSxFQUFhLEVBQUssR0FDN0I0SCxJQUFlNUgsRUFBYSxFQUFLLEdBQ2pDc0wsSUFBa0J0TCxFQUFnQyxJQUFJLEdBRXREOEgsSUFBaUJqRyxFQUFTLE1BQU9qRCxFQUFNLFdBQVcsR0FBR0EsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBTSxHQUNuRm9KLElBQVluRyxFQUFTLE1BQ3JCb0csRUFBaUIsUUFBYyxLQUM5QkwsRUFBYSxRQUNYLENBQUNDLEVBQVMsTUFBTSxRQURTLEVBRWpDLEdBQ0tJLElBQW1CcEcsRUFBUyxNQUFNakQsRUFBTSxVQUFVLEVBQUUsR0FDcERzSyxJQUFlckgsRUFBUyxNQUFNaUgsRUFBUyxTQUFTLENBQUNLLEVBQVEsS0FBSyxHQUM5REEsSUFBVXRILEVBQVMsTUFBTTRGLEVBQVcsVUFBVSxFQUFFLEdBQ2hEUyxJQUF3QnJHLEVBQVMsTUFBT21HLEVBQVUsU0FBU0gsRUFBUyxNQUFNLFdBQVlqSixFQUFNLGNBQWMsR0FFMUcwSyxJQUFjLE1BQU07QUFDeEIsTUFBQVIsRUFBUyxRQUFRLElBQ2JsSyxFQUFNLGlCQUFpQmlLLEdBQWMsWUFBb0IsUUFBUTtBQUFBLElBQ3ZFLEdBRU1VLElBQWlCLE1BQU07QUFDM0IsTUFBQVQsRUFBUyxRQUFRLElBQ2JsSyxFQUFNLGlCQUFpQmlLLEdBQWMsV0FBbUIsUUFBUTtBQUFBLElBQ3RFLEdBRU1rQyxJQUFtQixNQUFNOztBQUM3QixPQUFBdkcsSUFBQThHLEVBQWdCLFVBQWhCLFFBQUE5RyxFQUF1QjtBQUFBLElBQ3pCLEdBRU0rRyxJQUFzQyxDQUFDTixNQUFrQjtBQUM3RCxNQUFLbkMsRUFBUyxTQUNWbUMsRUFBRSxXQUFXSyxFQUFnQixXQUFTLGVBQUE7QUFBQSxJQUM1QztBQUVBLFdBQUFsRCxHQUFZLE1BQU07QUFDaEIsTUFBQVAsRUFBUyxRQUFRYixHQUF5QjtBQUFBLFFBQ3hDLGdCQUFnQnBJLEVBQU07QUFBQSxRQUN0QixXQUFXQSxFQUFNO0FBQUEsUUFDakIsV0FBV0EsRUFBTTtBQUFBLFFBQ2pCLFVBQVVBLEVBQU07QUFBQSxRQUNoQixZQUFZQSxFQUFNO0FBQUEsUUFDbEIsT0FBTzZJO0FBQUEsTUFBQSxDQUNSO0FBQUEsSUFDSCxDQUFDLEdBRUR4SDtBQUFBLE1BQ0UsTUFBTTBILEtBQUEsZ0JBQUFBLEVBQWEsZ0JBQWdCO0FBQUEsTUFDbkMsQ0FBQ1UsTUFBYTtBQUNaLFFBQUlBLFFBQXVCLFFBQVE7QUFBQSxNQUNyQztBQUFBLE1BQ0EsRUFBRSxXQUFXLEdBQUE7QUFBQSxJQUFLLEdBR3BCcEk7QUFBQSxNQUNFNEg7QUFBQSxNQUNBLE1BQU07QUFDSixRQUFBL0csRUFBSyxTQUFTK0csRUFBUyxNQUFNLEtBQUs7QUFBQSxNQUNwQztBQUFBLE1BQ0EsRUFBRSxNQUFNLElBQU0sV0FBVyxHQUFBO0FBQUEsSUFBSyxtQkFLaEM5SSxFQW1ETSxPQUFBO0FBQUEsTUFsREgsT0FBS0csRUFBQSxDQUFBLHVCQUEwQkMsS0FBSSxRQUFRLE1BQU1BLEtBQUksS0FBSyxVQUFVLFFBQVFBLEVBQUFYLENBQUEsRUFBSSxJQUFJLFNBQVN3SixFQUFBLFNBQVMsT0FBQSxDQUFBO0FBQUEsSUFBQTtNQUV2Ry9JLEVBeUNRLFNBQUE7QUFBQSxRQXhDTCxPQUFLQyxFQUFBO0FBQUE7VUFBaURDLEVBQUFYLENBQUEsRUFBSSxJQUFJO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLFNBQVM7QUFBQSxVQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFVBQWNXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEtBQUs7QUFBQSxVQUFhVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxJQUFJO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRztBQUFBLFVBQWdCVyxFQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRO0FBQUEsVUFBaUJXLEVBQUFYLENBQUEsRUFBSSxPQUFPO0FBQUEsUUFBQTtRQVdsUixLQUFLSyxFQUFBO0FBQUEsUUFDTCxTQUFPa007QUFBQSxRQUNQLGFBQVdRO0FBQUEsTUFBQTtRQVNKMU0sRUFBQSxjQVBSRSxFQVVNLE9BQUE7QUFBQTtVQVRILE9BQUtHLEVBQUE7QUFBQTtZQUFxRGdLLEVBQUEsUUFBWSxDQUFBLGFBQWlCL0osRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLElBQUlXLEtBQUksS0FBSyxLQUFLO0FBQUEsYUFBb0I2SSxFQUFBLFNBQWE3SSxLQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsWUFBbUJBLEVBQUFYLENBQUEsRUFBSSxlQUFlO0FBQUEsVUFBQTthQVExTnNKLEVBQUEsS0FBYyxHQUFBLENBQUE7V0FHbkI3SSxFQVlFLFlBQUE7QUFBQSxVQVhDLFVBQVFFLEVBQUFYLENBQUEsRUFBSSxRQUFRLE9BQU9XLEVBQUFYLENBQUEsRUFBSSxNQUFNLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBO0FBQUEsVUFDL0QsV0FBV0ssRUFBQTtBQUFBLFVBQ1gsV0FBV0EsRUFBQTtBQUFBLFVBQ1gsTUFBTUEsRUFBQTtBQUFBLG1CQUNIO0FBQUEsVUFBSixLQUFJeU07QUFBQSxVQUNILFVBQVV6TSxFQUFBO0FBQUEsVUFDVixNQUFNQSxFQUFBO0FBQUEsVUFDTixTQUFPeUs7QUFBQSxVQUNQLFlBQVVDO0FBQUEsVUFDVixJQUFJMUssRUFBQTtBQUFBLHdEQUNJNEksRUFBVSxRQUFBL0U7QUFBQSxRQUFBO2VBQVYrRSxFQUFBLEtBQVU7QUFBQSxRQUFBOztNQU9mUyxFQUFBLGNBSFJ4SCxFQUlFNEgsSUFBQTtBQUFBO1FBSEMsWUFBVU4sRUFBQTtBQUFBLFFBQ1YsU0FBU0UsRUFBQTtBQUFBLE1BQUE7OztxSkM1SmRLLEtBQWUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7OztBQTJCZixVQUFNM0osSUFBUUMsR0FhUmtMLElBQVEvSixFQUFJcEIsRUFBTSxLQUFLLEdBQ3ZCa0ssSUFBVzlJLEVBQUksRUFBSyxHQUNwQlIsSUFBUVEsRUFBNkIsSUFBSSxHQUN6Q3dHLElBQVF4RyxFQUFJcEIsRUFBTSxLQUFLLEdBRXZCb0wsSUFBZW5JLEVBQVMsTUFBTThILEdBQWdCL0ssRUFBTSxPQUFPbUwsRUFBTSxLQUFLLENBQUMsR0FDdkVqQyxJQUFpQmpHLEVBQVMsTUFBT2pELEVBQU0sV0FBVyxHQUFHQSxFQUFNLEtBQUssT0FBT0EsRUFBTSxLQUFNLEdBQ25GcUwsSUFBV3BJO0FBQUEsTUFDZixNQUFPakQsRUFBTSxZQUFZNEgsRUFBTSxVQUFVLFVBQWEsQ0FBQ0EsRUFBTSxTQUFVcUQsR0FBaUJFLEVBQU0sT0FBT25MLEVBQU0sS0FBSztBQUFBLElBQUEsR0FFNUdzSyxJQUFlckgsRUFBUyxNQUFNaUgsRUFBUyxTQUFTLENBQUNLLEVBQVEsS0FBSyxHQUM5REEsSUFBVXRILEVBQVMsTUFBTTJFLEVBQU0sVUFBVSxNQUFNQSxFQUFNLFVBQVUsTUFBUyxHQUV4RThDLElBQWMsTUFBTTtBQUN4QixNQUFBUixFQUFTLFFBQVE7QUFBQSxJQUNuQixHQUVNUyxJQUFpQixNQUFNO0FBQzNCLE1BQUFULEVBQVMsUUFBUSxJQUVadEMsRUFBTSxVQUNUQSxFQUFNLFFBQVE7QUFBQSxJQUVsQixHQUVNMkUsSUFBbUIsTUFDaEJyQixHQUFzQjtBQUFBLE1BQzNCLE9BQUFDO0FBQUEsTUFDQSxnQkFBZ0JuTCxFQUFNO0FBQUEsTUFDdEIsV0FBV0EsRUFBTTtBQUFBLE1BQ2pCLFdBQVdBLEVBQU07QUFBQSxNQUNqQixVQUFVQSxFQUFNO0FBQUEsTUFDaEIsT0FBQTRIO0FBQUEsSUFBQSxDQUNEO0FBR0gsV0FBQXZHO0FBQUEsTUFDRSxNQUFNckIsRUFBTTtBQUFBLE1BQ1osQ0FBQ3lKLEdBQVVJLE1BQWE7QUFDdEIsU0FBSUosTUFBYUksS0FBWUosTUFBYTdCLEVBQU0sV0FDOUNBLEVBQU0sUUFBUTZCO0FBQUEsTUFFbEI7QUFBQSxJQUFBLEdBR0Y2QixFQUFhO0FBQUEsTUFDWCxPQUFBSDtBQUFBLE1BQ0EsVUFBVW5MLEVBQU07QUFBQSxNQUNoQixPQUFBNEg7QUFBQSxJQUFBLENBQ0QsbUJBSUR6SCxFQTJETSxPQUFBO0FBQUEsTUExREgsT0FBS0csRUFBQSxDQUFBLHVCQUEwQkMsS0FBSSxRQUFRLE1BQU1BLEtBQUksS0FBSyxVQUFVLFFBQVFBLEVBQUFYLENBQUEsRUFBSSxJQUFJLFNBQVN5TCxFQUFBLFNBQVEsT0FBQSxDQUFBO0FBQUEsSUFBQTtNQUV0R2hMLEVBd0NRLFNBQUE7QUFBQSxRQXZDTCxPQUFLQyxFQUFBO0FBQUE7VUFBaURDLEVBQUFYLENBQUEsRUFBSSxJQUFJO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLFNBQVM7QUFBQSxVQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFVBQWNXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEtBQUs7QUFBQSxVQUFhVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxJQUFJO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRztBQUFBLFVBQWdCVyxFQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRO0FBQUEsVUFBaUJXLEVBQUFYLENBQUEsRUFBSSxPQUFPO0FBQUEsUUFBQTtRQVdsUixLQUFLSyxFQUFBO0FBQUEsTUFBQTtRQVNFQSxFQUFBLGNBUFJFLEVBVU0sT0FBQTtBQUFBO1VBVEgsT0FBS0csRUFBQTtBQUFBO1lBQXFEZ0ssRUFBQSxRQUFZLENBQUEsYUFBaUIvSixFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sSUFBSVcsS0FBSSxLQUFLLEtBQUs7QUFBQSxhQUFvQjhLLEVBQUEsU0FBWTlLLEtBQUksS0FBSyxNQUFNLFFBQVE7QUFBQSxZQUFtQkEsRUFBQVgsQ0FBQSxFQUFJLGVBQWU7QUFBQSxVQUFBO2FBUXpOc0osRUFBQSxLQUFjLEdBQUEsQ0FBQTtXQUduQjdJLEVBYUUsWUFBQTtBQUFBLFVBWkMsVUFBUUUsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsT0FBT1csRUFBQVgsQ0FBQSxFQUFJLE1BQU0sTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxNQUFNLENBQUE7QUFBQSxVQUMvRCxXQUFXSyxFQUFBO0FBQUEsVUFDWCxXQUFXQSxFQUFBO0FBQUEsVUFDWCxNQUFNQSxFQUFBO0FBQUEsbUJBQ0g7QUFBQSxVQUFKLEtBQUlXO0FBQUEsVUFDSCxVQUFVWCxFQUFBO0FBQUEsVUFDVixNQUFNQSxFQUFBO0FBQUEsVUFDTixVQUFRc007QUFBQSxVQUNSLFNBQU83QjtBQUFBLFVBQ1AsWUFBVUM7QUFBQSxVQUNWLElBQUkxSyxFQUFBO0FBQUEsd0RBQ0kySCxFQUFLLFFBQUE5RDtBQUFBLFFBQUE7ZUFBTDhELEVBQUEsS0FBSztBQUFBLFFBQUE7O01BTVYzSCxFQUFBLGtCQUFrQm9MLEVBQUEsY0FGMUJsTCxFQWFNLE9BQUE7QUFBQTtRQVpILFVBQVFJLEVBQUFYLENBQUEsRUFBSSxRQUFRLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxNQUFNLFFBQVFXLEtBQUksSUFBSSxPQUFPLENBQUE7QUFBQSxNQUFBO1FBTXBEOEssRUFBQSxjQUhSdkosRUFJRVUsR0FBQTtBQUFBO1VBSEMsTUFBTWpDLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxVQUNYLE1BQU16QixFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBO1FBSWRKLEVBRU0sT0FBQTtBQUFBLFVBRkEsVUFBUUUsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLENBQUE7QUFBQSxRQUFBLEtBQzlCeUwsRUFBQSxRQUFXRCxFQUFBLFFBQWVuTCxFQUFBLGNBQWMsR0FBQSxDQUFBO0FBQUEsTUFBQTs7Ozs7Ozs7Ozs7Ozs7O0FDdElqRCxVQUFNRCxJQUFRQztzQkFZZEMsS0FBQTRCLEVBMEJZQyxHQWpCTC9CLEVBQU0sWUFBWU8sRUFBQW9DLENBQUEsRUFBUSxPQUFPcEMsS0FBUSxPQUFPQSxFQUFBb0MsQ0FBQSxFQUFRLE1BQU0sR0FBQTtBQUFBLE1BUmxFLE9BQUtyQyxFQUFBO0FBQUE7UUFBNkJDLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBY1csRUFBQVgsQ0FBQSxFQUFJLE1BQU0sRUFBRTtBQUFBLFFBQVlLLEVBQUEsU0FBTSxDQUFJTSxFQUFBWCxDQUFBLEVBQUksVUFBVSxLQUFLLEtBQUtXLEVBQUFYLENBQUEsRUFBSSxVQUFVLE1BQU0sRUFBRSxJQUFBLENBQUtXLEVBQUFYLENBQUEsRUFBSSxVQUFVLEtBQUssSUFBSVcsRUFBQVgsQ0FBQSxFQUFJLFVBQVUsTUFBTSxHQUFHO0FBQUEsTUFBQTtNQU0vTCxNQUFNSSxFQUFNO0FBQUEsTUFDWixRQUFRQSxFQUFNLFdBQVdPLEVBQUF1QyxFQUFBLEVBQU8sUUFBUXZDLEVBQUF1QyxFQUFBLEVBQU87QUFBQSxJQUFBO2tCQUdoRCxNQUlFO0FBQUEsUUFETTlDLEVBQU0sb0JBSGQ4QixFQUlFVSxHQUFBO0FBQUE7VUFIQyxPQUFLbEMsRUFBQSxDQUFHQyxLQUFJLFFBQVEsY0FBY0EsS0FBSSxNQUFNLEVBQUUsUUFBUUEsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTSxPQUFPLENBQUE7QUFBQSxVQUM5RSxNQUFNSSxFQUFNO0FBQUEsUUFBQTtRQUlmSyxFQUVPLFFBQUE7QUFBQSxVQUZBLFVBQVFFLEVBQUFYLENBQUEsRUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFBO0FBQUEsUUFBQSxHQUM1QjBDLEVBQUF0QyxFQUFNLEtBQUssR0FBQSxDQUFBO0FBQUEsUUFNUkEsRUFBTSxxQkFIZDhCLEVBSUVVLEdBQUE7QUFBQTtVQUhDLE9BQUtsQyxFQUFBLENBQUdDLEtBQUksUUFBUSxjQUFjQSxLQUFJLE1BQU0sRUFBRSxRQUFRQSxFQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQTtBQUFBLFVBQzdFLE1BQU1JLEVBQU07QUFBQSxRQUFBOzs7OztJQ3BETjRNLEtBQWE7QUFBQSxFQUN4QixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQ04sR0FFYUMsS0FBUTtBQUFBLEVBQ25CLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFDTixHQ1BhQyxLQUFnQixPQUFPQyxNQUFzQjtBQUl4RCxRQUFNQyxJQUFPLFNBQVM7QUFFdEIsTUFBSUQ7QUFDRixRQUFJLENBQUNDLEVBQUssUUFBUSxhQUFhO0FBQzdCLFlBQU1DLElBQVUsT0FBTztBQUV2QixNQUFBRCxFQUFLLFFBQVEsY0FBY0MsRUFBUSxTQUFBLEdBQ25DRCxFQUFLLE1BQU0sWUFBWSxvQkFBb0IsR0FBR0MsQ0FBTyxJQUFJLEdBQ3pERCxFQUFLLE1BQU0sWUFBWSxTQUFTLEdBQUcsR0FDbkNBLEVBQUssTUFBTSxZQUFZLGNBQWMsd0NBQXdDLEdBQzdFQSxFQUFLLE1BQU0sWUFBWSxjQUFjLFFBQVEsR0FDN0NBLEVBQUssTUFBTSxZQUFZLFlBQVksT0FBTztBQUFBLElBSTVDO0FBQUEsYUFFQSxNQUFNRSxHQUFBLEdBQ0YsQ0FBQyxTQUFTLGNBQWMsY0FBYyxHQUFHO0FBQzNDLFVBQU1DLElBQWUsU0FBU0gsRUFBSyxRQUFRLGVBQWUsR0FBRztBQUs3RCxJQUFBQSxFQUFLLE1BQU0sZUFBZSxPQUFPLEdBQ2pDQSxFQUFLLE1BQU0sZUFBZSxXQUFXLEdBQ3JDQSxFQUFLLE1BQU0sZUFBZSxXQUFXLEdBQ3JDQSxFQUFLLE1BQU0sZUFBZSxVQUFVLEdBQ3BDQSxFQUFLLE1BQU0sZUFBZSxrQkFBa0IsR0FFNUMsT0FBTyxTQUFTO0FBQUEsTUFDZCxVQUFVO0FBQUEsTUFDVixLQUFLRztBQUFBLElBQUEsQ0FDTixHQUVELE9BQU9ILEVBQUssUUFBUTtBQUFBLEVBQ3RCO0FBRUosR0FFYUksS0FBZSxrQkFFZkMsS0FBbUIsTUFBTTtBQUNwQyxNQUFJQyxJQUFXLFNBQVMsZUFBZUYsRUFBWTtBQUNuRCxFQUFLRSxNQUNIQSxJQUFXLFNBQVMsY0FBYyxLQUFLLEdBQ3ZDQSxFQUFTLEtBQUtGLElBQ2RFLEVBQVMsYUFBYSxrQkFBa0IsRUFBRSxHQUMxQyxTQUFTLEtBQUssWUFBWUEsQ0FBUSxJQUVwQ0EsRUFBUyxNQUFNLFlBQVk7QUFDN0I7Ozs7Ozs7Ozs7O0FDMUNFLFVBQU10TixJQUFRQyxHQVlSaUMsSUFBT0MsR0FFUG9MLElBQWdEbk0sRUFBQSxHQUNoRG9NLElBQWtEcE0sRUFBQSxHQUVsRHFNLElBQTBCLE1BQU07O0FBQ3BDLE9BQUE3SCxJQUFBNEgsRUFBWSxVQUFaLFFBQUE1SCxFQUFtQjtBQUFBLElBQ3JCLEdBRU04SCxJQUEyQixNQUFNOztBQUNyQyxPQUFBOUgsSUFBQTRILEVBQVksVUFBWixRQUFBNUgsRUFBbUI7QUFBQSxJQUNyQixHQUVNK0gsSUFBcUIsTUFBTTtBQUMvQixNQUFBVCxHQUFTLE1BQU07QUFDYixRQUFLSyxFQUFhLFVBQ2xCQSxFQUFhLE1BQU0sWUFBWTtBQUFBLE1BQ2pDLENBQUM7QUFBQSxJQUNILEdBRU1LLElBQXNCLE1BQU07QUFDaEMsTUFBSTVOLEVBQU0saUJBQWVrQyxFQUFLLE9BQU87QUFBQSxJQUN2QyxHQUVNMkwsSUFBc0IsQ0FBQ3hCLE1BQWE7QUFDeEMsTUFBQUEsRUFBRSxlQUFBLEdBQ0VyTSxFQUFNLGlCQUFla0MsRUFBSyxPQUFPO0FBQUEsSUFDdkM7QUFFQSxXQUFBYjtBQUFBLE1BQ0UsTUFBTXJCLEVBQU07QUFBQSxNQUNaLENBQUN5SixNQUFhO0FBQ1osUUFBSytELEVBQVksVUFDYi9ELEtBQ0ZnRSxFQUFBLEdBQ0FFLEVBQUEsS0FFQUQsRUFBQSxHQUVGWixHQUFjckQsQ0FBUTtBQUFBLE1BQ3hCO0FBQUEsSUFBQSxHQUdGMUQsR0FBVSxNQUFNO0FBQ2QsTUFBSS9GLEVBQU0sVUFDUnlOLEVBQUE7QUFBQSxJQUVKLENBQUMsbUJBSUR0TixFQTBGUyxVQUFBO0FBQUEsTUF6Rk4sT0FBS0csRUFBQSxDQUFBLGNBQWlCQyxFQUFBWCxDQUFBLEVBQUksR0FBRyxTQUFTVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNVyxFQUFBWCxDQUFBLEVBQUksTUFBTSxNQUFNVyxFQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQTtBQUFBLGVBQzFGO0FBQUEsTUFBSixLQUFJNE47QUFBQSxNQUNILE9BQUszRyxHQUFBLEVBQUEsaUJBQXFCN0csRUFBTSxPQUFLO0FBQUEsTUFDckMsWUFBWTROLEdBQW1CLENBQUEsTUFBQSxDQUFBO0FBQUEsTUFDL0IsNEJBQUQsTUFBQTtBQUFBLE1BQUEsR0FBYyxDQUFBLFNBQUEsQ0FBQTtBQUFBLE1BQ2IsY0FBZ0JDLEdBQW1CLENBQUEsUUFBQSxDQUFBO0FBQUEsSUFBQTtNQUVwQ3hOLEVBaUZNLE9BQUE7QUFBQSxRQWhGSCxPQUFLQyxFQUFBO0FBQUE7VUFBdUNDLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxVQUFpQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFVBQWFXLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVTtBQUFBLFVBQWdCVyxFQUFBWCxDQUFBLEVBQUksU0FBUyxHQUFHO0FBQUEsVUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxTQUFTO0FBQUEsVUFBa0JXLEVBQUFYLENBQUEsRUFBSSxZQUFZO0FBQUEsVUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxPQUFPO0FBQUEsVUFBYVcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFjVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWtCVyxFQUFBWCxDQUFBLEVBQUksZUFBYyxDQUFFVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxNQUFNLEdBQUdXLEVBQUFxTSxFQUFBLEVBQVcsRUFBRTtBQUFBLFFBQUE7O1FBZXpZdk0sRUFrQ1MsVUFBQTtBQUFBLFVBakNOLE9BQUtDLEVBQUE7QUFBQTtZQUE2Q0MsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxZQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFlBQWVXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE1BQU07QUFBQSxZQUFlVyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFlBQWdCVyxFQUFBWCxDQUFBLEVBQUksSUFBSTtBQUFBLFlBQWdCVyxFQUFBWCxDQUFBLEVBQUksVUFBVTtBQUFBLFlBQW1CVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsWUFBZVcsRUFBQVgsQ0FBQSxFQUFJLFNBQVM7QUFBQSxZQUFvQlcsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFBOztVQWtCdlNLLEVBQUEscUJBTFI2QixFQU1Fb0IsR0FBQTtBQUFBO1lBTEMsTUFBTTNDLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxZQUNYLFVBQVV6QixFQUFBc0MsQ0FBQSxFQUFTO0FBQUEsWUFDbkIsZ0NBQU9YLEVBQUksTUFBQTtBQUFBLFlBQ1osT0FBTTtBQUFBLFVBQUE7VUFJUjdCLEVBR0UsT0FBQTtBQUFBLFlBRkMsVUFBUUUsRUFBQVgsQ0FBQSxFQUFJLEtBQUssS0FBSyxVQUFVLENBQUE7QUFBQSxZQUNqQyxhQUFBMEMsRUFBUXJDLEVBQU0sS0FBRDtBQUFBLFVBQUE7VUFRUEEsRUFBQSxzQkFMUjZCLEVBTUVvQixHQUFBO0FBQUE7WUFMQyxPQUFLNUMsRUFBQSxDQUFHQyxLQUFJLEtBQUssS0FBSyxLQUFLQSxFQUFBWCxDQUFBLEVBQUksS0FBSyxPQUFPLEtBQUtXLEVBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUssSUFBSSxDQUFBO0FBQUEsWUFDcEUsTUFBTVcsRUFBQXlCLENBQUEsRUFBSztBQUFBLFlBQ1gsVUFBVXpCLEVBQUFzQyxDQUFBLEVBQVM7QUFBQSxZQUNuQixnQ0FBT1gsRUFBSSxPQUFBO0FBQUEsVUFBQTs7UUFLaEI3QixFQWFNLE9BQUE7QUFBQSxVQVpILE9BQUtDLEVBQUE7QUFBQTtZQUE4Q0MsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxZQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLFVBQVU7QUFBQSxZQUFtQlcsRUFBQVgsQ0FBQSxFQUFJLFNBQVMsRUFBRTtBQUFBLFlBQWtCVyxFQUFBWCxDQUFBLEVBQUksU0FBUyxFQUFFO0FBQUEsWUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxZQUFlVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFVBQUE7bUJBU3BOO0FBQUEsVUFBSixLQUFJMk47QUFBQSxRQUFBO1VBRUo5SyxFQUFRQyxFQUFBLFFBQUEsV0FBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsUUFBQTtRQWFGb0wsRUFBQUEsT0FBTyxlQVZmM04sRUFhUyxVQUFBO0FBQUE7VUFaTixPQUFLRyxFQUFBO0FBQUE7WUFBNkNDLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsWUFBZVcsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxZQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLElBQUk7QUFBQSxZQUFlVyxFQUFBWCxDQUFBLEVBQUksVUFBVTtBQUFBLFlBQW1CVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsWUFBZVcsRUFBQVgsQ0FBQSxFQUFJLE9BQU87QUFBQSxVQUFBOztVQVd4TTZDLEVBQXNCQyxFQUFBLFFBQUEsVUFBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsUUFBQTs7Ozs7Ozs7Ozs7O0FDNUo1QixVQUFNMUMsSUFBUUMsR0FLUmlDLElBQU9DLEdBRVA0TCxJQUFjM00sRUFBSXBCLEVBQU0sV0FBVyxHQUVuQ2dPLElBQW9CL0ssRUFBUyxNQUFNLElBQUksTUFBTWpELEVBQU0sU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQ2lPLEdBQU96SyxNQUFVQSxJQUFRLENBQUMsQ0FBQyxHQUV2R0ksSUFBYyxDQUFDSixNQUFrQjtBQUNyQyxNQUFBdUssRUFBWSxRQUFRdkssR0FFcEJ0QixFQUFLLFVBQVUsT0FBT3NCLENBQUs7QUFBQSxJQUM3QjsyQkFJQXJELEVBOEJVLFdBQUE7QUFBQSxNQTdCUCxPQUFLRyxFQUFBLENBQUEsbUJBQXNCQyxFQUFBWCxDQUFBLEVBQUksUUFBUSxNQUFNVyxFQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFRVyxFQUFBWCxDQUFBLEVBQUksTUFBTSxRQUFRVyxFQUFBWCxDQUFBLEVBQUksSUFBSSxTQUFTVyxFQUFBWCxDQUFBLEVBQUksTUFBTSxJQUFJLENBQUE7QUFBQSxJQUFBO01BRWpIMkMsRUFLRVcsR0FBQTtBQUFBLFFBSkMsVUFBVTZLLEVBQUEsVUFBVztBQUFBLFFBQ3JCLE1BQU14TixFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsUUFDWCxVQUFVekIsRUFBQXNDLENBQUEsRUFBUztBQUFBLFFBQ25CLFNBQUtxRCxFQUFBLENBQUEsTUFBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQXBDLE1BQUVGLEVBQVltSyxFQUFBLFFBQVcsQ0FBQTtBQUFBLE1BQUE7TUFHakMxTixFQVlLLE1BQUE7QUFBQSxRQVpBLE9BQUtDLEVBQUEsQ0FBR0MsS0FBSSxRQUFRLE1BQU1BLEVBQUFYLENBQUEsRUFBSSxNQUFNLFFBQVFXLEVBQUFYLENBQUEsRUFBSSxJQUFJLFNBQVNXLEVBQUFYLENBQUEsRUFBSSxhQUFhLEdBQUcsQ0FBQTtBQUFBLE1BQUE7Z0JBQ3BGTyxFQVVLbUQsR0FBQSxNQUFBd0QsR0FSd0JrSCxFQUFBLE9BQWlCLENBQXJDRSxZQUZUL04sRUFVSyxNQUFBLEVBVEYsS0FBSytOLEtBQWdCO0FBQUEsVUFHdEIzTCxFQUtFNEwsSUFBQTtBQUFBLFlBSkMsVUFBVUosRUFBQSxVQUFnQkc7QUFBQSxZQUMxQixPQUFPQTtBQUFBLFlBQ1AsVUFBVTNOLEVBQUFzQyxDQUFBLEVBQVM7QUFBQSxZQUNuQixTQUFLLENBQUFpQixNQUFFRixFQUFZc0ssQ0FBZ0I7QUFBQSxVQUFBOzs7TUFLMUMzTCxFQUtFVyxHQUFBO0FBQUEsUUFKQyxVQUFVNkssRUFBQSxVQUFnQkMsUUFBa0JBLEVBQUEsTUFBa0IsU0FBTSxDQUFBO0FBQUEsUUFDcEUsTUFBTXpOLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxRQUNYLFVBQVV6QixFQUFBc0MsQ0FBQSxFQUFTO0FBQUEsUUFDbkIsU0FBS3FELEVBQUEsQ0FBQSxNQUFBQSxFQUFBLENBQUEsSUFBQSxDQUFBcEMsTUFBRUYsRUFBWW1LLEVBQUEsUUFBVyxDQUFBO0FBQUEsTUFBQTs7O0lDeEQvQkssS0FBUSxDQUFDLE9BQU8sU0FBUyxVQUFVLE1BQU0sR0FDekNDLEtBQWEsQ0FBQyxTQUFTLEtBQUssR0FDNUJDLEtBQTBCLGdCQUFBRixHQUFNLE9BQU8sQ0FBQ0csR0FBS0MsTUFBU0QsRUFBSSxPQUFPQyxHQUFNQSxJQUFPLE1BQU1ILEdBQVcsQ0FBQyxHQUFHRyxJQUFPLE1BQU1ILEdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUNsSUksS0FBTSxLQUFLLEtBQ1hDLEtBQU0sS0FBSyxLQUNYQyxLQUFRLEtBQUssT0FDYkMsS0FBUSxLQUFLLE9BQ2JDLEtBQWUsQ0FBQUMsT0FBTTtBQUFBLEVBQ3pCLEdBQUdBO0FBQUEsRUFDSCxHQUFHQTtBQUNMLElBQ01DLEtBQWtCO0FBQUEsRUFDdEIsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsS0FBSztBQUNQLEdBQ01DLEtBQXVCO0FBQUEsRUFDM0IsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUNQO0FBQ0EsU0FBU0MsR0FBTUMsR0FBT3RILEdBQU91SCxHQUFLO0FBQ2hDLFNBQU9ULEdBQUlRLEdBQU9ULEdBQUk3RyxHQUFPdUgsQ0FBRyxDQUFDO0FBQ25DO0FBQ0EsU0FBU0MsR0FBU3hILEdBQU95SCxHQUFPO0FBQzlCLFNBQU8sT0FBT3pILEtBQVUsYUFBYUEsRUFBTXlILENBQUssSUFBSXpIO0FBQ3REO0FBQ0EsU0FBUzBILEdBQVFDLEdBQVc7QUFDMUIsU0FBT0EsRUFBVSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQy9CO0FBQ0EsU0FBU0MsR0FBYUQsR0FBVztBQUMvQixTQUFPQSxFQUFVLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDL0I7QUFDQSxTQUFTRSxHQUFnQkMsR0FBTTtBQUM3QixTQUFPQSxNQUFTLE1BQU0sTUFBTTtBQUM5QjtBQUNBLFNBQVNDLEdBQWNELEdBQU07QUFDM0IsU0FBT0EsTUFBUyxNQUFNLFdBQVc7QUFDbkM7QUFDQSxTQUFTRSxHQUFZTCxHQUFXO0FBQzlCLFNBQU8sQ0FBQyxPQUFPLFFBQVEsRUFBRSxTQUFTRCxHQUFRQyxDQUFTLENBQUMsSUFBSSxNQUFNO0FBQ2hFO0FBQ0EsU0FBU00sR0FBaUJOLEdBQVc7QUFDbkMsU0FBT0UsR0FBZ0JHLEdBQVlMLENBQVMsQ0FBQztBQUMvQztBQUNBLFNBQVNPLEdBQWtCUCxHQUFXUSxHQUFPQyxHQUFLO0FBQ2hELEVBQUlBLE1BQVEsV0FDVkEsSUFBTTtBQUVSLFFBQU1DLElBQVlULEdBQWFELENBQVMsR0FDbENXLElBQWdCTCxHQUFpQk4sQ0FBUyxHQUMxQ1ksSUFBU1IsR0FBY08sQ0FBYTtBQUMxQyxNQUFJRSxJQUFvQkYsTUFBa0IsTUFBTUQsT0FBZUQsSUFBTSxRQUFRLFdBQVcsVUFBVSxTQUFTQyxNQUFjLFVBQVUsV0FBVztBQUM5SSxTQUFJRixFQUFNLFVBQVVJLENBQU0sSUFBSUosRUFBTSxTQUFTSSxDQUFNLE1BQ2pEQyxJQUFvQkMsR0FBcUJELENBQWlCLElBRXJELENBQUNBLEdBQW1CQyxHQUFxQkQsQ0FBaUIsQ0FBQztBQUNwRTtBQUtBLFNBQVNFLEdBQThCZixHQUFXO0FBQ2hELFNBQU9BLEVBQVUsUUFBUSxjQUFjLENBQUFVLE1BQWFqQixHQUFxQmlCLENBQVMsQ0FBQztBQUNyRjtBQTZCQSxTQUFTSSxHQUFxQmQsR0FBVztBQUN2QyxTQUFPQSxFQUFVLFFBQVEsMEJBQTBCLENBQUFmLE1BQVFPLEdBQWdCUCxDQUFJLENBQUM7QUFDbEY7QUFDQSxTQUFTK0IsR0FBb0JDLEdBQVM7QUFDcEMsU0FBTztBQUFBLElBQ0wsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsUUFBUTtBQUFBLElBQ1IsTUFBTTtBQUFBLElBQ04sR0FBR0E7QUFBQSxFQUNQO0FBQ0E7QUFDQSxTQUFTQyxHQUFpQkQsR0FBUztBQUNqQyxTQUFPLE9BQU9BLEtBQVksV0FBV0QsR0FBb0JDLENBQU8sSUFBSTtBQUFBLElBQ2xFLEtBQUtBO0FBQUEsSUFDTCxPQUFPQTtBQUFBLElBQ1AsUUFBUUE7QUFBQSxJQUNSLE1BQU1BO0FBQUEsRUFDVjtBQUNBO0FBQ0EsU0FBU0UsR0FBaUJDLEdBQU07QUFDOUIsUUFBTTtBQUFBLElBQ0osR0FBQUM7QUFBQSxJQUNBLEdBQUFDO0FBQUEsSUFDQSxPQUFBQztBQUFBLElBQ0EsUUFBQUM7QUFBQSxFQUNKLElBQU1KO0FBQ0osU0FBTztBQUFBLElBQ0wsT0FBQUc7QUFBQSxJQUNBLFFBQUFDO0FBQUEsSUFDQSxLQUFLRjtBQUFBLElBQ0wsTUFBTUQ7QUFBQSxJQUNOLE9BQU9BLElBQUlFO0FBQUEsSUFDWCxRQUFRRCxJQUFJRTtBQUFBLElBQ1osR0FBQUg7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSjtBQUNBO0FDcElBLFNBQVNHLEdBQTJCQyxHQUFNMUIsR0FBV1MsR0FBSztBQUN4RCxNQUFJO0FBQUEsSUFDRixXQUFBa0I7QUFBQSxJQUNBLFVBQUFDO0FBQUEsRUFDSixJQUFNRjtBQUNKLFFBQU1HLElBQVd4QixHQUFZTCxDQUFTLEdBQ2hDVyxJQUFnQkwsR0FBaUJOLENBQVMsR0FDMUM4QixJQUFjMUIsR0FBY08sQ0FBYSxHQUN6QzFCLElBQU9jLEdBQVFDLENBQVMsR0FDeEIrQixJQUFhRixNQUFhLEtBQzFCRyxJQUFVTCxFQUFVLElBQUlBLEVBQVUsUUFBUSxJQUFJQyxFQUFTLFFBQVEsR0FDL0RLLElBQVVOLEVBQVUsSUFBSUEsRUFBVSxTQUFTLElBQUlDLEVBQVMsU0FBUyxHQUNqRU0sSUFBY1AsRUFBVUcsQ0FBVyxJQUFJLElBQUlGLEVBQVNFLENBQVcsSUFBSTtBQUN6RSxNQUFJSztBQUNKLFVBQVFsRCxHQUFJO0FBQUEsSUFDVixLQUFLO0FBQ0gsTUFBQWtELElBQVM7QUFBQSxRQUNQLEdBQUdIO0FBQUEsUUFDSCxHQUFHTCxFQUFVLElBQUlDLEVBQVM7QUFBQSxNQUNsQztBQUNNO0FBQUEsSUFDRixLQUFLO0FBQ0gsTUFBQU8sSUFBUztBQUFBLFFBQ1AsR0FBR0g7QUFBQSxRQUNILEdBQUdMLEVBQVUsSUFBSUEsRUFBVTtBQUFBLE1BQ25DO0FBQ007QUFBQSxJQUNGLEtBQUs7QUFDSCxNQUFBUSxJQUFTO0FBQUEsUUFDUCxHQUFHUixFQUFVLElBQUlBLEVBQVU7QUFBQSxRQUMzQixHQUFHTTtBQUFBLE1BQ1g7QUFDTTtBQUFBLElBQ0YsS0FBSztBQUNILE1BQUFFLElBQVM7QUFBQSxRQUNQLEdBQUdSLEVBQVUsSUFBSUMsRUFBUztBQUFBLFFBQzFCLEdBQUdLO0FBQUEsTUFDWDtBQUNNO0FBQUEsSUFDRjtBQUNFLE1BQUFFLElBQVM7QUFBQSxRQUNQLEdBQUdSLEVBQVU7QUFBQSxRQUNiLEdBQUdBLEVBQVU7QUFBQSxNQUNyQjtBQUFBLEVBQ0E7QUFDRSxVQUFRMUIsR0FBYUQsQ0FBUyxHQUFDO0FBQUEsSUFDN0IsS0FBSztBQUNILE1BQUFtQyxFQUFPeEIsQ0FBYSxLQUFLdUIsS0FBZXpCLEtBQU9zQixJQUFhLEtBQUs7QUFDakU7QUFBQSxJQUNGLEtBQUs7QUFDSCxNQUFBSSxFQUFPeEIsQ0FBYSxLQUFLdUIsS0FBZXpCLEtBQU9zQixJQUFhLEtBQUs7QUFDakU7QUFBQSxFQUNOO0FBQ0UsU0FBT0k7QUFDVDtBQVNBLE1BQU1DLEtBQWtCLE9BQU9ULEdBQVdDLEdBQVVTLE1BQVc7QUFDN0QsUUFBTTtBQUFBLElBQ0osV0FBQXJDLElBQVk7QUFBQSxJQUNaLFVBQUFzQyxJQUFXO0FBQUEsSUFDWCxZQUFBQyxJQUFhLENBQUE7QUFBQSxJQUNiLFVBQUFDO0FBQUEsRUFDSixJQUFNSCxHQUNFSSxJQUFrQkYsRUFBVyxPQUFPLE9BQU8sR0FDM0M5QixJQUFNLE9BQU8rQixFQUFTLFNBQVMsT0FBTyxTQUFTQSxFQUFTLE1BQU1aLENBQVE7QUFDNUUsTUFBSXBCLElBQVEsTUFBTWdDLEVBQVMsZ0JBQWdCO0FBQUEsSUFDekMsV0FBQWI7QUFBQSxJQUNBLFVBQUFDO0FBQUEsSUFDQSxVQUFBVTtBQUFBLEVBQ0osQ0FBRyxHQUNHO0FBQUEsSUFDRixHQUFBakI7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSixJQUFNRyxHQUEyQmpCLEdBQU9SLEdBQVdTLENBQUcsR0FDaERpQyxJQUFvQjFDLEdBQ3BCMkMsSUFBaUIsQ0FBQSxHQUNqQkMsSUFBYTtBQUNqQixXQUFTQyxJQUFJLEdBQUdBLElBQUlKLEVBQWdCLFFBQVFJLEtBQUs7QUFDL0MsVUFBTTtBQUFBLE1BQ0osTUFBQTdRO0FBQUEsTUFDQSxJQUFBOFE7QUFBQSxJQUNOLElBQVFMLEVBQWdCSSxDQUFDLEdBQ2Y7QUFBQSxNQUNKLEdBQUdFO0FBQUEsTUFDSCxHQUFHQztBQUFBLE1BQ0gsTUFBQUM7QUFBQSxNQUNBLE9BQUFDO0FBQUEsSUFDTixJQUFRLE1BQU1KLEVBQUc7QUFBQSxNQUNYLEdBQUF6QjtBQUFBLE1BQ0EsR0FBQUM7QUFBQSxNQUNBLGtCQUFrQnRCO0FBQUEsTUFDbEIsV0FBVzBDO0FBQUEsTUFDWCxVQUFBSjtBQUFBLE1BQ0EsZ0JBQUFLO0FBQUEsTUFDQSxPQUFBbkM7QUFBQSxNQUNBLFVBQUFnQztBQUFBLE1BQ0EsVUFBVTtBQUFBLFFBQ1IsV0FBQWI7QUFBQSxRQUNBLFVBQUFDO0FBQUEsTUFDUjtBQUFBLElBQ0EsQ0FBSztBQUNELElBQUFQLElBQUkwQixLQUF3QjFCLEdBQzVCQyxJQUFJMEIsS0FBd0IxQixHQUM1QnFCLElBQWlCO0FBQUEsTUFDZixHQUFHQTtBQUFBLE1BQ0gsQ0FBQzNRLENBQUksR0FBRztBQUFBLFFBQ04sR0FBRzJRLEVBQWUzUSxDQUFJO0FBQUEsUUFDdEIsR0FBR2lSO0FBQUEsTUFDWDtBQUFBLElBQ0EsR0FDUUMsS0FBU04sS0FBYyxPQUN6QkEsS0FDSSxPQUFPTSxLQUFVLGFBQ2ZBLEVBQU0sY0FDUlIsSUFBb0JRLEVBQU0sWUFFeEJBLEVBQU0sVUFDUjFDLElBQVEwQyxFQUFNLFVBQVUsS0FBTyxNQUFNVixFQUFTLGdCQUFnQjtBQUFBLE1BQzVELFdBQUFiO0FBQUEsTUFDQSxVQUFBQztBQUFBLE1BQ0EsVUFBQVU7QUFBQSxJQUNaLENBQVcsSUFBSVksRUFBTSxRQUVaO0FBQUEsTUFDQyxHQUFBN0I7QUFBQSxNQUNBLEdBQUFDO0FBQUEsSUFDVixJQUFZRyxHQUEyQmpCLEdBQU9rQyxHQUFtQmpDLENBQUcsSUFFOURvQyxJQUFJO0FBQUEsRUFFUjtBQUNBLFNBQU87QUFBQSxJQUNMLEdBQUF4QjtBQUFBLElBQ0EsR0FBQUM7QUFBQSxJQUNBLFdBQVdvQjtBQUFBLElBQ1gsVUFBQUo7QUFBQSxJQUNBLGdCQUFBSztBQUFBLEVBQ0o7QUFDQTtBQVVBLGVBQWVRLEdBQWVDLEdBQU9oTyxHQUFTO0FBQzVDLE1BQUlpTztBQUNKLEVBQUlqTyxNQUFZLFdBQ2RBLElBQVUsQ0FBQTtBQUVaLFFBQU07QUFBQSxJQUNKLEdBQUFpTTtBQUFBLElBQ0EsR0FBQUM7QUFBQSxJQUNBLFVBQUFrQjtBQUFBLElBQ0EsT0FBQWhDO0FBQUEsSUFDQSxVQUFBOEM7QUFBQSxJQUNBLFVBQUFoQjtBQUFBLEVBQ0osSUFBTWMsR0FDRTtBQUFBLElBQ0osVUFBQUcsSUFBVztBQUFBLElBQ1gsY0FBQUMsSUFBZTtBQUFBLElBQ2YsZ0JBQUFDLElBQWlCO0FBQUEsSUFDakIsYUFBQUMsSUFBYztBQUFBLElBQ2QsU0FBQXpDLElBQVU7QUFBQSxFQUNkLElBQU1wQixHQUFTekssR0FBU2dPLENBQUssR0FDckJPLElBQWdCekMsR0FBaUJELENBQU8sR0FFeEMyQyxJQUFVTixFQUFTSSxJQURORCxNQUFtQixhQUFhLGNBQWMsYUFDYkEsQ0FBYyxHQUM1REksSUFBcUIxQyxHQUFpQixNQUFNcUIsRUFBUyxnQkFBZ0I7QUFBQSxJQUN6RSxVQUFXYSxJQUF3QixPQUFPYixFQUFTLGFBQWEsT0FBTyxTQUFTQSxFQUFTLFVBQVVvQixDQUFPLE9BQU8sUUFBT1AsSUFBZ0NPLElBQVVBLEVBQVEsa0JBQW1CLE9BQU9wQixFQUFTLHNCQUFzQixPQUFPLFNBQVNBLEVBQVMsbUJBQW1CYyxFQUFTLFFBQVE7QUFBQSxJQUNoUyxVQUFBQztBQUFBLElBQ0EsY0FBQUM7QUFBQSxJQUNBLFVBQUFsQjtBQUFBLEVBQ0osQ0FBRyxDQUFDLEdBQ0lsQixJQUFPcUMsTUFBbUIsYUFBYTtBQUFBLElBQzNDLEdBQUFwQztBQUFBLElBQ0EsR0FBQUM7QUFBQSxJQUNBLE9BQU9kLEVBQU0sU0FBUztBQUFBLElBQ3RCLFFBQVFBLEVBQU0sU0FBUztBQUFBLEVBQzNCLElBQU1BLEVBQU0sV0FDSnNELElBQWUsT0FBT3RCLEVBQVMsbUJBQW1CLE9BQU8sU0FBU0EsRUFBUyxnQkFBZ0JjLEVBQVMsUUFBUSxJQUM1R1MsSUFBZSxPQUFPdkIsRUFBUyxhQUFhLE9BQU8sU0FBU0EsRUFBUyxVQUFVc0IsQ0FBWSxLQUFPLE9BQU90QixFQUFTLFlBQVksT0FBTyxTQUFTQSxFQUFTLFNBQVNzQixDQUFZLE1BQU87QUFBQSxJQUN2TCxHQUFHO0FBQUEsSUFDSCxHQUFHO0FBQUEsRUFDUCxJQUFNO0FBQUEsSUFDRixHQUFHO0FBQUEsSUFDSCxHQUFHO0FBQUEsRUFDUCxHQUNRRSxJQUFvQjdDLEdBQWlCcUIsRUFBUyx3REFBd0QsTUFBTUEsRUFBUyxzREFBc0Q7QUFBQSxJQUMvSyxVQUFBYztBQUFBLElBQ0EsTUFBQWxDO0FBQUEsSUFDQSxjQUFBMEM7QUFBQSxJQUNBLFVBQUF4QjtBQUFBLEVBQ0osQ0FBRyxJQUFJbEIsQ0FBSTtBQUNULFNBQU87QUFBQSxJQUNMLE1BQU15QyxFQUFtQixNQUFNRyxFQUFrQixNQUFNTCxFQUFjLE9BQU9JLEVBQVk7QUFBQSxJQUN4RixTQUFTQyxFQUFrQixTQUFTSCxFQUFtQixTQUFTRixFQUFjLFVBQVVJLEVBQVk7QUFBQSxJQUNwRyxPQUFPRixFQUFtQixPQUFPRyxFQUFrQixPQUFPTCxFQUFjLFFBQVFJLEVBQVk7QUFBQSxJQUM1RixRQUFRQyxFQUFrQixRQUFRSCxFQUFtQixRQUFRRixFQUFjLFNBQVNJLEVBQVk7QUFBQSxFQUNwRztBQUNBO0FBb0ZBLFNBQVNFLEdBQWlCdkQsR0FBV3dELEdBQWVDLEdBQW1CO0FBRXJFLFVBRDJDekQsSUFBWSxDQUFDLEdBQUd5RCxFQUFrQixPQUFPLENBQUFuRSxNQUFhQyxHQUFhRCxDQUFTLE1BQU1VLENBQVMsR0FBRyxHQUFHeUQsRUFBa0IsT0FBTyxDQUFBbkUsTUFBYUMsR0FBYUQsQ0FBUyxNQUFNVSxDQUFTLENBQUMsSUFBSXlELEVBQWtCLE9BQU8sQ0FBQW5FLE1BQWFELEdBQVFDLENBQVMsTUFBTUEsQ0FBUyxHQUN4UCxPQUFPLENBQUFBLE1BQzNDVSxJQUNLVCxHQUFhRCxDQUFTLE1BQU1VLE1BQWN3RCxJQUFnQm5ELEdBQThCZixDQUFTLE1BQU1BLElBQVksTUFFckgsRUFDUjtBQUNIO0FBT0EsTUFBTW9FLEtBQWdCLFNBQVVoUCxHQUFTO0FBQ3ZDLFNBQUlBLE1BQVksV0FDZEEsSUFBVSxDQUFBLElBRUw7QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLFNBQUFBO0FBQUEsSUFDQSxNQUFNLEdBQUdnTyxHQUFPO0FBQ2QsVUFBSWlCLEdBQXVCQyxHQUF3QkM7QUFDbkQsWUFBTTtBQUFBLFFBQ0osT0FBQS9EO0FBQUEsUUFDQSxnQkFBQW1DO0FBQUEsUUFDQSxXQUFBM0M7QUFBQSxRQUNBLFVBQUF3QztBQUFBLFFBQ0EsVUFBQWM7QUFBQSxNQUNSLElBQVVGLEdBQ0U7QUFBQSxRQUNKLFdBQUFvQixJQUFZO0FBQUEsUUFDWixXQUFBOUQ7QUFBQSxRQUNBLG1CQUFBeUQsSUFBb0JwRjtBQUFBLFFBQ3BCLGVBQUFtRixJQUFnQjtBQUFBLFFBQ2hCLEdBQUdPO0FBQUEsTUFDWCxJQUFVNUUsR0FBU3pLLEdBQVNnTyxDQUFLLEdBQ3JCc0IsSUFBZWhFLE1BQWMsVUFBYXlELE1BQXNCcEYsS0FBYWtGLEdBQWlCdkQsS0FBYSxNQUFNd0QsR0FBZUMsQ0FBaUIsSUFBSUEsR0FDckpRLElBQVcsTUFBTXhCLEdBQWVDLEdBQU9xQixDQUFxQixHQUM1REcsTUFBaUJQLElBQXdCMUIsRUFBZSxrQkFBa0IsT0FBTyxTQUFTMEIsRUFBc0IsVUFBVSxHQUMxSFEsSUFBbUJILEVBQWFFLENBQVk7QUFDbEQsVUFBSUMsS0FBb0I7QUFDdEIsZUFBTyxDQUFBO0FBRVQsWUFBTUMsSUFBaUJ2RSxHQUFrQnNFLEdBQWtCckUsR0FBTyxPQUFPZ0MsRUFBUyxTQUFTLE9BQU8sU0FBU0EsRUFBUyxNQUFNYyxFQUFTLFFBQVEsRUFBRTtBQUc3SSxVQUFJdEQsTUFBYzZFO0FBQ2hCLGVBQU87QUFBQSxVQUNMLE9BQU87QUFBQSxZQUNMLFdBQVdILEVBQWEsQ0FBQztBQUFBLFVBQ3JDO0FBQUEsUUFDQTtBQUVNLFlBQU1LLElBQW1CLENBQUNKLEVBQVM1RSxHQUFROEUsQ0FBZ0IsQ0FBQyxHQUFHRixFQUFTRyxFQUFlLENBQUMsQ0FBQyxHQUFHSCxFQUFTRyxFQUFlLENBQUMsQ0FBQyxDQUFDLEdBQ2pIRSxJQUFlLENBQUMsS0FBTVYsSUFBeUIzQixFQUFlLGtCQUFrQixPQUFPLFNBQVMyQixFQUF1QixjQUFjLENBQUEsR0FBSztBQUFBLFFBQzlJLFdBQVdPO0FBQUEsUUFDWCxXQUFXRTtBQUFBLE1BQ25CLENBQU8sR0FDS0UsSUFBZ0JQLEVBQWFFLElBQWUsQ0FBQztBQUduRCxVQUFJSztBQUNGLGVBQU87QUFBQSxVQUNMLE1BQU07QUFBQSxZQUNKLE9BQU9MLElBQWU7QUFBQSxZQUN0QixXQUFXSTtBQUFBLFVBQ3ZCO0FBQUEsVUFDVSxPQUFPO0FBQUEsWUFDTCxXQUFXQztBQUFBLFVBQ3ZCO0FBQUEsUUFDQTtBQUVNLFlBQU1DLElBQThCRixFQUFhLElBQUksQ0FBQUcsTUFBSztBQUN4RCxjQUFNekUsSUFBWVQsR0FBYWtGLEVBQUUsU0FBUztBQUMxQyxlQUFPLENBQUNBLEVBQUUsV0FBV3pFLEtBQWE4RDtBQUFBO0FBQUEsVUFFbENXLEVBQUUsVUFBVSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQ25HLElBQUtPLE9BQU1QLEtBQU1PLElBQUcsQ0FBQztBQUFBO0FBQUE7QUFBQSxVQUVyRDRGLEVBQUUsVUFBVSxDQUFDO0FBQUEsV0FBR0EsRUFBRSxTQUFTO0FBQUEsTUFDN0IsQ0FBQyxFQUFFLEtBQUssQ0FBQ3pQLEdBQUdDLE1BQU1ELEVBQUUsQ0FBQyxJQUFJQyxFQUFFLENBQUMsQ0FBQyxHQUt2QnlQLE1BQW1CYixJQUpXVyxFQUE0QixPQUFPLENBQUFDLE1BQUtBLEVBQUUsQ0FBQyxFQUFFO0FBQUEsUUFBTTtBQUFBO0FBQUE7QUFBQSxRQUd2RmxGLEdBQWFrRixFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUk7QUFBQSxNQUFDLEVBQUUsTUFBTSxDQUFBNUYsTUFBS0EsS0FBSyxDQUFDLENBQUMsRUFDK0IsQ0FBQyxNQUFNLE9BQU8sU0FBU2dGLEVBQXNCLENBQUMsTUFBTVcsRUFBNEIsQ0FBQyxFQUFFLENBQUM7QUFDakssYUFBSUUsTUFBbUJwRixJQUNkO0FBQUEsUUFDTCxNQUFNO0FBQUEsVUFDSixPQUFPNEUsSUFBZTtBQUFBLFVBQ3RCLFdBQVdJO0FBQUEsUUFDdkI7QUFBQSxRQUNVLE9BQU87QUFBQSxVQUNMLFdBQVdJO0FBQUEsUUFDdkI7QUFBQSxNQUNBLElBRWEsQ0FBQTtBQUFBLElBQ1Q7QUFBQSxFQUNKO0FBQ0E7QUEyVUEsZUFBZUMsR0FBcUJqQyxHQUFPaE8sR0FBUztBQUNsRCxRQUFNO0FBQUEsSUFDSixXQUFBNEs7QUFBQSxJQUNBLFVBQUF3QztBQUFBLElBQ0EsVUFBQWM7QUFBQSxFQUNKLElBQU1GLEdBQ0UzQyxJQUFNLE9BQU8rQixFQUFTLFNBQVMsT0FBTyxTQUFTQSxFQUFTLE1BQU1jLEVBQVMsUUFBUSxJQUMvRXJFLElBQU9jLEdBQVFDLENBQVMsR0FDeEJVLElBQVlULEdBQWFELENBQVMsR0FDbEMrQixJQUFhMUIsR0FBWUwsQ0FBUyxNQUFNLEtBQ3hDc0YsSUFBZ0IsQ0FBQyxRQUFRLEtBQUssRUFBRSxTQUFTckcsQ0FBSSxJQUFJLEtBQUssR0FDdERzRyxJQUFpQjlFLEtBQU9zQixJQUFhLEtBQUssR0FDMUN5RCxJQUFXM0YsR0FBU3pLLEdBQVNnTyxDQUFLO0FBR3hDLE1BQUk7QUFBQSxJQUNGLFVBQUFxQztBQUFBLElBQ0EsV0FBQWpCO0FBQUEsSUFDQSxlQUFBN0Q7QUFBQSxFQUNKLElBQU0sT0FBTzZFLEtBQWEsV0FBVztBQUFBLElBQ2pDLFVBQVVBO0FBQUEsSUFDVixXQUFXO0FBQUEsSUFDWCxlQUFlO0FBQUEsRUFDbkIsSUFBTTtBQUFBLElBQ0YsVUFBVUEsRUFBUyxZQUFZO0FBQUEsSUFDL0IsV0FBV0EsRUFBUyxhQUFhO0FBQUEsSUFDakMsZUFBZUEsRUFBUztBQUFBLEVBQzVCO0FBQ0UsU0FBSTlFLEtBQWEsT0FBT0MsS0FBa0IsYUFDeEM2RCxJQUFZOUQsTUFBYyxRQUFRQyxJQUFnQixLQUFLQSxJQUVsRG9CLElBQWE7QUFBQSxJQUNsQixHQUFHeUMsSUFBWWU7QUFBQSxJQUNmLEdBQUdFLElBQVdIO0FBQUEsRUFDbEIsSUFBTTtBQUFBLElBQ0YsR0FBR0csSUFBV0g7QUFBQSxJQUNkLEdBQUdkLElBQVllO0FBQUEsRUFDbkI7QUFDQTtBQVNBLE1BQU1HLEtBQVMsU0FBVXRRLEdBQVM7QUFDaEMsU0FBSUEsTUFBWSxXQUNkQSxJQUFVLElBRUw7QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLFNBQUFBO0FBQUEsSUFDQSxNQUFNLEdBQUdnTyxHQUFPO0FBQ2QsVUFBSXVDLEdBQXVCQztBQUMzQixZQUFNO0FBQUEsUUFDSixHQUFBdkU7QUFBQSxRQUNBLEdBQUFDO0FBQUEsUUFDQSxXQUFBdEI7QUFBQSxRQUNBLGdCQUFBMkM7QUFBQSxNQUNSLElBQVVTLEdBQ0V5QyxJQUFhLE1BQU1SLEdBQXFCakMsR0FBT2hPLENBQU87QUFJNUQsYUFBSTRLLFFBQWdCMkYsSUFBd0JoRCxFQUFlLFdBQVcsT0FBTyxTQUFTZ0QsRUFBc0IsZUFBZUMsSUFBd0JqRCxFQUFlLFVBQVUsUUFBUWlELEVBQXNCLGtCQUNqTSxDQUFBLElBRUY7QUFBQSxRQUNMLEdBQUd2RSxJQUFJd0UsRUFBVztBQUFBLFFBQ2xCLEdBQUd2RSxJQUFJdUUsRUFBVztBQUFBLFFBQ2xCLE1BQU07QUFBQSxVQUNKLEdBQUdBO0FBQUEsVUFDSCxXQUFBN0Y7QUFBQSxRQUNWO0FBQUEsTUFDQTtBQUFBLElBQ0k7QUFBQSxFQUNKO0FBQ0EsR0FPTThGLEtBQVEsU0FBVTFRLEdBQVM7QUFDL0IsU0FBSUEsTUFBWSxXQUNkQSxJQUFVLENBQUEsSUFFTDtBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sU0FBQUE7QUFBQSxJQUNBLE1BQU0sR0FBR2dPLEdBQU87QUFDZCxZQUFNO0FBQUEsUUFDSixHQUFBL0I7QUFBQSxRQUNBLEdBQUFDO0FBQUEsUUFDQSxXQUFBdEI7QUFBQSxNQUNSLElBQVVvRCxHQUNFO0FBQUEsUUFDSixVQUFVMkMsSUFBZ0I7QUFBQSxRQUMxQixXQUFXQyxJQUFpQjtBQUFBLFFBQzVCLFNBQUFDLElBQVU7QUFBQSxVQUNSLElBQUksQ0FBQXZFLE1BQVE7QUFDVixnQkFBSTtBQUFBLGNBQ0YsR0FBQUw7QUFBQSxjQUNBLEdBQUFDO0FBQUEsWUFDZCxJQUFnQkk7QUFDSixtQkFBTztBQUFBLGNBQ0wsR0FBQUw7QUFBQSxjQUNBLEdBQUFDO0FBQUEsWUFDZDtBQUFBLFVBQ1U7QUFBQSxRQUNWO0FBQUEsUUFDUSxHQUFHbUQ7QUFBQSxNQUNYLElBQVU1RSxHQUFTekssR0FBU2dPLENBQUssR0FDckJqQixJQUFTO0FBQUEsUUFDYixHQUFBZDtBQUFBLFFBQ0EsR0FBQUM7QUFBQSxNQUNSLEdBQ1lxRCxJQUFXLE1BQU14QixHQUFlQyxHQUFPcUIsQ0FBcUIsR0FDNURELElBQVluRSxHQUFZTixHQUFRQyxDQUFTLENBQUMsR0FDMUN5RixJQUFXdkYsR0FBZ0JzRSxDQUFTO0FBQzFDLFVBQUkwQixJQUFnQi9ELEVBQU9zRCxDQUFRLEdBQy9CVSxJQUFpQmhFLEVBQU9xQyxDQUFTO0FBQ3JDLFVBQUl1QixHQUFlO0FBQ2pCLGNBQU1LLElBQVVYLE1BQWEsTUFBTSxRQUFRLFFBQ3JDWSxJQUFVWixNQUFhLE1BQU0sV0FBVyxTQUN4Q3ZHLElBQU1nSCxJQUFnQnZCLEVBQVN5QixDQUFPLEdBQ3RDakgsSUFBTStHLElBQWdCdkIsRUFBUzBCLENBQU87QUFDNUMsUUFBQUgsSUFBZ0J4RyxHQUFNUixHQUFLZ0gsR0FBZS9HLENBQUc7QUFBQSxNQUMvQztBQUNBLFVBQUk2RyxHQUFnQjtBQUNsQixjQUFNSSxJQUFVNUIsTUFBYyxNQUFNLFFBQVEsUUFDdEM2QixJQUFVN0IsTUFBYyxNQUFNLFdBQVcsU0FDekN0RixJQUFNaUgsSUFBaUJ4QixFQUFTeUIsQ0FBTyxHQUN2Q2pILElBQU1nSCxJQUFpQnhCLEVBQVMwQixDQUFPO0FBQzdDLFFBQUFGLElBQWlCekcsR0FBTVIsR0FBS2lILEdBQWdCaEgsQ0FBRztBQUFBLE1BQ2pEO0FBQ0EsWUFBTW1ILElBQWdCTCxFQUFRLEdBQUc7QUFBQSxRQUMvQixHQUFHN0M7QUFBQSxRQUNILENBQUNxQyxDQUFRLEdBQUdTO0FBQUEsUUFDWixDQUFDMUIsQ0FBUyxHQUFHMkI7QUFBQSxNQUNyQixDQUFPO0FBQ0QsYUFBTztBQUFBLFFBQ0wsR0FBR0c7QUFBQSxRQUNILE1BQU07QUFBQSxVQUNKLEdBQUdBLEVBQWMsSUFBSWpGO0FBQUEsVUFDckIsR0FBR2lGLEVBQWMsSUFBSWhGO0FBQUEsVUFDckIsU0FBUztBQUFBLFlBQ1AsQ0FBQ21FLENBQVEsR0FBR007QUFBQSxZQUNaLENBQUN2QixDQUFTLEdBQUd3QjtBQUFBLFVBQ3pCO0FBQUEsUUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNJO0FBQUEsRUFDSjtBQUNBO0FDdDNCQSxTQUFTTyxLQUFZO0FBQ25CLFNBQU8sT0FBTyxTQUFXO0FBQzNCO0FBQ0EsU0FBU0MsR0FBWUMsR0FBTTtBQUN6QixTQUFJQyxHQUFPRCxDQUFJLEtBQ0xBLEVBQUssWUFBWSxJQUFJLFlBQVcsSUFLbkM7QUFDVDtBQUNBLFNBQVNFLEVBQVVGLEdBQU07QUFDdkIsTUFBSUc7QUFDSixVQUFRSCxLQUFRLFNBQVNHLElBQXNCSCxFQUFLLGtCQUFrQixPQUFPLFNBQVNHLEVBQW9CLGdCQUFnQjtBQUM1SDtBQUNBLFNBQVNDLEdBQW1CSixHQUFNO0FBQ2hDLE1BQUkvRTtBQUNKLFVBQVFBLEtBQVFnRixHQUFPRCxDQUFJLElBQUlBLEVBQUssZ0JBQWdCQSxFQUFLLGFBQWEsT0FBTyxhQUFhLE9BQU8sU0FBUy9FLEVBQUs7QUFDakg7QUFDQSxTQUFTZ0YsR0FBT3JPLEdBQU87QUFDckIsU0FBS2tPLEdBQVMsSUFHUGxPLGFBQWlCLFFBQVFBLGFBQWlCc08sRUFBVXRPLENBQUssRUFBRSxPQUZ6RDtBQUdYO0FBQ0EsU0FBU3lPLEdBQVV6TyxHQUFPO0FBQ3hCLFNBQUtrTyxHQUFTLElBR1BsTyxhQUFpQixXQUFXQSxhQUFpQnNPLEVBQVV0TyxDQUFLLEVBQUUsVUFGNUQ7QUFHWDtBQUNBLFNBQVMwTyxHQUFjMU8sR0FBTztBQUM1QixTQUFLa08sR0FBUyxJQUdQbE8sYUFBaUIsZUFBZUEsYUFBaUJzTyxFQUFVdE8sQ0FBSyxFQUFFLGNBRmhFO0FBR1g7QUFDQSxTQUFTMk8sR0FBYTNPLEdBQU87QUFDM0IsU0FBSSxDQUFDa08sR0FBUyxLQUFNLE9BQU8sYUFBZSxNQUNqQyxLQUVGbE8sYUFBaUIsY0FBY0EsYUFBaUJzTyxFQUFVdE8sQ0FBSyxFQUFFO0FBQzFFO0FBQ0EsU0FBUzRPLEdBQWtCckQsR0FBUztBQUNsQyxRQUFNO0FBQUEsSUFDSixVQUFBZTtBQUFBLElBQ0EsV0FBQXVDO0FBQUEsSUFDQSxXQUFBQztBQUFBLElBQ0EsU0FBQUM7QUFBQSxFQUNKLElBQU1DLEdBQWlCekQsQ0FBTztBQUM1QixTQUFPLGtDQUFrQyxLQUFLZSxJQUFXd0MsSUFBWUQsQ0FBUyxLQUFLLENBQUMsQ0FBQyxVQUFVLFVBQVUsRUFBRSxTQUFTRSxDQUFPO0FBQzdIO0FBQ0EsU0FBU0UsR0FBZTFELEdBQVM7QUFDL0IsU0FBTyxDQUFDLFNBQVMsTUFBTSxJQUFJLEVBQUUsU0FBUzRDLEdBQVk1QyxDQUFPLENBQUM7QUFDNUQ7QUFDQSxTQUFTMkQsR0FBVzNELEdBQVM7QUFDM0IsU0FBTyxDQUFDLGlCQUFpQixRQUFRLEVBQUUsS0FBSyxDQUFBNEQsTUFBWTtBQUNsRCxRQUFJO0FBQ0YsYUFBTzVELEVBQVEsUUFBUTRELENBQVE7QUFBQSxJQUNqQyxRQUFZO0FBQ1YsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGLENBQUM7QUFDSDtBQUNBLFNBQVNDLEdBQWtCQyxHQUFjO0FBQ3ZDLFFBQU1DLElBQVNDLEdBQVEsR0FDakJDLElBQU1mLEdBQVVZLENBQVksSUFBSUwsR0FBaUJLLENBQVksSUFBSUE7QUFJdkUsU0FBTyxDQUFDLGFBQWEsYUFBYSxTQUFTLFVBQVUsYUFBYSxFQUFFLEtBQUssQ0FBQXJQLE1BQVN3UCxFQUFJeFAsQ0FBSyxJQUFJd1AsRUFBSXhQLENBQUssTUFBTSxTQUFTLEVBQUssTUFBTXdQLEVBQUksZ0JBQWdCQSxFQUFJLGtCQUFrQixXQUFXLE9BQVUsQ0FBQ0YsTUFBV0UsRUFBSSxpQkFBaUJBLEVBQUksbUJBQW1CLFNBQVMsT0FBVSxDQUFDRixNQUFXRSxFQUFJLFNBQVNBLEVBQUksV0FBVyxTQUFTLE9BQVUsQ0FBQyxhQUFhLGFBQWEsU0FBUyxVQUFVLGVBQWUsUUFBUSxFQUFFLEtBQUssQ0FBQXhQLE9BQVV3UCxFQUFJLGNBQWMsSUFBSSxTQUFTeFAsQ0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLFVBQVUsVUFBVSxTQUFTLEVBQUUsS0FBSyxDQUFBQSxPQUFVd1AsRUFBSSxXQUFXLElBQUksU0FBU3hQLENBQUssQ0FBQztBQUNuaUI7QUFDQSxTQUFTeVAsR0FBbUJsRSxHQUFTO0FBQ25DLE1BQUltRSxJQUFjQyxHQUFjcEUsQ0FBTztBQUN2QyxTQUFPbUQsR0FBY2dCLENBQVcsS0FBSyxDQUFDRSxHQUFzQkYsQ0FBVyxLQUFHO0FBQ3hFLFFBQUlOLEdBQWtCTSxDQUFXO0FBQy9CLGFBQU9BO0FBQ0YsUUFBSVIsR0FBV1EsQ0FBVztBQUMvQixhQUFPO0FBRVQsSUFBQUEsSUFBY0MsR0FBY0QsQ0FBVztBQUFBLEVBQ3pDO0FBQ0EsU0FBTztBQUNUO0FBQ0EsU0FBU0gsS0FBVztBQUNsQixTQUFJLE9BQU8sTUFBUSxPQUFlLENBQUMsSUFBSSxXQUFpQixLQUNqRCxJQUFJLFNBQVMsMkJBQTJCLE1BQU07QUFDdkQ7QUFDQSxTQUFTSyxHQUFzQnhCLEdBQU07QUFDbkMsU0FBTyxDQUFDLFFBQVEsUUFBUSxXQUFXLEVBQUUsU0FBU0QsR0FBWUMsQ0FBSSxDQUFDO0FBQ2pFO0FBQ0EsU0FBU1ksR0FBaUJ6RCxHQUFTO0FBQ2pDLFNBQU8rQyxFQUFVL0MsQ0FBTyxFQUFFLGlCQUFpQkEsQ0FBTztBQUNwRDtBQUNBLFNBQVNzRSxHQUFjdEUsR0FBUztBQUM5QixTQUFJa0QsR0FBVWxELENBQU8sSUFDWjtBQUFBLElBQ0wsWUFBWUEsRUFBUTtBQUFBLElBQ3BCLFdBQVdBLEVBQVE7QUFBQSxFQUN6QixJQUVTO0FBQUEsSUFDTCxZQUFZQSxFQUFRO0FBQUEsSUFDcEIsV0FBV0EsRUFBUTtBQUFBLEVBQ3ZCO0FBQ0E7QUFDQSxTQUFTb0UsR0FBY3ZCLEdBQU07QUFDM0IsTUFBSUQsR0FBWUMsQ0FBSSxNQUFNO0FBQ3hCLFdBQU9BO0FBRVQsUUFBTW5PO0FBQUE7QUFBQSxJQUVObU8sRUFBSztBQUFBLElBRUxBLEVBQUs7QUFBQSxJQUVMTyxHQUFhUCxDQUFJLEtBQUtBLEVBQUs7QUFBQSxJQUUzQkksR0FBbUJKLENBQUk7QUFBQTtBQUN2QixTQUFPTyxHQUFhMU8sQ0FBTSxJQUFJQSxFQUFPLE9BQU9BO0FBQzlDO0FBQ0EsU0FBUzZQLEdBQTJCMUIsR0FBTTtBQUN4QyxRQUFNMkIsSUFBYUosR0FBY3ZCLENBQUk7QUFDckMsU0FBSXdCLEdBQXNCRyxDQUFVLElBQzNCM0IsRUFBSyxnQkFBZ0JBLEVBQUssY0FBYyxPQUFPQSxFQUFLLE9BRXpETSxHQUFjcUIsQ0FBVSxLQUFLbkIsR0FBa0JtQixDQUFVLElBQ3BEQSxJQUVGRCxHQUEyQkMsQ0FBVTtBQUM5QztBQUNBLFNBQVNDLEdBQXFCNUIsR0FBTTZCLEdBQU1DLEdBQWlCO0FBQ3pELE1BQUlDO0FBQ0osRUFBSUYsTUFBUyxXQUNYQSxJQUFPLENBQUEsSUFFTEMsTUFBb0IsV0FDdEJBLElBQWtCO0FBRXBCLFFBQU1FLElBQXFCTixHQUEyQjFCLENBQUksR0FDcERpQyxJQUFTRCxRQUF5QkQsSUFBdUIvQixFQUFLLGtCQUFrQixPQUFPLFNBQVMrQixFQUFxQixPQUNySEcsSUFBTWhDLEVBQVU4QixDQUFrQjtBQUN4QyxNQUFJQyxHQUFRO0FBQ1YsVUFBTUUsSUFBZUMsR0FBZ0JGLENBQUc7QUFDeEMsV0FBT0wsRUFBSyxPQUFPSyxHQUFLQSxFQUFJLGtCQUFrQixDQUFBLEdBQUkxQixHQUFrQndCLENBQWtCLElBQUlBLElBQXFCLENBQUEsR0FBSUcsS0FBZ0JMLElBQWtCRixHQUFxQk8sQ0FBWSxJQUFJLEVBQUU7QUFBQSxFQUM5TDtBQUNBLFNBQU9OLEVBQUssT0FBT0csR0FBb0JKLEdBQXFCSSxHQUFvQixDQUFBLEdBQUlGLENBQWUsQ0FBQztBQUN0RztBQUNBLFNBQVNNLEdBQWdCRixHQUFLO0FBQzVCLFNBQU9BLEVBQUksVUFBVSxPQUFPLGVBQWVBLEVBQUksTUFBTSxJQUFJQSxFQUFJLGVBQWU7QUFDOUU7QUNsSkEsU0FBU0csR0FBaUJsRixHQUFTO0FBQ2pDLFFBQU1pRSxJQUFNUixHQUFpQnpELENBQU87QUFHcEMsTUFBSXJDLElBQVEsV0FBV3NHLEVBQUksS0FBSyxLQUFLLEdBQ2pDckcsSUFBUyxXQUFXcUcsRUFBSSxNQUFNLEtBQUs7QUFDdkMsUUFBTWtCLElBQVloQyxHQUFjbkQsQ0FBTyxHQUNqQ29GLElBQWNELElBQVluRixFQUFRLGNBQWNyQyxHQUNoRDBILElBQWVGLElBQVluRixFQUFRLGVBQWVwQyxHQUNsRDBILElBQWlCOUosR0FBTW1DLENBQUssTUFBTXlILEtBQWU1SixHQUFNb0MsQ0FBTSxNQUFNeUg7QUFDekUsU0FBSUMsTUFDRjNILElBQVF5SCxHQUNSeEgsSUFBU3lILElBRUo7QUFBQSxJQUNMLE9BQUExSDtBQUFBLElBQ0EsUUFBQUM7QUFBQSxJQUNBLEdBQUcwSDtBQUFBLEVBQ1A7QUFDQTtBQUVBLFNBQVNDLEdBQWN2RixHQUFTO0FBQzlCLFNBQVFrRCxHQUFVbEQsQ0FBTyxJQUE2QkEsSUFBekJBLEVBQVE7QUFDdkM7QUFFQSxTQUFTd0YsR0FBU3hGLEdBQVM7QUFDekIsUUFBTXlGLElBQWFGLEdBQWN2RixDQUFPO0FBQ3hDLE1BQUksQ0FBQ21ELEdBQWNzQyxDQUFVO0FBQzNCLFdBQU8vSixHQUFhLENBQUM7QUFFdkIsUUFBTThCLElBQU9pSSxFQUFXLHNCQUFxQixHQUN2QztBQUFBLElBQ0osT0FBQTlIO0FBQUEsSUFDQSxRQUFBQztBQUFBLElBQ0EsR0FBQThIO0FBQUEsRUFDSixJQUFNUixHQUFpQk8sQ0FBVTtBQUMvQixNQUFJaEksS0FBS2lJLElBQUlsSyxHQUFNZ0MsRUFBSyxLQUFLLElBQUlBLEVBQUssU0FBU0csR0FDM0NELEtBQUtnSSxJQUFJbEssR0FBTWdDLEVBQUssTUFBTSxJQUFJQSxFQUFLLFVBQVVJO0FBSWpELFVBQUksQ0FBQ0gsS0FBSyxDQUFDLE9BQU8sU0FBU0EsQ0FBQyxPQUMxQkEsSUFBSSxLQUVGLENBQUNDLEtBQUssQ0FBQyxPQUFPLFNBQVNBLENBQUMsT0FDMUJBLElBQUksSUFFQztBQUFBLElBQ0wsR0FBQUQ7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSjtBQUNBO0FBRUEsTUFBTWlJLEtBQXlCLGdCQUFBakssR0FBYSxDQUFDO0FBQzdDLFNBQVNrSyxHQUFpQjVGLEdBQVM7QUFDakMsUUFBTStFLElBQU1oQyxFQUFVL0MsQ0FBTztBQUM3QixTQUFJLENBQUNnRSxHQUFRLEtBQU0sQ0FBQ2UsRUFBSSxpQkFDZlksS0FFRjtBQUFBLElBQ0wsR0FBR1osRUFBSSxlQUFlO0FBQUEsSUFDdEIsR0FBR0EsRUFBSSxlQUFlO0FBQUEsRUFDMUI7QUFDQTtBQUNBLFNBQVNjLEdBQXVCN0YsR0FBUzhGLEdBQVNDLEdBQXNCO0FBSXRFLFNBSElELE1BQVksV0FDZEEsSUFBVSxLQUVSLENBQUNDLEtBQXdCRCxLQUFXQyxNQUF5QmhELEVBQVUvQyxDQUFPLElBQ3pFLEtBRUY4RjtBQUNUO0FBRUEsU0FBU0UsR0FBc0JoRyxHQUFTaUcsR0FBY0MsR0FBaUJoRyxHQUFjO0FBQ25GLEVBQUkrRixNQUFpQixXQUNuQkEsSUFBZSxLQUViQyxNQUFvQixXQUN0QkEsSUFBa0I7QUFFcEIsUUFBTUMsSUFBYW5HLEVBQVEsc0JBQXFCLEdBQzFDeUYsSUFBYUYsR0FBY3ZGLENBQU87QUFDeEMsTUFBSW9HLElBQVExSyxHQUFhLENBQUM7QUFDMUIsRUFBSXVLLE1BQ0UvRixJQUNFZ0QsR0FBVWhELENBQVksTUFDeEJrRyxJQUFRWixHQUFTdEYsQ0FBWSxLQUcvQmtHLElBQVFaLEdBQVN4RixDQUFPO0FBRzVCLFFBQU1xRyxJQUFnQlIsR0FBdUJKLEdBQVlTLEdBQWlCaEcsQ0FBWSxJQUFJMEYsR0FBaUJILENBQVUsSUFBSS9KLEdBQWEsQ0FBQztBQUN2SSxNQUFJK0IsS0FBSzBJLEVBQVcsT0FBT0UsRUFBYyxLQUFLRCxFQUFNLEdBQ2hEMUksS0FBS3lJLEVBQVcsTUFBTUUsRUFBYyxLQUFLRCxFQUFNLEdBQy9DekksSUFBUXdJLEVBQVcsUUFBUUMsRUFBTSxHQUNqQ3hJLElBQVN1SSxFQUFXLFNBQVNDLEVBQU07QUFDdkMsTUFBSVgsR0FBWTtBQUNkLFVBQU1WLElBQU1oQyxFQUFVMEMsQ0FBVSxHQUMxQmEsSUFBWXBHLEtBQWdCZ0QsR0FBVWhELENBQVksSUFBSTZDLEVBQVU3QyxDQUFZLElBQUlBO0FBQ3RGLFFBQUlxRyxJQUFheEIsR0FDYnlCLElBQWdCdkIsR0FBZ0JzQixDQUFVO0FBQzlDLFdBQU9DLEtBQWlCdEcsS0FBZ0JvRyxNQUFjQyxLQUFZO0FBQ2hFLFlBQU1FLElBQWNqQixHQUFTZ0IsQ0FBYSxHQUNwQ0UsSUFBYUYsRUFBYyxzQkFBcUIsR0FDaER2QyxJQUFNUixHQUFpQitDLENBQWEsR0FDcENHLElBQU9ELEVBQVcsUUFBUUYsRUFBYyxhQUFhLFdBQVd2QyxFQUFJLFdBQVcsS0FBS3dDLEVBQVksR0FDaEdHLElBQU1GLEVBQVcsT0FBT0YsRUFBYyxZQUFZLFdBQVd2QyxFQUFJLFVBQVUsS0FBS3dDLEVBQVk7QUFDbEcsTUFBQWhKLEtBQUtnSixFQUFZLEdBQ2pCL0ksS0FBSytJLEVBQVksR0FDakI5SSxLQUFTOEksRUFBWSxHQUNyQjdJLEtBQVU2SSxFQUFZLEdBQ3RCaEosS0FBS2tKLEdBQ0xqSixLQUFLa0osR0FDTEwsSUFBYXhELEVBQVV5RCxDQUFhLEdBQ3BDQSxJQUFnQnZCLEdBQWdCc0IsQ0FBVTtBQUFBLElBQzVDO0FBQUEsRUFDRjtBQUNBLFNBQU9oSixHQUFpQjtBQUFBLElBQ3RCLE9BQUFJO0FBQUEsSUFDQSxRQUFBQztBQUFBLElBQ0EsR0FBQUg7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSixDQUFHO0FBQ0g7QUFJQSxTQUFTbUosR0FBb0I3RyxHQUFTeEMsR0FBTTtBQUMxQyxRQUFNc0osSUFBYXhDLEdBQWN0RSxDQUFPLEVBQUU7QUFDMUMsU0FBS3hDLElBR0VBLEVBQUssT0FBT3NKLElBRlZkLEdBQXNCL0MsR0FBbUJqRCxDQUFPLENBQUMsRUFBRSxPQUFPOEc7QUFHckU7QUFFQSxTQUFTQyxHQUFjQyxHQUFpQkMsR0FBUUMsR0FBa0I7QUFDaEUsRUFBSUEsTUFBcUIsV0FDdkJBLElBQW1CO0FBRXJCLFFBQU1DLElBQVdILEVBQWdCLHNCQUFxQixHQUNoRHZKLElBQUkwSixFQUFTLE9BQU9GLEVBQU8sY0FBY0MsSUFBbUI7QUFBQTtBQUFBLElBRWxFTCxHQUFvQkcsR0FBaUJHLENBQVE7QUFBQSxNQUN2Q3pKLElBQUl5SixFQUFTLE1BQU1GLEVBQU87QUFDaEMsU0FBTztBQUFBLElBQ0wsR0FBQXhKO0FBQUEsSUFDQSxHQUFBQztBQUFBLEVBQ0o7QUFDQTtBQUVBLFNBQVMwSixHQUFzRHRKLEdBQU07QUFDbkUsTUFBSTtBQUFBLElBQ0YsVUFBQTRCO0FBQUEsSUFDQSxNQUFBbEM7QUFBQSxJQUNBLGNBQUEwQztBQUFBLElBQ0EsVUFBQXhCO0FBQUEsRUFDSixJQUFNWjtBQUNKLFFBQU1nSSxJQUFVcEgsTUFBYSxTQUN2QnNJLElBQWtCL0QsR0FBbUIvQyxDQUFZLEdBQ2pEL0YsSUFBV3VGLElBQVdpRSxHQUFXakUsRUFBUyxRQUFRLElBQUk7QUFDNUQsTUFBSVEsTUFBaUI4RyxLQUFtQjdNLEtBQVkyTDtBQUNsRCxXQUFPdEk7QUFFVCxNQUFJeUosSUFBUztBQUFBLElBQ1gsWUFBWTtBQUFBLElBQ1osV0FBVztBQUFBLEVBQ2YsR0FDTWIsSUFBUTFLLEdBQWEsQ0FBQztBQUMxQixRQUFNMkwsSUFBVTNMLEdBQWEsQ0FBQyxHQUN4QjRMLElBQTBCbkUsR0FBY2pELENBQVk7QUFDMUQsT0FBSW9ILEtBQTJCLENBQUNBLEtBQTJCLENBQUN4QixRQUN0RGxELEdBQVkxQyxDQUFZLE1BQU0sVUFBVW1ELEdBQWtCMkQsQ0FBZSxPQUMzRUMsSUFBUzNDLEdBQWNwRSxDQUFZLElBRWpDaUQsR0FBY2pELENBQVksSUFBRztBQUMvQixVQUFNcUgsSUFBYXZCLEdBQXNCOUYsQ0FBWTtBQUNyRCxJQUFBa0csSUFBUVosR0FBU3RGLENBQVksR0FDN0JtSCxFQUFRLElBQUlFLEVBQVcsSUFBSXJILEVBQWEsWUFDeENtSCxFQUFRLElBQUlFLEVBQVcsSUFBSXJILEVBQWE7QUFBQSxFQUMxQztBQUVGLFFBQU1zSCxJQUFhUixLQUFtQixDQUFDTSxLQUEyQixDQUFDeEIsSUFBVWlCLEdBQWNDLEdBQWlCQyxHQUFRLEVBQUksSUFBSXZMLEdBQWEsQ0FBQztBQUMxSSxTQUFPO0FBQUEsSUFDTCxPQUFPOEIsRUFBSyxRQUFRNEksRUFBTTtBQUFBLElBQzFCLFFBQVE1SSxFQUFLLFNBQVM0SSxFQUFNO0FBQUEsSUFDNUIsR0FBRzVJLEVBQUssSUFBSTRJLEVBQU0sSUFBSWEsRUFBTyxhQUFhYixFQUFNLElBQUlpQixFQUFRLElBQUlHLEVBQVc7QUFBQSxJQUMzRSxHQUFHaEssRUFBSyxJQUFJNEksRUFBTSxJQUFJYSxFQUFPLFlBQVliLEVBQU0sSUFBSWlCLEVBQVEsSUFBSUcsRUFBVztBQUFBLEVBQzlFO0FBQ0E7QUFFQSxTQUFTQyxHQUFlekgsR0FBUztBQUMvQixTQUFPLE1BQU0sS0FBS0EsRUFBUSxlQUFjLENBQUU7QUFDNUM7QUFJQSxTQUFTMEgsR0FBZ0IxSCxHQUFTO0FBQ2hDLFFBQU0ySCxJQUFPMUUsR0FBbUJqRCxDQUFPLEdBQ2pDaUgsSUFBUzNDLEdBQWN0RSxDQUFPLEdBQzlCbkcsSUFBT21HLEVBQVEsY0FBYyxNQUM3QnJDLElBQVFwQyxHQUFJb00sRUFBSyxhQUFhQSxFQUFLLGFBQWE5TixFQUFLLGFBQWFBLEVBQUssV0FBVyxHQUNsRitELElBQVNyQyxHQUFJb00sRUFBSyxjQUFjQSxFQUFLLGNBQWM5TixFQUFLLGNBQWNBLEVBQUssWUFBWTtBQUM3RixNQUFJNEQsSUFBSSxDQUFDd0osRUFBTyxhQUFhSixHQUFvQjdHLENBQU87QUFDeEQsUUFBTXRDLElBQUksQ0FBQ3VKLEVBQU87QUFDbEIsU0FBSXhELEdBQWlCNUosQ0FBSSxFQUFFLGNBQWMsVUFDdkM0RCxLQUFLbEMsR0FBSW9NLEVBQUssYUFBYTlOLEVBQUssV0FBVyxJQUFJOEQsSUFFMUM7QUFBQSxJQUNMLE9BQUFBO0FBQUEsSUFDQSxRQUFBQztBQUFBLElBQ0EsR0FBQUg7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSjtBQUNBO0FBRUEsU0FBU2tLLEdBQWdCNUgsR0FBU3RCLEdBQVU7QUFDMUMsUUFBTXFHLElBQU1oQyxFQUFVL0MsQ0FBTyxHQUN2QjJILElBQU8xRSxHQUFtQmpELENBQU8sR0FDakM2SCxJQUFpQjlDLEVBQUk7QUFDM0IsTUFBSXBILElBQVFnSyxFQUFLLGFBQ2IvSixJQUFTK0osRUFBSyxjQUNkbEssSUFBSSxHQUNKQyxJQUFJO0FBQ1IsTUFBSW1LLEdBQWdCO0FBQ2xCLElBQUFsSyxJQUFRa0ssRUFBZSxPQUN2QmpLLElBQVNpSyxFQUFlO0FBQ3hCLFVBQU1DLElBQXNCOUQsR0FBUTtBQUNwQyxLQUFJLENBQUM4RCxLQUF1QkEsS0FBdUJwSixNQUFhLGFBQzlEakIsSUFBSW9LLEVBQWUsWUFDbkJuSyxJQUFJbUssRUFBZTtBQUFBLEVBRXZCO0FBQ0EsU0FBTztBQUFBLElBQ0wsT0FBQWxLO0FBQUEsSUFDQSxRQUFBQztBQUFBLElBQ0EsR0FBQUg7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSjtBQUNBO0FBR0EsU0FBU3FLLEdBQTJCL0gsR0FBU3RCLEdBQVU7QUFDckQsUUFBTXlILElBQWFILEdBQXNCaEcsR0FBUyxJQUFNdEIsTUFBYSxPQUFPLEdBQ3RFa0ksSUFBTVQsRUFBVyxNQUFNbkcsRUFBUSxXQUMvQjJHLElBQU9SLEVBQVcsT0FBT25HLEVBQVEsWUFDakNvRyxJQUFRakQsR0FBY25ELENBQU8sSUFBSXdGLEdBQVN4RixDQUFPLElBQUl0RSxHQUFhLENBQUMsR0FDbkVpQyxJQUFRcUMsRUFBUSxjQUFjb0csRUFBTSxHQUNwQ3hJLElBQVNvQyxFQUFRLGVBQWVvRyxFQUFNLEdBQ3RDM0ksSUFBSWtKLElBQU9QLEVBQU0sR0FDakIxSSxJQUFJa0osSUFBTVIsRUFBTTtBQUN0QixTQUFPO0FBQUEsSUFDTCxPQUFBekk7QUFBQSxJQUNBLFFBQUFDO0FBQUEsSUFDQSxHQUFBSDtBQUFBLElBQ0EsR0FBQUM7QUFBQSxFQUNKO0FBQ0E7QUFDQSxTQUFTc0ssR0FBa0NoSSxHQUFTaUksR0FBa0J2SixHQUFVO0FBQzlFLE1BQUlsQjtBQUNKLE1BQUl5SyxNQUFxQjtBQUN2QixJQUFBekssSUFBT29LLEdBQWdCNUgsR0FBU3RCLENBQVE7QUFBQSxXQUMvQnVKLE1BQXFCO0FBQzlCLElBQUF6SyxJQUFPa0ssR0FBZ0J6RSxHQUFtQmpELENBQU8sQ0FBQztBQUFBLFdBQ3pDa0QsR0FBVStFLENBQWdCO0FBQ25DLElBQUF6SyxJQUFPdUssR0FBMkJFLEdBQWtCdkosQ0FBUTtBQUFBLE9BQ3ZEO0FBQ0wsVUFBTTJILElBQWdCVCxHQUFpQjVGLENBQU87QUFDOUMsSUFBQXhDLElBQU87QUFBQSxNQUNMLEdBQUd5SyxFQUFpQixJQUFJNUIsRUFBYztBQUFBLE1BQ3RDLEdBQUc0QixFQUFpQixJQUFJNUIsRUFBYztBQUFBLE1BQ3RDLE9BQU80QixFQUFpQjtBQUFBLE1BQ3hCLFFBQVFBLEVBQWlCO0FBQUEsSUFDL0I7QUFBQSxFQUNFO0FBQ0EsU0FBTzFLLEdBQWlCQyxDQUFJO0FBQzlCO0FBQ0EsU0FBUzBLLEdBQXlCbEksR0FBU21JLEdBQVU7QUFDbkQsUUFBTTNELElBQWFKLEdBQWNwRSxDQUFPO0FBQ3hDLFNBQUl3RSxNQUFlMkQsS0FBWSxDQUFDakYsR0FBVXNCLENBQVUsS0FBS0gsR0FBc0JHLENBQVUsSUFDaEYsS0FFRmYsR0FBaUJlLENBQVUsRUFBRSxhQUFhLFdBQVcwRCxHQUF5QjFELEdBQVkyRCxDQUFRO0FBQzNHO0FBS0EsU0FBU0MsR0FBNEJwSSxHQUFTcUksR0FBTztBQUNuRCxRQUFNQyxJQUFlRCxFQUFNLElBQUlySSxDQUFPO0FBQ3RDLE1BQUlzSTtBQUNGLFdBQU9BO0FBRVQsTUFBSTVULElBQVMrUCxHQUFxQnpFLEdBQVMsQ0FBQSxHQUFJLEVBQUssRUFBRSxPQUFPLENBQUF1SSxNQUFNckYsR0FBVXFGLENBQUUsS0FBSzNGLEdBQVkyRixDQUFFLE1BQU0sTUFBTSxHQUMxR0MsSUFBc0M7QUFDMUMsUUFBTUMsSUFBaUJoRixHQUFpQnpELENBQU8sRUFBRSxhQUFhO0FBQzlELE1BQUltRSxJQUFjc0UsSUFBaUJyRSxHQUFjcEUsQ0FBTyxJQUFJQTtBQUc1RCxTQUFPa0QsR0FBVWlCLENBQVcsS0FBSyxDQUFDRSxHQUFzQkYsQ0FBVyxLQUFHO0FBQ3BFLFVBQU11RSxJQUFnQmpGLEdBQWlCVSxDQUFXLEdBQzVDd0UsSUFBMEI5RSxHQUFrQk0sQ0FBVztBQUM3RCxJQUFJLENBQUN3RSxLQUEyQkQsRUFBYyxhQUFhLFlBQ3pERixJQUFzQyxRQUVWQyxJQUFpQixDQUFDRSxLQUEyQixDQUFDSCxJQUFzQyxDQUFDRyxLQUEyQkQsRUFBYyxhQUFhLFlBQVksQ0FBQyxDQUFDRixLQUF1QyxDQUFDLFlBQVksT0FBTyxFQUFFLFNBQVNBLEVBQW9DLFFBQVEsS0FBS25GLEdBQWtCYyxDQUFXLEtBQUssQ0FBQ3dFLEtBQTJCVCxHQUF5QmxJLEdBQVNtRSxDQUFXLEtBR3ZaelAsSUFBU0EsRUFBTyxPQUFPLENBQUFrVSxNQUFZQSxNQUFhekUsQ0FBVyxJQUczRHFFLElBQXNDRSxHQUV4Q3ZFLElBQWNDLEdBQWNELENBQVc7QUFBQSxFQUN6QztBQUNBLFNBQUFrRSxFQUFNLElBQUlySSxHQUFTdEwsQ0FBTSxHQUNsQkE7QUFDVDtBQUlBLFNBQVNtVSxHQUFnQi9LLEdBQU07QUFDN0IsTUFBSTtBQUFBLElBQ0YsU0FBQWtDO0FBQUEsSUFDQSxVQUFBTDtBQUFBLElBQ0EsY0FBQUM7QUFBQSxJQUNBLFVBQUFsQjtBQUFBLEVBQ0osSUFBTVo7QUFFSixRQUFNZ0wsSUFBb0IsQ0FBQyxHQURNbkosTUFBYSxzQkFBc0JnRSxHQUFXM0QsQ0FBTyxJQUFJLENBQUEsSUFBS29JLEdBQTRCcEksR0FBUyxLQUFLLEVBQUUsSUFBSSxDQUFBLEVBQUcsT0FBT0wsQ0FBUSxHQUN6R0MsQ0FBWSxHQUM5RG1KLElBQXdCRCxFQUFrQixDQUFDLEdBQzNDRSxJQUFlRixFQUFrQixPQUFPLENBQUNHLEdBQVNoQixNQUFxQjtBQUMzRSxVQUFNekssSUFBT3dLLEdBQWtDaEksR0FBU2lJLEdBQWtCdkosQ0FBUTtBQUNsRixXQUFBdUssRUFBUSxNQUFNMU4sR0FBSWlDLEVBQUssS0FBS3lMLEVBQVEsR0FBRyxHQUN2Q0EsRUFBUSxRQUFRM04sR0FBSWtDLEVBQUssT0FBT3lMLEVBQVEsS0FBSyxHQUM3Q0EsRUFBUSxTQUFTM04sR0FBSWtDLEVBQUssUUFBUXlMLEVBQVEsTUFBTSxHQUNoREEsRUFBUSxPQUFPMU4sR0FBSWlDLEVBQUssTUFBTXlMLEVBQVEsSUFBSSxHQUNuQ0E7QUFBQSxFQUNULEdBQUdqQixHQUFrQ2hJLEdBQVMrSSxHQUF1QnJLLENBQVEsQ0FBQztBQUM5RSxTQUFPO0FBQUEsSUFDTCxPQUFPc0ssRUFBYSxRQUFRQSxFQUFhO0FBQUEsSUFDekMsUUFBUUEsRUFBYSxTQUFTQSxFQUFhO0FBQUEsSUFDM0MsR0FBR0EsRUFBYTtBQUFBLElBQ2hCLEdBQUdBLEVBQWE7QUFBQSxFQUNwQjtBQUNBO0FBRUEsU0FBU0UsR0FBY2xKLEdBQVM7QUFDOUIsUUFBTTtBQUFBLElBQ0osT0FBQXJDO0FBQUEsSUFDQSxRQUFBQztBQUFBLEVBQ0osSUFBTXNILEdBQWlCbEYsQ0FBTztBQUM1QixTQUFPO0FBQUEsSUFDTCxPQUFBckM7QUFBQSxJQUNBLFFBQUFDO0FBQUEsRUFDSjtBQUNBO0FBRUEsU0FBU3VMLEdBQThCbkosR0FBU0UsR0FBY3hCLEdBQVU7QUFDdEUsUUFBTTRJLElBQTBCbkUsR0FBY2pELENBQVksR0FDcEQ4RyxJQUFrQi9ELEdBQW1CL0MsQ0FBWSxHQUNqRDRGLElBQVVwSCxNQUFhLFNBQ3ZCbEIsSUFBT3dJLEdBQXNCaEcsR0FBUyxJQUFNOEYsR0FBUzVGLENBQVk7QUFDdkUsTUFBSStHLElBQVM7QUFBQSxJQUNYLFlBQVk7QUFBQSxJQUNaLFdBQVc7QUFBQSxFQUNmO0FBQ0UsUUFBTUksSUFBVTNMLEdBQWEsQ0FBQztBQUM5QixNQUFJNEwsS0FBMkIsQ0FBQ0EsS0FBMkIsQ0FBQ3hCO0FBSTFELFNBSElsRCxHQUFZMUMsQ0FBWSxNQUFNLFVBQVVtRCxHQUFrQjJELENBQWUsT0FDM0VDLElBQVMzQyxHQUFjcEUsQ0FBWSxJQUVqQ29ILEdBQXlCO0FBQzNCLFlBQU1DLElBQWF2QixHQUFzQjlGLEdBQWMsSUFBTTRGLEdBQVM1RixDQUFZO0FBQ2xGLE1BQUFtSCxFQUFRLElBQUlFLEVBQVcsSUFBSXJILEVBQWEsWUFDeENtSCxFQUFRLElBQUlFLEVBQVcsSUFBSXJILEVBQWE7QUFBQSxJQUMxQyxNQUFPLENBQUk4RyxNQUdUSyxFQUFRLElBQUlSLEdBQW9CRyxDQUFlO0FBR25ELFFBQU1RLElBQWFSLEtBQW1CLENBQUNNLEtBQTJCLENBQUN4QixJQUFVaUIsR0FBY0MsR0FBaUJDLENBQU0sSUFBSXZMLEdBQWEsQ0FBQyxHQUM5SCtCLElBQUlELEVBQUssT0FBT3lKLEVBQU8sYUFBYUksRUFBUSxJQUFJRyxFQUFXLEdBQzNEOUosSUFBSUYsRUFBSyxNQUFNeUosRUFBTyxZQUFZSSxFQUFRLElBQUlHLEVBQVc7QUFDL0QsU0FBTztBQUFBLElBQ0wsR0FBQS9KO0FBQUEsSUFDQSxHQUFBQztBQUFBLElBQ0EsT0FBT0YsRUFBSztBQUFBLElBQ1osUUFBUUEsRUFBSztBQUFBLEVBQ2pCO0FBQ0E7QUFFQSxTQUFTNEwsR0FBbUJwSixHQUFTO0FBQ25DLFNBQU95RCxHQUFpQnpELENBQU8sRUFBRSxhQUFhO0FBQ2hEO0FBRUEsU0FBU3FKLEdBQW9CckosR0FBU3NKLEdBQVU7QUFDOUMsTUFBSSxDQUFDbkcsR0FBY25ELENBQU8sS0FBS3lELEdBQWlCekQsQ0FBTyxFQUFFLGFBQWE7QUFDcEUsV0FBTztBQUVULE1BQUlzSjtBQUNGLFdBQU9BLEVBQVN0SixDQUFPO0FBRXpCLE1BQUl1SixJQUFrQnZKLEVBQVE7QUFNOUIsU0FBSWlELEdBQW1CakQsQ0FBTyxNQUFNdUosTUFDbENBLElBQWtCQSxFQUFnQixjQUFjLE9BRTNDQTtBQUNUO0FBSUEsU0FBU0MsR0FBZ0J4SixHQUFTc0osR0FBVTtBQUMxQyxRQUFNdkUsSUFBTWhDLEVBQVUvQyxDQUFPO0FBQzdCLE1BQUkyRCxHQUFXM0QsQ0FBTztBQUNwQixXQUFPK0U7QUFFVCxNQUFJLENBQUM1QixHQUFjbkQsQ0FBTyxHQUFHO0FBQzNCLFFBQUl5SixJQUFrQnJGLEdBQWNwRSxDQUFPO0FBQzNDLFdBQU95SixLQUFtQixDQUFDcEYsR0FBc0JvRixDQUFlLEtBQUc7QUFDakUsVUFBSXZHLEdBQVV1RyxDQUFlLEtBQUssQ0FBQ0wsR0FBbUJLLENBQWU7QUFDbkUsZUFBT0E7QUFFVCxNQUFBQSxJQUFrQnJGLEdBQWNxRixDQUFlO0FBQUEsSUFDakQ7QUFDQSxXQUFPMUU7QUFBQSxFQUNUO0FBQ0EsTUFBSTdFLElBQWVtSixHQUFvQnJKLEdBQVNzSixDQUFRO0FBQ3hELFNBQU9wSixLQUFnQndELEdBQWV4RCxDQUFZLEtBQUtrSixHQUFtQmxKLENBQVk7QUFDcEYsSUFBQUEsSUFBZW1KLEdBQW9CbkosR0FBY29KLENBQVE7QUFFM0QsU0FBSXBKLEtBQWdCbUUsR0FBc0JuRSxDQUFZLEtBQUtrSixHQUFtQmxKLENBQVksS0FBSyxDQUFDMkQsR0FBa0IzRCxDQUFZLElBQ3JINkUsSUFFRjdFLEtBQWdCZ0UsR0FBbUJsRSxDQUFPLEtBQUsrRTtBQUN4RDtBQUVBLE1BQU0yRSxLQUFrQixlQUFnQnJLLEdBQU07QUFDNUMsUUFBTXNLLElBQW9CLEtBQUssbUJBQW1CSCxJQUM1Q0ksSUFBa0IsS0FBSyxlQUN2QkMsSUFBcUIsTUFBTUQsRUFBZ0J2SyxFQUFLLFFBQVE7QUFDOUQsU0FBTztBQUFBLElBQ0wsV0FBVzhKLEdBQThCOUosRUFBSyxXQUFXLE1BQU1zSyxFQUFrQnRLLEVBQUssUUFBUSxHQUFHQSxFQUFLLFFBQVE7QUFBQSxJQUM5RyxVQUFVO0FBQUEsTUFDUixHQUFHO0FBQUEsTUFDSCxHQUFHO0FBQUEsTUFDSCxPQUFPd0ssRUFBbUI7QUFBQSxNQUMxQixRQUFRQSxFQUFtQjtBQUFBLElBQ2pDO0FBQUEsRUFDQTtBQUNBO0FBRUEsU0FBU0MsR0FBTTlKLEdBQVM7QUFDdEIsU0FBT3lELEdBQWlCekQsQ0FBTyxFQUFFLGNBQWM7QUFDakQ7QUFFQSxNQUFNcEIsS0FBVztBQUFBLEVBQ2YsdURBQUF3STtBQUFBLEVBQ0Esb0JBQUFuRTtBQUFBLEVBQ0EsaUJBQUE0RjtBQUFBLEVBQ0EsaUJBQUFXO0FBQUEsRUFDQSxpQkFBQUU7QUFBQSxFQUNBLGdCQUFBakM7QUFBQSxFQUNBLGVBQUF5QjtBQUFBLEVBQ0EsVUFBQTFEO0FBQUEsRUFDQSxXQUFBdEM7QUFBQSxFQUNBLE9BQUE0RztBQUNGO0FBRUEsU0FBU0MsR0FBY2pZLEdBQUdDLEdBQUc7QUFDM0IsU0FBT0QsRUFBRSxNQUFNQyxFQUFFLEtBQUtELEVBQUUsTUFBTUMsRUFBRSxLQUFLRCxFQUFFLFVBQVVDLEVBQUUsU0FBU0QsRUFBRSxXQUFXQyxFQUFFO0FBQzdFO0FBR0EsU0FBU2lZLEdBQVloSyxHQUFTaUssR0FBUTtBQUNwQyxNQUFJQyxJQUFLLE1BQ0xDO0FBQ0osUUFBTUMsSUFBT25ILEdBQW1CakQsQ0FBTztBQUN2QyxXQUFTcUssSUFBVTtBQUNqQixRQUFJQztBQUNKLGlCQUFhSCxDQUFTLElBQ3JCRyxJQUFNSixNQUFPLFFBQVFJLEVBQUksV0FBVSxHQUNwQ0osSUFBSztBQUFBLEVBQ1A7QUFDQSxXQUFTSyxFQUFRQyxHQUFNQyxHQUFXO0FBQ2hDLElBQUlELE1BQVMsV0FDWEEsSUFBTyxLQUVMQyxNQUFjLFdBQ2hCQSxJQUFZLElBRWRKLEVBQU87QUFDUCxVQUFNSyxJQUEyQjFLLEVBQVEsc0JBQXFCLEdBQ3hEO0FBQUEsTUFDSixNQUFBMkc7QUFBQSxNQUNBLEtBQUFDO0FBQUEsTUFDQSxPQUFBako7QUFBQSxNQUNBLFFBQUFDO0FBQUEsSUFDTixJQUFROE07QUFJSixRQUhLRixLQUNIUCxFQUFNLEdBRUosQ0FBQ3RNLEtBQVMsQ0FBQ0M7QUFDYjtBQUVGLFVBQU0rTSxJQUFXbFAsR0FBTW1MLENBQUcsR0FDcEJnRSxJQUFhblAsR0FBTTJPLEVBQUssZUFBZXpELElBQU9oSixFQUFNLEdBQ3BEa04sSUFBY3BQLEdBQU0yTyxFQUFLLGdCQUFnQnhELElBQU1oSixFQUFPLEdBQ3REa04sSUFBWXJQLEdBQU1rTCxDQUFJLEdBRXRCblYsSUFBVTtBQUFBLE1BQ2QsWUFGaUIsQ0FBQ21aLElBQVcsUUFBUSxDQUFDQyxJQUFhLFFBQVEsQ0FBQ0MsSUFBYyxRQUFRLENBQUNDLElBQVk7QUFBQSxNQUcvRixXQUFXdlAsR0FBSSxHQUFHRCxHQUFJLEdBQUdtUCxDQUFTLENBQUMsS0FBSztBQUFBLElBQzlDO0FBQ0ksUUFBSU0sSUFBZ0I7QUFDcEIsYUFBU0MsRUFBY3ZaLEdBQVM7QUFDOUIsWUFBTXdaLElBQVF4WixFQUFRLENBQUMsRUFBRTtBQUN6QixVQUFJd1osTUFBVVIsR0FBVztBQUN2QixZQUFJLENBQUNNO0FBQ0gsaUJBQU9SLEVBQU87QUFFaEIsUUFBS1UsSUFPSFYsRUFBUSxJQUFPVSxDQUFLLElBSnBCZCxJQUFZLFdBQVcsTUFBTTtBQUMzQixVQUFBSSxFQUFRLElBQU8sSUFBSTtBQUFBLFFBQ3JCLEdBQUcsR0FBSTtBQUFBLE1BSVg7QUFDQSxNQUFJVSxNQUFVLEtBQUssQ0FBQ2xCLEdBQWNXLEdBQTBCMUssRUFBUSxzQkFBcUIsQ0FBRSxLQVF6RnVLLEVBQU8sR0FFVFEsSUFBZ0I7QUFBQSxJQUNsQjtBQUlBLFFBQUk7QUFDRixNQUFBYixJQUFLLElBQUkscUJBQXFCYyxHQUFlO0FBQUEsUUFDM0MsR0FBR3haO0FBQUE7QUFBQSxRQUVILE1BQU00WSxFQUFLO0FBQUEsTUFDbkIsQ0FBTztBQUFBLElBQ0gsUUFBWTtBQUNWLE1BQUFGLElBQUssSUFBSSxxQkFBcUJjLEdBQWV4WixDQUFPO0FBQUEsSUFDdEQ7QUFDQSxJQUFBMFksRUFBRyxRQUFRbEssQ0FBTztBQUFBLEVBQ3BCO0FBQ0EsU0FBQXVLLEVBQVEsRUFBSSxHQUNMRjtBQUNUO0FBVUEsU0FBU2EsR0FBV25OLEdBQVdDLEdBQVVtTixHQUFRM1osR0FBUztBQUN4RCxFQUFJQSxNQUFZLFdBQ2RBLElBQVUsQ0FBQTtBQUVaLFFBQU07QUFBQSxJQUNKLGdCQUFBNFosSUFBaUI7QUFBQSxJQUNqQixnQkFBQUMsSUFBaUI7QUFBQSxJQUNqQixlQUFBQyxJQUFnQixPQUFPLGtCQUFtQjtBQUFBLElBQzFDLGFBQUFDLElBQWMsT0FBTyx3QkFBeUI7QUFBQSxJQUM5QyxnQkFBQUMsSUFBaUI7QUFBQSxFQUNyQixJQUFNaGEsR0FDRWlhLElBQWNsRyxHQUFjeEgsQ0FBUyxHQUNyQzJOLElBQVlOLEtBQWtCQyxJQUFpQixDQUFDLEdBQUlJLElBQWNoSCxHQUFxQmdILENBQVcsSUFBSSxDQUFBLEdBQUssR0FBR2hILEdBQXFCekcsQ0FBUSxDQUFDLElBQUksQ0FBQTtBQUN0SixFQUFBME4sRUFBVSxRQUFRLENBQUE5QyxNQUFZO0FBQzVCLElBQUF3QyxLQUFrQnhDLEVBQVMsaUJBQWlCLFVBQVV1QyxHQUFRO0FBQUEsTUFDNUQsU0FBUztBQUFBLElBQ2YsQ0FBSyxHQUNERSxLQUFrQnpDLEVBQVMsaUJBQWlCLFVBQVV1QyxDQUFNO0FBQUEsRUFDOUQsQ0FBQztBQUNELFFBQU1RLElBQVlGLEtBQWVGLElBQWN2QixHQUFZeUIsR0FBYU4sQ0FBTSxJQUFJO0FBQ2xGLE1BQUlTLElBQWlCLElBQ2pCQyxJQUFpQjtBQUNyQixFQUFJUCxNQUNGTyxJQUFpQixJQUFJLGVBQWUsQ0FBQS9OLE1BQVE7QUFDMUMsUUFBSSxDQUFDZ08sQ0FBVSxJQUFJaE87QUFDbkIsSUFBSWdPLEtBQWNBLEVBQVcsV0FBV0wsS0FBZUksTUFHckRBLEVBQWUsVUFBVTdOLENBQVEsR0FDakMscUJBQXFCNE4sQ0FBYyxHQUNuQ0EsSUFBaUIsc0JBQXNCLE1BQU07QUFDM0MsVUFBSUc7QUFDSixPQUFDQSxJQUFrQkYsTUFBbUIsUUFBUUUsRUFBZ0IsUUFBUS9OLENBQVE7QUFBQSxJQUNoRixDQUFDLElBRUhtTixFQUFNO0FBQUEsRUFDUixDQUFDLEdBQ0dNLEtBQWUsQ0FBQ0QsS0FDbEJLLEVBQWUsUUFBUUosQ0FBVyxHQUVwQ0ksRUFBZSxRQUFRN04sQ0FBUTtBQUVqQyxNQUFJZ08sR0FDQUMsSUFBY1QsSUFBaUJ4RixHQUFzQmpJLENBQVMsSUFBSTtBQUN0RSxFQUFJeU4sS0FDRlUsRUFBUztBQUVYLFdBQVNBLElBQVk7QUFDbkIsVUFBTUMsSUFBY25HLEdBQXNCakksQ0FBUztBQUNuRCxJQUFJa08sS0FBZSxDQUFDbEMsR0FBY2tDLEdBQWFFLENBQVcsS0FDeERoQixFQUFNLEdBRVJjLElBQWNFLEdBQ2RILElBQVUsc0JBQXNCRSxDQUFTO0FBQUEsRUFDM0M7QUFDQSxTQUFBZixFQUFNLEdBQ0MsTUFBTTtBQUNYLFFBQUlpQjtBQUNKLElBQUFWLEVBQVUsUUFBUSxDQUFBOUMsTUFBWTtBQUM1QixNQUFBd0MsS0FBa0J4QyxFQUFTLG9CQUFvQixVQUFVdUMsQ0FBTSxHQUMvREUsS0FBa0J6QyxFQUFTLG9CQUFvQixVQUFVdUMsQ0FBTTtBQUFBLElBQ2pFLENBQUMsR0FDRFEsS0FBYSxRQUFRQSxFQUFTLElBQzdCUyxJQUFtQlAsTUFBbUIsUUFBUU8sRUFBaUIsV0FBVSxHQUMxRVAsSUFBaUIsTUFDYkwsS0FDRixxQkFBcUJRLENBQU87QUFBQSxFQUVoQztBQUNGO0FBbUJBLE1BQU1sSyxLQUFTdUssSUFRVDdMLEtBQWdCOEwsSUFPaEJwSyxLQUFRcUssSUFnRFIvTixLQUFrQixDQUFDVCxHQUFXQyxHQUFVeE0sTUFBWTtBQUl4RCxRQUFNNlcsSUFBUSxvQkFBSSxJQUFHLEdBQ2ZtRSxJQUFnQjtBQUFBLElBQ3BCLFVBQUE1TjtBQUFBLElBQ0EsR0FBR3BOO0FBQUEsRUFDUCxHQUNRaWIsSUFBb0I7QUFBQSxJQUN4QixHQUFHRCxFQUFjO0FBQUEsSUFDakIsSUFBSW5FO0FBQUEsRUFDUjtBQUNFLFNBQU9xRSxHQUFrQjNPLEdBQVdDLEdBQVU7QUFBQSxJQUM1QyxHQUFHd087QUFBQSxJQUNILFVBQVVDO0FBQUEsRUFDZCxDQUFHO0FBQ0g7QUN4dUJBLFNBQVNFLEdBQTBCdmEsR0FBUTtBQUN6QyxTQUFPQSxLQUFVLFFBQVEsT0FBT0EsS0FBVyxZQUFZLFNBQVNBO0FBQ2xFO0FBQ0EsU0FBU21ULEdBQWNuVCxHQUFRO0FBQzdCLE1BQUl1YSxHQUEwQnZhLENBQU0sR0FBRztBQUNyQyxVQUFNNE4sSUFBVTVOLEVBQU87QUFDdkIsV0FBTzBRLEdBQU85QyxDQUFPLEtBQUs0QyxHQUFZNUMsQ0FBTyxNQUFNLGFBQWEsT0FBT0E7QUFBQSxFQUN6RTtBQUNBLFNBQU81TjtBQUNUO0FBRUEsU0FBU3dhLEdBQVFoWixHQUFRO0FBQ3ZCLFNBQU8sT0FBT0EsS0FBVyxhQUFhQSxFQUFNLElBQUtpWixFQUFNalosQ0FBTTtBQUMvRDtBQXdCQSxTQUFTa1osR0FBTzlNLEdBQVM7QUFDdkIsU0FBSSxPQUFPLFNBQVcsTUFDYixLQUVHQSxFQUFRLGNBQWMsZUFBZSxRQUN0QyxvQkFBb0I7QUFDakM7QUFFQSxTQUFTK00sR0FBVy9NLEdBQVN2TCxHQUFPO0FBQ2xDLFFBQU11WSxJQUFNRixHQUFPOU0sQ0FBTztBQUMxQixTQUFPLEtBQUssTUFBTXZMLElBQVF1WSxDQUFHLElBQUlBO0FBQ25DO0FBU0EsU0FBU0MsR0FBWWxQLEdBQVdDLEdBQVV4TSxHQUFTO0FBQ2pELEVBQUlBLE1BQVksV0FDZEEsSUFBVSxDQUFBO0FBRVosUUFBTTBiLElBQTZCMWIsRUFBUSxzQkFDckMyYixJQUFhcmQsRUFBUyxNQUFNO0FBQ2hDLFFBQUlzZDtBQUNKLFlBQVFBLElBQVdSLEdBQVFwYixFQUFRLElBQUksTUFBTSxPQUFPNGIsSUFBVztBQUFBLEVBQ2pFLENBQUMsR0FDS0MsSUFBbUJ2ZCxFQUFTLE1BQU04YyxHQUFRcGIsRUFBUSxVQUFVLENBQUMsR0FDN0Q4YixJQUFrQnhkLEVBQVMsTUFBTTtBQUNyQyxRQUFJeWQ7QUFDSixZQUFRQSxJQUFZWCxHQUFRcGIsRUFBUSxTQUFTLE1BQU0sT0FBTytiLElBQVk7QUFBQSxFQUN4RSxDQUFDLEdBQ0tDLElBQWlCMWQsRUFBUyxNQUFNO0FBQ3BDLFFBQUkyZDtBQUNKLFlBQVFBLElBQVliLEdBQVFwYixFQUFRLFFBQVEsTUFBTSxPQUFPaWMsSUFBWTtBQUFBLEVBQ3ZFLENBQUMsR0FDS0MsSUFBa0I1ZCxFQUFTLE1BQU07QUFDckMsUUFBSTZkO0FBQ0osWUFBUUEsSUFBWWYsR0FBUXBiLEVBQVEsU0FBUyxNQUFNLE9BQU9tYyxJQUFZO0FBQUEsRUFDeEUsQ0FBQyxHQUNLQyxJQUFtQjlkLEVBQVMsTUFBTXlWLEdBQWN4SCxFQUFVLEtBQUssQ0FBQyxHQUNoRThQLElBQWtCL2QsRUFBUyxNQUFNeVYsR0FBY3ZILEVBQVMsS0FBSyxDQUFDLEdBQzlEUCxJQUFJeFAsRUFBSSxDQUFDLEdBQ1R5UCxJQUFJelAsRUFBSSxDQUFDLEdBQ1R5USxJQUFXelEsRUFBSXVmLEVBQWUsS0FBSyxHQUNuQ3BSLElBQVluTyxFQUFJcWYsRUFBZ0IsS0FBSyxHQUNyQ3ZPLElBQWlCK08sR0FBVyxFQUFFLEdBQzlCQyxJQUFlOWYsRUFBSSxFQUFLLEdBQ3hCK2YsSUFBaUJsZSxFQUFTLE1BQU07QUFDcEMsVUFBTW1lLElBQWdCO0FBQUEsTUFDcEIsVUFBVXZQLEVBQVM7QUFBQSxNQUNuQixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsSUFDWDtBQUNJLFFBQUksQ0FBQ21QLEVBQWdCO0FBQ25CLGFBQU9JO0FBRVQsVUFBTUMsSUFBT25CLEdBQVdjLEVBQWdCLE9BQU9wUSxFQUFFLEtBQUssR0FDaEQwUSxJQUFPcEIsR0FBV2MsRUFBZ0IsT0FBT25RLEVBQUUsS0FBSztBQUN0RCxXQUFJZ1EsRUFBZ0IsUUFDWDtBQUFBLE1BQ0wsR0FBR087QUFBQSxNQUNILFdBQVcsZUFBZUMsSUFBTyxTQUFTQyxJQUFPO0FBQUEsTUFDakQsR0FBSXJCLEdBQU9lLEVBQWdCLEtBQUssS0FBSyxPQUFPO0FBQUEsUUFDMUMsWUFBWTtBQUFBLE1BQ3RCO0FBQUEsSUFDQSxJQUVXO0FBQUEsTUFDTCxVQUFVblAsRUFBUztBQUFBLE1BQ25CLE1BQU13UCxJQUFPO0FBQUEsTUFDYixLQUFLQyxJQUFPO0FBQUEsSUFDbEI7QUFBQSxFQUNFLENBQUM7QUFDRCxNQUFJQztBQUNKLFdBQVNqRCxJQUFTO0FBQ2hCLFFBQUl5QyxFQUFpQixTQUFTLFFBQVFDLEVBQWdCLFNBQVM7QUFDN0Q7QUFFRixVQUFNUSxJQUFPbEIsRUFBVztBQUN4QixJQUFBM08sR0FBZ0JvUCxFQUFpQixPQUFPQyxFQUFnQixPQUFPO0FBQUEsTUFDN0QsWUFBWVIsRUFBaUI7QUFBQSxNQUM3QixXQUFXQyxFQUFnQjtBQUFBLE1BQzNCLFVBQVVFLEVBQWU7QUFBQSxJQUMvQixDQUFLLEVBQUUsS0FBSyxDQUFBYyxNQUFZO0FBQ2xCLE1BQUE3USxFQUFFLFFBQVE2USxFQUFTLEdBQ25CNVEsRUFBRSxRQUFRNFEsRUFBUyxHQUNuQjVQLEVBQVMsUUFBUTRQLEVBQVMsVUFDMUJsUyxFQUFVLFFBQVFrUyxFQUFTLFdBQzNCdlAsRUFBZSxRQUFRdVAsRUFBUyxnQkFPaENQLEVBQWEsUUFBUU0sTUFBUztBQUFBLElBQ2hDLENBQUM7QUFBQSxFQUNIO0FBQ0EsV0FBU2hFLElBQVU7QUFDakIsSUFBSSxPQUFPK0QsS0FBZ0MsZUFDekNBLEVBQTJCLEdBQzNCQSxJQUE4QjtBQUFBLEVBRWxDO0FBQ0EsV0FBU0csSUFBUztBQUVoQixRQURBbEUsRUFBTyxHQUNINkMsTUFBK0IsUUFBVztBQUM1QyxNQUFBL0IsRUFBTTtBQUNOO0FBQUEsSUFDRjtBQUNBLFFBQUl5QyxFQUFpQixTQUFTLFFBQVFDLEVBQWdCLFNBQVMsTUFBTTtBQUNuRSxNQUFBTyxJQUE4QmxCLEVBQTJCVSxFQUFpQixPQUFPQyxFQUFnQixPQUFPMUMsQ0FBTTtBQUM5RztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0EsV0FBUzdMLElBQVE7QUFDZixJQUFLNk4sRUFBVyxVQUNkWSxFQUFhLFFBQVE7QUFBQSxFQUV6QjtBQUNBLFNBQUE3ZixFQUFNLENBQUNtZixHQUFrQkMsR0FBaUJFLEdBQWdCTCxDQUFVLEdBQUdoQyxHQUFRO0FBQUEsSUFDN0UsT0FBTztBQUFBLEVBQ1gsQ0FBRyxHQUNEamQsRUFBTSxDQUFDMGYsR0FBa0JDLENBQWUsR0FBR1UsR0FBUTtBQUFBLElBQ2pELE9BQU87QUFBQSxFQUNYLENBQUcsR0FDRHJnQixFQUFNaWYsR0FBWTdOLEdBQU87QUFBQSxJQUN2QixPQUFPO0FBQUEsRUFDWCxDQUFHLEdBQ0drUCxHQUFlLEtBQ2pCQyxHQUFlcEUsQ0FBTyxHQUVqQjtBQUFBLElBQ0wsR0FBR3FFLEdBQWdCalIsQ0FBQztBQUFBLElBQ3BCLEdBQUdpUixHQUFnQmhSLENBQUM7QUFBQSxJQUNwQixVQUFVZ1IsR0FBZ0JoUSxDQUFRO0FBQUEsSUFDbEMsV0FBV2dRLEdBQWdCdFMsQ0FBUztBQUFBLElBQ3BDLGdCQUFnQnNTLEdBQWdCM1AsQ0FBYztBQUFBLElBQzlDLGNBQWMyUCxHQUFnQlgsQ0FBWTtBQUFBLElBQzFDLGdCQUFBQztBQUFBLElBQ0EsUUFBQTdDO0FBQUEsRUFDSjtBQUNBO0FDM0xPLE1BQU13RCxLQUFpQixDQUFDclgsR0FBbUJvSSxNQUV6QyxFQURTLE1BQU0sUUFBUUEsQ0FBUSxJQUFJQSxJQUFXLENBQUNBLENBQVEsR0FDOUMsS0FBSyxDQUFDNkksTUFBT0EsRUFBRyxTQUFTalIsRUFBTSxNQUFjLENBQUM7Ozs7Ozs7QUNhOUQsVUFBTXpLLElBQVFDLEdBSVI4aEIsSUFBa0MzZ0IsRUFBSSxJQUFJLEdBQzFDK1AsSUFBb0MvUCxFQUFJLElBQUksR0FDNUNtYyxJQUFnQ25jLEVBQUksSUFBSSxHQUN4QzRnQixJQUFZNWdCLEVBQUksRUFBSyxHQUNyQjZnQixJQUFnQjdnQixFQUFJLEVBQUssR0FDekIwUSxJQUFhMVEsRUFBSSxDQUFDdVMsTUFBaUJ1TyxHQUFpQixFQUFFLFVBQVVsaUIsRUFBTSxPQUFBLENBQVEsR0FBR3FWLEdBQU0sRUFBRSxTQUFTLEdBQUEsQ0FBSSxDQUFDLENBQUMsR0FFeEc4TSxJQUFnQmxmLEVBQVMsTUFBTStlLEVBQVUsU0FBU0MsRUFBYyxLQUFLLEdBRXJFLEVBQUUsZ0JBQUFkLEVBQUEsSUFBbUJmLEdBQVkyQixHQUFRNVEsR0FBVTtBQUFBLE1BQ3ZELFlBQUFXO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixzQkFBc0J1TTtBQUFBLElBQUEsQ0FDdkIsR0FFSytELElBQStCLENBQUMvVixNQUFrQjtBQUN0RCxNQUFJLENBQUMwVixFQUFPLFNBQVMsQ0FBQzVRLEVBQVMsU0FDM0IyUSxHQUFlelYsR0FBRyxDQUFDMFYsRUFBTyxPQUFPNVEsRUFBUyxLQUFLLENBQUMsTUFDbEQ4USxFQUFjLFFBQVEsSUFDdEI1VixFQUFFLGVBQUEsR0FDRkEsRUFBRSx5QkFBQTtBQUFBLElBRU4sR0FFTWdXLElBQStCLE1BQU07QUFDekMsTUFBQUwsRUFBVSxRQUFRO0FBQUEsSUFDcEIsR0FFTU0sSUFBZ0MsTUFBTTtBQUMxQyxNQUFBTixFQUFVLFFBQVE7QUFBQSxJQUNwQixHQUVNTyxJQUEyQixDQUFDbFcsTUFBa0I7QUFDbEQsTUFBQUEsRUFBRSxlQUFBLEdBQ0U0VixFQUFjLFNBQ2hCQSxFQUFjLFFBQVEsSUFDdEJELEVBQVUsUUFBUSxNQUVsQkMsRUFBYyxRQUFRO0FBQUEsSUFFMUIsR0FFTU8sSUFBOEIsTUFBTTtBQUN4QyxVQUFJLENBQUNULEVBQU8sTUFBTyxRQUFPO0FBQzFCLE1BQUFBLEVBQU8sTUFBTSxpQkFBaUIsYUFBYU0sQ0FBNEIsR0FDdkVOLEVBQU8sTUFBTSxpQkFBaUIsY0FBY08sQ0FBNkIsR0FDekVQLEVBQU8sTUFBTSxpQkFBaUIsU0FBU1EsQ0FBd0I7QUFBQSxJQUNqRSxHQUVNRSxJQUFtQyxNQUFNO0FBQzdDLFVBQUksQ0FBQ1YsRUFBTyxNQUFPLFFBQU87QUFDMUIsTUFBQUEsRUFBTyxNQUFNLG9CQUFvQixhQUFhTSxDQUE0QixHQUMxRU4sRUFBTyxNQUFNLG9CQUFvQixjQUFjTyxDQUE2QixHQUM1RVAsRUFBTyxNQUFNLG9CQUFvQixTQUFTUSxDQUF3QjtBQUFBLElBQ3BFLEdBRU1HLElBQWlDLENBQUNyVyxNQUFxQjtBQUMzRCxNQUFJQSxFQUFFLFFBQVEsYUFDWjRWLEVBQWMsUUFBUTtBQUFBLElBRTFCLEdBRU1VLElBQXlCLE1BQU07QUFDbkMsTUFBS3BGLEVBQUssVUFDVkEsRUFBSyxNQUFNLGlCQUFpQixTQUFTNkUsR0FBOEIsRUFBSSxHQUN2RTdFLEVBQUssTUFBTSxpQkFBaUIsV0FBV21GLENBQThCO0FBQUEsSUFDdkUsR0FFTUUsSUFBOEIsTUFBTTtBQUN4QyxNQUFLckYsRUFBSyxVQUNWQSxFQUFLLE1BQU0sb0JBQW9CLFNBQVM2RSxHQUE4QixFQUFJLEdBQzFFN0UsRUFBSyxNQUFNLG9CQUFvQixXQUFXbUYsQ0FBOEI7QUFBQSxJQUMxRSxHQUVNRyxJQUFzQixNQUFNO0FBQ2hDLE1BQUFkLEVBQU8sUUFBUSxTQUFTLGVBQWUvaEIsRUFBTSxRQUFRO0FBQUEsSUFDdkQ7QUFFQSxXQUFBcUI7QUFBQSxNQUNFLE1BQU00Z0IsRUFBYztBQUFBLE1BQ3BCLENBQUN4WSxNQUFhO0FBQ1osUUFBSUEsSUFDRmtaLEVBQUEsSUFFQUMsRUFBQTtBQUFBLE1BRUo7QUFBQSxJQUFBLEdBR0Z2aEI7QUFBQSxNQUNFLE1BQU1yQixFQUFNO0FBQUEsTUFDWixNQUFNO0FBQ0osUUFBQXlpQixFQUFBLEdBQ0FJLEVBQUEsR0FDQUwsRUFBQTtBQUFBLE1BQ0Y7QUFBQSxJQUFBLEdBR0ZoWixHQUFZLE1BQU07QUFDaEIsTUFBQXNJLEVBQVcsUUFBUSxDQUFDNkIsR0FBQSxHQUFpQnVPLEdBQWlCLEVBQUUsVUFBVWxpQixFQUFNLE9BQUEsQ0FBUSxHQUFHcVYsR0FBTSxFQUFFLFNBQVMsR0FBQSxDQUFJLENBQUM7QUFBQSxJQUMzRyxDQUFDLEdBRUR5TixHQUFjLE1BQU07QUFDbEIsTUFBQXpWLEdBQUE7QUFBQSxJQUNGLENBQUMsR0FFRHRILEdBQVUsTUFBTTtBQUNkLE1BQUE4YyxFQUFBLEdBQ0F0RixFQUFLLFFBQVEsU0FBUyxpQkFDdEJpRixFQUFBO0FBQUEsSUFDRixDQUFDLEdBRUR4YyxHQUFZLE1BQU07QUFDaEIsTUFBQXljLEVBQUE7QUFBQSxJQUNGLENBQUMsbUJBSUQzZ0IsRUFvQldpaEIsSUFBQTtBQUFBLE1BcEJBLFFBQVF4aUIsRUFBQTZNLEVBQUEsQ0FBWTtBQUFBLElBQUE7TUFDN0I3SyxFQWtCYXlnQixJQUFBLE1BQUE7QUFBQSxvQkFqQlgsTUFnQk07QUFBQSxhQWhCTjNpQixFQWdCTSxPQUFBO0FBQUEsWUFmSCxPQUFLQyxFQUFBO0FBQUE7Y0FBd0NDLEVBQUFYLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxjQUFtQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTTtBQUFBLGNBQWVXLEVBQUFYLENBQUEsRUFBSSxPQUFPLEtBQUs7QUFBQSxjQUFlVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsY0FBZ0JXLEVBQUFYLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxjQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsS0FBSztBQUFBLGNBQWVXLEVBQUFYLENBQUEsRUFBSSxPQUFPO0FBQUEsWUFBQTtxQkFVeFA7QUFBQSxZQUFKLEtBQUl1UjtBQUFBLFlBQ0gsZUFBWTVRLEVBQUE0Z0IsQ0FBQSxHQUFjO0FBQUEsVUFBQTtZQUczQjFlLEVBQVFDLEVBQUEsUUFBQSxXQUFBLENBQUEsR0FBQSxRQUFBLEVBQUE7QUFBQSxVQUFBO2lCQUZBeWYsRUFBQSxLQUFhO0FBQUEsVUFBQTs7Ozs7Ozs7Ozs7OztBQzdJM0IsVUFBTW5pQixJQUFRQztzQkFNZEMsRUFBQSxHQUFBQyxFQW9CVSxXQXBCVkMsSUFvQlU7QUFBQSxNQW5CUkMsRUFFSyxNQUFBO0FBQUEsUUFGQSxVQUFRRSxFQUFBWCxDQUFBLEVBQUksT0FBTyxPQUFPLElBQUksQ0FBQTtBQUFBLE1BQUEsR0FDOUIwQyxFQUFBdEMsRUFBTSxPQUFPLEdBQUEsQ0FBQTtBQUFBLE1BR2xCSyxFQWNLLE1BQUE7QUFBQSxRQWRBLE9BQUtDLEVBQUEsQ0FBR0MsS0FBSSxRQUFRLE1BQU1BLEVBQUFYLENBQUEsRUFBSSxLQUFLLE1BQU1XLEVBQUFYLENBQUEsRUFBSSxJQUFJLEtBQUtXLEVBQUFYLENBQUEsRUFBSSxhQUFhLEdBQUcsQ0FBQTtBQUFBLE1BQUE7U0FDN0VNLEVBQUEsRUFBQSxHQUFBQyxFQVlLbUQsR0FBQSxNQUFBd0QsR0FUWTlHLEVBQU0sUUFBZGlqQixZQUhUOWlCLEVBWUssTUFBQTtBQUFBLFVBWEYsT0FBS0csRUFBQSxDQUFBLGlCQUFvQkMsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLEtBQUssVUFBVSxRQUFRVyxFQUFBWCxDQUFBLEVBQUksSUFBSSxTQUFTVyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQTtBQUFBLFVBQzNHLEtBQUtxakIsRUFBSztBQUFBLFFBQUE7VUFHWDVpQixFQU1JLEtBQUE7QUFBQSxZQUxELFVBQVFFLEVBQUFYLENBQUEsRUFBSSxVQUFVLEtBQUssR0FBRyxDQUFBO0FBQUEsWUFDOUIsTUFBTXFqQixFQUFLO0FBQUEsWUFDWCxRQUFRQSxFQUFLLFdBQVcxaUIsRUFBQXVDLEVBQUEsRUFBTyxRQUFRdkMsRUFBQXVDLEVBQUEsRUFBTztBQUFBLFVBQUEsR0FFNUNSLEVBQUEyZ0IsRUFBSyxLQUFLLEdBQUEsSUFBQXhmLEVBQUE7QUFBQSxRQUFBOzs7Ozs7Ozs7Ozs7QUNoQnJCLFVBQU16RCxJQUFRQyxHQU9SaUMsSUFBT0MsR0FFUCtnQixJQUErQzloQixFQUFJLElBQUksR0FFdkRxTSxJQUEwQixNQUFNOztBQUNwQyxPQUFBN0gsSUFBQXNkLEVBQWMsVUFBZCxRQUFBdGQsRUFBcUI7QUFBQSxJQUN2QixHQUVNOEgsSUFBMkIsTUFBTTs7QUFDckMsT0FBQTlILElBQUFzZCxFQUFjLFVBQWQsUUFBQXRkLEVBQXFCO0FBQUEsSUFDdkIsR0FFTWdJLElBQXNCLE1BQU07QUFDaEMsTUFBQTFMLEVBQUssT0FBTztBQUFBLElBQ2QsR0FFTTJMLElBQXNCLENBQUN4QixNQUFhO0FBQ3hDLE1BQUFBLEVBQUUsZUFBQSxHQUNGbkssRUFBSyxPQUFPO0FBQUEsSUFDZDtBQUVBLFdBQUFiO0FBQUEsTUFDRSxNQUFNckIsRUFBTTtBQUFBLE1BQ1osQ0FBQ3lKLE1BQWE7QUFDWixRQUFLeVosRUFBYyxVQUNmelosSUFDRmdFLEVBQUEsSUFFQUMsRUFBQSxHQUVGWixHQUFjckQsQ0FBUTtBQUFBLE1BQ3hCO0FBQUEsSUFBQSxHQUdGcVosR0FBYyxNQUFNO0FBQ2xCLE1BQUF6VixHQUFBO0FBQUEsSUFDRixDQUFDLEdBRUR0SCxHQUFVLE1BQU07QUFDZCxNQUFJL0YsRUFBTSxVQUNSeU4sRUFBQTtBQUFBLElBRUosQ0FBQyxtQkFJRDNMLEVBOERXaWhCLElBQUE7QUFBQSxNQTlEQSxRQUFReGlCLEVBQUE2TSxFQUFBLENBQVk7QUFBQSxJQUFBO01BQzdCL00sRUE0RFMsVUFBQTtBQUFBLFFBM0ROLE9BQUtDLEVBQUEsQ0FBQSxjQUFpQkMsRUFBQVgsQ0FBQSxFQUFJLEdBQUcsU0FBU1csRUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLE1BQU0sTUFBTVcsRUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRyxNQUFNLENBQUE7QUFBQSxpQkFDMUY7QUFBQSxRQUFKLEtBQUlzakI7QUFBQSxRQUNILFlBQVl0VixHQUFtQixDQUFBLE1BQUEsQ0FBQTtBQUFBLFFBQy9CLDRCQUFELE1BQUE7QUFBQSxRQUFBLEdBQWMsQ0FBQSxTQUFBLENBQUE7QUFBQSxRQUNiLGNBQWdCQyxHQUFtQixDQUFBLFFBQUEsQ0FBQTtBQUFBLE1BQUE7UUFFcEN4TixFQW9ETSxPQUFBO0FBQUEsVUFuREgsT0FBS0MsRUFBQTtBQUFBO1lBQTJDQyxFQUFBWCxDQUFBLEVBQUksR0FBRyxRQUFRO0FBQUEsWUFBbUJXLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsWUFBZ0JXLEVBQUFYLENBQUEsRUFBSSxLQUFLLFVBQVU7QUFBQSxZQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU87QUFBQSxZQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLFNBQVMsR0FBRztBQUFBLFlBQWtCVyxFQUFBWCxDQUFBLEVBQUksTUFBTTtBQUFBLFVBQUE7O1VBVTNOUyxFQXdCUyxVQUFBO0FBQUEsWUF2Qk4sT0FBS0MsRUFBQTtBQUFBLGNBQWdCQyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLGNBQWtCVyxFQUFBWCxDQUFBLEVBQUksVUFBVTtBQUFBLGNBQXFCVyxFQUFBWCxDQUFBLEVBQUksUUFBUSxJQUFJO0FBQUEsY0FBaUJXLEVBQUFYLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxjQUFpQlcsRUFBQVgsQ0FBQSxFQUFJLFNBQVM7QUFBQSxjQUFzQlcsRUFBQVgsQ0FBQSxFQUFJLFFBQVE7QUFBQSxZQUFBOztZQWM5TEssRUFBQSxxQkFMUjZCLEVBTUVvQixHQUFBO0FBQUE7Y0FMQyxPQUFLNUMsRUFBQSxDQUFHQyxFQUFBWCxDQUFBLEVBQUksS0FBSyxLQUFLLEtBQUtXLEtBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQTtBQUFBLGNBQzlDLE1BQU1BLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxjQUNYLFVBQVV6QixFQUFBc0MsQ0FBQSxFQUFTO0FBQUEsY0FDbkIsZ0NBQU9YLEVBQUksTUFBQTtBQUFBLFlBQUE7WUFJZEssRUFLRVcsR0FBQTtBQUFBLGNBSkMsT0FBSzVDLEVBQUEsQ0FBR0MsS0FBSSxLQUFLLEtBQUssS0FBS0EsRUFBQVgsQ0FBQSxFQUFJLEtBQUssT0FBTyxLQUFLVyxFQUFBWCxDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQTtBQUFBLGNBQ3BFLE1BQU1XLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxjQUNYLFVBQVV6QixFQUFBc0MsQ0FBQSxFQUFTO0FBQUEsY0FDbkIsZ0NBQU9YLEVBQUksT0FBQTtBQUFBLFlBQUE7O1VBSWhCSyxFQUFlRixFQUFBO0FBQUEsVUFFZmhDLEVBWU0sT0FBQTtBQUFBLFlBWEgsT0FBS0MsRUFBQTtBQUFBO2NBQWtEQyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLGNBQWtCVyxFQUFBWCxDQUFBLEVBQUksU0FBUyxFQUFFO0FBQUEsY0FBa0JXLEVBQUFYLENBQUEsRUFBSSxTQUFTLEVBQUU7QUFBQSxjQUFvQlcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxjQUFrQlcsRUFBQVgsQ0FBQSxFQUFJLFFBQVEsT0FBTztBQUFBLGNBQWlCVyxFQUFBWCxDQUFBLEVBQUksVUFBVTtBQUFBLFlBQUE7O1lBVXhPNkMsRUFBUUMsRUFBQSxRQUFBLFdBQUEsQ0FBQSxHQUFBLFFBQUEsRUFBQTtBQUFBLFVBQUE7Ozs7Ozs7Ozs7Ozs7QUNySGhCLFVBQU0xQyxJQUFRQyxHQUtSaUMsSUFBT0MsR0FFUHlCLElBQWMsTUFBTTtBQUN4QixNQUFLNUQsRUFBTSxZQUNUa0MsRUFBSyxRQUFRO0FBQUEsSUFFakI7MkJBSUEvQixFQWdDUyxVQUFBO0FBQUEsTUEvQk4sT0FBS0csRUFBQTtBQUFBO1FBQStCTixFQUFNLFdBQVEsV0FBQTtBQUFBLFFBQXdCTyxFQUFBWCxDQUFBLEVBQUksUUFBUTtBQUFBLFFBQVlXLEVBQUFYLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1csRUFBQVgsQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLFFBQVdXLEVBQUFYLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxRQUFZSSxFQUFNLFdBQVEsS0FBUU8sRUFBQVgsQ0FBQSxFQUFJLE9BQU8sTUFBTTtBQUFBLFFBQWVXLEVBQUFYLENBQUEsRUFBSSxTQUFTLEdBQUc7QUFBQSxRQUFjSSxFQUFNLFdBQVdPLEVBQUFYLENBQUEsRUFBSSxHQUFHLFlBQVlXLEtBQUksR0FBRyxRQUFRO0FBQUEsTUFBQTtNQVcxVCxVQUFVUCxFQUFNO0FBQUEsTUFDaEIsU0FBTzREO0FBQUEsTUFDUixjQUFXO0FBQUEsSUFBQTtNQUVYdkQsRUFlTSxPQUFBO0FBQUEsUUFkSCxPQUFLQyxFQUFBO0FBQUE7VUFBNkNDLEVBQUFYLENBQUEsRUFBSSxTQUFTO0FBQUEsVUFBa0JXLEVBQUFYLENBQUEsRUFBSSxRQUFRO0FBQUEsVUFBY1csRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFnQlcsRUFBQVgsQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFVBQWNJLEVBQU0sV0FBV08sRUFBQVgsQ0FBQSxFQUFJLEdBQUcsUUFBUSxVQUFVVyxFQUFBWCxDQUFBLEVBQUksR0FBRztBQUFBLFFBQUE7O1FBVWpQMkMsRUFHRUMsR0FBQTtBQUFBLFVBRkMsTUFBTWpDLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxVQUNYLE1BQU16QixFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBOzs7OzsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbNTcsNTgsNTksNjAsNjFdfQ==