@k8slens/element-components 3.5.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -55,6 +55,7 @@ __export(index_exports, {
55
55
  Tr: () => Tr,
56
56
  Ul: () => Ul,
57
57
  contextForClosingPopover: () => contextForClosingPopover,
58
+ contextForFocusableItem: () => contextForFocusableItem,
58
59
  doFocusForInjectionToken: () => doFocusForInjectionToken,
59
60
  elementComponentFeature: () => elementComponentFeature,
60
61
  getDraggableContext: () => getDraggableContext,
@@ -74,6 +75,7 @@ __export(index_exports, {
74
75
  suppressTooltip: () => suppressTooltip,
75
76
  tShirtSizeInPixels: () => tShirtSizeInPixels,
76
77
  useClosePopover: () => useClosePopover,
78
+ useFocusableItem: () => useFocusableItem,
77
79
  useLocalHoverable: () => useLocalHoverable,
78
80
  useOnOutsideClick: () => useOnOutsideClick,
79
81
  usePopoverIsOpen: () => usePopoverIsOpen
@@ -811,7 +813,30 @@ var background_color_module_default = {
811
813
  "backgroundColor-hover--warningTint": "background-color-module__backgroundColor-hover--warningTint___Xi62F",
812
814
  "backgroundColor-hover--criticalTint": "background-color-module__backgroundColor-hover--criticalTint___V0q2o",
813
815
  "backgroundColor-hover--link": "background-color-module__backgroundColor-hover--link___X9LFq",
814
- "backgroundColor-hover--code": "background-color-module__backgroundColor-hover--code___lHCIg"
816
+ "backgroundColor-hover--code": "background-color-module__backgroundColor-hover--code___lHCIg",
817
+ "backgroundColor-focus--inherit": "background-color-module__backgroundColor-focus--inherit___RJPWJ",
818
+ "backgroundColor-focus--white": "background-color-module__backgroundColor-focus--white___xF8u3",
819
+ "backgroundColor-focus--transparent": "background-color-module__backgroundColor-focus--transparent___tqq-x",
820
+ "backgroundColor-focus--grey100": "background-color-module__backgroundColor-focus--grey100___xt1xL",
821
+ "backgroundColor-focus--grey80": "background-color-module__backgroundColor-focus--grey80___e28jj",
822
+ "backgroundColor-focus--grey60": "background-color-module__backgroundColor-focus--grey60___wtDwT",
823
+ "backgroundColor-focus--grey40": "background-color-module__backgroundColor-focus--grey40___DDHkP",
824
+ "backgroundColor-focus--grey30": "background-color-module__backgroundColor-focus--grey30___ZVvD5",
825
+ "backgroundColor-focus--grey25": "background-color-module__backgroundColor-focus--grey25___AsV6f",
826
+ "backgroundColor-focus--grey20": "background-color-module__backgroundColor-focus--grey20___OL0ZY",
827
+ "backgroundColor-focus--grey10": "background-color-module__backgroundColor-focus--grey10___maizf",
828
+ "backgroundColor-focus--grey70": "background-color-module__backgroundColor-focus--grey70___vRnL2",
829
+ "backgroundColor-focus--grey80Alpha85": "background-color-module__backgroundColor-focus--grey80Alpha85___VhyuN",
830
+ "backgroundColor-focus--primary": "background-color-module__backgroundColor-focus--primary___7Tzku",
831
+ "backgroundColor-focus--success": "background-color-module__backgroundColor-focus--success___ny3zl",
832
+ "backgroundColor-focus--notice": "background-color-module__backgroundColor-focus--notice___ovFv1",
833
+ "backgroundColor-focus--warning": "background-color-module__backgroundColor-focus--warning___qln2u",
834
+ "backgroundColor-focus--critical": "background-color-module__backgroundColor-focus--critical___PgDI5",
835
+ "backgroundColor-focus--successTint": "background-color-module__backgroundColor-focus--successTint___cq-D5",
836
+ "backgroundColor-focus--warningTint": "background-color-module__backgroundColor-focus--warningTint___aHtgA",
837
+ "backgroundColor-focus--criticalTint": "background-color-module__backgroundColor-focus--criticalTint___eJ9Nh",
838
+ "backgroundColor-focus--link": "background-color-module__backgroundColor-focus--link___TlRRY",
839
+ "backgroundColor-focus--code": "background-color-module__backgroundColor-focus--code___fa65U"
815
840
  };
816
841
 
817
842
  // src/plugins/background-color/background-color.ts
@@ -823,14 +848,16 @@ var aliasToNominal = {
823
848
  var isBackgroundColorAlias = (color) => color in aliasToNominal;
824
849
  var backgroundColorPlugin = (0, import_element_component7.getPlugin)((props) => {
825
850
  const { $backgroundColor: color } = props;
826
- const { normal, hover } = typeof color === "string" ? { normal: color } : color ?? {};
851
+ const { normal, hover, focus } = typeof color === "string" ? { normal: color } : color ?? {};
827
852
  const normalColor = normal ? isBackgroundColorAlias(normal) ? aliasToNominal[normal] : normal : void 0;
828
853
  const hoverColor = hover ? isBackgroundColorAlias(hover) ? aliasToNominal[hover] : hover : void 0;
854
+ const focusColor = focus ? isBackgroundColorAlias(focus) ? aliasToNominal[focus] : focus : void 0;
829
855
  return {
830
856
  $className: [
831
857
  props.$className,
832
858
  normalColor ? background_color_module_default[`backgroundColor--${normalColor}`] : void 0,
833
- hoverColor ? background_color_module_default[`backgroundColor-hover--${hoverColor}`] : void 0
859
+ hoverColor ? background_color_module_default[`backgroundColor-hover--${hoverColor}`] : void 0,
860
+ focusColor ? background_color_module_default[`backgroundColor-focus--${focusColor}`] : void 0
834
861
  ],
835
862
  $backgroundColor: void 0
836
863
  };
@@ -1587,6 +1614,7 @@ var keyboardNavigationStateInjectable = (0, import_injectable14.getInjectable2)(
1587
1614
  id: "keyboard-navigation-state",
1588
1615
  instantiate: () => {
1589
1616
  const entriesByContext = /* @__PURE__ */ new Map();
1617
+ const itemInFocusByContext = /* @__PURE__ */ new Map();
1590
1618
  const contextStack = [];
1591
1619
  const entriesOf = (context) => {
1592
1620
  const existing = entriesByContext.get(context);
@@ -1600,6 +1628,10 @@ var keyboardNavigationStateInjectable = (0, import_injectable14.getInjectable2)(
1600
1628
  return () => ({
1601
1629
  sortedEntriesOf: (context) => [...entriesOf(context)].sort((a, b) => a.orderNumber - b.orderNumber),
1602
1630
  contextInFocus: () => contextStack.at(-1),
1631
+ itemInFocusOf: (context) => itemInFocusByContext.get(context),
1632
+ noteItemInFocus: (context, item) => {
1633
+ itemInFocusByContext.set(context, item);
1634
+ },
1603
1635
  register: (context, entry) => {
1604
1636
  const entries = entriesOf(context);
1605
1637
  if (entries.size === 0) {
@@ -1615,6 +1647,7 @@ var keyboardNavigationStateInjectable = (0, import_injectable14.getInjectable2)(
1615
1647
  if (indexInStack !== -1) {
1616
1648
  contextStack.splice(indexInStack, 1);
1617
1649
  }
1650
+ itemInFocusByContext.delete(context);
1618
1651
  }
1619
1652
  }
1620
1653
  });
@@ -1647,9 +1680,9 @@ __export(test_util_runnable_injectable_exports, {
1647
1680
  });
1648
1681
  var import_test_utils = require("@k8slens/test-utils");
1649
1682
 
1650
- // import-glob:./**/*.global-override-for-injectable.(ts|tsx)/proof-of-uniqueness/0de2d99e-8738-41d0-b822-ae72003a5a60
1683
+ // import-glob:./**/*.global-override-for-injectable.(ts|tsx)/proof-of-uniqueness/569c4f1e-e7f4-486f-8a62-d05e75026dc8
1651
1684
  var modules = [];
1652
- var de2d99e_8738_41d0_b822_ae72003a5a60_default = modules;
1685
+ var c4f1e_e7f4_486f_8a62_d05e75026dc8_default = modules;
1653
1686
 
1654
1687
  // src/plugins/draggable-and-droppable/make-sure-drag-and-drop-events-have-time-to-happen/make-sure-drag-and-drop-events-have-time-to-happen.default-override.ts
1655
1688
  var make_sure_drag_and_drop_events_have_time_to_happen_default_override_exports = {};
@@ -1678,24 +1711,24 @@ var remove_css_module_clutter_default_override_default = () => {
1678
1711
  removeCssModuleClutterForUnitTesting();
1679
1712
  };
1680
1713
 
1681
- // import-glob:./**/*.default-override.(ts|tsx)/proof-of-uniqueness/9778f4d0-ee1a-4649-9bad-bc5daad8a3a4
1714
+ // import-glob:./**/*.default-override.(ts|tsx)/proof-of-uniqueness/c6340d4d-8b6a-4deb-b68a-2cec4346cb26
1682
1715
  var modules2 = [make_sure_drag_and_drop_events_have_time_to_happen_default_override_exports, tooltip_delay_default_override_exports, remove_css_module_clutter_default_override_exports];
1683
- var f4d0_ee1a_4649_9bad_bc5daad8a3a4_default = modules2;
1716
+ var c6340d4d_8b6a_4deb_b68a_2cec4346cb26_default = modules2;
1684
1717
 
1685
1718
  // src/test-util-runnable.injectable.ts
1686
1719
  var testUtilRunnableInjectable = (0, import_test_utils.getTestUtilRunnableForOverrides)({
1687
- globalOverrides: de2d99e_8738_41d0_b822_ae72003a5a60_default,
1688
- defaultOverrides: f4d0_ee1a_4649_9bad_bc5daad8a3a4_default
1720
+ globalOverrides: c4f1e_e7f4_486f_8a62_d05e75026dc8_default,
1721
+ defaultOverrides: c6340d4d_8b6a_4deb_b68a_2cec4346cb26_default
1689
1722
  });
1690
1723
 
1691
- // import-glob:./**/*.injectable.(ts|tsx)/proof-of-uniqueness/fd0d3b6b-4f3e-4797-88a7-4d12c5e2e792
1724
+ // import-glob:./**/*.injectable.(ts|tsx)/proof-of-uniqueness/fb8b30c6-3cc4-422c-bd11-3c070122a3a0
1692
1725
  var modules3 = [is_mac_injectable_exports, on_right_trigger_injectable_exports, dragged_item_state_injectable_exports, item_being_dragged_injectable_exports, make_sure_drag_and_drop_events_have_time_to_happen_injectable_exports, focusable_html_element_ref_set_injectable_exports, focusable_item_state_injectable_exports, keyboard_navigation_state_injectable_exports, do_focus_injectable_exports, item_being_focused_injectable_exports, computed_now_injectable_exports, hovered_item_state_injectable_exports, item_being_hovered_injectable_exports, context_is_being_hovered_injectable_exports, tooltip_delay_injectable_exports, test_util_runnable_injectable_exports];
1693
- var fd0d3b6b_4f3e_4797_88a7_4d12c5e2e792_default = modules3;
1726
+ var fb8b30c6_3cc4_422c_bd11_3c070122a3a0_default = modules3;
1694
1727
 
1695
1728
  // src/feature.ts
1696
1729
  var elementComponentFeature = (0, import_feature_core.getFeature)({
1697
1730
  id: "element-component",
1698
- register: (di) => (0, import_feature_core2.registerInjectablesFromModules)(di, fd0d3b6b_4f3e_4797_88a7_4d12c5e2e792_default)
1731
+ register: (di) => (0, import_feature_core2.registerInjectablesFromModules)(di, fb8b30c6_3cc4_422c_bd11_3c070122a3a0_default)
1699
1732
  // No feature dependencies: a design system everyone may install cannot drag
1700
1733
  // Lens features into the closure. The clock the hoverable plugin needs is
1701
1734
  // local, and the platform is read directly.
@@ -2146,72 +2179,95 @@ var import_element_component22 = require("@k8slens/element-component");
2146
2179
  var color_module_default = {
2147
2180
  "color--inherit": "color-module__color--inherit___GMp-a",
2148
2181
  "color-hover--inherit": "color-module__color-hover--inherit___fGLK6",
2182
+ "color-focus--inherit": "color-module__color-focus--inherit___yGfCe",
2149
2183
  "color-disabled--inherit": "color-module__color-disabled--inherit___s9MCI",
2150
2184
  "color--white": "color-module__color--white___f8c1s",
2151
2185
  "color-hover--white": "color-module__color-hover--white___M6aRg",
2186
+ "color-focus--white": "color-module__color-focus--white___i6uYz",
2152
2187
  "color-disabled--white": "color-module__color-disabled--white___ntjYE",
2153
2188
  "color--transparent": "color-module__color--transparent___1vfrv",
2154
2189
  "color-hover--transparent": "color-module__color-hover--transparent___xm7BD",
2190
+ "color-focus--transparent": "color-module__color-focus--transparent___pde-W",
2155
2191
  "color-disabled--transparent": "color-module__color-disabled--transparent___Z0QuU",
2156
2192
  "color--grey100": "color-module__color--grey100___CpDzv",
2157
2193
  "color-hover--grey100": "color-module__color-hover--grey100___GFCom",
2194
+ "color-focus--grey100": "color-module__color-focus--grey100___AM7oM",
2158
2195
  "color-disabled--grey100": "color-module__color-disabled--grey100___8SRuJ",
2159
2196
  "color--grey80": "color-module__color--grey80___D71fn",
2160
2197
  "color-hover--grey80": "color-module__color-hover--grey80___sBIxb",
2198
+ "color-focus--grey80": "color-module__color-focus--grey80___8Plyo",
2161
2199
  "color-disabled--grey80": "color-module__color-disabled--grey80___w1npc",
2162
2200
  "color--grey60": "color-module__color--grey60___UT28X",
2163
2201
  "color-hover--grey60": "color-module__color-hover--grey60___xfZmb",
2202
+ "color-focus--grey60": "color-module__color-focus--grey60___kwm2G",
2164
2203
  "color-disabled--grey60": "color-module__color-disabled--grey60___mfVgq",
2165
2204
  "color--grey40": "color-module__color--grey40___iROzR",
2166
2205
  "color-hover--grey40": "color-module__color-hover--grey40___rbN04",
2206
+ "color-focus--grey40": "color-module__color-focus--grey40___oIRUf",
2167
2207
  "color-disabled--grey40": "color-module__color-disabled--grey40___NiZxi",
2168
2208
  "color--grey30": "color-module__color--grey30___LwnL2",
2169
2209
  "color-hover--grey30": "color-module__color-hover--grey30___X7h-h",
2210
+ "color-focus--grey30": "color-module__color-focus--grey30___QUb4S",
2170
2211
  "color-disabled--grey30": "color-module__color-disabled--grey30___Kq9gW",
2171
2212
  "color--grey25": "color-module__color--grey25___ENT5o",
2172
2213
  "color-hover--grey25": "color-module__color-hover--grey25___tYygD",
2214
+ "color-focus--grey25": "color-module__color-focus--grey25___Txi5l",
2173
2215
  "color-disabled--grey25": "color-module__color-disabled--grey25___bm-1c",
2174
2216
  "color--grey20": "color-module__color--grey20___EF2OL",
2175
2217
  "color-hover--grey20": "color-module__color-hover--grey20___uPtXU",
2218
+ "color-focus--grey20": "color-module__color-focus--grey20___w3rWc",
2176
2219
  "color-disabled--grey20": "color-module__color-disabled--grey20___vpuy1",
2177
2220
  "color--grey10": "color-module__color--grey10___l5aZp",
2178
2221
  "color-hover--grey10": "color-module__color-hover--grey10___4Apcr",
2222
+ "color-focus--grey10": "color-module__color-focus--grey10___VwW71",
2179
2223
  "color-disabled--grey10": "color-module__color-disabled--grey10___Y5qyw",
2180
2224
  "color--grey70": "color-module__color--grey70___C9HHM",
2181
2225
  "color-hover--grey70": "color-module__color-hover--grey70___3krtL",
2226
+ "color-focus--grey70": "color-module__color-focus--grey70___p3iex",
2182
2227
  "color-disabled--grey70": "color-module__color-disabled--grey70___86JqV",
2183
2228
  "color--grey80Alpha85": "color-module__color--grey80Alpha85___-3Tdd",
2184
2229
  "color-hover--grey80Alpha85": "color-module__color-hover--grey80Alpha85___Dofo0",
2230
+ "color-focus--grey80Alpha85": "color-module__color-focus--grey80Alpha85___T4BgF",
2185
2231
  "color-disabled--grey80Alpha85": "color-module__color-disabled--grey80Alpha85___eR3zs",
2186
2232
  "color--primary": "color-module__color--primary___08WnV",
2187
2233
  "color-hover--primary": "color-module__color-hover--primary___Vt-3f",
2234
+ "color-focus--primary": "color-module__color-focus--primary___t5r02",
2188
2235
  "color-disabled--primary": "color-module__color-disabled--primary___0Xsk9",
2189
2236
  "color--success": "color-module__color--success___woTF2",
2190
2237
  "color-hover--success": "color-module__color-hover--success___7EIWc",
2238
+ "color-focus--success": "color-module__color-focus--success___KZ0di",
2191
2239
  "color-disabled--success": "color-module__color-disabled--success___Ne2WI",
2192
2240
  "color--notice": "color-module__color--notice___6D6KG",
2193
2241
  "color-hover--notice": "color-module__color-hover--notice___eOdUp",
2242
+ "color-focus--notice": "color-module__color-focus--notice___NgURL",
2194
2243
  "color-disabled--notice": "color-module__color-disabled--notice___sDo8r",
2195
2244
  "color--warning": "color-module__color--warning___fKbwd",
2196
2245
  "color-hover--warning": "color-module__color-hover--warning___Gj2hM",
2246
+ "color-focus--warning": "color-module__color-focus--warning___cBmt9",
2197
2247
  "color-disabled--warning": "color-module__color-disabled--warning___rXDbR",
2198
2248
  "color--critical": "color-module__color--critical___shFBq",
2199
2249
  "color-hover--critical": "color-module__color-hover--critical___RQWZY",
2250
+ "color-focus--critical": "color-module__color-focus--critical___9YlCY",
2200
2251
  "color-disabled--critical": "color-module__color-disabled--critical___h37-3",
2201
2252
  "color--successTint": "color-module__color--successTint___Dd0Ry",
2202
2253
  "color-hover--successTint": "color-module__color-hover--successTint___LKlzg",
2254
+ "color-focus--successTint": "color-module__color-focus--successTint___bQYhp",
2203
2255
  "color-disabled--successTint": "color-module__color-disabled--successTint___lsmJh",
2204
2256
  "color--warningTint": "color-module__color--warningTint___j3PZX",
2205
2257
  "color-hover--warningTint": "color-module__color-hover--warningTint___jn1wu",
2258
+ "color-focus--warningTint": "color-module__color-focus--warningTint___C6znD",
2206
2259
  "color-disabled--warningTint": "color-module__color-disabled--warningTint___W6jI8",
2207
2260
  "color--criticalTint": "color-module__color--criticalTint___yRJaA",
2208
2261
  "color-hover--criticalTint": "color-module__color-hover--criticalTint___VsoN5",
2262
+ "color-focus--criticalTint": "color-module__color-focus--criticalTint___8tDmg",
2209
2263
  "color-disabled--criticalTint": "color-module__color-disabled--criticalTint___TABHk",
2210
2264
  "color--link": "color-module__color--link___nSMm9",
2211
2265
  "color-hover--link": "color-module__color-hover--link___GniY3",
2266
+ "color-focus--link": "color-module__color-focus--link___86Jtf",
2212
2267
  "color-disabled--link": "color-module__color-disabled--link___FoJ5X",
2213
2268
  "color--code": "color-module__color--code___nCOjA",
2214
2269
  "color-hover--code": "color-module__color-hover--code___V5uuV",
2270
+ "color-focus--code": "color-module__color-focus--code___IAK7d",
2215
2271
  "color-disabled--code": "color-module__color-disabled--code___w3VUw"
2216
2272
  };
2217
2273
 
@@ -2224,15 +2280,17 @@ var aliasToNominal3 = {
2224
2280
  var isTextColorAlias = (color) => color in aliasToNominal3;
2225
2281
  var colorPlugin = (0, import_element_component22.getPlugin)((props) => {
2226
2282
  const { $className, $color } = props;
2227
- const { normal, hover, disabled } = typeof $color === "string" ? { normal: $color } : $color ?? {};
2283
+ const { normal, hover, focus, disabled } = typeof $color === "string" ? { normal: $color } : $color ?? {};
2228
2284
  const normalColor = normal ? isTextColorAlias(normal) ? aliasToNominal3[normal] : normal : void 0;
2229
2285
  const hoverColor = hover ? isTextColorAlias(hover) ? aliasToNominal3[hover] : hover : void 0;
2286
+ const focusColor = focus ? isTextColorAlias(focus) ? aliasToNominal3[focus] : focus : void 0;
2230
2287
  const disabledColor = disabled ? isTextColorAlias(disabled) ? aliasToNominal3[disabled] : disabled : void 0;
2231
2288
  return {
2232
2289
  $className: [
2233
2290
  $className,
2234
2291
  normalColor ? color_module_default[`color--${normalColor}`] : void 0,
2235
2292
  hoverColor ? color_module_default[`color-hover--${hoverColor}`] : void 0,
2293
+ focusColor ? color_module_default[`color-focus--${focusColor}`] : void 0,
2236
2294
  disabledColor ? color_module_default[`color-disabled--${disabledColor}`] : void 0
2237
2295
  ],
2238
2296
  $color: void 0
@@ -2858,9 +2916,15 @@ var useCleanupOnUnmount = (focusedRef, oldStateRef) => {
2858
2916
  // src/plugins/focusable/_private/use-keyboard-navigation.ts
2859
2917
  var import_react9 = require("react");
2860
2918
  var import_use_inject6 = require("@k8slens/use-inject");
2861
- var noKeyboardNavigation = { onKeyDown: () => {
2862
- } };
2863
- var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
2919
+ var noKeyboardNavigation = {
2920
+ onKeyDown: () => {
2921
+ },
2922
+ onFocus: () => {
2923
+ },
2924
+ focusWhatThePointerIsOn: () => {
2925
+ }
2926
+ };
2927
+ var useKeyboardNavigation = (context, item, orderNumber, element) => {
2864
2928
  const navigation = (0, import_use_inject6.useSyncInject)(keyboardNavigationStateInjectable);
2865
2929
  (0, import_react9.useEffect)(() => {
2866
2930
  if (!context || !element) {
@@ -2874,8 +2938,8 @@ var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
2874
2938
  return;
2875
2939
  }
2876
2940
  const entries = navigation.sortedEntriesOf(contextInFocus);
2877
- const focusedItem = state.get();
2878
- const toFocus = entries.find((candidate) => candidate.item === focusedItem) ?? entries[0];
2941
+ const itemInFocus = navigation.itemInFocusOf(contextInFocus);
2942
+ const toFocus = entries.find((candidate) => candidate.item === itemInFocus) ?? entries[0];
2879
2943
  if ((toFocus == null ? void 0 : toFocus.element.isConnected) && document.activeElement !== toFocus.element) {
2880
2944
  toFocus.element.focus();
2881
2945
  }
@@ -2885,13 +2949,31 @@ var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
2885
2949
  navigation.deregister(context, entry);
2886
2950
  void Promise.resolve().then(focusWhatShouldHaveFocus);
2887
2951
  };
2888
- }, [navigation, context, item, orderNumber, element, state]);
2952
+ }, [navigation, context, item, orderNumber, element]);
2889
2953
  if (!context) {
2890
2954
  return noKeyboardNavigation;
2891
2955
  }
2892
2956
  return {
2957
+ // Which member the context is on, remembered for as long as its members are there: it is what
2958
+ // focus returns to when something that took focus over goes away again.
2959
+ onFocus: () => navigation.noteItemInFocus(context, item),
2960
+ // Where the pointer goes, focus goes: the member under it becomes the focused one, so arrowing
2961
+ // on from there continues from what the user is looking at rather than from wherever the
2962
+ // keyboard was left. Whichever of the two moved last decides, which is why this answers to the
2963
+ // pointer moving as well as to it arriving — the keyboard may have taken focus elsewhere while
2964
+ // the pointer rested where it was, and moving it at all is the user pointing again.
2965
+ //
2966
+ // The element comes from the event rather than from the render this handler was created in:
2967
+ // the handler the DOM ends up with is the one from the first render, when there was no element
2968
+ // yet — React has no reason to render the element again for a wrapper's own state.
2969
+ focusWhatThePointerIsOn: (event) => {
2970
+ const hovered = event.currentTarget;
2971
+ if (document.activeElement !== hovered) {
2972
+ hovered.focus();
2973
+ }
2974
+ },
2893
2975
  onKeyDown: (event) => {
2894
- const step = stepOf(event.key);
2976
+ const step = stepOf(event.key, context.orientation);
2895
2977
  if (step === void 0) {
2896
2978
  return;
2897
2979
  }
@@ -2909,14 +2991,16 @@ var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
2909
2991
  }
2910
2992
  };
2911
2993
  };
2912
- var stepOf = (key) => {
2994
+ var stepOf = (key, orientation) => {
2913
2995
  switch (key) {
2914
2996
  case "ArrowDown":
2997
+ return orientation === "horizontal" ? void 0 : 1;
2915
2998
  case "ArrowRight":
2916
- return 1;
2999
+ return orientation === "vertical" ? void 0 : 1;
2917
3000
  case "ArrowUp":
3001
+ return orientation === "horizontal" ? void 0 : -1;
2918
3002
  case "ArrowLeft":
2919
- return -1;
3003
+ return orientation === "vertical" ? void 0 : -1;
2920
3004
  case "Home":
2921
3005
  return "first";
2922
3006
  case "End":
@@ -3001,13 +3085,13 @@ var FocusableWrapperComponent = ({
3001
3085
  focusableContext.isKeyboardNavigable ? focusableContext : void 0,
3002
3086
  focusableItem,
3003
3087
  orderNumber,
3004
- element,
3005
- state
3088
+ element
3006
3089
  );
3007
3090
  contributeProps({
3008
3091
  tabIndex,
3009
3092
  onFocus: (e) => {
3010
3093
  handleFocus(e);
3094
+ keyboardNavigation.onFocus();
3011
3095
  onFocus == null ? void 0 : onFocus(e);
3012
3096
  },
3013
3097
  onBlur: (e) => {
@@ -3020,7 +3104,9 @@ var FocusableWrapperComponent = ({
3020
3104
  onKeyDown: (e) => {
3021
3105
  onKeyDown == null ? void 0 : onKeyDown(e);
3022
3106
  keyboardNavigation.onKeyDown(e);
3023
- }
3107
+ },
3108
+ onMouseEnter: keyboardNavigation.focusWhatThePointerIsOn,
3109
+ onMouseMove: keyboardNavigation.focusWhatThePointerIsOn
3024
3110
  });
3025
3111
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children });
3026
3112
  };
@@ -3553,13 +3639,31 @@ var import_use_inject10 = require("@k8slens/use-inject");
3553
3639
  var import_react15 = require("react");
3554
3640
  var import_jsx_runtime7 = require("react/jsx-runtime");
3555
3641
  var hoverCloseDelayInMilliseconds = 200;
3556
- var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children }) => {
3642
+ var DropDownMenuWrapperComponent = ({
3643
+ dropDownMenu,
3644
+ contributeRef,
3645
+ contributeProps,
3646
+ children
3647
+ }) => {
3557
3648
  const [isOpen, setIsOpen] = (0, import_react15.useState)(false);
3558
3649
  const [cursor, setCursor] = (0, import_react15.useState)(void 0);
3559
3650
  const closeTimerRef = (0, import_react15.useRef)(void 0);
3560
3651
  const onRightTrigger = (0, import_use_inject10.useSyncInject)(onRightTriggerInjectable);
3652
+ const elementRef = (0, import_react15.useRef)(null);
3653
+ const menuRef = (0, import_react15.useRef)(null);
3654
+ const elementTakesFocusBackRef = (0, import_react15.useRef)(false);
3655
+ contributeRef(
3656
+ (0, import_react15.useCallback)((element) => {
3657
+ elementRef.current = element;
3658
+ }, [])
3659
+ );
3561
3660
  const toggle = (0, import_react15.useCallback)(() => setIsOpen((wasOpen) => !wasOpen), []);
3562
- const close = (0, import_react15.useCallback)(() => setIsOpen(false), []);
3661
+ const close = (0, import_react15.useCallback)(() => {
3662
+ var _a;
3663
+ const focused = document.activeElement;
3664
+ elementTakesFocusBackRef.current = focused === null || focused === document.body || ((_a = menuRef.current) == null ? void 0 : _a.contains(focused)) === true;
3665
+ setIsOpen(false);
3666
+ }, []);
3563
3667
  const cancelScheduledClose = (0, import_react15.useCallback)(() => {
3564
3668
  if (closeTimerRef.current !== void 0) {
3565
3669
  clearTimeout(closeTimerRef.current);
@@ -3575,7 +3679,35 @@ var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children })
3575
3679
  closeTimerRef.current = setTimeout(close, hoverCloseDelayInMilliseconds);
3576
3680
  }, [cancelScheduledClose, close]);
3577
3681
  (0, import_react15.useEffect)(() => cancelScheduledClose, [cancelScheduledClose]);
3682
+ (0, import_react15.useEffect)(() => {
3683
+ if (!isOpen) {
3684
+ return void 0;
3685
+ }
3686
+ elementTakesFocusBackRef.current = false;
3687
+ return () => {
3688
+ if (!elementTakesFocusBackRef.current) {
3689
+ return;
3690
+ }
3691
+ void Promise.resolve().then(() => {
3692
+ const element = elementRef.current;
3693
+ const focused = document.activeElement;
3694
+ if ((element == null ? void 0 : element.isConnected) && (focused === null || focused === document.body)) {
3695
+ element.focus();
3696
+ }
3697
+ });
3698
+ };
3699
+ }, [isOpen]);
3578
3700
  const openOn = dropDownMenu.openOn ?? "click";
3701
+ const closeOnArrowLeft = (0, import_react15.useCallback)(
3702
+ (event) => {
3703
+ if (event.key === "ArrowLeft") {
3704
+ event.preventDefault();
3705
+ event.stopPropagation();
3706
+ close();
3707
+ }
3708
+ },
3709
+ [close]
3710
+ );
3579
3711
  const outsideClickMarkingProps = useOnOutsideClick(
3580
3712
  (0, import_react15.useCallback)(() => {
3581
3713
  if (isOpen) {
@@ -3617,7 +3749,17 @@ var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children })
3617
3749
  },
3618
3750
  ...openOn === "hover" && {
3619
3751
  onMouseEnter: open,
3620
- onMouseLeave: scheduleClose
3752
+ onMouseLeave: scheduleClose,
3753
+ // A menu that opens on hovering would be out of the keyboard's reach otherwise. Sideways
3754
+ // into it, since that is where such a menu sits: beside the element it belongs to. Focus
3755
+ // follows on its own, the menu taking it as it appears.
3756
+ onKeyDown: (event) => {
3757
+ if (event.key === "ArrowRight") {
3758
+ event.preventDefault();
3759
+ event.stopPropagation();
3760
+ open();
3761
+ }
3762
+ }
3621
3763
  }
3622
3764
  });
3623
3765
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
@@ -3629,15 +3771,25 @@ var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children })
3629
3771
  // rather than going on to whatever encloses the element the menu was opened from — a row
3630
3772
  // of a menu of its own, say, which would take it for the row being activated. Only
3631
3773
  // `click` stops: the outside-click detection above works on `pointerdown`.
3632
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { ...outsideClickMarkingProps, style: displayContents, onClick: stopPropagation2, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3633
- import_drop_down_menu_contracts.DropDownMenu,
3774
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3775
+ "span",
3634
3776
  {
3635
- spec: dropDownMenu,
3636
- anchorPoint: openOn === "right-click" ? cursor : void 0,
3637
- onClose: close,
3638
- onMenuHoverChange: openOn === "hover" ? (menuIsHovered) => menuIsHovered ? cancelScheduledClose() : scheduleClose() : void 0
3777
+ ...outsideClickMarkingProps,
3778
+ ref: menuRef,
3779
+ style: displayContents,
3780
+ onClick: stopPropagation2,
3781
+ onKeyDown: openOn === "hover" ? closeOnArrowLeft : void 0,
3782
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3783
+ import_drop_down_menu_contracts.DropDownMenu,
3784
+ {
3785
+ spec: dropDownMenu,
3786
+ anchorPoint: openOn === "right-click" ? cursor : void 0,
3787
+ onClose: close,
3788
+ onMenuHoverChange: openOn === "hover" ? (menuIsHovered) => menuIsHovered ? cancelScheduledClose() : scheduleClose() : void 0
3789
+ }
3790
+ )
3639
3791
  }
3640
- ) })
3792
+ )
3641
3793
  ] });
3642
3794
  };
3643
3795
  var displayContents = { display: "contents" };
@@ -3967,10 +4119,11 @@ var getFocusableContext = (id) => getOrCreateContext(id, () => {
3967
4119
  };
3968
4120
  return context;
3969
4121
  });
3970
- var getKeyboardNavigableFocusableContext = (id) => getOrCreateContext(id, () => {
4122
+ var getKeyboardNavigableFocusableContext = (id, options = {}) => getOrCreateContext(id, () => {
3971
4123
  const context = {
3972
4124
  id,
3973
4125
  isKeyboardNavigable: true,
4126
+ orientation: options.orientation ?? "vertical",
3974
4127
  focusable: (item, orderNumber) => ({ context, item, orderNumber })
3975
4128
  };
3976
4129
  return context;
@@ -3985,12 +4138,17 @@ var getOrCreateContext = (id, create) => {
3985
4138
  return created;
3986
4139
  };
3987
4140
 
4141
+ // src/plugins/focusable/focusable-item-context.ts
4142
+ var import_react17 = require("react");
4143
+ var contextForFocusableItem = (0, import_react17.createContext)(void 0);
4144
+ var useFocusableItem = () => (0, import_react17.useContext)(contextForFocusableItem);
4145
+
3988
4146
  // src/plugins/hoverable/local-hoverable/local-hoverable.ts
3989
4147
  var import_use_inject11 = require("@k8slens/use-inject");
3990
- var import_react17 = require("react");
4148
+ var import_react18 = require("react");
3991
4149
  var useLocalHoverable = () => {
3992
- const hoverableContext = (0, import_react17.useMemo)(() => getHoverableContext(), []);
3993
- const ref = (0, import_react17.useRef)(null);
4150
+ const hoverableContext = (0, import_react18.useMemo)(() => getHoverableContext(), []);
4151
+ const ref = (0, import_react18.useRef)(null);
3994
4152
  const itemBeingHovered = (0, import_use_inject11.useSyncInject)(contextIsBeingHoveredInjectable, hoverableContext);
3995
4153
  return {
3996
4154
  ref,
@@ -4035,6 +4193,7 @@ var useLocalHoverable = () => {
4035
4193
  Tr,
4036
4194
  Ul,
4037
4195
  contextForClosingPopover,
4196
+ contextForFocusableItem,
4038
4197
  doFocusForInjectionToken,
4039
4198
  elementComponentFeature,
4040
4199
  getDraggableContext,
@@ -4054,8 +4213,9 @@ var useLocalHoverable = () => {
4054
4213
  suppressTooltip,
4055
4214
  tShirtSizeInPixels,
4056
4215
  useClosePopover,
4216
+ useFocusableItem,
4057
4217
  useLocalHoverable,
4058
4218
  useOnOutsideClick,
4059
4219
  usePopoverIsOpen
4060
4220
  });
4061
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQudHMiLCAiLi4vc3JjL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9ob3ZlcmFibGUvY29tcHV0ZWQtbm93LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9lbGVtZW50cy9taW5pbWFsLWRpdi50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm9yZGVyL2JvcmRlci50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlcy50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvbnQvZm9udC50cyIsICIuLi9zcmMvcGx1Z2lucy9mb250L2ZvbnQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvdy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy50cyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9yZWYvcmVmLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZ2V0LWRyYWdnYWJsZS1jb250ZXh0LnRzIiwgIi4uL3NyYy9mZWF0dXJlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3Rlc3QtdXRpbC1ydW5uYWJsZS5pbmplY3RhYmxlLnRzIiwgImltcG9ydC1nbG9iOi4vKiovKi5nbG9iYWwtb3ZlcnJpZGUtZm9yLWluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy8wZGUyZDk5ZS04NzM4LTQxZDAtYjgyMi1hZTcyMDAzYTVhNjAiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4vbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4uZGVmYXVsdC1vdmVycmlkZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzIiwgIi4uL3NyYy9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmRlZmF1bHQtb3ZlcnJpZGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy85Nzc4ZjRkMC1lZTFhLTQ2NDktOWJhZC1iYzVkYWFkOGEzYTQiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9mZDBkM2I2Yi00ZjNlLTQ3OTctODhhNy00ZDEyYzVlMmU3OTIiLCAiLi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplcy50cyIsICIuLi9zcmMvZWxlbWVudHMudHMiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC9mbGV4Lm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgvZmxleC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmlkL2dyaWQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3N0eWxlL3N0eWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodC50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJhZ2dhYmxlLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2Ryb3BwYWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90cmFuc2l0aW9uL3RyYW5zaXRpb24udHMiLCAiLi4vc3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXQudHMiLCAiLi4vc3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGlkZGVuL2hpZGRlbi50cyIsICIuLi9zcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL21hcmdpbi9tYXJnaW4udHMiLCAiLi4vc3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy92aXN1YWxseS1oaWRkZW4vdmlzdWFsbHktaGlkZGVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC1jaGlsZC9mbGV4LWNoaWxkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGludC90aW50LnRzIiwgIi4uL3NyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC50cyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZS50c3giLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvbi50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvaGFuZGxlLWZvY3VzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS9oYW5kbGUtYmx1ci50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZy50cyIsICIuLi9zcmMvcGx1Z2lucy9hcmVhL2FyZWEudHMiLCAiLi4vc3JjL3BsdWdpbnMvYXJlYS1jb250ZW50L2FyZWEtY29udGVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9zaXplL3NpemUudHMiLCAiLi4vc3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvY2xpY2thYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLnRzeCIsICIuLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci50c3giLCAiLi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Zsb2F0aW5nL2Zsb2F0aW5nLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7IEJsb2NrUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ibG9jay9ibG9ja1wiO1xuZXhwb3J0IHR5cGUgeyBBbmNob3JlZEF0LCBBbmNob3JQbHVnaW5Qcm9wcywgQW5jaG9yUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yXCI7XG5leHBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29uLW91dHNpZGUtY2xpY2svb24tb3V0c2lkZS1jbGlja1wiO1xuZXhwb3J0IHR5cGUgeyBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZHJvcC1kb3duLW1lbnUvZHJvcC1kb3duLW1lbnVcIjtcbmV4cG9ydCB0eXBlIHsgVGV4dEFsaWduUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ25cIjtcblxuZXhwb3J0IHsgdHlwZSBEb0ZvY3VzLCB0eXBlIERvRm9jdXNGb3IsIGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9pdGVtLWJlaW5nLWZvY3VzZWQuaW5qZWN0YWJsZVwiO1xuZXhwb3J0IHR5cGUgeyBJdGVtQmVpbmdGb2N1c2VkIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlXCI7XG5leHBvcnQgeyB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcywgaXNEaXNhYmxlZCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZFwiO1xuZXhwb3J0IHR5cGUgeyBHcmF5c2NhbGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGVcIjtcbmV4cG9ydCB0eXBlIHsgVGludFBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdGludC90aW50XCI7XG5leHBvcnQgdHlwZSB7IEZhZGVkUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuXG5leHBvcnQgdHlwZSB7IFNpZGVTdHlsZXMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzXCI7XG5leHBvcnQgdHlwZSB7IENvcm5lclN0eWxlcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEJhY2tncm91bmRDb2xvclBsdWdpblByb3BzLFxuICBCYWNrZ3JvdW5kQ29sb3IsXG4gIEJhY2tncm91bmRDb2xvckFsaWFzLFxuICAkQmFja2dyb3VuZENvbG9yUHJvcHMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIE91dGxpbmVXaWR0aCxcbiAgJE91dGxpbmVQcm9wcyxcbiAgT3V0bGluZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmVcIjtcblxuZXhwb3J0IHR5cGUge1xuICBGbG9hdGluZ0NvbnRlbnRBcmdzLFxuICBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5LFxuICAkRmxvYXRpbmdQcm9wcyxcbiAgRmxvYXRpbmdQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcblxuZXhwb3J0IHR5cGUgeyBQYWRkaW5nUGx1Z2luUHJvcHMsIERpcmVjdGlvbmFsUGFkZGluZyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuZXhwb3J0IHR5cGUgeyBNYXJnaW5QbHVnaW5Qcm9wcywgRGlyZWN0aW9uYWxNYXJnaW4gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luXCI7XG5leHBvcnQgdHlwZSB7IE92ZXJmbG93UGx1Z2luUHJvcHMsIE92ZXJmbG93IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuZXhwb3J0IHR5cGUgeyBCb3hTaGFkb3dQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcyxcbiAgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZS1ieS1kcmFnZ2luZ1wiO1xuZXhwb3J0IHsgaG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmdcIjtcblxuZXhwb3J0IHR5cGUge1xuICBIb3ZlcmFibGVDb250ZXh0LFxuICAkSG92ZXJhYmxlUHJvcHMsXG4gIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zLFxuICBIb3ZlcmFibGVQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaG92ZXJhYmxlUGx1Z2luLCBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgUmVmUGx1Z2luUHJvcHMsICRSZWZQcm9wLCBSZWZMaWtlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSB7IEFic29sdXRlUGx1Z2luUHJvcHMsIEFic29sdXRlUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuZXhwb3J0IHR5cGUgeyBIaWRkZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW5cIjtcbmV4cG9ydCB0eXBlIHsgTm9Qb2ludGVyRXZlbnRzUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuZXhwb3J0IHR5cGUgeyBPZmZzZXRQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXRcIjtcbmV4cG9ydCB0eXBlIHsgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW5cIjtcbmV4cG9ydCB0eXBlIHsgUmVsYXRpdmVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5leHBvcnQgdHlwZSB7IFRyYW5zaXRpb25QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuZXhwb3J0IHR5cGUgeyBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuXG5leHBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgQ3Vyc29yUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5leHBvcnQgdHlwZSB7IERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgVG9vbHRpcFBsdWdpblByb3BzLCAkVG9vbHRpcFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwXCI7XG5leHBvcnQgeyBTdHlsZWRUb29sdGlwQ29udGFpbmVyLCBnZXRUb29sdGlwUHJvcHMsIHN1cHByZXNzVG9vbHRpcCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcFwiO1xuXG5leHBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGdldERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHsgZWxlbWVudENvbXBvbmVudEZlYXR1cmUgfSBmcm9tIFwiLi9zcmMvZmVhdHVyZVwiO1xuXG5leHBvcnQgdHlwZSB7IFNpemVQbHVnaW5Qcm9wcywgJFNpemVQcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuXG5leHBvcnQgdHlwZSB7IFdpZHRoUGx1Z2luUHJvcHMsICRXaWR0aFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcblxuZXhwb3J0IHR5cGUgeyBTdHlsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvc3R5bGUvc3R5bGVcIjtcblxuZXhwb3J0IHR5cGUgeyBIZWlnaHRQbHVnaW5Qcm9wcywgJEhlaWdodFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSB7IEZvbnRQbHVnaW5Qcm9wcywgRm9udFNpemUsIEZvbnRMaW5lSGVpZ2h0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9udC9mb250XCI7XG5cbmV4cG9ydCB0eXBlIHsgR3JpZFBsdWdpblByb3BzLCBHcmlkUHJvcHMsIEdyaWRDb2x1bW5zIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgRHJhZ2dhYmxlUGx1Z2luUHJvcHMsXG4gIERyb3BwYWJsZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgeyBDb2xvclBsdWdpblByb3BzLCAkQ29sb3JQcm9wcywgVGV4dENvbG9yLCBUZXh0Q29sb3JBbGlhcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NvbG9yL2NvbG9yXCI7XG5leHBvcnQgdHlwZSB7IENsYXNzTmFtZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQm9yZGVyUGx1Z2luUHJvcHMsXG4gIEJvcmRlckNvbG9yQWxpYXMsXG4gIEJvcmRlckNvbG9yLFxuICAkQm9yZGVyUHJvcHMsXG4gICRCb3JkZXJDb2xvclByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQm9yZGVyUmFkaXVzU2l6ZSwgQm9yZGVyV2lkdGgsIEJvcmRlclNpZGUgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuZXhwb3J0IHsgdFNoaXJ0U2l6ZUluUGl4ZWxzLCBzaXplVW5pdEluUGl4ZWxzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdGlvbiwgU2hvcnREaXJlY3Rpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmV4cG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIENsaWNrSGFuZGxlcixcbiAgQ2xpY2tIYW5kbGVyRGV0YWlscyxcbiAgQ2xpY2tQbHVnaW5Qcm9wcyxcbiAgUG9zaXRpb24yZCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEZsZXhQbHVnaW5Qcm9wcyxcbiAgSG9yaXpvbnRhbEZsZXhQcm9wcyxcbiAgTWF4aW1hbEZsZXhQcm9wcyxcbiAgU2ltcGxlRmxleFByb3AsXG4gIFZlcnRpY2FsRmxleFByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mbGV4L2ZsZXhcIjtcblxuaW1wb3J0IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nLFxuICBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgeyByZW1vdmVDc3NNb2R1bGVDbHV0dGVyRm9yVW5pdFRlc3RpbmcsIHNob3dDc3NNb2R1bGVDbHV0dGVyRm9yUHJvZHVjdGlvbiB9O1xuXG5leHBvcnQge1xuICBDbGlja2FibGVEaXYsXG4gIE5hdixcbiAgU3ZnLFxuICBEaXYsXG4gIEJ1dHRvbixcbiAgSSxcbiAgSW5wdXQsXG4gIEZvcm0sXG4gIFNwYW4sXG4gIFRleHRBcmVhLFxuICBBLFxuICBDb2RlLFxuICBQcmUsXG4gIEgxLFxuICBIMixcbiAgSDMsXG4gIEg0LFxuICBINSxcbiAgSDYsXG4gIFAsXG4gIENsaWNrYWJsZUxpLFxuICBMaSxcbiAgT2wsXG4gIFVsLFxuICBUaCxcbiAgVGQsXG4gIFRyLFxuICBUYWJsZSxcbiAgTGFiZWwsXG4gIFRCb2R5LFxuICBEaWFsb2csXG4gIENhbnZhcyxcbiAgSW1nLFxufSBmcm9tIFwiLi9zcmMvZWxlbWVudHNcIjtcblxuZXhwb3J0IHR5cGUge1xuICBDb21tb25Qcm9wcyxcbiAgQ2xpY2thYmxlRGl2UHJvcHMsXG4gIENsaWNrYWJsZUxpUHJvcHMsXG4gIE5hdlByb3BzLFxuICBTdmdQcm9wcyxcbiAgRGl2UHJvcHMsXG4gIEJ1dHRvblByb3BzLFxuICBJUHJvcHMsXG4gIElucHV0UHJvcHMsXG4gIEZvcm1Qcm9wcyxcbiAgU3BhblByb3BzLFxuICBUZXh0QXJlYVByb3BzLFxuICBBUHJvcHMsXG4gIENvZGVQcm9wcyxcbiAgUHJlUHJvcHMsXG4gIEgxUHJvcHMsXG4gIEgyUHJvcHMsXG4gIEgzUHJvcHMsXG4gIEg0UHJvcHMsXG4gIEg1UHJvcHMsXG4gIEg2UHJvcHMsXG4gIFBQcm9wcyxcbiAgTGlQcm9wcyxcbiAgT2xQcm9wcyxcbiAgVWxQcm9wcyxcbiAgVGhQcm9wcyxcbiAgVGRQcm9wcyxcbiAgVHJQcm9wcyxcbiAgVGFibGVQcm9wcyxcbiAgTGFiZWxQcm9wcyxcbiAgVEJvZHlQcm9wcyxcbiAgRGlhbG9nUHJvcHMsXG4gIENhbnZhc1Byb3BzLFxuICBJbWdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCB7XG4gIGdldEZvY3VzYWJsZUNvbnRleHQsXG4gIGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHR5cGUge1xuICAkRm9jdXNhYmxlUHJvcHMsXG4gIEFueUZvY3VzYWJsZUNvbnRleHQsXG4gIEZvY3VzYWJsZUNvbnRleHQsXG4gIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHsgdXNlQ2xvc2VQb3BvdmVyLCB1c2VQb3BvdmVySXNPcGVuLCBjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9wb3BvdmVyL3BvcG92ZXJcIjtcbmV4cG9ydCB7IHVzZUxvY2FsSG92ZXJhYmxlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2xvY2FsLWhvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGVcIjtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgdHlwZSBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBwb2ludGVyLWRvd24gbGFuZHMgb3V0c2lkZSB0aGUgZWxlbWVudCdzIFJlYWN0IHRyZWUuIFRoZSB0cmVlIGluY2x1ZGVzIGNvbnRlbnRcbiAgICogdGhlIGVsZW1lbnQgcG9ydGFscyBlbHNld2hlcmUsIHNvIHBvcnRhbGVkIGNoaWxkcmVuIGNvdW50IGFzIGluc2lkZS4gQ2F2ZWF0OiBhbiBvdXRzaWRlXG4gICAqIHBvaW50ZXItZG93biB3aG9zZSBwcm9wYWdhdGlvbiB0byB0aGUgZG9jdW1lbnQgaXMgc3RvcHBlZCBuYXRpdmVseSBnb2VzIHVuZGV0ZWN0ZWQuXG4gICAqL1xuICByZWFkb25seSAkb25PdXRzaWRlQ2xpY2s/OiAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbn07XG5cbi8qKlxuICogUmVhY3QtdHJlZSBvdXRzaWRlLWNsaWNrIGRldGVjdGlvbjogYSBjYXB0dXJlLXBoYXNlIGhhbmRsZXIgb24gdGhlIGVsZW1lbnQgcmVjb3JkcyB0aGVcbiAqIHBvaW50ZXItZG93biBldmVudHMgb2YgaXRzIG93biBSZWFjdCB0cmVlIChwb3J0YWxzIGluY2x1ZGVkLCBzaW5jZSBSZWFjdCBldmVudHMgcHJvcGFnYXRlXG4gKiB0aHJvdWdoIHRoZW0pLCBhbmQgYSBkb2N1bWVudC1sZXZlbCBsaXN0ZW5lciByZXBvcnRzIGV2ZXJ5IHBvaW50ZXItZG93biBpdCBkaWQgbm90IHJlY29yZC5cbiAqIFJldHVybnMgdGhlIHByb3BzIG1hcmtpbmcgdGhlIGVsZW1lbnQncyB0cmVlOyBnaXZlIHRoZW0gdG8gYGNvbnRyaWJ1dGVQcm9wc2Agb3Igc3ByZWFkIHRoZW1cbiAqIG9udG8gdGhlIHN1YnRyZWUncyByb290LlxuICovXG5leHBvcnQgY29uc3QgdXNlT25PdXRzaWRlQ2xpY2sgPSAob25PdXRzaWRlQ2xpY2s6IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB2b2lkKSA9PiB7XG4gIGNvbnN0IGxhc3RJbnNpZGVQb2ludGVyRG93blJlZiA9IHVzZVJlZjxFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgaGFuZGxlclJlZiA9IHVzZVJlZihvbk91dHNpZGVDbGljayk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBoYW5kbGVyUmVmLmN1cnJlbnQgPSBvbk91dHNpZGVDbGljaztcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVEb2N1bWVudFBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudCAhPT0gbGFzdEluc2lkZVBvaW50ZXJEb3duUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaGFuZGxlclJlZi5jdXJyZW50KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIGhhbmRsZURvY3VtZW50UG9pbnRlckRvd24pO1xuXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBoYW5kbGVEb2N1bWVudFBvaW50ZXJEb3duKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uUG9pbnRlckRvd25DYXB0dXJlID0gdXNlQ2FsbGJhY2soKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICBsYXN0SW5zaWRlUG9pbnRlckRvd25SZWYuY3VycmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHsgb25Qb2ludGVyRG93bkNhcHR1cmUgfTtcbn07XG5cbnR5cGUgT25PdXRzaWRlQ2xpY2tXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IG9uT3V0c2lkZUNsaWNrOiAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBPbk91dHNpZGVDbGlja1dyYXBwZXJDb21wb25lbnQgPSAoeyBvbk91dHNpZGVDbGljaywgY29udHJpYnV0ZVByb3BzLCBjaGlsZHJlbiB9OiBPbk91dHNpZGVDbGlja1dyYXBwZXJQcm9wcykgPT4ge1xuICBjb250cmlidXRlUHJvcHModXNlT25PdXRzaWRlQ2xpY2sob25PdXRzaWRlQ2xpY2spKTtcblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xufTtcblxuZXhwb3J0IGNvbnN0IG9uT3V0c2lkZUNsaWNrUGx1Z2luID0gZ2V0UGx1Z2luPE9uT3V0c2lkZUNsaWNrUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRvbk91dHNpZGVDbGljayB9ID0gcHJvcHM7XG5cbiAgaWYgKCRvbk91dHNpZGVDbGljayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgJG9uT3V0c2lkZUNsaWNrOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJG9uT3V0c2lkZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogT25PdXRzaWRlQ2xpY2tXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgcHJvcHM6IHsgb25PdXRzaWRlQ2xpY2s6ICRvbk91dHNpZGVDbGljayB9LFxuICAgIH0sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbmV4cG9ydCB0eXBlIERvRm9jdXM8VD4gPSAoaXRlbTogVCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIERvRm9jdXNGb3IgPSA8VD4oZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT4gRG9Gb2N1czxUPjtcblxuZXhwb3J0IGNvbnN0IGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiA9IGdldEluamVjdGlvblRva2VuMjx7IHNpbmdsZUZhY3Rvcnk6ICgpID0+IERvRm9jdXNGb3IgfT4oe1xuICBpZDogXCJkby1mb2N1cy1mb3ItaW5qZWN0aW9uLXRva2VuXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IGRvRm9jdXNGb3JJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJkby1mb2N1cy1mb3JcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0UmVmU2V0ID0gZGkuaW5qZWN0KGZvY3VzYWJsZUh0bWxFbGVtZW50UmVmU2V0SW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKCkgPT5cbiAgICAgICg8VD4oZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT5cbiAgICAgICAgKGZvY3VzYWJsZUl0ZW06IFQpID0+IHtcbiAgICAgICAgICBjb25zdCBbZmlyc3RSZW5kZXJlZEZvY3VzYWJsZUVsZW1lbnRSZWZdID0gZ2V0UmVmU2V0KGZvY3VzYWJsZUNvbnRleHQsIGZvY3VzYWJsZUl0ZW0pO1xuXG4gICAgICAgICAgaWYgKGZpcnN0UmVuZGVyZWRGb2N1c2FibGVFbGVtZW50UmVmKSB7XG4gICAgICAgICAgICBhc3NlcnREZWZpbmVkKGZpcnN0UmVuZGVyZWRGb2N1c2FibGVFbGVtZW50UmVmLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICBmaXJzdFJlbmRlcmVkRm9jdXNhYmxlRWxlbWVudFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSBhcyBEb0ZvY3VzRm9yO1xuICB9LFxuXG4gIGluamVjdGlvblRva2VuOiBkb0ZvY3VzRm9ySW5qZWN0aW9uVG9rZW4sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBGb2N1c2FibGVJdGVtID0gYW55O1xuXG4vLyBUd28gaW5zdGFudGlhdGlvbiBwYXJhbWV0ZXJzIHJhdGhlciB0aGFuIG9uZSBjb21wb3NpdGUga2V5OiB2MiBrZXlzIGFcbi8vIHNpbmdsZXRvbiBieSBhbGwgb2YgdGhlbSwgc28gdGhlIGNvbnRleHQgYW5kIHRoZSBpdGVtIGNvbXBvc2UgYnkgaWRlbnRpdHkgb25cbi8vIHRoZWlyIG93bi5cbmV4cG9ydCBjb25zdCBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImh0bWwtZWxlbWVudHMtYnktZm9jdXNhYmxlLW1hcFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNhYmxlSXRlbT4sIF9pdGVtOiBGb2N1c2FibGVJdGVtKSA9PlxuICAgIG5ldyBTZXQ8TXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD4+KCksXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgSUNvbXB1dGVkVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIEl0ZW1CZWluZ0ZvY3VzZWQgPSA8VD4oZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT4gSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdGb2N1c2VkSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBJdGVtQmVpbmdGb2N1c2VkIH0+KHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1mb2N1c2VkXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IHByaXZhdGVJdGVtQmVpbmdGb2N1c2VkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwicHJpdmF0ZS1pdGVtLWJlaW5nLWZvY3VzZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0Rm9jdXNhYmxlSXRlbVN0YXRlID0gZGkuaW5qZWN0KGZvY3VzYWJsZUl0ZW1TdGF0ZUluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuIChjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PGFueT4pID0+IGNvbXB1dGVkKCgpID0+IGdldEZvY3VzYWJsZUl0ZW1TdGF0ZShjb250ZXh0KS5nZXQoKSk7XG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpdGVtLWJlaW5nLWZvY3VzZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0ZvY3VzZWQgPSBkaS5pbmplY3QocHJpdmF0ZUl0ZW1CZWluZ0ZvY3VzZWRJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoKSA9PlxuICAgICAgKDxUPihjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PFQ+KSA9PlxuICAgICAgICBnZXRQcml2YXRlSXRlbUJlaW5nRm9jdXNlZChjb250ZXh0KSBhcyBJQ29tcHV0ZWRWYWx1ZTxUIHwgdW5kZWZpbmVkPikgYXMgSXRlbUJlaW5nRm9jdXNlZDtcbiAgfSxcblxuICBpbmplY3Rpb25Ub2tlbjogaXRlbUJlaW5nRm9jdXNlZEluamVjdGlvblRva2VuLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJmb2N1c2FibGUtaXRlbS1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8YW55PikgPT4gb2JzZXJ2YWJsZS5ib3g8dW5rbm93bj4oKSxcbn0pO1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZW5hYmxlZFN0eWxlcyBmcm9tIFwiLi9lbmFibGVkLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIFRoaXMgZmllbGQgaGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuICRkaXNhYmxlZFxuICAgKi9cbiAgJGVuYWJsZWQ/OiBib29sZWFuO1xuICAkZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBmaWVsZCBpcyBvdmVycmlkZGVuIHZpYSAkZGlzYWJsZWQgYW5kICRlbmFibGVkXG4gICAqL1xuICBkaXNhYmxlZD86IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBlbmFibGVkUGx1Z2luID0gZ2V0UGx1Z2luPEVuYWJsZWRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgZGlzYWJsZWQgPSBpc0Rpc2FibGVkKHByb3BzKTtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBkaXNhYmxlZCA/IGVuYWJsZWRTdHlsZXMuZGlzYWJsZWQgOiB1bmRlZmluZWRdLFxuICAgIGRpc2FibGVkLFxuICAgICRlbmFibGVkOiB1bmRlZmluZWQsXG4gICAgJGRpc2FibGVkOiB1bmRlZmluZWQsXG4gIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IGlzRGlzYWJsZWQgPSAocHJvcHM6IEVuYWJsZWRQbHVnaW5Qcm9wcykgPT4ge1xuICBjb25zdCB7ICRlbmFibGVkLCAkZGlzYWJsZWQgfSA9IHByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgJGVuYWJsZWQgPT09IFwiYm9vbGVhblwiID8gISRlbmFibGVkIDogKCRkaXNhYmxlZCA/PyBmYWxzZSk7XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImRpc2FibGVkXCI6IFwiZW5hYmxlZC1tb2R1bGVfX2Rpc2FibGVkX19fTEwzc3dcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgdHlwZSBDb250ZXh0TWFwVmFsdWUsIGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSB9IGZyb20gXCIuL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBhY3Rpb24sIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgaXNEZWZpbmVkLCBub29wLCB0eXBlIFNpbmdsZU9yTWFueSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IHJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgdHlwZSB7ICRIb3ZlcmFibGVQcm9wcyB9IGZyb20gXCIuL2hvdmVyYWJsZVwiO1xuXG5leHBvcnQgdHlwZSAkSG92ZXJhYmxlQnlEcmFnZ2luZ1Byb3BzPFQ+ID0gUGljazwkSG92ZXJhYmxlUHJvcHM8VD4sIFwiY29udGV4dFwiIHwgXCJpdGVtXCI+O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luUHJvcHM8VCA9IGFueT4gPSB7XG4gICRob3ZlcmFibGVCeURyYWdnaW5nPzogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVCeURyYWdnaW5nUHJvcHM8VD4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW48VD4oKSB7XG4gIHJldHVybiBnZXRQbHVnaW48SG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpblByb3BzLCBbUmV0dXJuVHlwZTx0eXBlb2YgcmVmUGx1Z2luPFQ+Pl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGhvdmVyYWJsZUJ5RHJhZ2dpbmcsICRyZWYgfSA9IHByb3BzO1xuXG4gICAgaWYgKCRob3ZlcmFibGVCeURyYWdnaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICRob3ZlcmFibGVCeURyYWdnaW5nOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgICBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvciA9IHVzZVN5bmNJbmplY3QoaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlKTtcbiAgICBjb25zdCBob3ZlcmFibGVQcm9wc1JlZiA9IHVzZVJlZihvYnNlcnZhYmxlLm1hcCh0b0NvbnRleHRNYXAoJGhvdmVyYWJsZUJ5RHJhZ2dpbmcpLCB7IGRlZXA6IGZhbHNlIH0pKTtcbiAgICBjb25zdCBjb250cm9sbGVyID0gdXNlUmVmKG5ldyBBYm9ydENvbnRyb2xsZXIoKSk7XG5cbiAgICB1c2VFZmZlY3QoXG4gICAgICBhY3Rpb24oKCkgPT4ge1xuICAgICAgICBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LnJlcGxhY2UodG9Db250ZXh0TWFwKCRob3ZlcmFibGVCeURyYWdnaW5nKSk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgY2FsbGJhY2tSZWYgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgYWN0aW9uKChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY3VycmVudC5hYm9ydCgpO1xuICAgICAgICAgICAgY29udHJvbGxlci5jdXJyZW50ID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIFwiZHJhZ2VudGVyXCIsXG4gICAgICAgICAgICBhY3Rpb24oKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFRhcmdldCwgcmVsYXRlZFRhcmdldCB9ID0gZXZlbnQ7XG4gICAgICAgICAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgICAgICAgICAgaWYgKCEoY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMocmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgICAgICAgICAgIGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpLnNldChpZCwge1xuICAgICAgICAgICAgICAgICAgICBob3ZlcmVkQXQ6IG9ic2VydmFibGUuYm94KGhvdmVyZWRBdCwgeyBkZWVwOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0UHJvcHM6ICgpID0+IGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQuZ2V0KGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLmN1cnJlbnQuc2lnbmFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIFwiZHJhZ2xlYXZlXCIsXG4gICAgICAgICAgICBhY3Rpb24oKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFRhcmdldCwgcmVsYXRlZFRhcmdldCB9ID0gZXZlbnQ7XG4gICAgICAgICAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgICAgICAgICAgaWYgKCEoY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMocmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhvdmVyZWRTdGF0ZSA9IGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgICBob3ZlcmVkU3RhdGUuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgICAgICAgIGhvdmVyZWRTdGF0ZS5mb3JFYWNoKChzdGF0ZSkgPT4gc3RhdGUuaG92ZXJlZEF0LnNldChob3ZlcmVkQXQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuY3VycmVudC5zaWduYWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgW2hvdmVySXRlbVN0YXRlRm9yLCBpZF0sXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAkcmVmOiBbJHJlZiwgY2FsbGJhY2tSZWZdLFxuICAgICAgJGhvdmVyYWJsZUJ5RHJhZ2dpbmc6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9KTtcbn1cblxuY29uc3QgdG9Db250ZXh0TWFwID0gKHByb3BzOiBTaW5nbGVPck1hbnk8JEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wczx1bmtub3duPj4gfCB1bmRlZmluZWQpID0+IHtcbiAgY29uc3QgaXRlbXMgPSBbcHJvcHNdLmZsYXQoKS5maWx0ZXIoaXNEZWZpbmVkKTtcbiAgY29uc3QgcmVzdWx0czogW29iamVjdCwgQ29udGV4dE1hcFZhbHVlXVtdID0gW107XG5cbiAgZm9yIChjb25zdCB7IGNvbnRleHQsIGl0ZW0gfSBvZiBpdGVtcykge1xuICAgIHJlc3VsdHMucHVzaChbY29udGV4dCwgeyBpdGVtLCBkZWxheTogMCwgb25Ib3Zlcjogbm9vcCwgb25VbmhvdmVyOiBub29wIH1dKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB0eXBlIElPYnNlcnZhYmxlVmFsdWUsIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuXG5leHBvcnQgdHlwZSBDb250ZXh0TWFwVmFsdWUgPSB7XG4gIHJlYWRvbmx5IGl0ZW06IHVua25vd247XG4gIHJlYWRvbmx5IGRlbGF5OiBudW1iZXI7XG4gIG9uSG92ZXI6IFZvaWRGdW5jdGlvbjtcbiAgb25VbmhvdmVyOiBWb2lkRnVuY3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmVkSXRlbVN0YXRlID0ge1xuICByZWFkb25seSBob3ZlcmVkQXQ6IElPYnNlcnZhYmxlVmFsdWU8bnVtYmVyPjtcbiAgcmVhZG9ubHkgZ2V0UHJvcHM6ICgpID0+IENvbnRleHRNYXBWYWx1ZSB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBob3ZlcmVkSXRlbVN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiaG92ZXJlZC1pdGVtLXN0YXRlXCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IChfY29udGV4dDogb2JqZWN0KSA9PiBvYnNlcnZhYmxlLm1hcDxzdHJpbmcsIEhvdmVyZWRJdGVtU3RhdGU+KFtdLCB7IGRlZXA6IGZhbHNlIH0pLFxufSk7XG5cbmV4cG9ydCBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvckluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImhvdmVyLWl0ZW0tc3RhdGUtZm9yXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldEhvdmVyZWRJdGVtU3RhdGUgPSBkaS5pbmplY3QoaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+IChjb250ZXh0OiBvYmplY3QpID0+IGdldEhvdmVyZWRJdGVtU3RhdGUoY29udGV4dCk7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5cbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlSWQsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgeyB0eXBlIENvbnRleHRNYXBWYWx1ZSwgaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlIH0gZnJvbSBcIi4vaG92ZXJlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB7IGFjdGlvbiwgYXV0b3J1biwgY29tcGFyZXIsIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBpc0RlZmluZWQsIHR5cGUgU2luZ2xlT3JNYW55IH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlQ29udGV4dE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBJbiBtaWxsaXNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IGRlbGF5PzogbnVtYmVyO1xuICByZWFkb25seSBvbkhvdmVyPzogVm9pZEZ1bmN0aW9uO1xuICByZWFkb25seSBvblVuaG92ZXI/OiBWb2lkRnVuY3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVDb250ZXh0PEhvdmVyZWRJdGVtPiA9IHtcbiAgcmVhZG9ubHkgaG92ZXJhYmxlOiAoaXRlbTogSG92ZXJlZEl0ZW0sIG9wdGlvbnM/OiBIb3ZlcmFibGVDb250ZXh0T3B0aW9ucykgPT4gJEhvdmVyYWJsZVByb3BzPEhvdmVyZWRJdGVtPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgJEhvdmVyYWJsZVByb3BzPFRJdGVtID0gdW5rbm93bj4ge1xuICByZWFkb25seSBjb250ZXh0OiBvYmplY3Q7XG4gIHJlYWRvbmx5IGl0ZW06IFRJdGVtO1xuICByZWFkb25seSBvcHRpb25zOiBSZXF1aXJlZDxIb3ZlcmFibGVDb250ZXh0T3B0aW9ucz47XG59XG5cbmV4cG9ydCB0eXBlIEhvdmVyYWJsZVBsdWdpblByb3BzPFRFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+ID0ge1xuICByZWFkb25seSAkaG92ZXJhYmxlPzogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVQcm9wcz47XG4gIG9uTW91c2VFbnRlcj86IFJlYWN0LkhUTUxQcm9wczxURWxlbWVudD5bXCJvbk1vdXNlRW50ZXJcIl07XG4gIG9uTW91c2VMZWF2ZT86IFJlYWN0LkhUTUxQcm9wczxURWxlbWVudD5bXCJvbk1vdXNlTGVhdmVcIl07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SG92ZXJhYmxlQ29udGV4dCA9IDxIb3ZlcmVkSXRlbSw+KCk6IEhvdmVyYWJsZUNvbnRleHQ8SG92ZXJlZEl0ZW0+ID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBob3ZlcmFibGU6IChpdGVtOiBIb3ZlcmVkSXRlbSwgeyBkZWxheSA9IDAsIG9uSG92ZXIgPSBub29wLCBvblVuaG92ZXIgPSBub29wIH06IEhvdmVyYWJsZUNvbnRleHRPcHRpb25zID0ge30pID0+ICh7XG4gICAgICBjb250ZXh0LFxuICAgICAgaXRlbSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZGVsYXksXG4gICAgICAgIG9uSG92ZXIsXG4gICAgICAgIG9uVW5ob3ZlcixcbiAgICAgIH0sXG4gICAgfSksXG4gIH07XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVQbHVnaW48VCBleHRlbmRzIEhUTUxFbGVtZW50PiA9IFJldHVyblR5cGU8dHlwZW9mIGhvdmVyYWJsZVBsdWdpbjxUPj47XG5cbnR5cGUgSG92ZXJhYmxlV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBob3ZlcmFibGU6IFNpbmdsZU9yTWFueTwkSG92ZXJhYmxlUHJvcHM+O1xuICByZWFkb25seSBvbk1vdXNlRW50ZXI/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MRWxlbWVudD47XG4gIHJlYWRvbmx5IG9uTW91c2VMZWF2ZT86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50PjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBIb3ZlcmFibGVXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgaG92ZXJhYmxlLFxuICBvbk1vdXNlRW50ZXIsXG4gIG9uTW91c2VMZWF2ZSxcbiAgY29udHJpYnV0ZVByb3BzLFxuICBjaGlsZHJlbixcbn06IEhvdmVyYWJsZVdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvciA9IHVzZVN5bmNJbmplY3QoaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlKTtcbiAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IHVzZVN5bmNJbmplY3QoaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuKTtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuXG4gIGNvbnN0IGhvdmVyYWJsZVByb3BzUmVmID0gdXNlUmVmKFxuICAgIG9ic2VydmFibGUubWFwKHRvQ29udGV4dE1hcChob3ZlcmFibGUpLCB7IGRlZXA6IGZhbHNlLCBlcXVhbHM6IGNvbXBhcmVyLnN0cnVjdHVyYWwgfSksXG4gICk7XG5cbiAgdXNlRWZmZWN0KFxuICAgIGFjdGlvbigoKSA9PiB7XG4gICAgICBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LnJlcGxhY2UodG9Db250ZXh0TWFwKGhvdmVyYWJsZSkpO1xuICAgIH0pLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXRlbUJ5Q29udGV4dCA9IG5ldyBNYXA8b2JqZWN0LCB1bmtub3duPigpO1xuXG4gICAgcmV0dXJuIGF1dG9ydW4oKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBbY29udGV4dCwgeyBpdGVtLCBvbkhvdmVyLCBvblVuaG92ZXIgfV0gb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCBob3ZlcmVkSXRlbSA9IGl0ZW1CZWluZ0hvdmVyZWQoY29udGV4dCBhcyBIb3ZlcmFibGVDb250ZXh0PHVua25vd24+KS5nZXQoKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNJdGVtID0gaXRlbUJ5Q29udGV4dC5nZXQoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKGhvdmVyZWRJdGVtID09PSBpdGVtKSB7XG4gICAgICAgICAgb25Ib3ZlcigpO1xuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzSXRlbSA9PT0gaXRlbSkge1xuICAgICAgICAgIG9uVW5ob3ZlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbUJ5Q29udGV4dC5zZXQoY29udGV4dCwgaG92ZXJlZEl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbaXRlbUJlaW5nSG92ZXJlZF0pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgYWN0aW9uKCgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoY29udGV4dCkuZGVsZXRlKGlkKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgW2hvdmVySXRlbVN0YXRlRm9yLCBpZF0sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlTW91c2VFbnRlciA9IHVzZUNhbGxiYWNrKFxuICAgIGFjdGlvbigoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbk1vdXNlRW50ZXI/LihldmVudCk7XG5cbiAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgIGZvciAoY29uc3QgY29udGV4dCBvZiBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LmtleXMoKSkge1xuICAgICAgICBob3Zlckl0ZW1TdGF0ZUZvcihjb250ZXh0KS5zZXQoaWQsIHtcbiAgICAgICAgICBob3ZlcmVkQXQ6IG9ic2VydmFibGUuYm94KGhvdmVyZWRBdCwgeyBkZWVwOiBmYWxzZSB9KSxcbiAgICAgICAgICBnZXRQcm9wczogKCkgPT4gaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5nZXQoY29udGV4dCksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pLFxuICAgIFtdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZU1vdXNlTGVhdmUgPSB1c2VDYWxsYmFjayhcbiAgICBhY3Rpb24oKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Nb3VzZUxlYXZlPy4oZXZlbnQpO1xuXG4gICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgY29uc3QgaG92ZXJlZFN0YXRlID0gaG92ZXJJdGVtU3RhdGVGb3IoY29udGV4dCk7XG5cbiAgICAgICAgaG92ZXJlZFN0YXRlLmRlbGV0ZShpZCk7XG4gICAgICAgIGhvdmVyZWRTdGF0ZS5mb3JFYWNoKChzdGF0ZSkgPT4gc3RhdGUuaG92ZXJlZEF0LnNldChob3ZlcmVkQXQpKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBbXSxcbiAgKTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIG9uTW91c2VFbnRlcjogaGFuZGxlTW91c2VFbnRlcixcbiAgICBvbk1vdXNlTGVhdmU6IGhhbmRsZU1vdXNlTGVhdmUsXG4gIH0pO1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaG92ZXJhYmxlUGx1Z2luPFRFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEhvdmVyYWJsZVBsdWdpblByb3BzPFRFbGVtZW50Pj4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkaG92ZXJhYmxlLCBvbk1vdXNlRW50ZXIsIG9uTW91c2VMZWF2ZSB9ID0gcHJvcHM7XG5cbiAgICBpZiAoJGhvdmVyYWJsZSA9PT0gdW5kZWZpbmVkIHx8IChBcnJheS5pc0FycmF5KCRob3ZlcmFibGUpICYmICRob3ZlcmFibGUubGVuZ3RoID09PSAwKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJGhvdmVyYWJsZTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGhvdmVyYWJsZTogdW5kZWZpbmVkLFxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBIb3ZlcmFibGVXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIGhvdmVyYWJsZTogJGhvdmVyYWJsZSxcbiAgICAgICAgICBvbk1vdXNlRW50ZXIsXG4gICAgICAgICAgb25Nb3VzZUxlYXZlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcbn1cblxuY29uc3QgdG9Db250ZXh0TWFwID0gKHByb3BzOiBTaW5nbGVPck1hbnk8JEhvdmVyYWJsZVByb3BzPHVua25vd24+PiB8IHVuZGVmaW5lZCkgPT4ge1xuICBjb25zdCBpdGVtcyA9IFtwcm9wc10uZmxhdCgpLmZpbHRlcihpc0RlZmluZWQpO1xuICBjb25zdCByZXN1bHRzOiBbb2JqZWN0LCBDb250ZXh0TWFwVmFsdWVdW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHsgY29udGV4dCwgaXRlbSwgb3B0aW9ucyB9IG9mIGl0ZW1zKSB7XG4gICAgcmVzdWx0cy5wdXNoKFtjb250ZXh0LCB7IGl0ZW0sIC4uLm9wdGlvbnMgfV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyLCBnZXRJbmplY3Rpb25Ub2tlbjIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBJQ29tcHV0ZWRWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBob3ZlcmVkSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEhvdmVyYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IGNvbXB1dGVkTm93SW5qZWN0YWJsZSB9IGZyb20gXCIuL2NvbXB1dGVkLW5vdy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIEl0ZW1CZWluZ0hvdmVyZWQgPSA8VD4oaG92ZXJhYmxlQ29udGV4dDogSG92ZXJhYmxlQ29udGV4dDxUPikgPT4gSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBJdGVtQmVpbmdIb3ZlcmVkIH0+KHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1ob3ZlcmVkXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IHByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwicHJpdmF0ZS1pdGVtLWJlaW5nLWhvdmVyZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0SG92ZXJlZEl0ZW1TdGF0ZSA9IGRpLmluamVjdChob3ZlcmVkSXRlbVN0YXRlSW5qZWN0YWJsZSk7XG4gICAgY29uc3QgZ2V0Q29tcHV0ZWROb3cgPSBkaS5pbmplY3QoY29tcHV0ZWROb3dJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoY29udGV4dDogb2JqZWN0KSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkSXRlbVN0YXRlID0gZ2V0SG92ZXJlZEl0ZW1TdGF0ZShjb250ZXh0KTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkTm93ID0gZ2V0Q29tcHV0ZWROb3coMSk7XG5cbiAgICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvcEl0ZW0gPSBbLi4uaG92ZXJlZEl0ZW1TdGF0ZS52YWx1ZXMoKV0uYXQoLTEpO1xuICAgICAgICBjb25zdCBwcm9wcyA9IHRvcEl0ZW0/LmdldFByb3BzKCk7XG5cbiAgICAgICAgaWYgKCF0b3BJdGVtIHx8ICFwcm9wcykge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aGVuQ29uc2lkZXJlZEhvdmVyZWQgPSB0b3BJdGVtLmhvdmVyZWRBdC5nZXQoKSArIHByb3BzLmRlbGF5O1xuICAgICAgICBjb25zdCBub3cgPSBjb21wdXRlZE5vdy5nZXQoKTtcblxuICAgICAgICByZXR1cm4gbm93ID49IHdoZW5Db25zaWRlcmVkSG92ZXJlZCA/IHByb3BzLml0ZW0gOiB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgICB9O1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1ob3ZlcmVkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldFByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkID0gZGkuaW5qZWN0KHByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKCkgPT5cbiAgICAgICg8VD4oY29udGV4dDogSG92ZXJhYmxlQ29udGV4dDxUPikgPT5cbiAgICAgICAgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0hvdmVyZWQoY29udGV4dCkgYXMgSUNvbXB1dGVkVmFsdWU8VD4pIGFzIEl0ZW1CZWluZ0hvdmVyZWQ7XG4gIH0sXG5cbiAgaW5qZWN0aW9uVG9rZW46IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZhYmxlLCBvbkJlY29tZU9ic2VydmVkLCBvbkJlY29tZVVub2JzZXJ2ZWQsIHJ1bkluQWN0aW9uIH0gZnJvbSBcIm1vYnhcIjtcblxuLyoqXG4gKiBBIGNsb2NrIHRoYXQgYWR2YW5jZXMgb25seSB3aGlsZSBzb21ldGhpbmcgb2JzZXJ2ZXMgaXQsIHNvIGEgaG92ZXIgZGVsYXlcbiAqIGtlZXBzIGJlaW5nIHJlLWV2YWx1YXRlZCB1bnRpbCBpdCBoYXMgZWxhcHNlZCBhbmQgY29zdHMgbm90aGluZyBvbmNlIG5vYm9keVxuICogaXMgd2F0Y2hpbmcuXG4gKlxuICogTG9jYWwgcmF0aGVyIHRoYW4gdGFrZW4gZnJvbSB0aGUgc2hhcmVkIGludGVydmFsIGZlYXR1cmU6IGEgZGVzaWduIHN5c3RlbVxuICogY2Fubm90IGRlcGVuZCBvbiBhIGZlYXR1cmUgcGFja2FnZSwgYW5kIHRoZSBob3ZlcmFibGUgcGx1Z2luIGlzIHRoZSBvbmx5XG4gKiB0aGluZyBoZXJlIHRoYXQgbmVlZHMgYSBjbG9jay4gVGhlIGludGVydmFsIGlzIHRoZSBpbnN0YW50aWF0aW9uIHBhcmFtZXRlcixcbiAqIHNvIHYyIGtleXMgb25lIGNsb2NrIHBlciBpbnRlcnZhbC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXB1dGVkTm93SW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiY29tcHV0ZWQtbm93XCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IChpbnRlcnZhbE1zOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBub3cgPSBvYnNlcnZhYmxlLmJveChEYXRlLm5vdygpKTtcblxuICAgIGxldCBoYW5kbGU6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZDtcblxuICAgIG9uQmVjb21lT2JzZXJ2ZWQobm93LCAoKSA9PiB7XG4gICAgICBydW5JbkFjdGlvbigoKSA9PiBub3cuc2V0KERhdGUubm93KCkpKTtcblxuICAgICAgaGFuZGxlID0gc2V0SW50ZXJ2YWwoKCkgPT4gcnVuSW5BY3Rpb24oKCkgPT4gbm93LnNldChEYXRlLm5vdygpKSksIGludGVydmFsTXMpO1xuICAgIH0pO1xuXG4gICAgb25CZWNvbWVVbm9ic2VydmVkKG5vdywgKCkgPT4ge1xuICAgICAgaWYgKGhhbmRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaGFuZGxlKTtcbiAgICAgIH1cblxuICAgICAgaGFuZGxlID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IG5vdy5nZXQoKSk7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgSUNvbXB1dGVkVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBEcmFnZ2FibGVDb250ZXh0IH0gZnJvbSBcIi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyBkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcblxuZXhwb3J0IHR5cGUgSXRlbUJlaW5nRHJhZ2dlZCA9IDxUPihkcmFnZ2FibGVDb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+KSA9PiBJQ29tcHV0ZWRWYWx1ZTxUIHwgdW5kZWZpbmVkPjtcblxuZXhwb3J0IGNvbnN0IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiA9IGdldEluamVjdGlvblRva2VuMjx7IHNpbmdsZUZhY3Rvcnk6ICgpID0+IEl0ZW1CZWluZ0RyYWdnZWQgfT4oe1xuICBpZDogXCJpdGVtLWJlaW5nLWRyYWdnZWRcIixcbiAgY2FyZGluYWxpdHk6IFwib25lXCIsXG59KSgpO1xuXG5leHBvcnQgY29uc3QgcHJpdmF0ZUl0ZW1CZWluZ0RyYWdnZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJwcml2YXRlLWl0ZW0tYmVpbmctZHJhZ2dlZFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXREcmFnZ2VkSXRlbVN0YXRlID0gZGkuaW5qZWN0KGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoY29udGV4dDogRHJhZ2dhYmxlQ29udGV4dDxhbnk+KSA9PiBjb21wdXRlZCgoKSA9PiBnZXREcmFnZ2VkSXRlbVN0YXRlKGNvbnRleHQpLmdldCgpKTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nRHJhZ2dlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcIml0ZW0tYmVpbmctZHJhZ2dlZFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXRQcml2YXRlSXRlbUJlaW5nRHJhZ2dlZCA9IGRpLmluamVjdChwcml2YXRlSXRlbUJlaW5nRHJhZ2dlZEluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICAoPFQ+KGNvbnRleHQ6IERyYWdnYWJsZUNvbnRleHQ8VD4pID0+XG4gICAgICAgIGdldFByaXZhdGVJdGVtQmVpbmdEcmFnZ2VkKGNvbnRleHQpIGFzIElDb21wdXRlZFZhbHVlPFQ+KSBhcyBJdGVtQmVpbmdEcmFnZ2VkO1xuICB9LFxuXG4gIGluamVjdGlvblRva2VuOiBpdGVtQmVpbmdEcmFnZ2VkSW5qZWN0aW9uVG9rZW4sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB0eXBlIHsgRHJhZ2dhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuLy8gVGhlIGNvbnRleHQgaXMgdGhlIGluc3RhbnRpYXRpb24gcGFyYW1ldGVyLCBzbyB2MiBrZXlzIG9uZSBzdGF0ZSBib3ggcGVyXG4vLyBjb250ZXh0IGlkZW50aXR5IFx1MjAxNCB3aGF0IHRoZSBrZXllZFNpbmdsZXRvbiB1c2VkIHRvIHNwZWxsIG91dC5cbmV4cG9ydCBjb25zdCBkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiZHJhZ2dlZC1pdGVtLXN0YXRlXCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IChfY29udGV4dDogRHJhZ2dhYmxlQ29udGV4dDxhbnk+KSA9PiBvYnNlcnZhYmxlLmJveCh1bmRlZmluZWQsIHsgZGVlcDogZmFsc2UgfSksXG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzLCB0eXBlIENvbnRyaWJ1dGVSZWYgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgSG92ZXJhYmxlUGx1Z2luIH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IGdldEhvdmVyYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlIH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9ob3ZlcmVkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlSWQsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvb2x0aXBEZWxheUluamVjdGFibGUgfSBmcm9tIFwiLi90b29sdGlwLWRlbGF5L3Rvb2x0aXAtZGVsYXkuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi90b29sdGlwLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IFBsYWNlbWVudCB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBhdXRvVXBkYXRlLCBmbGlwLCBvZmZzZXQsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgdHlwZSB7IFJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgeyBub29wLCB0eXBlIE1heWJlQXN5bmNWb2lkRnVuY3Rpb24gfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgTWluaW1hbERpdiwgdHlwZSBNaW5pbWFsRGl2UHJvcHMgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHMvbWluaW1hbC1kaXZcIjtcbmltcG9ydCB7IGFjdGlvbiwgYXV0b3J1biwgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5cbnR5cGUgVG9vbHRpcENvbnRlbnRQcm9wczxQcm9wcyBleHRlbmRzIG9iamVjdD4gPVxuICB8IHtcbiAgICAgIC8qKiBQbGFpbi10ZXh0IGNvbnRlbnQgb2YgdGhlIHRvb2x0aXAuIE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGBDb250ZW50YC4gKi9cbiAgICAgIHJlYWRvbmx5IGNvbnRlbnRUZXh0OiBzdHJpbmc7XG4gICAgICByZWFkb25seSBDb250ZW50PzogdW5kZWZpbmVkO1xuICAgICAgcmVhZG9ubHkgY29udGVudFByb3BzPzogdW5kZWZpbmVkO1xuICAgIH1cbiAgfCB7XG4gICAgICByZWFkb25seSBjb250ZW50VGV4dD86IHVuZGVmaW5lZDtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGNvbXBvbmVudCByZW5kZXJlZCBhcyB0aGUgY29udGVudCBvZiB0aGUgdG9vbHRpcC4gTXVzdCBoYXZlIGEgc3RhYmxlXG4gICAgICAgKiBpZGVudGl0eSAobW9kdWxlIHNjb3BlKSBcdTIwMTQgZGF0YSBmbG93cyBpbiB0aHJvdWdoIGBjb250ZW50UHJvcHNgLCBuZXZlclxuICAgICAgICogdGhyb3VnaCBjbG9zdXJlIGNhcHR1cmUuXG4gICAgICAgKi9cbiAgICAgIHJlYWRvbmx5IENvbnRlbnQ6IFJlYWN0LkNvbXBvbmVudFR5cGU8UHJvcHM+O1xuICAgICAgLyoqIFRoZSBwcm9wcyB0aGUgdG9vbHRpcCBwYXNzZXMgdG8gYENvbnRlbnRgIHdoZW4gcmVuZGVyaW5nIGl0LiAqL1xuICAgICAgcmVhZG9ubHkgY29udGVudFByb3BzPzogUHJvcHM7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgJFRvb2x0aXBQcm9wczxQcm9wcyBleHRlbmRzIG9iamVjdCA9IFJlY29yZDxuZXZlciwgbmV2ZXI+PiA9IHtcbiAgcmVhZG9ubHkgcG9zaXRpb24/OiBQbGFjZW1lbnQ7XG4gIHJlYWRvbmx5IG9uVG9vbHRpcFNob3duPzogTWF5YmVBc3luY1ZvaWRGdW5jdGlvbjtcbn0gJiBUb29sdGlwQ29udGVudFByb3BzPFByb3BzPjtcblxuLyoqXG4gKiBUeXBlLWNoZWNrcyB0aGUgcGFpcmluZyBvZiBgQ29udGVudGAgYW5kIGBjb250ZW50UHJvcHNgIG9mIGFuIG9iamVjdC1mb3JtXG4gKiBgJHRvb2x0aXBgOiBgY29udGVudFByb3BzYCBpcyByZXF1aXJlZCB0byBiZSB0aGUgcHJvcHMgb2YgYENvbnRlbnRgLCBhbmQgaXRcbiAqIGlzIHJlcXVpcmVkIHRvIGJlIHByZXNlbnQgd2hlbiBgQ29udGVudGAgaGFzIHJlcXVpcmVkIHByb3BzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFByb3BzKHRvb2x0aXBQcm9wczogJFRvb2x0aXBQcm9wcyk6ICRUb29sdGlwUHJvcHM8YW55PjtcbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwUHJvcHM8UHJvcHMgZXh0ZW5kcyBvYmplY3Q+KFxuICB0b29sdGlwUHJvcHM6ICRUb29sdGlwUHJvcHM8UHJvcHM+ICYgeyByZWFkb25seSBjb250ZW50UHJvcHM6IFByb3BzIH0sXG4pOiAkVG9vbHRpcFByb3BzPGFueT47XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFByb3BzKHRvb2x0aXBQcm9wczogJFRvb2x0aXBQcm9wczxhbnk+KTogJFRvb2x0aXBQcm9wczxhbnk+IHtcbiAgcmV0dXJuIHRvb2x0aXBQcm9wcztcbn1cblxuZXhwb3J0IHR5cGUgVG9vbHRpcFBsdWdpblByb3BzID0ge1xuICAvKiogTnVsbGlzaCBtZWFucyBubyB0b29sdGlwLCBzbyBjb25kaXRpb25hbCBzb3VyY2VzIChgc3RyaW5nIHwgbnVsbGApIHBhc3MgdGhyb3VnaCBhcy1pcy4gKi9cbiAgJHRvb2x0aXA/OiBzdHJpbmcgfCAkVG9vbHRpcFByb3BzPGFueT4gfCBudWxsO1xufTtcblxuLyoqXG4gKiBBIHRvb2x0aXAgb2Ygbm90aGluZzogdGhlIGVsZW1lbnQgdGFrZXMgdGhlIGhvdmVyLCBzbyBubyBlbmNsb3NpbmcgZWxlbWVudCBzaG93cyBpdHMgdG9vbHRpcFxuICogd2hpbGUgdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGlzIG9uZSwgYW5kIHNob3dzIG5vdGhpbmcgb2YgaXRzIG93bi4gTnVsbGlzaCBgJHRvb2x0aXBgIGxlYXZlcyB0aGVcbiAqIGVuY2xvc2luZyB0b29sdGlwIGFsb25lIGluc3RlYWQgXHUyMDE0IHVzZSB0aGlzIHdoZXJlIGFuIGVsZW1lbnQgbXVzdCBub3QgYmUgZGVzY3JpYmVkIGJ5IHdoYXRldmVyXG4gKiBlbmNsb3NlcyBpdCwgYSBwYW5lbCBvcGVuZWQgZnJvbSBhIHJvdyB3aXRoIGEgdG9vbHRpcCBiZWluZyB0aGUgY2FzZSB0aGF0IG5lZWRzIGl0OiBhIHRvb2x0aXBcbiAqIGdvZXMgaW50byB0aGUgdG9wIGxheWVyLCBzbyBpdCB3b3VsZCBwYWludCBvdmVyIHdoYXQgdGhlIHBhbmVsIGlzIHRoZXJlIGZvci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiA8TGkgJHRvb2x0aXA9e3N1cHByZXNzVG9vbHRpcH0+XG4gKiAgIDxTZXR0aW5ncyAvPlxuICogPC9MaT5cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3Qgc3VwcHJlc3NUb29sdGlwOiAkVG9vbHRpcFByb3BzID0geyBjb250ZW50VGV4dDogXCJcIiB9O1xuXG5jb25zdCBob3ZlcmFibGVUb29sdGlwQ29udGV4dCA9IGdldEhvdmVyYWJsZUNvbnRleHQ8SFRNTEVsZW1lbnQgfCBudWxsPigpO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkVG9vbHRpcENvbnRhaW5lciA9IChwcm9wczogTWluaW1hbERpdlByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGNsYXNzTmFtZSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8TWluaW1hbERpdlxuICAgICAgJHBhZGRpbmdcbiAgICAgICRiYWNrZ3JvdW5kQ29sb3I9XCJiYWNrZ3JvdW5kU2Vjb25kYXJ5XCJcbiAgICAgICRib3JkZXI9e3sgcmFkaXVzOiB0cnVlIH19XG4gICAgICAkZm9udD17eyBzaXplOiBcInNcIiB9fVxuICAgICAgJGJveFNoYWRvd1xuICAgICAgJG5vUG9pbnRlckV2ZW50c1xuICAgICAgJGFic29sdXRlXG4gICAgICAkY2xhc3NOYW1lPXtbc3R5bGVzLnRvb2x0aXAsICRjbGFzc05hbWVdfVxuICAgICAgZGF0YS10b29sdGlwLWNvbnRhaW5lci10ZXN0XG4gICAgICB7Li4ucmVzdH1cbiAgICAvPlxuICApO1xufTtcblxudHlwZSBGbG9hdGluZ1N0eWxlZFRvb2x0aXBDb250YWluZXJQcm9wcyA9IHtcbiAgY29udGVudDogUmVhY3QuUmVhY3ROb2RlO1xuICBwb3NpdGlvbjogUGxhY2VtZW50O1xuICByZWZlcmVuY2U6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgb25Ub29sdGlwU2hvd246IFZvaWRGdW5jdGlvbjtcbn07XG5cbnR5cGUgUG9wb3ZlckNhcGFibGUgPSBIVE1MRWxlbWVudCAmIHsgc2hvd1BvcG92ZXI6IFZvaWRGdW5jdGlvbjsgaGlkZVBvcG92ZXI6IFZvaWRGdW5jdGlvbiB9O1xuXG5jb25zdCBpc1BvcG92ZXJDYXBhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogZWxlbWVudCBpcyBQb3BvdmVyQ2FwYWJsZSA9PlxuICB0eXBlb2YgKGVsZW1lbnQgYXMgUGFydGlhbDxQb3BvdmVyQ2FwYWJsZT4pLnNob3dQb3BvdmVyID09PSBcImZ1bmN0aW9uXCI7XG5cbmNvbnN0IEZsb2F0aW5nU3R5bGVkVG9vbHRpcENvbnRhaW5lciA9IChwcm9wczogRmxvYXRpbmdTdHlsZWRUb29sdGlwQ29udGFpbmVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjb250ZW50LCBwb3NpdGlvbiwgcmVmZXJlbmNlLCBvblRvb2x0aXBTaG93biB9ID0gcHJvcHM7XG4gIGNvbnN0IFtmbG9hdGluZywgc2V0RmxvYXRpbmddID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogcG9zaXRpb24sXG4gICAgbWlkZGxld2FyZTogW2ZsaXAoKSwgb2Zmc2V0KDgpLCBzaGlmdCgpXSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgICBlbGVtZW50czoge1xuICAgICAgZmxvYXRpbmcsXG4gICAgICByZWZlcmVuY2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogd2UgZG9uJ3Qgd2FudCB0byBjYWxsIG9uVG9vbHRpcFNob3duIGV2ZXJ5IHRpbWUgaXQgdXBkYXRlcyB3aGlsZSB0aGUgdG9vbHRpcCBpcyBiZWluZyBzaG93XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdm9pZCBvblRvb2x0aXBTaG93bigpO1xuICB9LCBbXSk7XG5cbiAgLy8gSW50byB0aGUgdG9wIGxheWVyLCB3aGVyZSBhIGRyb3AtZG93biBtZW51IGFscmVhZHkgcHV0cyBpdHNlbGY6IG5vIHotaW5kZXggY2FuXG4gIC8vIHBhaW50IG92ZXIgYSBwb3BvdmVyLCBzbyBhIHRvb2x0aXAgYW55d2hlcmUgbmVhciBhbiBvcGVuIG1lbnUgd291bGQgYmUgaGlkZGVuXG4gIC8vIGJlaGluZCBpdC4gU2hvd24gYWZ0ZXIgdGhlIG1lbnUgb3BlbmVkLCBzbyBpdCBsYW5kcyBhYm92ZSBpdC5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWZsb2F0aW5nIHx8ICFpc1BvcG92ZXJDYXBhYmxlKGZsb2F0aW5nKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZsb2F0aW5nLnNob3dQb3BvdmVyKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGZsb2F0aW5nLmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGZsb2F0aW5nLmhpZGVQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2Zsb2F0aW5nXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkVG9vbHRpcENvbnRhaW5lciAkcmVmPXtzZXRGbG9hdGluZ30gcG9wb3Zlcj1cIm1hbnVhbFwiIHN0eWxlPXtmbG9hdGluZ1N0eWxlc30+XG4gICAgICB7Y29udGVudH1cbiAgICA8L1N0eWxlZFRvb2x0aXBDb250YWluZXI+XG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUGx1Z2luPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4gPSBSZXR1cm5UeXBlPHR5cGVvZiB0b29sdGlwUGx1Z2luPFQ+PjtcblxudHlwZSBOb3JtYWxpemVkVG9vbHRpcFByb3BzID0ge1xuICByZWFkb25seSBjb250ZW50VGV4dD86IHN0cmluZztcbiAgcmVhZG9ubHkgQ29udGVudD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PjtcbiAgcmVhZG9ubHkgY29udGVudFByb3BzPzogYW55O1xuICByZWFkb25seSBwb3NpdGlvbjogUGxhY2VtZW50O1xuICByZWFkb25seSBvblRvb2x0aXBTaG93bjogTWF5YmVBc3luY1ZvaWRGdW5jdGlvbjtcbn07XG5cbnR5cGUgVG9vbHRpcFdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgdG9vbHRpcDogTm9ybWFsaXplZFRvb2x0aXBQcm9wcztcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBUb29sdGlwV3JhcHBlckNvbXBvbmVudCA9ICh7IHRvb2x0aXAsIGNvbnRyaWJ1dGVSZWYsIGNvbnRyaWJ1dGVQcm9wcywgY2hpbGRyZW4gfTogVG9vbHRpcFdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCBbcmVmZXJlbmNlLCBzZXRSZWZlcmVuY2VdID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29udHJpYnV0ZVJlZihzZXRSZWZlcmVuY2UpO1xuXG4gIGNvbnN0IHRvb2x0aXBEZWxheSA9IHVzZVN5bmNJbmplY3QodG9vbHRpcERlbGF5SW5qZWN0YWJsZSk7XG4gIGNvbnN0IGhvdmVySXRlbVN0YXRlRm9yID0gdXNlU3luY0luamVjdChob3Zlckl0ZW1TdGF0ZUZvckluamVjdGFibGUpO1xuICBjb25zdCBob3ZlcmVkSXRlbSA9IHVzZVN5bmNJbmplY3QoaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuKShob3ZlcmFibGVUb29sdGlwQ29udGV4dCk7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcblxuICBjb25zdCByZWZlcmVuY2VSZWYgPSB1c2VSZWYocmVmZXJlbmNlKTtcbiAgcmVmZXJlbmNlUmVmLmN1cnJlbnQgPSByZWZlcmVuY2U7XG5cbiAgY29uc3QgdG9vbHRpcERlbGF5UmVmID0gdXNlUmVmKHRvb2x0aXBEZWxheSk7XG4gIHRvb2x0aXBEZWxheVJlZi5jdXJyZW50ID0gdG9vbHRpcERlbGF5O1xuXG4gIGNvbnRyaWJ1dGVQcm9wcyh7XG4gICAgb25Nb3VzZUVudGVyOiBhY3Rpb24oKCkgPT4ge1xuICAgICAgY29uc3QgaG92ZXJlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpLnNldChpZCwge1xuICAgICAgICBob3ZlcmVkQXQ6IG9ic2VydmFibGUuYm94KGhvdmVyZWRBdCwgeyBkZWVwOiBmYWxzZSB9KSxcbiAgICAgICAgZ2V0UHJvcHM6ICgpID0+ICh7XG4gICAgICAgICAgaXRlbTogcmVmZXJlbmNlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgZGVsYXk6IHRvb2x0aXBEZWxheVJlZi5jdXJyZW50ID8/IDAsXG4gICAgICAgICAgb25Ib3Zlcjogbm9vcCxcbiAgICAgICAgICBvblVuaG92ZXI6IG5vb3AsXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfSksXG5cbiAgICBvbk1vdXNlTGVhdmU6IGFjdGlvbigoKSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkU3RhdGUgPSBob3Zlckl0ZW1TdGF0ZUZvcihob3ZlcmFibGVUb29sdGlwQ29udGV4dCk7XG4gICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICBob3ZlcmVkU3RhdGUuZGVsZXRlKGlkKTtcbiAgICAgIGhvdmVyZWRTdGF0ZS5mb3JFYWNoKChzdGF0ZSkgPT4gc3RhdGUuaG92ZXJlZEF0LnNldChob3ZlcmVkQXQpKTtcbiAgICB9KSxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBhY3Rpb24oKCkgPT4ge1xuICAgICAgICBob3Zlckl0ZW1TdGF0ZUZvcihob3ZlcmFibGVUb29sdGlwQ29udGV4dCkuZGVsZXRlKGlkKTtcbiAgICAgIH0pLFxuICAgIFtob3Zlckl0ZW1TdGF0ZUZvciwgaWRdLFxuICApO1xuXG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBhdXRvcnVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGlzSG92ZXJlZCA9IGhvdmVyZWRJdGVtLmdldCgpID09PSByZWZlcmVuY2VSZWYuY3VycmVudDtcbiAgICAgIHNldEhvdmVyZWQoaXNIb3ZlcmVkKTtcbiAgICB9KTtcbiAgfSwgW2hvdmVyZWRJdGVtXSk7XG5cbiAgY29uc3QgeyBjb250ZW50VGV4dCwgQ29udGVudCwgY29udGVudFByb3BzLCBwb3NpdGlvbiwgb25Ub29sdGlwU2hvd24gfSA9IHRvb2x0aXA7XG4gIGNvbnN0IGNvbnRlbnQgPSBob3ZlcmVkID8gQ29udGVudCA9PT0gdW5kZWZpbmVkID8gY29udGVudFRleHQgOiA8Q29udGVudCB7Li4uY29udGVudFByb3BzfSAvPiA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7Y29udGVudFxuICAgICAgICA/IGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgIDxGbG9hdGluZ1N0eWxlZFRvb2x0aXBDb250YWluZXIgey4uLnsgY29udGVudCwgcG9zaXRpb24sIG9uVG9vbHRpcFNob3duLCByZWZlcmVuY2UgfX0gLz4sXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgICAgIClcbiAgICAgICAgOiBudWxsfVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvb2x0aXBQbHVnaW48VCBleHRlbmRzIEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxUb29sdGlwUGx1Z2luUHJvcHMsIFtIb3ZlcmFibGVQbHVnaW48VD4sIFJlZlBsdWdpbjxUPl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJHRvb2x0aXAgfSA9IHByb3BzIGFzIHR5cGVvZiBwcm9wcyAmIHsgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfTtcblxuICAgIGlmICgkdG9vbHRpcCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAkdG9vbHRpcDogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBjb250ZW50VGV4dCxcbiAgICAgIENvbnRlbnQsXG4gICAgICBjb250ZW50UHJvcHMsXG4gICAgICBwb3NpdGlvbiA9IFwiYm90dG9tXCIsXG4gICAgICBvblRvb2x0aXBTaG93biA9IG5vb3AsXG4gICAgfTogJFRvb2x0aXBQcm9wczxhbnk+ID0gdHlwZW9mICR0b29sdGlwID09PSBcInN0cmluZ1wiID8geyBjb250ZW50VGV4dDogJHRvb2x0aXAgfSA6ICR0b29sdGlwO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICR0b29sdGlwOiB1bmRlZmluZWQsXG4gICAgICAkd3JhcHBlcjoge1xuICAgICAgICBDb21wb25lbnQ6IFRvb2x0aXBXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIHRvb2x0aXA6IHsgY29udGVudFRleHQsIENvbnRlbnQsIGNvbnRlbnRQcm9wcywgcG9zaXRpb24sIG9uVG9vbHRpcFNob3duIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IHRvb2x0aXBEZWxheUluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcInRvb2x0aXAtZGVsYXlcIixcbiAgaW5zdGFudGlhdGU6ICgpID0+ICgpOiBudW1iZXIgfCB1bmRlZmluZWQgPT4gNTAwLFxufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwidG9vbHRpcFwiOiBcInRvb2x0aXAtbW9kdWxlX190b29sdGlwX19fdmFPQXVcIlxufTsiLCAiaW1wb3J0IHsgZ2V0RWxlbWVudENvbXBvbmVudCB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgb2JzZXJ2ZXIgfSBmcm9tIFwibW9ieC1yZWFjdFwiO1xuaW1wb3J0IHsgYWJzb2x1dGVQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuaW1wb3J0IHsgcGFkZGluZ1BsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuaW1wb3J0IHsgYmFja2dyb3VuZENvbG9yUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgeyBib3JkZXJQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5pbXBvcnQgeyBmb250UGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvZm9udC9mb250XCI7XG5pbXBvcnQgeyBib3hTaGFkb3dQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9ib3gtc2hhZG93L2JveC1zaGFkb3dcIjtcbmltcG9ydCB7IG5vUG9pbnRlckV2ZW50c1BsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzXCI7XG5pbXBvcnQgeyByZWZQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9yZWYvcmVmXCI7XG5pbXBvcnQgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IHJlbGF0aXZlUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmVcIjtcbmltcG9ydCB7IGhvdmVyYWJsZVBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGVcIjtcblxuY29uc3QgcGx1Z2lucyA9IFtcbiAgcGFkZGluZ1BsdWdpbixcbiAgYm94U2hhZG93UGx1Z2luLFxuICBib3JkZXJQbHVnaW4sXG4gIGZvbnRQbHVnaW4sXG4gIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgbm9Qb2ludGVyRXZlbnRzUGx1Z2luLFxuICByZWxhdGl2ZVBsdWdpbixcbiAgYWJzb2x1dGVQbHVnaW4sXG4gIGNsYXNzTmFtZVBsdWdpbixcbl07XG5cbmNvbnN0IGdldFR5cGVkUGx1Z2lucyA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KCkgPT4gW2hvdmVyYWJsZVBsdWdpbjxUPigpLCByZWZQbHVnaW48VD4oKV07XG5cbmV4cG9ydCBjb25zdCBNaW5pbWFsRGl2ID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImRpdlwiLCAuLi5wbHVnaW5zLCAuLi5nZXRUeXBlZFBsdWdpbnM8SFRNTERpdkVsZW1lbnQ+KCkpKTtcblxuZXhwb3J0IHR5cGUgTWluaW1hbERpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIE1pbmltYWxEaXY+O1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgYWJzb2x1dGVTdHlsZXMgZnJvbSBcIi4vYWJzb2x1dGUubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgQWJzb2x1dGVQb3NpdGlvbiA9XG4gIHwgXCJhYnNvbHV0ZS1jZW50ZXItbGVmdC10by1yZWxhdGl2ZS1jZW50ZXItcmlnaHRcIlxuICB8IFwiYWJzb2x1dGUtYm90dG9tLWxlZnQtdG8tcmVsYXRpdmUtdG9wLWxlZnRcIlxuICB8IFwiYWJzb2x1dGUtYm90dG9tLXRvLXJlbGF0aXZlLWJvdHRvbVwiXG4gIHwgXCJhYnNvbHV0ZS10b3AtY2VudGVyLXRvLXJlbGF0aXZlLXRvcC1jZW50ZXJcIjtcblxuZXhwb3J0IHR5cGUgQWJzb2x1dGVQbHVnaW5Qcm9wcyA9IHsgJGFic29sdXRlPzogQWJzb2x1dGVQb3NpdGlvbiB8IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGFic29sdXRlUGx1Z2luID0gZ2V0UGx1Z2luPEFic29sdXRlUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbXG4gICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICB7XG4gICAgICBbYWJzb2x1dGVTdHlsZXMuYWJzb2x1dGVdOiAhIXByb3BzLiRhYnNvbHV0ZSxcblxuICAgICAgW2Fic29sdXRlU3R5bGVzW2BhYnNvbHV0ZS0tJHtwcm9wcy4kYWJzb2x1dGV9YF1dOiB0eXBlb2YgcHJvcHMuJGFic29sdXRlID09PSBcInN0cmluZ1wiLFxuICAgIH0sXG4gIF0sXG5cbiAgJGFic29sdXRlOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvYWJzb2x1dGUvYWJzb2x1dGUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJhYnNvbHV0ZVwiOiBcImFic29sdXRlLW1vZHVsZV9fYWJzb2x1dGVfX19NWC0tWVwiLFxuICBcImFic29sdXRlLS1hYnNvbHV0ZS1jZW50ZXItbGVmdC10by1yZWxhdGl2ZS1jZW50ZXItcmlnaHRcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1jZW50ZXItbGVmdC10by1yZWxhdGl2ZS1jZW50ZXItcmlnaHRfX19sSjBwclwiLFxuICBcImFic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tbGVmdC10by1yZWxhdGl2ZS10b3AtbGVmdFwiOiBcImFic29sdXRlLW1vZHVsZV9fYWJzb2x1dGUtLWFic29sdXRlLWJvdHRvbS1sZWZ0LXRvLXJlbGF0aXZlLXRvcC1sZWZ0X19fM2cwc0RcIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWNlbnRlci10by1yZWxhdGl2ZS1ib3R0b20tcmlnaHRcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1jZW50ZXItY2VudGVyLXRvLXJlbGF0aXZlLWJvdHRvbS1yaWdodF9fX2dnbU84XCIsXG4gIFwiYWJzb2x1dGUtLWFic29sdXRlLWJvdHRvbS10by1yZWxhdGl2ZS1ib3R0b21cIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tdG8tcmVsYXRpdmUtYm90dG9tX19fQ2xtMG1cIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtdG9wLWNlbnRlci10by1yZWxhdGl2ZS10b3AtY2VudGVyXCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtdG9wLWNlbnRlci10by1yZWxhdGl2ZS10b3AtY2VudGVyX19fRXRreTVcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBwYWRkaW5nU3R5bGVzIGZyb20gXCIuL3BhZGRpbmcubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgRGlyZWN0aW9uYWxQYWRkaW5nID0ge1xuICB0b3A/OiBUU2hpcnRTaXplO1xuICBib3R0b20/OiBUU2hpcnRTaXplO1xuICBsZWZ0PzogVFNoaXJ0U2l6ZTtcbiAgcmlnaHQ/OiBUU2hpcnRTaXplO1xuICBob3Jpem9udGFsPzogVFNoaXJ0U2l6ZTtcbiAgdmVydGljYWw/OiBUU2hpcnRTaXplO1xufTtcblxuZXhwb3J0IHR5cGUgUGFkZGluZ1BsdWdpblByb3BzID0geyAkcGFkZGluZz86IGJvb2xlYW4gfCBEaXJlY3Rpb25hbFBhZGRpbmcgfCBUU2hpcnRTaXplIH07XG5cbmV4cG9ydCBjb25zdCBwYWRkaW5nUGx1Z2luID0gZ2V0UGx1Z2luPFBhZGRpbmdQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kcGFkZGluZykge1xuICAgIHJldHVybiB7ICRwYWRkaW5nOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHBhZGRpbmcgPSBwcm9wcy4kcGFkZGluZyA9PT0gdHJ1ZSA/IFwieHNcIiA6IHByb3BzLiRwYWRkaW5nO1xuXG4gIGlmIChpc1N0cmluZyhwYWRkaW5nKSkge1xuICAgIHJldHVybiB7XG4gICAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcGFkZGluZ1N0eWxlc1tgcGFkZGluZy0tJHtwYWRkaW5nfWBdXSxcbiAgICAgICRwYWRkaW5nOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHRvcFNpemUgPSBwYWRkaW5nLnRvcCB8fCBwYWRkaW5nLnZlcnRpY2FsO1xuICBjb25zdCBib3R0b21TaXplID0gcGFkZGluZy5ib3R0b20gfHwgcGFkZGluZy52ZXJ0aWNhbDtcbiAgY29uc3QgcmlnaHRTaXplID0gcGFkZGluZy5yaWdodCB8fCBwYWRkaW5nLmhvcml6b250YWw7XG4gIGNvbnN0IGxlZnRTaXplID0gcGFkZGluZy5sZWZ0IHx8IHBhZGRpbmcuaG9yaXpvbnRhbDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG5cbiAgICAgIHtcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX3RvcC0tJHt0b3BTaXplfWBdXTogdG9wU2l6ZSxcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX3JpZ2h0LS0ke3JpZ2h0U2l6ZX1gXV06IHJpZ2h0U2l6ZSxcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX2JvdHRvbS0tJHtib3R0b21TaXplfWBdXTogYm90dG9tU2l6ZSxcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX2xlZnQtLSR7bGVmdFNpemV9YF1dOiBsZWZ0U2l6ZSxcbiAgICAgIH0sXG4gICAgXSxcblxuICAgICRwYWRkaW5nOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJwYWRkaW5nX190b3AtLXplcm9cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS16ZXJvX19fZ3FxZlpcIixcbiAgXCJwYWRkaW5nX190b3AtLTR4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTR4c19fX1kteTlzXCIsXG4gIFwicGFkZGluZ19fdG9wLS0zeHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS0zeHNfX19vY2M0TlwiLFxuICBcInBhZGRpbmdfX3RvcC0teHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teHhzX19fTjdCc2xcIixcbiAgXCJwYWRkaW5nX190b3AtLXhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teHNfX19MMFVERFwiLFxuICBcInBhZGRpbmdfX3RvcC0tc1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLXNfX19rbFFlMlwiLFxuICBcInBhZGRpbmdfX3RvcC0tbVwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLW1fX19jdGE1dFwiLFxuICBcInBhZGRpbmdfX3RvcC0tbFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLWxfX19MZy1wcVwiLFxuICBcInBhZGRpbmdfX3RvcC0teGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS14bF9fX1h2c3ZMXCIsXG4gIFwicGFkZGluZ19fdG9wLS14eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS14eGxfX18xa2VvZVwiLFxuICBcInBhZGRpbmdfX3RvcC0tM3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tM3hsX19fY1VQczlcIixcbiAgXCJwYWRkaW5nX190b3AtLTR4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTR4bF9fX3FpazJlXCIsXG4gIFwicGFkZGluZ19fdG9wLS01eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS01eGxfX19zOWtwUVwiLFxuICBcInBhZGRpbmdfX3RvcC0tNnhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tNnhsX19fcWMzRlpcIixcbiAgXCJwYWRkaW5nX190b3AtLTd4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTd4bF9fX3RhQy1QXCIsXG4gIFwicGFkZGluZ19fdG9wLS04eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS04eGxfX19MV2hqcVwiLFxuICBcInBhZGRpbmdfX3RvcC0tOXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tOXhsX19fTDEzY3BcIixcbiAgXCJwYWRkaW5nX190b3AtLTEweGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS0xMHhsX19fSWRlOUNcIixcbiAgXCJwYWRkaW5nX190b3AtLTExeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS0xMXhsX19fSHR0U2NcIixcbiAgXCJwYWRkaW5nX19yaWdodC0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0temVyb19fXzZ2WWJUXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTR4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tNHhzX19faGpPOERcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS0zeHNfX19NWFI3R1wiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXh4c19fX0ZuM09oXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS14c19fX2twc1FQXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXNfX183ZUJEVlwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS1tX19feEdkdHVcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tbFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tbF9fX015eWM0XCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS14bF9fXy1HR2pKXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0teHhsX19fMHlORVpcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tM3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS0zeGxfX19iYk9QQ1wiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTR4bF9fX3ZBWkVVXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tNXhsX19fcHNOaGJcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tNnhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS02eGxfX19Kd3drUlwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTd4bF9fX2dvbXc5XCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tOHhsX19fVmh2VlpcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tOXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS05eGxfX180T0JOblwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS0xMHhsX19fZU9VQTNcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tMTF4bF9fX0k3OTJnXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS16ZXJvXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0temVyb19fX0ZTOTg0XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS00eHNfX193aGkxeFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tM3hzX19fZTVya1lcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXh4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXh4c19fX3hRdlZ2XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXhzX19fb2N5aTBcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS1zX19fNkliblZcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLW1cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS1tX19fZ3hCMk1cIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS1sX19fY2JNbzdcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0teGxfX190TEFvelwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0teHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0teHhsX19fZzM1Qi1cIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTN4bF9fX0F6OGtpXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS00eGxfX19rYlMtUlwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tNXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tNXhsX19fd2psT29cIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTZ4bF9fX0lEeFJMXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS03eGxfX19IcUZtaVwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tOHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tOHhsX19fdUxOZUJcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTl4bF9fX2tYamYtXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tMTB4bF9fX1NKQ0J4XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS0xMXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tMTF4bF9fX0xSLW1zXCIsXG4gIFwicGFkZGluZ19fbGVmdC0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS16ZXJvX19fT0NUY1lcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNHhzX19fMDg5MDhcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS0zeHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tM3hzX19fZmVDMC1cIixcbiAgXCJwYWRkaW5nX19sZWZ0LS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teHhzX19feE5iMkpcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS14c19fX2RCYzZYXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tc1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS1zX19fa3NpZ3JcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLW1fX19sYm1SbFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tbF9fX2tHZ3huXCIsXG4gIFwicGFkZGluZ19fbGVmdC0teGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teGxfX19ROXBOSVwiLFxuICBcInBhZGRpbmdfX2xlZnQtLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS14eGxfX19rWDBhY1wiLFxuICBcInBhZGRpbmdfX2xlZnQtLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS0zeGxfX18zVW42YlwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTR4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS00eGxfX196bk8zblwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS01eGxfX19SVEhzUFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS02eGxfX19oNUJFQVwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTd4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS03eGxfX19yVFpmaFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS04eGxfX19uZE11OVwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS05eGxfX19iMEdBMFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTEweGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tMTB4bF9fX1B3RFNWXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS0xMXhsX19fMkhzdkpcIixcbiAgXCJwYWRkaW5nLS16ZXJvXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXplcm9fX19od21mcFwiLFxuICBcInBhZGRpbmctLTR4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS00eHNfX19RT1VLQlwiLFxuICBcInBhZGRpbmctLTN4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0zeHNfX19SczRJdVwiLFxuICBcInBhZGRpbmctLXh4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14eHNfX19NSWRDSlwiLFxuICBcInBhZGRpbmctLXhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXhzX19fUXdoYUJcIixcbiAgXCJwYWRkaW5nLS1zXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXNfX19CTEhlLVwiLFxuICBcInBhZGRpbmctLW1cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tbV9fX1BkdFphXCIsXG4gIFwicGFkZGluZy0tbFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS1sX19fUlZETGtcIixcbiAgXCJwYWRkaW5nLS14bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14bF9fX2N1UGFOXCIsXG4gIFwicGFkZGluZy0teHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXh4bF9fX0g3VklIXCIsXG4gIFwicGFkZGluZy0tM3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTN4bF9fX2t2aXJUXCIsXG4gIFwicGFkZGluZy0tNHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTR4bF9fX3kxN0EwXCIsXG4gIFwicGFkZGluZy0tNXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTV4bF9fXzl5bUk5XCIsXG4gIFwicGFkZGluZy0tNnhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTZ4bF9fXzJLQ21hXCIsXG4gIFwicGFkZGluZy0tN3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTd4bF9fX1NzSXhuXCIsXG4gIFwicGFkZGluZy0tOHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTh4bF9fX3NIWnBtXCIsXG4gIFwicGFkZGluZy0tOXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTl4bF9fX29WY0lnXCIsXG4gIFwicGFkZGluZy0tMTB4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0xMHhsX19faktHa25cIixcbiAgXCJwYWRkaW5nLS0xMXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTExeGxfX19BZ0pyR1wiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGJhY2tncm91bmRDb2xvclN0eWxlcyBmcm9tIFwiLi9iYWNrZ3JvdW5kLWNvbG9yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5cbmV4cG9ydCB0eXBlIEJhY2tncm91bmRDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuZXhwb3J0IHR5cGUgQmFja2dyb3VuZENvbG9yID0gQ29sb3IgfCBCYWNrZ3JvdW5kQ29sb3JBbGlhcztcblxuZXhwb3J0IHR5cGUgJEJhY2tncm91bmRDb2xvclByb3BzID0ge1xuICBub3JtYWw/OiBCYWNrZ3JvdW5kQ29sb3I7XG4gIGhvdmVyPzogQmFja2dyb3VuZENvbG9yO1xufTtcblxuZXhwb3J0IHR5cGUgQmFja2dyb3VuZENvbG9yUGx1Z2luUHJvcHMgPSB7ICRiYWNrZ3JvdW5kQ29sb3I/OiBCYWNrZ3JvdW5kQ29sb3IgfCAkQmFja2dyb3VuZENvbG9yUHJvcHMgfTtcblxuY29uc3QgYWxpYXNUb05vbWluYWwgPSB7XG4gIGJhY2tncm91bmRQcmltYXJ5OiBcImdyZXk4MFwiLFxuICBiYWNrZ3JvdW5kU2Vjb25kYXJ5OiBcImdyZXkxMDBcIixcbiAgYmFja2dyb3VuZFByaW1hcnlEaW1tZWQ6IFwiZ3JleTgwQWxwaGE4NVwiLFxufSBhcyBjb25zdDtcblxuY29uc3QgaXNCYWNrZ3JvdW5kQ29sb3JBbGlhcyA9IChjb2xvcjogQmFja2dyb3VuZENvbG9yKTogY29sb3IgaXMgQmFja2dyb3VuZENvbG9yQWxpYXMgPT4gY29sb3IgaW4gYWxpYXNUb05vbWluYWw7XG5cbmV4cG9ydCBjb25zdCBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4gPSBnZXRQbHVnaW48QmFja2dyb3VuZENvbG9yUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGJhY2tncm91bmRDb2xvcjogY29sb3IgfSA9IHByb3BzO1xuICBjb25zdCB7IG5vcm1hbCwgaG92ZXIgfSA9IHR5cGVvZiBjb2xvciA9PT0gXCJzdHJpbmdcIiA/IHsgbm9ybWFsOiBjb2xvciB9IDogKGNvbG9yID8/IHt9KTtcblxuICBjb25zdCBub3JtYWxDb2xvciA9IG5vcm1hbCA/IChpc0JhY2tncm91bmRDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaG92ZXJDb2xvciA9IGhvdmVyID8gKGlzQmFja2dyb3VuZENvbG9yQWxpYXMoaG92ZXIpID8gYWxpYXNUb05vbWluYWxbaG92ZXJdIDogaG92ZXIpIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIG5vcm1hbENvbG9yID8gYmFja2dyb3VuZENvbG9yU3R5bGVzW2BiYWNrZ3JvdW5kQ29sb3ItLSR7bm9ybWFsQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBob3ZlckNvbG9yID8gYmFja2dyb3VuZENvbG9yU3R5bGVzW2BiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLSR7aG92ZXJDb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgICBdLFxuICAgICRiYWNrZ3JvdW5kQ29sb3I6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImJhY2tncm91bmRDb2xvci0taW5oZXJpdFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWluaGVyaXRfX19OLUR0WVwiLFxuICBcImJhY2tncm91bmRDb2xvci0td2hpdGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS13aGl0ZV9fXzE4Znh1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS10cmFuc3BhcmVudFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXRyYW5zcGFyZW50X19fVmR0LVlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkxMDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MTAwX19fUFJ6VXRcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MF9fX2FieXR1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5NjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5NjBfX19QUEFTbFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTQwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTQwX19fd0ZCYWxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkzMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXkzMF9fXy0tOE1UXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MjVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MjVfX19ZRThRZlwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTIwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTIwX19fNjAwalFcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkxMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXkxMF9fX0lTc2M5XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5NzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5NzBfX19WLVpHTFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MEFscGhhODVfX183b1RYM1wiLFxuICBcImJhY2tncm91bmRDb2xvci0tcHJpbWFyeVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXByaW1hcnlfX19PSG5yTFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tc3VjY2Vzc1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXN1Y2Nlc3NfX19XVVIzeVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tbm90aWNlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tbm90aWNlX19fbFZOUmRcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXdhcm5pbmdcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS13YXJuaW5nX19fQXJWdmxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tY3JpdGljYWxfX19wLVdiOVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1zdWNjZXNzVGludF9fXzJVUDNZXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS13YXJuaW5nVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXdhcm5pbmdUaW50X19fcXdGMDhcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsVGludF9fX2lLLWpsXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1saW5rXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tbGlua19fX2o0Umo3XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1jb2RlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tY29kZV9fX0VtLWJKXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1pbmhlcml0XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0taW5oZXJpdF9fX215MlJxXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS13aGl0ZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdoaXRlX19fdGUtZ3BcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXRyYW5zcGFyZW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tdHJhbnNwYXJlbnRfX18xRDJJalwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTEwMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMDBfX18tSkh1MlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwX19fei04NUlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk2MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk2MF9fX2hVYlkzXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NDBfX18zQS1lNlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTMwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTMwX19fNy1DRmpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkyNVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkyNV9fX21JVDhRXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjBfX19vTUFjRFwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTEwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTEwX19fZ1IxOTNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk3MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk3MF9fX2sySktNXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5ODBBbHBoYTg1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NV9fX0Nkay0tXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1wcmltYXJ5XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tcHJpbWFyeV9fX3p0Z3pBXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tc3VjY2Vzc19fX0czMFZIXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ub3RpY2VcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ub3RpY2VfX19qV0ZjQ1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0td2FybmluZ1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdfX192bi1CS1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jcml0aWNhbF9fX3I2YlpJXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXN1Y2Nlc3NUaW50X19fODhMRGpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0td2FybmluZ1RpbnRfX19YaTYyRlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxUaW50X19fVjBxMm9cIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWxpbmtcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1saW5rX19fWDlMRnFcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNvZGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jb2RlX19fbEhDSWdcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlcldpZHRoIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQ29ybmVyU3R5bGVzLCBnZXRDb3JuZXJTdHlsZXMgfSBmcm9tIFwiLi9nZXQtY29ybmVyLXN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0U2lkZVN0eWxlcywgdHlwZSBTaWRlU3R5bGVzIH0gZnJvbSBcIi4vZ2V0LXNpZGUtc3R5bGVzXCI7XG5pbXBvcnQgeyBjb21wYWN0IH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuXG5leHBvcnQgdHlwZSBCb3JkZXJDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuZXhwb3J0IHR5cGUgQm9yZGVyQ29sb3IgPSBDb2xvciB8IEJvcmRlckNvbG9yQWxpYXM7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0geyBib3JkZXJQcmltYXJ5OiBcImdyZXk2MFwiIH0gYXMgY29uc3Q7XG5cbmNvbnN0IGlzQm9yZGVyQ29sb3JBbGlhcyA9IChjb2xvcjogQm9yZGVyQ29sb3IpOiBjb2xvciBpcyBCb3JkZXJDb2xvckFsaWFzID0+IGNvbG9yIGluIGFsaWFzVG9Ob21pbmFsO1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGhvdmVyPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogQm9yZGVyQ29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyUHJvcHMgPSB7XG4gIGNvbG9yPzogQm9yZGVyQ29sb3IgfCAkQm9yZGVyQ29sb3JQcm9wcztcbiAgd2lkdGg/OiBCb3JkZXJXaWR0aCB8IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMZWF2ZSB0aGUgbGFzdCBvZiB0aGUgZWxlbWVudCdzIHNpYmxpbmdzIHdpdGhvdXQgdGhlIGJvcmRlciwgc28gdGhhdCBhIHN0YWNrXG4gICAqIG9mIGJvcmRlcmVkIHJvd3MgcmVhZHMgYXMgcm93cyBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIHJhdGhlciB0aGFuIGZyYW1lZC5cbiAgICovXG4gIGV4Y2VwdExhc3Q/OiBib29sZWFuO1xufSAmIFNpZGVTdHlsZXMgJlxuICBDb3JuZXJTdHlsZXM7XG5cbmV4cG9ydCB0eXBlIEJvcmRlclBsdWdpblByb3BzID0geyAkYm9yZGVyPzogJEJvcmRlclByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBib3JkZXJQbHVnaW4gPSBnZXRQbHVnaW48Qm9yZGVyUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGJvcmRlcikge1xuICAgIHJldHVybiB7ICRib3JkZXI6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Q29ybmVyU3R5bGVzKHByb3BzLiRib3JkZXIpLCBnZXRCb3JkZXJTdHlsZXMocHJvcHMuJGJvcmRlcildLFxuICAgICRib3JkZXI6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRCb3JkZXJTdHlsZXMgPSAoeyB3aWR0aCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wLCBjb2xvciwgZXhjZXB0TGFzdCB9OiAkQm9yZGVyUHJvcHMpID0+IHtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSB3aWR0aCA9PT0gdHJ1ZSB8fCAod2lkdGggPT09IHVuZGVmaW5lZCAmJiBjb2xvcikgPyBcInh4c1wiIDogd2lkdGg7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZGlzYWJsZWQgfSA9XG4gICAgYm9yZGVyV2lkdGggJiYgY29sb3IgPT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5vcm1hbDogXCJib3JkZXJQcmltYXJ5XCIgYXMgY29uc3QgfVxuICAgICAgOiB0eXBlb2YgY29sb3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyB7IG5vcm1hbDogY29sb3IgfVxuICAgICAgICA6IChjb2xvciA/PyB7fSk7XG5cbiAgY29uc3Qgbm9ybWFsQ29sb3IgPSBub3JtYWwgJiYgaXNCb3JkZXJDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsO1xuICBjb25zdCBob3ZlckNvbG9yID0gaG92ZXIgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGhvdmVyKSA/IGFsaWFzVG9Ob21pbmFsW2hvdmVyXSA6IGhvdmVyO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGRpc2FibGVkKSA/IGFsaWFzVG9Ob21pbmFsW2Rpc2FibGVkXSA6IGRpc2FibGVkO1xuXG4gIGNvbnN0IHN0eWxlQ2xhc3NlcyA9IGNvbXBhY3QoW1xuICAgIGJvcmRlcldpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX3dpZHRoLS0ke2JvcmRlcldpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgIG5vcm1hbENvbG9yID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX2NvbG9yLS0ke25vcm1hbENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIGhvdmVyQ29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fY29sb3ItLSR7aG92ZXJDb2xvcn0tLWhvdmVyYF0gOiB1bmRlZmluZWQsXG4gICAgZGlzYWJsZWRDb2xvciA/IGJvcmRlclN0eWxlc1tgYm9yZGVyX19jb2xvci0tJHtkaXNhYmxlZENvbG9yfS0tZGlzYWJsZWRgXSA6IHVuZGVmaW5lZCxcbiAgICAuLi5nZXRTaWRlU3R5bGVzKHsgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wIH0pLFxuICAgIGV4Y2VwdExhc3QgPyBib3JkZXJTdHlsZXNbXCJib3JkZXItLWV4Y2VwdC1sYXN0XCJdIDogdW5kZWZpbmVkLFxuICBdKTtcblxuICByZXR1cm4gW3N0eWxlQ2xhc3Nlcywgc3R5bGVDbGFzc2VzLmxlbmd0aCA+IDAgJiYgYm9yZGVyU3R5bGVzW1wiYm9yZGVyX19zdHlsZS0tc29saWRcIl1dO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYm9yZGVyX19zdHlsZS0tc29saWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3N0eWxlLS1zb2xpZF9fXzFReTFKXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0temVyb19fXy1rN1VDXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tc19fX3ZsbXVsXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tbV9fX0VvSHZqXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLW1sX19fa3NLUGVcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fcmFkaXVzLS1sX19fLTU0bnhcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tNTBfX19FYzVjY1wiLFxuICBcImJvcmRlcl9fcmFkaXVzLS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLWZ1bGxfX19mME9rTFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS16ZXJvX19fdUxjTzJcIixcbiAgXCJib3JkZXJfX3dpZHRoLS14eHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS14eHNfX19KMHRaOVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teHNfX19VUmNrSVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS1zX19feDlOVWpcIixcbiAgXCJib3JkZXJfX3dpZHRoLS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tbV9fX0NGOENFXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLWxfX19Zb0I2NVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teGxfX19CQ0xsTlwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXh4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLXh4bF9fXy1kcmdQXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tM3hsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tM3hsX19fZHFtaUZcIixcbiAgXCJib3JkZXJfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS00eGxfX19iRUw5MFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLTV4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLTV4bF9fX3pqMVZYXCIsXG4gIFwiYm9yZGVyX19jb2xvci0taW5oZXJpdFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWluaGVyaXRfX19FMk1Tc1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0taG92ZXJfX19XeW5CUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0tZGlzYWJsZWRfX19xLXRzRVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGVfX19nVDJvZ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3Zlcl9fX1FkcFZiXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkX19faXlUWEtcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50X19fc3dhbUhcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJfX19qVVotelwiLFxuICBcImJvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZF9fX3NpRHJ5XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMDBfX192NWw4M1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0taG92ZXJfX19KMS1PUVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0tZGlzYWJsZWRfX19RaktSUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MF9fX2txNWFUXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MC0taG92ZXJfX19DcHBsVlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5ODAtLWRpc2FibGVkX19fLThQS2xcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjBfX19QOUpNSFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk2MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWhvdmVyX19fQVppY0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTYwLS1kaXNhYmxlZF9fX2djVmREXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwX19fZjZTRHdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwLS1ob3Zlcl9fX1VIZElyXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk0MC0tZGlzYWJsZWRfX180ZURrQ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMF9fX2ZxYnR1XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTMwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMC0taG92ZXJfX19WTkRTUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MzAtLWRpc2FibGVkX19fcHlKT3FcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjVfX19zblZuZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkyNS0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWhvdmVyX19fbmRyZllcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTI1LS1kaXNhYmxlZF9fX29tUEpQXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwX19fZ2JuM1pcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwLS1ob3Zlcl9fX3hSc3djXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkyMC0tZGlzYWJsZWRfX19TVmVBVFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMF9fX1pVNUdhXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMC0taG92ZXJfX19VWmgtZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MTAtLWRpc2FibGVkX19fOVotT1RcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzBfX195cjlpTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk3MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWhvdmVyX19fbDlZVGRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTcwLS1kaXNhYmxlZF9fX1N3UlFpXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODVfX182RGJkU1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0taG92ZXJfX194U2t3QVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0tZGlzYWJsZWRfX195UDRPLVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1wcmltYXJ5X19fZ2Z4Qk9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWhvdmVyX19fcHVIRHBcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWRpc2FibGVkX19fSDVGc0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc19fX1p1cmxTXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1ob3Zlcl9fX1d5LTJNXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1kaXNhYmxlZF9fX1RQM1J2XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlX19fWndRdlRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ub3RpY2UtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlLS1ob3Zlcl9fX01KUVVoXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLW5vdGljZS0tZGlzYWJsZWRfX195VnVpMlwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS13YXJuaW5nX19fTEs2QXpcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWhvdmVyX19fbUFvU0JcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWRpc2FibGVkX19fV2NBSy1cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsX19fR1RZejFcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJfX191TUZqYVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZF9fX0s5Z2w3XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludF9fX1BTUk1uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyX19fVWZKUGdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRfX19Xa09wQVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnRfX19JVFdtTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3Zlcl9fX0pjLU5uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkX19fdXF6Qm9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRfX19PUXV4dFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsVGludC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWhvdmVyX19fbFdhOURcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tY3JpdGljYWxUaW50LS1kaXNhYmxlZF9fX2xZaGg0XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWxpbmtfX19pWWVGa1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0taG92ZXJfX180eVJKUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0tZGlzYWJsZWRfX18wazlkQlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jb2RlX19fOE9zRmlcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWhvdmVyX19fWjVzNWRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWRpc2FibGVkX19fdURRWk1cIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS16ZXJvXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0temVyb19fX1ZLUnEtXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0teHhzX19fOHppN1RcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhzX19fUk5FSzJcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tc19fX2FWbjFXXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLW1fX19CNjE0alwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS1sX19fLW9lUFBcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhsX19fWkpjNklcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS14eGxfX19NbnJIelwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLTN4bF9fXzV4Sy0tXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tNHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tNHhsX19fcEVEdGNcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS01eGxfX19NRnZmaFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1pbmhlcml0X19fQ3IxbmFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS13aGl0ZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdoaXRlX19fdS11UWJcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXRyYW5zcGFyZW50X19fUHNNbXhcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwMF9fX1djOXRMXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwX19fZUhqekZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBfX190U0F0ZVwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXk0MF9fX0hpcmdmXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwX19fQkJyQlFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVfX19VSFZaWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXkyMF9fXzFsdXBQXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwX19fRTJHZlRcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBfX19EYkMyR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fa0I5LXZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1wcmltYXJ5XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tcHJpbWFyeV9fXzUxMWprXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NfX183OS11alwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLW5vdGljZV9fXy1kT0QwXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdfX19UMzVrWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tY3JpdGljYWxfX19zLXF2a1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1RpbnRfX19QYTBOR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1RpbnRfX18yZVVRVFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludF9fX0hKQW8yXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWxpbmtfX19LWUZHS1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1jb2RlX19fdktPS3dcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXplcm9fX19ybERJblwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14eHNfX18tejc5YVwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXhzX19fd1pWaGpcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXNfX19NdFlUNlwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X193aWR0aC0tbV9fX1NEOTd3XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS1sX19fcVNJMEVcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14bF9fXzA1bjAwXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXh4bF9fXy1hRXd2XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTN4bF9fX0R1MFJvXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTR4bF9fXzJaQ1hrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTV4bF9fX1NwNDhrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0X19fOXlQZUlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13aGl0ZV9fX2hJT0JkXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tdHJhbnNwYXJlbnRfX19veElOSlwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMF9fX2FhU25hXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk4MF9fXzVQVDVqXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk2MF9fX29OVy1VXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk0MF9fXzJKd2k5XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkzMF9fX1Q2aHR4XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyNV9fX1FiRlVKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyMF9fX2VzTVFNXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkxMF9fX1owUXpmXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk3MF9fX3RrekFKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fajQ1VU5cIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlfX19ISWsyQVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc19fX1JJd2FIXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLW5vdGljZV9fX3ZVTGFUXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nX19fWTJpUGlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1jcml0aWNhbF9fX1htNnRRXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1RpbnRfX19tMW52WVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXdhcm5pbmdUaW50X19fbi1oeEZcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY3JpdGljYWxUaW50X19fNFZKTjhcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWxpbmtfX19IMnJlM1wiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY29kZV9fX1VDZE0wXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXplcm9fX19QbEFCTFwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXh4c19fX1pGbS1VXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14c19fX2hEelNzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXNfX19JV3QtdVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS1tX19fZjFyLXNcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tbF9fXzBIdmwxXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14bF9fX3NTUnRzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0teHhsX19fTnVCZ0ZcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxfX19HakxZVVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLTR4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLTR4bF9fX0J2SldQXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tNXhsX19fckNlREJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0taW5oZXJpdF9fXzczZHFWXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0td2hpdGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13aGl0ZV9fX0RabWo2XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS10cmFuc3BhcmVudF9fX3FrTmdGXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMDBfX19YMnY3eFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MF9fX3RuTWo1XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwX19fVU9XMG5cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBfX19jN3VjMFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMF9fX1k4NUM0XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1X19fa3YyTm1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBfX192Ty1tSlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMF9fX0ZhLWh5XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwX19faC1Da1ZcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2lyeG9IXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tcHJpbWFyeVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXByaW1hcnlfX19KLXI1SlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzX19fZnhadlJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VfX19JSUE1UlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nX19fbHNaRy1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWNyaXRpY2FsX19fQjdMNS1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fQXN2dGNcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdUaW50X19fNE9QZk9cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRfX194MlVMUVwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1saW5rX19fUjJYRHVcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jb2RlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tY29kZV9fX0VyOWhiXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0temVyb19fXzEtRk0tXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14eHNfX19vakFhcFwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14c19fX3oyWElGXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tc19fX0RxWGJjXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbV9fXzRqUHU1XCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbF9fX2xQYVJLXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXhsX19fTWMtLVJcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXh4bF9fX0tYT1JaXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS0zeGxfX180ZllJRVwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tNHhsX19fY2RVbFdcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLTV4bF9fXzdsOUgwXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0taW5oZXJpdF9fX3FkNGtEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlX19fLXJ6czdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRfX191VVVFeFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkxMDBfX19RRGJWMlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwX19fN2hWeThcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk2MF9fX3E5VHMyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5NDBfX195SXIwSlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTMwX19faXRVVXNcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyNV9fX3o5RWdEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5MjBfX19IcXJKblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTEwX19feXRaUE5cIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk3MF9fX0VveVZXXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwQWxwaGE4NV9fXzJHSVcyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tcHJpbWFyeV9fX0lOQzh5XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tc3VjY2Vzc19fXzEyS2l1XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ub3RpY2VfX19taEpBblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdhcm5pbmdfX191VjV0V1wiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbF9fX0E2SmlPXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50X19fZ09yWWpcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRfX19ON1VjVFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tY3JpdGljYWxUaW50X19fYS1mYUdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1saW5rX19fbXdSS3dcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jb2RlX19fdUpXRkhcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS16ZXJvX19fZGxzdFZcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1zX19fdm81ZWxcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1tX19fR0lFY3RcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxfX19tRWNEdlwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWxfX19yZy1EMFwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS01MF9fX1hsbEdzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tZnVsbF9fXzVaSXY4XCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0temVyb19fX084ZEUzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tc19fX254THRMXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbV9fX1NsNVJSXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sX19fQW9RMGJcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1sX19fNTJKb2xcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBfX183LXdPR1wiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLWZ1bGxfX19MQmFQNlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS16ZXJvX19fb1FCZG1cIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tc19fX3pGSUwzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1fX19LTlNjVFwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbWxfX192dDd4MlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1sX19fazhwaWtcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLTUwX19fZjJYVHVcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tZnVsbF9fX2VIajZzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLXplcm9fX19QMVl0d1wiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1zX19fSC1sWGVcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BMZWZ0LS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tbV9fXzNMUlIwXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1tbF9fX2lndjB3XCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLWxfX18zczJDSlwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLTUwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tNTBfX193Tll3UVwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1mdWxsX19fQ2Z6LVJcIixcbiAgXCJib3JkZXItLWV4Y2VwdC1sYXN0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyLS1leGNlcHQtbGFzdF9fXzIyWXNCXCJcbn07IiwgImltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlclJhZGl1c1NpemUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcm5lclN0eWxlcyB7XG4gIHJhZGl1cz86IEJvcmRlclJhZGl1c1NpemUgfCBib29sZWFuO1xuICByYWRpdXNUb3BSaWdodD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c0JvdHRvbVJpZ2h0PzogQm9yZGVyUmFkaXVzU2l6ZTtcbiAgcmFkaXVzQm90dG9tTGVmdD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c1RvcExlZnQ/OiBCb3JkZXJSYWRpdXNTaXplO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29ybmVyU3R5bGVzID0gKHN0eWxlczogQ29ybmVyU3R5bGVzKSA9PiB7XG4gIGNvbnN0IHsgcmFkaXVzLCByYWRpdXNUb3BSaWdodCwgcmFkaXVzQm90dG9tUmlnaHQsIHJhZGl1c0JvdHRvbUxlZnQsIHJhZGl1c1RvcExlZnQgfSA9IHN0eWxlcztcblxuICBpZiAocmFkaXVzKSB7XG4gICAgY29uc3QgYm9yZGVyUmFkaXVzU2l6ZSA9IHJhZGl1cyA9PT0gdHJ1ZSA/IFwic1wiIDogcmFkaXVzO1xuXG4gICAgcmV0dXJuIGJvcmRlclJhZGl1c1NpemUgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fcmFkaXVzLS0ke2JvcmRlclJhZGl1c1NpemV9YF0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHJhZGl1c1RvcFJpZ2h0ID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJSYWRpdXNUb3BSaWdodC0tJHtyYWRpdXNUb3BSaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICByYWRpdXNCb3R0b21SaWdodCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLSR7cmFkaXVzQm90dG9tUmlnaHR9YF0gOiB1bmRlZmluZWQsXG4gICAgcmFkaXVzQm90dG9tTGVmdCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tJHtyYWRpdXNCb3R0b21MZWZ0fWBdIDogdW5kZWZpbmVkLFxuICAgIHJhZGl1c1RvcExlZnQgPyBib3JkZXJTdHlsZXNbYGJvcmRlclJhZGl1c1RvcExlZnQtLSR7cmFkaXVzVG9wTGVmdH1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG4iLCAiaW1wb3J0IGJvcmRlclN0eWxlcyBmcm9tIFwiLi9ib3JkZXIubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgQm9yZGVyU2lkZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7IGNhcGl0YWxpemUgYXMgbG9kYXNoQ2FwaXRhbGl6ZSB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaWRlU3R5bGVzIHtcbiAgdG9wPzogQm9yZGVyU2lkZTtcbiAgcmlnaHQ/OiBCb3JkZXJTaWRlO1xuICBib3R0b20/OiBCb3JkZXJTaWRlO1xuICBsZWZ0PzogQm9yZGVyU2lkZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNpZGVTdHlsZXMgPSAoc2lkZXM6IFNpZGVTdHlsZXMpID0+IFtcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwidG9wXCIsIHNpZGVzKSxcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwicmlnaHRcIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJib3R0b21cIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJsZWZ0XCIsIHNpZGVzKSxcbl07XG5cbmNvbnN0IGdldFNwZWNpZmljU2lkZVN0eWxlcyA9IChzaWRlOiBrZXlvZiBTaWRlU3R5bGVzLCBzaWRlczogU2lkZVN0eWxlcykgPT4ge1xuICBjb25zdCB7IHdpZHRoLCBjb2xvciB9ID0gc2lkZXNbc2lkZV0gPz8ge307XG4gIGNvbnN0IHNpZGVOYW1lID0gY2FwaXRhbGl6ZShzaWRlKTtcblxuICByZXR1cm4gW1xuICAgIHdpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXIke3NpZGVOYW1lfV9fd2lkdGgtLSR7d2lkdGh9YF0gOiB1bmRlZmluZWQsXG4gICAgY29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlciR7c2lkZU5hbWV9X19jb2xvci0tJHtjb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG5cbmNvbnN0IGNhcGl0YWxpemUgPSA8VCBleHRlbmRzIHN0cmluZz4odGFyZ2V0OiBUKSA9PiBsb2Rhc2hDYXBpdGFsaXplKHRhcmdldCkgYXMgQ2FwaXRhbGl6ZTxUPjtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGZvbnRTdHlsZXMgZnJvbSBcIi4vZm9udC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBGb250U2l6ZSA9IFwieHhzXCIgfCBcInhzXCIgfCBcInNcIiB8IFwibVwiIHwgXCJsXCIgfCBcInhsXCIgfCBcInh4bFwiIHwgXCIzeGxcIiB8IFwiNHhsXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRCb2xkID0gXCI2MDBcIjtcblxuZXhwb3J0IHR5cGUgRm9udExpbmVIZWlnaHQgPSBcIm5vbmVcIiB8IFwidGlnaHRcIiB8IFwibm9ybWFsXCIgfCBcImxvb3NlXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRQbHVnaW5Qcm9wcyA9IHtcbiAgJGZvbnQ/OlxuICAgIHwgYm9vbGVhblxuICAgIHwge1xuICAgICAgICBzaXplPzogRm9udFNpemU7XG4gICAgICAgIGl0YWxpYz86IGJvb2xlYW47XG4gICAgICAgIGJvbGQ/OiBib29sZWFuIHwgRm9udEJvbGQ7XG4gICAgICAgIGxpbmVIZWlnaHQ/OiBGb250TGluZUhlaWdodDtcbiAgICAgICAgZm9yY2VXcmFwPzogYm9vbGVhbjtcbiAgICAgICAgbm9XcmFwPzogYm9vbGVhbjtcbiAgICAgICAgdXBwZXJjYXNlPzogYm9vbGVhbjtcbiAgICAgICAgdW5kZXJsaW5lPzogYm9vbGVhbjtcbiAgICAgICAgdGV4dE92ZXJmbG93PzogXCJjbGlwXCIgfCBcImVsbGlwc2lzXCIgfCBcImRlZmF1bHRcIjtcbiAgICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZm9udFBsdWdpbiA9IGdldFBsdWdpbjxGb250UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGZvbnQpIHtcbiAgICByZXR1cm4geyAkZm9udDogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB7XG4gICAgc2l6ZSA9IHVuZGVmaW5lZCxcbiAgICBib2xkID0gZmFsc2UsXG4gICAgbGluZUhlaWdodCA9IHVuZGVmaW5lZCxcbiAgICBub1dyYXAgPSBmYWxzZSxcbiAgICB1cHBlcmNhc2UgPSBmYWxzZSxcbiAgICBpdGFsaWMgPSBmYWxzZSxcbiAgICBmb3JjZVdyYXAgPSBmYWxzZSxcbiAgICB1bmRlcmxpbmUgPSBmYWxzZSxcbiAgICB0ZXh0T3ZlcmZsb3cgPSBcImRlZmF1bHRcIixcbiAgfSA9IHByb3BzLiRmb250ID09PSB0cnVlID8ge30gOiBwcm9wcy4kZm9udDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgICBzaXplID8gZm9udFN0eWxlc1tgZm9udF9fc2l6ZS0tJHtzaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgYm9sZCA9PT0gdHJ1ZSA/IGZvbnRTdHlsZXNbXCJmb250LS1ib2xkXCJdIDogYm9sZCA/IGZvbnRTdHlsZXNbYGZvbnQtLXdlaWdodC0ke2JvbGR9YF0gOiB1bmRlZmluZWQsXG4gICAgICBsaW5lSGVpZ2h0ID8gZm9udFN0eWxlc1tgZm9udF9fbGluZS1oZWlnaHQtLSR7bGluZUhlaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIHRleHRPdmVyZmxvdyA9PT0gXCJkZWZhdWx0XCIgPyB1bmRlZmluZWQgOiBmb250U3R5bGVzW2Bmb250LS10ZXh0LW92ZXJmbG93LS0ke3RleHRPdmVyZmxvd31gXSxcbiAgICAgIHtcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS1uby13cmFwXCJdXTogbm9XcmFwLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLWZvcmNlLXdyYXBcIl1dOiBmb3JjZVdyYXAsXG4gICAgICAgIFtmb250U3R5bGVzW1wiZm9udC0taXRhbGljXCJdXTogaXRhbGljLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLXVwcGVyY2FzZVwiXV06IHVwcGVyY2FzZSxcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS11bmRlcmxpbmVcIl1dOiB1bmRlcmxpbmUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgJGZvbnQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ZvbnQvZm9udC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZvbnRfX3NpemUtLXh4c1wiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14eHNfX19LSjJRLVwiLFxuICBcImZvbnRfX3NpemUtLXhzXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXhzX19feEVhVTlcIixcbiAgXCJmb250X19zaXplLS1zXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXNfX19UYm5NbFwiLFxuICBcImZvbnRfX3NpemUtLW1cIjogXCJmb250LW1vZHVsZV9fZm9udF9fc2l6ZS0tbV9fX2ZESkFqXCIsXG4gIFwiZm9udF9fc2l6ZS0tbFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS1sX19fdUtjdWtcIixcbiAgXCJmb250X19zaXplLS14bFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14bF9fX1JlaG9RXCIsXG4gIFwiZm9udF9fc2l6ZS0teHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXh4bF9fX0Nnb0tQXCIsXG4gIFwiZm9udF9fc2l6ZS0tM3hsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTN4bF9fX3NDSWV6XCIsXG4gIFwiZm9udF9fc2l6ZS0tNHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTR4bF9fX0E1a3NlXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLW5vbmVcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vbmVfX18xc0k5S1wiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS10aWdodFwiOiBcImZvbnQtbW9kdWxlX19mb250X19saW5lLWhlaWdodC0tdGlnaHRfX19yLUVCOVwiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS1ub3JtYWxcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vcm1hbF9fX3JKNFZOXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLWxvb3NlXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX2xpbmUtaGVpZ2h0LS1sb29zZV9fX2RwelMtXCIsXG4gIFwiZm9udC0tYm9sZFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1ib2xkX19fYmplLWJcIixcbiAgXCJmb250LS13ZWlnaHQtNjAwXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnQtLXdlaWdodC02MDBfX19FZ2R6bVwiLFxuICBcImZvbnQtLW5vLXdyYXBcIjogXCJmb250LW1vZHVsZV9fZm9udC0tbm8td3JhcF9fX3FiUlJPXCIsXG4gIFwiZm9udC0tZm9yY2Utd3JhcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1mb3JjZS13cmFwX19fT0dDRnpcIixcbiAgXCJmb250LS11cHBlcmNhc2VcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdXBwZXJjYXNlX19fdlFYbW5cIixcbiAgXCJmb250LS1pdGFsaWNcIjogXCJmb250LW1vZHVsZV9fZm9udC0taXRhbGljX19fSkg0VFpcIixcbiAgXCJmb250LS11bmRlcmxpbmVcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdW5kZXJsaW5lX19fZDRvbkxcIixcbiAgXCJmb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc1wiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc19fX0hxZlgtXCIsXG4gIFwiZm9udC0tdGV4dC1vdmVyZmxvdy0tY2xpcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1jbGlwX19fOTZ4QjlcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYm94LXNoYWRvdy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBCb3hTaGFkb3dQbHVnaW5Qcm9wcyA9IHtcbiAgJGJveFNoYWRvdz86IGJvb2xlYW4gfCBcImVsZXZhdGVkXCIgfCBcInN1YnRsZVwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGJveFNoYWRvd1BsdWdpbiA9IGdldFBsdWdpbjxCb3hTaGFkb3dQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kYm94U2hhZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRib3hTaGFkb3c6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdmFyaWFudCA9IHByb3BzLiRib3hTaGFkb3cgPT09IHRydWUgPyBcImVsZXZhdGVkXCIgOiBwcm9wcy4kYm94U2hhZG93O1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHN0eWxlc1tgYm94LXNoYWRvdy0tJHt2YXJpYW50fWBdXSxcbiAgICAkYm94U2hhZG93OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3gtc2hhZG93L2JveC1zaGFkb3cubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJib3gtc2hhZG93LS1lbGV2YXRlZFwiOiBcImJveC1zaGFkb3ctbW9kdWxlX19ib3gtc2hhZG93LS1lbGV2YXRlZF9fX2phaDdmXCIsXG4gIFwiYm94LXNoYWRvdy0tc3VidGxlXCI6IFwiYm94LXNoYWRvdy1tb2R1bGVfX2JveC1zaGFkb3ctLXN1YnRsZV9fX1ZvNnhNXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzID0geyAkbm9Qb2ludGVyRXZlbnRzPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3Qgbm9Qb2ludGVyRXZlbnRzUGx1Z2luID0gZ2V0UGx1Z2luPE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3N0eWxlc1tcIm5vLXBvaW50ZXItZXZlbnRzXCJdXTogcHJvcHMuJG5vUG9pbnRlckV2ZW50cyB9XSxcbiAgJG5vUG9pbnRlckV2ZW50czogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibm8tcG9pbnRlci1ldmVudHNcIjogXCJuby1wb2ludGVyLWV2ZW50cy1tb2R1bGVfX25vLXBvaW50ZXItZXZlbnRzX19fN21GMGJcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU2ltcGxpZmllZCB0eXBlIHNpbmNlIFJlZkNhbGxiYWNrIGZyb20gXCJyZWFjdFwiIGNhdXNlcyBVTkRFRklORURfVk9JRF9PTkxZIGVycm9yXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQ29uZnVzaW5nVm9pZFR5cGU6IHZvaWQgdHlwaW5nIHJlcXVpcmVkXG50eXBlIFJlZkNhbGxiYWNrPFQ+ID0gKGluc3RhbmNlOiBUIHwgbnVsbCkgPT4gdW5kZWZpbmVkIHwgdm9pZCB8ICgoKSA9PiBhbnkpO1xuXG5leHBvcnQgdHlwZSBSZWZMaWtlPFQ+ID0gUmVmQ2FsbGJhY2s8VD4gfCBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PFQgfCBudWxsPiB8IFJlYWN0LlJlZk9iamVjdDxUPiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgJFJlZlByb3A8VD4gPSBSZWZMaWtlPFQ+IHwgJFJlZlByb3A8VD5bXTtcblxuZXhwb3J0IHR5cGUgUmVmUGx1Z2luUHJvcHM8VD4gPSB7XG4gICRyZWY/OiAkUmVmUHJvcDxUPjtcbiAgcmVmPzogUmVmTGlrZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlZlBsdWdpbjxUPiA9IFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPiwgdW5rbm93bj47XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZQbHVnaW48VCA9IEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPj4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkcmVmIH0gPSBwcm9wcztcbiAgICBjb25zdCBwcmV2UmVmcyA9IHVzZVJlZihuZXcgU2V0PFJlZkxpa2U8VD4+KCkpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8VCB8IG51bGw+KG51bGwpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IFdlIGRvIG5vdCB3YW50IHRvIHJ1biB0aGlzIG11bHRpcGxlIHRpbWVzXG4gICAgY29uc3QgcmVmID0gdXNlQ2FsbGJhY2soKGN1cnJlbnQ6IFQpID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0UmVmcyA9IGZsYXR0ZW5SZWZzKCRyZWYpO1xuXG4gICAgICBmaXJzdFJlZnMuZm9yRWFjaChoYW5kbGVSZWZzRm9yKGN1cnJlbnQpKTtcbiAgICAgIHByZXZSZWZzLmN1cnJlbnQgPSBmaXJzdFJlZnM7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBjdXJyZW50O1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBwcmV2UmVmcy5jdXJyZW50LmZvckVhY2goaGFuZGxlUmVmc0ZvcjxUPihudWxsKSk7XG4gICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBmaXJzdFJlbmRlciA9IHVzZVJlZih0cnVlKTtcblxuICAgIGlmICghZmlyc3RSZW5kZXIuY3VycmVudCkge1xuICAgICAgY29uc3QgY3VycmVudFJlZnMgPSBmbGF0dGVuUmVmcygkcmVmKTtcbiAgICAgIGNvbnN0IGFkZGVkUmVmcyA9IGN1cnJlbnRSZWZzLmRpZmZlcmVuY2UocHJldlJlZnMuY3VycmVudCk7XG4gICAgICBjb25zdCByZW1vdmVkUmVmcyA9IHByZXZSZWZzLmN1cnJlbnQuZGlmZmVyZW5jZShjdXJyZW50UmVmcyk7XG5cbiAgICAgIGFkZGVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4oZWxlbWVudFJlZi5jdXJyZW50KSk7XG4gICAgICByZW1vdmVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4obnVsbCkpO1xuICAgICAgcHJldlJlZnMuY3VycmVudCA9IGN1cnJlbnRSZWZzO1xuICAgIH1cblxuICAgIGZpcnN0UmVuZGVyLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWYsXG4gICAgICAkcmVmOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IGZsYXR0ZW5SZWZzID0gPFQsPihyZWZzOiAkUmVmUHJvcDxUPik6IFNldDxSZWZMaWtlPFQ+PiA9PlxuICBuZXcgU2V0KChbcmVmc10uZmxhdChJbmZpbml0eSBhcyAxKSBhcyBBcnJheTxOb25OdWxsYWJsZTxSZWZMaWtlPFQ+Pj4pLmZpbHRlcihpc0RlZmluZWQpKTtcblxuY29uc3QgaGFuZGxlUmVmc0ZvciA9XG4gIDxULD4odmFsdWU6IFQgfCBudWxsKSA9PlxuICAocmVmczogJFJlZlByb3A8VD4pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzKSkge1xuICAgICAgcmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3IodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWZzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlZnModmFsdWUpO1xuICAgIH0gZWxzZSBpZiAocmVmcykge1xuICAgICAgKHJlZnMgYXMgTXV0YWJsZVJlZk9iamVjdDxUIHwgbnVsbD4pLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gIH07XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjc3NOYW1lcywgdHlwZSBJQ2xhc3NOYW1lIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lUGx1Z2luUHJvcHMgPSB7ICRjbGFzc05hbWU/OiBJQ2xhc3NOYW1lOyBjbGFzc05hbWU/OiBzdHJpbmcgfTtcblxubGV0IHNob3dDbHV0dGVyID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IGNsYXNzTmFtZVBsdWdpbiA9IGdldFBsdWdpbjxDbGFzc05hbWVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGNzc05hbWVzKHByb3BzLmNsYXNzTmFtZSwgcHJvcHMuJGNsYXNzTmFtZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oY2xhc3NOYW1lID8geyBjbGFzc05hbWU6IHNob3dDbHV0dGVyID8gY2xhc3NOYW1lIDogcmVtb3ZlQ2x1dHRlcihjbGFzc05hbWUpIH0gOiB7fSksXG4gICAgJGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmNvbnN0IHJlbW92ZUNsdXR0ZXIgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+XG4gIGNsYXNzTmFtZS5yZXBsYWNlKC9fX18uKj8oPz1cXHN8JCkvZywgXCJcIikucmVwbGFjZSgvXFxiW2EtekEtWjAtOS1dKy1tb2R1bGVfXy9nLCBcIlwiKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyA9ICgpID0+IHtcbiAgc2hvd0NsdXR0ZXIgPSBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24gPSAoKSA9PiB7XG4gIHNob3dDbHV0dGVyID0gdHJ1ZTtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCByZWxhdGl2ZVN0eWxlcyBmcm9tIFwiLi9yZWxhdGl2ZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBSZWxhdGl2ZVBsdWdpblByb3BzID0geyAkcmVsYXRpdmU/OiBib29sZWFuOyAkZml4ZWQ/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCByZWxhdGl2ZVBsdWdpbiA9IGdldFBsdWdpbjxSZWxhdGl2ZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW1xuICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgeyBbcmVsYXRpdmVTdHlsZXMucmVsYXRpdmVdOiAhIXByb3BzLiRyZWxhdGl2ZSwgW3JlbGF0aXZlU3R5bGVzLmZpeGVkXTogISFwcm9wcy4kZml4ZWQgfSxcbiAgXSxcbiAgJGZpeGVkOiB1bmRlZmluZWQsXG4gICRyZWxhdGl2ZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicmVsYXRpdmVcIjogXCJyZWxhdGl2ZS1tb2R1bGVfX3JlbGF0aXZlX19fa3dNNXFcIixcbiAgXCJmaXhlZFwiOiBcInJlbGF0aXZlLW1vZHVsZV9fZml4ZWRfX19Dc1hIRFwiXG59OyIsICJleHBvcnQgdHlwZSBEcmFnZ2FibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyYWdnYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIGl0ZW06IFQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcm9wcGFibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyb3BwYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIG9uRHJvcDogKGl0ZW06IFQpID0+IHZvaWQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcmFnZ2FibGVDb250ZXh0PERyYWdnZWRJdGVtPiA9IHtcbiAgZHJhZ2dhYmxlOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IE5vbk51bGxhYmxlPERyYWdnYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltgJGRyYWdnYWJsZWBdPjtcbiAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+IE5vbk51bGxhYmxlPERyb3BwYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltcIiRkcm9wcGFibGVcIl0+O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERyYWdnYWJsZUNvbnRleHQgPSA8RHJhZ2dlZEl0ZW0+KCk6IERyYWdnYWJsZUNvbnRleHQ8RHJhZ2dlZEl0ZW0+ID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBkcmFnZ2FibGU6IChpdGVtOiBEcmFnZ2VkSXRlbSkgPT4gKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICBpdGVtLFxuICAgIH0pLFxuXG4gICAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+ICh7XG4gICAgICBjb250ZXh0LFxuICAgICAgb25Ecm9wLFxuICAgIH0pLFxuICB9O1xuXG4gIHJldHVybiBjb250ZXh0O1xufTtcbiIsICJpbXBvcnQgeyBnZXRGZWF0dXJlIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJJbmplY3RhYmxlc0Zyb21Nb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMgZnJvbSBcIi4vKiovKi5pbmplY3RhYmxlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50Q29tcG9uZW50RmVhdHVyZSA9IGdldEZlYXR1cmUoe1xuICBpZDogXCJlbGVtZW50LWNvbXBvbmVudFwiLFxuICByZWdpc3RlcjogKGRpKSA9PiByZWdpc3RlckluamVjdGFibGVzRnJvbU1vZHVsZXMoZGksIG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMpLFxuICAvLyBObyBmZWF0dXJlIGRlcGVuZGVuY2llczogYSBkZXNpZ24gc3lzdGVtIGV2ZXJ5b25lIG1heSBpbnN0YWxsIGNhbm5vdCBkcmFnXG4gIC8vIExlbnMgZmVhdHVyZXMgaW50byB0aGUgY2xvc3VyZS4gVGhlIGNsb2NrIHRoZSBob3ZlcmFibGUgcGx1Z2luIG5lZWRzIGlzXG4gIC8vIGxvY2FsLCBhbmQgdGhlIHBsYXRmb3JtIGlzIHJlYWQgZGlyZWN0bHkuXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5cbi8qKlxuICogV2hldGhlciB0aGUga2V5Ym9hcmQgY29udmVudGlvbnMgb2YgbWFjT1MgYXBwbHkuXG4gKlxuICogUmVhZCBmcm9tIHRoZSBicm93c2VyIHJhdGhlciB0aGFuIGZyb20gYHByb2Nlc3NgIG9yIHRoZSB2YXJzIGZlYXR1cmU6IHRoaXMgaXNcbiAqIGEgcmVuZGVyZXItb25seSBkZXNpZ24gc3lzdGVtLCBpdCBtYXkgbm90IGRlcGVuZCBvbiBhIGZlYXR1cmUgcGFja2FnZSwgYW5kXG4gKiBgcHJvY2Vzc2AgaXMgbm90IHRoZXJlIHRvIHJlYWQgb25jZSB0aGUgcmVuZGVyZXIgc3RvcHMgcnVubmluZyB3aXRoIG5vZGVcbiAqIGludGVncmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgaXNNYWNJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpcy1tYWNcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4ge1xuICAgIGNvbnN0IHsgdXNlckFnZW50RGF0YSwgcGxhdGZvcm0sIHVzZXJBZ2VudCB9ID0gbmF2aWdhdG9yIGFzIE5hdmlnYXRvciAmIHtcbiAgICAgIHJlYWRvbmx5IHVzZXJBZ2VudERhdGE/OiB7IHJlYWRvbmx5IHBsYXRmb3JtPzogc3RyaW5nIH07XG4gICAgfTtcblxuICAgIHJldHVybiAvbWFjL2kudGVzdCh1c2VyQWdlbnREYXRhPy5wbGF0Zm9ybSA/PyBwbGF0Zm9ybSA/PyB1c2VyQWdlbnQgPz8gXCJcIik7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYXRjaGVzIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHsgaXNNYWNJbmplY3RhYmxlIH0gZnJvbSBcIi4vaXMtbWFjLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwib24tcmlnaHQtdHJpZ2dlclwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBpc01hYyA9IGRpLmluamVjdChpc01hY0luamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+IG9uUmlnaHRUcmlnZ2VyRm9yKGlzTWFjKCkgPyBpc01hY29zU2hvcnRjdXQgOiBpc0xpbnV4T3JXaW5kb3dzU2hvcnRjdXQpO1xuICB9LFxufSk7XG5cbmNvbnN0IG9uUmlnaHRUcmlnZ2VyRm9yID1cbiAgPFQ+KGNiOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8VD4pID0+IGJvb2xlYW4pID0+XG4gIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxUPiwgY2FsbGJhY2s6IFJlYWN0LktleWJvYXJkRXZlbnRIYW5kbGVyPFQ+KSA9PiB7XG4gICAgaWYgKGNiKGV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbmNvbnN0IGlzTWFjb3NTaG9ydGN1dCA9IG1hdGNoZXMoe1xuICBzaGlmdEtleTogZmFsc2UsXG4gIGFsdEtleTogZmFsc2UsXG4gIGN0cmxLZXk6IGZhbHNlLFxuICBtZXRhS2V5OiB0cnVlLFxuICBjb2RlOiBcIkVudGVyXCIsXG59KTtcblxuY29uc3QgaXNMaW51eE9yV2luZG93c1Nob3J0Y3V0ID0gbWF0Y2hlcyh7XG4gIHNoaWZ0S2V5OiBmYWxzZSxcbiAgYWx0S2V5OiBmYWxzZSxcbiAgY3RybEtleTogdHJ1ZSxcbiAgbWV0YUtleTogZmFsc2UsXG4gIGNvZGU6IFwiRW50ZXJcIixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG1ha2VTdXJlRHJhZ0FuZERyb3BFdmVudHNIYXZlVGltZVRvSGFwcGVuSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwibWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW5cIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4gKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0sIDUwKTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBOYXZpZ2FibGVFbnRyeSA9IHtcbiAgcmVhZG9ubHkgaXRlbTogdW5rbm93bjtcbiAgcmVhZG9ubHkgb3JkZXJOdW1iZXI6IG51bWJlcjtcbiAgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG59O1xuXG50eXBlIE5hdmlnYWJsZUNvbnRleHQgPSBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8YW55PjtcblxuLyoqXG4gKiBUaGUgbWVtYmVycyBvZiBldmVyeSBrZXlib2FyZC1uYXZpZ2FibGUgY29udGV4dCwgYW5kIHRoZSBvcmRlciB0aGUgY29udGV4dHMgYXBwZWFyZWQgaW4uIEZvY3VzXG4gKiBiZWxvbmdzIHRvIHRoZSBjb250ZXh0IHRoYXQgYXBwZWFyZWQgbGFzdDsgd2hlbiBpdCBnb2VzIGF3YXksIHRoZSBwcmV2aW91cyBvbmUgdGFrZXMgaXQgYmFjay5cbiAqL1xuZXhwb3J0IGNvbnN0IGtleWJvYXJkTmF2aWdhdGlvblN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwia2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiB7XG4gICAgY29uc3QgZW50cmllc0J5Q29udGV4dCA9IG5ldyBNYXA8TmF2aWdhYmxlQ29udGV4dCwgU2V0PE5hdmlnYWJsZUVudHJ5Pj4oKTtcbiAgICBjb25zdCBjb250ZXh0U3RhY2s6IE5hdmlnYWJsZUNvbnRleHRbXSA9IFtdO1xuXG4gICAgY29uc3QgZW50cmllc09mID0gKGNvbnRleHQ6IE5hdmlnYWJsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gZW50cmllc0J5Q29udGV4dC5nZXQoY29udGV4dCk7XG5cbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNyZWF0ZWQgPSBuZXcgU2V0PE5hdmlnYWJsZUVudHJ5PigpO1xuXG4gICAgICBlbnRyaWVzQnlDb250ZXh0LnNldChjb250ZXh0LCBjcmVhdGVkKTtcblxuICAgICAgcmV0dXJuIGNyZWF0ZWQ7XG4gICAgfTtcblxuICAgIHJldHVybiAoKSA9PiAoe1xuICAgICAgc29ydGVkRW50cmllc09mOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCkgPT5cbiAgICAgICAgWy4uLmVudHJpZXNPZihjb250ZXh0KV0uc29ydCgoYSwgYikgPT4gYS5vcmRlck51bWJlciAtIGIub3JkZXJOdW1iZXIpLFxuXG4gICAgICBjb250ZXh0SW5Gb2N1czogKCkgPT4gY29udGV4dFN0YWNrLmF0KC0xKSxcblxuICAgICAgcmVnaXN0ZXI6IChjb250ZXh0OiBOYXZpZ2FibGVDb250ZXh0LCBlbnRyeTogTmF2aWdhYmxlRW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGVudHJpZXNPZihjb250ZXh0KTtcblxuICAgICAgICBpZiAoZW50cmllcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgY29udGV4dFN0YWNrLnB1c2goY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBlbnRyaWVzLmFkZChlbnRyeSk7XG4gICAgICB9LFxuXG4gICAgICBkZXJlZ2lzdGVyOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCwgZW50cnk6IE5hdmlnYWJsZUVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBlbnRyaWVzT2YoY29udGV4dCk7XG5cbiAgICAgICAgZW50cmllcy5kZWxldGUoZW50cnkpO1xuXG4gICAgICAgIGlmIChlbnRyaWVzLnNpemUgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBpbmRleEluU3RhY2sgPSBjb250ZXh0U3RhY2subGFzdEluZGV4T2YoY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoaW5kZXhJblN0YWNrICE9PSAtMSkge1xuICAgICAgICAgICAgY29udGV4dFN0YWNrLnNwbGljZShpbmRleEluU3RhY2ssIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJtb2J4XCI7XG5cbmV4cG9ydCBjb25zdCBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJjb250ZXh0LWlzLWJlaW5nLWhvdmVyZWRcIixcbiAgY29uc3VtcHRpb25zOiBbaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuXSxcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IGRpLmluamVjdChpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4pO1xuXG4gICAgcmV0dXJuIChjb250ZXh0OiBIb3ZlcmFibGVDb250ZXh0PE11dGFibGVSZWZPYmplY3Q8YW55Pj4pID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWRJdGVtID0gaXRlbUJlaW5nSG92ZXJlZCgpKGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gISFob3ZlcmVkSXRlbS5nZXQoKSk7XG4gICAgfTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuaW1wb3J0IGdsb2JhbE92ZXJyaWRlcyBmcm9tIFwiLi8qKi8qLmdsb2JhbC1vdmVycmlkZS1mb3ItaW5qZWN0YWJsZS4odHN8dHN4KVwiO1xuaW1wb3J0IGRlZmF1bHRPdmVycmlkZXMgZnJvbSBcIi4vKiovKi5kZWZhdWx0LW92ZXJyaWRlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCB0ZXN0VXRpbFJ1bm5hYmxlSW5qZWN0YWJsZSA9IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMoe1xuICBnbG9iYWxPdmVycmlkZXMsXG4gIGRlZmF1bHRPdmVycmlkZXMsXG59KTtcbiIsICJcblxuY29uc3QgbW9kdWxlcyA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFtdXG4iLCAiaW1wb3J0IHR5cGUgeyBEaUNvbnRhaW5lciB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUgfSBmcm9tIFwiLi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlXCI7XG5cbi8vIFJ1bnMgdGhlIGNhbGxiYWNrIHN0cmFpZ2h0IGF3YXkgaW4gdGVzdHMsIGluc3RlYWQgb2YgYWZ0ZXIgdGhlIHJlYWwgZGVsYXkuXG5leHBvcnQgZGVmYXVsdCAoZGk6IERpQ29udGFpbmVyKSA9PiB7XG4gIGRpLm92ZXJyaWRlMihtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUsICgpID0+ICgpID0+IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gY2FsbGJhY2soKSk7XG59O1xuIiwgImltcG9ydCB0eXBlIHsgRGlDb250YWluZXIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdG9vbHRpcERlbGF5SW5qZWN0YWJsZSB9IGZyb20gXCIuL3Rvb2x0aXAtZGVsYXkuaW5qZWN0YWJsZVwiO1xuXG4vLyBObyBkZWxheSBpbiB0ZXN0cywgc28gYSB0b29sdGlwIGFwcGVhcnMgd2l0aG91dCBhbnlvbmUgYWR2YW5jaW5nIHRpbWVycy5cbi8vIFdyaXR0ZW4gYXMgYSBwbGFpbiBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aHJvdWdoIGdldERlZmF1bHRNb2NraW5nT3ZlcnJpZGUsXG4vLyB3aGljaCBpcyBhbiBpZGVudGl0eSBmdW5jdGlvbiBpbiBhIHRlc3QgcGFja2FnZSB0aGlzIG9uZSBtYXkgbm90IGltcG9ydC5cbmV4cG9ydCBkZWZhdWx0IChkaTogRGlDb250YWluZXIpID0+IHtcbiAgZGkub3ZlcnJpZGUyKHRvb2x0aXBEZWxheUluamVjdGFibGUsICgpID0+ICgpID0+IHVuZGVmaW5lZCk7XG59O1xuIiwgImltcG9ydCB7IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nKCk7XG59O1xuIiwgImltcG9ydCAqIGFzIG1vZHVsZTAgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTJdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFsncGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5kZWZhdWx0LW92ZXJyaWRlLnRzJywncGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzJywncmVtb3ZlLWNzcy1tb2R1bGUtY2x1dHRlci5kZWZhdWx0LW92ZXJyaWRlLnRzJ11cbiIsICJpbXBvcnQgKiBhcyBtb2R1bGUwIGZyb20gJy4vcGx1Z2lucy9jbGlja2FibGUvaXMtbWFjLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTMgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU0IGZyb20gJy4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU1IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNiBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNyBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU4IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlOSBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMCBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2NvbXB1dGVkLW5vdy5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMSBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMiBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMyBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2xvY2FsLWhvdmVyYWJsZS9fcHJpdmF0ZS9jb250ZXh0LWlzLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlMTQgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTE1IGZyb20gJy4vdGVzdC11dGlsLXJ1bm5hYmxlLmluamVjdGFibGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTIsbW9kdWxlMyxtb2R1bGU0LG1vZHVsZTUsbW9kdWxlNixtb2R1bGU3LG1vZHVsZTgsbW9kdWxlOSxtb2R1bGUxMCxtb2R1bGUxMSxtb2R1bGUxMixtb2R1bGUxMyxtb2R1bGUxNCxtb2R1bGUxNV07XG5cbmV4cG9ydCBkZWZhdWx0IG1vZHVsZXM7XG5leHBvcnQgY29uc3QgZmlsZW5hbWVzID0gWydwbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvY2xpY2thYmxlL29uLXJpZ2h0LXRyaWdnZXIuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9fc2hhcmVkL2ZvY3VzYWJsZS1odG1sLWVsZW1lbnQtcmVmLXNldC5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9rZXlib2FyZC1uYXZpZ2F0aW9uLXN0YXRlLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9jb21wdXRlZC1ub3cuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9ob3ZlcmFibGUvaXRlbS1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnLCd0ZXN0LXV0aWwtcnVubmFibGUuaW5qZWN0YWJsZS50cyddXG4iLCAiaW1wb3J0IHR5cGUgeyBUdXBsZSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IHR5cGUgVFNoaXJ0U2l6ZSA9XG4gIHwgXCJ6ZXJvXCJcbiAgfCBgJHtSYW5nZTwzLCA0Pn14c2BcbiAgfCBcInh4c1wiXG4gIHwgXCJ4c1wiXG4gIHwgXCJzXCJcbiAgfCBcIm1cIlxuICB8IFwibFwiXG4gIHwgXCJ4bFwiXG4gIHwgXCJ4eGxcIlxuICB8IGAke1JhbmdlPDMsIDExPn14bGA7XG5cbmV4cG9ydCB0eXBlIFJhbmdlPFN0YXJ0IGV4dGVuZHMgbnVtYmVyLCBFbmQgZXh0ZW5kcyBudW1iZXI+ID0gUmFuZ2VJbXBsPFN0YXJ0LCBFbmQ+O1xudHlwZSBSYW5nZUltcGw8XG4gIFN0YXJ0IGV4dGVuZHMgbnVtYmVyLFxuICBFbmQgZXh0ZW5kcyBudW1iZXIsXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9Db25mdXNpbmdWb2lkVHlwZTogcmVxdWlyZWQgZm9yIHRoZSBidWlsZCB0byBwYXNzXG4gIFQgZXh0ZW5kcyB2b2lkW10gPSBUdXBsZTx2b2lkLCBTdGFydD4sXG4+ID0gRW5kIGV4dGVuZHMgVFtcImxlbmd0aFwiXSA/IEVuZCA6IFRbXCJsZW5ndGhcIl0gfCBSYW5nZUltcGw8U3RhcnQsIEVuZCwgW3VuZGVmaW5lZCwgLi4uVF0+O1xuXG4vKiBjOCBpZ25vcmUgZW5kICovXG5cbi8qKiBUaGUgYmFzZSB1bml0IChpbiBwaXhlbHMpIHRoZSB0LXNoaXJ0IHNjYWxlIGlzIGJ1aWx0IG9uLiBNaXJyb3JzIGAkdW5pdGAgaW4gYHNpemVzLnNjc3NgLiAqL1xuZXhwb3J0IGNvbnN0IHNpemVVbml0SW5QaXhlbHMgPSA0O1xuXG4vLyBNdWx0aXBsaWVyIHBlciBzaXplLCBtaXJyb3JpbmcgdGhlIGAkc2l6ZXNgIG1hcCBpbiBgc2l6ZXMuc2Nzc2AuIEtlZXAgdGhlIHR3byBpbiBzeW5jLlxuY29uc3Qgc2l6ZU11bHRpcGxpZXJzOiBSZWNvcmQ8VFNoaXJ0U2l6ZSwgbnVtYmVyPiA9IHtcbiAgemVybzogMCxcbiAgXCI0eHNcIjogMSAvIDQsXG4gIFwiM3hzXCI6IDEgLyAyLFxuICB4eHM6IDEsXG4gIHhzOiAyLFxuICBzOiAzLFxuICBtOiA0LFxuICBsOiA1LFxuICB4bDogNixcbiAgeHhsOiA3LFxuICBcIjN4bFwiOiA4LFxuICBcIjR4bFwiOiA5LFxuICBcIjV4bFwiOiAxMCxcbiAgXCI2eGxcIjogMTEsXG4gIFwiN3hsXCI6IDEyLFxuICBcIjh4bFwiOiAxMyxcbiAgXCI5eGxcIjogMTQsXG4gIFwiMTB4bFwiOiAxNSxcbiAgXCIxMXhsXCI6IDE2LFxufTtcblxuLyoqXG4gKiBUaGUgcGl4ZWwgbGVuZ3RoIG9mIGEgdC1zaGlydCBzaXplIFx1MjAxNCB0aGUgc2FtZSB2YWx1ZSB0aGUgYCRzaXplYC9gJHdpZHRoYC9gJGhlaWdodGBcbiAqIGNsYXNzZXMgcmVzb2x2ZSB0byBpbiBDU1MuIFVzZSB3aGVuIGEgbGVuZ3RoIGlzIG5lZWRlZCByYXRoZXIgdGhhbiBhIHNpemluZyBjbGFzcyxcbiAqIGUuZy4gdG8gZHJpdmUgYW4gaWNvbiBmb250J3MgYGZvbnQtc2l6ZWAuXG4gKi9cbmV4cG9ydCBjb25zdCB0U2hpcnRTaXplSW5QaXhlbHMgPSAoc2l6ZTogVFNoaXJ0U2l6ZSk6IG51bWJlciA9PiBzaXplVW5pdEluUGl4ZWxzICogc2l6ZU11bHRpcGxpZXJzW3NpemVdO1xuIiwgIi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgZ2V0RWxlbWVudENvbXBvbmVudCB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZmxleFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxleC9mbGV4XCI7XG5pbXBvcnQgeyBncmlkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmlkL2dyaWRcIjtcbmltcG9ydCB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyB3aWR0aFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcbmltcG9ydCB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuaW1wb3J0IHsgc3R5bGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBoZWlnaHRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2hlaWdodC9oZWlnaHRcIjtcbmltcG9ydCB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYm9yZGVyL2JvcmRlclwiO1xuaW1wb3J0IHsgZm9udFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZm9udC9mb250XCI7XG5pbXBvcnQgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY29sb3IvY29sb3JcIjtcbmltcG9ydCB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgeyBncmFkaWVudFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZ3JhZGllbnQvZ3JhZGllbnRcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZHJhZ2dhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGVcIjtcbmltcG9ydCB7IGRyb3BwYWJsZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJvcHBhYmxlXCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCJtb2J4LXJlYWN0XCI7XG5pbXBvcnQgeyB0b29sdGlwUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90b29sdGlwL3Rvb2x0aXBcIjtcbmltcG9ydCB7IHRyYW5zaXRpb25QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuaW1wb3J0IHsgb2Zmc2V0UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9vZmZzZXQvb2Zmc2V0XCI7XG5pbXBvcnQgeyBvZmZzZXRDaGlsZHJlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb2Zmc2V0LWNoaWxkcmVuL29mZnNldC1jaGlsZHJlblwiO1xuaW1wb3J0IHsgaGlkZGVuUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9oaWRkZW4vaGlkZGVuXCI7XG5pbXBvcnQgeyBub1BvaW50ZXJFdmVudHNQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzXCI7XG5pbXBvcnQgeyBtYXJnaW5QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL21hcmdpbi9tYXJnaW5cIjtcbmltcG9ydCB7IHJlbGF0aXZlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9yZWxhdGl2ZS9yZWxhdGl2ZVwiO1xuaW1wb3J0IHsgYWJzb2x1dGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Fic29sdXRlL2Fic29sdXRlXCI7XG5pbXBvcnQgeyB2aXN1YWxseUhpZGRlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuaW1wb3J0IHsgaG92ZXJhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBob3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlLWJ5LWRyYWdnaW5nXCI7XG5pbXBvcnQgeyBib3hTaGFkb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuaW1wb3J0IHsgb3ZlcmZsb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL292ZXJmbG93L292ZXJmbG93XCI7XG5pbXBvcnQgeyBmbGV4Q2hpbGRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZFwiO1xuaW1wb3J0IHsgZ3JheXNjYWxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlXCI7XG5pbXBvcnQgeyB0aW50UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90aW50L3RpbnRcIjtcbmltcG9ydCB7IGZhZGVkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuaW1wb3J0IHsgZW5hYmxlZFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgeyBmb2N1c2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGVcIjtcbmltcG9ydCB7IGFyZWFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEvYXJlYVwiO1xuaW1wb3J0IHsgYXJlYUNvbnRlbnRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEtY29udGVudC9hcmVhLWNvbnRlbnRcIjtcbmltcG9ydCB7IHNpemVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuaW1wb3J0IHsgY3Vyc29yUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyBjbGlja2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHJlZlBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcmVmL3JlZlwiO1xuaW1wb3J0IHsgZGlzcGxheUNvbnRlbnRzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHNcIjtcbmltcG9ydCB7IHRleHRBbGlnblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduXCI7XG5pbXBvcnQgeyBibG9ja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmxvY2svYmxvY2tcIjtcbmltcG9ydCB7IG91dGxpbmVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL291dGxpbmUvb3V0bGluZVwiO1xuaW1wb3J0IHsgcG9wb3ZlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5pbXBvcnQgeyBmbG9hdGluZ1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcbmltcG9ydCB7IGludmlzaWJsZUJhY2tkcm9wUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wXCI7XG5pbXBvcnQgeyBvbk91dHNpZGVDbGlja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5pbXBvcnQgeyBkcm9wRG93bk1lbnVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51XCI7XG5pbXBvcnQgeyBhbmNob3JQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FuY2hvci9hbmNob3JcIjtcblxuZXhwb3J0IGNvbnN0IHNoYXJlZFBsdWdpbnMgPSBbXG4gIC8vIENvbnRyaWJ1dGVzIHByb3BzIG9mIGl0cyBvd24sIHNvIGl0IGhhcyB0byBydW4gYmVmb3JlIHRoZSBwbHVnaW5zIHRoYXQgcmVzb2x2ZSB0aGVtLlxuICBhbmNob3JQbHVnaW4sXG4gIHNpemVQbHVnaW4sXG4gIGRyYWdnYWJsZVBsdWdpbixcbiAgdGV4dEFsaWduUGx1Z2luLFxuICBkcm9wcGFibGVQbHVnaW4sXG4gIGFyZWFQbHVnaW4sXG4gIGFyZWFDb250ZW50UGx1Z2luLFxuICBmbGV4UGx1Z2luLFxuICBncmlkUGx1Z2luLFxuICB3aWR0aFBsdWdpbixcbiAgaGVpZ2h0UGx1Z2luLFxuICBmbGV4Q2hpbGRQbHVnaW4sXG4gIG92ZXJmbG93UGx1Z2luLFxuICBwYWRkaW5nUGx1Z2luLFxuICBtYXJnaW5QbHVnaW4sXG4gIGJsb2NrUGx1Z2luLFxuICBib3hTaGFkb3dQbHVnaW4sXG4gIGJvcmRlclBsdWdpbixcbiAgb3V0bGluZVBsdWdpbixcbiAgZm9udFBsdWdpbixcbiAgY29sb3JQbHVnaW4sXG4gIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgZ3JhZGllbnRQbHVnaW4sXG4gIGdyYXlzY2FsZVBsdWdpbixcbiAgdGludFBsdWdpbixcbiAgZmFkZWRQbHVnaW4sXG4gIHN0eWxlUGx1Z2luLFxuICB0cmFuc2l0aW9uUGx1Z2luLFxuICBvZmZzZXRQbHVnaW4sXG4gIG9mZnNldENoaWxkcmVuUGx1Z2luLFxuICBoaWRkZW5QbHVnaW4sXG4gIG5vUG9pbnRlckV2ZW50c1BsdWdpbixcbiAgaW52aXNpYmxlQmFja2Ryb3BQbHVnaW4sXG4gIHZpc3VhbGx5SGlkZGVuUGx1Z2luLFxuICByZWxhdGl2ZVBsdWdpbixcbiAgYWJzb2x1dGVQbHVnaW4sXG4gIGN1cnNvclBsdWdpbixcbiAgZGlzcGxheUNvbnRlbnRzUGx1Z2luLFxuICBvbk91dHNpZGVDbGlja1BsdWdpbixcbiAgY2xhc3NOYW1lUGx1Z2luLFxuXTtcblxuY29uc3Qgc2hhcmVkQ2xpY2thYmxlUGx1Z2lucyA9IFtkcm9wRG93bk1lbnVQbHVnaW4sIHBvcG92ZXJQbHVnaW4sIGVuYWJsZWRQbHVnaW4sIGNsaWNrYWJsZVBsdWdpbl07XG5cbmV4cG9ydCBjb25zdCBnZXRTaGFyZWRUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgLi4uZ2V0U2hhcmVkQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbiAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbl07XG5cbmNvbnN0IGdldFNoYXJlZENoaWxkcmVuQWRkaW5nVHlwZWRQbHVnaW5zID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiBbdG9vbHRpcFBsdWdpbjxUPigpLCBmbG9hdGluZ1BsdWdpbjxUPigpXTtcblxuY29uc3QgZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgaG92ZXJhYmxlUGx1Z2luPFQ+KCksXG4gIGhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW48VD4oKSxcbiAgZm9jdXNhYmxlUGx1Z2luPFQ+KCksXG4gIHJlZlBsdWdpbjxUPigpLFxuXTtcblxuZXhwb3J0IGNvbnN0IERpdiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIERpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERpdj47XG5cbi8vIFVzZSBkaXYgYXMgbmV1dHJhbCB0ZW1wbGF0ZSBmb3Igd2hhdCBjb21tb24gcHJvcHMgc2hvdWxkIGxvb2sgbGlrZVxuZXhwb3J0IGNvbnN0IENvbW1vbiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPGFueT4oKSkpO1xuZXhwb3J0IHR5cGUgQ29tbW9uUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29tbW9uPjtcblxuZXhwb3J0IGNvbnN0IFN2ZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJzdmdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIFN2Z1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFN2Zz47XG5cbmV4cG9ydCBjb25zdCBJbnB1dCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFxuICAgIFwiaW5wdXRcIixcbiAgICBlbmFibGVkUGx1Z2luLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8SFRNTElucHV0RWxlbWVudD4oKSxcbiAgKSxcbik7XG5leHBvcnQgdHlwZSBJbnB1dFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIElucHV0PjtcblxuZXhwb3J0IGNvbnN0IFRleHRBcmVhID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0ZXh0YXJlYVwiLCBlbmFibGVkUGx1Z2luLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRleHRBcmVhRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGV4dEFyZWFQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUZXh0QXJlYT47XG5cbmV4cG9ydCBjb25zdCBGb3JtID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJmb3JtXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRm9ybUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIEZvcm1Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBGb3JtPjtcblxuZXhwb3J0IGNvbnN0IFNwYW4gPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInNwYW5cIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxTcGFuRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgU3BhblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNwYW4+O1xuXG5leHBvcnQgY29uc3QgQ2xpY2thYmxlRGl2ID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBDbGlja2FibGVEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBDbGlja2FibGVEaXY+O1xuXG5leHBvcnQgY29uc3QgSSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEk+O1xuXG5leHBvcnQgY29uc3QgQSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJhXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQW5jaG9yRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgQVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEE+O1xuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXG4gICAgXCJidXR0b25cIixcbiAgICAuLi5zaGFyZWRDbGlja2FibGVQbHVnaW5zLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxCdXR0b25FbGVtZW50PigpLFxuICApLFxuKTtcbmV4cG9ydCB0eXBlIEJ1dHRvblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEJ1dHRvbj47XG5cbmV4cG9ydCBjb25zdCBDb2RlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImNvZGVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBDb2RlUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29kZT47XG5cbmV4cG9ydCBjb25zdCBMYWJlbCA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJsYWJlbFwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIExhYmVsUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTGFiZWw+O1xuXG5leHBvcnQgY29uc3QgUHJlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInByZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFByZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIFByZVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFByZT47XG5cbmV4cG9ydCBjb25zdCBOYXYgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwibmF2XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgTmF2UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTmF2PjtcblxuZXhwb3J0IGNvbnN0IEgxID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImgxXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEgxUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDE+O1xuXG5leHBvcnQgY29uc3QgSDIgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDJcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBIMj47XG5cbmV4cG9ydCBjb25zdCBIMyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoM1wiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBIM1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEgzPjtcblxuZXhwb3J0IGNvbnN0IEg0ID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImg0XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEg0UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDQ+O1xuXG5leHBvcnQgY29uc3QgSDUgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBINT47XG5cbmV4cG9ydCBjb25zdCBINiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoNlwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBINlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEg2PjtcblxuZXhwb3J0IGNvbnN0IE9sID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcIm9sXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MT0xpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBPbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIE9sPjtcblxuZXhwb3J0IGNvbnN0IFVsID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInVsXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVUxpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBVbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFVsPjtcblxuZXhwb3J0IGNvbnN0IExpID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImxpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MTElFbGVtZW50PigpKSk7XG5cbmV4cG9ydCBjb25zdCBDbGlja2FibGVMaSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwibGlcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxMSUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIENsaWNrYWJsZUxpUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2xpY2thYmxlTGk+O1xuZXhwb3J0IHR5cGUgTGlQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBMaT47XG5cbmV4cG9ydCBjb25zdCBQID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInBcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxQYXJhZ3JhcGhFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBQUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUD47XG5cbmV4cG9ydCBjb25zdCBUaCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGhcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZUNlbGxFbGVtZW50PigpKSxcbik7XG5cbmV4cG9ydCB0eXBlIFRoUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgVGg+O1xuXG5leHBvcnQgY29uc3QgVGQgPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInRkXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVGFibGVDZWxsRWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUZFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRkPjtcblxuZXhwb3J0IGNvbnN0IFRyID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0clwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlUm93RWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRyPjtcblxuZXhwb3J0IGNvbnN0IFRhYmxlID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0YWJsZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGFibGVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUYWJsZT47XG5cbmV4cG9ydCBjb25zdCBUQm9keSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGJvZHlcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBUQm9keVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRCb2R5PjtcblxuZXhwb3J0IGNvbnN0IERpYWxvZyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiZGlhbG9nXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRGlhbG9nRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgRGlhbG9nUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nPjtcblxuZXhwb3J0IGNvbnN0IENhbnZhcyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiY2FudmFzXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQ2FudmFzRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgQ2FudmFzUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2FudmFzPjtcblxuZXhwb3J0IGNvbnN0IEltZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpbWdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxJbWFnZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEltZ1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEltZz47XG5cbi8qIGM4IGlnbm9yZSBlbmQgKi9cbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mbGV4L2ZsZXgubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJmbGV4XCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX19lRkxFY1wiLFxuICBcImZsZXhfX3dyYXAtLXdyYXBcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fd3JhcC0td3JhcF9fXzJMcVRnXCIsXG4gIFwiZmxleF9fZGlyZWN0aW9uLS12ZXJ0aWNhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsX19fMEFpT2ZcIixcbiAgXCJmbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsLXJldmVyc2VkXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2RpcmVjdGlvbi0tdmVydGljYWwtcmV2ZXJzZWRfX19Jb2UtNVwiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWxfX19hMzJ6b1wiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbC1yZXZlcnNlZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWwtcmV2ZXJzZWRfX19pTHdES1wiLFxuICBcImZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5cIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2Vlbl9fX2E2b01IXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQXJvdW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUFyb3VuZF9fXzVZT1U0XCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWNlbnRlclwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tY2VudGVyX19fdXJaWUdcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaF9fX001YXowXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0X19fUEhGMUVcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZF9fX2FNUHgwXCIsXG4gIFwiZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19hbGlnbkl0ZW1zLS1zdHJldGNoX19fYkFOaWdcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyX19fMFZzeTlcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4U3RhcnRcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tZmxleFN0YXJ0X19fajBKenhcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4RW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2FsaWduSXRlbXMtLWZsZXhFbmRfX19EbVU1UlwiLFxuICBcImZsZXhfX2dhcC0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXplcm9fX193My1UZ1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS16ZXJvXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS16ZXJvX19fOTYwQTdcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0temVyb19fX29LdXNUXCIsXG4gIFwiZmxleF9fZ2FwLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS00eHNfX19yclRKZVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTR4c19fX1RSM1lFXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTR4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNHhzX19fNmluM2pcIixcbiAgXCJmbGV4X19nYXAtLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTN4c19fX1JjdW1SXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tM3hzX19fWC1DMWFcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tM3hzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS0zeHNfX19rVzBpT1wiLFxuICBcImZsZXhfX2dhcC0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhzX19fVUIzRmpcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eHNfX191SVp2MlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4c19fX3QtZ3FOXCIsXG4gIFwiZmxleF9fZ2FwLS14c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXhzX19fdHQzU29cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLXhzX19fQjVvWGNcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXhzX19fMUVYMmZcIixcbiAgXCJmbGV4X19nYXAtLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1zX19fOW1ZelNcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tc1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tc19fX2F2dGYtXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXNfX19ZT0JWVlwiLFxuICBcImZsZXhfX2dhcC0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLW1fX19BYi10MFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS1tXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS1tX19fUTZjQi1cIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tbV9fXzctRFEwXCIsXG4gIFwiZmxleF9fZ2FwLS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tbF9fX2N2bWp3XCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLWxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLWxfX19FcFF0VFwiLFxuICBcImZsZXhfX2dhcC0tcm93LS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS1sX19feFlpS2hcIixcbiAgXCJmbGV4X19nYXAtLXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teGxfX19DSXNOUFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0teGxfX19tTFV4UlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0teGxfX19LV04zM1wiLFxuICBcImZsZXhfX2dhcC0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhsX19fMTJ0LTZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eGxfX192QUx0ZlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4bF9fX0lkY3FVXCIsXG4gIFwiZmxleF9fZ2FwLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0zeGxfX19pVXJ4MVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTN4bF9fXy1OVjBaXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTN4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tM3hsX19fVlljUmhcIixcbiAgXCJmbGV4X19nYXAtLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTR4bF9fX2ZaaUtWXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tNHhsX19fWDlLcHlcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tNHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS00eGxfX19kYnZXMFwiLFxuICBcImZsZXhfX2dhcC0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tNXhsX19fNDNoSHZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS01eGxfX18yWHllUVwiLFxuICBcImZsZXhfX2dhcC0tcm93LS01eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTV4bF9fX3F2ak9FXCIsXG4gIFwiZmxleF9fZ2FwLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS02eGxfX19zUHk2TFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTZ4bF9fX3phZ1dNXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTZ4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNnhsX19fVS11WkpcIixcbiAgXCJmbGV4X19nYXAtLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTd4bF9fX09hd3YtXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tN3hsX19fS3pyTXJcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tN3hsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS03eGxfX19wQXZMdlwiLFxuICBcImZsZXhfX2dhcC0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tOHhsX19fRWVvRS1cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS04eGxfX19rYmlvSlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS04eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTh4bF9fX1AtOS1lXCIsXG4gIFwiZmxleF9fZ2FwLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS05eGxfX19UZ25VU1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTl4bF9fX05HbDNKXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTl4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tOXhsX19fRUd1ZWhcIixcbiAgXCJmbGV4X19nYXAtLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0xMHhsX19fQ2YxdzZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tMTB4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tMTB4bF9fX0xKUkdsXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTEweGxfX196UHR5TlwiLFxuICBcImZsZXhfX2dhcC0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTExeGxfX19vcmZnSVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0xMXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS0xMXhsX19fZERLZHBcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tMTF4bF9fX3ZERy1BXCJcbn07IiwgImltcG9ydCBmbGV4U3R5bGVzIGZyb20gXCIuL2ZsZXgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBIb3Jpem9udGFsRmxleFByb3BzID0ge1xuICBkaXJlY3Rpb24/OiBcImhvcml6b250YWxcIiB8IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiO1xuXG4gIGhvcml6b250YWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInN0cmV0Y2hcIiB8IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxuZXhwb3J0IHR5cGUgVmVydGljYWxGbGV4UHJvcHMgPSB7XG4gIGRpcmVjdGlvbj86IFwidmVydGljYWxcIiB8IFwidmVydGljYWwtcmV2ZXJzZWRcIjtcblxuICBob3Jpem9udGFsQWxpZ24/OiBcImNlbnRlclwiIHwgXCJzdHJldGNoXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcInRvcFwiIHwgXCJib3R0b21cIjtcbn07XG5cbmV4cG9ydCB0eXBlIE1heGltYWxGbGV4UHJvcHMgPSAoSG9yaXpvbnRhbEZsZXhQcm9wcyB8IFZlcnRpY2FsRmxleFByb3BzKSAmIHtcbiAgZ2FwPzogVFNoaXJ0U2l6ZSB8IHsgcm93PzogVFNoaXJ0U2l6ZTsgY29sdW1uPzogVFNoaXJ0U2l6ZSB9O1xuICB3cmFwPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFNpbXBsZUZsZXhQcm9wID0gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgRmxleFBsdWdpblByb3BzID0geyAkZmxleD86IFNpbXBsZUZsZXhQcm9wIHwgTWF4aW1hbEZsZXhQcm9wcyB9O1xuXG5leHBvcnQgY29uc3QgZmxleFBsdWdpbiA9IGdldFBsdWdpbjxGbGV4UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGZsZXggfSA9IHByb3BzO1xuXG4gIGlmICghJGZsZXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGZsZXg6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvbiA9IFwiaG9yaXpvbnRhbFwiLFxuICAgIHZlcnRpY2FsQWxpZ24gPSBcIlwiLFxuICAgIGhvcml6b250YWxBbGlnbiA9IFwiXCIsXG4gICAgZ2FwID0gdW5kZWZpbmVkLFxuICAgIHdyYXAsXG4gIH0gPSAkZmxleCA9PT0gdHJ1ZSA/IHt9IDogJGZsZXg7XG5cbiAgY29uc3QgaG9yaXpvbnRhbEFsaWduUHJvcHMgPSB7XG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLXN0cmV0Y2hgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3RyZXRjaFwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJib3R0b21cIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzcGFjZS1hcm91bmRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2VlbmBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInNwYWNlLWJldHdlZW5cIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXN0cmV0Y2hgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJjZW50ZXJcIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0YF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIikgfHxcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSxcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsLXJldmVyc2VkXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIiksXG4gIH07XG5cbiAgY29uc3QgdmVydGljYWxBbGlnblByb3BzID0ge1xuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYXJvdW5kXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5gXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYmV0d2VlblwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwidmVydGljYWxcIiAmJiB2ZXJ0aWNhbEFsaWduID09PSBcInRvcFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbC1yZXZlcnNlZFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpLFxuXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1mbGV4RW5kYF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpIHx8XG4gICAgICAoZGlyZWN0aW9uID09PSBcInZlcnRpY2FsLXJldmVyc2VkXCIgJiYgdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIiksXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInN0cmV0Y2hcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyYF1dOiBob3Jpem9udGFsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInJpZ2h0XCIsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBmbGV4U3R5bGVzLmZsZXgsXG4gICAgICBmbGV4U3R5bGVzW2BmbGV4X19kaXJlY3Rpb24tLSR7ZGlyZWN0aW9ufWBdLFxuXG4gICAgICBbXCJob3Jpem9udGFsXCIsIFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiXS5pbmNsdWRlcyhkaXJlY3Rpb24pID8gaG9yaXpvbnRhbEFsaWduUHJvcHMgOiB2ZXJ0aWNhbEFsaWduUHJvcHMsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZmxleFN0eWxlc1tgZmxleF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHdyYXAgJiYgZmxleFN0eWxlc1tgZmxleF9fd3JhcC0td3JhcGBdLFxuXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG5cbiAgICAkZmxleDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZ3JpZC9ncmlkLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JpZFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19fTVBUaE9cIixcbiAgXCJncmlkX19jb2x1bW5zLS0xXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTFfX19ZMFUyTVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTJcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tMl9fX1lnUzRIXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tM1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS0zX19fbWFCRDJcIixcbiAgXCJncmlkX19jb2x1bW5zLS00XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTRfX183M0JqQVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTVcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tNV9fX1NsdC1EXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tNlwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS02X19fbnlNOHpcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1zdHJldGNoXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0cmV0Y2hfX194WGQzWlwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLWNlbnRlclwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19hbGlnbkl0ZW1zLS1jZW50ZXJfX19FOG1MLVwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLXN0YXJ0XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0YXJ0X19fMk5kdlNcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1lbmRcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fYWxpZ25JdGVtcy0tZW5kX19fMUlwWW1cIixcbiAgXCJncmlkX19nYXAtLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS16ZXJvX19fRzFxOGRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0temVyb1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0temVyb19fX3lnUXBKXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXplcm9fX193MS1PeFwiLFxuICBcImdyaWRfX2dhcC0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNHhzX19fek8wbXZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS00eHNfX19HVW9kM1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS00eHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTR4c19fX3NWUVplXCIsXG4gIFwiZ3JpZF9fZ2FwLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0zeHNfX18tSXhTd1wiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTN4c19fX3V3NDY2XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTN4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tM3hzX19fSmZ3bVlcIixcbiAgXCJncmlkX19nYXAtLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4c19fX2doOGMtXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhzX19fRTc2Z0tcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eHNfX19uaHh6LVwiLFxuICBcImdyaWRfX2dhcC0teHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS14c19fX0dINGgyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS14c19fX3VScXJpXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14c19fX2xBTkV1XCIsXG4gIFwiZ3JpZF9fZ2FwLS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tc19fXzdSMHBzXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXNfX19hRFZBR1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS1zX19fQVJEbXhcIixcbiAgXCJncmlkX19nYXAtLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1tX19fbTNYaWhcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tbVwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tbV9fX0NzeWVNXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLW1fX19zT0FYblwiLFxuICBcImdyaWRfX2dhcC0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWxfX18wU3lLbFwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS1sXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS1sX19fSnZKaE1cIixcbiAgXCJncmlkX19nYXAtLXJvdy0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tbF9fX2FwSDhiXCIsXG4gIFwiZ3JpZF9fZ2FwLS14bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXhsX19fSS12UnRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXhsX19fdDBTTzNcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXhsX19fZXZORWRcIixcbiAgXCJncmlkX19nYXAtLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4bF9fX2VXUzAyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhsX19fcy0tLWJcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eGxfX19KNEY3b1wiLFxuICBcImdyaWRfX2dhcC0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tM3hsX19fSFZsa0RcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS0zeGxfX196S3RMTFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0zeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTN4bF9fX0U5U1Y5XCIsXG4gIFwiZ3JpZF9fZ2FwLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS00eGxfX19NM0czZlwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTR4bF9fX25udC1wXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTR4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tNHhsX19fMVc4YmRcIixcbiAgXCJncmlkX19nYXAtLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTV4bF9fX3lBblhEXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tNXhsX19fMnc0UjFcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tNXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS01eGxfX19WQ2ZqZ1wiLFxuICBcImdyaWRfX2dhcC0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNnhsX19faEVsMEZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS02eGxfX19GeFB0cFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS02eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTZ4bF9fX3luMWYtXCIsXG4gIFwiZ3JpZF9fZ2FwLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS03eGxfX19nYkdIdVwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTd4bF9fX1Z5ajFwXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTd4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tN3hsX19fNUJCc1NcIixcbiAgXCJncmlkX19nYXAtLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTh4bF9fX2pDbG1DXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tOHhsX19fYnE3RXpcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tOHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS04eGxfX193TnVaMlwiLFxuICBcImdyaWRfX2dhcC0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tOXhsX19faW5FMUVcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS05eGxfX19Nc2ZqcVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS05eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTl4bF9fX2kyMy1jXCIsXG4gIFwiZ3JpZF9fZ2FwLS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tMTB4bF9fX0xDRHRjXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxfX19vOGNCeVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS0xMHhsX19fUmpSdzlcIixcbiAgXCJncmlkX19nYXAtLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0xMXhsX19fU3F1TmFcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tMTF4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tMTF4bF9fX3VTZVd6XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTExeGxfX19qcUctSVwiXG59OyIsICJpbXBvcnQgZ3JpZFN0eWxlcyBmcm9tIFwiLi9ncmlkLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgR3JpZENvbHVtbnMgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG5cbmV4cG9ydCB0eXBlIEdyaWRQcm9wcyA9IHtcbiAgY29sdW1uczogR3JpZENvbHVtbnM7XG4gIGdhcD86IFRTaGlydFNpemUgfCB7IHJvdz86IFRTaGlydFNpemU7IGNvbHVtbj86IFRTaGlydFNpemUgfTtcbiAgYWxpZ25JdGVtcz86IFwic3RyZXRjaFwiIHwgXCJjZW50ZXJcIiB8IFwic3RhcnRcIiB8IFwiZW5kXCI7XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkUGx1Z2luUHJvcHMgPSB7ICRncmlkPzogR3JpZFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBncmlkUGx1Z2luID0gZ2V0UGx1Z2luPEdyaWRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZ3JpZCB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkZ3JpZCkge1xuICAgIHJldHVybiB7ICRncmlkOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgY29sdW1ucywgZ2FwLCBhbGlnbkl0ZW1zIH0gPSAkZ3JpZDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIGdyaWRTdHlsZXMuZ3JpZCxcbiAgICAgIGdyaWRTdHlsZXNbYGdyaWRfX2NvbHVtbnMtLSR7Y29sdW1uc31gXSxcbiAgICAgIGFsaWduSXRlbXMgPyBncmlkU3R5bGVzW2BncmlkX19hbGlnbkl0ZW1zLS0ke2FsaWduSXRlbXN9YF0gOiB1bmRlZmluZWQsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZ3JpZFN0eWxlc1tgZ3JpZF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcblxuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICBdLFxuXG4gICAgJGdyaWQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibWF4LXdpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLWZ1bGxfX19ub0lrVFwiLFxuICBcIm1heC13aWR0aC0tY29udGVudFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1jb250ZW50X19feWtzVXJcIixcbiAgXCJtYXgtd2lkdGgtLXplcm9cIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0temVyb19fXzhOVUYxXCIsXG4gIFwibWF4LXdpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNHhzX19fZ0hsTElcIixcbiAgXCJtYXgtd2lkdGgtLTN4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeHNfX19yZG9QOFwiLFxuICBcIm1heC13aWR0aC0teHhzXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXh4c19fX2pscDh2XCIsXG4gIFwibWF4LXdpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14c19fX2tRc1d4XCIsXG4gIFwibWF4LXdpZHRoLS1zXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXNfX19NZ0dhelwiLFxuICBcIm1heC13aWR0aC0tbVwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1tX19fYUZ6U2NcIixcbiAgXCJtYXgtd2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tbF9fX2lLbGFIXCIsXG4gIFwibWF4LXdpZHRoLS14bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14bF9fXzR6VWRDXCIsXG4gIFwibWF4LXdpZHRoLS14eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0teHhsX19fNTh6M1BcIixcbiAgXCJtYXgtd2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeGxfX18yWVhuSFwiLFxuICBcIm1heC13aWR0aC0tNHhsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTR4bF9fX2pGSjlWXCIsXG4gIFwibWF4LXdpZHRoLS01eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNXhsX19fNy1WUUdcIixcbiAgXCJtYXgtd2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS02eGxfX19QUzM3SlwiLFxuICBcIm1heC13aWR0aC0tN3hsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTd4bF9fX3NTQndrXCIsXG4gIFwibWF4LXdpZHRoLS04eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tOHhsX19fVjNJSHlcIixcbiAgXCJtYXgtd2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS05eGxfX180VldFTVwiLFxuICBcIm1heC13aWR0aC0tMTB4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0xMHhsX19fejk3VFFcIixcbiAgXCJtYXgtd2lkdGgtLTExeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tMTF4bF9fX2p4ZW5YXCIsXG4gIFwibWluLXdpZHRoXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGhfX19xbmxZQ1wiLFxuICBcIm1pbi13aWR0aC0tZml0XCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWZpdF9fXzJXLVREXCIsXG4gIFwibWluLXdpZHRoLS16ZXJvXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXplcm9fX185NDI5U1wiLFxuICBcIm1pbi13aWR0aC0tNHhzXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTR4c19fXzNUR00tXCIsXG4gIFwibWluLXdpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hzX19fUjZqMzJcIixcbiAgXCJtaW4td2lkdGgtLXh4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS14eHNfX192aktkQ1wiLFxuICBcIm1pbi13aWR0aC0teHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teHNfX19WLUwxc1wiLFxuICBcIm1pbi13aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS1zX19fZElmWm1cIixcbiAgXCJtaW4td2lkdGgtLW1cIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tbV9fX0pINUlQXCIsXG4gIFwibWluLXdpZHRoLS1sXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWxfX19HZ2tFOFwiLFxuICBcIm1pbi13aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teGxfX19hR0x1aVwiLFxuICBcIm1pbi13aWR0aC0teHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXh4bF9fX3pRT3RUXCIsXG4gIFwibWluLXdpZHRoLS0zeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hsX19fSmV2RFpcIixcbiAgXCJtaW4td2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS00eGxfX18xZTZOMVwiLFxuICBcIm1pbi13aWR0aC0tNXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTV4bF9fX0t1bXRvXCIsXG4gIFwibWluLXdpZHRoLS02eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tNnhsX19fWUVrbThcIixcbiAgXCJtaW4td2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS03eGxfX192WDFGWVwiLFxuICBcIm1pbi13aWR0aC0tOHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTh4bF9fX1ZiUWhrXCIsXG4gIFwibWluLXdpZHRoLS05eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tOXhsX19fZVVLUWlcIixcbiAgXCJtaW4td2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tMTB4bF9fX1pvTjNOXCIsXG4gIFwibWluLXdpZHRoLS0xMXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTExeGxfX19CTkZqQVwiLFxuICBcIndpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tZnVsbF9fXzFtcGl6XCIsXG4gIFwid2lkdGgtLXN0cmV0Y2hcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1zdHJldGNoX19fUnF3MDBcIixcbiAgXCJ3aWR0aC0temVyb1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXplcm9fX19JTmRWdlwiLFxuICBcIndpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS00eHNfX19kUlVoV1wiLFxuICBcIndpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0zeHNfX19vUkowelwiLFxuICBcIndpZHRoLS14eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14eHNfX19IeWw5UlwiLFxuICBcIndpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXhzX19fRzNqUXpcIixcbiAgXCJ3aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXNfX18tbXpxbVwiLFxuICBcIndpZHRoLS1tXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tbV9fX21FWjc3XCIsXG4gIFwid2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1sX19fcXlJTjdcIixcbiAgXCJ3aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14bF9fX21PMjVJXCIsXG4gIFwid2lkdGgtLXh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXh4bF9fX0VHUU1wXCIsXG4gIFwid2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTN4bF9fX0h1bDctXCIsXG4gIFwid2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTR4bF9fX3pPUGJTXCIsXG4gIFwid2lkdGgtLTV4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTV4bF9fX3hicW5pXCIsXG4gIFwid2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTZ4bF9fX05tYmY5XCIsXG4gIFwid2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTd4bF9fX0IwbnZ3XCIsXG4gIFwid2lkdGgtLTh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTh4bF9fX1cxSERQXCIsXG4gIFwid2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTl4bF9fX0tKTDhVXCIsXG4gIFwid2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0xMHhsX19fOTR6MTlcIixcbiAgXCJ3aWR0aC0tMTF4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTExeGxfX19qQi1MblwiXG59OyIsICJpbXBvcnQgd2lkdGhTdHlsZXMgZnJvbSBcIi4vd2lkdGgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBzdHlsZVBsdWdpbiB9IGZyb20gXCIuLi9zdHlsZS9zdHlsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG4vKiogQSBzaGFyZSBvZiB0aGUgcGFyZW50J3Mgd2lkdGgsIGUuZy4gYFwiMzAlXCJgLCBmb3IgbGF5b3V0cyB0aGF0IGRpdmlkZSBhIHJvdyByYXRoZXIgdGhhbiBzaXplIGEgYm94LiAqL1xuZXhwb3J0IHR5cGUgUGVyY2VudGFnZSA9IGAke251bWJlcn0lYDtcblxuZXhwb3J0IHR5cGUgJFdpZHRoUHJvcHMgPSB7XG4gIHdpZHRoPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBQZXJjZW50YWdlO1xuICBtaW4/OiBUU2hpcnRTaXplIHwgXCJmaXRcIiB8IFBlcmNlbnRhZ2U7XG4gIG1heD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwiY29udGVudFwiIHwgUGVyY2VudGFnZTtcbn07XG5cbmV4cG9ydCB0eXBlIFdpZHRoUGx1Z2luUHJvcHMgPSB7ICR3aWR0aD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwic3RyZXRjaFwiIHwgUGVyY2VudGFnZSB8ICRXaWR0aFByb3BzIH07XG5cbmNvbnN0IGlzUGVyY2VudGFnZSA9ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgUGVyY2VudGFnZSA9PiB2YWx1ZT8uZW5kc1dpdGgoXCIlXCIpID09PSB0cnVlO1xuXG5leHBvcnQgY29uc3Qgd2lkdGhQbHVnaW4gPSBnZXRQbHVnaW48V2lkdGhQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICR3aWR0aCwgJGNsYXNzTmFtZSwgJHN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgeyB3aWR0aCwgbWluLCBtYXggfSA9IHR5cGVvZiAkd2lkdGggPT09IFwic3RyaW5nXCIgPyB7IHdpZHRoOiAkd2lkdGggfSA6ICgkd2lkdGggPz8ge30pO1xuICBjb25zdCBwZXJjZW50YWdlcyA9IHtcbiAgICAuLi4oaXNQZXJjZW50YWdlKHdpZHRoKSA/IHsgd2lkdGggfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1pbikgPyB7IG1pbldpZHRoOiBtaW4gfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1heCkgPyB7IG1heFdpZHRoOiBtYXggfSA6IHt9KSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHdpZHRoICYmICFpc1BlcmNlbnRhZ2Uod2lkdGgpID8gd2lkdGhTdHlsZXNbYHdpZHRoLS0ke3dpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluICYmICFpc1BlcmNlbnRhZ2UobWluKSA/IHdpZHRoU3R5bGVzW2BtaW4td2lkdGgtLSR7bWlufWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWF4ICYmICFpc1BlcmNlbnRhZ2UobWF4KSA/IHdpZHRoU3R5bGVzW2BtYXgtd2lkdGgtLSR7bWF4fWBdIDogdW5kZWZpbmVkLFxuICAgICAgJGNsYXNzTmFtZSxcbiAgICBdLFxuICAgICRzdHlsZTogT2JqZWN0LmtleXMocGVyY2VudGFnZXMpLmxlbmd0aCA+IDAgPyB7IC4uLiRzdHlsZSwgLi4ucGVyY2VudGFnZXMgfSA6ICRzdHlsZSxcbiAgICAkd2lkdGg6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5leHBvcnQgdHlwZSBTdHlsZVBsdWdpblByb3BzID0geyAkc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzOyBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfTtcblxuZXhwb3J0IGNvbnN0IHN0eWxlUGx1Z2luID0gZ2V0UGx1Z2luPFN0eWxlUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCAkc3R5bGUgPSBwcm9wcy4kc3R5bGUgfHwge307XG5cbiAgY29uc3Qgc3R5bGUgPSBwcm9wcy5zdHlsZSB8fCB7fTtcblxuICByZXR1cm4ge1xuICAgIHN0eWxlOiB7IC4uLiRzdHlsZSwgLi4uc3R5bGUgfSxcbiAgICAkc3R5bGU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJtYXgtaGVpZ2h0LS1mdWxsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tZnVsbF9fXy1pb2pmXCIsXG4gIFwibWF4LWhlaWdodC0temVyb1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXplcm9fX19kNTd3V1wiLFxuICBcIm1heC1oZWlnaHQtLTR4c1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTR4c19fX0xKVUJuXCIsXG4gIFwibWF4LWhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hzX19fLTJXby1cIixcbiAgXCJtYXgtaGVpZ2h0LS14eHNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS14eHNfX19oRnJCZVwiLFxuICBcIm1heC1oZWlnaHQtLXhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teHNfX19jMnBhRFwiLFxuICBcIm1heC1oZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS1zX19fQWNwNlRcIixcbiAgXCJtYXgtaGVpZ2h0LS1tXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tbV9fX1Z6b1E5XCIsXG4gIFwibWF4LWhlaWdodC0tbFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLWxfX19XZ2xxYlwiLFxuICBcIm1heC1oZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teGxfX19MVW1sSlwiLFxuICBcIm1heC1oZWlnaHQtLXh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXh4bF9fX2RSM3pLXCIsXG4gIFwibWF4LWhlaWdodC0tM3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hsX19fYnViVERcIixcbiAgXCJtYXgtaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS00eGxfX19iZFpYNlwiLFxuICBcIm1heC1oZWlnaHQtLTV4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTV4bF9fX1RVVEFSXCIsXG4gIFwibWF4LWhlaWdodC0tNnhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tNnhsX19fR2MtSGxcIixcbiAgXCJtYXgtaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS03eGxfX19ZeGR0WFwiLFxuICBcIm1heC1oZWlnaHQtLTh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTh4bF9fX0EyV3ZkXCIsXG4gIFwibWF4LWhlaWdodC0tOXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tOXhsX19fSnZyR0pcIixcbiAgXCJtYXgtaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tMTB4bF9fX3dMUlF1XCIsXG4gIFwibWF4LWhlaWdodC0tMTF4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTExeGxfX19nVTN4SVwiLFxuICBcIm1pbi1oZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS16ZXJvX19fUEJWNDdcIixcbiAgXCJtaW4taGVpZ2h0LS00eHNcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS00eHNfX19WM04tYlwiLFxuICBcIm1pbi1oZWlnaHQtLTN4c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4c19fX3RnRFFRXCIsXG4gIFwibWluLWhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0teHhzX19fLXFoU3pcIixcbiAgXCJtaW4taGVpZ2h0LS14c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhzX19fWklwcXVcIixcbiAgXCJtaW4taGVpZ2h0LS1zXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tc19fX3hNaUdjXCIsXG4gIFwibWluLWhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLW1fX19WRVdMclwiLFxuICBcIm1pbi1oZWlnaHQtLWxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS1sX19fYTYtRjdcIixcbiAgXCJtaW4taGVpZ2h0LS14bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhsX19fLXlsRnVcIixcbiAgXCJtaW4taGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS14eGxfX183SzZmLVwiLFxuICBcIm1pbi1oZWlnaHQtLTN4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4bF9fXzBGWlFtXCIsXG4gIFwibWluLWhlaWdodC0tNHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tNHhsX19fY0dvSmtcIixcbiAgXCJtaW4taGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS01eGxfX19mVjNhT1wiLFxuICBcIm1pbi1oZWlnaHQtLTZ4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTZ4bF9fX0ZrVUdDXCIsXG4gIFwibWluLWhlaWdodC0tN3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tN3hsX19fQ3Npd1ZcIixcbiAgXCJtaW4taGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS04eGxfX19oLS1ES1wiLFxuICBcIm1pbi1oZWlnaHQtLTl4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTl4bF9fX25GTVNIXCIsXG4gIFwibWluLWhlaWdodC0tMTB4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTEweGxfX19LYS1jQVwiLFxuICBcIm1pbi1oZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS0xMXhsX19fZlFzZ2NcIixcbiAgXCJoZWlnaHQtLXN0cmV0Y2hcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXN0cmV0Y2hfX19yWWFZblwiLFxuICBcImhlaWdodC0tZnVsbFwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tZnVsbF9fX3ZXeGllXCIsXG4gIFwiaGVpZ2h0LS1hdXRvXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1hdXRvX19fNjduRk5cIixcbiAgXCJoZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXplcm9fX19BcUEwUFwiLFxuICBcImhlaWdodC0tNHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS00eHNfX19GZEowaFwiLFxuICBcImhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0zeHNfX19hc1VKYlwiLFxuICBcImhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14eHNfX19ZcVRxcFwiLFxuICBcImhlaWdodC0teHNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXhzX19fbE5SdFlcIixcbiAgXCJoZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXNfX19IN20tLVwiLFxuICBcImhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tbV9fX0NtTHAxXCIsXG4gIFwiaGVpZ2h0LS1sXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1sX19fMnRra2hcIixcbiAgXCJoZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14bF9fXzd4QkppXCIsXG4gIFwiaGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXh4bF9fX0NqU3U1XCIsXG4gIFwiaGVpZ2h0LS0zeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTN4bF9fX3BVZHZOXCIsXG4gIFwiaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTR4bF9fX1FIWll5XCIsXG4gIFwiaGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTV4bF9fX1diZ283XCIsXG4gIFwiaGVpZ2h0LS02eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTZ4bF9fX2t3YzhhXCIsXG4gIFwiaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTd4bF9fX211TzFsXCIsXG4gIFwiaGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTh4bF9fXzlwRU1OXCIsXG4gIFwiaGVpZ2h0LS05eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTl4bF9fXzZlNDZRXCIsXG4gIFwiaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0xMHhsX19fWGdYcC1cIixcbiAgXCJoZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTExeGxfX19hZHd1SFwiXG59OyIsICJpbXBvcnQgaGVpZ2h0U3R5bGVzIGZyb20gXCIuL2hlaWdodC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlICRIZWlnaHRQcm9wcyA9IHtcbiAgaGVpZ2h0PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBcImF1dG9cIjtcbiAgbWluPzogVFNoaXJ0U2l6ZTtcbiAgbWF4PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xufTtcblxuZXhwb3J0IHR5cGUgSGVpZ2h0UGx1Z2luUHJvcHMgPSB7ICRoZWlnaHQ/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCBcImF1dG9cIiB8IFwic3RyZXRjaFwiIHwgJEhlaWdodFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBoZWlnaHRQbHVnaW4gPSBnZXRQbHVnaW48SGVpZ2h0UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGhlaWdodCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgaGVpZ2h0LCBtaW4sIG1heCB9ID0gdHlwZW9mICRoZWlnaHQgPT09IFwic3RyaW5nXCIgPyB7IGhlaWdodDogJGhlaWdodCB9IDogKCRoZWlnaHQgPz8ge30pO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgaGVpZ2h0ID8gaGVpZ2h0U3R5bGVzW2BoZWlnaHQtLSR7aGVpZ2h0fWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluID8gaGVpZ2h0U3R5bGVzW2BtaW4taGVpZ2h0LS0ke21pbn1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIG1heCA/IGhlaWdodFN0eWxlc1tgbWF4LWhlaWdodC0tJHttYXh9YF0gOiB1bmRlZmluZWQsXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG4gICAgJGhlaWdodDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBjb2xvclN0eWxlcyBmcm9tIFwiLi9jb2xvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSBUZXh0Q29sb3IgPSBDb2xvciB8IFRleHRDb2xvckFsaWFzO1xuXG5leHBvcnQgdHlwZSAkQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogVGV4dENvbG9yO1xuICByZWFkb25seSBob3Zlcj86IFRleHRDb2xvcjtcbiAgcmVhZG9ubHkgZGlzYWJsZWQ/OiBUZXh0Q29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSBDb2xvclBsdWdpblByb3BzID0geyByZWFkb25seSAkY29sb3I/OiBUZXh0Q29sb3IgfCAkQ29sb3JQcm9wcyB9O1xuZXhwb3J0IHR5cGUgVGV4dENvbG9yQWxpYXMgPSBrZXlvZiB0eXBlb2YgYWxpYXNUb05vbWluYWw7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0ge1xuICB0ZXh0TXV0ZWQ6IFwiZ3JleTI1XCIsXG4gIHRleHREZWZhdWx0OiBcImdyZXkyMFwiLFxuICB0ZXh0SGlnaGxpZ2h0OiBcImdyZXkxMFwiLFxufSBhcyBjb25zdDtcblxuY29uc3QgaXNUZXh0Q29sb3JBbGlhcyA9IChjb2xvcjogVGV4dENvbG9yKTogY29sb3IgaXMgVGV4dENvbG9yQWxpYXMgPT4gY29sb3IgaW4gYWxpYXNUb05vbWluYWw7XG5cbmV4cG9ydCBjb25zdCBjb2xvclBsdWdpbiA9IGdldFBsdWdpbjxDb2xvclBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRjbGFzc05hbWUsICRjb2xvciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZGlzYWJsZWQgfSA9IHR5cGVvZiAkY29sb3IgPT09IFwic3RyaW5nXCIgPyB7IG5vcm1hbDogJGNvbG9yIH0gOiAoJGNvbG9yID8/IHt9KTtcblxuICBjb25zdCBub3JtYWxDb2xvciA9IG5vcm1hbCA/IChpc1RleHRDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaG92ZXJDb2xvciA9IGhvdmVyID8gKGlzVGV4dENvbG9yQWxpYXMoaG92ZXIpID8gYWxpYXNUb05vbWluYWxbaG92ZXJdIDogaG92ZXIpIDogdW5kZWZpbmVkO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgPyAoaXNUZXh0Q29sb3JBbGlhcyhkaXNhYmxlZCkgPyBhbGlhc1RvTm9taW5hbFtkaXNhYmxlZF0gOiBkaXNhYmxlZCkgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICAkY2xhc3NOYW1lLFxuICAgICAgbm9ybWFsQ29sb3IgPyBjb2xvclN0eWxlc1tgY29sb3ItLSR7bm9ybWFsQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBob3ZlckNvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWhvdmVyLS0ke2hvdmVyQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBkaXNhYmxlZENvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWRpc2FibGVkLS0ke2Rpc2FibGVkQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkY29sb3I6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2NvbG9yL2NvbG9yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiY29sb3ItLWluaGVyaXRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1pbmhlcml0X19fR01wLWFcIixcbiAgXCJjb2xvci1ob3Zlci0taW5oZXJpdFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWluaGVyaXRfX19mR0xLNlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1pbmhlcml0XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0taW5oZXJpdF9fX3M5TUNJXCIsXG4gIFwiY29sb3ItLXdoaXRlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0td2hpdGVfX19mOGMxc1wiLFxuICBcImNvbG9yLWhvdmVyLS13aGl0ZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdoaXRlX19fTTZhUmdcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0td2hpdGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13aGl0ZV9fX250allFXCIsXG4gIFwiY29sb3ItLXRyYW5zcGFyZW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tdHJhbnNwYXJlbnRfX18xdmZydlwiLFxuICBcImNvbG9yLWhvdmVyLS10cmFuc3BhcmVudFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXRyYW5zcGFyZW50X19feG03QkRcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tdHJhbnNwYXJlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS10cmFuc3BhcmVudF9fX1owUXVVXCIsXG4gIFwiY29sb3ItLWdyZXkxMDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MTAwX19fQ3BEenZcIixcbiAgXCJjb2xvci1ob3Zlci0tZ3JleTEwMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkxMDBfX19HRkNvbVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MTAwXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tZ3JleTEwMF9fXzhTUnVKXCIsXG4gIFwiY29sb3ItLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk4MF9fX0Q3MWZuXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk4MF9fX3NCSXhiXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk4MF9fX3cxbnBjXCIsXG4gIFwiY29sb3ItLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk2MF9fX1VUMjhYXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk2MF9fX3hmWm1iXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk2MF9fX21mVmdxXCIsXG4gIFwiY29sb3ItLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk0MF9fX2lST3pSXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk0MF9fX3JiTjA0XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk0MF9fX05pWnhpXCIsXG4gIFwiY29sb3ItLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkzMF9fX0x3bkwyXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkzMF9fX1g3aC1oXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkzMF9fX0txOWdXXCIsXG4gIFwiY29sb3ItLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkyNV9fX0VOVDVvXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkyNV9fX3RZeWdEXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkyNV9fX2JtLTFjXCIsXG4gIFwiY29sb3ItLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkyMF9fX0VGMk9MXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkyMF9fX3VQdFhVXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkyMF9fX3ZwdXkxXCIsXG4gIFwiY29sb3ItLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkxMF9fX2w1YVpwXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkxMF9fXzRBcGNyXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkxMF9fX1k1cXl3XCIsXG4gIFwiY29sb3ItLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk3MF9fX0M5SEhNXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk3MF9fXzNrcnRMXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk3MF9fXzg2SnFWXCIsXG4gIFwiY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fLTNUZGRcIixcbiAgXCJjb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVfX19Eb2ZvMFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5ODBBbHBoYTg1XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tZ3JleTgwQWxwaGE4NV9fX2VSM3pzXCIsXG4gIFwiY29sb3ItLXByaW1hcnlcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1wcmltYXJ5X19fMDhXblZcIixcbiAgXCJjb2xvci1ob3Zlci0tcHJpbWFyeVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXByaW1hcnlfX19WdC0zZlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1wcmltYXJ5XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tcHJpbWFyeV9fXzBYc2s5XCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1zdWNjZXNzX19fd29URjJcIixcbiAgXCJjb2xvci1ob3Zlci0tc3VjY2Vzc1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXN1Y2Nlc3NfX183RUlXY1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1zdWNjZXNzXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tc3VjY2Vzc19fX05lMldJXCIsXG4gIFwiY29sb3ItLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLW5vdGljZV9fXzZENktHXCIsXG4gIFwiY29sb3ItaG92ZXItLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLW5vdGljZV9fX2VPZFVwXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLW5vdGljZV9fX3NEbzhyXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS13YXJuaW5nX19fZktid2RcIixcbiAgXCJjb2xvci1ob3Zlci0td2FybmluZ1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdhcm5pbmdfX19HajJoTVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS13YXJuaW5nXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0td2FybmluZ19fX3JYRGJSXCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tY3JpdGljYWxfX19zaEZCcVwiLFxuICBcImNvbG9yLWhvdmVyLS1jcml0aWNhbFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNyaXRpY2FsX19fUlFXWllcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tY3JpdGljYWxcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1jcml0aWNhbF9fX2gzNy0zXCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tc3VjY2Vzc1RpbnRfX19EZDBSeVwiLFxuICBcImNvbG9yLWhvdmVyLS1zdWNjZXNzVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXN1Y2Nlc3NUaW50X19fTEtsemdcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tc3VjY2Vzc1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1zdWNjZXNzVGludF9fX2xzbUpoXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0td2FybmluZ1RpbnRfX19qM1BaWFwiLFxuICBcImNvbG9yLWhvdmVyLS13YXJuaW5nVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdhcm5pbmdUaW50X19fam4xd3VcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0td2FybmluZ1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13YXJuaW5nVGludF9fX1c2akk4XCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsVGludF9fX3lSSmFBXCIsXG4gIFwiY29sb3ItaG92ZXItLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNyaXRpY2FsVGludF9fX1Zzb041XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsVGludF9fX1RBQkhrXCIsXG4gIFwiY29sb3ItLWxpbmtcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1saW5rX19fblNNbTlcIixcbiAgXCJjb2xvci1ob3Zlci0tbGlua1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWxpbmtfX19HbmlZM1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1saW5rXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tbGlua19fX0ZvSjVYXCIsXG4gIFwiY29sb3ItLWNvZGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1jb2RlX19fbkNPakFcIixcbiAgXCJjb2xvci1ob3Zlci0tY29kZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNvZGVfX19WNXV1VlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1jb2RlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tY29kZV9fX3czVlV3XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZ3JhZGllbnRTdHlsZXMgZnJvbSBcIi4vZ3JhZGllbnQubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgR3JhZGllbnRQbHVnaW5Qcm9wcyA9IHsgJGdyYWRpZW50PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgZ3JhZGllbnRQbHVnaW4gPSBnZXRQbHVnaW48R3JhZGllbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBwcm9wcy4kZ3JhZGllbnQgPyBncmFkaWVudFN0eWxlcy5ncmFkaWVudCA6IHVuZGVmaW5lZF0sXG4gICRncmFkaWVudDogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2dyYWRpZW50L2dyYWRpZW50Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JhZGllbnRcIjogXCJncmFkaWVudC1tb2R1bGVfX2dyYWRpZW50X19fTURCdkZcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IERyYWdnYWJsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyBhY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9fc2hhcmVkL2RyYWdnZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9kcmFnZ2FibGUubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBkcmFnZ2FibGVQbHVnaW4gPSBnZXRQbHVnaW48RHJhZ2dhYmxlUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGRyYWdnYWJsZSkge1xuICAgIHJldHVybiB7ICRkcmFnZ2FibGU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgY29uc3QgW2RyYWdnaW5nLCBzZXREcmFnZ2luZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBjb250ZXh0LCBpdGVtIH0gPSBwcm9wcy4kZHJhZ2dhYmxlO1xuXG4gIGNvbnN0IGRyYWdnZWRJdGVtU3RhdGUgPSB1c2VTeW5jSW5qZWN0KGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlLCBjb250ZXh0KTtcblxuICByZXR1cm4ge1xuICAgIGRyYWdnYWJsZTogdHJ1ZSxcblxuICAgICR2aXN1YWxseUhpZGRlbjogZHJhZ2dpbmcsXG5cbiAgICBvbkRyYWdTdGFydDogYWN0aW9uKChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBcIm1vdmVcIjtcblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25EcmFnU3RhcnQ/LihldmVudCk7XG5cbiAgICAgIG1ha2VDaHJvbWl1bU5vdEdsaXRjaFdoZW5EcmFnZ2luZyhldmVudCk7XG5cbiAgICAgIGRyYWdnZWRJdGVtU3RhdGUuc2V0KGl0ZW0pO1xuXG4gICAgICAvLyBEb24ndCBzZXQgZHJhZ2dpbmcgdG9vIGVhcmx5LCBiZWNhdXNlIGl0IHdvdWxkIGhpZGUgdGhlIFwiZHJhZyBwcmV2aWV3XCIgZm9yIGVsZW1lbnQgYmVpbmcgZHJhZ2dlZC5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXREcmFnZ2luZyh0cnVlKTtcbiAgICAgIH0sIDApO1xuICAgIH0pLFxuXG4gICAgb25EcmFnRW5kOiBhY3Rpb24oKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBwcm9wcy5vbkRyYWdFbmQ/LihldmVudCk7XG5cbiAgICAgIGRyYWdnZWRJdGVtU3RhdGUuc2V0KHVuZGVmaW5lZCk7XG4gICAgICBzZXREcmFnZ2luZyhmYWxzZSk7XG4gICAgfSksXG5cbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgc3R5bGVzLmRyYWdnYWJsZV0sXG5cbiAgICAkZHJhZ2dhYmxlOiB1bmRlZmluZWQsXG4gIH07XG59KTtcblxuY29uc3QgbWFrZUNocm9taXVtTm90R2xpdGNoV2hlbkRyYWdnaW5nID0gKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9wbGFpblwiLCBcInN0dWItZGF0YS10by1maXgtY2hyb21pdW1cIik7XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2RyYWdnYWJsZS5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImRyYWdnYWJsZVwiOiBcImRyYWdnYWJsZS1tb2R1bGVfX2RyYWdnYWJsZV9fX2JqQ0EzXCJcbn07IiwgImltcG9ydCB7IGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IG1ha2VTdXJlRHJhZ0FuZERyb3BFdmVudHNIYXZlVGltZVRvSGFwcGVuSW5qZWN0YWJsZSB9IGZyb20gXCIuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgRHJvcHBhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IGRyb3BwYWJsZVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wcGFibGVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGRyb3BwYWJsZSkge1xuICAgIHJldHVybiB7ICRkcm9wcGFibGU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgY29uc3QgeyBjb250ZXh0LCBvbkRyb3AgfSA9IHByb3BzLiRkcm9wcGFibGU7XG5cbiAgY29uc3QgZHJhZ2dlZEl0ZW1TdGF0ZSA9IHVzZVN5bmNJbmplY3QoZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUsIGNvbnRleHQpO1xuICBjb25zdCBzb21lID0gdXNlU3luY0luamVjdChtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUpO1xuXG4gIGNvbnN0IGRyYWdnZWRJdGVtID0gZHJhZ2dlZEl0ZW1TdGF0ZS5nZXQoKTtcblxuICByZXR1cm4ge1xuICAgIG9uRHJhZ092ZXI6IChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25EcmFnT3Zlcj8uKGV2ZW50KTtcblxuICAgICAgaWYgKGRyYWdnZWRJdGVtKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uRHJvcDogKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBwcm9wcy5vbkRyb3A/LihldmVudCk7XG5cbiAgICAgIGlmIChkcmFnZ2VkSXRlbSkge1xuICAgICAgICBzb21lKCgpID0+IHtcbiAgICAgICAgICBvbkRyb3AoZHJhZ2dlZEl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJGRyb3BwYWJsZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0cmFuc2l0aW9uU3R5bGVzIGZyb20gXCIuL3RyYW5zaXRpb24ubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgVHJhbnNpdGlvblBsdWdpblByb3BzID0geyAkdHJhbnNpdGlvbj86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zaXRpb25QbHVnaW4gPSBnZXRQbHVnaW48VHJhbnNpdGlvblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3RyYW5zaXRpb25TdHlsZXMudHJhbnNpdGlvbl06ICEhcHJvcHMuJHRyYW5zaXRpb24gfV0sXG4gICR0cmFuc2l0aW9uOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwidHJhbnNpdGlvblwiOiBcInRyYW5zaXRpb24tbW9kdWxlX190cmFuc2l0aW9uX19fU3d3T0VcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBvZmZzZXRTdHlsZXMgZnJvbSBcIi4vb2Zmc2V0Lm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IERpcmVjdGlvbiB9IGZyb20gXCIuLi9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlIE9mZnNldFBsdWdpblByb3BzID0geyAkb2Zmc2V0PzogeyBkaXJlY3Rpb246IERpcmVjdGlvbjsgc2l6ZTogVFNoaXJ0U2l6ZSB9IH07XG5cbmV4cG9ydCBjb25zdCBvZmZzZXRQbHVnaW4gPSBnZXRQbHVnaW48T2Zmc2V0UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJG9mZnNldCkge1xuICAgIHJldHVybiB7ICRvZmZzZXQ6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgb2Zmc2V0U3R5bGVzW2BvZmZzZXRfXyR7cHJvcHMuJG9mZnNldC5kaXJlY3Rpb259LS0ke3Byb3BzLiRvZmZzZXQuc2l6ZX1gXV0sXG5cbiAgICAkb2Zmc2V0OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vZmZzZXQvb2Zmc2V0Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib2Zmc2V0X190b3AtLXplcm9cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0temVyb19fX2Fwck9yXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXplcm9cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0temVyb19fX2JGTnk0XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS16ZXJvX19fNUtkTXhcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0temVyb19fX0RyajB1XCIsXG4gIFwib2Zmc2V0X190b3AtLTR4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS00eHNfX19GYTh6ZVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tNHhzX19fSmM3WndcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTR4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tNHhzX19fdDdqR3pcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS00eHNfX18ybWNMWlwiLFxuICBcIm9mZnNldF9fdG9wLS0zeHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tM3hzX19faEh4QUtcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTN4c19fX3FQM0x2XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0zeHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTN4c19fX05tRDdpXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tM3hzX19fOVlsdWVcIixcbiAgXCJvZmZzZXRfX3RvcC0teHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXh4c19fX1pBS3hvXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS14eHNfX19rOUY0eFwiLFxuICBcIm9mZnNldF9fbGVmdC0teHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS14eHNfX19FRWY0RFwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXh4c19fXy1KNzVLXCIsXG4gIFwib2Zmc2V0X190b3AtLXhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXhzX19faXJwbmFcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0teHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0teHNfX18zR1hvSFwiLFxuICBcIm9mZnNldF9fbGVmdC0teHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXhzX19fN1dZSklcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS14c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXhzX19fcVktbE9cIixcbiAgXCJvZmZzZXRfX3RvcC0tc1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1zX19fTmRSS3FcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tc1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1zX19fWUtmOWVcIixcbiAgXCJvZmZzZXRfX2xlZnQtLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXNfX19taXhwQVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1zX19fbTZqZjVcIixcbiAgXCJvZmZzZXRfX3RvcC0tbVwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1tX19fRVhrcWlcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tbVwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1tX19fT3ZsWXJcIixcbiAgXCJvZmZzZXRfX2xlZnQtLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLW1fX19YUy1QR1wiLFxuICBcIm9mZnNldF9fcmlnaHQtLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1tX19fbzB6Wi1cIixcbiAgXCJvZmZzZXRfX3RvcC0tbFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1sX19fMGJHYVBcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tbFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1sX19fUzEtTFdcIixcbiAgXCJvZmZzZXRfX2xlZnQtLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLWxfX19oUzFiM1wiLFxuICBcIm9mZnNldF9fcmlnaHQtLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1sX19fdlE0WXpcIixcbiAgXCJvZmZzZXRfX3RvcC0teGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0teGxfX182TWZLVlwiLFxuICBcIm9mZnNldF9fYm90dG9tLS14bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS14bF9fX2RnYldXXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS14bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0teGxfX18wYVdCNVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0teGxfX195UHo4T1wiLFxuICBcIm9mZnNldF9fdG9wLS14eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0teHhsX19faXZKUmRcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLXh4bF9fX1p0RTZaXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS14eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXh4bF9fXzRsSy1FXCIsXG4gIFwib2Zmc2V0X19yaWdodC0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0teHhsX19fRU04ckJcIixcbiAgXCJvZmZzZXRfX3RvcC0tM3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTN4bF9fX0E5QmtuXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS0zeGxfX196QzgtYVwiLFxuICBcIm9mZnNldF9fbGVmdC0tM3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0zeGxfX19XckwtVFwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTN4bF9fX25lV2FwXCIsXG4gIFwib2Zmc2V0X190b3AtLTR4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS00eGxfX19CV1E5aVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tNHhsX19fOFg0a0VcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTR4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tNHhsX19fSGM0MFRcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS00eGxfX19zUmpHUVwiLFxuICBcIm9mZnNldF9fdG9wLS01eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tNXhsX19fNnVSWFlcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTV4bF9fX25XYzZuXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS01eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTV4bF9fX1ZrV3pKXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tNXhsX19fY25nS0VcIixcbiAgXCJvZmZzZXRfX3RvcC0tNnhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTZ4bF9fX3RyN2hIXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS02eGxfX19DWVUxTVwiLFxuICBcIm9mZnNldF9fbGVmdC0tNnhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS02eGxfX18wSXVNYlwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTZ4bF9fXy0xc3dvXCIsXG4gIFwib2Zmc2V0X190b3AtLTd4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS03eGxfX19ONy1YZFwiLFxuICBcIm9mZnNldF9fYm90dG9tLS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tN3hsX19fLXBBaHlcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTd4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tN3hsX19fbXhWcmtcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS03eGxfX19uenVsUFwiLFxuICBcIm9mZnNldF9fdG9wLS04eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tOHhsX19fZU0tN1dcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTh4bF9fX2VucEVtXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS04eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTh4bF9fX2ppRlluXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tOHhsX19fRk5xTnNcIixcbiAgXCJvZmZzZXRfX3RvcC0tOXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTl4bF9fXy1DbWg5XCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS05eGxfX190d0UzdFwiLFxuICBcIm9mZnNldF9fbGVmdC0tOXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS05eGxfX183NW11YlwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTl4bF9fX2tDU3NDXCIsXG4gIFwib2Zmc2V0X190b3AtLTEweGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tMTB4bF9fX2psYmhaXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTEweGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tMTB4bF9fX3JleVRxXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0xMHhsX19fOXAzY25cIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tMTB4bF9fX3Qtdm83XCIsXG4gIFwib2Zmc2V0X190b3AtLTExeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tMTF4bF9fXzBuclphXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTExeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tMTF4bF9fX3djZldnXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0xMXhsX19fc0l0ZzVcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tMTF4bF9fX05VcC1uXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgb2Zmc2V0U3R5bGVzIGZyb20gXCIuL29mZnNldC1jaGlsZHJlbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3Rpb24gfSBmcm9tIFwiLi4vX3NoYXJlZC9kaXJlY3Rpb25zXCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBPZmZzZXRDaGlsZHJlblBsdWdpblByb3BzID0geyAkb2Zmc2V0Q2hpbGRyZW4/OiB7IGRpcmVjdGlvbjogRGlyZWN0aW9uOyBzaXplOiBUU2hpcnRTaXplIH0gfTtcblxuZXhwb3J0IGNvbnN0IG9mZnNldENoaWxkcmVuUGx1Z2luID0gZ2V0UGx1Z2luPE9mZnNldENoaWxkcmVuUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJG9mZnNldENoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHsgJG9mZnNldENoaWxkcmVuOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIG9mZnNldFN0eWxlc1tgb2Zmc2V0LWNoaWxkcmVuX18ke3Byb3BzLiRvZmZzZXRDaGlsZHJlbi5kaXJlY3Rpb259LS0ke3Byb3BzLiRvZmZzZXRDaGlsZHJlbi5zaXplfWBdLFxuICAgIF0sXG5cbiAgICAkb2Zmc2V0Q2hpbGRyZW46IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0temVyb1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS16ZXJvX19fOGx5R2lcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0temVyb1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS16ZXJvX19fRGJJM2pcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXplcm9fX19paG5TWFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS16ZXJvX19fUTRMWE9cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tNHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4c19fX0xmTTB4XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eHNfX19ZZXl3NlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS00eHNfX19UQWFES1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4c19fXzZpV1VvXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTN4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0zeHNfX191cmtpZ1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tM3hzX19feVhIM3pcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTN4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tM3hzX19fZ0F6VkFcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0zeHNfX19XcjQ4Y1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS14eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teHhzX19fZHFUVFNcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXh4c19fX0VwNjZSXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXh4c19fXzl2UFlkXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhzX19fanV1S3BcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0teHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teHNfX19udzVhYVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14c19fX0pnQzZsXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0teHNfX19jeHRWeFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHNfX18yaVA1Z1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1zXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLXNfX19IbTJpcFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1zXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXNfX19XYTM4TlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tc19fX1dXQkZoXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXNfX193ekZWOVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1tXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLW1fX19aak9DTVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1tXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLW1fX19pcERrV1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tbV9fX1k4cURXXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLW1fX180WEpmdlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1sXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLWxfX19RdlRSb1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1sXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLWxfX19FR2tBUlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tbF9fX1VuVUh2XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLWxfX19qVk5OWFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS14bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS14bF9fX0VOY2NYXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXhsX19fYm1yc2FcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14bF9fX0tqby1jXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14bF9fX0RIUnV5XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLXh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS14eGxfX19vbmplQVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHhsX19fdi0xVGxcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0teHhsX19faS1jMmhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14eGxfX19xRzA4NVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS0zeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tM3hsX19fTDltc1FcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTN4bF9fX3dNTWJtXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0zeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTN4bF9fX2JTU09yXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hsX19fZTlXN3ZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tNHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4bF9fX1ZBay14XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eGxfX19EeXk1WFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS00eGxfX19YMHg1YVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4bF9fX1F1bC1qXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTV4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS01eGxfX19lVzVRa1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNXhsX19fcGlhLVpcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTV4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tNXhsX19faUFBaG9cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS01eGxfX194anVDTFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS02eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tNnhsX19fQzBXdmtcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTZ4bF9fXzg0enAtXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS02eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTZ4bF9fX2l1ZUJGXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNnhsX19fVU5RLUJcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tN3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTd4bF9fX2hQY2xjXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS03eGxfX181Ulp3UVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tN3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS03eGxfX19ISXA2QlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTd4bF9fX0ZpT0VJXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS04eGxfX19ndDRmdVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tOHhsX19fZlBFT0RcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tOHhsX19fLXRUZlBcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS04eGxfX19kVVhSaFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS05eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tOXhsX19fa1JOQTZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTl4bF9fX2piSGFCXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS05eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTl4bF9fX1NGZ1BsXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOXhsX19fVEppZUhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTB4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0xMHhsX19fLXV0T25cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTB4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0xMHhsX19fYTU5d1RcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTEweGxfX19LY2V6ZVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMHhsX19fTm9tWXVcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTF4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0xMXhsX19fU1l0Z25cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTF4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0xMXhsX19fUDYydTRcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTExeGxfX19nMG9vZVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMXhsX19fRU9XTC1cIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBoaWRkZW5TdHlsZXMgZnJvbSBcIi4vaGlkZGVuLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEhpZGRlblBsdWdpblByb3BzID0geyAkaGlkZGVuPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaGlkZGVuUGx1Z2luID0gZ2V0UGx1Z2luPEhpZGRlblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW2hpZGRlblN0eWxlcy5oaWRkZW5dOiAhIXByb3BzLiRoaWRkZW4gfV0sXG5cbiAgJGhpZGRlbjogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW4ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJoaWRkZW5cIjogXCJoaWRkZW4tbW9kdWxlX19oaWRkZW5fX19uVVVpMVwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IG1hcmdpblN0eWxlcyBmcm9tIFwiLi9tYXJnaW4ubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgRGlyZWN0aW9uYWxNYXJnaW4gPSB7XG4gIHRvcD86IFRTaGlydFNpemU7XG4gIGJvdHRvbT86IFRTaGlydFNpemU7XG4gIGxlZnQ/OiBUU2hpcnRTaXplO1xuICByaWdodD86IFRTaGlydFNpemU7XG4gIGhvcml6b250YWw/OiBUU2hpcnRTaXplO1xuICB2ZXJ0aWNhbD86IFRTaGlydFNpemU7XG59O1xuXG5leHBvcnQgdHlwZSBNYXJnaW5QbHVnaW5Qcm9wcyA9IHsgJG1hcmdpbj86IGJvb2xlYW4gfCBEaXJlY3Rpb25hbE1hcmdpbiB8IFRTaGlydFNpemUgfCBcImF1dG9cIiB9O1xuXG5leHBvcnQgY29uc3QgbWFyZ2luUGx1Z2luID0gZ2V0UGx1Z2luPE1hcmdpblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRtYXJnaW4pIHtcbiAgICByZXR1cm4geyAkbWFyZ2luOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IG1hcmdpbiA9IHByb3BzLiRtYXJnaW4gPT09IHRydWUgPyBcInhzXCIgOiBwcm9wcy4kbWFyZ2luO1xuXG4gIGlmIChpc1N0cmluZyhtYXJnaW4pKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBtYXJnaW5TdHlsZXNbYG1hcmdpbi0tJHttYXJnaW59YF1dLFxuICAgICAgJG1hcmdpbjogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB0b3BTaXplID0gbWFyZ2luLnRvcCB8fCBtYXJnaW4udmVydGljYWw7XG4gIGNvbnN0IGJvdHRvbVNpemUgPSBtYXJnaW4uYm90dG9tIHx8IG1hcmdpbi52ZXJ0aWNhbDtcbiAgY29uc3QgcmlnaHRTaXplID0gbWFyZ2luLnJpZ2h0IHx8IG1hcmdpbi5ob3Jpem9udGFsO1xuICBjb25zdCBsZWZ0U2l6ZSA9IG1hcmdpbi5sZWZ0IHx8IG1hcmdpbi5ob3Jpem9udGFsO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIHRvcFNpemUgPyBtYXJnaW5TdHlsZXNbYG1hcmdpbl9fdG9wLS0ke3RvcFNpemV9YF0gOiB1bmRlZmluZWQsXG4gICAgICByaWdodFNpemUgPyBtYXJnaW5TdHlsZXNbYG1hcmdpbl9fcmlnaHQtLSR7cmlnaHRTaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgYm90dG9tU2l6ZSA/IG1hcmdpblN0eWxlc1tgbWFyZ2luX19ib3R0b20tLSR7Ym90dG9tU2l6ZX1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIGxlZnRTaXplID8gbWFyZ2luU3R5bGVzW2BtYXJnaW5fX2xlZnQtLSR7bGVmdFNpemV9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkbWFyZ2luOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibWFyZ2luX190b3AtLXplcm9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0temVyb19fX2dHTHF3XCIsXG4gIFwibWFyZ2luX190b3AtLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS00eHNfX19FdjhyN1wiLFxuICBcIm1hcmdpbl9fdG9wLS0zeHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tM3hzX19fbTRZT1pcIixcbiAgXCJtYXJnaW5fX3RvcC0teHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXh4c19fX29wWHZwXCIsXG4gIFwibWFyZ2luX190b3AtLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXhzX19fSklqWUNcIixcbiAgXCJtYXJnaW5fX3RvcC0tc1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1zX19fWU44RElcIixcbiAgXCJtYXJnaW5fX3RvcC0tbVwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1tX19fWHdrLVNcIixcbiAgXCJtYXJnaW5fX3RvcC0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1sX19fS1RXaUdcIixcbiAgXCJtYXJnaW5fX3RvcC0teGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0teGxfX185SU9iWlwiLFxuICBcIm1hcmdpbl9fdG9wLS14eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0teHhsX19fM01XenBcIixcbiAgXCJtYXJnaW5fX3RvcC0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTN4bF9fX004eEgzXCIsXG4gIFwibWFyZ2luX190b3AtLTR4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS00eGxfX19ydk5IUlwiLFxuICBcIm1hcmdpbl9fdG9wLS01eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tNXhsX19fSW5FUnhcIixcbiAgXCJtYXJnaW5fX3RvcC0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTZ4bF9fX1BTLXQ2XCIsXG4gIFwibWFyZ2luX190b3AtLTd4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS03eGxfX19QNVlielwiLFxuICBcIm1hcmdpbl9fdG9wLS04eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tOHhsX19fOTZNb0tcIixcbiAgXCJtYXJnaW5fX3RvcC0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTl4bF9fX29wZURjXCIsXG4gIFwibWFyZ2luX190b3AtLTEweGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tMTB4bF9fX3B2RjZ4XCIsXG4gIFwibWFyZ2luX190b3AtLTExeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tMTF4bF9fX3BCekFtXCIsXG4gIFwibWFyZ2luX19yaWdodC0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXplcm9fX19CV3c2T1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTR4c19fX3JkUE9vXCIsXG4gIFwibWFyZ2luX19yaWdodC0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tM3hzX19fLVk5T09cIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS14eHNfX19Kcm9BQVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0teHNfX19abDhNaVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS1zX19fMjRESW5cIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tbV9fX1pMbDZCXCIsXG4gIFwibWFyZ2luX19yaWdodC0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLWxfX19lSFMtQlwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0teGxfX19JVzhkNFwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXh4bF9fXy1PRDdMXCIsXG4gIFwibWFyZ2luX19yaWdodC0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tM3hsX19fdEdZUlJcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS00eGxfX19FWHFoM1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTV4bF9fX0N1WVZHXCIsXG4gIFwibWFyZ2luX19yaWdodC0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tNnhsX19fREtnRFRcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS03eGxfX19Geng0YlwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTh4bF9fX0VsU1dNXCIsXG4gIFwibWFyZ2luX19yaWdodC0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tOXhsX19fMG9hVHhcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tMTB4bF9fX1E1NVBDXCIsXG4gIFwibWFyZ2luX19yaWdodC0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTExeGxfX19wMDJrblwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS16ZXJvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXplcm9fX19uLU5WUVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tNHhzX19faUpKYWFcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTN4c19fX2Z3UWQxXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXh4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14eHNfX182VWFmSFwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14c19fX3oySjFlXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tc19fXy1IRjZRXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLW1cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tbV9fX0pKT1JFXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tbF9fX0dJWmNGXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXhsX19fTTRBd05cIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0teHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXh4bF9fX1RyOG1aXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS0zeGxfX18tMFotSFwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tNHhsX19fNGxrU0ZcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tNXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTV4bF9fX3ppelVQXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS02eGxfX19zTW10S1wiLFxuICBcIm1hcmdpbl9fYm90dG9tLS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tN3hsX19fSk9BWnJcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tOHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTh4bF9fX0E1UTRDXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS05eGxfX183dVN6dlwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTEweGxfX19KbVFKNVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS0xMXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTExeGxfX182S0VZc1wiLFxuICBcIm1hcmdpbl9fbGVmdC0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0temVyb19fX3ZDdlNvXCIsXG4gIFwibWFyZ2luX19sZWZ0LS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTR4c19fX2xLNS15XCIsXG4gIFwibWFyZ2luX19sZWZ0LS0zeHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTN4c19fXzcteFYtXCIsXG4gIFwibWFyZ2luX19sZWZ0LS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXh4c19fX2dlNlZKXCIsXG4gIFwibWFyZ2luX19sZWZ0LS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0teHNfX19kdnJValwiLFxuICBcIm1hcmdpbl9fbGVmdC0tc1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tc19fX0RNWkoyXCIsXG4gIFwibWFyZ2luX19sZWZ0LS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS1tX19fNXBlZHdcIixcbiAgXCJtYXJnaW5fX2xlZnQtLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLWxfX18tU3hESVwiLFxuICBcIm1hcmdpbl9fbGVmdC0teGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXhsX19fNk4ta1pcIixcbiAgXCJtYXJnaW5fX2xlZnQtLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0teHhsX19fWWthcFlcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tM3hsX19fOFVVdXhcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTR4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNHhsX19fYXFsNWJcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNXhsX19faFFOdHBcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNnhsX19fU3FQMzFcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTd4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tN3hsX19fZTBqLWpcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tOHhsX19fdWtwVnpcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tOXhsX19fbE5IQlRcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTEweGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTEweGxfX19DQlVTblwiLFxuICBcIm1hcmdpbl9fbGVmdC0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tMTF4bF9fX3VjS0M4XCIsXG4gIFwibWFyZ2luLS16ZXJvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS16ZXJvX19feUtMREhcIixcbiAgXCJtYXJnaW4tLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tNHhzX19fN25qc2lcIixcbiAgXCJtYXJnaW4tLTN4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tM3hzX19fa1dCYmVcIixcbiAgXCJtYXJnaW4tLXh4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teHhzX19fZlppVWFcIixcbiAgXCJtYXJnaW4tLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS14c19fXy10ZE9qXCIsXG4gIFwibWFyZ2luLS1zXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS1zX19fMHhQMGdcIixcbiAgXCJtYXJnaW4tLW1cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLW1fX19XZDRwcFwiLFxuICBcIm1hcmdpbi0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tbF9fX3lNVVhzXCIsXG4gIFwibWFyZ2luLS14bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teGxfX193alpQUlwiLFxuICBcIm1hcmdpbi0teHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS14eGxfX19FbTRUN1wiLFxuICBcIm1hcmdpbi0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS0zeGxfX19jUVpIZlwiLFxuICBcIm1hcmdpbi0tNHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS00eGxfX183SVdyTVwiLFxuICBcIm1hcmdpbi0tNXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS01eGxfX19jU09VUVwiLFxuICBcIm1hcmdpbi0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS02eGxfX19GM2JTbVwiLFxuICBcIm1hcmdpbi0tN3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS03eGxfX18xVVFtSlwiLFxuICBcIm1hcmdpbi0tOHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS04eGxfX19HRTBTdlwiLFxuICBcIm1hcmdpbi0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS05eGxfX19oNWhoRVwiLFxuICBcIm1hcmdpbi0tMTB4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tMTB4bF9fX2RHSy1SXCIsXG4gIFwibWFyZ2luLS0xMXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS0xMXhsX19fM3l4QnBcIixcbiAgXCJtYXJnaW4tLWF1dG9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLWF1dG9fX195N2dmOVwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHZpc3VhbGx5SGlkZGVuU3R5bGVzIGZyb20gXCIuL3Zpc3VhbGx5LWhpZGRlbi5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzID0geyAkdmlzdWFsbHlIaWRkZW4/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCB2aXN1YWxseUhpZGRlblBsdWdpbiA9IGdldFBsdWdpbjxWaXN1YWxseUhpZGRlblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3Zpc3VhbGx5SGlkZGVuU3R5bGVzW1widmlzdWFsbHktaGlkZGVuXCJdXTogISFwcm9wcy4kdmlzdWFsbHlIaWRkZW4gfV0sXG5cbiAgJHZpc3VhbGx5SGlkZGVuOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlbi5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInZpc3VhbGx5LWhpZGRlblwiOiBcInZpc3VhbGx5LWhpZGRlbi1tb2R1bGVfX3Zpc3VhbGx5LWhpZGRlbl9fX0RQdWxNXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgb3ZlcmZsb3dTdHlsZXMgZnJvbSBcIi4vb3ZlcmZsb3cubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgT3ZlcmZsb3cgPSBcImhpZGRlblwiIHwgXCJzY3JvbGxcIiB8IFwiYXV0b1wiIHwgXCJ2aXNpYmxlXCI7XG5cbmV4cG9ydCB0eXBlIE92ZXJmbG93UGx1Z2luUHJvcHMgPSB7ICRvdmVyZmxvdz86IE92ZXJmbG93IHwgeyB4PzogT3ZlcmZsb3c7IHk/OiBPdmVyZmxvdzsgaGlkZVNjcm9sbGJhcj86IGJvb2xlYW4gfSB9O1xuXG5leHBvcnQgY29uc3Qgb3ZlcmZsb3dQbHVnaW4gPSBnZXRQbHVnaW48T3ZlcmZsb3dQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgJG92ZXJmbG93ID0gcHJvcHMuJG92ZXJmbG93O1xuXG4gIGlmICghJG92ZXJmbG93KSB7XG4gICAgcmV0dXJuIHsgJG92ZXJmbG93OiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHggPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gJG92ZXJmbG93IDogJG92ZXJmbG93Lng7XG4gIGNvbnN0IHkgPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gJG92ZXJmbG93IDogJG92ZXJmbG93Lnk7XG4gIGNvbnN0IGhpZGVTY3JvbGxiYXIgPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gZmFsc2UgOiAkb3ZlcmZsb3cuaGlkZVNjcm9sbGJhcjtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG5cbiAgICAgIHtcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvd19feC0tJHt4fWBdXTogeCxcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvd19feS0tJHt5fWBdXTogeSxcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvdy0taGlkZS1zY3JvbGxiYXJgXV06IGhpZGVTY3JvbGxiYXIsXG4gICAgICB9LFxuICAgIF0sXG5cbiAgICAkb3ZlcmZsb3c6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL292ZXJmbG93L292ZXJmbG93Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib3ZlcmZsb3ctLWhpZGUtc2Nyb2xsYmFyXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvdy0taGlkZS1zY3JvbGxiYXJfX193YzZqUFwiLFxuICBcIm92ZXJmbG93X195LS1oaWRkZW5cIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X195LS1oaWRkZW5fX19VQklYUVwiLFxuICBcIm92ZXJmbG93X195LS12aXNpYmxlXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feS0tdmlzaWJsZV9fX3NmT2JVXCIsXG4gIFwib3ZlcmZsb3dfX3ktLXNjcm9sbFwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3ktLXNjcm9sbF9fX3lrWjIxXCIsXG4gIFwib3ZlcmZsb3dfX3ktLWF1dG9cIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X195LS1hdXRvX19fMU9OSEtcIixcbiAgXCJvdmVyZmxvd19feC0taGlkZGVuXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feC0taGlkZGVuX19fTEszVWhcIixcbiAgXCJvdmVyZmxvd19feC0tdmlzaWJsZVwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3gtLXZpc2libGVfX191LS02RlwiLFxuICBcIm92ZXJmbG93X194LS1zY3JvbGxcIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X194LS1zY3JvbGxfX19haUlINlwiLFxuICBcIm92ZXJmbG93X194LS1hdXRvXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feC0tYXV0b19fX1M2b1ZMXCJcbn07IiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZsZXgtY2hpbGRcIjogXCJmbGV4LWNoaWxkLW1vZHVsZV9fZmxleC1jaGlsZF9fXzdCZGhkXCIsXG4gIFwiZmxleC1jaGlsZC0tc2hyaW5rYWJsZVwiOiBcImZsZXgtY2hpbGQtbW9kdWxlX19mbGV4LWNoaWxkLS1zaHJpbmthYmxlX19fNkg1LS1cIixcbiAgXCJmbGV4LWNoaWxkLS1maXhlZFwiOiBcImZsZXgtY2hpbGQtbW9kdWxlX19mbGV4LWNoaWxkLS1maXhlZF9fX0ZLZXRMXCJcbn07IiwgImltcG9ydCBmbGV4Q2hpbGRTdHlsZXMgZnJvbSBcIi4vZmxleC1jaGlsZC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IHN0eWxlUGx1Z2luIH0gZnJvbSBcIi4uL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuLyoqXG4gKiAtIGB0cnVlYDogc2hhcmUgdGhlIHBhcmVudCdzIHJlbWFpbmluZyBzcGFjZSBlcXVhbGx5IChgZmxleDogMSAxIDBgKS5cbiAqIC0gYFwic2hyaW5rYWJsZVwiYDogYWRkaXRpb25hbGx5IHJlbW92ZSB0aGUgaXRlbSdzIGltcGxpY2l0IGNvbnRlbnQtc2l6ZWRcbiAqICAgbWluaW11bSAoYG1pbi1oZWlnaHQ6IGF1dG9gIC8gYG1pbi13aWR0aDogYXV0b2ApLCBzbyBpdCBjYW4gYWN0dWFsbHkgYmVcbiAqICAgc2l6ZWQgdG8gdGhlIHJlbWFpbmluZyBzcGFjZSBpbiBhIGNvbnN0cmFpbmVkIGxheW91dCBcdTIwMTQgcmVxdWlyZWQgZm9yIGFcbiAqICAgZGVzY2VuZGFudCB0byBzY3JvbGwgaW50ZXJuYWxseSBpbnN0ZWFkIG9mIGluZmxhdGluZyBldmVyeSBhbmNlc3Rvci5cbiAqIC0gYSBudW1iZXI6IGxpa2UgYFwic2hyaW5rYWJsZVwiYCwgYnV0IHRha2luZyB0aGF0IG1hbnkgc2hhcmVzIG9mIHRoZVxuICogICByZW1haW5pbmcgc3BhY2UgaW5zdGVhZCBvZiBvbmUgKGBmbGV4LWdyb3dgKSwgZm9yIHdlaWdodGVkIHNwbGl0cyBiZXR3ZWVuXG4gKiAgIHNpYmxpbmdzLlxuICogLSBgXCJmaXhlZFwiYDogdGhlIG9wcG9zaXRlIFx1MjAxNCBrZWVwIHRoZSBpdGVtJ3Mgb3duIHNpemUgKGBmbGV4LXNocmluazogMGApLFxuICogICBvcHRpbmcgb3V0IG9mIHRoZSBzaHJpbmsgbmVnb3RpYXRpb24gZW50aXJlbHkgKGUuZy4gYSBjb250ZW50LWh1Z2dpbmdcbiAqICAgcGFuZWwgbmV4dCB0byBhIGZpbGxpbmcgb25lKS5cbiAqL1xuZXhwb3J0IHR5cGUgRmxleENoaWxkUGx1Z2luUHJvcHMgPSB7ICRmbGV4Q2hpbGQ/OiBib29sZWFuIHwgbnVtYmVyIHwgXCJzaHJpbmthYmxlXCIgfCBcImZpeGVkXCIgfTtcblxuZXhwb3J0IGNvbnN0IGZsZXhDaGlsZFBsdWdpbiA9IGdldFBsdWdpbjxGbGV4Q2hpbGRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KFxuICAocHJvcHMpID0+IHtcbiAgICBjb25zdCB3ZWlnaHQgPSB0eXBlb2YgcHJvcHMuJGZsZXhDaGlsZCA9PT0gXCJudW1iZXJcIiA/IHByb3BzLiRmbGV4Q2hpbGQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2hyaW5rYWJsZSA9IHByb3BzLiRmbGV4Q2hpbGQgPT09IFwic2hyaW5rYWJsZVwiIHx8IHdlaWdodCAhPT0gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICRjbGFzc05hbWU6IFtcbiAgICAgICAgcHJvcHMuJGZsZXhDaGlsZCA9PT0gdHJ1ZSB8fCBzaHJpbmthYmxlID8gZmxleENoaWxkU3R5bGVzW1wiZmxleC1jaGlsZFwiXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc2hyaW5rYWJsZSA/IGZsZXhDaGlsZFN0eWxlc1tcImZsZXgtY2hpbGQtLXNocmlua2FibGVcIl0gOiB1bmRlZmluZWQsXG4gICAgICAgIHByb3BzLiRmbGV4Q2hpbGQgPT09IFwiZml4ZWRcIiA/IGZsZXhDaGlsZFN0eWxlc1tcImZsZXgtY2hpbGQtLWZpeGVkXCJdIDogdW5kZWZpbmVkLFxuICAgICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgICAgXSxcbiAgICAgICRzdHlsZTogd2VpZ2h0ID09PSB1bmRlZmluZWQgPyBwcm9wcy4kc3R5bGUgOiB7IC4uLnByb3BzLiRzdHlsZSwgZmxleEdyb3c6IHdlaWdodCB9LFxuICAgICAgJGZsZXhDaGlsZDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0sXG4pO1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZ3JheXNjYWxlU3R5bGVzIGZyb20gXCIuL2dyYXlzY2FsZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBHcmF5c2NhbGVQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIEZ1bGx5IGRlc2F0dXJhdGVzIHRoZSBlbGVtZW50IChgZmlsdGVyOiBncmF5c2NhbGUoMTAwJSlgKSB3aGVuIGB0cnVlYCBcdTIwMTQgc29cbiAgICogZXZlbiBmaXhlZC1jb2xvdXIgY29udGVudCAoZS5nLiBicmFuZCBsb2dvcykgZ3JleXMgb3V0LCBub3QganVzdCB0aGVtZWRcbiAgICogY29sb3Vycy4gQ29tYmluZSB3aXRoIGAkZmFkZWRgIHRvIGRlLWVtcGhhc2lzZSBhbiB1bmF2YWlsYWJsZSBpdGVtLlxuICAgKi9cbiAgJGdyYXlzY2FsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZ3JheXNjYWxlUGx1Z2luID0gZ2V0UGx1Z2luPEdyYXlzY2FsZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHByb3BzLiRncmF5c2NhbGUgPyBncmF5c2NhbGVTdHlsZXMuZ3JheXNjYWxlIDogdW5kZWZpbmVkXSxcbiAgJGdyYXlzY2FsZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJncmF5c2NhbGVcIjogXCJncmF5c2NhbGUtbW9kdWxlX19ncmF5c2NhbGVfX18zbVpQNlwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB0eXBlIHsgc3R5bGVQbHVnaW4gfSBmcm9tIFwiLi4vc3R5bGUvc3R5bGVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdGludFN0eWxlcyBmcm9tIFwiLi90aW50Lm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIFRpbnRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgZWxlbWVudCdzIChhbmQgaXRzIGRlc2NlbmRhbnRzJykgU1ZHIGBmaWxsYCB0byB0aGlzIGNvbG91ciwgdmlhIGEgQ1NTIGN1c3RvbVxuICAgKiBwcm9wZXJ0eSBcdTIwMTQgYHN0cm9rZWAgaXMgbGVmdCB1bnRvdWNoZWQsIHNvIHN0cm9rZWQgZGV0YWlscyBzdXJ2aXZlLiBVbmxpa2UgYCRncmF5c2NhbGVgICh3aGljaCBvbmx5XG4gICAqIGRlc2F0dXJhdGVzKSB0aGlzIHBhaW50cyB0aGUgc2hhcGUgYW4gZXhhY3QgZmxhdCBjb2xvdXIgd2hpbGUgcmVzcGVjdGluZyB0cmFuc3BhcmVuY3ksIHNvIGFcbiAgICogZml4ZWQtY29sb3VyIGJyYW5kIG1hcmsgY2FuIGJlIHRpbnRlZCAoZS5nLiBhbiBBSS10b29sIGxvZ28gdGludGVkIHRvIHRoZSBjbHVzdGVyIGNvbG91cikuIExlYXZlXG4gICAqIHVuc2V0IHRvIHJlbmRlciB0aGUgZWxlbWVudCdzIG5hdHVyYWwgY29sb3Vycy5cbiAgICovXG4gICR0aW50Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IHRpbnRQbHVnaW4gPSBnZXRQbHVnaW48VGludFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbiwgdHlwZW9mIHN0eWxlUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcHJvcHMuJHRpbnQgPyB0aW50U3R5bGVzLnRpbnQgOiB1bmRlZmluZWRdLFxuICAvLyBUaGUgdGludCBjb2xvdXIgaXMgZXhwb3NlZCBhcyBhIGN1c3RvbSBwcm9wZXJ0eSB0aGUgYC50aW50YCBjbGFzcyByZWFkcyAoYGZpbGw6IHZhcigtLWVsZW1lbnQtdGludClgKS5cbiAgJHN0eWxlOiBwcm9wcy4kdGludCA/ICh7IC4uLnByb3BzLiRzdHlsZSwgXCItLWVsZW1lbnQtdGludFwiOiBwcm9wcy4kdGludCB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMpIDogcHJvcHMuJHN0eWxlLFxuICAkdGludDogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInRpbnRcIjogXCJ0aW50LW1vZHVsZV9fdGludF9fX2dDekc3XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZmFkZWRTdHlsZXMgZnJvbSBcIi4vZmFkZWQubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgRmFkZWRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIEZhZGVzIHRoZSBlbGVtZW50IChgb3BhY2l0eTogNTAlYCkgd2hlbiBgdHJ1ZWAuIENvbWJpbmUgd2l0aCBgJGdyYXlzY2FsZWBcbiAgICogdG8gZGUtZW1waGFzaXNlIGFuIHVuYXZhaWxhYmxlIGl0ZW0uXG4gICAqL1xuICAkZmFkZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGZhZGVkUGx1Z2luID0gZ2V0UGx1Z2luPEZhZGVkUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcHJvcHMuJGZhZGVkID8gZmFkZWRTdHlsZXMuZmFkZWQgOiB1bmRlZmluZWRdLFxuICAkZmFkZWQ6IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZhZGVkXCI6IFwiZmFkZWQtbW9kdWxlX19mYWRlZF9fXy11YmJNXCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyB1c2VVcGRhdGVXaGVuUHJvcHNDaGFuZ2UgfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2UtdXBkYXRlLXdoZW4tcHJvcHMtY2hhbmdlXCI7XG5pbXBvcnQgeyB1c2VDbGVhbnVwT25Vbm1vdW50IH0gZnJvbSBcIi4vX3ByaXZhdGUvdXNlLWNsZWFudXAtb24tdW5tb3VudFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VLZXlib2FyZE5hdmlnYXRpb24gfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgaGFuZGxlRm9jdXNGb3IgfSBmcm9tIFwiLi9fcHJpdmF0ZS9oYW5kbGUtZm9jdXNcIjtcbmltcG9ydCB7IGhhbmRsZUJsdXJGb3IgfSBmcm9tIFwiLi9fcHJpdmF0ZS9oYW5kbGUtYmx1clwiO1xuaW1wb3J0IHsgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcgfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2UtcHJvZ3JhbW1hdGljLWZvY3VzaW5nXCI7XG5pbXBvcnQgdHlwZSB7IHJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5cbmV4cG9ydCB0eXBlIEZvY3VzYWJsZVBsdWdpblByb3BzPFQsIEZvY3VzZWRJdGVtID0gYW55PiA9IHtcbiAgJGZvY3VzYWJsZT86IHtcbiAgICBjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPjtcbiAgICBpdGVtOiBGb2N1c2VkSXRlbTtcbiAgICBvcmRlck51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBvbkZvY3VzPzogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8VD47XG4gIG9uQmx1cj86IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPFQ+O1xuICBvbktleURvd24/OiBSZWFjdC5LZXlib2FyZEV2ZW50SGFuZGxlcjxUPjtcbiAgdGFiSW5kZXg/OiBIVE1MRWxlbWVudFtcInRhYkluZGV4XCJdO1xufTtcblxudHlwZSBGb2N1c2FibGVXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGZvY3VzYWJsZToge1xuICAgIGNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8YW55PjtcbiAgICBpdGVtOiBhbnk7XG4gICAgb3JkZXJOdW1iZXI/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHRhYkluZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IG9uRm9jdXM/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBvbkJsdXI/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBvbktleURvd24/OiBSZWFjdC5LZXlib2FyZEV2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBjb250cmlidXRlUmVmOiBDb250cmlidXRlUmVmO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IEZvY3VzYWJsZVdyYXBwZXJDb21wb25lbnQgPSAoe1xuICBmb2N1c2FibGUsXG4gIHRhYkluZGV4LFxuICBvbkZvY3VzLFxuICBvbkJsdXIsXG4gIG9uS2V5RG93bixcbiAgY29udHJpYnV0ZVJlZixcbiAgY29udHJpYnV0ZVByb3BzLFxuICBjaGlsZHJlbixcbn06IEZvY3VzYWJsZVdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IGNvbnRleHQ6IGZvY3VzYWJsZUNvbnRleHQsIGl0ZW06IGZvY3VzYWJsZUl0ZW0sIG9yZGVyTnVtYmVyIH0gPSBmb2N1c2FibGU7XG5cbiAgY29uc3QgW2VsZW1lbnQsIHNldEVsZW1lbnRdID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29udHJpYnV0ZVJlZihzZXRFbGVtZW50KTtcblxuICBjb25zdCBodG1sRWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4odW5kZWZpbmVkKTtcbiAgaHRtbEVsZW1lbnRSZWYuY3VycmVudCA9IChlbGVtZW50ID8/IHVuZGVmaW5lZCkgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBvbGRTdGF0ZVJlZiA9IHVzZVJlZjxJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+Pih1bmRlZmluZWQpO1xuXG4gIGNvbnN0IHN0YXRlID0gdXNlU3luY0luamVjdChmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlLCBmb2N1c2FibGVDb250ZXh0KTtcblxuICB1c2VVcGRhdGVXaGVuUHJvcHNDaGFuZ2UoaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYsIG9sZFN0YXRlUmVmLCBzdGF0ZSwgZm9jdXNhYmxlSXRlbSk7XG4gIHVzZUNsZWFudXBPblVubW91bnQoaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYsIG9sZFN0YXRlUmVmKTtcbiAgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcoZm9jdXNhYmxlQ29udGV4dCwgZm9jdXNhYmxlSXRlbSwgaHRtbEVsZW1lbnRSZWYpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gaGFuZGxlRm9jdXNGb3Ioc3RhdGUsIGZvY3VzYWJsZUl0ZW0sIGZvY3VzYWJsZUNvbnRleHQsIGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmKTtcbiAgY29uc3QgaGFuZGxlQmx1ciA9IGhhbmRsZUJsdXJGb3IoZm9jdXNhYmxlQ29udGV4dCwgc3RhdGUsIGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmKTtcblxuICBjb25zdCBrZXlib2FyZE5hdmlnYXRpb24gPSB1c2VLZXlib2FyZE5hdmlnYXRpb24oXG4gICAgZm9jdXNhYmxlQ29udGV4dC5pc0tleWJvYXJkTmF2aWdhYmxlID8gZm9jdXNhYmxlQ29udGV4dCA6IHVuZGVmaW5lZCxcbiAgICBmb2N1c2FibGVJdGVtLFxuICAgIG9yZGVyTnVtYmVyLFxuICAgIGVsZW1lbnQsXG4gICAgc3RhdGUsXG4gICk7XG5cbiAgY29udHJpYnV0ZVByb3BzKHtcbiAgICB0YWJJbmRleCxcblxuICAgIG9uRm9jdXM6IChlOiBSZWFjdC5Gb2N1c0V2ZW50PGFueT4pID0+IHtcbiAgICAgIGhhbmRsZUZvY3VzKGUpO1xuICAgICAgb25Gb2N1cz8uKGUpO1xuICAgIH0sXG5cbiAgICBvbkJsdXI6IChlOiBSZWFjdC5Gb2N1c0V2ZW50PGFueT4pID0+IHtcbiAgICAgIGlmICghaHRtbEVsZW1lbnRSZWYuY3VycmVudD8uY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICBoYW5kbGVCbHVyKGUpO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZSk7XG4gICAgfSxcblxuICAgIG9uS2V5RG93bjogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8YW55PikgPT4ge1xuICAgICAgb25LZXlEb3duPy4oZSk7XG4gICAgICBrZXlib2FyZE5hdmlnYXRpb24ub25LZXlEb3duKGUpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNhYmxlUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEZvY3VzYWJsZVBsdWdpblByb3BzPFQ+LCBbUmV0dXJuVHlwZTx0eXBlb2YgcmVmUGx1Z2luPFQ+Pl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGZvY3VzYWJsZSwgdGFiSW5kZXgsIG9uQmx1ciwgb25Gb2N1cywgb25LZXlEb3duIH0gPSBwcm9wcztcblxuICAgIGlmICghJGZvY3VzYWJsZSkge1xuICAgICAgcmV0dXJuIHsgJGZvY3VzYWJsZTogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRmb2N1c2FibGU6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRm9jdXNhYmxlV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBmb2N1c2FibGU6ICRmb2N1c2FibGUsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4ID8/IC0xLFxuICAgICAgICAgIG9uRm9jdXMsXG4gICAgICAgICAgb25CbHVyLFxuICAgICAgICAgIG9uS2V5RG93bixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgcnVuSW5BY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB0eXBlIE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVVwZGF0ZVdoZW5Qcm9wc0NoYW5nZSA9IChcbiAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgb2xkU3RhdGVSZWY6IE11dGFibGVSZWZPYmplY3Q8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPiB8IHVuZGVmaW5lZD4sXG4gIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+LFxuICBmb2N1c2FibGVJdGVtOiB1bmtub3duLFxuKSA9PiB7XG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHJlbW92ZSB3aGVuIHBvc3NpYmxlXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoZm9jdXNlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICBzdGF0ZS5zZXQoZm9jdXNhYmxlSXRlbSk7XG5cbiAgICAgICAgICBjb25zdCBjb250ZXh0SGFzQ2hhbmdlZCA9IG9sZFN0YXRlUmVmLmN1cnJlbnQgIT09IHN0YXRlO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHRIYXNDaGFuZ2VkICYmIG9sZFN0YXRlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGFzc2VydERlZmluZWQob2xkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBvbGRTdGF0ZVJlZi5jdXJyZW50LnNldCh1bmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG9sZFN0YXRlUmVmLmN1cnJlbnQgPSBzdGF0ZTtcbiAgICB9LFxuICAgIC8vIE5vdGU6IGZvY3VzZWRSZWYgYW5kIG9sZFN0YXRlUmVmIG5ldmVyIGNoYW5nZS5cbiAgICBbZm9jdXNhYmxlSXRlbSwgc3RhdGVdLFxuICApO1xufTtcbiIsICJpbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHR5cGUgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgdXNlQ2xlYW51cE9uVW5tb3VudCA9IChcbiAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgb2xkU3RhdGVSZWY6IE11dGFibGVSZWZPYmplY3Q8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPiB8IHVuZGVmaW5lZD4sXG4pID0+IHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogcmVtb3ZlIHdoZW4gcG9zc2libGVcbiAgdXNlRWZmZWN0KFxuICAgICgpID0+ICgpID0+IHtcbiAgICAgIGlmIChmb2N1c2VkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgIGFzc2VydERlZmluZWQob2xkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgICAgb2xkU3RhdGVSZWYuY3VycmVudC5zZXQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIE5vdGU6IGZvY3VzZWRSZWYgYW5kIG9sZFN0YXRlUmVmIG5ldmVyIGNoYW5nZS5cbiAgICBbXSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQge1xuICBrZXlib2FyZE5hdmlnYXRpb25TdGF0ZUluamVjdGFibGUsXG4gIHR5cGUgTmF2aWdhYmxlRW50cnksXG59IGZyb20gXCIuLi9fc2hhcmVkL2tleWJvYXJkLW5hdmlnYXRpb24tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbnR5cGUgS2V5Ym9hcmROYXZpZ2F0aW9uID0ge1xuICByZWFkb25seSBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IG5vS2V5Ym9hcmROYXZpZ2F0aW9uOiBLZXlib2FyZE5hdmlnYXRpb24gPSB7IG9uS2V5RG93bjogKCkgPT4ge30gfTtcblxuZXhwb3J0IGNvbnN0IHVzZUtleWJvYXJkTmF2aWdhdGlvbiA9IChcbiAgY29udGV4dDogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PGFueT4gfCB1bmRlZmluZWQsXG4gIGl0ZW06IHVua25vd24sXG4gIG9yZGVyTnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgc3RhdGU6IElPYnNlcnZhYmxlVmFsdWU8dW5rbm93bj4sXG4pOiBLZXlib2FyZE5hdmlnYXRpb24gPT4ge1xuICBjb25zdCBuYXZpZ2F0aW9uID0gdXNlU3luY0luamVjdChrZXlib2FyZE5hdmlnYXRpb25TdGF0ZUluamVjdGFibGUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjb250ZXh0IHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnk6IE5hdmlnYWJsZUVudHJ5ID0geyBpdGVtLCBvcmRlck51bWJlcjogb3JkZXJOdW1iZXIgPz8gMCwgZWxlbWVudCB9O1xuXG4gICAgbmF2aWdhdGlvbi5yZWdpc3Rlcihjb250ZXh0LCBlbnRyeSk7XG5cbiAgICBjb25zdCBmb2N1c1doYXRTaG91bGRIYXZlRm9jdXMgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0SW5Gb2N1cyA9IG5hdmlnYXRpb24uY29udGV4dEluRm9jdXMoKTtcblxuICAgICAgaWYgKCFjb250ZXh0SW5Gb2N1cykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBuYXZpZ2F0aW9uLnNvcnRlZEVudHJpZXNPZihjb250ZXh0SW5Gb2N1cyk7XG4gICAgICBjb25zdCBmb2N1c2VkSXRlbSA9IHN0YXRlLmdldCgpO1xuICAgICAgY29uc3QgdG9Gb2N1cyA9IGVudHJpZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUuaXRlbSA9PT0gZm9jdXNlZEl0ZW0pID8/IGVudHJpZXNbMF07XG5cbiAgICAgIGlmICh0b0ZvY3VzPy5lbGVtZW50LmlzQ29ubmVjdGVkICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHRvRm9jdXMuZWxlbWVudCkge1xuICAgICAgICB0b0ZvY3VzLmVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gRGVmZXJyZWQgc28gdGhhdCBldmVyeXRoaW5nIGFwcGVhcmluZyB0b2dldGhlciBoYXMgcmVnaXN0ZXJlZCwgYW5kIHRoZSBsb3dlc3Qgb3JkZXIgbnVtYmVyIG9mXG4gICAgLy8gdGhlIHdob2xlIHNldCB3aW5zIHJhdGhlciB0aGFuIHdoaWNoZXZlciBhcHBlYXJlZCBmaXJzdC5cbiAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm9jdXNXaGF0U2hvdWxkSGF2ZUZvY3VzKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBuYXZpZ2F0aW9uLmRlcmVnaXN0ZXIoY29udGV4dCwgZW50cnkpO1xuXG4gICAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm9jdXNXaGF0U2hvdWxkSGF2ZUZvY3VzKTtcbiAgICB9O1xuICB9LCBbbmF2aWdhdGlvbiwgY29udGV4dCwgaXRlbSwgb3JkZXJOdW1iZXIsIGVsZW1lbnQsIHN0YXRlXSk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5vS2V5Ym9hcmROYXZpZ2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgY29uc3Qgc3RlcCA9IHN0ZXBPZihldmVudC5rZXkpO1xuXG4gICAgICBpZiAoc3RlcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50cmllcyA9IG5hdmlnYXRpb24uc29ydGVkRW50cmllc09mKGNvbnRleHQpO1xuXG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBlbnRyaWVzLmZpbmRJbmRleCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUuaXRlbSA9PT0gaXRlbSk7XG5cbiAgICAgIGNvbnN0IG5leHRJbmRleCA9XG4gICAgICAgIHN0ZXAgPT09IFwiZmlyc3RcIlxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogc3RlcCA9PT0gXCJsYXN0XCJcbiAgICAgICAgICAgID8gZW50cmllcy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IChjdXJyZW50SW5kZXggKyBzdGVwICsgZW50cmllcy5sZW5ndGgpICUgZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIGNvbnN0IG5leHQgPSBlbnRyaWVzW25leHRJbmRleF07XG5cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG5leHQuZWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59O1xuXG5jb25zdCBzdGVwT2YgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgY2FzZSBcIkFycm93UmlnaHRcIjpcbiAgICAgIHJldHVybiAxO1xuICAgIGNhc2UgXCJBcnJvd1VwXCI6XG4gICAgY2FzZSBcIkFycm93TGVmdFwiOlxuICAgICAgcmV0dXJuIC0xO1xuICAgIGNhc2UgXCJIb21lXCI6XG4gICAgICByZXR1cm4gXCJmaXJzdFwiIGFzIGNvbnN0O1xuICAgIGNhc2UgXCJFbmRcIjpcbiAgICAgIHJldHVybiBcImxhc3RcIiBhcyBjb25zdDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyBydW5JbkFjdGlvbiwgdHlwZSBJT2JzZXJ2YWJsZVZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVFdmVudCB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWV2ZW50XCI7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVGb2N1c0ZvciA9XG4gIDxGb2N1c2FibGVJdGVtPihcbiAgICBzdGF0ZTogSU9ic2VydmFibGVWYWx1ZTxGb2N1c2FibGVJdGVtIHwgdW5kZWZpbmVkPixcbiAgICBmb2N1c2FibGVJdGVtOiBGb2N1c2FibGVJdGVtLFxuICAgIGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNhYmxlSXRlbT4sXG4gICAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgKSA9PlxuICA8VD4oZXZlbnQ6IEZvY3VzYWJsZUV2ZW50PFQ+KSA9PiB7XG4gICAgY29uc3QgbmF0aXZlRXZlbnQgPSBldmVudC5uYXRpdmVFdmVudDtcblxuICAgIG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cyA/Pz0gbmV3IFNldCgpO1xuXG4gICAgaWYgKG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cy5oYXMoZm9jdXNhYmxlQ29udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBuYXRpdmVFdmVudC5hbHJlYWR5UHJvY2Vzc2VkRm9jdXNhYmxlQ29udGV4dHMuYWRkKGZvY3VzYWJsZUNvbnRleHQpO1xuXG4gICAgZm9jdXNlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgIHN0YXRlLnNldChmb2N1c2FibGVJdGVtKTtcbiAgICB9KTtcbiAgfTtcbiIsICJpbXBvcnQgdHlwZSB7IElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgcnVuSW5BY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVFdmVudCB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWV2ZW50XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUJsdXJGb3IgPVxuICA8VD4oXG4gICAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPixcbiAgICBzdGF0ZTogSU9ic2VydmFibGVWYWx1ZTxUIHwgdW5kZWZpbmVkPixcbiAgICBmb2N1c2VkUmVmOiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+LFxuICApID0+XG4gIDxUPihldmVudDogRm9jdXNhYmxlRXZlbnQ8VD4pID0+IHtcbiAgICBjb25zdCBuYXRpdmVFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuXG4gICAgaWYgKG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cz8uaGFzKGZvY3VzYWJsZUNvbnRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9jdXNlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICBzdGF0ZS5zZXQodW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfTtcbiIsICJpbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlIH0gZnJvbSBcIi4uL19zaGFyZWQvZm9jdXNhYmxlLWh0bWwtZWxlbWVudC1yZWYtc2V0LmluamVjdGFibGVcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcgPSA8VD4oXG4gIGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4sXG4gIGZvY3VzYWJsZUl0ZW06IFQsXG4gIGh0bWxFbGVtZW50UmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkPixcbikgPT4ge1xuICBjb25zdCBodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcCA9IHVzZVN5bmNJbmplY3QoXG4gICAgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlLFxuICAgIGZvY3VzYWJsZUNvbnRleHQsXG4gICAgZm9jdXNhYmxlSXRlbSxcbiAgKTtcblxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb3JyZWN0bmVzcy91c2VFeGhhdXN0aXZlRGVwZW5kZW5jaWVzOiByZW1vdmUgd2hlbiBwb3NzaWJsZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGh0bWxFbGVtZW50c0J5Rm9jdXNhYmxlTWFwLmFkZChodG1sRWxlbWVudFJlZik7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAuZGVsZXRlKGh0bWxFbGVtZW50UmVmKTtcbiAgICB9O1xuICB9LCBbaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAsIGZvY3VzYWJsZUl0ZW0sIGh0bWxFbGVtZW50UmVmXSk7XG59O1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBmbGV4UGx1Z2luIH0gZnJvbSBcIi4uL2ZsZXgvZmxleFwiO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyBvdmVyZmxvd1BsdWdpbiB9IGZyb20gXCIuLi9vdmVyZmxvdy9vdmVyZmxvd1wiO1xuXG5leHBvcnQgdHlwZSBBcmVhUGx1Z2luUHJvcHMgPSB7ICRhcmVhPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgYXJlYVBsdWdpbiA9IGdldFBsdWdpbjxBcmVhUGx1Z2luUHJvcHMsIFt0eXBlb2YgZmxleFBsdWdpbiwgdHlwZW9mIG92ZXJmbG93UGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGV4cGxpY2l0RmxleFByb3BzID0gaXNPYmplY3QocHJvcHMuJGZsZXgpID8gcHJvcHMuJGZsZXggOiB7fTtcblxuICByZXR1cm4ge1xuICAgICRhcmVhOiB1bmRlZmluZWQsXG5cbiAgICAkZmxleDogcHJvcHMuJGFyZWFcbiAgICAgID8ge1xuICAgICAgICAgIHZlcnRpY2FsQWxpZ246IFwic3RyZXRjaFwiLFxuICAgICAgICAgIGhvcml6b250YWxBbGlnbjogXCJzdHJldGNoXCIsXG4gICAgICAgICAgLi4uZXhwbGljaXRGbGV4UHJvcHMsXG4gICAgICAgIH1cbiAgICAgIDogcHJvcHMuJGZsZXgsXG5cbiAgICAkb3ZlcmZsb3c6IHByb3BzLiRvdmVyZmxvdyA/PyAocHJvcHMuJGFyZWEgPyBcImhpZGRlblwiIDogdW5kZWZpbmVkKSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBmbGV4Q2hpbGRQbHVnaW4gfSBmcm9tIFwiLi4vZmxleC1jaGlsZC9mbGV4LWNoaWxkXCI7XG5cbmV4cG9ydCB0eXBlIEFyZWFDb250ZW50UGx1Z2luUHJvcHMgPSB7ICRhcmVhQ29udGVudD86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGFyZWFDb250ZW50UGx1Z2luID0gZ2V0UGx1Z2luPEFyZWFDb250ZW50UGx1Z2luUHJvcHMsIFt0eXBlb2YgZmxleENoaWxkUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkYXJlYUNvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgJGZsZXhDaGlsZDogcHJvcHMuJGFyZWFDb250ZW50ID8gdHJ1ZSA6IHByb3BzLiRmbGV4Q2hpbGQsXG59KSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuaW1wb3J0IHR5cGUgeyB3aWR0aFBsdWdpbiB9IGZyb20gXCIuLi93aWR0aC93aWR0aFwiO1xuaW1wb3J0IHR5cGUgeyBoZWlnaHRQbHVnaW4gfSBmcm9tIFwiLi4vaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSAkU2l6ZVByb3BzID0ge1xuICBzaXplPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJhdXRvXCI7XG4gIG1pbj86IFRTaGlydFNpemUgfCBcImZ1bGxcIjtcbiAgbWF4PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xufTtcblxuZXhwb3J0IHR5cGUgU2l6ZVBsdWdpblByb3BzID0geyAkc2l6ZT86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8ICRTaXplUHJvcHMgfTtcblxuZXhwb3J0IGNvbnN0IHNpemVQbHVnaW4gPSBnZXRQbHVnaW48U2l6ZVBsdWdpblByb3BzLCBbdHlwZW9mIHdpZHRoUGx1Z2luLCB0eXBlb2YgaGVpZ2h0UGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHNpemUgfSA9IHByb3BzO1xuXG4gIGlmICghJHNpemUpIHtcbiAgICByZXR1cm4geyAkc2l6ZTogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB7IHNpemUsIG1pbiwgbWF4IH0gPSB0eXBlb2YgJHNpemUgPT09IFwic3RyaW5nXCIgPyB7IHNpemU6ICRzaXplIH0gOiAkc2l6ZTtcblxuICByZXR1cm4ge1xuICAgICRoZWlnaHQ6IHsgaGVpZ2h0OiBzaXplLCBtaW4sIG1heCB9LFxuICAgICR3aWR0aDogeyB3aWR0aDogc2l6ZSwgbWluLCBtYXggfSxcbiAgICAkc2l6ZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImFsaWFzXCI6IFwiY3Vyc29yLW1vZHVsZV9fYWxpYXNfX18waXlIMlwiLFxuICBcImFsbC1zY3JvbGxcIjogXCJjdXJzb3ItbW9kdWxlX19hbGwtc2Nyb2xsX19fVTlobzhcIixcbiAgXCJjZWxsXCI6IFwiY3Vyc29yLW1vZHVsZV9fY2VsbF9fXzVXTzJGXCIsXG4gIFwiY29sdW1uLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX2NvbHVtbi1yZXNpemVfX19wTHEzc1wiLFxuICBcImNvbnRleHQtbWVudVwiOiBcImN1cnNvci1tb2R1bGVfX2NvbnRleHQtbWVudV9fX0lxcDU2XCIsXG4gIFwiY29weVwiOiBcImN1cnNvci1tb2R1bGVfX2NvcHlfX19YVTd5TFwiLFxuICBcImNyb3NzaGFpclwiOiBcImN1cnNvci1tb2R1bGVfX2Nyb3NzaGFpcl9fXzE4YXlrXCIsXG4gIFwiZGVmYXVsdFwiOiBcImN1cnNvci1tb2R1bGVfX2RlZmF1bHRfX192RC04VFwiLFxuICBcImVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fZWFzdC1yZXNpemVfX19TNEhGNVwiLFxuICBcImVhc3QtYW5kLXdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fZWFzdC1hbmQtd2VzdC1yZXNpemVfX191LUpmLVwiLFxuICBcImdyYWJcIjogXCJjdXJzb3ItbW9kdWxlX19ncmFiX19fVXZBRjdcIixcbiAgXCJncmFiYmluZ1wiOiBcImN1cnNvci1tb2R1bGVfX2dyYWJiaW5nX19fTU1pdlhcIixcbiAgXCJoZWxwXCI6IFwiY3Vyc29yLW1vZHVsZV9faGVscF9fX2lCOEc0XCIsXG4gIFwibW92ZVwiOiBcImN1cnNvci1tb2R1bGVfX21vdmVfX195cGQtUFwiLFxuICBcIm5vcnRoLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRoLXJlc2l6ZV9fXzdOa2hWXCIsXG4gIFwibm9ydGhlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRoZWFzdC1yZXNpemVfX19NNE1JelwiLFxuICBcIm5vcnRoZWFzdC1hbmQtc291dGh3ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRoZWFzdC1hbmQtc291dGh3ZXN0LXJlc2l6ZV9fX3otMWRxXCIsXG4gIFwibm8tZHJvcFwiOiBcImN1cnNvci1tb2R1bGVfX25vLWRyb3BfX19XVDF0OVwiLFxuICBcIm5vbmVcIjogXCJjdXJzb3ItbW9kdWxlX19ub25lX19fRWk5c3pcIixcbiAgXCJub3QtYWxsb3dlZFwiOiBcImN1cnNvci1tb2R1bGVfX25vdC1hbGxvd2VkX19fOXVGTHVcIixcbiAgXCJub3J0aC1hbmQtc291dGgtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGgtYW5kLXNvdXRoLXJlc2l6ZV9fX1FHNUFOXCIsXG4gIFwibm9ydGh3ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRod2VzdC1yZXNpemVfX19ja0NvaFwiLFxuICBcIm5vcnRod2VzdC1hbmQtc291dGhlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRod2VzdC1hbmQtc291dGhlYXN0LXJlc2l6ZV9fX25qNFZTXCIsXG4gIFwicG9pbnRlclwiOiBcImN1cnNvci1tb2R1bGVfX3BvaW50ZXJfX19GaWRmS1wiLFxuICBcInByb2dyZXNzXCI6IFwiY3Vyc29yLW1vZHVsZV9fcHJvZ3Jlc3NfX19JZ0V4eVwiLFxuICBcInJvdy1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19yb3ctcmVzaXplX19fMFNzZTZcIixcbiAgXCJzb3V0aC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19zb3V0aC1yZXNpemVfX180RmVuU1wiLFxuICBcInNvdXRoZWFzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19zb3V0aGVhc3QtcmVzaXplX19fdzhoR3FcIixcbiAgXCJzb3V0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fc291dGh3ZXN0LXJlc2l6ZV9fXzZVdjRHXCIsXG4gIFwidGV4dFwiOiBcImN1cnNvci1tb2R1bGVfX3RleHRfX190cS1Bd1wiLFxuICBcInZlcnRpY2FsLXRleHRcIjogXCJjdXJzb3ItbW9kdWxlX192ZXJ0aWNhbC10ZXh0X19fM09hekVcIixcbiAgXCJ3ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3dlc3QtcmVzaXplX19fYnJXNTZcIixcbiAgXCJ3YWl0XCI6IFwiY3Vyc29yLW1vZHVsZV9fd2FpdF9fX1F0WGxHXCIsXG4gIFwiem9vbS1pblwiOiBcImN1cnNvci1tb2R1bGVfX3pvb20taW5fX196RURIUVwiLFxuICBcInpvb20tb3V0XCI6IFwiY3Vyc29yLW1vZHVsZV9fem9vbS1vdXRfX19xYnFvNlwiXG59OyIsICJpbXBvcnQgcmF3U3R5bGVzIGZyb20gXCIuL2N1cnNvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IHNhbml0aXplU2Nzc01vZHVsZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuXG5jb25zdCBzdHlsZXMgPSBzYW5pdGl6ZVNjc3NNb2R1bGVzKHJhd1N0eWxlcyk7XG5cbmV4cG9ydCB0eXBlICRDdXJzb3JQcm9wcyA9XG4gIHwgXCJhbGlhc1wiXG4gIHwgXCJhbGwtc2Nyb2xsXCJcbiAgfCBcImNlbGxcIlxuICB8IFwiY29sdW1uLXJlc2l6ZVwiXG4gIHwgXCJjb250ZXh0LW1lbnVcIlxuICB8IFwiY29weVwiXG4gIHwgXCJjcm9zc2hhaXJcIlxuICB8IFwiZGVmYXVsdFwiXG4gIHwgXCJlYXN0LXJlc2l6ZVwiXG4gIHwgXCJlYXN0LWFuZC13ZXN0LXJlc2l6ZVwiXG4gIHwgXCJncmFiXCJcbiAgfCBcImdyYWJiaW5nXCJcbiAgfCBcImhlbHBcIlxuICB8IFwibW92ZVwiXG4gIHwgXCJub3J0aC1yZXNpemVcIlxuICB8IFwibm9ydGhlYXN0LXJlc2l6ZVwiXG4gIHwgXCJub3J0aGVhc3QtYW5kLXNvdXRod2VzdC1yZXNpemVcIlxuICB8IFwibm8tZHJvcFwiXG4gIHwgXCJub25lXCJcbiAgfCBcIm5vdC1hbGxvd2VkXCJcbiAgfCBcIm5vcnRoLWFuZC1zb3V0aC1yZXNpemVcIlxuICB8IFwibm9ydGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJub3J0aHdlc3QtYW5kLXNvdXRoZWFzdC1yZXNpemVcIlxuICB8IFwicG9pbnRlclwiXG4gIHwgXCJwcm9ncmVzc1wiXG4gIHwgXCJyb3ctcmVzaXplXCJcbiAgfCBcInNvdXRoLXJlc2l6ZVwiXG4gIHwgXCJzb3V0aGVhc3QtcmVzaXplXCJcbiAgfCBcInNvdXRod2VzdC1yZXNpemVcIlxuICB8IFwidGV4dFwiXG4gIHwgXCJ2ZXJ0aWNhbC10ZXh0XCJcbiAgfCBcIndlc3QtcmVzaXplXCJcbiAgfCBcIndhaXRcIlxuICB8IFwiem9vbS1pblwiXG4gIHwgXCJ6b29tLW91dFwiO1xuXG5leHBvcnQgdHlwZSBDdXJzb3JQbHVnaW5Qcm9wcyA9IHtcbiAgJGN1cnNvcj86ICRDdXJzb3JQcm9wcztcbn07XG5cbmV4cG9ydCBjb25zdCBjdXJzb3JQbHVnaW4gPSBnZXRQbHVnaW48Q3Vyc29yUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGN1cnNvciwgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkY3Vyc29yKSB7XG4gICAgcmV0dXJuIHsgJGN1cnNvcjogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRjdXJzb3I6IHVuZGVmaW5lZCxcbiAgICAkY2xhc3NOYW1lOiBbJGNsYXNzTmFtZSwgc3R5bGVzWyRjdXJzb3JdXSxcbiAgICBcImRhdGEtY3Vyc29yLXRlc3RcIjogJGN1cnNvcixcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgb25NaWRkbGVDbGljaywgb25UcmlnZ2VyIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBlbmFibGVkUGx1Z2luIH0gZnJvbSBcIi4uL2VuYWJsZWQvZW5hYmxlZFwiO1xuaW1wb3J0IHR5cGUgeyAkQ3Vyc29yUHJvcHMsIGN1cnNvclBsdWdpbiB9IGZyb20gXCIuLi9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgeyBvblJpZ2h0VHJpZ2dlckluamVjdGFibGUgfSBmcm9tIFwiLi9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGVcIjtcblxuZXhwb3J0IHR5cGUgUG9zaXRpb24yZCA9IHtcbiAgcmVhZG9ubHkgeDogbnVtYmVyO1xuICByZWFkb25seSB5OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBDbGlja0hhbmRsZXJEZXRhaWxzID0ge1xuICByZWFkb25seSBjdXJzb3I6IFBvc2l0aW9uMmQ7XG4gIHJlYWRvbmx5IGNhdXNlOiBcImNsaWNrXCIgfCBcImtleWJvYXJkXCI7XG59O1xuXG5leHBvcnQgdHlwZSBDbGlja0hhbmRsZXIgPSAoKGRldGFpbHM6IENsaWNrSGFuZGxlckRldGFpbHMpID0+IHZvaWQpIHwgKChkZXRhaWxzOiBDbGlja0hhbmRsZXJEZXRhaWxzKSA9PiBQcm9taXNlPHZvaWQ+KTtcblxuZXhwb3J0IHR5cGUgQ2xpY2tQbHVnaW5Qcm9wcyA9IHtcbiAgJG9uQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gICRvbk9ubHlNb3VzZUNsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25Eb3VibGVDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uUmlnaHRDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uTWlkZGxlQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gIHRhYkluZGV4PzogbnVtYmVyO1xufTtcblxuY29uc3QgY2xpY2tVc2VkID0gU3ltYm9sKCk7XG5cbmV4cG9ydCBjb25zdCBjbGlja2FibGVQbHVnaW4gPSBnZXRQbHVnaW48Q2xpY2tQbHVnaW5Qcm9wcywgW3R5cGVvZiBlbmFibGVkUGx1Z2luLCB0eXBlb2YgY3Vyc29yUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIC8vIHR5cGluZyByZXF1aXJlZCBkdWUgdG8gbGFjayBvZiBnb29kIHR5cGluZyBvZiBwcmUtcHJvY2Vzc2VkIGRlcGVuZGVudCBwbHVnaW5zXG4gIGNvbnN0IHtcbiAgICAkY3Vyc29yLFxuICAgICRvbkNsaWNrLFxuICAgICRvbk9ubHlNb3VzZUNsaWNrLFxuICAgICRvbk1pZGRsZUNsaWNrLFxuICAgICRvblJpZ2h0Q2xpY2ssXG4gICAgJG9uRG91YmxlQ2xpY2ssXG4gICAgb25Eb3VibGVDbGljayxcbiAgICBvbkF1eENsaWNrLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Db250ZXh0TWVudSxcbiAgICBvbktleURvd24sXG4gICAgdGFiSW5kZXgsXG4gICAgZGlzYWJsZWQsXG4gICAgcm9sZSxcbiAgfSA9IHByb3BzIGFzIHR5cGVvZiBwcm9wcyAmIFJlYWN0LkhUTUxQcm9wczxIVE1MRWxlbWVudD47XG4gIGNvbnN0IFtwZW5kaW5nLCBzZXRQZW5kaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgb25SaWdodFRyaWdnZXIgPSB1c2VTeW5jSW5qZWN0KG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSk7XG4gIGNvbnN0IG9uTW91c2VDbGljayA9ICRvbkNsaWNrID8/ICRvbk9ubHlNb3VzZUNsaWNrO1xuXG4gIGlmICgkb25DbGljayAmJiAkb25Pbmx5TW91c2VDbGljaykge1xuICAgIGNvbnNvbGUud2FybihcIkNhbm5vdCBoYXZlIGJvdGggJG9uQ2xpY2sgYW5kICRvbk1vdXNlQ2xpY2tPbmx5IG9uIHRoZSBzYW1lIGNvbXBvbmVudFwiKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJG9uQ2xpY2s6IHVuZGVmaW5lZCxcbiAgICAkb25NaWRkbGVDbGljazogdW5kZWZpbmVkLFxuICAgICRvblJpZ2h0Q2xpY2s6IHVuZGVmaW5lZCxcbiAgICAkb25Eb3VibGVDbGljazogdW5kZWZpbmVkLFxuICAgICRvbk9ubHlNb3VzZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgdGFiSW5kZXg6IHRhYkluZGV4ID8/IChvbk1vdXNlQ2xpY2sgfHwgJG9uUmlnaHRDbGljayB8fCAkb25Eb3VibGVDbGljayA/IDAgOiB1bmRlZmluZWQpLFxuICAgICRjdXJzb3I6IGdldEN1cnNvclByb3BzKCRjdXJzb3IsIGRpc2FibGVkLCBwZW5kaW5nLCBvbk1vdXNlQ2xpY2ssICRvblJpZ2h0Q2xpY2spLFxuICAgIHJvbGU6IHJvbGUgPz8gKG9uTW91c2VDbGljayA/IFwiYnV0dG9uXCIgOiByb2xlKSxcbiAgICBvbkNsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkNsaWNrPy4oZXZlbnQpO1xuXG4gICAgICBpZiAoIWRpc2FibGVkICYmIG9uTW91c2VDbGljayAmJiAhKGNsaWNrVXNlZCBpbiBldmVudCkpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihldmVudCwgeyBbY2xpY2tVc2VkXTogdHJ1ZSB9KTtcblxuICAgICAgICBjb25zdCBtYXliZVByb21pc2UgPSBvbk1vdXNlQ2xpY2sodG9EZXRhaWxzKGV2ZW50KSk7XG5cbiAgICAgICAgaWYgKGlzUHJvbWlzZUxpa2UobWF5YmVQcm9taXNlKSkge1xuICAgICAgICAgIHNldFBlbmRpbmcodHJ1ZSk7XG4gICAgICAgICAgbWF5YmVQcm9taXNlLnRoZW4oKCkgPT4gc2V0UGVuZGluZyhmYWxzZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkRvdWJsZUNsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkRvdWJsZUNsaWNrPy4oZXZlbnQpO1xuICAgICAgJG9uRG91YmxlQ2xpY2s/Lih0b0RldGFpbHMoZXZlbnQpKTtcbiAgICB9LFxuICAgIG9uQ29udGV4dE1lbnU6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQ29udGV4dE1lbnU/LihldmVudCk7XG4gICAgICAkb25SaWdodENsaWNrPy4odG9EZXRhaWxzKGV2ZW50KSk7XG4gICAgfSxcbiAgICBvbkF1eENsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkF1eENsaWNrPy4oZXZlbnQpO1xuICAgICAgb25NaWRkbGVDbGljayhldmVudCwgKCkgPT4gJG9uTWlkZGxlQ2xpY2s/Lih0b0RldGFpbHMoZXZlbnQpKSk7XG4gICAgfSxcbiAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uS2V5RG93bj8uKGV2ZW50KTtcblxuICAgICAgaWYgKCRvbkNsaWNrKSB7XG4gICAgICAgIG9uVHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgIGlmICghZGlzYWJsZWQgJiYgIShjbGlja1VzZWQgaW4gZXZlbnQpKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGV2ZW50LCB7IFtjbGlja1VzZWRdOiB0cnVlIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBtYXliZVByb21pc2UgPSAkb25DbGljayh0b0RldGFpbHMoZXZlbnQpKTtcblxuICAgICAgICAgICAgaWYgKGlzUHJvbWlzZUxpa2UobWF5YmVQcm9taXNlKSkge1xuICAgICAgICAgICAgICBzZXRQZW5kaW5nKHRydWUpO1xuICAgICAgICAgICAgICBtYXliZVByb21pc2UudGhlbigoKSA9PiBzZXRQZW5kaW5nKGZhbHNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCRvblJpZ2h0Q2xpY2spIHtcbiAgICAgICAgb25SaWdodFRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICAkb25SaWdodENsaWNrKHRvRGV0YWlscyhldmVudCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufSk7XG5cbmNvbnN0IHRvTWlkZGxlID0gKHJlY3Q6IERPTVJlY3QpID0+ICh7XG4gIHg6IHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyLFxuICB5OiByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMixcbn0pO1xuXG5jb25zdCB0b0RldGFpbHMgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRWxlbWVudD4pOiBDbGlja0hhbmRsZXJEZXRhaWxzID0+IHtcbiAgY29uc3QgY3Vyc29yID1cbiAgICBcImNsaWVudFhcIiBpbiBldmVudFxuICAgICAgPyB7XG4gICAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICB5OiBldmVudC5jbGllbnRZLFxuICAgICAgICB9XG4gICAgICA6IHRvTWlkZGxlKGV2ZW50LmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gIHJldHVybiB7XG4gICAgY3Vyc29yLFxuICAgIGNhdXNlOiBldmVudC5kZXRhaWwgPyBcImNsaWNrXCIgOiBcImtleWJvYXJkXCIsXG4gIH07XG59O1xuXG5jb25zdCBpc1Byb21pc2VMaWtlID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUHJvbWlzZTx1bmtub3duPiA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgISF2YWx1ZSAmJiBcInRoZW5cIiBpbiB2YWx1ZTtcblxuY29uc3QgZ2V0Q3Vyc29yUHJvcHMgPSAoXG4gICRjdXJzb3I6ICRDdXJzb3JQcm9wcyB8IHVuZGVmaW5lZCxcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIHBlbmRpbmc6IGJvb2xlYW4sXG4gICRvbkNsaWNrOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCxcbiAgJG9uUmlnaHRDbGljazogRnVuY3Rpb24gfCB1bmRlZmluZWQsXG4pOiAkQ3Vyc29yUHJvcHMgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoJGN1cnNvcikge1xuICAgIHJldHVybiAkY3Vyc29yO1xuICB9XG5cbiAgaWYgKHBlbmRpbmcpIHtcbiAgICByZXR1cm4gXCJwcm9ncmVzc1wiO1xuICB9XG5cbiAgaWYgKCEkb25DbGljayAmJiAhJG9uUmlnaHRDbGljaykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoZGlzYWJsZWQpIHtcbiAgICByZXR1cm4gXCJub3QtYWxsb3dlZFwiO1xuICB9XG5cbiAgaWYgKCRvbkNsaWNrKSB7XG4gICAgcmV0dXJuIFwicG9pbnRlclwiO1xuICB9XG5cbiAgcmV0dXJuIFwiY29udGV4dC1tZW51XCI7XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2Rpc3BsYXktY29udGVudHMvZGlzcGxheS1jb250ZW50cy5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImNvbnRlbnRzXCI6IFwiZGlzcGxheS1jb250ZW50cy1tb2R1bGVfX2NvbnRlbnRzX19fbVJlWEtcIlxufTsiLCAiaW1wb3J0IHJhd1N0eWxlcyBmcm9tIFwiLi9kaXNwbGF5LWNvbnRlbnRzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgc2FuaXRpemVTY3NzTW9kdWxlcyB9IGZyb20gXCJAazhzbGVucy90ZXN0LXV0aWxzXCI7XG5cbmNvbnN0IHN0eWxlcyA9IHNhbml0aXplU2Nzc01vZHVsZXMocmF3U3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgRGlzcGxheUNvbnRlbnRzUGx1Z2luUHJvcHMgPSB7XG4gICRkaXNwbGF5Q29udGVudHM/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGRpc3BsYXlDb250ZW50c1BsdWdpbiA9IGdldFBsdWdpbjxEaXNwbGF5Q29udGVudHNQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZGlzcGxheUNvbnRlbnRzLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRkaXNwbGF5Q29udGVudHMpIHtcbiAgICByZXR1cm4geyAkZGlzcGxheUNvbnRlbnRzOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGRpc3BsYXlDb250ZW50czogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCBzdHlsZXMuY29udGVudHNdLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwidGV4dC1hbGlnbi0tY2VudGVyXCI6IFwidGV4dC1hbGlnbi1tb2R1bGVfX3RleHQtYWxpZ24tLWNlbnRlcl9fX2JEclIyXCIsXG4gIFwidGV4dC1hbGlnbi0tcmlnaHRcIjogXCJ0ZXh0LWFsaWduLW1vZHVsZV9fdGV4dC1hbGlnbi0tcmlnaHRfX19KVlJNUFwiLFxuICBcInRleHQtYWxpZ24tLWxlZnRcIjogXCJ0ZXh0LWFsaWduLW1vZHVsZV9fdGV4dC1hbGlnbi0tbGVmdF9fX0xMTGs2XCJcbn07IiwgImltcG9ydCBzdHlsZXMgZnJvbSBcIi4vdGV4dC1hbGlnbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuZXhwb3J0IHR5cGUgVGV4dEFsaWduUGx1Z2luUHJvcHMgPSB7ICR0ZXh0QWxpZ24/OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfTtcblxuZXhwb3J0IGNvbnN0IHRleHRBbGlnblBsdWdpbiA9IGdldFBsdWdpbjxUZXh0QWxpZ25QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkdGV4dEFsaWduIH0gPSBwcm9wcztcblxuICBpZiAoISR0ZXh0QWxpZ24pIHtcbiAgICByZXR1cm4geyAkdGV4dEFsaWduOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7ICRjbGFzc05hbWU6IFtzdHlsZXNbYHRleHQtYWxpZ24tLSR7JHRleHRBbGlnbn1gXSwgcHJvcHMuJGNsYXNzTmFtZV0sICR0ZXh0QWxpZ246IHVuZGVmaW5lZCB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvYmxvY2svYmxvY2subW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJibG9ja1wiOiBcImJsb2NrLW1vZHVsZV9fYmxvY2tfX19ZNHR6alwiLFxuICBcImJsb2NrLS1pbmxpbmVcIjogXCJibG9jay1tb2R1bGVfX2Jsb2NrLS1pbmxpbmVfX18tMVlDZ1wiXG59OyIsICJpbXBvcnQgc3R5bGVzIGZyb20gXCIuL2Jsb2NrLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgdHlwZSBCbG9ja1BsdWdpblByb3BzID0ge1xuICAkYmxvY2s/OiBib29sZWFuIHwgXCJpbmxpbmVcIjtcbn07XG5cbmV4cG9ydCBjb25zdCBibG9ja1BsdWdpbiA9IGdldFBsdWdpbjxCbG9ja1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRibG9jaywgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkYmxvY2spIHtcbiAgICByZXR1cm4geyAkYmxvY2s6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkYmxvY2s6IHVuZGVmaW5lZCxcbiAgICAkY2xhc3NOYW1lOiBbJGNsYXNzTmFtZSwgJGJsb2NrID09PSBcImlubGluZVwiID8gc3R5bGVzW1wiYmxvY2stLWlubGluZVwiXSA6IHN0eWxlcy5ibG9ja10sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBSYW5nZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5pbXBvcnQgb3V0bGluZVN0eWxlcyBmcm9tIFwiLi9vdXRsaW5lLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZVNjc3NNb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL3Rlc3QtdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUNsYXNzTmFtZSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbmNvbnN0IHN0eWxlcyA9IHNhbml0aXplU2Nzc01vZHVsZXMob3V0bGluZVN0eWxlcyk7XG5cbmV4cG9ydCB0eXBlIE91dGxpbmVXaWR0aCA9IFwiemVyb1wiIHwgXCJ4eHNcIiB8IFwieHNcIiB8IFwic1wiIHwgXCJtXCIgfCBcImxcIiB8IFwieGxcIiB8IFwieHhsXCIgfCBgJHtSYW5nZTwzLCA1Pn14bGA7XG5cbmV4cG9ydCB0eXBlICRPdXRsaW5lUHJvcHMgPSB7IGNvbG9yPzogQ29sb3I7IHdpZHRoPzogT3V0bGluZVdpZHRoIH07XG5cbmV4cG9ydCB0eXBlIE91dGxpbmVQbHVnaW5Qcm9wcyA9IHsgJG91dGxpbmU/OiB7IGZvY3VzVmlzaWJsZT86ICRPdXRsaW5lUHJvcHMgfSB9O1xuXG5leHBvcnQgY29uc3Qgb3V0bGluZVBsdWdpbiA9IGdldFBsdWdpbjxPdXRsaW5lUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIGdldEZvY3VzVmlzaWJsZU91dGxpbmVTdHlsZXMocHJvcHMuJG91dGxpbmU/LmZvY3VzVmlzaWJsZSldLFxuICAgICRvdXRsaW5lOiB1bmRlZmluZWQsXG4gIH07XG59KTtcblxuY29uc3QgZ2V0Rm9jdXNWaXNpYmxlT3V0bGluZVN0eWxlcyA9IChwcm9wczogJE91dGxpbmVQcm9wcyB8IHVuZGVmaW5lZCk6IElDbGFzc05hbWUgPT4ge1xuICBpZiAoIXByb3BzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHsgY29sb3IsIHdpZHRoIH0gPSBwcm9wcztcblxuICByZXR1cm4gW1xuICAgIGNvbG9yICE9PSB1bmRlZmluZWQgfHwgd2lkdGggIT09IHVuZGVmaW5lZCA/IFtzdHlsZXMub3V0bGluZSwgc3R5bGVzLmZvY3VzVmlzaWJsZV0gOiB1bmRlZmluZWQsXG4gICAgY29sb3IgPyBzdHlsZXNbYGNvbG9yLS0ke2NvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIHdpZHRoID8gc3R5bGVzW2B3aWR0aC0tJHt3aWR0aH1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib3V0bGluZVwiOiBcIm91dGxpbmUtbW9kdWxlX19vdXRsaW5lX19fQW9CdEZcIixcbiAgXCJmb2N1c1Zpc2libGVcIjogXCJvdXRsaW5lLW1vZHVsZV9fZm9jdXNWaXNpYmxlX19fSkFyUEpcIixcbiAgXCJjb2xvci0taW5oZXJpdFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0taW5oZXJpdF9fXzBXUDByXCIsXG4gIFwiY29sb3ItLXdoaXRlXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS13aGl0ZV9fX1VxLWdkXCIsXG4gIFwiY29sb3ItLXRyYW5zcGFyZW50XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS10cmFuc3BhcmVudF9fX1ROb012XCIsXG4gIFwiY29sb3ItLWdyZXkxMDBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkxMDBfX19WTUY3WVwiLFxuICBcImNvbG9yLS1ncmV5ODBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXk4MF9fX0tkOGZNXCIsXG4gIFwiY29sb3ItLWdyZXk2MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTYwX19fWkdqT3RcIixcbiAgXCJjb2xvci0tZ3JleTQwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NDBfX191YUZuR1wiLFxuICBcImNvbG9yLS1ncmV5MzBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkzMF9fXzdRQlZWXCIsXG4gIFwiY29sb3ItLWdyZXkyNVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTI1X19fci1iYkpcIixcbiAgXCJjb2xvci0tZ3JleTIwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5MjBfX19pd3plTFwiLFxuICBcImNvbG9yLS1ncmV5MTBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkxMF9fX2hKdHRTXCIsXG4gIFwiY29sb3ItLWdyZXk3MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTcwX19fME9HbFVcIixcbiAgXCJjb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2pSd0huXCIsXG4gIFwiY29sb3ItLXByaW1hcnlcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXByaW1hcnlfX19QeGNteFwiLFxuICBcImNvbG9yLS1zdWNjZXNzXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1zdWNjZXNzX19feGpKTG5cIixcbiAgXCJjb2xvci0tbm90aWNlXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ub3RpY2VfX19DUmlZYlwiLFxuICBcImNvbG9yLS13YXJuaW5nXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS13YXJuaW5nX19fMU9lN1dcIixcbiAgXCJjb2xvci0tY3JpdGljYWxcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsX19feVF4LUxcIixcbiAgXCJjb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fR0hhcS1cIixcbiAgXCJjb2xvci0td2FybmluZ1RpbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXdhcm5pbmdUaW50X19fWUFudHVcIixcbiAgXCJjb2xvci0tY3JpdGljYWxUaW50XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1jcml0aWNhbFRpbnRfX19RMW1kaFwiLFxuICBcImNvbG9yLS1saW5rXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1saW5rX19fdUlrM29cIixcbiAgXCJjb2xvci0tY29kZVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tY29kZV9fX3libndpXCIsXG4gIFwid2lkdGgtLXplcm9cIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXplcm9fX19Fa2Z6TlwiLFxuICBcIndpZHRoLS14eHNcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXh4c19fX2JHeVRyXCIsXG4gIFwid2lkdGgtLXhzXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14c19fX1paUjJCXCIsXG4gIFwid2lkdGgtLXNcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXNfX184ZERFelwiLFxuICBcIndpZHRoLS1tXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS1tX19fZzJ1RzVcIixcbiAgXCJ3aWR0aC0tbFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tbF9fX1doMGJDXCIsXG4gIFwid2lkdGgtLXhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14bF9fXzhkT01qXCIsXG4gIFwid2lkdGgtLXh4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0teHhsX19fQkVzVW1cIixcbiAgXCJ3aWR0aC0tM3hsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS0zeGxfX19FczBTWVwiLFxuICBcIndpZHRoLS00eGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLTR4bF9fX1llb3Y4XCIsXG4gIFwid2lkdGgtLTV4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tNXhsX19fTnNWOFBcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBjbGlja2FibGVQbHVnaW4sIENsaWNrSGFuZGxlckRldGFpbHMgfSBmcm9tIFwiLi4vY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgZmxpcCwgb2Zmc2V0LCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHR5cGUgeyBSZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHsgZXhwZWN0RGVmaW5lZCwgc3RvcFByb3BhZ2F0aW9uIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vcG9wb3Zlci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgTWluaW1hbERpdiB9IGZyb20gXCIuLi8uLi9lbGVtZW50cy9taW5pbWFsLWRpdlwiO1xuXG5leHBvcnQgdHlwZSBQb3BvdmVyUGx1Z2luUHJvcHMgPSB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICAkcG9wb3Zlcj86ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBwb3BvdmVySXNPcGVuQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoZmFsc2UpO1xuXG5leHBvcnQgY29uc3QgdXNlUG9wb3ZlcklzT3BlbiA9ICgpID0+IHVzZUNvbnRleHQocG9wb3ZlcklzT3BlbkNvbnRleHQpO1xuXG5leHBvcnQgY29uc3QgcG9wb3ZlclBsdWdpbiA9IGdldFBsdWdpbjxQb3BvdmVyUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xpY2thYmxlUGx1Z2luLCBSZWZQbHVnaW48YW55Pl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRwb3BvdmVyLCAkb25DbGljaywgJHJlZiB9ID0gcHJvcHM7XG4gIGNvbnN0IFtwb3BvdmVyQ29udGVudElzU2hvd24sIHNldFBvcG92ZXJDb250ZW50SXNTaG93bl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZlcmVuY2UsIHNldEVsZW1lbnRdID0gdXNlU3RhdGU8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY2xvc2VQb3BvdmVyID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0UG9wb3ZlckNvbnRlbnRJc1Nob3duKGZhbHNlKSwgW10pO1xuXG4gIGlmICghJHBvcG92ZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJHBvcG92ZXI6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkcG9wb3ZlcjogdW5kZWZpbmVkLFxuICAgICRyZWY6IFskcmVmLCBzZXRFbGVtZW50XSxcbiAgICAkb25DbGljazogKGRldGFpbHM6IENsaWNrSGFuZGxlckRldGFpbHMpID0+IHtcbiAgICAgIHNldFBvcG92ZXJDb250ZW50SXNTaG93bighcG9wb3ZlckNvbnRlbnRJc1Nob3duKTtcbiAgICAgICRvbkNsaWNrPy4oZGV0YWlscyk7XG4gICAgfSxcbiAgICBvbkNsaWNrOiBzdG9wUHJvcGFnYXRpb24sXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogUG9wb3ZlcldyYXBwZXJDb21wb25lbnQsXG4gICAgICBwcm9wczoge1xuICAgICAgICBwb3BvdmVyOiB7XG4gICAgICAgICAgJHBvcG92ZXIsXG4gICAgICAgICAgaXNTaG93bjogcG9wb3ZlckNvbnRlbnRJc1Nob3duLFxuICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICBjbG9zZVBvcG92ZXIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59KTtcblxudHlwZSBQb3BvdmVyV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBwb3BvdmVyOiB7XG4gICAgcmVhZG9ubHkgJHBvcG92ZXI6ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICByZWFkb25seSBpc1Nob3duOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHJlZmVyZW5jZTogSFRNTERpdkVsZW1lbnQgfCBudWxsO1xuICAgIHJlYWRvbmx5IGNsb3NlUG9wb3ZlcjogVm9pZEZ1bmN0aW9uO1xuICB9O1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgUG9wb3ZlcldyYXBwZXJDb21wb25lbnQgPSAoeyBwb3BvdmVyLCBjaGlsZHJlbiB9OiBQb3BvdmVyV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHBvcG92ZXIsIGlzU2hvd24sIHJlZmVyZW5jZSwgY2xvc2VQb3BvdmVyIH0gPSBwb3BvdmVyO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1Nob3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8UG9wb3Zlck92ZXJsYXlDb250ZW50XG4gICAgICAgICAgICB7Li4ue1xuICAgICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICAgICRwb3BvdmVyLFxuICAgICAgICAgICAgICBjbG9zZVBvcG92ZXIsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+LFxuICAgICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICAgICl9XG4gICAgICA8cG9wb3ZlcklzT3BlbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2lzU2hvd259PntjaGlsZHJlbn08L3BvcG92ZXJJc09wZW5Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvPlxuICApO1xufTtcblxudHlwZSBQb3BvdmVyT3ZlcmxheUNvbnRlbnRQcm9wcyA9IHtcbiAgcmVmZXJlbmNlOiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XG4gICRwb3BvdmVyOiAoKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNsb3NlUG9wb3ZlcjogVm9pZEZ1bmN0aW9uO1xufTtcblxuY29uc3QgUG9wb3Zlck92ZXJsYXlDb250ZW50ID0gKHByb3BzOiBQb3BvdmVyT3ZlcmxheUNvbnRlbnRQcm9wcykgPT4ge1xuICBjb25zdCB7ICRwb3BvdmVyLCBjbG9zZVBvcG92ZXIsIHJlZmVyZW5jZSB9ID0gcHJvcHM7XG4gIGNvbnN0IFtmbG9hdGluZywgc2V0RmxvYXRpbmddID0gdXNlU3RhdGU8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogXCJib3R0b21cIixcbiAgICBtaWRkbGV3YXJlOiBbZmxpcCgpLCBvZmZzZXQoOCksIHNoaWZ0KCldLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICBmbG9hdGluZyxcbiAgICAgIHJlZmVyZW5jZSxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBjbG9zZVBvcG92ZXJGcm9tT3ZlcmxheSA9IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIHN0b3BQcm9wYWdhdGlvbihldmVudCk7XG4gICAgY2xvc2VQb3BvdmVyKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8TWluaW1hbERpdlxuICAgICAgZGF0YS1wb3BvdmVyLW92ZXJsYXktdGVzdFxuICAgICAgJGFic29sdXRlXG4gICAgICAkY2xhc3NOYW1lPXtzdHlsZXMucG9wb3Zlcl9fb3ZlcmxheX1cbiAgICAgIG9uQ2xpY2s9e2Nsb3NlUG9wb3ZlckZyb21PdmVybGF5fVxuICAgID5cbiAgICAgIDxNaW5pbWFsRGl2XG4gICAgICAgICRyZWY9e3NldEZsb2F0aW5nfVxuICAgICAgICBzdHlsZT17ZmxvYXRpbmdTdHlsZXN9XG4gICAgICAgIG9uQ2xpY2s9e3N0b3BQcm9wYWdhdGlvbn1cbiAgICAgICAgJGNsYXNzTmFtZT17c3R5bGVzLnBvcG92ZXJfX2NvbnRlbnR9XG4gICAgICA+XG4gICAgICAgIDxjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIuUHJvdmlkZXIgdmFsdWU9e2Nsb3NlUG9wb3Zlcn0+eyRwb3BvdmVyKCl9PC9jb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIuUHJvdmlkZXI+XG4gICAgICA8L01pbmltYWxEaXY+XG4gICAgPC9NaW5pbWFsRGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnRleHRGb3JDbG9zaW5nUG9wb3ZlciA9IGNyZWF0ZUNvbnRleHQ8Vm9pZEZ1bmN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5leHBvcnQgY29uc3QgdXNlQ2xvc2VQb3BvdmVyID0gKCkgPT5cbiAgZXhwZWN0RGVmaW5lZChcbiAgICB1c2VDb250ZXh0KGNvbnRleHRGb3JDbG9zaW5nUG9wb3ZlciksXG4gICAgXCJUcmllZCB0byB1c2UgY2xvc2UgcG9wb3ZlciB3aGlsZSBjb250ZW50IGlzIG5vdCBzaG93biBpbnNpZGUgdGhlIHBvcG92ZXIgY29udGVudC5cIixcbiAgKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9wb3BvdmVyL3BvcG92ZXIubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJwb3BvdmVyX19vdmVybGF5XCI6IFwicG9wb3Zlci1tb2R1bGVfX3BvcG92ZXJfX292ZXJsYXlfX19UY0t2LVwiLFxuICBcInBvcG92ZXJfX2NvbnRlbnRcIjogXCJwb3BvdmVyLW1vZHVsZV9fcG9wb3Zlcl9fY29udGVudF9fX1VDVVo2XCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUmVmLCB0eXBlIFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBSZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBhdXRvVXBkYXRlLCBmbGlwLCBvZmZzZXQsIHNoaWZ0LCB1c2VGbG9hdGluZywgdHlwZSBQbGFjZW1lbnQgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdDb250ZW50QXJncyA9IHtcbiAgcmVhZG9ubHkgZmxvYXRpbmdTdHlsZXM6IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIHJlYWRvbmx5IGNvbnRlbnRSZWY6IE5vbk51bGxhYmxlPFJlYWN0LlJlZjxIVE1MRGl2RWxlbWVudD4+O1xufTtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdDb250ZW50RmFjdG9yeSA9IChhcmdzOiBGbG9hdGluZ0NvbnRlbnRBcmdzKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG5cbmV4cG9ydCB0eXBlICRGbG9hdGluZ1Byb3BzID0ge1xuICByZWFkb25seSBwb3NpdGlvbj86IFBsYWNlbWVudDtcbiAgcmVhZG9ubHkgY29udGVudDogRmxvYXRpbmdDb250ZW50RmFjdG9yeTtcbn07XG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nUGx1Z2luUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICByZWFkb25seSAkZmxvYXRpbmc/OiAkRmxvYXRpbmdQcm9wcztcbn07XG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nUGx1Z2luID0gUGx1Z2luPEZsb2F0aW5nUGx1Z2luUHJvcHMsIHVua25vd24+O1xuXG50eXBlIEZsb2F0aW5nV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBmbG9hdGluZzogJEZsb2F0aW5nUHJvcHM7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBGbG9hdGluZ1dyYXBwZXJDb21wb25lbnQgPSAoeyBmbG9hdGluZywgY29udHJpYnV0ZVJlZiwgY2hpbGRyZW4gfTogRmxvYXRpbmdXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgW3JlZmVyZW5jZSwgc2V0UmVmZXJlbmNlXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtmbG9hdGluZ0VsLCBzZXRGbG9hdGluZ10gPSB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnRyaWJ1dGVSZWYoc2V0UmVmZXJlbmNlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyh7XG4gICAgcGxhY2VtZW50OiBmbG9hdGluZy5wb3NpdGlvbiA/PyBcImJvdHRvbVwiLFxuICAgIG1pZGRsZXdhcmU6IFtmbGlwKCksIG9mZnNldCg4KSwgc2hpZnQoKV0sXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nOiBmbG9hdGluZ0VsLFxuICAgICAgcmVmZXJlbmNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGZsb2F0aW5nQ29udGVudCA9IGZsb2F0aW5nLmNvbnRlbnQoeyBmbG9hdGluZ1N0eWxlcywgY29udGVudFJlZjogc2V0RmxvYXRpbmcgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2Zsb2F0aW5nQ29udGVudCA/IGNyZWF0ZVBvcnRhbChmbG9hdGluZ0NvbnRlbnQsIGRvY3VtZW50LmJvZHkpIDogbnVsbH1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBmbG9hdGluZ1BsdWdpbjxUPigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxGbG9hdGluZ1BsdWdpblByb3BzLCBbUmVmUGx1Z2luPFQ+XT4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkZmxvYXRpbmcgfSA9IHByb3BzO1xuXG4gICAgaWYgKCRmbG9hdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4geyAkZmxvYXRpbmc6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAkZmxvYXRpbmc6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRmxvYXRpbmdXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczogeyBmbG9hdGluZzogJGZsb2F0aW5nIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJpbnZpc2libGVCYWNrZHJvcFwiOiBcImludmlzaWJsZS1iYWNrZHJvcC1tb2R1bGVfX2ludmlzaWJsZUJhY2tkcm9wX19faE9oNWJcIlxufTsiLCAiaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbnZpc2libGUtYmFja2Ryb3AubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIEludmlzaWJsZUJhY2tkcm9wUGx1Z2luUHJvcHMgPSB7XG4gICRpbnZpc2libGVCYWNrZHJvcD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgaW52aXNpYmxlQmFja2Ryb3BQbHVnaW4gPSBnZXRQbHVnaW48SW52aXNpYmxlQmFja2Ryb3BQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkaW52aXNpYmxlQmFja2Ryb3AsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGludmlzaWJsZUJhY2tkcm9wKSB7XG4gICAgcmV0dXJuIHsgJGludmlzaWJsZUJhY2tkcm9wOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGludmlzaWJsZUJhY2tkcm9wOiB1bmRlZmluZWQsXG4gICAgJGNsYXNzTmFtZTogWyRjbGFzc05hbWUsIHN0eWxlcy5pbnZpc2libGVCYWNrZHJvcF0sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEcm9wRG93bk1lbnUsIHR5cGUgRHJvcERvd25NZW51U3BlYyB9IGZyb20gXCJAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNcIjtcbmltcG9ydCB7IG9uVHJpZ2dlciB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb25SaWdodFRyaWdnZXJJbmplY3RhYmxlIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24yZCB9IGZyb20gXCIuLi9jbGlja2FibGUvY2xpY2thYmxlXCI7XG5pbXBvcnQgdHlwZSB7IGN1cnNvclBsdWdpbiB9IGZyb20gXCIuLi9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyB0eXBlIGVuYWJsZWRQbHVnaW4sIGlzRGlzYWJsZWQgfSBmcm9tIFwiLi4vZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuLi9vbi1vdXRzaWRlLWNsaWNrL29uLW91dHNpZGUtY2xpY2tcIjtcblxuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51UGx1Z2luUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICByZWFkb25seSB0YWJJbmRleD86IG51bWJlcjtcblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBkcm9wLWRvd24gbWVudSB0byB0aGUgZWxlbWVudC4gQ3JlYXRlIHRoZSB2YWx1ZSB3aXRoIGBkcm9wRG93bk1lbnUoa2luZCwgb3B0aW9ucz8pYFxuICAgKiBmcm9tIGBAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNgOyB0aGUgaXRlbXMgY29tZSBmcm9tIHRoZSBjb250cmlidXRpb25zIHJlZ2lzdGVyZWQgZm9yXG4gICAqIHRoZSBraW5kLlxuICAgKlxuICAgKiBUaGUgbWVudSBwb3NpdGlvbnMgaXRzZWxmIGFnYWluc3QgdGhlIG5lYXJlc3QgYW5jaG9yIGFyb3VuZCBpdCwgc28gdGhlIGVsZW1lbnQgXHUyMDE0IG9yIHNvbWV0aGluZ1xuICAgKiBlbmNsb3NpbmcgaXQgXHUyMDE0IGRlY2xhcmVzIGAkYW5jaG9yYC5cbiAgICpcbiAgICogUmVxdWlyZXMgYGRyb3BEb3duTWVudUZlYXR1cmVgIG9mIGBAbGVuc2FwcC9kcm9wLWRvd24tbWVudWAgdG8gYmUgcmVnaXN0ZXJlZDogdGhlIG1lbnVcbiAgICogY29tcG9uZW50IGlzIHJlc29sdmVkIHRocm91Z2ggYW4gaW5qZWN0aW9uIHRva2VuIHRoaXMgcGFja2FnZSBkb2VzIG5vdCBpbXBsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSAkZHJvcERvd25NZW51PzogRHJvcERvd25NZW51U3BlYztcbn07XG5cbmNvbnN0IGhvdmVyQ2xvc2VEZWxheUluTWlsbGlzZWNvbmRzID0gMjAwO1xuXG50eXBlIERyb3BEb3duTWVudVdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgZHJvcERvd25NZW51OiBEcm9wRG93bk1lbnVTcGVjO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IERyb3BEb3duTWVudVdyYXBwZXJDb21wb25lbnQgPSAoeyBkcm9wRG93bk1lbnUsIGNvbnRyaWJ1dGVQcm9wcywgY2hpbGRyZW4gfTogRHJvcERvd25NZW51V3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSB1c2VTdGF0ZTxQb3NpdGlvbjJkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBjbG9zZVRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBvblJpZ2h0VHJpZ2dlciA9IHVzZVN5bmNJbmplY3Qob25SaWdodFRyaWdnZXJJbmplY3RhYmxlKTtcblxuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRJc09wZW4oKHdhc09wZW4pID0+ICF3YXNPcGVuKSwgW10pO1xuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldElzT3BlbihmYWxzZSksIFtdKTtcblxuICBjb25zdCBjYW5jZWxTY2hlZHVsZWRDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoY2xvc2VUaW1lclJlZi5jdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dChjbG9zZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9wZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBzZXRJc09wZW4odHJ1ZSk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIGNvbnN0IHNjaGVkdWxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGNsb3NlLCBob3ZlckNsb3NlRGVsYXlJbk1pbGxpc2Vjb25kcyk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZSwgY2xvc2VdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gY2FuY2VsU2NoZWR1bGVkQ2xvc2UsIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIGNvbnN0IG9wZW5PbiA9IGRyb3BEb3duTWVudS5vcGVuT24gPz8gXCJjbGlja1wiO1xuXG4gIC8vIE1hcmtzIHRoZSBlbGVtZW50IGFuZCwgYmVsb3csIHRoZSBtZW51IGl0IG9wZW5zIGFzIG9uZSB0aGluZyBmb3Igb3V0c2lkZS1jbGljayBwdXJwb3Nlcy5cbiAgY29uc3Qgb3V0c2lkZUNsaWNrTWFya2luZ1Byb3BzID0gdXNlT25PdXRzaWRlQ2xpY2soXG4gICAgdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgfVxuICAgIH0sIFtpc09wZW5dKSxcbiAgKTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIC4uLm91dHNpZGVDbGlja01hcmtpbmdQcm9wcyxcbiAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJtZW51XCIsXG5cbiAgICAuLi4ob3Blbk9uID09PSBcImNsaWNrXCIgJiYge1xuICAgICAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0b2dnbGUoKTtcbiAgICAgIH0sXG5cbiAgICAgIC8vIEEga2V5IHByZXNzIHRoZSBlbGVtZW50IGFuc3dlcnMgd2l0aCBhIG1lbnUgaXMgYW5zd2VyZWQgaGVyZSBhbmQgbm93aGVyZSBlbHNlLFxuICAgICAgLy8gZXhhY3RseSBhcyBpdHMgY2xpY2sgaXM6IHdoYXRldmVyIGVuY2xvc2VzIHRoZSBlbGVtZW50IChhIG1lbnUgcm93IHdpdGggYW5cbiAgICAgIC8vIGFjdGlvbiBvZiBpdHMgb3duLCBzYXkpIG11c3Qgbm90IHRha2UgdGhlIHNhbWUgcHJlc3MgZm9yIGJlaW5nIGFjdGl2YXRlZCB0b28uXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBvblRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJyaWdodC1jbGlja1wiICYmIHtcbiAgICAgIG9uQ29udGV4dE1lbnU6IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgLy8gQSBtZW51IG9wZW5lZCBieSByaWdodC1jbGlja2luZyBiZWxvbmdzIGF0IHRoZSBjdXJzb3IgcmF0aGVyIHRoYW4gYXQgdGhlIGVsZW1lbnQuXG4gICAgICAgIHNldEN1cnNvcih7IHg6IGV2ZW50LmNsaWVudFgsIHk6IGV2ZW50LmNsaWVudFkgfSk7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgfSxcblxuICAgICAgb25LZXlEb3duOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgb25SaWdodFRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJob3ZlclwiICYmIHtcbiAgICAgIG9uTW91c2VFbnRlcjogb3BlbixcbiAgICAgIG9uTW91c2VMZWF2ZTogc2NoZWR1bGVDbG9zZSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NoaWxkcmVufVxuXG4gICAgICB7aXNPcGVuICYmIChcbiAgICAgICAgLy8gTWFya2VkIGFzIGluc2lkZSBmb3IgdGhlIG91dHNpZGUtY2xpY2sgZGV0ZWN0aW9uIGFib3ZlOiB0aGUgbWVudSBpcyBhIHNpYmxpbmcgb2YgdGhlXG4gICAgICAgIC8vIGVsZW1lbnQgaW4gdGhlIERPTSwgYnV0IHBhcnQgb2YgdGhlIHNhbWUgdGhpbmcgYXMgZmFyIGFzIGEgdXNlciBpcyBjb25jZXJuZWQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEEgY2xpY2sgbGFuZGluZyBvbiB0aGUgbWVudSBpcyBhIGNsaWNrIG9uIHRoZSBtZW51IGFuZCBub3RoaW5nIGVsc2UsIHNvIGl0IHN0b3BzIGhlcmVcbiAgICAgICAgLy8gcmF0aGVyIHRoYW4gZ29pbmcgb24gdG8gd2hhdGV2ZXIgZW5jbG9zZXMgdGhlIGVsZW1lbnQgdGhlIG1lbnUgd2FzIG9wZW5lZCBmcm9tIFx1MjAxNCBhIHJvd1xuICAgICAgICAvLyBvZiBhIG1lbnUgb2YgaXRzIG93biwgc2F5LCB3aGljaCB3b3VsZCB0YWtlIGl0IGZvciB0aGUgcm93IGJlaW5nIGFjdGl2YXRlZC4gT25seVxuICAgICAgICAvLyBgY2xpY2tgIHN0b3BzOiB0aGUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb24gYWJvdmUgd29ya3Mgb24gYHBvaW50ZXJkb3duYC5cbiAgICAgICAgPHNwYW4gey4uLm91dHNpZGVDbGlja01hcmtpbmdQcm9wc30gc3R5bGU9e2Rpc3BsYXlDb250ZW50c30gb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufT5cbiAgICAgICAgICA8RHJvcERvd25NZW51XG4gICAgICAgICAgICBzcGVjPXtkcm9wRG93bk1lbnV9XG4gICAgICAgICAgICBhbmNob3JQb2ludD17b3Blbk9uID09PSBcInJpZ2h0LWNsaWNrXCIgPyBjdXJzb3IgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBvbkNsb3NlPXtjbG9zZX1cbiAgICAgICAgICAgIG9uTWVudUhvdmVyQ2hhbmdlPXtcbiAgICAgICAgICAgICAgb3Blbk9uID09PSBcImhvdmVyXCJcbiAgICAgICAgICAgICAgICA/IChtZW51SXNIb3ZlcmVkKSA9PiAobWVudUlzSG92ZXJlZCA/IGNhbmNlbFNjaGVkdWxlZENsb3NlKCkgOiBzY2hlZHVsZUNsb3NlKCkpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgZGlzcGxheUNvbnRlbnRzID0geyBkaXNwbGF5OiBcImNvbnRlbnRzXCIgfSBhcyBjb25zdDtcblxuY29uc3Qgc3RvcFByb3BhZ2F0aW9uID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuZXhwb3J0IGNvbnN0IGRyb3BEb3duTWVudVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wRG93bk1lbnVQbHVnaW5Qcm9wcywgW3R5cGVvZiBlbmFibGVkUGx1Z2luLCB0eXBlb2YgY3Vyc29yUGx1Z2luXT4oXG4gIChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGRyb3BEb3duTWVudSwgJGN1cnNvciwgcm9sZSB9ID0gcHJvcHMgYXMgdHlwZW9mIHByb3BzICYgUmVhY3QuSFRNTFByb3BzPEhUTUxFbGVtZW50PjtcblxuICAgIGlmICgkZHJvcERvd25NZW51ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7ICRkcm9wRG93bk1lbnU6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGNvbnN0IG9wZW5zT25DbGljayA9ICgkZHJvcERvd25NZW51Lm9wZW5PbiA/PyBcImNsaWNrXCIpID09PSBcImNsaWNrXCI7XG4gICAgLy8gUmVhZCBmcm9tIHdoYXQgdGhlIGVsZW1lbnQgd2FzIGdpdmVuOiB0aGlzIHBsdWdpbiBydW5zIGJlZm9yZSB0aGUgb25lIHRoYXQgdHVybnMgaXQgaW50b1xuICAgIC8vIHRoZSBgZGlzYWJsZWRgIHByb3AuXG4gICAgY29uc3QgY2Fubm90QmVVc2VkID0gaXNEaXNhYmxlZChwcm9wcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGRyb3BEb3duTWVudTogdW5kZWZpbmVkLFxuXG4gICAgICAuLi4oJGRyb3BEb3duTWVudS5vcGVuT24gPT09IFwiaG92ZXJcIiA/IHt9IDogeyB0YWJJbmRleDogcHJvcHMudGFiSW5kZXggPz8gMCB9KSxcblxuICAgICAgLy8gQW4gZWxlbWVudCB0aGF0IGFuc3dlcnMgYSBjbGljayB3aXRoIGEgbWVudSBpcyBhIGJ1dHRvbiwgYW5kIHRoZSBjdXJzb3IgaXMgaG93IGl0IHNheXMgc29cbiAgICAgIC8vIC0tIG9yIHNheXMgdGhhdCBpdCBjYW5ub3QgcmlnaHQgbm93LiBCb3RoIHdvdWxkIG90aGVyd2lzZSBjb21lIGZyb20gYSBjbGljayBoYW5kbGVyIHN1Y2ggYW5cbiAgICAgIC8vIGVsZW1lbnQgaGFzIG5vIHJlYXNvbiB0byBoYXZlLiBPbmx5IGEgY2xpY2s6IHNvbWV0aGluZyByaWdodC1jbGlja2VkIGlzIG5vdCBhIGJ1dHRvbiwgYW5kIGFcbiAgICAgIC8vIHJvdyB0aGF0IHJldmVhbHMgYSBtZW51IG9uIGhvdmVyIGlzIGEgcm93LlxuICAgICAgLi4uKG9wZW5zT25DbGljayAmJiB7XG4gICAgICAgIHJvbGU6IHJvbGUgPz8gXCJidXR0b25cIixcbiAgICAgICAgJGN1cnNvcjogJGN1cnNvciA/PyAoY2Fubm90QmVVc2VkID8gXCJub3QtYWxsb3dlZFwiIDogXCJwb2ludGVyXCIpLFxuICAgICAgfSksXG5cbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRHJvcERvd25NZW51V3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHsgZHJvcERvd25NZW51OiAkZHJvcERvd25NZW51IH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0sXG4pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgY3NzTmFtZXMgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VJZCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2FuY2hvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBQb3NpdGlvbjJkIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHR5cGUgVFNoaXJ0U2l6ZSwgdFNoaXJ0U2l6ZUluUGl4ZWxzIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuLi9jb2xvci9jb2xvclwiO1xuaW1wb3J0IHR5cGUgeyBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4gfSBmcm9tIFwiLi4vYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgdHlwZSB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuLi9ib3JkZXIvYm9yZGVyXCI7XG5pbXBvcnQgdHlwZSB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi4vcGFkZGluZy9wYWRkaW5nXCI7XG5pbXBvcnQgdHlwZSB7IG1hcmdpblBsdWdpbiB9IGZyb20gXCIuLi9tYXJnaW4vbWFyZ2luXCI7XG5pbXBvcnQgdHlwZSB7IG92ZXJmbG93UGx1Z2luIH0gZnJvbSBcIi4uL292ZXJmbG93L292ZXJmbG93XCI7XG5cbi8qKlxuICogV2hlcmUgYW4gZWxlbWVudCBzaXRzIHJlbGF0aXZlIHRvIGl0cyBhbmNob3I6IGEgc2lkZSBvZiB0aGUgYW5jaG9yLCBvcHRpb25hbGx5IHJlZmluZWQgd2l0aCBob3dcbiAqIHRoZSBlbGVtZW50IGV4dGVuZHMgYWxvbmcgdGhhdCBzaWRlLiBBIGJhcmUgc2lkZSBjZW50ZXJzIHRoZSBlbGVtZW50IG9uIGl0OyBgc3Bhbi08ZGlyZWN0aW9uPmBcbiAqIGFsaWducyB0aGVpciBlZGdlcyBhbmQgbGV0cyB0aGUgZWxlbWVudCBleHRlbmQgdG93YXJkIHRoYXQgZGlyZWN0aW9uLlxuICpcbiAqIFdoZW4gdGhlIGVsZW1lbnQgd291bGQgbm90IGZpdCB0aGUgdmlld3BvcnQsIGl0IGZhbGxzIGJhY2sgdG8gdGhlIG1pcnJvcmVkIHBvc2l0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgQW5jaG9yUG9zaXRpb24gPVxuICB8IFwidG9wXCJcbiAgfCBcImJvdHRvbVwiXG4gIHwgXCJsZWZ0XCJcbiAgfCBcInJpZ2h0XCJcbiAgfCBcInRvcCBzcGFuLWxlZnRcIlxuICB8IFwidG9wIHNwYW4tcmlnaHRcIlxuICB8IFwiYm90dG9tIHNwYW4tbGVmdFwiXG4gIHwgXCJib3R0b20gc3Bhbi1yaWdodFwiXG4gIHwgXCJsZWZ0IHNwYW4tdG9wXCJcbiAgfCBcImxlZnQgc3Bhbi1ib3R0b21cIlxuICB8IFwicmlnaHQgc3Bhbi10b3BcIlxuICB8IFwicmlnaHQgc3Bhbi1ib3R0b21cIjtcblxuLyoqXG4gKiBFaXRoZXIgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbmVhcmVzdCBhbmNlc3RvciBgJGFuY2hvcmAsIG9yIHRoZSBzYW1lIHBvc2l0aW9uIHJlbGF0aXZlIHRvIGFcbiAqIHBvaW50IGluIHRoZSB2aWV3cG9ydC5cbiAqL1xuZXhwb3J0IHR5cGUgQW5jaG9yZWRBdCA9XG4gIHwgQW5jaG9yUG9zaXRpb25cbiAgfCB7XG4gICAgICByZWFkb25seSBwb3NpdGlvbjogQW5jaG9yUG9zaXRpb247XG5cbiAgICAgIC8qKiBIb3cgZmFyIGZyb20gdGhlIGFuY2hvciB0aGUgZWxlbWVudCBzaXRzLiBEZWZhdWx0cyB0byBgXCJ4c1wiYC4gKi9cbiAgICAgIHJlYWRvbmx5IGdhcD86IFRTaGlydFNpemU7XG5cbiAgICAgIC8qKiBTaXQgYXQgdGhpcyB2aWV3cG9ydCBwb2ludCBpbnN0ZWFkIG9mIGF0IGFuIGFuY2hvci4gKi9cbiAgICAgIHJlYWRvbmx5IHBvaW50PzogUG9zaXRpb24yZDtcbiAgICB9O1xuXG5jb25zdCBkZWZhdWx0R2FwOiBUU2hpcnRTaXplID0gXCJ4c1wiO1xuXG5leHBvcnQgdHlwZSBBbmNob3JQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG5cbiAgLyoqXG4gICAqIE1ha2VzIHRoZSBlbGVtZW50IGFuIGFuY2hvciBmb3IgdGhlIGVsZW1lbnRzIG9mIGl0cyBzdWJ0cmVlIHRoYXQgZGVjbGFyZSB7QGxpbmsgJGFuY2hvcmVkQXR9LlxuICAgKiBUaGUgbmVhcmVzdCBzdWNoIGFuY2VzdG9yIHdpbnMsIHNvIG5lc3Rpbmcgd29ya3Mgd2l0aG91dCBuYW1pbmcgYW55dGhpbmcuXG4gICAqL1xuICByZWFkb25seSAkYW5jaG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUG9zaXRpb25zIHRoZSBlbGVtZW50IHJlbGF0aXZlIHRvIGFuIGFuY2hvciwgYWJvdmUgZXZlcnl0aGluZyBlbHNlIG9uIHRoZSBwYWdlIFx1MjAxNCBpdCBlc2NhcGVzXG4gICAqIGNsaXBwaW5nIGFuY2VzdG9ycyBhbmQgc3RhY2tpbmcgY29udGV4dHMsIHNvIGl0IG5lZWRzIG5vIHBvcnRhbC5cbiAgICpcbiAgICogVGhlIGFuY2hvciBpcyB0aGUgbmVhcmVzdCBhbmNlc3RvciBkZWNsYXJpbmcge0BsaW5rICRhbmNob3J9LCBvciB0aGUgZ2l2ZW4gcG9pbnQgd2hlbiBhIHBvaW50XG4gICAqIGlzIHByb3ZpZGVkIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSAkYW5jaG9yZWRBdD86IEFuY2hvcmVkQXQ7XG59O1xuXG5jb25zdCBhbmNob3JOYW1lQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG50eXBlIEFuY2hvcldyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgaXNBbmNob3I6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFuY2hvcmVkQXQ6IEFuY2hvcmVkQXQgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgQW5jaG9yV3JhcHBlckNvbXBvbmVudCA9ICh7XG4gIGlzQW5jaG9yLFxuICBhbmNob3JlZEF0LFxuICBjb250cmlidXRlUmVmLFxuICBjb250cmlidXRlUHJvcHMsXG4gIGNoaWxkcmVuLFxufTogQW5jaG9yV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IG93bkFuY2hvck5hbWUgPSB0b0FuY2hvck5hbWUodXNlSWQoKSk7XG4gIGNvbnN0IGluaGVyaXRlZEFuY2hvck5hbWUgPSB1c2VDb250ZXh0KGFuY2hvck5hbWVDb250ZXh0KTtcbiAgY29uc3QgZWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBwb2ludFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnRyaWJ1dGVSZWYoXG4gICAgdXNlQ2FsbGJhY2soKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgZWxlbWVudFJlZi5jdXJyZW50ID0gZWxlbWVudDtcbiAgICB9LCBbXSksXG4gICk7XG5cbiAgY29uc3QgcG9zaXRpb24gPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJzdHJpbmdcIiA/IGFuY2hvcmVkQXQgOiBhbmNob3JlZEF0Py5wb3NpdGlvbjtcbiAgY29uc3QgcG9pbnQgPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJvYmplY3RcIiA/IGFuY2hvcmVkQXQucG9pbnQgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGdhcCA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcIm9iamVjdFwiID8gKGFuY2hvcmVkQXQuZ2FwID8/IGRlZmF1bHRHYXApIDogZGVmYXVsdEdhcDtcblxuICBpZiAocG9zaXRpb24gJiYgIXBvaW50ICYmICFpbmhlcml0ZWRBbmNob3JOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRyaWVkIHRvIHBvc2l0aW9uIGFuIGVsZW1lbnQgYXQgXCIke3Bvc2l0aW9ufVwiIHdpdGhvdXQgYW4gYW5jaG9yLiBFaXRoZXIgZ2l2ZSBhbiBhbmNlc3RvciB0aGUgJGFuY2hvciBwcm9wLCBvciBhbmNob3IgdG8gYSBwb2ludCBpbnN0ZWFkLmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEEgcG9pbnQgYW5jaG9yIGlzIHRoZSBlbGVtZW50J3Mgb3duOyBvdGhlcndpc2UgaXQgcG9zaXRpb25zIGFnYWluc3Qgd2hhdGV2ZXIgYW5jaG9yIGVuY2xvc2VzIGl0LlxuICBjb25zdCBhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QgPSBwb2ludCA/IG93bkFuY2hvck5hbWUgOiBpbmhlcml0ZWRBbmNob3JOYW1lO1xuXG4gIGlmIChhbmNob3JlZEF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmlidXRlUHJvcHMoeyBwb3BvdmVyOiBcIm1hbnVhbFwiIH0pO1xuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gZWxlbWVudFJlZi5jdXJyZW50O1xuXG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQW5jaG9yKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGFuY2hvck5hbWVQcm9wZXJ0eSwgb3duQW5jaG9yTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHBvc2l0aW9uUHJvcGVydHksIHBvc2l0aW9uKTtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoZ2FwUHJvcGVydHksIGAke3RTaGlydFNpemVJblBpeGVscyhnYXApfXB4YCk7XG5cbiAgICAgIC8vIE9ubHkgdG93YXJkIHRoZSBhbmNob3IsIHNvIHRoZSBlbGVtZW50IHN0aWxsIGxpbmVzIHVwIHdpdGggaXQgb24gdGhlIG90aGVyIGF4aXMuIEFcbiAgICAgIC8vIGZhbGxiYWNrIHRoYXQgbWlycm9ycyB0aGUgcG9zaXRpb24gbWlycm9ycyB0aGlzIG1hcmdpbiB3aXRoIGl0LlxuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShtYXJnaW5Qcm9wZXJ0eVRvd2FyZHNBbmNob3IocG9zaXRpb24pLCBgJHt0U2hpcnRTaXplSW5QaXhlbHMoZ2FwKX1weGApO1xuXG4gICAgICBpZiAoYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9zaXRpb25BbmNob3JQcm9wZXJ0eSwgYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBvaW50KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9pbnRYUHJvcGVydHksIGAke3BvaW50Lnh9cHhgKTtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb2ludFlQcm9wZXJ0eSwgYCR7cG9pbnQueX1weGApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gVGhlIHBvaW50IHJpc2VzIHRvIHRoZSB0b3AgbGF5ZXIgYWxvbmcgd2l0aCB3aGF0IGlzIGFuY2hvcmVkIHRvIGl0LiBBIGBmaXhlZGAgZWxlbWVudCByZXNvbHZlc1xuICAvLyBhZ2FpbnN0IHRoZSBuZWFyZXN0IGFuY2VzdG9yIHRoYXQgdHJhbnNmb3JtcywgZmlsdGVycyBvciBjb250YWlucyBpdHMgc3VidHJlZSwgc28gYSBwb2ludCBsZWZ0XG4gIC8vIGluIHRoZSB0cmVlIGxhbmRzIGF0IHRoZSBjdXJzb3IgcGx1cyB0aGF0IGFuY2VzdG9yJ3Mgb3duIG9mZnNldCBcdTIwMTQgd2hpY2ggaXMgaG93IGEgbWVudSBvcGVuZWRcbiAgLy8gb3ZlciBhIG5hdmlnYXRvciBpdGVtIHVzZWQgdG8gYXBwZWFyIGh1bmRyZWRzIG9mIHBpeGVscyBiZWxvdyB0aGUgY3Vyc29yLlxuICAvL1xuICAvLyBTaG93biBiZWZvcmUgdGhlIGVsZW1lbnQgYW5jaG9yZWQgdG8gaXQ6IGFuIGFuY2hvciBoYXMgdG8gcmVhY2ggdGhlIHRvcCBsYXllciBmaXJzdCwgb3IgdGhlXG4gIC8vIGVsZW1lbnQgcG9zaXRpb25pbmcgYWdhaW5zdCBpdCBmaW5kcyBubyBhbmNob3IgYXQgYWxsIGFuZCBsYW5kcyBpbiB0aGUgdmlld3BvcnQncyBjb3JuZXIuXG4gIC8vXG4gIC8vIE9uY2UsIG9uIG1vdW50OiBhbiBlbGVtZW50IGlzIGFuY2hvcmVkIHRvIGEgcG9pbnQgZm9yIGFzIGxvbmcgYXMgaXQgaXMgbW91bnRlZCwgc2luY2UgdGhlIHBvaW50XG4gIC8vIGlzIHdoZXJlIHRoZSBjdXJzb3Igd2FzIHdoZW4gd2hhdGV2ZXIgb3BlbmVkIGl0IHdhcyBvcGVuZWQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IHBvaW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIWVsZW1lbnQgfHwgIWlzUG9wb3ZlckNhcGFibGUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbGVtZW50LnNob3dQb3BvdmVyKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgZWxlbWVudC5oaWRlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIXBvc2l0aW9uIHx8ICFlbGVtZW50IHx8ICFpc1BvcG92ZXJDYXBhYmxlKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGVsZW1lbnQuaGlkZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbcG9zaXRpb25dKTtcblxuICBjb25zdCBjb250ZW50ID0gcG9pbnQgPyAoXG4gICAgPD5cbiAgICAgIHsvKiBBIHplcm8tc2l6ZSBhbmNob3IgYXQgdGhlIHBvaW50LCBzbyBhIGN1cnNvci1hbmNob3JlZCBlbGVtZW50IHBvc2l0aW9ucyBsaWtlIGFueSBvdGhlci4gKi99XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17cG9pbnRSZWYgYXMgUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50Pn1cbiAgICAgICAgcG9wb3Zlcj1cIm1hbnVhbFwiXG4gICAgICAgIGRhdGEtYW5jaG9yLXBvaW50LXRlc3RcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYW5jaG9yUG9pbnR9XG4gICAgICAgIHN0eWxlPXtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbYW5jaG9yTmFtZVByb3BlcnR5XTogb3duQW5jaG9yTmFtZSxcbiAgICAgICAgICAgIFtwb2ludFhQcm9wZXJ0eV06IGAke3BvaW50Lnh9cHhgLFxuICAgICAgICAgICAgW3BvaW50WVByb3BlcnR5XTogYCR7cG9pbnQueX1weGAsXG4gICAgICAgICAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gICAgICAgIH1cbiAgICAgIC8+XG5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKSA6IChcbiAgICBjaGlsZHJlblxuICApO1xuXG4gIGlmIChpc0FuY2hvcikge1xuICAgIHJldHVybiA8YW5jaG9yTmFtZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e293bkFuY2hvck5hbWV9Pntjb250ZW50fTwvYW5jaG9yTmFtZUNvbnRleHQuUHJvdmlkZXI+O1xuICB9XG5cbiAgcmV0dXJuIDw+e2NvbnRlbnR9PC8+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFuY2hvclBsdWdpbiA9IGdldFBsdWdpbjxcbiAgQW5jaG9yUGx1Z2luUHJvcHMsXG4gIFtcbiAgICB0eXBlb2YgY2xhc3NOYW1lUGx1Z2luLFxuICAgIHR5cGVvZiBjb2xvclBsdWdpbixcbiAgICB0eXBlb2YgYmFja2dyb3VuZENvbG9yUGx1Z2luLFxuICAgIHR5cGVvZiBib3JkZXJQbHVnaW4sXG4gICAgdHlwZW9mIHBhZGRpbmdQbHVnaW4sXG4gICAgdHlwZW9mIG1hcmdpblBsdWdpbixcbiAgICB0eXBlb2Ygb3ZlcmZsb3dQbHVnaW4sXG4gIF1cbj4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGFuY2hvciwgJGFuY2hvcmVkQXQsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGFuY2hvciAmJiAkYW5jaG9yZWRBdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgJGFuY2hvcjogdW5kZWZpbmVkLCAkYW5jaG9yZWRBdDogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRhbmNob3I6IHVuZGVmaW5lZCxcbiAgICAkYW5jaG9yZWRBdDogdW5kZWZpbmVkLFxuXG4gICAgLy8gUmlzaW5nIHRvIHRoZSB0b3AgbGF5ZXIgaXMgYSB0ZWNobmljYWxpdHkgb2YgcG9zaXRpb25pbmcsIGJ1dCB0aGUgYnJvd3NlciBtYWtlcyBpdCBhIGxvb2s6XG4gICAgLy8gY29sb3VycyBvZiBpdHMgb3duLCBhIGJvcmRlciwgcGFkZGluZywgYW5kIGEgbWFyZ2luIHRoYXQgd291bGQgY2VudGVyIHRoZSBlbGVtZW50LiBVbmRvIHRoYXQsXG4gICAgLy8gc28gYW4gZWxlbWVudCBwb3NpdGlvbmVkIHRoaXMgd2F5IGxvb2tzIGxpa2UgaXQgZG9lcyBhbnl3aGVyZSBlbHNlLCBhbmQgbGV0IHdoYXRldmVyIGl0IHNheXNcbiAgICAvLyBhYm91dCBpdHNlbGYgd2luLlxuICAgIC4uLigkYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICRjb2xvcjogcHJvcHMuJGNvbG9yID8/IFwiaW5oZXJpdFwiLFxuICAgICAgJGJhY2tncm91bmRDb2xvcjogcHJvcHMuJGJhY2tncm91bmRDb2xvciA/PyBcInRyYW5zcGFyZW50XCIsXG4gICAgICAkYm9yZGVyOiB7IHdpZHRoOiBcInplcm9cIiwgLi4ucHJvcHMuJGJvcmRlciB9LFxuICAgICAgJHBhZGRpbmc6IHByb3BzLiRwYWRkaW5nID8/IFwiemVyb1wiLFxuICAgICAgJG1hcmdpbjogcHJvcHMuJG1hcmdpbiA/PyBcInplcm9cIixcbiAgICAgICRvdmVyZmxvdzogcHJvcHMuJG92ZXJmbG93ID8/IFwidmlzaWJsZVwiLFxuICAgIH0pLFxuXG4gICAgJGNsYXNzTmFtZTogY3NzTmFtZXMoJGNsYXNzTmFtZSwge1xuICAgICAgW3N0eWxlcy5hbmNob3JdOiAhISRhbmNob3IsXG4gICAgICBbc3R5bGVzLmFuY2hvcmVkQXRdOiAkYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkLFxuICAgIH0pLFxuXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogQW5jaG9yV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7IGlzQW5jaG9yOiAhISRhbmNob3IsIGFuY2hvcmVkQXQ6ICRhbmNob3JlZEF0IH0sXG4gICAgfSxcbiAgfTtcbn0pO1xuXG5jb25zdCBtYXJnaW5Qcm9wZXJ0eVRvd2FyZHNBbmNob3IgPSAocG9zaXRpb246IEFuY2hvclBvc2l0aW9uKSA9PiB7XG4gIGlmIChwb3NpdGlvbi5zdGFydHNXaXRoKFwiYm90dG9tXCIpKSB7XG4gICAgcmV0dXJuIFwibWFyZ2luLXRvcFwiO1xuICB9XG5cbiAgaWYgKHBvc2l0aW9uLnN0YXJ0c1dpdGgoXCJ0b3BcIikpIHtcbiAgICByZXR1cm4gXCJtYXJnaW4tYm90dG9tXCI7XG4gIH1cblxuICByZXR1cm4gcG9zaXRpb24uc3RhcnRzV2l0aChcInJpZ2h0XCIpID8gXCJtYXJnaW4tbGVmdFwiIDogXCJtYXJnaW4tcmlnaHRcIjtcbn07XG5cbmNvbnN0IGFuY2hvck5hbWVQcm9wZXJ0eSA9IFwiLS1hbmNob3ItbmFtZVwiO1xuY29uc3QgZ2FwUHJvcGVydHkgPSBcIi0tYW5jaG9yLWdhcFwiO1xuY29uc3QgcG9zaXRpb25BbmNob3JQcm9wZXJ0eSA9IFwiLS1hbmNob3ItdGFyZ2V0XCI7XG5jb25zdCBwb3NpdGlvblByb3BlcnR5ID0gXCItLWFuY2hvci1wb3NpdGlvblwiO1xuY29uc3QgcG9pbnRYUHJvcGVydHkgPSBcIi0tYW5jaG9yLXBvaW50LXhcIjtcbmNvbnN0IHBvaW50WVByb3BlcnR5ID0gXCItLWFuY2hvci1wb2ludC15XCI7XG5cbi8qKiBBbmNob3IgbmFtZXMgYXJlIGRhc2hlZCBpZGVudHMsIHNvIHRoZSBnZW5lcmF0ZWQgaWQgaGFzIHRvIGxvc2UgZXZlcnl0aGluZyBlbHNlLiAqL1xuY29uc3QgdG9BbmNob3JOYW1lID0gKGlkOiBzdHJpbmcpID0+IGAtLWFuY2hvci0ke2lkLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCBcIlwiKX1gO1xuXG50eXBlIFBvcG92ZXJDYXBhYmxlID0gSFRNTEVsZW1lbnQgJiB7IHNob3dQb3BvdmVyOiBWb2lkRnVuY3Rpb247IGhpZGVQb3BvdmVyOiBWb2lkRnVuY3Rpb24gfTtcblxuY29uc3QgaXNQb3BvdmVyQ2FwYWJsZSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgUG9wb3ZlckNhcGFibGUgPT5cbiAgdHlwZW9mIChlbGVtZW50IGFzIFBhcnRpYWw8UG9wb3ZlckNhcGFibGU+KS5zaG93UG9wb3ZlciA9PT0gXCJmdW5jdGlvblwiO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2FuY2hvci9hbmNob3IubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJhbmNob3JcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JfX19tLTV1YlwiLFxuICBcImFuY2hvcmVkQXRcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JlZEF0X19fVUFyVUtcIixcbiAgXCJhbmNob3JQb2ludFwiOiBcImFuY2hvci1tb2R1bGVfX2FuY2hvclBvaW50X19fc0ExQWNcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL2ZvY3VzYWJsZVwiO1xuXG5leHBvcnQgdHlwZSAkRm9jdXNhYmxlUHJvcHM8Rm9jdXNlZEl0ZW0+ID0gUmVxdWlyZWQ8Rm9jdXNhYmxlUGx1Z2luUHJvcHM8Rm9jdXNlZEl0ZW0+PltcIiRmb2N1c2FibGVcIl07XG5cbi8qKlxuICogSWRlbnRpZmllcyBhIHNldCBvZiBmb2N1c2FibGVzIGNvbXBldGluZyBmb3Igb25lIGZvY3VzZWQgaXRlbS4gRWxlbWVudHMgam9pbiBpdCBieSBkZWNsYXJpbmdcbiAqIGAkZm9jdXNhYmxlYDsgbm90aGluZyBlbnVtZXJhdGVzIHRoZW0gYXQgdGhlIGNhbGwgc2l0ZS5cbiAqL1xuZXhwb3J0IHR5cGUgRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzS2V5Ym9hcmROYXZpZ2FibGU6IGZhbHNlO1xuICBmb2N1c2FibGU6IChpdGVtOiBGb2N1c2VkSXRlbSkgPT4gJEZvY3VzYWJsZVByb3BzPEZvY3VzZWRJdGVtPjtcbn07XG5cbi8qKlxuICogQSBmb2N1c2FibGUgY29udGV4dCB3aG9zZSBtZW1iZXJzIGFyZSBhbHNvIG5hdmlnYXRlZCB3aXRoIGFycm93IGtleXMsIGluIHRoZSBvcmRlciB0aGV5IHN0YXRlLlxuICogVGhlIGxvd2VzdCBvcmRlciBudW1iZXIgaXMgZm9jdXNlZCB3aGVuIHRoZSBtZW1iZXJzIGFwcGVhciwgYW5kIGZvY3VzIHJldHVybnMgdG8gdGhlIGVuY2xvc2luZ1xuICogY29udGV4dCB3aGVuIHRoZXkgZ28gYXdheS5cbiAqL1xuZXhwb3J0IHR5cGUgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNLZXlib2FyZE5hdmlnYWJsZTogdHJ1ZTtcbiAgZm9jdXNhYmxlOiAoaXRlbTogRm9jdXNlZEl0ZW0sIG9yZGVyTnVtYmVyOiBudW1iZXIpID0+ICRGb2N1c2FibGVQcm9wczxGb2N1c2VkSXRlbT47XG59O1xuXG5leHBvcnQgdHlwZSBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtID0gYW55PiA9XG4gIHwgRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT5cbiAgfCBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+O1xuXG5jb25zdCBjb250ZXh0c0J5SWQgPSBuZXcgTWFwPHN0cmluZywgQW55Rm9jdXNhYmxlQ29udGV4dD4oKTtcblxuLyoqXG4gKiBEZWNsYXJlcyBhIGZvY3VzYWJsZSBjb250ZXh0LiBUaGUgc2FtZSBpZCBhbHdheXMgeWllbGRzIHRoZSBzYW1lIGNvbnRleHQsIHNvIGNhbGxpbmcgdGhpcyBkdXJpbmdcbiAqIHJlbmRlciBpcyBzdGFibGUgXHUyMDE0IHdoaWNoIGlzIHdoYXQgbGV0cyBhIHN1cmZhY2Ugd2l0aCBzZXZlcmFsIGxpdmUgaW5zdGFuY2VzIG5hbWUgb25lIGNvbnRleHQgcGVyXG4gKiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZvY3VzYWJsZUNvbnRleHQgPSA8Rm9jdXNlZEl0ZW0sPihpZDogc3RyaW5nKTogRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPT5cbiAgZ2V0T3JDcmVhdGVDb250ZXh0KGlkLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dDogRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPSB7XG4gICAgICBpZCxcbiAgICAgIGlzS2V5Ym9hcmROYXZpZ2FibGU6IGZhbHNlLFxuICAgICAgZm9jdXNhYmxlOiAoaXRlbSkgPT4gKHsgY29udGV4dCwgaXRlbSB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH0pO1xuXG4vKipcbiAqIERlY2xhcmVzIGEgZm9jdXNhYmxlIGNvbnRleHQgd2hvc2UgbWVtYmVycyBhcmUgbmF2aWdhdGVkIHdpdGggYXJyb3cga2V5cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCA9IDxGb2N1c2VkSXRlbSw+KFxuICBpZDogc3RyaW5nLFxuKTogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9PlxuICBnZXRPckNyZWF0ZUNvbnRleHQoaWQsICgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0OiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICAgICAgaWQsXG4gICAgICBpc0tleWJvYXJkTmF2aWdhYmxlOiB0cnVlLFxuICAgICAgZm9jdXNhYmxlOiAoaXRlbSwgb3JkZXJOdW1iZXIpID0+ICh7IGNvbnRleHQsIGl0ZW0sIG9yZGVyTnVtYmVyIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbmNvbnN0IGdldE9yQ3JlYXRlQ29udGV4dCA9IDxUIGV4dGVuZHMgQW55Rm9jdXNhYmxlQ29udGV4dD4oaWQ6IHN0cmluZywgY3JlYXRlOiAoKSA9PiBUKTogVCA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nID0gY29udGV4dHNCeUlkLmdldChpZCk7XG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nIGFzIFQ7XG4gIH1cblxuICBjb25zdCBjcmVhdGVkID0gY3JlYXRlKCk7XG5cbiAgY29udGV4dHNCeUlkLnNldChpZCwgY3JlYXRlZCk7XG5cbiAgcmV0dXJuIGNyZWF0ZWQ7XG59O1xuIiwgImltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgZ2V0SG92ZXJhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IHR5cGUgTXV0YWJsZVJlZk9iamVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IHVzZUxvY2FsSG92ZXJhYmxlID0gPEVsZW0gZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiB7XG4gIGNvbnN0IGhvdmVyYWJsZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+IGdldEhvdmVyYWJsZUNvbnRleHQ8TXV0YWJsZVJlZk9iamVjdDxFbGVtIHwgbnVsbD4+KCksIFtdKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEVsZW0+KG51bGwpO1xuICBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkID0gdXNlU3luY0luamVjdChjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlLCBob3ZlcmFibGVDb250ZXh0KTtcblxuICByZXR1cm4ge1xuICAgIHJlZixcbiAgICBjb250ZXh0OiBob3ZlcmFibGVDb250ZXh0LmhvdmVyYWJsZShyZWYpLFxuICAgIGNvbXBvbmVudElzSG92ZXJlZDogaXRlbUJlaW5nSG92ZXJlZCxcbiAgfTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7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QUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHlCQUF5QjtBQUFBLEVBQ3pCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtB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Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQixpQ0FBaUM7QUFBQSxFQUNqQyw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QixtQ0FBbUM7QUFBQSxFQUNuQyw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxrQ0FBa0M7QUFBQSxFQUNsQywwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6QiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixtQ0FBbUM7QUFBQSxFQUNuQywrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyxtQ0FBbUM7QUFBQSxFQUNuQyxvQ0FBb0M7QUFBQSxFQUNwQyw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QixvQ0FBb0M7QUFBQSxFQUNwQyxnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQixzQ0FBc0M7QUFBQSxFQUN0QyxnQ0FBZ0M7QUFBQSxFQUNoQyxnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyxpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyxvQ0FBb0M7QUFBQSxFQUNwQyxxQ0FBcUM7QUFBQSxFQUNyQyw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6QiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1QixrQ0FBa0M7QUFBQSxFQUNsQyw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3QixvQ0FBb0M7QUFBQSxFQUNwQyw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQixrQ0FBa0M7QUFBQSxFQUNsQyxrQ0FBa0M7QUFBQSxFQUNsQyxtQ0FBbUM7QUFBQSxFQUNuQywyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5QiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5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LDZCQUE2QjtBQUFBLEVBQzdCLDRCQUE0QjtBQUFBLEVBQzVCLCtCQUErQjtBQUFBLEVBQy9CLDZCQUE2QjtBQUFBLEVBQzdCLG1CQUFtQjtBQUFBLEVBQ25CLDJCQUEyQjtBQUFBLEVBQzNCLHdCQUF3QjtBQUFBLEVBQ3hCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGlCQUFpQjtBQUFBLEVBQ2pCLHlCQUF5QjtBQUFBLEVBQ3pCLHNCQUFzQjtBQUFBLEVBQ3RCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGlCQUFpQjtBQUFBLEVBQ2pCLHlCQUF5QjtBQUFBLEVBQ3pCLHNCQUFzQjtBQUFBLEVBQ3RCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xC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QUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsc0JBQXNCO0FBQUEsRUFDdEIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsc0JBQXNCO0FBQUEsRUFDdEIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsZ0JBQWdCO0FBQUEsRUFDaEIsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQ2xCOzs7QUQ5RkEsSUFBQUMsYUFBeUI7QUFjbEIsSUFBTSxtQkFBZSxzQ0FBdUQsQ0FBQyxVQUFVO0FBQzVGLE1BQUksQ0FBQyxNQUFNLFNBQVM7QUFDbEIsV0FBTyxFQUFFLFNBQVMsT0FBVTtBQUFBLEVBQzlCO0FBRUEsUUFBTSxTQUFTLE1BQU0sWUFBWSxPQUFPLE9BQU8sTUFBTTtBQUVyRCxVQUFJLHFCQUFTLE1BQU0sR0FBRztBQUNwQixXQUFPO0FBQUEsTUFDTCxZQUFZLENBQUMsTUFBTSxZQUFZLHNCQUFhLFdBQVcsTUFBTSxFQUFFLENBQUM7QUFBQSxNQUNoRSxTQUFTO0FBQUEsSUFDWDtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFVBQVUsT0FBTyxPQUFPLE9BQU87QUFDckMsUUFBTSxhQUFhLE9BQU8sVUFBVSxPQUFPO0FBQzNDLFFBQU0sWUFBWSxPQUFPLFNBQVMsT0FBTztBQUN6QyxRQUFNLFdBQVcsT0FBTyxRQUFRLE9BQU87QUFFdkMsU0FBTztBQUFBLElBQ0wsWUFBWTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sVUFBVSxzQkFBYSxnQkFBZ0IsT0FBTyxFQUFFLElBQUk7QUFBQSxNQUNwRCxZQUFZLHNCQUFhLGtCQUFrQixTQUFTLEVBQUUsSUFBSTtBQUFBLE1BQzFELGFBQWEsc0JBQWEsbUJBQW1CLFVBQVUsRUFBRSxJQUFJO0FBQUEsTUFDN0QsV0FBVyxzQkFBYSxpQkFBaUIsUUFBUSxFQUFFLElBQUk7QUFBQSxJQUN6RDtBQUFBLElBQ0EsU0FBUztBQUFBLEVBQ1g7QUFDRixDQUFDOzs7QUU3Q0QsSUFBQUMsNkJBQTBCOzs7QUNEaUQsSUFBTyxpQ0FBUTtBQUFBLEVBQ3hGLG1CQUFtQjtBQUNyQjs7O0FESU8sSUFBTSwyQkFBdUIsc0NBQStELENBQUMsV0FBVztBQUFBLEVBQzdHLFlBQVksQ0FBQyxNQUFNLFlBQVksRUFBRSxDQUFDLCtCQUFxQixpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLGdCQUFnQixDQUFDO0FBQUEsRUFFckcsaUJBQWlCO0FBQ25CLEVBQUU7OztBRVRGLElBQUFDLDZCQUEwQjs7O0FDRG1DLElBQU8sMEJBQVE7QUFBQSxFQUMxRSw0QkFBNEI7QUFBQSxFQUM1Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFDdkI7OztBREZPLElBQU0scUJBQWlCLHNDQUF5RCxDQUFDLFVBQVU7QUFDaEcsUUFBTSxZQUFZLE1BQU07QUFFeEIsTUFBSSxDQUFDLFdBQVc7QUFDZCxXQUFPLEVBQUUsV0FBVyxPQUFVO0FBQUEsRUFDaEM7QUFFQSxRQUFNLElBQUksT0FBTyxjQUFjLFdBQVcsWUFBWSxVQUFVO0FBQ2hFLFFBQU0sSUFBSSxPQUFPLGNBQWMsV0FBVyxZQUFZLFVBQVU7QUFDaEUsUUFBTSxnQkFBZ0IsT0FBTyxjQUFjLFdBQVcsUUFBUSxVQUFVO0FBRXhFLFNBQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUVOO0FBQUEsUUFDRSxDQUFDLHdCQUFlLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxHQUFHO0FBQUEsUUFDdkMsQ0FBQyx3QkFBZSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUFBLFFBQ3ZDLENBQUMsd0JBQWUsMEJBQTBCLENBQUMsR0FBRztBQUFBLE1BQ2hEO0FBQUEsSUFDRjtBQUFBLElBRUEsV0FBVztBQUFBLEVBQ2I7QUFDRixDQUFDOzs7QUVoQ2dFLElBQU8sNEJBQVE7QUFBQSxFQUM5RSxjQUFjO0FBQUEsRUFDZCwwQkFBMEI7QUFBQSxFQUMxQixxQkFBcUI7QUFDdkI7OztBQ0RBLElBQUFDLDZCQUEwQjtBQWlCbkIsSUFBTSxzQkFBa0I7QUFBQSxFQUM3QixDQUFDLFVBQVU7QUFDVCxVQUFNLFNBQVMsT0FBTyxNQUFNLGVBQWUsV0FBVyxNQUFNLGFBQWE7QUFDekUsVUFBTSxhQUFhLE1BQU0sZUFBZSxnQkFBZ0IsV0FBVztBQUVuRSxXQUFPO0FBQUEsTUFDTCxZQUFZO0FBQUEsUUFDVixNQUFNLGVBQWUsUUFBUSxhQUFhLDBCQUFnQixZQUFZLElBQUk7QUFBQSxRQUMxRSxhQUFhLDBCQUFnQix3QkFBd0IsSUFBSTtBQUFBLFFBQ3pELE1BQU0sZUFBZSxVQUFVLDBCQUFnQixtQkFBbUIsSUFBSTtBQUFBLFFBQ3RFLE1BQU07QUFBQSxNQUNSO0FBQUEsTUFDQSxRQUFRLFdBQVcsU0FBWSxNQUFNLFNBQVMsRUFBRSxHQUFHLE1BQU0sUUFBUSxVQUFVLE9BQU87QUFBQSxNQUNsRixZQUFZO0FBQUEsSUFDZDtBQUFBLEVBQ0Y7QUFDRjs7O0FDbkNBLElBQUFDLDZCQUEwQjs7O0FDRHFDLElBQU8sMkJBQVE7QUFBQSxFQUM1RSxhQUFhO0FBQ2Y7OztBRFdPLElBQU0sc0JBQWtCLHNDQUEwRCxDQUFDLFdBQVc7QUFBQSxFQUNuRyxZQUFZLENBQUMsTUFBTSxZQUFZLE1BQU0sYUFBYSx5QkFBZ0IsWUFBWSxNQUFTO0FBQUEsRUFDdkYsWUFBWTtBQUNkLEVBQUU7OztBRWRGLElBQUFDLDZCQUEwQjs7O0FDRjJCLElBQU8sc0JBQVE7QUFBQSxFQUNsRSxRQUFRO0FBQ1Y7OztBRGVPLElBQU0saUJBQWEsc0NBQXlFLENBQUMsV0FBVztBQUFBLEVBQzdHLFlBQVksQ0FBQyxNQUFNLFlBQVksTUFBTSxRQUFRLG9CQUFXLE9BQU8sTUFBUztBQUFBO0FBQUEsRUFFeEUsUUFBUSxNQUFNLFFBQVMsRUFBRSxHQUFHLE1BQU0sUUFBUSxrQkFBa0IsTUFBTSxNQUFNLElBQTRCLE1BQU07QUFBQSxFQUMxRyxPQUFPO0FBQ1QsRUFBRTs7O0FFckJGLElBQUFDLDZCQUEwQjs7O0FDRDZCLElBQU8sdUJBQVE7QUFBQSxFQUNwRSxTQUFTO0FBQ1g7OztBRFVPLElBQU0sa0JBQWMsc0NBQXNELENBQUMsV0FBVztBQUFBLEVBQzNGLFlBQVksQ0FBQyxNQUFNLFlBQVksTUFBTSxTQUFTLHFCQUFZLFFBQVEsTUFBUztBQUFBLEVBQzNFLFFBQVE7QUFDVixFQUFFOzs7QUVmRixJQUFBQyw2QkFBb0U7QUFFcEUsSUFBQUMsaUJBQWlDO0FBRWpDLElBQUFDLHFCQUE4Qjs7O0FDSjlCLElBQUFDLDJCQUE4QjtBQUU5QixJQUFBQyxnQkFBNEI7QUFDNUIsSUFBQUMsZ0JBQWlEO0FBRTFDLElBQU0sMkJBQTJCLENBQ3RDLFlBQ0EsYUFDQSxPQUNBLGtCQUNHO0FBRUg7QUFBQSxJQUNFLE1BQU07QUFDSixVQUFJLFdBQVcsU0FBUztBQUN0Qix1Q0FBWSxNQUFNO0FBQ2hCLGdCQUFNLElBQUksYUFBYTtBQUV2QixnQkFBTSxvQkFBb0IsWUFBWSxZQUFZO0FBRWxELGNBQUkscUJBQXFCLFlBQVksU0FBUztBQUM1Qyx3REFBYyxZQUFZLE9BQU87QUFDakMsd0JBQVksUUFBUSxJQUFJLE1BQVM7QUFBQSxVQUNuQztBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFFQSxrQkFBWSxVQUFVO0FBQUEsSUFDeEI7QUFBQTtBQUFBLElBRUEsQ0FBQyxlQUFlLEtBQUs7QUFBQSxFQUN2QjtBQUNGOzs7QUNoQ0EsSUFBQUMsMkJBQThCO0FBRTlCLElBQUFDLGdCQUE0QjtBQUM1QixJQUFBQyxnQkFBaUQ7QUFFMUMsSUFBTSxzQkFBc0IsQ0FDakMsWUFDQSxnQkFDRztBQUVIO0FBQUEsSUFDRSxNQUFNLE1BQU07QUFDVixVQUFJLFdBQVcsU0FBUztBQUN0Qix1Q0FBWSxNQUFNO0FBQ2hCLHNEQUFjLFlBQVksT0FBTztBQUNqQyxzQkFBWSxRQUFRLElBQUksTUFBUztBQUFBLFFBQ25DLENBQUM7QUFBQSxNQUNIO0FBQUEsSUFDRjtBQUFBO0FBQUEsSUFHQSxDQUFDO0FBQUEsRUFDSDtBQUNGOzs7QUN2QkEsSUFBQUMsZ0JBQTBCO0FBQzFCLElBQUFDLHFCQUE4QjtBQVk5QixJQUFNLHVCQUEyQyxFQUFFLFdBQVcsTUFBTTtBQUFDLEVBQUU7QUFFaEUsSUFBTSx3QkFBd0IsQ0FDbkMsU0FDQSxNQUNBLGFBQ0EsU0FDQSxVQUN1QjtBQUN2QixRQUFNLGlCQUFhLGtDQUFjLGlDQUFpQztBQUVsRSwrQkFBVSxNQUFNO0FBQ2QsUUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTO0FBQ3hCO0FBQUEsSUFDRjtBQUVBLFVBQU0sUUFBd0IsRUFBRSxNQUFNLGFBQWEsZUFBZSxHQUFHLFFBQVE7QUFFN0UsZUFBVyxTQUFTLFNBQVMsS0FBSztBQUVsQyxVQUFNLDJCQUEyQixNQUFNO0FBQ3JDLFlBQU0saUJBQWlCLFdBQVcsZUFBZTtBQUVqRCxVQUFJLENBQUMsZ0JBQWdCO0FBQ25CO0FBQUEsTUFDRjtBQUVBLFlBQU0sVUFBVSxXQUFXLGdCQUFnQixjQUFjO0FBQ3pELFlBQU0sY0FBYyxNQUFNLElBQUk7QUFDOUIsWUFBTSxVQUFVLFFBQVEsS0FBSyxDQUFDLGNBQWMsVUFBVSxTQUFTLFdBQVcsS0FBSyxRQUFRLENBQUM7QUFFeEYsV0FBSSxtQ0FBUyxRQUFRLGdCQUFlLFNBQVMsa0JBQWtCLFFBQVEsU0FBUztBQUM5RSxnQkFBUSxRQUFRLE1BQU07QUFBQSxNQUN4QjtBQUFBLElBQ0Y7QUFJQSxTQUFLLFFBQVEsUUFBUSxFQUFFLEtBQUssd0JBQXdCO0FBRXBELFdBQU8sTUFBTTtBQUNYLGlCQUFXLFdBQVcsU0FBUyxLQUFLO0FBRXBDLFdBQUssUUFBUSxRQUFRLEVBQUUsS0FBSyx3QkFBd0I7QUFBQSxJQUN0RDtBQUFBLEVBQ0YsR0FBRyxDQUFDLFlBQVksU0FBUyxNQUFNLGFBQWEsU0FBUyxLQUFLLENBQUM7QUFFM0QsTUFBSSxDQUFDLFNBQVM7QUFDWixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU87QUFBQSxJQUNMLFdBQVcsQ0FBQyxVQUErQjtBQUN6QyxZQUFNLE9BQU8sT0FBTyxNQUFNLEdBQUc7QUFFN0IsVUFBSSxTQUFTLFFBQVc7QUFDdEI7QUFBQSxNQUNGO0FBRUEsWUFBTSxVQUFVLFdBQVcsZ0JBQWdCLE9BQU87QUFFbEQsVUFBSSxRQUFRLFdBQVcsR0FBRztBQUN4QjtBQUFBLE1BQ0Y7QUFFQSxZQUFNLGVBQWUsUUFBUSxVQUFVLENBQUMsY0FBYyxVQUFVLFNBQVMsSUFBSTtBQUU3RSxZQUFNLFlBQ0osU0FBUyxVQUNMLElBQ0EsU0FBUyxTQUNQLFFBQVEsU0FBUyxLQUNoQixlQUFlLE9BQU8sUUFBUSxVQUFVLFFBQVE7QUFFekQsWUFBTSxPQUFPLFFBQVEsU0FBUztBQUU5QixVQUFJLE1BQU07QUFDUixjQUFNLGVBQWU7QUFDckIsYUFBSyxRQUFRLE1BQU07QUFBQSxNQUNyQjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxJQUFNLFNBQVMsQ0FBQyxRQUFnQjtBQUM5QixVQUFRLEtBQUs7QUFBQSxJQUNYLEtBQUs7QUFBQSxJQUNMLEtBQUs7QUFDSCxhQUFPO0FBQUEsSUFDVCxLQUFLO0FBQUEsSUFDTCxLQUFLO0FBQ0gsYUFBTztBQUFBLElBQ1QsS0FBSztBQUNILGFBQU87QUFBQSxJQUNULEtBQUs7QUFDSCxhQUFPO0FBQUEsSUFDVDtBQUNFLGFBQU87QUFBQSxFQUNYO0FBQ0Y7OztBQ2hIQSxJQUFBQyxnQkFBbUQ7QUFLNUMsSUFBTSxpQkFDWCxDQUNFLE9BQ0EsZUFDQSxrQkFDQSxlQUVGLENBQUksVUFBNkI7QUFDL0IsUUFBTSxjQUFjLE1BQU07QUFFMUIsY0FBWSxzQ0FBc0Msb0JBQUksSUFBSTtBQUUxRCxNQUFJLFlBQVksa0NBQWtDLElBQUksZ0JBQWdCLEdBQUc7QUFDdkU7QUFBQSxFQUNGO0FBRUEsY0FBWSxrQ0FBa0MsSUFBSSxnQkFBZ0I7QUFFbEUsYUFBVyxVQUFVO0FBRXJCLGlDQUFZLE1BQU07QUFDaEIsVUFBTSxJQUFJLGFBQWE7QUFBQSxFQUN6QixDQUFDO0FBQ0g7OztBQzNCRixJQUFBQyxnQkFBNEI7QUFLckIsSUFBTSxnQkFDWCxDQUNFLGtCQUNBLE9BQ0EsZUFFRixDQUFJLFVBQTZCO0FBWm5DO0FBYUksUUFBTSxjQUFjLE1BQU07QUFFMUIsT0FBSSxpQkFBWSxzQ0FBWixtQkFBK0MsSUFBSSxtQkFBbUI7QUFDeEU7QUFBQSxFQUNGO0FBRUEsYUFBVyxVQUFVO0FBRXJCLGlDQUFZLE1BQU07QUFDaEIsVUFBTSxJQUFJLE1BQVM7QUFBQSxFQUNyQixDQUFDO0FBQ0g7OztBQ3ZCRixJQUFBQyxpQkFBMEI7QUFFMUIsSUFBQUMscUJBQThCO0FBR3ZCLElBQU0sMEJBQTBCLENBQ3JDLGtCQUNBLGVBQ0EsbUJBQ0c7QUFDSCxRQUFNLGlDQUE2QjtBQUFBLElBQ2pDO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBR0EsZ0NBQVUsTUFBTTtBQUNkLCtCQUEyQixJQUFJLGNBQWM7QUFFN0MsV0FBTyxNQUFNO0FBQ1gsaUNBQTJCLE9BQU8sY0FBYztBQUFBLElBQ2xEO0FBQUEsRUFDRixHQUFHLENBQUMsNEJBQTRCLGVBQWUsY0FBYyxDQUFDO0FBQ2hFOzs7QU42RVMsSUFBQUMsc0JBQUE7QUEzRFQsSUFBTSw0QkFBNEIsQ0FBQztBQUFBLEVBQ2pDO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLE1BQTZCO0FBQzNCLFFBQU0sRUFBRSxTQUFTLGtCQUFrQixNQUFNLGVBQWUsWUFBWSxJQUFJO0FBRXhFLFFBQU0sQ0FBQyxTQUFTLFVBQVUsUUFBSSx5QkFBNkIsSUFBSTtBQUMvRCxnQkFBYyxVQUFVO0FBRXhCLFFBQU0scUJBQWlCLHVCQUFvQixNQUFTO0FBQ3BELGlCQUFlLFVBQVcsV0FBVztBQUVyQyxRQUFNLDhCQUEwQix1QkFBTyxLQUFLO0FBQzVDLFFBQU0sa0JBQWMsdUJBQWtDLE1BQVM7QUFFL0QsUUFBTSxZQUFRLGtDQUFjLDhCQUE4QixnQkFBZ0I7QUFFMUUsMkJBQXlCLHlCQUF5QixhQUFhLE9BQU8sYUFBYTtBQUNuRixzQkFBb0IseUJBQXlCLFdBQVc7QUFDeEQsMEJBQXdCLGtCQUFrQixlQUFlLGNBQWM7QUFFdkUsUUFBTSxjQUFjLGVBQWUsT0FBTyxlQUFlLGtCQUFrQix1QkFBdUI7QUFDbEcsUUFBTSxhQUFhLGNBQWMsa0JBQWtCLE9BQU8sdUJBQXVCO0FBRWpGLFFBQU0scUJBQXFCO0FBQUEsSUFDekIsaUJBQWlCLHNCQUFzQixtQkFBbUI7QUFBQSxJQUMxRDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxrQkFBZ0I7QUFBQSxJQUNkO0FBQUEsSUFFQSxTQUFTLENBQUMsTUFBNkI7QUFDckMsa0JBQVksQ0FBQztBQUNiLHlDQUFVO0FBQUEsSUFDWjtBQUFBLElBRUEsUUFBUSxDQUFDLE1BQTZCO0FBekYxQztBQTBGTSxVQUFJLEdBQUMsb0JBQWUsWUFBZixtQkFBd0IsU0FBUyxFQUFFLGlCQUFnQjtBQUN0RCxtQkFBVyxDQUFDO0FBQUEsTUFDZDtBQUNBLHVDQUFTO0FBQUEsSUFDWDtBQUFBLElBRUEsV0FBVyxDQUFDLE1BQWdDO0FBQzFDLDZDQUFZO0FBQ1oseUJBQW1CLFVBQVUsQ0FBQztBQUFBLElBQ2hDO0FBQUEsRUFDRixDQUFDO0FBRUQsU0FBTyw2RUFBRyxVQUFTO0FBQ3JCO0FBRU8sU0FBUyxrQkFBcUI7QUFDbkMsYUFBTyxzQ0FBc0UsQ0FBQyxVQUFVO0FBQ3RGLFVBQU0sRUFBRSxZQUFZLFVBQVUsUUFBUSxTQUFTLFVBQVUsSUFBSTtBQUU3RCxRQUFJLENBQUMsWUFBWTtBQUNmLGFBQU8sRUFBRSxZQUFZLE9BQVU7QUFBQSxJQUNqQztBQUVBLFdBQU87QUFBQSxNQUNMLFlBQVk7QUFBQSxNQUNaLFVBQVU7QUFBQSxRQUNSLFdBQVc7QUFBQSxRQUNYLE9BQU87QUFBQSxVQUNMLFdBQVc7QUFBQSxVQUNYLFVBQVUsWUFBWTtBQUFBLFVBQ3RCO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0FPL0hBLElBQUFDLDZCQUEwQjtBQUUxQixJQUFBQywyQkFBeUI7QUFLbEIsSUFBTSxpQkFBYSxzQ0FBdUUsQ0FBQyxVQUFVO0FBQzFHLFFBQU0sd0JBQW9CLG1DQUFTLE1BQU0sS0FBSyxJQUFJLE1BQU0sUUFBUSxDQUFDO0FBRWpFLFNBQU87QUFBQSxJQUNMLE9BQU87QUFBQSxJQUVQLE9BQU8sTUFBTSxRQUNUO0FBQUEsTUFDRSxlQUFlO0FBQUEsTUFDZixpQkFBaUI7QUFBQSxNQUNqQixHQUFHO0FBQUEsSUFDTCxJQUNBLE1BQU07QUFBQSxJQUVWLFdBQVcsTUFBTSxjQUFjLE1BQU0sUUFBUSxXQUFXO0FBQUEsRUFDMUQ7QUFDRixDQUFDOzs7QUN2QkQsSUFBQUMsNkJBQTBCO0FBS25CLElBQU0sd0JBQW9CLHNDQUE0RCxDQUFDLFdBQVc7QUFBQSxFQUN2RyxjQUFjO0FBQUEsRUFDZCxZQUFZLE1BQU0sZUFBZSxPQUFPLE1BQU07QUFDaEQsRUFBRTs7O0FDUkYsSUFBQUMsNkJBQTBCO0FBYW5CLElBQU0saUJBQWEsc0NBQXNFLENBQUMsVUFBVTtBQUN6RyxRQUFNLEVBQUUsTUFBTSxJQUFJO0FBRWxCLE1BQUksQ0FBQyxPQUFPO0FBQ1YsV0FBTyxFQUFFLE9BQU8sT0FBVTtBQUFBLEVBQzVCO0FBRUEsUUFBTSxFQUFFLE1BQU0sS0FBSyxJQUFJLElBQUksT0FBTyxVQUFVLFdBQVcsRUFBRSxNQUFNLE1BQU0sSUFBSTtBQUV6RSxTQUFPO0FBQUEsSUFDTCxTQUFTLEVBQUUsUUFBUSxNQUFNLEtBQUssSUFBSTtBQUFBLElBQ2xDLFFBQVEsRUFBRSxPQUFPLE1BQU0sS0FBSyxJQUFJO0FBQUEsSUFDaEMsT0FBTztBQUFBLEVBQ1Q7QUFDRixDQUFDOzs7QUMzQndELElBQU8sd0JBQVE7QUFBQSxFQUN0RSxTQUFTO0FBQUEsRUFDVCxjQUFjO0FBQUEsRUFDZCxRQUFRO0FBQUEsRUFDUixpQkFBaUI7QUFBQSxFQUNqQixnQkFBZ0I7QUFBQSxFQUNoQixRQUFRO0FBQUEsRUFDUixhQUFhO0FBQUEsRUFDYixXQUFXO0FBQUEsRUFDWCxlQUFlO0FBQUEsRUFDZix3QkFBd0I7QUFBQSxFQUN4QixRQUFRO0FBQUEsRUFDUixZQUFZO0FBQUEsRUFDWixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixnQkFBZ0I7QUFBQSxFQUNoQixvQkFBb0I7QUFBQSxFQUNwQixrQ0FBa0M7QUFBQSxFQUNsQyxXQUFXO0FBQUEsRUFDWCxRQUFRO0FBQUEsRUFDUixlQUFlO0FBQUEsRUFDZiwwQkFBMEI7QUFBQSxFQUMxQixvQkFBb0I7QUFBQSxFQUNwQixrQ0FBa0M7QUFBQSxFQUNsQyxXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixjQUFjO0FBQUEsRUFDZCxnQkFBZ0I7QUFBQSxFQUNoQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixRQUFRO0FBQUEsRUFDUixpQkFBaUI7QUFBQSxFQUNqQixlQUFlO0FBQUEsRUFDZixRQUFRO0FBQUEsRUFDUixXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQ2Q7OztBQ25DQSxJQUFBQyw2QkFBMEI7QUFFMUIsSUFBQUMscUJBQW9DO0FBRXBDLElBQU0sYUFBUyx3Q0FBb0IscUJBQVM7QUEyQ3JDLElBQU0sbUJBQWUsc0NBQXVELENBQUMsVUFBVTtBQUM1RixRQUFNLEVBQUUsU0FBUyxXQUFXLElBQUk7QUFFaEMsTUFBSSxDQUFDLFNBQVM7QUFDWixXQUFPLEVBQUUsU0FBUyxPQUFVO0FBQUEsRUFDOUI7QUFFQSxTQUFPO0FBQUEsSUFDTCxTQUFTO0FBQUEsSUFDVCxZQUFZLENBQUMsWUFBWSxPQUFPLE9BQU8sQ0FBQztBQUFBLElBQ3hDLG9CQUFvQjtBQUFBLEVBQ3RCO0FBQ0YsQ0FBQzs7O0FDNURELElBQUFDLDZCQUEwQjtBQUMxQixJQUFBQyw0QkFBeUM7QUFJekMsSUFBQUMsaUJBQXlCO0FBQ3pCLElBQUFDLHFCQUE4QjtBQXdCOUIsSUFBTSxZQUFZLE9BQU87QUFFbEIsSUFBTSxzQkFBa0Isc0NBQXlFLENBQUMsVUFBVTtBQUVqSCxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLENBQUMsU0FBUyxVQUFVLFFBQUkseUJBQVMsS0FBSztBQUM1QyxRQUFNLHFCQUFpQixrQ0FBYyx3QkFBd0I7QUFDN0QsUUFBTSxlQUFlLFlBQVk7QUFFakMsTUFBSSxZQUFZLG1CQUFtQjtBQUNqQyxZQUFRLEtBQUssdUVBQXVFO0FBQUEsRUFDdEY7QUFFQSxTQUFPO0FBQUEsSUFDTCxVQUFVO0FBQUEsSUFDVixnQkFBZ0I7QUFBQSxJQUNoQixlQUFlO0FBQUEsSUFDZixnQkFBZ0I7QUFBQSxJQUNoQixtQkFBbUI7QUFBQSxJQUNuQixVQUFVLGFBQWEsZ0JBQWdCLGlCQUFpQixpQkFBaUIsSUFBSTtBQUFBLElBQzdFLFNBQVMsZUFBZSxTQUFTLFVBQVUsU0FBUyxjQUFjLGFBQWE7QUFBQSxJQUMvRSxNQUFNLFNBQVMsZUFBZSxXQUFXO0FBQUEsSUFDekMsU0FBUyxDQUFDLFVBQXlDO0FBQ2pELHlDQUFVO0FBRVYsVUFBSSxDQUFDLFlBQVksZ0JBQWdCLEVBQUUsYUFBYSxRQUFRO0FBQ3RELGVBQU8sT0FBTyxPQUFPLEVBQUUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBRTFDLGNBQU0sZUFBZSxhQUFhLFVBQVUsS0FBSyxDQUFDO0FBRWxELFlBQUksY0FBYyxZQUFZLEdBQUc7QUFDL0IscUJBQVcsSUFBSTtBQUNmLHVCQUFhLEtBQUssTUFBTSxXQUFXLEtBQUssQ0FBQztBQUFBLFFBQzNDO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBLGVBQWUsQ0FBQyxVQUF5QztBQUN2RCxxREFBZ0I7QUFDaEIsdURBQWlCLFVBQVUsS0FBSztBQUFBLElBQ2xDO0FBQUEsSUFDQSxlQUFlLENBQUMsVUFBeUM7QUFDdkQscURBQWdCO0FBQ2hCLHFEQUFnQixVQUFVLEtBQUs7QUFBQSxJQUNqQztBQUFBLElBQ0EsWUFBWSxDQUFDLFVBQXlDO0FBQ3BELCtDQUFhO0FBQ2IsbURBQWMsT0FBTyxNQUFNLGlEQUFpQixVQUFVLEtBQUssRUFBRTtBQUFBLElBQy9EO0FBQUEsSUFDQSxXQUFXLENBQUMsVUFBNEM7QUFDdEQsNkNBQVk7QUFFWixVQUFJLFVBQVU7QUFDWixpREFBVSxPQUFPLE1BQU07QUFDckIsY0FBSSxDQUFDLFlBQVksRUFBRSxhQUFhLFFBQVE7QUFDdEMsbUJBQU8sT0FBTyxPQUFPLEVBQUUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBRTFDLGtCQUFNLGVBQWUsU0FBUyxVQUFVLEtBQUssQ0FBQztBQUU5QyxnQkFBSSxjQUFjLFlBQVksR0FBRztBQUMvQix5QkFBVyxJQUFJO0FBQ2YsMkJBQWEsS0FBSyxNQUFNLFdBQVcsS0FBSyxDQUFDO0FBQUEsWUFDM0M7QUFBQSxVQUNGO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUVBLFVBQUksZUFBZTtBQUNqQix1QkFBZSxPQUFPLE1BQU07QUFDMUIsd0JBQWMsVUFBVSxLQUFLLENBQUM7QUFBQSxRQUNoQyxDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQztBQUVELElBQU0sV0FBVyxDQUFDLFVBQW1CO0FBQUEsRUFDbkMsR0FBRyxLQUFLLE9BQU8sS0FBSyxRQUFRO0FBQUEsRUFDNUIsR0FBRyxLQUFLLE1BQU0sS0FBSyxTQUFTO0FBQzlCO0FBRUEsSUFBTSxZQUFZLENBQUMsVUFBaUc7QUFDbEgsUUFBTSxTQUNKLGFBQWEsUUFDVDtBQUFBLElBQ0UsR0FBRyxNQUFNO0FBQUEsSUFDVCxHQUFHLE1BQU07QUFBQSxFQUNYLElBQ0EsU0FBUyxNQUFNLGNBQWMsc0JBQXNCLENBQUM7QUFFMUQsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLE9BQU8sTUFBTSxTQUFTLFVBQVU7QUFBQSxFQUNsQztBQUNGO0FBRUEsSUFBTSxnQkFBZ0IsQ0FBQyxVQUNyQixPQUFPLFVBQVUsWUFBWSxDQUFDLENBQUMsU0FBUyxVQUFVO0FBRXBELElBQU0saUJBQWlCLENBQ3JCLFNBQ0EsVUFDQSxTQUNBLFVBQ0Esa0JBQzZCO0FBQzdCLE1BQUksU0FBUztBQUNYLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxTQUFTO0FBQ1gsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLENBQUMsWUFBWSxDQUFDLGVBQWU7QUFDL0IsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLFVBQVU7QUFDWixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksVUFBVTtBQUNaLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUNUOzs7QUMzSzZFLElBQU8sa0NBQVE7QUFBQSxFQUMxRixZQUFZO0FBQ2Q7OztBQ0RBLElBQUFDLDZCQUEwQjtBQUUxQixJQUFBQyxxQkFBb0M7QUFFcEMsSUFBTUMsY0FBUyx3Q0FBb0IsK0JBQVM7QUFNckMsSUFBTSw0QkFBd0Isc0NBQWdFLENBQUMsVUFBVTtBQUM5RyxRQUFNLEVBQUUsa0JBQWtCLFdBQVcsSUFBSTtBQUV6QyxNQUFJLENBQUMsa0JBQWtCO0FBQ3JCLFdBQU8sRUFBRSxrQkFBa0IsT0FBVTtBQUFBLEVBQ3ZDO0FBRUEsU0FBTztBQUFBLElBQ0wsa0JBQWtCO0FBQUEsSUFDbEIsWUFBWSxDQUFDLFlBQVlBLFFBQU8sUUFBUTtBQUFBLEVBQzFDO0FBQ0YsQ0FBQzs7O0FDdEJnRSxJQUFPLDRCQUFRO0FBQUEsRUFDOUUsc0JBQXNCO0FBQUEsRUFDdEIscUJBQXFCO0FBQUEsRUFDckIsb0JBQW9CO0FBQ3RCOzs7QUNGQSxJQUFBQyw2QkFBMEI7QUFJbkIsSUFBTSxzQkFBa0Isc0NBQTBELENBQUMsVUFBVTtBQUNsRyxRQUFNLEVBQUUsV0FBVyxJQUFJO0FBRXZCLE1BQUksQ0FBQyxZQUFZO0FBQ2YsV0FBTyxFQUFFLFlBQVksT0FBVTtBQUFBLEVBQ2pDO0FBRUEsU0FBTyxFQUFFLFlBQVksQ0FBQywwQkFBTyxlQUFlLFVBQVUsRUFBRSxHQUFHLE1BQU0sVUFBVSxHQUFHLFlBQVksT0FBVTtBQUN0RyxDQUFDOzs7QUNkc0QsSUFBTyx1QkFBUTtBQUFBLEVBQ3BFLFNBQVM7QUFBQSxFQUNULGlCQUFpQjtBQUNuQjs7O0FDRkEsSUFBQUMsNkJBQTBCO0FBT25CLElBQU0sa0JBQWMsc0NBQXNELENBQUMsVUFBVTtBQUMxRixRQUFNLEVBQUUsUUFBUSxXQUFXLElBQUk7QUFFL0IsTUFBSSxDQUFDLFFBQVE7QUFDWCxXQUFPLEVBQUUsUUFBUSxPQUFVO0FBQUEsRUFDN0I7QUFFQSxTQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixZQUFZLENBQUMsWUFBWSxXQUFXLFdBQVcscUJBQU8sZUFBZSxJQUFJLHFCQUFPLEtBQUs7QUFBQSxFQUN2RjtBQUNGLENBQUM7OztBQ25CRCxJQUFBQyw2QkFBMEI7OztBQ0FpQyxJQUFPLHlCQUFRO0FBQUEsRUFDeEUsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsa0JBQWtCO0FBQUEsRUFDbEIsZ0JBQWdCO0FBQUEsRUFDaEIsc0JBQXNCO0FBQUEsRUFDdEIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsd0JBQXdCO0FBQUEsRUFDeEIsa0JBQWtCO0FBQUEsRUFDbEIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsdUJBQXVCO0FBQUEsRUFDdkIsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osYUFBYTtBQUFBLEVBQ2IsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUFBLEVBQ2QsY0FBYztBQUNoQjs7O0FEaENBLElBQUFDLHFCQUFvQztBQUdwQyxJQUFNQyxjQUFTLHdDQUFvQixzQkFBYTtBQVF6QyxJQUFNLG9CQUFnQixzQ0FBd0QsQ0FBQyxVQUFVO0FBaEJoRztBQWlCRSxTQUFPO0FBQUEsSUFDTCxZQUFZLENBQUMsTUFBTSxZQUFZLDhCQUE2QixXQUFNLGFBQU4sbUJBQWdCLFlBQVksQ0FBQztBQUFBLElBQ3pGLFVBQVU7QUFBQSxFQUNaO0FBQ0YsQ0FBQztBQUVELElBQU0sK0JBQStCLENBQUMsVUFBaUQ7QUFDckYsTUFBSSxDQUFDLE9BQU87QUFDVixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sRUFBRSxPQUFPLE1BQU0sSUFBSTtBQUV6QixTQUFPO0FBQUEsSUFDTCxVQUFVLFVBQWEsVUFBVSxTQUFZLENBQUNBLFFBQU8sU0FBU0EsUUFBTyxZQUFZLElBQUk7QUFBQSxJQUNyRixRQUFRQSxRQUFPLFVBQVUsS0FBSyxFQUFFLElBQUk7QUFBQSxJQUNwQyxRQUFRQSxRQUFPLFVBQVUsS0FBSyxFQUFFLElBQUk7QUFBQSxFQUN0QztBQUNGOzs7QUVuQ0EsSUFBQUMsNkJBQTBCO0FBQzFCLElBQUFDLG9CQUE2QjtBQUU3QixJQUFBQyxpQkFBaUU7QUFFakUsSUFBQUQsb0JBQTZEO0FBRTdELElBQUFFLDRCQUErQzs7O0FDUFksSUFBTyx5QkFBUTtBQUFBLEVBQ3hFLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUN0Qjs7O0FEaUVJLElBQUFDLHNCQUFBO0FBcERHLElBQU0sMkJBQXVCLDhCQUFjLEtBQUs7QUFFaEQsSUFBTSxtQkFBbUIsVUFBTSwyQkFBVyxvQkFBb0I7QUFFOUQsSUFBTSxvQkFBZ0Isc0NBQXdFLENBQUMsVUFBVTtBQUM5RyxRQUFNLEVBQUUsVUFBVSxVQUFVLEtBQUssSUFBSTtBQUNyQyxRQUFNLENBQUMsdUJBQXVCLHdCQUF3QixRQUFJLHlCQUFTLEtBQUs7QUFDeEUsUUFBTSxDQUFDLFdBQVcsVUFBVSxRQUFJLHlCQUFnQyxJQUFJO0FBQ3BFLFFBQU0sbUJBQWUsNEJBQVksTUFBTSx5QkFBeUIsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUUxRSxNQUFJLENBQUMsVUFBVTtBQUNiLFdBQU87QUFBQSxNQUNMLFVBQVU7QUFBQSxJQUNaO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFBQSxJQUNMLFVBQVU7QUFBQSxJQUNWLE1BQU0sQ0FBQyxNQUFNLFVBQVU7QUFBQSxJQUN2QixVQUFVLENBQUMsWUFBaUM7QUFDMUMsK0JBQXlCLENBQUMscUJBQXFCO0FBQy9DLDJDQUFXO0FBQUEsSUFDYjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLE1BQ1IsV0FBVztBQUFBLE1BQ1gsT0FBTztBQUFBLFFBQ0wsU0FBUztBQUFBLFVBQ1A7QUFBQSxVQUNBLFNBQVM7QUFBQSxVQUNUO0FBQUEsVUFDQTtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRixDQUFDO0FBWUQsSUFBTSwwQkFBMEIsQ0FBQyxFQUFFLFNBQVMsU0FBUyxNQUEyQjtBQUM5RSxRQUFNLEVBQUUsVUFBVSxTQUFTLFdBQVcsYUFBYSxJQUFJO0FBRXZELFNBQ0UsOEVBQ0c7QUFBQSxtQkFDQztBQUFBLE1BQ0U7QUFBQSxRQUFDO0FBQUE7QUFBQSxVQUNFLEdBQUc7QUFBQSxZQUNGO0FBQUEsWUFDQTtBQUFBLFlBQ0E7QUFBQSxVQUNGO0FBQUE7QUFBQSxNQUNGO0FBQUEsTUFDQSxTQUFTO0FBQUEsSUFDWDtBQUFBLElBQ0YsNkNBQUMscUJBQXFCLFVBQXJCLEVBQThCLE9BQU8sU0FBVSxVQUFTO0FBQUEsS0FDM0Q7QUFFSjtBQVFBLElBQU0sd0JBQXdCLENBQUMsVUFBc0M7QUFDbkUsUUFBTSxFQUFFLFVBQVUsY0FBYyxVQUFVLElBQUk7QUFDOUMsUUFBTSxDQUFDLFVBQVUsV0FBVyxRQUFJLHlCQUFnQyxJQUFJO0FBQ3BFLFFBQU0sRUFBRSxlQUFlLFFBQUksK0JBQVk7QUFBQSxJQUNyQyxXQUFXO0FBQUEsSUFDWCxZQUFZLEtBQUMsd0JBQUssT0FBRywwQkFBTyxDQUFDLE9BQUcseUJBQU0sQ0FBQztBQUFBLElBQ3ZDLHNCQUFzQjtBQUFBLElBQ3RCLFVBQVU7QUFBQSxNQUNSO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFFRCxRQUFNLDBCQUEwQixDQUFDLFVBQTRCO0FBQzNELG1EQUFnQixLQUFLO0FBQ3JCLGlCQUFhO0FBQUEsRUFDZjtBQUVBLFNBQ0U7QUFBQSxJQUFDO0FBQUE7QUFBQSxNQUNDLDZCQUF5QjtBQUFBLE1BQ3pCLFdBQVM7QUFBQSxNQUNULFlBQVksdUJBQU87QUFBQSxNQUNuQixTQUFTO0FBQUEsTUFFVDtBQUFBLFFBQUM7QUFBQTtBQUFBLFVBQ0MsTUFBTTtBQUFBLFVBQ04sT0FBTztBQUFBLFVBQ1AsU0FBUztBQUFBLFVBQ1QsWUFBWSx1QkFBTztBQUFBLFVBRW5CLHVEQUFDLHlCQUF5QixVQUF6QixFQUFrQyxPQUFPLGNBQWUsbUJBQVMsR0FBRTtBQUFBO0FBQUEsTUFDdEU7QUFBQTtBQUFBLEVBQ0Y7QUFFSjtBQUVPLElBQU0sK0JBQTJCLDhCQUF3QyxNQUFTO0FBRWxGLElBQU0sa0JBQWtCLFVBQzdCO0FBQUEsTUFDRSwyQkFBVyx3QkFBd0I7QUFBQSxFQUNuQztBQUNGOzs7QUV0SUYsSUFBQUMsNkJBQTJEO0FBRzNELElBQUFDLG9CQUE2RTtBQUM3RSxJQUFBQSxvQkFBNkI7QUFDN0IsSUFBQUMsaUJBQXlCO0FBOENyQixJQUFBQyxzQkFBQTtBQW5CSixJQUFNLDJCQUEyQixDQUFDLEVBQUUsVUFBVSxlQUFlLFNBQVMsTUFBNEI7QUFDaEcsUUFBTSxDQUFDLFdBQVcsWUFBWSxRQUFJLHlCQUE2QixJQUFJO0FBQ25FLFFBQU0sQ0FBQyxZQUFZLFdBQVcsUUFBSSx5QkFBNkIsSUFBSTtBQUVuRSxnQkFBYyxZQUFZO0FBRTFCLFFBQU0sRUFBRSxlQUFlLFFBQUksK0JBQVk7QUFBQSxJQUNyQyxXQUFXLFNBQVMsWUFBWTtBQUFBLElBQ2hDLFlBQVksS0FBQyx3QkFBSyxPQUFHLDBCQUFPLENBQUMsT0FBRyx5QkFBTSxDQUFDO0FBQUEsSUFDdkMsc0JBQXNCO0FBQUEsSUFDdEIsVUFBVTtBQUFBLE1BQ1IsVUFBVTtBQUFBLE1BQ1Y7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBRUQsUUFBTSxrQkFBa0IsU0FBUyxRQUFRLEVBQUUsZ0JBQWdCLFlBQVksWUFBWSxDQUFDO0FBRXBGLFNBQ0UsOEVBQ0c7QUFBQSwwQkFBa0IsZ0NBQWEsaUJBQWlCLFNBQVMsSUFBSSxJQUFJO0FBQUEsSUFDakU7QUFBQSxLQUNIO0FBRUo7QUFFTyxTQUFTLGlCQUFvQjtBQUNsQyxhQUFPLHNDQUErQyxDQUFDLFVBQVU7QUFDL0QsVUFBTSxFQUFFLFVBQVUsSUFBSTtBQUV0QixRQUFJLGNBQWMsUUFBVztBQUMzQixhQUFPLEVBQUUsV0FBVyxPQUFVO0FBQUEsSUFDaEM7QUFFQSxXQUFPO0FBQUEsTUFDTCxXQUFXO0FBQUEsTUFDWCxVQUFVO0FBQUEsUUFDUixXQUFXO0FBQUEsUUFDWCxPQUFPLEVBQUUsVUFBVSxVQUFVO0FBQUEsTUFDL0I7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBQ0g7OztBQzFFaUYsSUFBTyxvQ0FBUTtBQUFBLEVBQzlGLHFCQUFxQjtBQUN2Qjs7O0FDREEsSUFBQUMsNkJBQTBCO0FBT25CLElBQU0sOEJBQTBCLHNDQUFrRSxDQUFDLFVBQVU7QUFDbEgsUUFBTSxFQUFFLG9CQUFvQixXQUFXLElBQUk7QUFFM0MsTUFBSSxDQUFDLG9CQUFvQjtBQUN2QixXQUFPLEVBQUUsb0JBQW9CLE9BQVU7QUFBQSxFQUN6QztBQUVBLFNBQU87QUFBQSxJQUNMLG9CQUFvQjtBQUFBLElBQ3BCLFlBQVksQ0FBQyxZQUFZLGtDQUFPLGlCQUFpQjtBQUFBLEVBQ25EO0FBQ0YsQ0FBQzs7O0FDbkJELElBQUFDLDZCQUFnRDtBQUNoRCxzQ0FBb0Q7QUFDcEQsSUFBQUMsNEJBQTBCO0FBQzFCLElBQUFDLHNCQUE4QjtBQUU5QixJQUFBQyxpQkFBeUQ7QUFxSHJELElBQUFDLHNCQUFBO0FBNUZKLElBQU0sZ0NBQWdDO0FBUXRDLElBQU0sK0JBQStCLENBQUMsRUFBRSxjQUFjLGlCQUFpQixTQUFTLE1BQWdDO0FBQzlHLFFBQU0sQ0FBQyxRQUFRLFNBQVMsUUFBSSx5QkFBUyxLQUFLO0FBQzFDLFFBQU0sQ0FBQyxRQUFRLFNBQVMsUUFBSSx5QkFBaUMsTUFBUztBQUN0RSxRQUFNLG9CQUFnQix1QkFBa0QsTUFBUztBQUNqRixRQUFNLHFCQUFpQixtQ0FBYyx3QkFBd0I7QUFFN0QsUUFBTSxhQUFTLDRCQUFZLE1BQU0sVUFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ3JFLFFBQU0sWUFBUSw0QkFBWSxNQUFNLFVBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUVwRCxRQUFNLDJCQUF1Qiw0QkFBWSxNQUFNO0FBQzdDLFFBQUksY0FBYyxZQUFZLFFBQVc7QUFDdkMsbUJBQWEsY0FBYyxPQUFPO0FBQ2xDLG9CQUFjLFVBQVU7QUFBQSxJQUMxQjtBQUFBLEVBQ0YsR0FBRyxDQUFDLENBQUM7QUFFTCxRQUFNLFdBQU8sNEJBQVksTUFBTTtBQUM3Qix5QkFBcUI7QUFDckIsY0FBVSxJQUFJO0FBQUEsRUFDaEIsR0FBRyxDQUFDLG9CQUFvQixDQUFDO0FBRXpCLFFBQU0sb0JBQWdCLDRCQUFZLE1BQU07QUFDdEMseUJBQXFCO0FBQ3JCLGtCQUFjLFVBQVUsV0FBVyxPQUFPLDZCQUE2QjtBQUFBLEVBQ3pFLEdBQUcsQ0FBQyxzQkFBc0IsS0FBSyxDQUFDO0FBRWhDLGdDQUFVLE1BQU0sc0JBQXNCLENBQUMsb0JBQW9CLENBQUM7QUFFNUQsUUFBTSxTQUFTLGFBQWEsVUFBVTtBQUd0QyxRQUFNLDJCQUEyQjtBQUFBLFFBQy9CLDRCQUFZLE1BQU07QUFDaEIsVUFBSSxRQUFRO0FBQ1Ysa0JBQVUsS0FBSztBQUFBLE1BQ2pCO0FBQUEsSUFDRixHQUFHLENBQUMsTUFBTSxDQUFDO0FBQUEsRUFDYjtBQUVBLGtCQUFnQjtBQUFBLElBQ2QsR0FBRztBQUFBLElBQ0gsaUJBQWlCO0FBQUEsSUFFakIsR0FBSSxXQUFXLFdBQVc7QUFBQSxNQUN4QixTQUFTLENBQUMsVUFBNEI7QUFDcEMsY0FBTSxnQkFBZ0I7QUFDdEIsZUFBTztBQUFBLE1BQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxNQUtBLFdBQVcsQ0FBQyxVQUErQjtBQUN6QyxpREFBVSxPQUFPLE1BQU07QUFDckIsZ0JBQU0sZ0JBQWdCO0FBQ3RCLGlCQUFPO0FBQUEsUUFDVCxDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFBQSxJQUVBLEdBQUksV0FBVyxpQkFBaUI7QUFBQSxNQUM5QixlQUFlLENBQUMsVUFBNEI7QUFDMUMsY0FBTSxlQUFlO0FBQ3JCLGNBQU0sZ0JBQWdCO0FBRXRCLGtCQUFVLEVBQUUsR0FBRyxNQUFNLFNBQVMsR0FBRyxNQUFNLFFBQVEsQ0FBQztBQUNoRCxlQUFPO0FBQUEsTUFDVDtBQUFBLE1BRUEsV0FBVyxDQUFDLFVBQStCO0FBQ3pDLHVCQUFlLE9BQU8sTUFBTTtBQUMxQixnQkFBTSxnQkFBZ0I7QUFDdEIsaUJBQU87QUFBQSxRQUNULENBQUM7QUFBQSxNQUNIO0FBQUEsSUFDRjtBQUFBLElBRUEsR0FBSSxXQUFXLFdBQVc7QUFBQSxNQUN4QixjQUFjO0FBQUEsTUFDZCxjQUFjO0FBQUEsSUFDaEI7QUFBQSxFQUNGLENBQUM7QUFFRCxTQUNFLDhFQUNHO0FBQUE7QUFBQSxJQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFRQyw2Q0FBQyxVQUFNLEdBQUcsMEJBQTBCLE9BQU8saUJBQWlCLFNBQVNDLGtCQUNuRTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsTUFBTTtBQUFBLFFBQ04sYUFBYSxXQUFXLGdCQUFnQixTQUFTO0FBQUEsUUFDakQsU0FBUztBQUFBLFFBQ1QsbUJBQ0UsV0FBVyxVQUNQLENBQUMsa0JBQW1CLGdCQUFnQixxQkFBcUIsSUFBSSxjQUFjLElBQzNFO0FBQUE7QUFBQSxJQUVSLEdBQ0Y7QUFBQSxLQUVKO0FBRUo7QUFFQSxJQUFNLGtCQUFrQixFQUFFLFNBQVMsV0FBVztBQUU5QyxJQUFNQSxtQkFBa0IsQ0FBQyxVQUE0QixNQUFNLGdCQUFnQjtBQUVwRSxJQUFNLHlCQUFxQjtBQUFBLEVBQ2hDLENBQUMsVUFBVTtBQUNULFVBQU0sRUFBRSxlQUFlLFNBQVMsS0FBSyxJQUFJO0FBRXpDLFFBQUksa0JBQWtCLFFBQVc7QUFDL0IsYUFBTyxFQUFFLGVBQWUsT0FBVTtBQUFBLElBQ3BDO0FBRUEsVUFBTSxnQkFBZ0IsY0FBYyxVQUFVLGFBQWE7QUFHM0QsVUFBTSxlQUFlLFdBQVcsS0FBSztBQUVyQyxXQUFPO0FBQUEsTUFDTCxlQUFlO0FBQUEsTUFFZixHQUFJLGNBQWMsV0FBVyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsTUFBTSxZQUFZLEVBQUU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLE1BTTVFLEdBQUksZ0JBQWdCO0FBQUEsUUFDbEIsTUFBTSxRQUFRO0FBQUEsUUFDZCxTQUFTLFlBQVksZUFBZSxnQkFBZ0I7QUFBQSxNQUN0RDtBQUFBLE1BRUEsVUFBVTtBQUFBLFFBQ1IsV0FBVztBQUFBLFFBQ1gsT0FBTyxFQUFFLGNBQWMsY0FBYztBQUFBLE1BQ3ZDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDRjs7O0FDM0xBLElBQUFDLDZCQUFvRTtBQUNwRSxJQUFBQyw0QkFBeUI7QUFFekIsSUFBQUMsaUJBQWlGOzs7QUNIeEIsSUFBTyx3QkFBUTtBQUFBLEVBQ3RFLFVBQVU7QUFBQSxFQUNWLGNBQWM7QUFBQSxFQUNkLGVBQWU7QUFDakI7OztBRDJMSSxJQUFBQyxzQkFBQTtBQTNJSixJQUFNLGFBQXlCO0FBcUIvQixJQUFNLHdCQUFvQiw4QkFBa0MsTUFBUztBQVVyRSxJQUFNLHlCQUF5QixDQUFDO0FBQUEsRUFDOUI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsTUFBMEI7QUFDeEIsUUFBTSxnQkFBZ0IsaUJBQWEsc0JBQU0sQ0FBQztBQUMxQyxRQUFNLDBCQUFzQiwyQkFBVyxpQkFBaUI7QUFDeEQsUUFBTSxpQkFBYSx1QkFBMkIsSUFBSTtBQUNsRCxRQUFNLGVBQVcsdUJBQTJCLElBQUk7QUFFaEQ7QUFBQSxRQUNFLDRCQUFZLENBQUMsWUFBZ0M7QUFDM0MsaUJBQVcsVUFBVTtBQUFBLElBQ3ZCLEdBQUcsQ0FBQyxDQUFDO0FBQUEsRUFDUDtBQUVBLFFBQU0sV0FBVyxPQUFPLGVBQWUsV0FBVyxhQUFhLHlDQUFZO0FBQzNFLFFBQU0sUUFBUSxPQUFPLGVBQWUsV0FBVyxXQUFXLFFBQVE7QUFDbEUsUUFBTSxNQUFNLE9BQU8sZUFBZSxXQUFZLFdBQVcsT0FBTyxhQUFjO0FBRTlFLE1BQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUI7QUFDOUMsVUFBTSxJQUFJO0FBQUEsTUFDUixvQ0FBb0MsUUFBUTtBQUFBLElBQzlDO0FBQUEsRUFDRjtBQUdBLFFBQU0sOEJBQThCLFFBQVEsZ0JBQWdCO0FBRTVELE1BQUksZUFBZSxRQUFXO0FBQzVCLG9CQUFnQixFQUFFLFNBQVMsU0FBUyxDQUFDO0FBQUEsRUFDdkM7QUFFQSxnQ0FBVSxNQUFNO0FBQ2QsVUFBTSxVQUFVLFdBQVc7QUFFM0IsUUFBSSxDQUFDLFNBQVM7QUFDWjtBQUFBLElBQ0Y7QUFFQSxRQUFJLFVBQVU7QUFDWixjQUFRLE1BQU0sWUFBWSxvQkFBb0IsYUFBYTtBQUFBLElBQzdEO0FBRUEsUUFBSSxVQUFVO0FBQ1osY0FBUSxNQUFNLFlBQVksa0JBQWtCLFFBQVE7QUFDcEQsY0FBUSxNQUFNLFlBQVksYUFBYSxHQUFHLG1CQUFtQixHQUFHLENBQUMsSUFBSTtBQUlyRSxjQUFRLE1BQU0sWUFBWSw0QkFBNEIsUUFBUSxHQUFHLEdBQUcsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJO0FBRS9GLFVBQUksNkJBQTZCO0FBQy9CLGdCQUFRLE1BQU0sWUFBWSx3QkFBd0IsMkJBQTJCO0FBQUEsTUFDL0U7QUFFQSxVQUFJLE9BQU87QUFDVCxnQkFBUSxNQUFNLFlBQVksZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUk7QUFDeEQsZ0JBQVEsTUFBTSxZQUFZLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJO0FBQUEsTUFDMUQ7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBWUQsZ0NBQVUsTUFBTTtBQUNkLFVBQU0sVUFBVSxTQUFTO0FBRXpCLFFBQUksQ0FBQyxXQUFXLENBQUNDLGtCQUFpQixPQUFPLEdBQUc7QUFDMUM7QUFBQSxJQUNGO0FBRUEsWUFBUSxZQUFZO0FBRXBCLFdBQU8sTUFBTTtBQUNYLFVBQUksUUFBUSxhQUFhO0FBQ3ZCLGdCQUFRLFlBQVk7QUFBQSxNQUN0QjtBQUFBLElBQ0Y7QUFBQSxFQUNGLEdBQUcsQ0FBQyxDQUFDO0FBRUwsZ0NBQVUsTUFBTTtBQUNkLFVBQU0sVUFBVSxXQUFXO0FBRTNCLFFBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDQSxrQkFBaUIsT0FBTyxHQUFHO0FBQ3ZEO0FBQUEsSUFDRjtBQUVBLFlBQVEsWUFBWTtBQUVwQixXQUFPLE1BQU07QUFDWCxVQUFJLFFBQVEsYUFBYTtBQUN2QixnQkFBUSxZQUFZO0FBQUEsTUFDdEI7QUFBQSxJQUNGO0FBQUEsRUFDRixHQUFHLENBQUMsUUFBUSxDQUFDO0FBRWIsUUFBTSxVQUFVLFFBQ2QsOEVBRUU7QUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0MsS0FBSztBQUFBLFFBQ0wsU0FBUTtBQUFBLFFBQ1IsMEJBQXNCO0FBQUEsUUFDdEIsV0FBVyxzQkFBTztBQUFBLFFBQ2xCLE9BQ0U7QUFBQSxVQUNFLENBQUMsa0JBQWtCLEdBQUc7QUFBQSxVQUN0QixDQUFDLGNBQWMsR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUFBLFVBQzVCLENBQUMsY0FBYyxHQUFHLEdBQUcsTUFBTSxDQUFDO0FBQUEsUUFDOUI7QUFBQTtBQUFBLElBRUo7QUFBQSxJQUVDO0FBQUEsS0FDSCxJQUVBO0FBR0YsTUFBSSxVQUFVO0FBQ1osV0FBTyw2Q0FBQyxrQkFBa0IsVUFBbEIsRUFBMkIsT0FBTyxlQUFnQixtQkFBUTtBQUFBLEVBQ3BFO0FBRUEsU0FBTyw2RUFBRyxtQkFBUTtBQUNwQjtBQUVPLElBQU0sbUJBQWUsc0NBVzFCLENBQUMsVUFBVTtBQUNYLFFBQU0sRUFBRSxTQUFTLGFBQWEsV0FBVyxJQUFJO0FBRTdDLE1BQUksQ0FBQyxXQUFXLGdCQUFnQixRQUFXO0FBQ3pDLFdBQU8sRUFBRSxTQUFTLFFBQVcsYUFBYSxPQUFVO0FBQUEsRUFDdEQ7QUFFQSxTQUFPO0FBQUEsSUFDTCxTQUFTO0FBQUEsSUFDVCxhQUFhO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQU1iLEdBQUksZ0JBQWdCLFVBQWE7QUFBQSxNQUMvQixRQUFRLE1BQU0sVUFBVTtBQUFBLE1BQ3hCLGtCQUFrQixNQUFNLG9CQUFvQjtBQUFBLE1BQzVDLFNBQVMsRUFBRSxPQUFPLFFBQVEsR0FBRyxNQUFNLFFBQVE7QUFBQSxNQUMzQyxVQUFVLE1BQU0sWUFBWTtBQUFBLE1BQzVCLFNBQVMsTUFBTSxXQUFXO0FBQUEsTUFDMUIsV0FBVyxNQUFNLGFBQWE7QUFBQSxJQUNoQztBQUFBLElBRUEsZ0JBQVksb0NBQVMsWUFBWTtBQUFBLE1BQy9CLENBQUMsc0JBQU8sTUFBTSxHQUFHLENBQUMsQ0FBQztBQUFBLE1BQ25CLENBQUMsc0JBQU8sVUFBVSxHQUFHLGdCQUFnQjtBQUFBLElBQ3ZDLENBQUM7QUFBQSxJQUVELFVBQVU7QUFBQSxNQUNSLFdBQVc7QUFBQSxNQUNYLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxTQUFTLFlBQVksWUFBWTtBQUFBLElBQ3hEO0FBQUEsRUFDRjtBQUNGLENBQUM7QUFFRCxJQUFNLDhCQUE4QixDQUFDLGFBQTZCO0FBQ2hFLE1BQUksU0FBUyxXQUFXLFFBQVEsR0FBRztBQUNqQyxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksU0FBUyxXQUFXLEtBQUssR0FBRztBQUM5QixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sU0FBUyxXQUFXLE9BQU8sSUFBSSxnQkFBZ0I7QUFDeEQ7QUFFQSxJQUFNLHFCQUFxQjtBQUMzQixJQUFNLGNBQWM7QUFDcEIsSUFBTSx5QkFBeUI7QUFDL0IsSUFBTSxtQkFBbUI7QUFDekIsSUFBTSxpQkFBaUI7QUFDdkIsSUFBTSxpQkFBaUI7QUFHdkIsSUFBTSxlQUFlLENBQUMsT0FBZSxZQUFZLEdBQUcsUUFBUSxpQkFBaUIsRUFBRSxDQUFDO0FBSWhGLElBQU1BLG9CQUFtQixDQUFDLFlBQ3hCLE9BQVEsUUFBb0MsZ0JBQWdCOzs7QWxFN092RCxJQUFNLGdCQUFnQjtBQUFBO0FBQUEsRUFFM0I7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQUVBLElBQU0seUJBQXlCLENBQUMsb0JBQW9CLGVBQWUsZUFBZSxlQUFlO0FBRTFGLElBQU0sd0JBQXdCLE1BQTZCO0FBQUEsRUFDaEUsR0FBRyxvQ0FBdUM7QUFBQSxFQUMxQyxHQUFHLHVDQUEwQztBQUMvQztBQUVBLElBQU0sc0NBQXNDLE1BQTZCLENBQUMsY0FBaUIsR0FBRyxlQUFrQixDQUFDO0FBRWpILElBQU0seUNBQXlDLE1BQTZCO0FBQUEsRUFDMUUsZ0JBQW1CO0FBQUEsRUFDbkIsMEJBQTZCO0FBQUEsRUFDN0IsZ0JBQW1CO0FBQUEsRUFDbkIsVUFBYTtBQUNmO0FBRU8sSUFBTSxVQUFNLGlDQUFTLGdEQUFvQixPQUFPLEdBQUcsZUFBZSxHQUFHLHNCQUFzQyxDQUFDLENBQUM7QUFLN0csSUFBTSxhQUFTLGlDQUFTLGdEQUFvQixPQUFPLEdBQUcsZUFBZSxHQUFHLHNCQUEyQixDQUFDLENBQUM7QUFHckcsSUFBTSxVQUFNLGlDQUFTLGdEQUFvQixPQUFPLEdBQUcsZUFBZSxHQUFHLHNCQUFtQyxDQUFDLENBQUM7QUFJMUcsSUFBTSxZQUFRO0FBQUEsTUFDbkI7QUFBQSxJQUNFO0FBQUEsSUFDQTtBQUFBLElBQ0EsR0FBRztBQUFBLElBQ0gsR0FBRyx1Q0FBeUQ7QUFBQSxFQUM5RDtBQUNGO0FBR08sSUFBTSxlQUFXO0FBQUEsTUFDdEIsZ0RBQW9CLFlBQVksZUFBZSxHQUFHLGVBQWUsR0FBRyxzQkFBMkMsQ0FBQztBQUNsSDtBQUdPLElBQU0sV0FBTztBQUFBLE1BQ2xCLGdEQUFvQixRQUFRLEdBQUcsZUFBZSxHQUFHLHNCQUF1QyxDQUFDO0FBQzNGO0FBR08sSUFBTSxXQUFPO0FBQUEsTUFDbEIsZ0RBQW9CLFFBQVEsR0FBRyxlQUFlLEdBQUcsc0JBQXVDLENBQUM7QUFDM0Y7QUFHTyxJQUFNLG1CQUFlO0FBQUEsTUFDMUIsZ0RBQW9CLE9BQU8sR0FBRyx3QkFBd0IsR0FBRyxlQUFlLEdBQUcsc0JBQXNDLENBQUM7QUFDcEg7QUFHTyxJQUFNLFFBQUksaUNBQVMsZ0RBQW9CLEtBQUssR0FBRyxlQUFlLEdBQUcsc0JBQW1DLENBQUMsQ0FBQztBQUd0RyxJQUFNLFFBQUksaUNBQVMsZ0RBQW9CLEtBQUssR0FBRyxlQUFlLEdBQUcsc0JBQXlDLENBQUMsQ0FBQztBQUc1RyxJQUFNLGFBQVM7QUFBQSxNQUNwQjtBQUFBLElBQ0U7QUFBQSxJQUNBLEdBQUc7QUFBQSxJQUNILEdBQUc7QUFBQSxJQUNILEdBQUcsc0JBQXlDO0FBQUEsRUFDOUM7QUFDRjtBQUdPLElBQU0sV0FBTyxpQ0FBUyxnREFBb0IsUUFBUSxHQUFHLGVBQWUsR0FBRyxzQkFBbUMsQ0FBQyxDQUFDO0FBRzVHLElBQU0sWUFBUSxpQ0FBUyxnREFBb0IsU0FBUyxHQUFHLGVBQWUsR0FBRyxzQkFBbUMsQ0FBQyxDQUFDO0FBRzlHLElBQU0sVUFBTSxpQ0FBUyxnREFBb0IsT0FBTyxHQUFHLGVBQWUsR0FBRyxzQkFBc0MsQ0FBQyxDQUFDO0FBRzdHLElBQU0sVUFBTSxpQ0FBUyxnREFBb0IsT0FBTyxHQUFHLGVBQWUsR0FBRyxzQkFBbUMsQ0FBQyxDQUFDO0FBRzFHLElBQU0sU0FBSyxpQ0FBUyxnREFBb0IsTUFBTSxHQUFHLGVBQWUsR0FBRyxzQkFBMEMsQ0FBQyxDQUFDO0FBRy9HLElBQU0sU0FBSyxpQ0FBUyxnREFBb0IsTUFBTSxHQUFHLGVBQWUsR0FBRyxzQkFBMEMsQ0FBQyxDQUFDO0FBRy9HLElBQU0sU0FBSyxpQ0FBUyxnREFBb0IsTUFBTSxHQUFHLGVBQWUsR0FBRyxzQkFBMEMsQ0FBQyxDQUFDO0FBRy9HLElBQU0sU0FBSyxpQ0FBUyxnREFBb0IsTUFBTSxHQUFHLGVBQWUsR0FBRyxzQkFBMEMsQ0FBQyxDQUFDO0FBRy9HLElBQU0sU0FBSyxpQ0FBUyxnREFBb0IsTUFBTSxHQUFHLGVBQWUsR0FBRyxzQkFBMEMsQ0FBQyxDQUFDO0FBRy9HLElBQU0sU0FBSyxpQ0FBUyxnREFBb0IsTUFBTSxHQUFHLGVBQWUsR0FBRyxzQkFBMEMsQ0FBQyxDQUFDO0FBRy9HLElBQU0sU0FBSyxpQ0FBUyxnREFBb0IsTUFBTSxHQUFHLGVBQWUsR0FBRyxzQkFBd0MsQ0FBQyxDQUFDO0FBRzdHLElBQU0sU0FBSyxpQ0FBUyxnREFBb0IsTUFBTSxHQUFHLGVBQWUsR0FBRyxzQkFBd0MsQ0FBQyxDQUFDO0FBRzdHLElBQU0sU0FBSyxpQ0FBUyxnREFBb0IsTUFBTSxHQUFHLGVBQWUsR0FBRyxzQkFBcUMsQ0FBQyxDQUFDO0FBRTFHLElBQU0sa0JBQWM7QUFBQSxNQUN6QixnREFBb0IsTUFBTSxHQUFHLHdCQUF3QixHQUFHLGVBQWUsR0FBRyxzQkFBcUMsQ0FBQztBQUNsSDtBQUlPLElBQU0sUUFBSSxpQ0FBUyxnREFBb0IsS0FBSyxHQUFHLGVBQWUsR0FBRyxzQkFBNEMsQ0FBQyxDQUFDO0FBRy9HLElBQU0sU0FBSztBQUFBLE1BQ2hCLGdEQUFvQixNQUFNLEdBQUcsZUFBZSxHQUFHLHNCQUE0QyxDQUFDO0FBQzlGO0FBSU8sSUFBTSxTQUFLO0FBQUEsTUFDaEIsZ0RBQW9CLE1BQU0sR0FBRyxlQUFlLEdBQUcsc0JBQTRDLENBQUM7QUFDOUY7QUFJTyxJQUFNLFNBQUs7QUFBQSxNQUNoQixnREFBb0IsTUFBTSxHQUFHLGVBQWUsR0FBRyxzQkFBMkMsQ0FBQztBQUM3RjtBQUlPLElBQU0sWUFBUTtBQUFBLE1BQ25CLGdEQUFvQixTQUFTLEdBQUcsZUFBZSxHQUFHLHNCQUF3QyxDQUFDO0FBQzdGO0FBR08sSUFBTSxZQUFRO0FBQUEsTUFDbkIsZ0RBQW9CLFNBQVMsR0FBRyxlQUFlLEdBQUcsc0JBQStDLENBQUM7QUFDcEc7QUFHTyxJQUFNLGFBQVM7QUFBQSxNQUNwQixnREFBb0IsVUFBVSxHQUFHLGVBQWUsR0FBRyxzQkFBeUMsQ0FBQztBQUMvRjtBQUdPLElBQU0sYUFBUztBQUFBLE1BQ3BCLGdEQUFvQixVQUFVLEdBQUcsZUFBZSxHQUFHLHNCQUF5QyxDQUFDO0FBQy9GO0FBR08sSUFBTSxVQUFNLGlDQUFTLGdEQUFvQixPQUFPLEdBQUcsZUFBZSxHQUFHLHNCQUF3QyxDQUFDLENBQUM7OztBb0VyT3RILElBQU0sZUFBZSxvQkFBSSxJQUFpQztBQU9uRCxJQUFNLHNCQUFzQixDQUFlLE9BQ2hELG1CQUFtQixJQUFJLE1BQU07QUFDM0IsUUFBTSxVQUF5QztBQUFBLElBQzdDO0FBQUEsSUFDQSxxQkFBcUI7QUFBQSxJQUNyQixXQUFXLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSztBQUFBLEVBQ3hDO0FBRUEsU0FBTztBQUNULENBQUM7QUFLSSxJQUFNLHVDQUF1QyxDQUNsRCxPQUVBLG1CQUFtQixJQUFJLE1BQU07QUFDM0IsUUFBTSxVQUEwRDtBQUFBLElBQzlEO0FBQUEsSUFDQSxxQkFBcUI7QUFBQSxJQUNyQixXQUFXLENBQUMsTUFBTSxpQkFBaUIsRUFBRSxTQUFTLE1BQU0sWUFBWTtBQUFBLEVBQ2xFO0FBRUEsU0FBTztBQUNULENBQUM7QUFFSCxJQUFNLHFCQUFxQixDQUFnQyxJQUFZLFdBQXVCO0FBQzVGLFFBQU0sV0FBVyxhQUFhLElBQUksRUFBRTtBQUVwQyxNQUFJLFVBQVU7QUFDWixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sVUFBVSxPQUFPO0FBRXZCLGVBQWEsSUFBSSxJQUFJLE9BQU87QUFFNUIsU0FBTztBQUNUOzs7QUMzRUEsSUFBQUMsc0JBQThCO0FBRTlCLElBQUFDLGlCQUF1RDtBQUdoRCxJQUFNLG9CQUFvQixNQUFnQztBQUMvRCxRQUFNLHVCQUFtQix3QkFBUSxNQUFNLG9CQUFtRCxHQUFHLENBQUMsQ0FBQztBQUMvRixRQUFNLFVBQU0sdUJBQWEsSUFBSTtBQUM3QixRQUFNLHVCQUFtQixtQ0FBYyxpQ0FBaUMsZ0JBQWdCO0FBRXhGLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxTQUFTLGlCQUFpQixVQUFVLEdBQUc7QUFBQSxJQUN2QyxvQkFBb0I7QUFBQSxFQUN0QjtBQUNGOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJ0b0NvbnRleHRNYXAiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgInN0eWxlcyIsICJpbXBvcnRfZnAiLCAibG9kYXNoQ2FwaXRhbGl6ZSIsICJpbXBvcnRfZnAiLCAiYWxpYXNUb05vbWluYWwiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZmVhdHVyZV9jb3JlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9mcCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJtb2R1bGVzIiwgIm1vZHVsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImFsaWFzVG9Ob21pbmFsIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfbW9ieF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgInN0eWxlcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdGVzdF91dGlscyIsICJzdHlsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdF9kb20iLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0X2RvbSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJzdG9wUHJvcGFnYXRpb24iLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaXNQb3BvdmVyQ2FwYWJsZSIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiXQp9Cg==
4221
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQudHMiLCAiLi4vc3JjL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9ob3ZlcmFibGUvY29tcHV0ZWQtbm93LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9lbGVtZW50cy9taW5pbWFsLWRpdi50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm9yZGVyL2JvcmRlci50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlcy50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvbnQvZm9udC50cyIsICIuLi9zcmMvcGx1Z2lucy9mb250L2ZvbnQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvdy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy50cyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9yZWYvcmVmLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZ2V0LWRyYWdnYWJsZS1jb250ZXh0LnRzIiwgIi4uL3NyYy9mZWF0dXJlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3Rlc3QtdXRpbC1ydW5uYWJsZS5pbmplY3RhYmxlLnRzIiwgImltcG9ydC1nbG9iOi4vKiovKi5nbG9iYWwtb3ZlcnJpZGUtZm9yLWluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy81NjljNGYxZS1lN2Y0LTQ4NmYtOGE2Mi1kMDVlNzUwMjZkYzgiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4vbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4uZGVmYXVsdC1vdmVycmlkZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzIiwgIi4uL3NyYy9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmRlZmF1bHQtb3ZlcnJpZGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9jNjM0MGQ0ZC04YjZhLTRkZWItYjY4YS0yY2VjNDM0NmNiMjYiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9mYjhiMzBjNi0zY2M0LTQyMmMtYmQxMS0zYzA3MDEyMmEzYTAiLCAiLi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplcy50cyIsICIuLi9zcmMvZWxlbWVudHMudHMiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC9mbGV4Lm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgvZmxleC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmlkL2dyaWQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3N0eWxlL3N0eWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodC50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJhZ2dhYmxlLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2Ryb3BwYWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90cmFuc2l0aW9uL3RyYW5zaXRpb24udHMiLCAiLi4vc3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXQudHMiLCAiLi4vc3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGlkZGVuL2hpZGRlbi50cyIsICIuLi9zcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL21hcmdpbi9tYXJnaW4udHMiLCAiLi4vc3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy92aXN1YWxseS1oaWRkZW4vdmlzdWFsbHktaGlkZGVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC1jaGlsZC9mbGV4LWNoaWxkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGludC90aW50LnRzIiwgIi4uL3NyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC50cyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZS50c3giLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvbi50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvaGFuZGxlLWZvY3VzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS9oYW5kbGUtYmx1ci50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZy50cyIsICIuLi9zcmMvcGx1Z2lucy9hcmVhL2FyZWEudHMiLCAiLi4vc3JjL3BsdWdpbnMvYXJlYS1jb250ZW50L2FyZWEtY29udGVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9zaXplL3NpemUudHMiLCAiLi4vc3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvY2xpY2thYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLnRzeCIsICIuLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci50c3giLCAiLi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Zsb2F0aW5nL2Zsb2F0aW5nLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGUtaXRlbS1jb250ZXh0LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7IEJsb2NrUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ibG9jay9ibG9ja1wiO1xuZXhwb3J0IHR5cGUgeyBBbmNob3JlZEF0LCBBbmNob3JQbHVnaW5Qcm9wcywgQW5jaG9yUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yXCI7XG5leHBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29uLW91dHNpZGUtY2xpY2svb24tb3V0c2lkZS1jbGlja1wiO1xuZXhwb3J0IHR5cGUgeyBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZHJvcC1kb3duLW1lbnUvZHJvcC1kb3duLW1lbnVcIjtcbmV4cG9ydCB0eXBlIHsgVGV4dEFsaWduUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ25cIjtcblxuZXhwb3J0IHsgdHlwZSBEb0ZvY3VzLCB0eXBlIERvRm9jdXNGb3IsIGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9pdGVtLWJlaW5nLWZvY3VzZWQuaW5qZWN0YWJsZVwiO1xuZXhwb3J0IHR5cGUgeyBJdGVtQmVpbmdGb2N1c2VkIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlXCI7XG5leHBvcnQgeyB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcywgaXNEaXNhYmxlZCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZFwiO1xuZXhwb3J0IHR5cGUgeyBHcmF5c2NhbGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGVcIjtcbmV4cG9ydCB0eXBlIHsgVGludFBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdGludC90aW50XCI7XG5leHBvcnQgdHlwZSB7IEZhZGVkUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuXG5leHBvcnQgdHlwZSB7IFNpZGVTdHlsZXMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzXCI7XG5leHBvcnQgdHlwZSB7IENvcm5lclN0eWxlcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEJhY2tncm91bmRDb2xvclBsdWdpblByb3BzLFxuICBCYWNrZ3JvdW5kQ29sb3IsXG4gIEJhY2tncm91bmRDb2xvckFsaWFzLFxuICAkQmFja2dyb3VuZENvbG9yUHJvcHMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIE91dGxpbmVXaWR0aCxcbiAgJE91dGxpbmVQcm9wcyxcbiAgT3V0bGluZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmVcIjtcblxuZXhwb3J0IHR5cGUge1xuICBGbG9hdGluZ0NvbnRlbnRBcmdzLFxuICBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5LFxuICAkRmxvYXRpbmdQcm9wcyxcbiAgRmxvYXRpbmdQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcblxuZXhwb3J0IHR5cGUgeyBQYWRkaW5nUGx1Z2luUHJvcHMsIERpcmVjdGlvbmFsUGFkZGluZyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuZXhwb3J0IHR5cGUgeyBNYXJnaW5QbHVnaW5Qcm9wcywgRGlyZWN0aW9uYWxNYXJnaW4gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luXCI7XG5leHBvcnQgdHlwZSB7IE92ZXJmbG93UGx1Z2luUHJvcHMsIE92ZXJmbG93IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuZXhwb3J0IHR5cGUgeyBCb3hTaGFkb3dQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcyxcbiAgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZS1ieS1kcmFnZ2luZ1wiO1xuZXhwb3J0IHsgaG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmdcIjtcblxuZXhwb3J0IHR5cGUge1xuICBIb3ZlcmFibGVDb250ZXh0LFxuICAkSG92ZXJhYmxlUHJvcHMsXG4gIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zLFxuICBIb3ZlcmFibGVQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaG92ZXJhYmxlUGx1Z2luLCBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgUmVmUGx1Z2luUHJvcHMsICRSZWZQcm9wLCBSZWZMaWtlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSB7IEFic29sdXRlUGx1Z2luUHJvcHMsIEFic29sdXRlUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuZXhwb3J0IHR5cGUgeyBIaWRkZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW5cIjtcbmV4cG9ydCB0eXBlIHsgTm9Qb2ludGVyRXZlbnRzUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuZXhwb3J0IHR5cGUgeyBPZmZzZXRQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXRcIjtcbmV4cG9ydCB0eXBlIHsgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW5cIjtcbmV4cG9ydCB0eXBlIHsgUmVsYXRpdmVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5leHBvcnQgdHlwZSB7IFRyYW5zaXRpb25QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuZXhwb3J0IHR5cGUgeyBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuXG5leHBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgQ3Vyc29yUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5leHBvcnQgdHlwZSB7IERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgVG9vbHRpcFBsdWdpblByb3BzLCAkVG9vbHRpcFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwXCI7XG5leHBvcnQgeyBTdHlsZWRUb29sdGlwQ29udGFpbmVyLCBnZXRUb29sdGlwUHJvcHMsIHN1cHByZXNzVG9vbHRpcCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcFwiO1xuXG5leHBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGdldERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHsgZWxlbWVudENvbXBvbmVudEZlYXR1cmUgfSBmcm9tIFwiLi9zcmMvZmVhdHVyZVwiO1xuXG5leHBvcnQgdHlwZSB7IFNpemVQbHVnaW5Qcm9wcywgJFNpemVQcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuXG5leHBvcnQgdHlwZSB7IFdpZHRoUGx1Z2luUHJvcHMsICRXaWR0aFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcblxuZXhwb3J0IHR5cGUgeyBTdHlsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvc3R5bGUvc3R5bGVcIjtcblxuZXhwb3J0IHR5cGUgeyBIZWlnaHRQbHVnaW5Qcm9wcywgJEhlaWdodFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSB7IEZvbnRQbHVnaW5Qcm9wcywgRm9udFNpemUsIEZvbnRMaW5lSGVpZ2h0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9udC9mb250XCI7XG5cbmV4cG9ydCB0eXBlIHsgR3JpZFBsdWdpblByb3BzLCBHcmlkUHJvcHMsIEdyaWRDb2x1bW5zIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgRHJhZ2dhYmxlUGx1Z2luUHJvcHMsXG4gIERyb3BwYWJsZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgeyBDb2xvclBsdWdpblByb3BzLCAkQ29sb3JQcm9wcywgVGV4dENvbG9yLCBUZXh0Q29sb3JBbGlhcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NvbG9yL2NvbG9yXCI7XG5leHBvcnQgdHlwZSB7IENsYXNzTmFtZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQm9yZGVyUGx1Z2luUHJvcHMsXG4gIEJvcmRlckNvbG9yQWxpYXMsXG4gIEJvcmRlckNvbG9yLFxuICAkQm9yZGVyUHJvcHMsXG4gICRCb3JkZXJDb2xvclByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQm9yZGVyUmFkaXVzU2l6ZSwgQm9yZGVyV2lkdGgsIEJvcmRlclNpZGUgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuZXhwb3J0IHsgdFNoaXJ0U2l6ZUluUGl4ZWxzLCBzaXplVW5pdEluUGl4ZWxzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdGlvbiwgU2hvcnREaXJlY3Rpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmV4cG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIENsaWNrSGFuZGxlcixcbiAgQ2xpY2tIYW5kbGVyRGV0YWlscyxcbiAgQ2xpY2tQbHVnaW5Qcm9wcyxcbiAgUG9zaXRpb24yZCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEZsZXhQbHVnaW5Qcm9wcyxcbiAgSG9yaXpvbnRhbEZsZXhQcm9wcyxcbiAgTWF4aW1hbEZsZXhQcm9wcyxcbiAgU2ltcGxlRmxleFByb3AsXG4gIFZlcnRpY2FsRmxleFByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mbGV4L2ZsZXhcIjtcblxuaW1wb3J0IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nLFxuICBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgeyByZW1vdmVDc3NNb2R1bGVDbHV0dGVyRm9yVW5pdFRlc3RpbmcsIHNob3dDc3NNb2R1bGVDbHV0dGVyRm9yUHJvZHVjdGlvbiB9O1xuXG5leHBvcnQge1xuICBDbGlja2FibGVEaXYsXG4gIE5hdixcbiAgU3ZnLFxuICBEaXYsXG4gIEJ1dHRvbixcbiAgSSxcbiAgSW5wdXQsXG4gIEZvcm0sXG4gIFNwYW4sXG4gIFRleHRBcmVhLFxuICBBLFxuICBDb2RlLFxuICBQcmUsXG4gIEgxLFxuICBIMixcbiAgSDMsXG4gIEg0LFxuICBINSxcbiAgSDYsXG4gIFAsXG4gIENsaWNrYWJsZUxpLFxuICBMaSxcbiAgT2wsXG4gIFVsLFxuICBUaCxcbiAgVGQsXG4gIFRyLFxuICBUYWJsZSxcbiAgTGFiZWwsXG4gIFRCb2R5LFxuICBEaWFsb2csXG4gIENhbnZhcyxcbiAgSW1nLFxufSBmcm9tIFwiLi9zcmMvZWxlbWVudHNcIjtcblxuZXhwb3J0IHR5cGUge1xuICBDb21tb25Qcm9wcyxcbiAgQ2xpY2thYmxlRGl2UHJvcHMsXG4gIENsaWNrYWJsZUxpUHJvcHMsXG4gIE5hdlByb3BzLFxuICBTdmdQcm9wcyxcbiAgRGl2UHJvcHMsXG4gIEJ1dHRvblByb3BzLFxuICBJUHJvcHMsXG4gIElucHV0UHJvcHMsXG4gIEZvcm1Qcm9wcyxcbiAgU3BhblByb3BzLFxuICBUZXh0QXJlYVByb3BzLFxuICBBUHJvcHMsXG4gIENvZGVQcm9wcyxcbiAgUHJlUHJvcHMsXG4gIEgxUHJvcHMsXG4gIEgyUHJvcHMsXG4gIEgzUHJvcHMsXG4gIEg0UHJvcHMsXG4gIEg1UHJvcHMsXG4gIEg2UHJvcHMsXG4gIFBQcm9wcyxcbiAgTGlQcm9wcyxcbiAgT2xQcm9wcyxcbiAgVWxQcm9wcyxcbiAgVGhQcm9wcyxcbiAgVGRQcm9wcyxcbiAgVHJQcm9wcyxcbiAgVGFibGVQcm9wcyxcbiAgTGFiZWxQcm9wcyxcbiAgVEJvZHlQcm9wcyxcbiAgRGlhbG9nUHJvcHMsXG4gIENhbnZhc1Byb3BzLFxuICBJbWdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCB7XG4gIGdldEZvY3VzYWJsZUNvbnRleHQsXG4gIGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHR5cGUge1xuICAkRm9jdXNhYmxlUHJvcHMsXG4gIEFueUZvY3VzYWJsZUNvbnRleHQsXG4gIEZvY3VzYWJsZUNvbnRleHQsXG4gIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbiAgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0T3B0aW9ucyxcbiAgS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGNvbnRleHRGb3JGb2N1c2FibGVJdGVtLCB1c2VGb2N1c2FibGVJdGVtIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2ZvY3VzYWJsZS1pdGVtLWNvbnRleHRcIjtcbmV4cG9ydCB7IHVzZUNsb3NlUG9wb3ZlciwgdXNlUG9wb3ZlcklzT3BlbiwgY29udGV4dEZvckNsb3NpbmdQb3BvdmVyIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5leHBvcnQgeyB1c2VMb2NhbEhvdmVyYWJsZSB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlXCI7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcyB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IHR5cGUgT25PdXRzaWRlQ2xpY2tQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgcG9pbnRlci1kb3duIGxhbmRzIG91dHNpZGUgdGhlIGVsZW1lbnQncyBSZWFjdCB0cmVlLiBUaGUgdHJlZSBpbmNsdWRlcyBjb250ZW50XG4gICAqIHRoZSBlbGVtZW50IHBvcnRhbHMgZWxzZXdoZXJlLCBzbyBwb3J0YWxlZCBjaGlsZHJlbiBjb3VudCBhcyBpbnNpZGUuIENhdmVhdDogYW4gb3V0c2lkZVxuICAgKiBwb2ludGVyLWRvd24gd2hvc2UgcHJvcGFnYXRpb24gdG8gdGhlIGRvY3VtZW50IGlzIHN0b3BwZWQgbmF0aXZlbHkgZ29lcyB1bmRldGVjdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgJG9uT3V0c2lkZUNsaWNrPzogKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG59O1xuXG4vKipcbiAqIFJlYWN0LXRyZWUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb246IGEgY2FwdHVyZS1waGFzZSBoYW5kbGVyIG9uIHRoZSBlbGVtZW50IHJlY29yZHMgdGhlXG4gKiBwb2ludGVyLWRvd24gZXZlbnRzIG9mIGl0cyBvd24gUmVhY3QgdHJlZSAocG9ydGFscyBpbmNsdWRlZCwgc2luY2UgUmVhY3QgZXZlbnRzIHByb3BhZ2F0ZVxuICogdGhyb3VnaCB0aGVtKSwgYW5kIGEgZG9jdW1lbnQtbGV2ZWwgbGlzdGVuZXIgcmVwb3J0cyBldmVyeSBwb2ludGVyLWRvd24gaXQgZGlkIG5vdCByZWNvcmQuXG4gKiBSZXR1cm5zIHRoZSBwcm9wcyBtYXJraW5nIHRoZSBlbGVtZW50J3MgdHJlZTsgZ2l2ZSB0aGVtIHRvIGBjb250cmlidXRlUHJvcHNgIG9yIHNwcmVhZCB0aGVtXG4gKiBvbnRvIHRoZSBzdWJ0cmVlJ3Mgcm9vdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZU9uT3V0c2lkZUNsaWNrID0gKG9uT3V0c2lkZUNsaWNrOiAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZCkgPT4ge1xuICBjb25zdCBsYXN0SW5zaWRlUG9pbnRlckRvd25SZWYgPSB1c2VSZWY8RXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGhhbmRsZXJSZWYgPSB1c2VSZWYob25PdXRzaWRlQ2xpY2spO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaGFuZGxlclJlZi5jdXJyZW50ID0gb25PdXRzaWRlQ2xpY2s7XG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlRG9jdW1lbnRQb2ludGVyRG93biA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQgIT09IGxhc3RJbnNpZGVQb2ludGVyRG93blJlZi5jdXJyZW50KSB7XG4gICAgICAgIGhhbmRsZXJSZWYuY3VycmVudChldmVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBoYW5kbGVEb2N1bWVudFBvaW50ZXJEb3duKTtcblxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgaGFuZGxlRG9jdW1lbnRQb2ludGVyRG93bik7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblBvaW50ZXJEb3duQ2FwdHVyZSA9IHVzZUNhbGxiYWNrKChldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgbGFzdEluc2lkZVBvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSBldmVudC5uYXRpdmVFdmVudDtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7IG9uUG9pbnRlckRvd25DYXB0dXJlIH07XG59O1xuXG50eXBlIE9uT3V0c2lkZUNsaWNrV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBvbk91dHNpZGVDbGljazogKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgT25PdXRzaWRlQ2xpY2tXcmFwcGVyQ29tcG9uZW50ID0gKHsgb25PdXRzaWRlQ2xpY2ssIGNvbnRyaWJ1dGVQcm9wcywgY2hpbGRyZW4gfTogT25PdXRzaWRlQ2xpY2tXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29udHJpYnV0ZVByb3BzKHVzZU9uT3V0c2lkZUNsaWNrKG9uT3V0c2lkZUNsaWNrKSk7XG5cbiAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcbn07XG5cbmV4cG9ydCBjb25zdCBvbk91dHNpZGVDbGlja1BsdWdpbiA9IGdldFBsdWdpbjxPbk91dHNpZGVDbGlja1BsdWdpblByb3BzPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkb25PdXRzaWRlQ2xpY2sgfSA9IHByb3BzO1xuXG4gIGlmICgkb25PdXRzaWRlQ2xpY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7ICRvbk91dHNpZGVDbGljazogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRvbk91dHNpZGVDbGljazogdW5kZWZpbmVkLFxuICAgICR3cmFwcGVyOiB7XG4gICAgICBDb21wb25lbnQ6IE9uT3V0c2lkZUNsaWNrV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7IG9uT3V0c2lkZUNsaWNrOiAkb25PdXRzaWRlQ2xpY2sgfSxcbiAgICB9LFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIsIGdldEluamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmltcG9ydCB7IGZvY3VzYWJsZUh0bWxFbGVtZW50UmVmU2V0SW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWh0bWwtZWxlbWVudC1yZWYtc2V0LmluamVjdGFibGVcIjtcbmltcG9ydCB7IGFzc2VydERlZmluZWQgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuXG5leHBvcnQgdHlwZSBEb0ZvY3VzPFQ+ID0gKGl0ZW06IFQpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBEb0ZvY3VzRm9yID0gPFQ+KGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4pID0+IERvRm9jdXM8VD47XG5cbmV4cG9ydCBjb25zdCBkb0ZvY3VzRm9ySW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBEb0ZvY3VzRm9yIH0+KHtcbiAgaWQ6IFwiZG8tZm9jdXMtZm9yLWluamVjdGlvbi10b2tlblwiLFxuICBjYXJkaW5hbGl0eTogXCJvbmVcIixcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBkb0ZvY3VzRm9ySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiZG8tZm9jdXMtZm9yXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldFJlZlNldCA9IGRpLmluamVjdChmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICAoPFQ+KGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4pID0+XG4gICAgICAgIChmb2N1c2FibGVJdGVtOiBUKSA9PiB7XG4gICAgICAgICAgY29uc3QgW2ZpcnN0UmVuZGVyZWRGb2N1c2FibGVFbGVtZW50UmVmXSA9IGdldFJlZlNldChmb2N1c2FibGVDb250ZXh0LCBmb2N1c2FibGVJdGVtKTtcblxuICAgICAgICAgIGlmIChmaXJzdFJlbmRlcmVkRm9jdXNhYmxlRWxlbWVudFJlZikge1xuICAgICAgICAgICAgYXNzZXJ0RGVmaW5lZChmaXJzdFJlbmRlcmVkRm9jdXNhYmxlRWxlbWVudFJlZi5jdXJyZW50KTtcblxuICAgICAgICAgICAgZmlyc3RSZW5kZXJlZEZvY3VzYWJsZUVsZW1lbnRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgYXMgRG9Gb2N1c0ZvcjtcbiAgfSxcblxuICBpbmplY3Rpb25Ub2tlbjogZG9Gb2N1c0ZvckluamVjdGlvblRva2VuLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbnR5cGUgRm9jdXNhYmxlSXRlbSA9IGFueTtcblxuLy8gVHdvIGluc3RhbnRpYXRpb24gcGFyYW1ldGVycyByYXRoZXIgdGhhbiBvbmUgY29tcG9zaXRlIGtleTogdjIga2V5cyBhXG4vLyBzaW5nbGV0b24gYnkgYWxsIG9mIHRoZW0sIHNvIHRoZSBjb250ZXh0IGFuZCB0aGUgaXRlbSBjb21wb3NlIGJ5IGlkZW50aXR5IG9uXG4vLyB0aGVpciBvd24uXG5leHBvcnQgY29uc3QgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJodG1sLWVsZW1lbnRzLWJ5LWZvY3VzYWJsZS1tYXBcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKF9jb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzYWJsZUl0ZW0+LCBfaXRlbTogRm9jdXNhYmxlSXRlbSkgPT5cbiAgICBuZXcgU2V0PE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ+PigpLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIsIGdldEluamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IElDb21wdXRlZFZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGZvY3VzYWJsZUl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9fc2hhcmVkL2ZvY3VzYWJsZS1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBJdGVtQmVpbmdGb2N1c2VkID0gPFQ+KGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4pID0+IElDb21wdXRlZFZhbHVlPFQgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nRm9jdXNlZEluamVjdGlvblRva2VuID0gZ2V0SW5qZWN0aW9uVG9rZW4yPHsgc2luZ2xlRmFjdG9yeTogKCkgPT4gSXRlbUJlaW5nRm9jdXNlZCB9Pih7XG4gIGlkOiBcIml0ZW0tYmVpbmctZm9jdXNlZFwiLFxuICBjYXJkaW5hbGl0eTogXCJvbmVcIixcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBwcml2YXRlSXRlbUJlaW5nRm9jdXNlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcInByaXZhdGUtaXRlbS1iZWluZy1mb2N1c2VkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldEZvY3VzYWJsZUl0ZW1TdGF0ZSA9IGRpLmluamVjdChmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoY29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxhbnk+KSA9PiBjb21wdXRlZCgoKSA9PiBnZXRGb2N1c2FibGVJdGVtU3RhdGUoY29udGV4dCkuZ2V0KCkpO1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdGb2N1c2VkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1mb2N1c2VkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldFByaXZhdGVJdGVtQmVpbmdGb2N1c2VkID0gZGkuaW5qZWN0KHByaXZhdGVJdGVtQmVpbmdGb2N1c2VkSW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKCkgPT5cbiAgICAgICg8VD4oY29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT5cbiAgICAgICAgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0ZvY3VzZWQoY29udGV4dCkgYXMgSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD4pIGFzIEl0ZW1CZWluZ0ZvY3VzZWQ7XG4gIH0sXG5cbiAgaW5qZWN0aW9uVG9rZW46IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgZm9jdXNhYmxlSXRlbVN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiZm9jdXNhYmxlLWl0ZW0tc3RhdGVcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKF9jb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PGFueT4pID0+IG9ic2VydmFibGUuYm94PHVua25vd24+KCksXG59KTtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGVuYWJsZWRTdHlsZXMgZnJvbSBcIi4vZW5hYmxlZC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBFbmFibGVkUGx1Z2luUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBUaGlzIGZpZWxkIGhhcyBoaWdoZXIgcHJpb3JpdHkgdGhhbiAkZGlzYWJsZWRcbiAgICovXG4gICRlbmFibGVkPzogYm9vbGVhbjtcbiAgJGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgZmllbGQgaXMgb3ZlcnJpZGRlbiB2aWEgJGRpc2FibGVkIGFuZCAkZW5hYmxlZFxuICAgKi9cbiAgZGlzYWJsZWQ/OiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZW5hYmxlZFBsdWdpbiA9IGdldFBsdWdpbjxFbmFibGVkUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGRpc2FibGVkID0gaXNEaXNhYmxlZChwcm9wcyk7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZGlzYWJsZWQgPyBlbmFibGVkU3R5bGVzLmRpc2FibGVkIDogdW5kZWZpbmVkXSxcbiAgICBkaXNhYmxlZCxcbiAgICAkZW5hYmxlZDogdW5kZWZpbmVkLFxuICAgICRkaXNhYmxlZDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBpc0Rpc2FibGVkID0gKHByb3BzOiBFbmFibGVkUGx1Z2luUHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZW5hYmxlZCwgJGRpc2FibGVkIH0gPSBwcm9wcztcblxuICByZXR1cm4gdHlwZW9mICRlbmFibGVkID09PSBcImJvb2xlYW5cIiA/ICEkZW5hYmxlZCA6ICgkZGlzYWJsZWQgPz8gZmFsc2UpO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJkaXNhYmxlZFwiOiBcImVuYWJsZWQtbW9kdWxlX19kaXNhYmxlZF9fX0xMM3N3XCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VJZCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IHR5cGUgQ29udGV4dE1hcFZhbHVlLCBob3Zlckl0ZW1TdGF0ZUZvckluamVjdGFibGUgfSBmcm9tIFwiLi9ob3ZlcmVkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgYWN0aW9uLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGlzRGVmaW5lZCwgbm9vcCwgdHlwZSBTaW5nbGVPck1hbnkgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyByZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHR5cGUgeyAkSG92ZXJhYmxlUHJvcHMgfSBmcm9tIFwiLi9ob3ZlcmFibGVcIjtcblxuZXhwb3J0IHR5cGUgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wczxUPiA9IFBpY2s8JEhvdmVyYWJsZVByb3BzPFQ+LCBcImNvbnRleHRcIiB8IFwiaXRlbVwiPjtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpblByb3BzPFQgPSBhbnk+ID0ge1xuICAkaG92ZXJhYmxlQnlEcmFnZ2luZz86IFNpbmdsZU9yTWFueTwkSG92ZXJhYmxlQnlEcmFnZ2luZ1Byb3BzPFQ+Pjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBob3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcywgW1JldHVyblR5cGU8dHlwZW9mIHJlZlBsdWdpbjxUPj5dPigocHJvcHMpID0+IHtcbiAgICBjb25zdCB7ICRob3ZlcmFibGVCeURyYWdnaW5nLCAkcmVmIH0gPSBwcm9wcztcblxuICAgIGlmICgkaG92ZXJhYmxlQnlEcmFnZ2luZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAkaG92ZXJhYmxlQnlEcmFnZ2luZzogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgaG92ZXJJdGVtU3RhdGVGb3IgPSB1c2VTeW5jSW5qZWN0KGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSk7XG4gICAgY29uc3QgaG92ZXJhYmxlUHJvcHNSZWYgPSB1c2VSZWYob2JzZXJ2YWJsZS5tYXAodG9Db250ZXh0TWFwKCRob3ZlcmFibGVCeURyYWdnaW5nKSwgeyBkZWVwOiBmYWxzZSB9KSk7XG4gICAgY29uc3QgY29udHJvbGxlciA9IHVzZVJlZihuZXcgQWJvcnRDb250cm9sbGVyKCkpO1xuXG4gICAgdXNlRWZmZWN0KFxuICAgICAgYWN0aW9uKCgpID0+IHtcbiAgICAgICAgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5yZXBsYWNlKHRvQ29udGV4dE1hcCgkaG92ZXJhYmxlQnlEcmFnZ2luZykpO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGNhbGxiYWNrUmVmID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGFjdGlvbigoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmN1cnJlbnQuYWJvcnQoKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBcImRyYWdlbnRlclwiLFxuICAgICAgICAgICAgYWN0aW9uKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQsIHJlbGF0ZWRUYXJnZXQgfSA9IGV2ZW50O1xuICAgICAgICAgICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgICAgICAgIGlmICghKGN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgICAgICAgICAgICBob3Zlckl0ZW1TdGF0ZUZvcihjb250ZXh0KS5zZXQoaWQsIHtcbiAgICAgICAgICAgICAgICAgICAgaG92ZXJlZEF0OiBvYnNlcnZhYmxlLmJveChob3ZlcmVkQXQsIHsgZGVlcDogZmFsc2UgfSksXG4gICAgICAgICAgICAgICAgICAgIGdldFByb3BzOiAoKSA9PiBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LmdldChjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNpZ25hbDogY29udHJvbGxlci5jdXJyZW50LnNpZ25hbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBcImRyYWdsZWF2ZVwiLFxuICAgICAgICAgICAgYWN0aW9uKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQsIHJlbGF0ZWRUYXJnZXQgfSA9IGV2ZW50O1xuICAgICAgICAgICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgICAgICAgIGlmICghKGN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBob3ZlcmVkU3RhdGUgPSBob3Zlckl0ZW1TdGF0ZUZvcihjb250ZXh0KTtcblxuICAgICAgICAgICAgICAgICAgaG92ZXJlZFN0YXRlLmRlbGV0ZShpZCk7XG4gICAgICAgICAgICAgICAgICBob3ZlcmVkU3RhdGUuZm9yRWFjaCgoc3RhdGUpID0+IHN0YXRlLmhvdmVyZWRBdC5zZXQoaG92ZXJlZEF0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLmN1cnJlbnQuc2lnbmFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgIFtob3Zlckl0ZW1TdGF0ZUZvciwgaWRdLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJHJlZjogWyRyZWYsIGNhbGxiYWNrUmVmXSxcbiAgICAgICRob3ZlcmFibGVCeURyYWdnaW5nOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IHRvQ29udGV4dE1hcCA9IChwcm9wczogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVCeURyYWdnaW5nUHJvcHM8dW5rbm93bj4+IHwgdW5kZWZpbmVkKSA9PiB7XG4gIGNvbnN0IGl0ZW1zID0gW3Byb3BzXS5mbGF0KCkuZmlsdGVyKGlzRGVmaW5lZCk7XG4gIGNvbnN0IHJlc3VsdHM6IFtvYmplY3QsIENvbnRleHRNYXBWYWx1ZV1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgeyBjb250ZXh0LCBpdGVtIH0gb2YgaXRlbXMpIHtcbiAgICByZXN1bHRzLnB1c2goW2NvbnRleHQsIHsgaXRlbSwgZGVsYXk6IDAsIG9uSG92ZXI6IG5vb3AsIG9uVW5ob3Zlcjogbm9vcCB9XSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBJT2JzZXJ2YWJsZVZhbHVlLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcblxuZXhwb3J0IHR5cGUgQ29udGV4dE1hcFZhbHVlID0ge1xuICByZWFkb25seSBpdGVtOiB1bmtub3duO1xuICByZWFkb25seSBkZWxheTogbnVtYmVyO1xuICBvbkhvdmVyOiBWb2lkRnVuY3Rpb247XG4gIG9uVW5ob3ZlcjogVm9pZEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgSG92ZXJlZEl0ZW1TdGF0ZSA9IHtcbiAgcmVhZG9ubHkgaG92ZXJlZEF0OiBJT2JzZXJ2YWJsZVZhbHVlPG51bWJlcj47XG4gIHJlYWRvbmx5IGdldFByb3BzOiAoKSA9PiBDb250ZXh0TWFwVmFsdWUgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImhvdmVyZWQtaXRlbS1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IG9iamVjdCkgPT4gb2JzZXJ2YWJsZS5tYXA8c3RyaW5nLCBIb3ZlcmVkSXRlbVN0YXRlPihbXSwgeyBkZWVwOiBmYWxzZSB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJob3Zlci1pdGVtLXN0YXRlLWZvclwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXRIb3ZlcmVkSXRlbVN0YXRlID0gZGkuaW5qZWN0KGhvdmVyZWRJdGVtU3RhdGVJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoKSA9PiAoY29udGV4dDogb2JqZWN0KSA9PiBnZXRIb3ZlcmVkSXRlbVN0YXRlKGNvbnRleHQpO1xuICB9LFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcyB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgdHlwZSBDb250ZXh0TWFwVmFsdWUsIGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSB9IGZyb20gXCIuL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBhY3Rpb24sIGF1dG9ydW4sIGNvbXBhcmVyLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IG5vb3AgfSBmcm9tIFwibG9kYXNoL2ZwXCI7XG5pbXBvcnQgeyBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiLi9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgaXNEZWZpbmVkLCB0eXBlIFNpbmdsZU9yTWFueSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbmV4cG9ydCB0eXBlIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zID0ge1xuICAvKipcbiAgICogSW4gbWlsbGlzZWNvbmRzXG4gICAqL1xuICByZWFkb25seSBkZWxheT86IG51bWJlcjtcbiAgcmVhZG9ubHkgb25Ib3Zlcj86IFZvaWRGdW5jdGlvbjtcbiAgcmVhZG9ubHkgb25VbmhvdmVyPzogVm9pZEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlQ29udGV4dDxIb3ZlcmVkSXRlbT4gPSB7XG4gIHJlYWRvbmx5IGhvdmVyYWJsZTogKGl0ZW06IEhvdmVyZWRJdGVtLCBvcHRpb25zPzogSG92ZXJhYmxlQ29udGV4dE9wdGlvbnMpID0+ICRIb3ZlcmFibGVQcm9wczxIb3ZlcmVkSXRlbT47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlICRIb3ZlcmFibGVQcm9wczxUSXRlbSA9IHVua25vd24+IHtcbiAgcmVhZG9ubHkgY29udGV4dDogb2JqZWN0O1xuICByZWFkb25seSBpdGVtOiBUSXRlbTtcbiAgcmVhZG9ubHkgb3B0aW9uczogUmVxdWlyZWQ8SG92ZXJhYmxlQ29udGV4dE9wdGlvbnM+O1xufVxuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVQbHVnaW5Qcm9wczxURWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50PiA9IHtcbiAgcmVhZG9ubHkgJGhvdmVyYWJsZT86IFNpbmdsZU9yTWFueTwkSG92ZXJhYmxlUHJvcHM+O1xuICBvbk1vdXNlRW50ZXI/OiBSZWFjdC5IVE1MUHJvcHM8VEVsZW1lbnQ+W1wib25Nb3VzZUVudGVyXCJdO1xuICBvbk1vdXNlTGVhdmU/OiBSZWFjdC5IVE1MUHJvcHM8VEVsZW1lbnQ+W1wib25Nb3VzZUxlYXZlXCJdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhvdmVyYWJsZUNvbnRleHQgPSA8SG92ZXJlZEl0ZW0sPigpOiBIb3ZlcmFibGVDb250ZXh0PEhvdmVyZWRJdGVtPiA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgaG92ZXJhYmxlOiAoaXRlbTogSG92ZXJlZEl0ZW0sIHsgZGVsYXkgPSAwLCBvbkhvdmVyID0gbm9vcCwgb25VbmhvdmVyID0gbm9vcCB9OiBIb3ZlcmFibGVDb250ZXh0T3B0aW9ucyA9IHt9KSA9PiAoe1xuICAgICAgY29udGV4dCxcbiAgICAgIGl0ZW0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGRlbGF5LFxuICAgICAgICBvbkhvdmVyLFxuICAgICAgICBvblVuaG92ZXIsXG4gICAgICB9LFxuICAgIH0pLFxuICB9O1xuXG4gIHJldHVybiBjb250ZXh0O1xufTtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlUGx1Z2luPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4gPSBSZXR1cm5UeXBlPHR5cGVvZiBob3ZlcmFibGVQbHVnaW48VD4+O1xuXG50eXBlIEhvdmVyYWJsZVdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgaG92ZXJhYmxlOiBTaW5nbGVPck1hbnk8JEhvdmVyYWJsZVByb3BzPjtcbiAgcmVhZG9ubHkgb25Nb3VzZUVudGVyPzogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEVsZW1lbnQ+O1xuICByZWFkb25seSBvbk1vdXNlTGVhdmU/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MRWxlbWVudD47XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgSG92ZXJhYmxlV3JhcHBlckNvbXBvbmVudCA9ICh7XG4gIGhvdmVyYWJsZSxcbiAgb25Nb3VzZUVudGVyLFxuICBvbk1vdXNlTGVhdmUsXG4gIGNvbnRyaWJ1dGVQcm9wcyxcbiAgY2hpbGRyZW4sXG59OiBIb3ZlcmFibGVXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgaG92ZXJJdGVtU3RhdGVGb3IgPSB1c2VTeW5jSW5qZWN0KGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSk7XG4gIGNvbnN0IGl0ZW1CZWluZ0hvdmVyZWQgPSB1c2VTeW5jSW5qZWN0KGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbik7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcblxuICBjb25zdCBob3ZlcmFibGVQcm9wc1JlZiA9IHVzZVJlZihcbiAgICBvYnNlcnZhYmxlLm1hcCh0b0NvbnRleHRNYXAoaG92ZXJhYmxlKSwgeyBkZWVwOiBmYWxzZSwgZXF1YWxzOiBjb21wYXJlci5zdHJ1Y3R1cmFsIH0pLFxuICApO1xuXG4gIHVzZUVmZmVjdChcbiAgICBhY3Rpb24oKCkgPT4ge1xuICAgICAgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5yZXBsYWNlKHRvQ29udGV4dE1hcChob3ZlcmFibGUpKTtcbiAgICB9KSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1CeUNvbnRleHQgPSBuZXcgTWFwPG9iamVjdCwgdW5rbm93bj4oKTtcblxuICAgIHJldHVybiBhdXRvcnVuKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgW2NvbnRleHQsIHsgaXRlbSwgb25Ib3Zlciwgb25VbmhvdmVyIH1dIG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgaG92ZXJlZEl0ZW0gPSBpdGVtQmVpbmdIb3ZlcmVkKGNvbnRleHQgYXMgSG92ZXJhYmxlQ29udGV4dDx1bmtub3duPikuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzSXRlbSA9IGl0ZW1CeUNvbnRleHQuZ2V0KGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChob3ZlcmVkSXRlbSA9PT0gaXRlbSkge1xuICAgICAgICAgIG9uSG92ZXIoKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcmV2aW91c0l0ZW0gPT09IGl0ZW0pIHtcbiAgICAgICAgICBvblVuaG92ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW1CeUNvbnRleHQuc2V0KGNvbnRleHQsIGhvdmVyZWRJdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW2l0ZW1CZWluZ0hvdmVyZWRdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGFjdGlvbigoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY29udGV4dCBvZiBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LmtleXMoKSkge1xuICAgICAgICAgIGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpLmRlbGV0ZShpZCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIFtob3Zlckl0ZW1TdGF0ZUZvciwgaWRdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZU1vdXNlRW50ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhY3Rpb24oKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Nb3VzZUVudGVyPy4oZXZlbnQpO1xuXG4gICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoY29udGV4dCkuc2V0KGlkLCB7XG4gICAgICAgICAgaG92ZXJlZEF0OiBvYnNlcnZhYmxlLmJveChob3ZlcmVkQXQsIHsgZGVlcDogZmFsc2UgfSksXG4gICAgICAgICAgZ2V0UHJvcHM6ICgpID0+IGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQuZ2V0KGNvbnRleHQpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBbXSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVNb3VzZUxlYXZlID0gdXNlQ2FsbGJhY2soXG4gICAgYWN0aW9uKChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uTW91c2VMZWF2ZT8uKGV2ZW50KTtcblxuICAgICAgY29uc3QgaG92ZXJlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgIGNvbnN0IGhvdmVyZWRTdGF0ZSA9IGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpO1xuXG4gICAgICAgIGhvdmVyZWRTdGF0ZS5kZWxldGUoaWQpO1xuICAgICAgICBob3ZlcmVkU3RhdGUuZm9yRWFjaCgoc3RhdGUpID0+IHN0YXRlLmhvdmVyZWRBdC5zZXQoaG92ZXJlZEF0KSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgW10sXG4gICk7XG5cbiAgY29udHJpYnV0ZVByb3BzKHtcbiAgICBvbk1vdXNlRW50ZXI6IGhhbmRsZU1vdXNlRW50ZXIsXG4gICAgb25Nb3VzZUxlYXZlOiBoYW5kbGVNb3VzZUxlYXZlLFxuICB9KTtcblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhvdmVyYWJsZVBsdWdpbjxURWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxIb3ZlcmFibGVQbHVnaW5Qcm9wczxURWxlbWVudD4+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGhvdmVyYWJsZSwgb25Nb3VzZUVudGVyLCBvbk1vdXNlTGVhdmUgfSA9IHByb3BzO1xuXG4gICAgaWYgKCRob3ZlcmFibGUgPT09IHVuZGVmaW5lZCB8fCAoQXJyYXkuaXNBcnJheSgkaG92ZXJhYmxlKSAmJiAkaG92ZXJhYmxlLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICRob3ZlcmFibGU6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRob3ZlcmFibGU6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogSG92ZXJhYmxlV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBob3ZlcmFibGU6ICRob3ZlcmFibGUsXG4gICAgICAgICAgb25Nb3VzZUVudGVyLFxuICAgICAgICAgIG9uTW91c2VMZWF2ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IHRvQ29udGV4dE1hcCA9IChwcm9wczogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVQcm9wczx1bmtub3duPj4gfCB1bmRlZmluZWQpID0+IHtcbiAgY29uc3QgaXRlbXMgPSBbcHJvcHNdLmZsYXQoKS5maWx0ZXIoaXNEZWZpbmVkKTtcbiAgY29uc3QgcmVzdWx0czogW29iamVjdCwgQ29udGV4dE1hcFZhbHVlXVtdID0gW107XG5cbiAgZm9yIChjb25zdCB7IGNvbnRleHQsIGl0ZW0sIG9wdGlvbnMgfSBvZiBpdGVtcykge1xuICAgIHJlc3VsdHMucHVzaChbY29udGV4dCwgeyBpdGVtLCAuLi5vcHRpb25zIH1dKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgSUNvbXB1dGVkVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9ob3ZlcmVkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBjb21wdXRlZE5vd0luamVjdGFibGUgfSBmcm9tIFwiLi9jb21wdXRlZC1ub3cuaW5qZWN0YWJsZVwiO1xuXG5leHBvcnQgdHlwZSBJdGVtQmVpbmdIb3ZlcmVkID0gPFQ+KGhvdmVyYWJsZUNvbnRleHQ6IEhvdmVyYWJsZUNvbnRleHQ8VD4pID0+IElDb21wdXRlZFZhbHVlPFQgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuID0gZ2V0SW5qZWN0aW9uVG9rZW4yPHsgc2luZ2xlRmFjdG9yeTogKCkgPT4gSXRlbUJlaW5nSG92ZXJlZCB9Pih7XG4gIGlkOiBcIml0ZW0tYmVpbmctaG92ZXJlZFwiLFxuICBjYXJkaW5hbGl0eTogXCJvbmVcIixcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBwcml2YXRlSXRlbUJlaW5nSG92ZXJlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcInByaXZhdGUtaXRlbS1iZWluZy1ob3ZlcmVkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldEhvdmVyZWRJdGVtU3RhdGUgPSBkaS5pbmplY3QoaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUpO1xuICAgIGNvbnN0IGdldENvbXB1dGVkTm93ID0gZGkuaW5qZWN0KGNvbXB1dGVkTm93SW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKGNvbnRleHQ6IG9iamVjdCkgPT4ge1xuICAgICAgY29uc3QgaG92ZXJlZEl0ZW1TdGF0ZSA9IGdldEhvdmVyZWRJdGVtU3RhdGUoY29udGV4dCk7XG4gICAgICBjb25zdCBjb21wdXRlZE5vdyA9IGdldENvbXB1dGVkTm93KDEpO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB0b3BJdGVtID0gWy4uLmhvdmVyZWRJdGVtU3RhdGUudmFsdWVzKCldLmF0KC0xKTtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB0b3BJdGVtPy5nZXRQcm9wcygpO1xuXG4gICAgICAgIGlmICghdG9wSXRlbSB8fCAhcHJvcHMpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2hlbkNvbnNpZGVyZWRIb3ZlcmVkID0gdG9wSXRlbS5ob3ZlcmVkQXQuZ2V0KCkgKyBwcm9wcy5kZWxheTtcbiAgICAgICAgY29uc3Qgbm93ID0gY29tcHV0ZWROb3cuZ2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIG5vdyA+PSB3aGVuQ29uc2lkZXJlZEhvdmVyZWQgPyBwcm9wcy5pdGVtIDogdW5kZWZpbmVkO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nSG92ZXJlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcIml0ZW0tYmVpbmctaG92ZXJlZFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXRQcml2YXRlSXRlbUJlaW5nSG92ZXJlZCA9IGRpLmluamVjdChwcml2YXRlSXRlbUJlaW5nSG92ZXJlZEluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICAoPFQ+KGNvbnRleHQ6IEhvdmVyYWJsZUNvbnRleHQ8VD4pID0+XG4gICAgICAgIGdldFByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkKGNvbnRleHQpIGFzIElDb21wdXRlZFZhbHVlPFQ+KSBhcyBJdGVtQmVpbmdIb3ZlcmVkO1xuICB9LFxuXG4gIGluamVjdGlvblRva2VuOiBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgb2JzZXJ2YWJsZSwgb25CZWNvbWVPYnNlcnZlZCwgb25CZWNvbWVVbm9ic2VydmVkLCBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5cbi8qKlxuICogQSBjbG9jayB0aGF0IGFkdmFuY2VzIG9ubHkgd2hpbGUgc29tZXRoaW5nIG9ic2VydmVzIGl0LCBzbyBhIGhvdmVyIGRlbGF5XG4gKiBrZWVwcyBiZWluZyByZS1ldmFsdWF0ZWQgdW50aWwgaXQgaGFzIGVsYXBzZWQgYW5kIGNvc3RzIG5vdGhpbmcgb25jZSBub2JvZHlcbiAqIGlzIHdhdGNoaW5nLlxuICpcbiAqIExvY2FsIHJhdGhlciB0aGFuIHRha2VuIGZyb20gdGhlIHNoYXJlZCBpbnRlcnZhbCBmZWF0dXJlOiBhIGRlc2lnbiBzeXN0ZW1cbiAqIGNhbm5vdCBkZXBlbmQgb24gYSBmZWF0dXJlIHBhY2thZ2UsIGFuZCB0aGUgaG92ZXJhYmxlIHBsdWdpbiBpcyB0aGUgb25seVxuICogdGhpbmcgaGVyZSB0aGF0IG5lZWRzIGEgY2xvY2suIFRoZSBpbnRlcnZhbCBpcyB0aGUgaW5zdGFudGlhdGlvbiBwYXJhbWV0ZXIsXG4gKiBzbyB2MiBrZXlzIG9uZSBjbG9jayBwZXIgaW50ZXJ2YWwuXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wdXRlZE5vd0luamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImNvbXB1dGVkLW5vd1wiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoaW50ZXJ2YWxNczogbnVtYmVyKSA9PiB7XG4gICAgY29uc3Qgbm93ID0gb2JzZXJ2YWJsZS5ib3goRGF0ZS5ub3coKSk7XG5cbiAgICBsZXQgaGFuZGxlOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCB1bmRlZmluZWQ7XG5cbiAgICBvbkJlY29tZU9ic2VydmVkKG5vdywgKCkgPT4ge1xuICAgICAgcnVuSW5BY3Rpb24oKCkgPT4gbm93LnNldChEYXRlLm5vdygpKSk7XG5cbiAgICAgIGhhbmRsZSA9IHNldEludGVydmFsKCgpID0+IHJ1bkluQWN0aW9uKCgpID0+IG5vdy5zZXQoRGF0ZS5ub3coKSkpLCBpbnRlcnZhbE1zKTtcbiAgICB9KTtcblxuICAgIG9uQmVjb21lVW5vYnNlcnZlZChub3csICgpID0+IHtcbiAgICAgIGlmIChoYW5kbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7XG4gICAgICB9XG5cbiAgICAgIGhhbmRsZSA9IHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiBub3cuZ2V0KCkpO1xuICB9LFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIsIGdldEluamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IElDb21wdXRlZFZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB0eXBlIHsgRHJhZ2dhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1kcmFnZ2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHsgZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9fc2hhcmVkL2RyYWdnZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIEl0ZW1CZWluZ0RyYWdnZWQgPSA8VD4oZHJhZ2dhYmxlQ29udGV4dDogRHJhZ2dhYmxlQ29udGV4dDxUPikgPT4gSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdEcmFnZ2VkSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBJdGVtQmVpbmdEcmFnZ2VkIH0+KHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1kcmFnZ2VkXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IHByaXZhdGVJdGVtQmVpbmdEcmFnZ2VkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwicHJpdmF0ZS1pdGVtLWJlaW5nLWRyYWdnZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0RHJhZ2dlZEl0ZW1TdGF0ZSA9IGRpLmluamVjdChkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKGNvbnRleHQ6IERyYWdnYWJsZUNvbnRleHQ8YW55PikgPT4gY29tcHV0ZWQoKCkgPT4gZ2V0RHJhZ2dlZEl0ZW1TdGF0ZShjb250ZXh0KS5nZXQoKSk7XG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpdGVtLWJlaW5nLWRyYWdnZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0RyYWdnZWQgPSBkaS5pbmplY3QocHJpdmF0ZUl0ZW1CZWluZ0RyYWdnZWRJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoKSA9PlxuICAgICAgKDxUPihjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+KSA9PlxuICAgICAgICBnZXRQcml2YXRlSXRlbUJlaW5nRHJhZ2dlZChjb250ZXh0KSBhcyBJQ29tcHV0ZWRWYWx1ZTxUPikgYXMgSXRlbUJlaW5nRHJhZ2dlZDtcbiAgfSxcblxuICBpbmplY3Rpb25Ub2tlbjogaXRlbUJlaW5nRHJhZ2dlZEluamVjdGlvblRva2VuLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5cbi8vIFRoZSBjb250ZXh0IGlzIHRoZSBpbnN0YW50aWF0aW9uIHBhcmFtZXRlciwgc28gdjIga2V5cyBvbmUgc3RhdGUgYm94IHBlclxuLy8gY29udGV4dCBpZGVudGl0eSBcdTIwMTQgd2hhdCB0aGUga2V5ZWRTaW5nbGV0b24gdXNlZCB0byBzcGVsbCBvdXQuXG5leHBvcnQgY29uc3QgZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImRyYWdnZWQtaXRlbS1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IERyYWdnYWJsZUNvbnRleHQ8YW55PikgPT4gb2JzZXJ2YWJsZS5ib3godW5kZWZpbmVkLCB7IGRlZXA6IGZhbHNlIH0pLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcywgdHlwZSBDb250cmlidXRlUmVmIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IEhvdmVyYWJsZVBsdWdpbiB9IGZyb20gXCIuLi9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi9ob3ZlcmFibGUvaXRlbS1iZWluZy1ob3ZlcmVkLmluamVjdGFibGVcIjtcbmltcG9ydCB7IGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSB9IGZyb20gXCIuLi9ob3ZlcmFibGUvaG92ZXJlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUlkLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b29sdGlwRGVsYXlJbmplY3RhYmxlIH0gZnJvbSBcIi4vdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGVcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vdG9vbHRpcC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBQbGFjZW1lbnQgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgZmxpcCwgb2Zmc2V0LCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHR5cGUgeyBSZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHsgbm9vcCwgdHlwZSBNYXliZUFzeW5jVm9pZEZ1bmN0aW9uIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB7IE1pbmltYWxEaXYsIHR5cGUgTWluaW1hbERpdlByb3BzIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzL21pbmltYWwtZGl2XCI7XG5pbXBvcnQgeyBhY3Rpb24sIGF1dG9ydW4sIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuXG50eXBlIFRvb2x0aXBDb250ZW50UHJvcHM8UHJvcHMgZXh0ZW5kcyBvYmplY3Q+ID1cbiAgfCB7XG4gICAgICAvKiogUGxhaW4tdGV4dCBjb250ZW50IG9mIHRoZSB0b29sdGlwLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgQ29udGVudGAuICovXG4gICAgICByZWFkb25seSBjb250ZW50VGV4dDogc3RyaW5nO1xuICAgICAgcmVhZG9ubHkgQ29udGVudD86IHVuZGVmaW5lZDtcbiAgICAgIHJlYWRvbmx5IGNvbnRlbnRQcm9wcz86IHVuZGVmaW5lZDtcbiAgICB9XG4gIHwge1xuICAgICAgcmVhZG9ubHkgY29udGVudFRleHQ/OiB1bmRlZmluZWQ7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBjb21wb25lbnQgcmVuZGVyZWQgYXMgdGhlIGNvbnRlbnQgb2YgdGhlIHRvb2x0aXAuIE11c3QgaGF2ZSBhIHN0YWJsZVxuICAgICAgICogaWRlbnRpdHkgKG1vZHVsZSBzY29wZSkgXHUyMDE0IGRhdGEgZmxvd3MgaW4gdGhyb3VnaCBgY29udGVudFByb3BzYCwgbmV2ZXJcbiAgICAgICAqIHRocm91Z2ggY2xvc3VyZSBjYXB0dXJlLlxuICAgICAgICovXG4gICAgICByZWFkb25seSBDb250ZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPFByb3BzPjtcbiAgICAgIC8qKiBUaGUgcHJvcHMgdGhlIHRvb2x0aXAgcGFzc2VzIHRvIGBDb250ZW50YCB3aGVuIHJlbmRlcmluZyBpdC4gKi9cbiAgICAgIHJlYWRvbmx5IGNvbnRlbnRQcm9wcz86IFByb3BzO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlICRUb29sdGlwUHJvcHM8UHJvcHMgZXh0ZW5kcyBvYmplY3QgPSBSZWNvcmQ8bmV2ZXIsIG5ldmVyPj4gPSB7XG4gIHJlYWRvbmx5IHBvc2l0aW9uPzogUGxhY2VtZW50O1xuICByZWFkb25seSBvblRvb2x0aXBTaG93bj86IE1heWJlQXN5bmNWb2lkRnVuY3Rpb247XG59ICYgVG9vbHRpcENvbnRlbnRQcm9wczxQcm9wcz47XG5cbi8qKlxuICogVHlwZS1jaGVja3MgdGhlIHBhaXJpbmcgb2YgYENvbnRlbnRgIGFuZCBgY29udGVudFByb3BzYCBvZiBhbiBvYmplY3QtZm9ybVxuICogYCR0b29sdGlwYDogYGNvbnRlbnRQcm9wc2AgaXMgcmVxdWlyZWQgdG8gYmUgdGhlIHByb3BzIG9mIGBDb250ZW50YCwgYW5kIGl0XG4gKiBpcyByZXF1aXJlZCB0byBiZSBwcmVzZW50IHdoZW4gYENvbnRlbnRgIGhhcyByZXF1aXJlZCBwcm9wcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBQcm9wcyh0b29sdGlwUHJvcHM6ICRUb29sdGlwUHJvcHMpOiAkVG9vbHRpcFByb3BzPGFueT47XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFByb3BzPFByb3BzIGV4dGVuZHMgb2JqZWN0PihcbiAgdG9vbHRpcFByb3BzOiAkVG9vbHRpcFByb3BzPFByb3BzPiAmIHsgcmVhZG9ubHkgY29udGVudFByb3BzOiBQcm9wcyB9LFxuKTogJFRvb2x0aXBQcm9wczxhbnk+O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBQcm9wcyh0b29sdGlwUHJvcHM6ICRUb29sdGlwUHJvcHM8YW55Pik6ICRUb29sdGlwUHJvcHM8YW55PiB7XG4gIHJldHVybiB0b29sdGlwUHJvcHM7XG59XG5cbmV4cG9ydCB0eXBlIFRvb2x0aXBQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqIE51bGxpc2ggbWVhbnMgbm8gdG9vbHRpcCwgc28gY29uZGl0aW9uYWwgc291cmNlcyAoYHN0cmluZyB8IG51bGxgKSBwYXNzIHRocm91Z2ggYXMtaXMuICovXG4gICR0b29sdGlwPzogc3RyaW5nIHwgJFRvb2x0aXBQcm9wczxhbnk+IHwgbnVsbDtcbn07XG5cbi8qKlxuICogQSB0b29sdGlwIG9mIG5vdGhpbmc6IHRoZSBlbGVtZW50IHRha2VzIHRoZSBob3Zlciwgc28gbm8gZW5jbG9zaW5nIGVsZW1lbnQgc2hvd3MgaXRzIHRvb2x0aXBcbiAqIHdoaWxlIHRoZSBwb2ludGVyIGlzIG92ZXIgdGhpcyBvbmUsIGFuZCBzaG93cyBub3RoaW5nIG9mIGl0cyBvd24uIE51bGxpc2ggYCR0b29sdGlwYCBsZWF2ZXMgdGhlXG4gKiBlbmNsb3NpbmcgdG9vbHRpcCBhbG9uZSBpbnN0ZWFkIFx1MjAxNCB1c2UgdGhpcyB3aGVyZSBhbiBlbGVtZW50IG11c3Qgbm90IGJlIGRlc2NyaWJlZCBieSB3aGF0ZXZlclxuICogZW5jbG9zZXMgaXQsIGEgcGFuZWwgb3BlbmVkIGZyb20gYSByb3cgd2l0aCBhIHRvb2x0aXAgYmVpbmcgdGhlIGNhc2UgdGhhdCBuZWVkcyBpdDogYSB0b29sdGlwXG4gKiBnb2VzIGludG8gdGhlIHRvcCBsYXllciwgc28gaXQgd291bGQgcGFpbnQgb3ZlciB3aGF0IHRoZSBwYW5lbCBpcyB0aGVyZSBmb3IuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogPExpICR0b29sdGlwPXtzdXBwcmVzc1Rvb2x0aXB9PlxuICogICA8U2V0dGluZ3MgLz5cbiAqIDwvTGk+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IHN1cHByZXNzVG9vbHRpcDogJFRvb2x0aXBQcm9wcyA9IHsgY29udGVudFRleHQ6IFwiXCIgfTtcblxuY29uc3QgaG92ZXJhYmxlVG9vbHRpcENvbnRleHQgPSBnZXRIb3ZlcmFibGVDb250ZXh0PEhUTUxFbGVtZW50IHwgbnVsbD4oKTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZFRvb2x0aXBDb250YWluZXIgPSAocHJvcHM6IE1pbmltYWxEaXZQcm9wcykgPT4ge1xuICBjb25zdCB7ICRjbGFzc05hbWUsIC4uLnJlc3QgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPE1pbmltYWxEaXZcbiAgICAgICRwYWRkaW5nXG4gICAgICAkYmFja2dyb3VuZENvbG9yPVwiYmFja2dyb3VuZFNlY29uZGFyeVwiXG4gICAgICAkYm9yZGVyPXt7IHJhZGl1czogdHJ1ZSB9fVxuICAgICAgJGZvbnQ9e3sgc2l6ZTogXCJzXCIgfX1cbiAgICAgICRib3hTaGFkb3dcbiAgICAgICRub1BvaW50ZXJFdmVudHNcbiAgICAgICRhYnNvbHV0ZVxuICAgICAgJGNsYXNzTmFtZT17W3N0eWxlcy50b29sdGlwLCAkY2xhc3NOYW1lXX1cbiAgICAgIGRhdGEtdG9vbHRpcC1jb250YWluZXItdGVzdFxuICAgICAgey4uLnJlc3R9XG4gICAgLz5cbiAgKTtcbn07XG5cbnR5cGUgRmxvYXRpbmdTdHlsZWRUb29sdGlwQ29udGFpbmVyUHJvcHMgPSB7XG4gIGNvbnRlbnQ6IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcG9zaXRpb246IFBsYWNlbWVudDtcbiAgcmVmZXJlbmNlOiBIVE1MRWxlbWVudCB8IG51bGw7XG4gIG9uVG9vbHRpcFNob3duOiBWb2lkRnVuY3Rpb247XG59O1xuXG50eXBlIFBvcG92ZXJDYXBhYmxlID0gSFRNTEVsZW1lbnQgJiB7IHNob3dQb3BvdmVyOiBWb2lkRnVuY3Rpb247IGhpZGVQb3BvdmVyOiBWb2lkRnVuY3Rpb24gfTtcblxuY29uc3QgaXNQb3BvdmVyQ2FwYWJsZSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgUG9wb3ZlckNhcGFibGUgPT5cbiAgdHlwZW9mIChlbGVtZW50IGFzIFBhcnRpYWw8UG9wb3ZlckNhcGFibGU+KS5zaG93UG9wb3ZlciA9PT0gXCJmdW5jdGlvblwiO1xuXG5jb25zdCBGbG9hdGluZ1N0eWxlZFRvb2x0aXBDb250YWluZXIgPSAocHJvcHM6IEZsb2F0aW5nU3R5bGVkVG9vbHRpcENvbnRhaW5lclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY29udGVudCwgcG9zaXRpb24sIHJlZmVyZW5jZSwgb25Ub29sdGlwU2hvd24gfSA9IHByb3BzO1xuICBjb25zdCBbZmxvYXRpbmcsIHNldEZsb2F0aW5nXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICBwbGFjZW1lbnQ6IHBvc2l0aW9uLFxuICAgIG1pZGRsZXdhcmU6IFtmbGlwKCksIG9mZnNldCg4KSwgc2hpZnQoKV0sXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgcmVmZXJlbmNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHdlIGRvbid0IHdhbnQgdG8gY2FsbCBvblRvb2x0aXBTaG93biBldmVyeSB0aW1lIGl0IHVwZGF0ZXMgd2hpbGUgdGhlIHRvb2x0aXAgaXMgYmVpbmcgc2hvd1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHZvaWQgb25Ub29sdGlwU2hvd24oKTtcbiAgfSwgW10pO1xuXG4gIC8vIEludG8gdGhlIHRvcCBsYXllciwgd2hlcmUgYSBkcm9wLWRvd24gbWVudSBhbHJlYWR5IHB1dHMgaXRzZWxmOiBubyB6LWluZGV4IGNhblxuICAvLyBwYWludCBvdmVyIGEgcG9wb3Zlciwgc28gYSB0b29sdGlwIGFueXdoZXJlIG5lYXIgYW4gb3BlbiBtZW51IHdvdWxkIGJlIGhpZGRlblxuICAvLyBiZWhpbmQgaXQuIFNob3duIGFmdGVyIHRoZSBtZW51IG9wZW5lZCwgc28gaXQgbGFuZHMgYWJvdmUgaXQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFmbG9hdGluZyB8fCAhaXNQb3BvdmVyQ2FwYWJsZShmbG9hdGluZykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmbG9hdGluZy5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChmbG9hdGluZy5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBmbG9hdGluZy5oaWRlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtmbG9hdGluZ10pO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFRvb2x0aXBDb250YWluZXIgJHJlZj17c2V0RmxvYXRpbmd9IHBvcG92ZXI9XCJtYW51YWxcIiBzdHlsZT17ZmxvYXRpbmdTdHlsZXN9PlxuICAgICAge2NvbnRlbnR9XG4gICAgPC9TdHlsZWRUb29sdGlwQ29udGFpbmVyPlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgVG9vbHRpcFBsdWdpbjxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+ID0gUmV0dXJuVHlwZTx0eXBlb2YgdG9vbHRpcFBsdWdpbjxUPj47XG5cbnR5cGUgTm9ybWFsaXplZFRvb2x0aXBQcm9wcyA9IHtcbiAgcmVhZG9ubHkgY29udGVudFRleHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IENvbnRlbnQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT47XG4gIHJlYWRvbmx5IGNvbnRlbnRQcm9wcz86IGFueTtcbiAgcmVhZG9ubHkgcG9zaXRpb246IFBsYWNlbWVudDtcbiAgcmVhZG9ubHkgb25Ub29sdGlwU2hvd246IE1heWJlQXN5bmNWb2lkRnVuY3Rpb247XG59O1xuXG50eXBlIFRvb2x0aXBXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IHRvb2x0aXA6IE5vcm1hbGl6ZWRUb29sdGlwUHJvcHM7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgVG9vbHRpcFdyYXBwZXJDb21wb25lbnQgPSAoeyB0b29sdGlwLCBjb250cmlidXRlUmVmLCBjb250cmlidXRlUHJvcHMsIGNoaWxkcmVuIH06IFRvb2x0aXBXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgW3JlZmVyZW5jZSwgc2V0UmVmZXJlbmNlXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnRyaWJ1dGVSZWYoc2V0UmVmZXJlbmNlKTtcblxuICBjb25zdCB0b29sdGlwRGVsYXkgPSB1c2VTeW5jSW5qZWN0KHRvb2x0aXBEZWxheUluamVjdGFibGUpO1xuICBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvciA9IHVzZVN5bmNJbmplY3QoaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlKTtcbiAgY29uc3QgaG92ZXJlZEl0ZW0gPSB1c2VTeW5jSW5qZWN0KGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbikoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpO1xuICBjb25zdCBpZCA9IHVzZUlkKCk7XG5cbiAgY29uc3QgcmVmZXJlbmNlUmVmID0gdXNlUmVmKHJlZmVyZW5jZSk7XG4gIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gcmVmZXJlbmNlO1xuXG4gIGNvbnN0IHRvb2x0aXBEZWxheVJlZiA9IHVzZVJlZih0b29sdGlwRGVsYXkpO1xuICB0b29sdGlwRGVsYXlSZWYuY3VycmVudCA9IHRvb2x0aXBEZWxheTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIG9uTW91c2VFbnRlcjogYWN0aW9uKCgpID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgIGhvdmVySXRlbVN0YXRlRm9yKGhvdmVyYWJsZVRvb2x0aXBDb250ZXh0KS5zZXQoaWQsIHtcbiAgICAgICAgaG92ZXJlZEF0OiBvYnNlcnZhYmxlLmJveChob3ZlcmVkQXQsIHsgZGVlcDogZmFsc2UgfSksXG4gICAgICAgIGdldFByb3BzOiAoKSA9PiAoe1xuICAgICAgICAgIGl0ZW06IHJlZmVyZW5jZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGRlbGF5OiB0b29sdGlwRGVsYXlSZWYuY3VycmVudCA/PyAwLFxuICAgICAgICAgIG9uSG92ZXI6IG5vb3AsXG4gICAgICAgICAgb25VbmhvdmVyOiBub29wLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH0pLFxuXG4gICAgb25Nb3VzZUxlYXZlOiBhY3Rpb24oKCkgPT4ge1xuICAgICAgY29uc3QgaG92ZXJlZFN0YXRlID0gaG92ZXJJdGVtU3RhdGVGb3IoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpO1xuICAgICAgY29uc3QgaG92ZXJlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgaG92ZXJlZFN0YXRlLmRlbGV0ZShpZCk7XG4gICAgICBob3ZlcmVkU3RhdGUuZm9yRWFjaCgoc3RhdGUpID0+IHN0YXRlLmhvdmVyZWRBdC5zZXQoaG92ZXJlZEF0KSk7XG4gICAgfSksXG4gIH0pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgYWN0aW9uKCgpID0+IHtcbiAgICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpLmRlbGV0ZShpZCk7XG4gICAgICB9KSxcbiAgICBbaG92ZXJJdGVtU3RhdGVGb3IsIGlkXSxcbiAgKTtcblxuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gYXV0b3J1bigoKSA9PiB7XG4gICAgICBjb25zdCBpc0hvdmVyZWQgPSBob3ZlcmVkSXRlbS5nZXQoKSA9PT0gcmVmZXJlbmNlUmVmLmN1cnJlbnQ7XG4gICAgICBzZXRIb3ZlcmVkKGlzSG92ZXJlZCk7XG4gICAgfSk7XG4gIH0sIFtob3ZlcmVkSXRlbV0pO1xuXG4gIGNvbnN0IHsgY29udGVudFRleHQsIENvbnRlbnQsIGNvbnRlbnRQcm9wcywgcG9zaXRpb24sIG9uVG9vbHRpcFNob3duIH0gPSB0b29sdGlwO1xuICBjb25zdCBjb250ZW50ID0gaG92ZXJlZCA/IENvbnRlbnQgPT09IHVuZGVmaW5lZCA/IGNvbnRlbnRUZXh0IDogPENvbnRlbnQgey4uLmNvbnRlbnRQcm9wc30gLz4gOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NvbnRlbnRcbiAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8RmxvYXRpbmdTdHlsZWRUb29sdGlwQ29udGFpbmVyIHsuLi57IGNvbnRlbnQsIHBvc2l0aW9uLCBvblRvb2x0aXBTaG93biwgcmVmZXJlbmNlIH19IC8+LFxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbH1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b29sdGlwUGx1Z2luPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSB7XG4gIHJldHVybiBnZXRQbHVnaW48VG9vbHRpcFBsdWdpblByb3BzLCBbSG92ZXJhYmxlUGx1Z2luPFQ+LCBSZWZQbHVnaW48VD5dPigocHJvcHMpID0+IHtcbiAgICBjb25zdCB7ICR0b29sdGlwIH0gPSBwcm9wcyBhcyB0eXBlb2YgcHJvcHMgJiB7IHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH07XG5cbiAgICBpZiAoJHRvb2x0aXAgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJHRvb2x0aXA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgY29udGVudFRleHQsXG4gICAgICBDb250ZW50LFxuICAgICAgY29udGVudFByb3BzLFxuICAgICAgcG9zaXRpb24gPSBcImJvdHRvbVwiLFxuICAgICAgb25Ub29sdGlwU2hvd24gPSBub29wLFxuICAgIH06ICRUb29sdGlwUHJvcHM8YW55PiA9IHR5cGVvZiAkdG9vbHRpcCA9PT0gXCJzdHJpbmdcIiA/IHsgY29udGVudFRleHQ6ICR0b29sdGlwIH0gOiAkdG9vbHRpcDtcblxuICAgIHJldHVybiB7XG4gICAgICAkdG9vbHRpcDogdW5kZWZpbmVkLFxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBUb29sdGlwV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICB0b29sdGlwOiB7IGNvbnRlbnRUZXh0LCBDb250ZW50LCBjb250ZW50UHJvcHMsIHBvc2l0aW9uLCBvblRvb2x0aXBTaG93biB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCBjb25zdCB0b29sdGlwRGVsYXlJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJ0b29sdGlwLWRlbGF5XCIsXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IDUwMCxcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInRvb2x0aXBcIjogXCJ0b29sdGlwLW1vZHVsZV9fdG9vbHRpcF9fX3ZhT0F1XCJcbn07IiwgImltcG9ydCB7IGdldEVsZW1lbnRDb21wb25lbnQgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIm1vYngtcmVhY3RcIjtcbmltcG9ydCB7IGFic29sdXRlUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYWJzb2x1dGUvYWJzb2x1dGVcIjtcbmltcG9ydCB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmdcIjtcbmltcG9ydCB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuaW1wb3J0IHsgYm9yZGVyUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYm9yZGVyL2JvcmRlclwiO1xuaW1wb3J0IHsgZm9udFBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL2ZvbnQvZm9udFwiO1xuaW1wb3J0IHsgYm94U2hhZG93UGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgeyBub1BvaW50ZXJFdmVudHNQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuaW1wb3J0IHsgcmVmUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvcmVmL3JlZlwiO1xuaW1wb3J0IHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyByZWxhdGl2ZVBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5pbXBvcnQgeyBob3ZlcmFibGVQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5cbmNvbnN0IHBsdWdpbnMgPSBbXG4gIHBhZGRpbmdQbHVnaW4sXG4gIGJveFNoYWRvd1BsdWdpbixcbiAgYm9yZGVyUGx1Z2luLFxuICBmb250UGx1Z2luLFxuICBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4sXG4gIG5vUG9pbnRlckV2ZW50c1BsdWdpbixcbiAgcmVsYXRpdmVQbHVnaW4sXG4gIGFic29sdXRlUGx1Z2luLFxuICBjbGFzc05hbWVQbHVnaW4sXG5dO1xuXG5jb25zdCBnZXRUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtob3ZlcmFibGVQbHVnaW48VD4oKSwgcmVmUGx1Z2luPFQ+KCldO1xuXG5leHBvcnQgY29uc3QgTWluaW1hbERpdiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4ucGx1Z2lucywgLi4uZ2V0VHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIE1pbmltYWxEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBNaW5pbWFsRGl2PjtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGFic29sdXRlU3R5bGVzIGZyb20gXCIuL2Fic29sdXRlLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEFic29sdXRlUG9zaXRpb24gPVxuICB8IFwiYWJzb2x1dGUtY2VudGVyLWxlZnQtdG8tcmVsYXRpdmUtY2VudGVyLXJpZ2h0XCJcbiAgfCBcImFic29sdXRlLWJvdHRvbS1sZWZ0LXRvLXJlbGF0aXZlLXRvcC1sZWZ0XCJcbiAgfCBcImFic29sdXRlLWJvdHRvbS10by1yZWxhdGl2ZS1ib3R0b21cIlxuICB8IFwiYWJzb2x1dGUtdG9wLWNlbnRlci10by1yZWxhdGl2ZS10b3AtY2VudGVyXCI7XG5cbmV4cG9ydCB0eXBlIEFic29sdXRlUGx1Z2luUHJvcHMgPSB7ICRhYnNvbHV0ZT86IEFic29sdXRlUG9zaXRpb24gfCBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBhYnNvbHV0ZVBsdWdpbiA9IGdldFBsdWdpbjxBYnNvbHV0ZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW1xuICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAge1xuICAgICAgW2Fic29sdXRlU3R5bGVzLmFic29sdXRlXTogISFwcm9wcy4kYWJzb2x1dGUsXG5cbiAgICAgIFthYnNvbHV0ZVN0eWxlc1tgYWJzb2x1dGUtLSR7cHJvcHMuJGFic29sdXRlfWBdXTogdHlwZW9mIHByb3BzLiRhYnNvbHV0ZSA9PT0gXCJzdHJpbmdcIixcbiAgICB9LFxuICBdLFxuXG4gICRhYnNvbHV0ZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2Fic29sdXRlL2Fic29sdXRlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYWJzb2x1dGVcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlX19fTVgtLVlcIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWxlZnQtdG8tcmVsYXRpdmUtY2VudGVyLXJpZ2h0XCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWxlZnQtdG8tcmVsYXRpdmUtY2VudGVyLXJpZ2h0X19fbEowcHJcIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtYm90dG9tLWxlZnQtdG8tcmVsYXRpdmUtdG9wLWxlZnRcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tbGVmdC10by1yZWxhdGl2ZS10b3AtbGVmdF9fXzNnMHNEXCIsXG4gIFwiYWJzb2x1dGUtLWFic29sdXRlLWNlbnRlci1jZW50ZXItdG8tcmVsYXRpdmUtYm90dG9tLXJpZ2h0XCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWNlbnRlci10by1yZWxhdGl2ZS1ib3R0b20tcmlnaHRfX19nZ21POFwiLFxuICBcImFic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tdG8tcmVsYXRpdmUtYm90dG9tXCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtYm90dG9tLXRvLXJlbGF0aXZlLWJvdHRvbV9fX0NsbTBtXCIsXG4gIFwiYWJzb2x1dGUtLWFic29sdXRlLXRvcC1jZW50ZXItdG8tcmVsYXRpdmUtdG9wLWNlbnRlclwiOiBcImFic29sdXRlLW1vZHVsZV9fYWJzb2x1dGUtLWFic29sdXRlLXRvcC1jZW50ZXItdG8tcmVsYXRpdmUtdG9wLWNlbnRlcl9fX0V0a3k1XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgcGFkZGluZ1N0eWxlcyBmcm9tIFwiLi9wYWRkaW5nLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlIERpcmVjdGlvbmFsUGFkZGluZyA9IHtcbiAgdG9wPzogVFNoaXJ0U2l6ZTtcbiAgYm90dG9tPzogVFNoaXJ0U2l6ZTtcbiAgbGVmdD86IFRTaGlydFNpemU7XG4gIHJpZ2h0PzogVFNoaXJ0U2l6ZTtcbiAgaG9yaXpvbnRhbD86IFRTaGlydFNpemU7XG4gIHZlcnRpY2FsPzogVFNoaXJ0U2l6ZTtcbn07XG5cbmV4cG9ydCB0eXBlIFBhZGRpbmdQbHVnaW5Qcm9wcyA9IHsgJHBhZGRpbmc/OiBib29sZWFuIHwgRGlyZWN0aW9uYWxQYWRkaW5nIHwgVFNoaXJ0U2l6ZSB9O1xuXG5leHBvcnQgY29uc3QgcGFkZGluZ1BsdWdpbiA9IGdldFBsdWdpbjxQYWRkaW5nUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJHBhZGRpbmcpIHtcbiAgICByZXR1cm4geyAkcGFkZGluZzogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCBwYWRkaW5nID0gcHJvcHMuJHBhZGRpbmcgPT09IHRydWUgPyBcInhzXCIgOiBwcm9wcy4kcGFkZGluZztcblxuICBpZiAoaXNTdHJpbmcocGFkZGluZykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHBhZGRpbmdTdHlsZXNbYHBhZGRpbmctLSR7cGFkZGluZ31gXV0sXG4gICAgICAkcGFkZGluZzogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB0b3BTaXplID0gcGFkZGluZy50b3AgfHwgcGFkZGluZy52ZXJ0aWNhbDtcbiAgY29uc3QgYm90dG9tU2l6ZSA9IHBhZGRpbmcuYm90dG9tIHx8IHBhZGRpbmcudmVydGljYWw7XG4gIGNvbnN0IHJpZ2h0U2l6ZSA9IHBhZGRpbmcucmlnaHQgfHwgcGFkZGluZy5ob3Jpem9udGFsO1xuICBjb25zdCBsZWZ0U2l6ZSA9IHBhZGRpbmcubGVmdCB8fCBwYWRkaW5nLmhvcml6b250YWw7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuXG4gICAgICB7XG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX190b3AtLSR7dG9wU2l6ZX1gXV06IHRvcFNpemUsXG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX19yaWdodC0tJHtyaWdodFNpemV9YF1dOiByaWdodFNpemUsXG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX19ib3R0b20tLSR7Ym90dG9tU2l6ZX1gXV06IGJvdHRvbVNpemUsXG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX19sZWZ0LS0ke2xlZnRTaXplfWBdXTogbGVmdFNpemUsXG4gICAgICB9LFxuICAgIF0sXG5cbiAgICAkcGFkZGluZzogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicGFkZGluZ19fdG9wLS16ZXJvXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0temVyb19fX2dxcWZaXCIsXG4gIFwicGFkZGluZ19fdG9wLS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS00eHNfX19ZLXk5c1wiLFxuICBcInBhZGRpbmdfX3RvcC0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tM3hzX19fb2NjNE5cIixcbiAgXCJwYWRkaW5nX190b3AtLXh4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLXh4c19fX043QnNsXCIsXG4gIFwicGFkZGluZ19fdG9wLS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLXhzX19fTDBVRERcIixcbiAgXCJwYWRkaW5nX190b3AtLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS1zX19fa2xRZTJcIixcbiAgXCJwYWRkaW5nX190b3AtLW1cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS1tX19fY3RhNXRcIixcbiAgXCJwYWRkaW5nX190b3AtLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS1sX19fTGctcHFcIixcbiAgXCJwYWRkaW5nX190b3AtLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teGxfX19YdnN2TFwiLFxuICBcInBhZGRpbmdfX3RvcC0teHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teHhsX19fMWtlb2VcIixcbiAgXCJwYWRkaW5nX190b3AtLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTN4bF9fX2NVUHM5XCIsXG4gIFwicGFkZGluZ19fdG9wLS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS00eGxfX19xaWsyZVwiLFxuICBcInBhZGRpbmdfX3RvcC0tNXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tNXhsX19fczlrcFFcIixcbiAgXCJwYWRkaW5nX190b3AtLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTZ4bF9fX3FjM0ZaXCIsXG4gIFwicGFkZGluZ19fdG9wLS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS03eGxfX190YUMtUFwiLFxuICBcInBhZGRpbmdfX3RvcC0tOHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tOHhsX19fTFdoanFcIixcbiAgXCJwYWRkaW5nX190b3AtLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTl4bF9fX0wxM2NwXCIsXG4gIFwicGFkZGluZ19fdG9wLS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tMTB4bF9fX0lkZTlDXCIsXG4gIFwicGFkZGluZ19fdG9wLS0xMXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tMTF4bF9fX0h0dFNjXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXplcm9cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXplcm9fX182dlliVFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTR4c19fX2hqTzhEXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTN4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tM3hzX19fTVhSN0dcIixcbiAgXCJwYWRkaW5nX19yaWdodC0teHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS14eHNfX19GbjNPaFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0teHNfX19rcHNRUFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS1zXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS1zX19fN2VCRFZcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tbVwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tbV9fX3hHZHR1XCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLWxfX19NeXljNFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0teGxfX18tR0dqSlwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXh4bF9fXzB5TkVaXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tM3hsX19fYmJPUENcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tNHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS00eGxfX192QVpFVVwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS01eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTV4bF9fX3BzTmhiXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tNnhsX19fSnd3a1JcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tN3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS03eGxfX19nb213OVwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS04eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTh4bF9fX1ZodlZaXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tOXhsX19fNE9CTm5cIixcbiAgXCJwYWRkaW5nX19yaWdodC0tMTB4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tMTB4bF9fX2VPVUEzXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTExeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTExeGxfX19JNzkyZ1wiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXplcm9fX19GUzk4NFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tNHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tNHhzX19fd2hpMXhcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTN4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTN4c19fX2U1cmtZXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS14eHNfX194UXZWdlwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0teHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS14c19fX29jeWkwXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS1zXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tc19fXzZJYm5WXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tbV9fX2d4QjJNXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS1sXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tbF9fX2NiTW83XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS14bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXhsX19fdExBb3pcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXh4bF9fX2czNUItXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS0zeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS0zeGxfX19BejhraVwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tNHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tNHhsX19fa2JTLVJcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTV4bF9fX3dqbE9vXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS02eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS02eGxfX19JRHhSTFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tN3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tN3hsX19fSHFGbWlcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTh4bF9fX3VMTmVCXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS05eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS05eGxfX19rWGpmLVwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tMTB4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTEweGxfX19TSkNCeFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTExeGxfX19MUi1tc1wiLFxuICBcInBhZGRpbmdfX2xlZnQtLXplcm9cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0temVyb19fX09DVGNZXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tNHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLTR4c19fXzA4OTA4XCIsXG4gIFwicGFkZGluZ19fbGVmdC0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLTN4c19fX2ZlQzAtXCIsXG4gIFwicGFkZGluZ19fbGVmdC0teHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLXh4c19fX3hOYjJKXCIsXG4gIFwicGFkZGluZ19fbGVmdC0teHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teHNfX19kQmM2WFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tc19fX2tzaWdyXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tbVwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS1tX19fbGJtUmxcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS1sXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLWxfX19rR2d4blwiLFxuICBcInBhZGRpbmdfX2xlZnQtLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLXhsX19fUTlwTklcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS14eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teHhsX19fa1gwYWNcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS0zeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tM3hsX19fM1VuNmJcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNHhsX19fem5PM25cIixcbiAgXCJwYWRkaW5nX19sZWZ0LS01eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNXhsX19fUlRIc1BcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS02eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNnhsX19faDVCRUFcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tN3hsX19fclRaZmhcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS04eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tOHhsX19fbmRNdTlcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS05eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tOXhsX19fYjBHQTBcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLTEweGxfX19Qd0RTVlwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTExeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tMTF4bF9fXzJIc3ZKXCIsXG4gIFwicGFkZGluZy0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS16ZXJvX19faHdtZnBcIixcbiAgXCJwYWRkaW5nLS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tNHhzX19fUU9VS0JcIixcbiAgXCJwYWRkaW5nLS0zeHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tM3hzX19fUnM0SXVcIixcbiAgXCJwYWRkaW5nLS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0teHhzX19fTUlkQ0pcIixcbiAgXCJwYWRkaW5nLS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14c19fX1F3aGFCXCIsXG4gIFwicGFkZGluZy0tc1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS1zX19fQkxIZS1cIixcbiAgXCJwYWRkaW5nLS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLW1fX19QZHRaYVwiLFxuICBcInBhZGRpbmctLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tbF9fX1JWRExrXCIsXG4gIFwicGFkZGluZy0teGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0teGxfX19jdVBhTlwiLFxuICBcInBhZGRpbmctLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14eGxfX19IN1ZJSFwiLFxuICBcInBhZGRpbmctLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0zeGxfX19rdmlyVFwiLFxuICBcInBhZGRpbmctLTR4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS00eGxfX195MTdBMFwiLFxuICBcInBhZGRpbmctLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS01eGxfX185eW1JOVwiLFxuICBcInBhZGRpbmctLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS02eGxfX18yS0NtYVwiLFxuICBcInBhZGRpbmctLTd4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS03eGxfX19Tc0l4blwiLFxuICBcInBhZGRpbmctLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS04eGxfX19zSFpwbVwiLFxuICBcInBhZGRpbmctLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS05eGxfX19vVmNJZ1wiLFxuICBcInBhZGRpbmctLTEweGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tMTB4bF9fX2pLR2tuXCIsXG4gIFwicGFkZGluZy0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0xMXhsX19fQWdKckdcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBiYWNrZ3JvdW5kQ29sb3JTdHlsZXMgZnJvbSBcIi4vYmFja2dyb3VuZC1jb2xvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSBCYWNrZ3JvdW5kQ29sb3JBbGlhcyA9IGtleW9mIHR5cGVvZiBhbGlhc1RvTm9taW5hbDtcbmV4cG9ydCB0eXBlIEJhY2tncm91bmRDb2xvciA9IENvbG9yIHwgQmFja2dyb3VuZENvbG9yQWxpYXM7XG5cbmV4cG9ydCB0eXBlICRCYWNrZ3JvdW5kQ29sb3JQcm9wcyA9IHtcbiAgbm9ybWFsPzogQmFja2dyb3VuZENvbG9yO1xuICBob3Zlcj86IEJhY2tncm91bmRDb2xvcjtcbiAgZm9jdXM/OiBCYWNrZ3JvdW5kQ29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSBCYWNrZ3JvdW5kQ29sb3JQbHVnaW5Qcm9wcyA9IHsgJGJhY2tncm91bmRDb2xvcj86IEJhY2tncm91bmRDb2xvciB8ICRCYWNrZ3JvdW5kQ29sb3JQcm9wcyB9O1xuXG5jb25zdCBhbGlhc1RvTm9taW5hbCA9IHtcbiAgYmFja2dyb3VuZFByaW1hcnk6IFwiZ3JleTgwXCIsXG4gIGJhY2tncm91bmRTZWNvbmRhcnk6IFwiZ3JleTEwMFwiLFxuICBiYWNrZ3JvdW5kUHJpbWFyeURpbW1lZDogXCJncmV5ODBBbHBoYTg1XCIsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBpc0JhY2tncm91bmRDb2xvckFsaWFzID0gKGNvbG9yOiBCYWNrZ3JvdW5kQ29sb3IpOiBjb2xvciBpcyBCYWNrZ3JvdW5kQ29sb3JBbGlhcyA9PiBjb2xvciBpbiBhbGlhc1RvTm9taW5hbDtcblxuZXhwb3J0IGNvbnN0IGJhY2tncm91bmRDb2xvclBsdWdpbiA9IGdldFBsdWdpbjxCYWNrZ3JvdW5kQ29sb3JQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkYmFja2dyb3VuZENvbG9yOiBjb2xvciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZm9jdXMgfSA9IHR5cGVvZiBjb2xvciA9PT0gXCJzdHJpbmdcIiA/IHsgbm9ybWFsOiBjb2xvciB9IDogKGNvbG9yID8/IHt9KTtcblxuICBjb25zdCBub3JtYWxDb2xvciA9IG5vcm1hbCA/IChpc0JhY2tncm91bmRDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaG92ZXJDb2xvciA9IGhvdmVyID8gKGlzQmFja2dyb3VuZENvbG9yQWxpYXMoaG92ZXIpID8gYWxpYXNUb05vbWluYWxbaG92ZXJdIDogaG92ZXIpIDogdW5kZWZpbmVkO1xuICBjb25zdCBmb2N1c0NvbG9yID0gZm9jdXMgPyAoaXNCYWNrZ3JvdW5kQ29sb3JBbGlhcyhmb2N1cykgPyBhbGlhc1RvTm9taW5hbFtmb2N1c10gOiBmb2N1cykgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgICAgbm9ybWFsQ29sb3IgPyBiYWNrZ3JvdW5kQ29sb3JTdHlsZXNbYGJhY2tncm91bmRDb2xvci0tJHtub3JtYWxDb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIGhvdmVyQ29sb3IgPyBiYWNrZ3JvdW5kQ29sb3JTdHlsZXNbYGJhY2tncm91bmRDb2xvci1ob3Zlci0tJHtob3ZlckNvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgICAgZm9jdXNDb2xvciA/IGJhY2tncm91bmRDb2xvclN0eWxlc1tgYmFja2dyb3VuZENvbG9yLWZvY3VzLS0ke2ZvY3VzQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkYmFja2dyb3VuZENvbG9yOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWluaGVyaXRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1pbmhlcml0X19fTi1EdFlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXdoaXRlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0td2hpdGVfX18xOGZ4dVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tdHJhbnNwYXJlbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS10cmFuc3BhcmVudF9fX1ZkdC1ZXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MTAwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTEwMF9fX1BSelV0XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5ODBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5ODBfX19hYnl0dVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTYwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTYwX19fUFBBU2xcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk0MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXk0MF9fX3dGQmFsXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MzBfX18tLThNVFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTI1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTI1X19fWUU4UWZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkyMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXkyMF9fXzYwMGpRXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MTBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MTBfX19JU3NjOVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTcwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTcwX19fVi1aR0xcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5ODBBbHBoYTg1X19fN29UWDNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXByaW1hcnlcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1wcmltYXJ5X19fT0huckxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXN1Y2Nlc3NcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1zdWNjZXNzX19fV1VSM3lcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLW5vdGljZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLW5vdGljZV9fX2xWTlJkXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS13YXJuaW5nXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0td2FybmluZ19fX0FyVnZsXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1jcml0aWNhbFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsX19fcC1XYjlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tc3VjY2Vzc1RpbnRfX18yVVAzWVwiLFxuICBcImJhY2tncm91bmRDb2xvci0td2FybmluZ1RpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS13YXJuaW5nVGludF9fX3F3RjA4XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1jcml0aWNhbFRpbnRfX19pSy1qbFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tbGlua1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWxpbmtfX19qNFJqN1wiLFxuICBcImJhY2tncm91bmRDb2xvci0tY29kZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWNvZGVfX19FbS1iSlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0taW5oZXJpdFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWluaGVyaXRfX19teTJScVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0td2hpdGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS13aGl0ZV9fX3RlLWdwXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS10cmFuc3BhcmVudFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXRyYW5zcGFyZW50X19fMUQySWpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MTAwX19fLUpIdTJcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk4MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk4MF9fX3otODVJXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NjBfX19oVWJZM1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTQwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTQwX19fM0EtZTZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkzMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkzMF9fXzctQ0ZqXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjVfX19tSVQ4UVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTIwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTIwX19fb01BY0RcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMF9fX2dSMTkzXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NzBfX19rMkpLTVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVfX19DZGstLVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tcHJpbWFyeVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXByaW1hcnlfX196dGd6QVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tc3VjY2Vzc1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXN1Y2Nlc3NfX19HMzBWSFwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tbm90aWNlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tbm90aWNlX19faldGY0NcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS13YXJuaW5nX19fdm4tQktcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNyaXRpY2FsXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxfX19yNmJaSVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tc3VjY2Vzc1RpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzVGludF9fXzg4TERqXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS13YXJuaW5nVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdUaW50X19fWGk2MkZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNyaXRpY2FsVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNyaXRpY2FsVGludF9fX1YwcTJvXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1saW5rXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tbGlua19fX1g5TEZxXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jb2RlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tY29kZV9fX2xIQ0lnXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1pbmhlcml0XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0taW5oZXJpdF9fX1JKUFdKXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS13aGl0ZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdoaXRlX19feEY4dTNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXRyYW5zcGFyZW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tdHJhbnNwYXJlbnRfX190cXEteFwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTEwMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkxMDBfX194dDF4TFwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTgwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTgwX19fZTI4ampcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk2MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk2MF9fX3d0RHdUXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5NDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5NDBfX19EREhrUFwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTMwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTMwX19fWlZ2RDVcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkyNVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkyNV9fX0FzVjZmXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MjBfX19PTDBaWVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTEwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTEwX19fbWFpemZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk3MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk3MF9fX3ZSbkwyXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5ODBBbHBoYTg1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTgwQWxwaGE4NV9fX1ZoeXVOXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1wcmltYXJ5XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tcHJpbWFyeV9fXzdUemt1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1zdWNjZXNzXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tc3VjY2Vzc19fX255M3psXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ub3RpY2VcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ub3RpY2VfX19vdkZ2MVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0td2FybmluZ1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdhcm5pbmdfX19xbG4ydVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1jcml0aWNhbF9fX1BnREk1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1zdWNjZXNzVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXN1Y2Nlc3NUaW50X19fY3EtRDVcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdhcm5pbmdUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0td2FybmluZ1RpbnRfX19hSHRnQVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxUaW50X19fZUo5TmhcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWxpbmtcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1saW5rX19fVGxSUllcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWNvZGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1jb2RlX19fZmE2NVVcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlcldpZHRoIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQ29ybmVyU3R5bGVzLCBnZXRDb3JuZXJTdHlsZXMgfSBmcm9tIFwiLi9nZXQtY29ybmVyLXN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0U2lkZVN0eWxlcywgdHlwZSBTaWRlU3R5bGVzIH0gZnJvbSBcIi4vZ2V0LXNpZGUtc3R5bGVzXCI7XG5pbXBvcnQgeyBjb21wYWN0IH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuXG5leHBvcnQgdHlwZSBCb3JkZXJDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuZXhwb3J0IHR5cGUgQm9yZGVyQ29sb3IgPSBDb2xvciB8IEJvcmRlckNvbG9yQWxpYXM7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0geyBib3JkZXJQcmltYXJ5OiBcImdyZXk2MFwiIH0gYXMgY29uc3Q7XG5cbmNvbnN0IGlzQm9yZGVyQ29sb3JBbGlhcyA9IChjb2xvcjogQm9yZGVyQ29sb3IpOiBjb2xvciBpcyBCb3JkZXJDb2xvckFsaWFzID0+IGNvbG9yIGluIGFsaWFzVG9Ob21pbmFsO1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGhvdmVyPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogQm9yZGVyQ29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyUHJvcHMgPSB7XG4gIGNvbG9yPzogQm9yZGVyQ29sb3IgfCAkQm9yZGVyQ29sb3JQcm9wcztcbiAgd2lkdGg/OiBCb3JkZXJXaWR0aCB8IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMZWF2ZSB0aGUgbGFzdCBvZiB0aGUgZWxlbWVudCdzIHNpYmxpbmdzIHdpdGhvdXQgdGhlIGJvcmRlciwgc28gdGhhdCBhIHN0YWNrXG4gICAqIG9mIGJvcmRlcmVkIHJvd3MgcmVhZHMgYXMgcm93cyBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIHJhdGhlciB0aGFuIGZyYW1lZC5cbiAgICovXG4gIGV4Y2VwdExhc3Q/OiBib29sZWFuO1xufSAmIFNpZGVTdHlsZXMgJlxuICBDb3JuZXJTdHlsZXM7XG5cbmV4cG9ydCB0eXBlIEJvcmRlclBsdWdpblByb3BzID0geyAkYm9yZGVyPzogJEJvcmRlclByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBib3JkZXJQbHVnaW4gPSBnZXRQbHVnaW48Qm9yZGVyUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGJvcmRlcikge1xuICAgIHJldHVybiB7ICRib3JkZXI6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Q29ybmVyU3R5bGVzKHByb3BzLiRib3JkZXIpLCBnZXRCb3JkZXJTdHlsZXMocHJvcHMuJGJvcmRlcildLFxuICAgICRib3JkZXI6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRCb3JkZXJTdHlsZXMgPSAoeyB3aWR0aCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wLCBjb2xvciwgZXhjZXB0TGFzdCB9OiAkQm9yZGVyUHJvcHMpID0+IHtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSB3aWR0aCA9PT0gdHJ1ZSB8fCAod2lkdGggPT09IHVuZGVmaW5lZCAmJiBjb2xvcikgPyBcInh4c1wiIDogd2lkdGg7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZGlzYWJsZWQgfSA9XG4gICAgYm9yZGVyV2lkdGggJiYgY29sb3IgPT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5vcm1hbDogXCJib3JkZXJQcmltYXJ5XCIgYXMgY29uc3QgfVxuICAgICAgOiB0eXBlb2YgY29sb3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyB7IG5vcm1hbDogY29sb3IgfVxuICAgICAgICA6IChjb2xvciA/PyB7fSk7XG5cbiAgY29uc3Qgbm9ybWFsQ29sb3IgPSBub3JtYWwgJiYgaXNCb3JkZXJDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsO1xuICBjb25zdCBob3ZlckNvbG9yID0gaG92ZXIgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGhvdmVyKSA/IGFsaWFzVG9Ob21pbmFsW2hvdmVyXSA6IGhvdmVyO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGRpc2FibGVkKSA/IGFsaWFzVG9Ob21pbmFsW2Rpc2FibGVkXSA6IGRpc2FibGVkO1xuXG4gIGNvbnN0IHN0eWxlQ2xhc3NlcyA9IGNvbXBhY3QoW1xuICAgIGJvcmRlcldpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX3dpZHRoLS0ke2JvcmRlcldpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgIG5vcm1hbENvbG9yID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX2NvbG9yLS0ke25vcm1hbENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIGhvdmVyQ29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fY29sb3ItLSR7aG92ZXJDb2xvcn0tLWhvdmVyYF0gOiB1bmRlZmluZWQsXG4gICAgZGlzYWJsZWRDb2xvciA/IGJvcmRlclN0eWxlc1tgYm9yZGVyX19jb2xvci0tJHtkaXNhYmxlZENvbG9yfS0tZGlzYWJsZWRgXSA6IHVuZGVmaW5lZCxcbiAgICAuLi5nZXRTaWRlU3R5bGVzKHsgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wIH0pLFxuICAgIGV4Y2VwdExhc3QgPyBib3JkZXJTdHlsZXNbXCJib3JkZXItLWV4Y2VwdC1sYXN0XCJdIDogdW5kZWZpbmVkLFxuICBdKTtcblxuICByZXR1cm4gW3N0eWxlQ2xhc3Nlcywgc3R5bGVDbGFzc2VzLmxlbmd0aCA+IDAgJiYgYm9yZGVyU3R5bGVzW1wiYm9yZGVyX19zdHlsZS0tc29saWRcIl1dO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYm9yZGVyX19zdHlsZS0tc29saWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3N0eWxlLS1zb2xpZF9fXzFReTFKXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0temVyb19fXy1rN1VDXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tc19fX3ZsbXVsXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tbV9fX0VvSHZqXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLW1sX19fa3NLUGVcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fcmFkaXVzLS1sX19fLTU0bnhcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tNTBfX19FYzVjY1wiLFxuICBcImJvcmRlcl9fcmFkaXVzLS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLWZ1bGxfX19mME9rTFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS16ZXJvX19fdUxjTzJcIixcbiAgXCJib3JkZXJfX3dpZHRoLS14eHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS14eHNfX19KMHRaOVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teHNfX19VUmNrSVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS1zX19feDlOVWpcIixcbiAgXCJib3JkZXJfX3dpZHRoLS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tbV9fX0NGOENFXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLWxfX19Zb0I2NVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teGxfX19CQ0xsTlwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXh4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLXh4bF9fXy1kcmdQXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tM3hsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tM3hsX19fZHFtaUZcIixcbiAgXCJib3JkZXJfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS00eGxfX19iRUw5MFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLTV4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLTV4bF9fX3pqMVZYXCIsXG4gIFwiYm9yZGVyX19jb2xvci0taW5oZXJpdFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWluaGVyaXRfX19FMk1Tc1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0taG92ZXJfX19XeW5CUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0tZGlzYWJsZWRfX19xLXRzRVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGVfX19nVDJvZ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3Zlcl9fX1FkcFZiXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkX19faXlUWEtcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50X19fc3dhbUhcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJfX19qVVotelwiLFxuICBcImJvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZF9fX3NpRHJ5XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMDBfX192NWw4M1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0taG92ZXJfX19KMS1PUVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0tZGlzYWJsZWRfX19RaktSUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MF9fX2txNWFUXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MC0taG92ZXJfX19DcHBsVlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5ODAtLWRpc2FibGVkX19fLThQS2xcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjBfX19QOUpNSFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk2MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWhvdmVyX19fQVppY0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTYwLS1kaXNhYmxlZF9fX2djVmREXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwX19fZjZTRHdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwLS1ob3Zlcl9fX1VIZElyXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk0MC0tZGlzYWJsZWRfX180ZURrQ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMF9fX2ZxYnR1XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTMwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMC0taG92ZXJfX19WTkRTUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MzAtLWRpc2FibGVkX19fcHlKT3FcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjVfX19zblZuZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkyNS0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWhvdmVyX19fbmRyZllcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTI1LS1kaXNhYmxlZF9fX29tUEpQXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwX19fZ2JuM1pcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwLS1ob3Zlcl9fX3hSc3djXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkyMC0tZGlzYWJsZWRfX19TVmVBVFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMF9fX1pVNUdhXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMC0taG92ZXJfX19VWmgtZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MTAtLWRpc2FibGVkX19fOVotT1RcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzBfX195cjlpTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk3MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWhvdmVyX19fbDlZVGRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTcwLS1kaXNhYmxlZF9fX1N3UlFpXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODVfX182RGJkU1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0taG92ZXJfX194U2t3QVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0tZGlzYWJsZWRfX195UDRPLVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1wcmltYXJ5X19fZ2Z4Qk9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWhvdmVyX19fcHVIRHBcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWRpc2FibGVkX19fSDVGc0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc19fX1p1cmxTXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1ob3Zlcl9fX1d5LTJNXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1kaXNhYmxlZF9fX1RQM1J2XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlX19fWndRdlRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ub3RpY2UtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlLS1ob3Zlcl9fX01KUVVoXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLW5vdGljZS0tZGlzYWJsZWRfX195VnVpMlwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS13YXJuaW5nX19fTEs2QXpcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWhvdmVyX19fbUFvU0JcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWRpc2FibGVkX19fV2NBSy1cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsX19fR1RZejFcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJfX191TUZqYVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZF9fX0s5Z2w3XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludF9fX1BTUk1uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyX19fVWZKUGdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRfX19Xa09wQVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnRfX19JVFdtTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3Zlcl9fX0pjLU5uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkX19fdXF6Qm9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRfX19PUXV4dFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsVGludC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWhvdmVyX19fbFdhOURcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tY3JpdGljYWxUaW50LS1kaXNhYmxlZF9fX2xZaGg0XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWxpbmtfX19pWWVGa1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0taG92ZXJfX180eVJKUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0tZGlzYWJsZWRfX18wazlkQlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jb2RlX19fOE9zRmlcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWhvdmVyX19fWjVzNWRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWRpc2FibGVkX19fdURRWk1cIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS16ZXJvXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0temVyb19fX1ZLUnEtXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0teHhzX19fOHppN1RcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhzX19fUk5FSzJcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tc19fX2FWbjFXXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLW1fX19CNjE0alwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS1sX19fLW9lUFBcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhsX19fWkpjNklcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS14eGxfX19NbnJIelwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLTN4bF9fXzV4Sy0tXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tNHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tNHhsX19fcEVEdGNcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS01eGxfX19NRnZmaFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1pbmhlcml0X19fQ3IxbmFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS13aGl0ZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdoaXRlX19fdS11UWJcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXRyYW5zcGFyZW50X19fUHNNbXhcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwMF9fX1djOXRMXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwX19fZUhqekZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBfX190U0F0ZVwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXk0MF9fX0hpcmdmXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwX19fQkJyQlFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVfX19VSFZaWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXkyMF9fXzFsdXBQXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwX19fRTJHZlRcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBfX19EYkMyR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fa0I5LXZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1wcmltYXJ5XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tcHJpbWFyeV9fXzUxMWprXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NfX183OS11alwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLW5vdGljZV9fXy1kT0QwXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdfX19UMzVrWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tY3JpdGljYWxfX19zLXF2a1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1RpbnRfX19QYTBOR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1RpbnRfX18yZVVRVFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludF9fX0hKQW8yXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWxpbmtfX19LWUZHS1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1jb2RlX19fdktPS3dcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXplcm9fX19ybERJblwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14eHNfX18tejc5YVwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXhzX19fd1pWaGpcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXNfX19NdFlUNlwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X193aWR0aC0tbV9fX1NEOTd3XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS1sX19fcVNJMEVcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14bF9fXzA1bjAwXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXh4bF9fXy1hRXd2XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTN4bF9fX0R1MFJvXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTR4bF9fXzJaQ1hrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTV4bF9fX1NwNDhrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0X19fOXlQZUlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13aGl0ZV9fX2hJT0JkXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tdHJhbnNwYXJlbnRfX19veElOSlwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMF9fX2FhU25hXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk4MF9fXzVQVDVqXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk2MF9fX29OVy1VXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk0MF9fXzJKd2k5XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkzMF9fX1Q2aHR4XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyNV9fX1FiRlVKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyMF9fX2VzTVFNXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkxMF9fX1owUXpmXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk3MF9fX3RrekFKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fajQ1VU5cIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlfX19ISWsyQVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc19fX1JJd2FIXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLW5vdGljZV9fX3ZVTGFUXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nX19fWTJpUGlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1jcml0aWNhbF9fX1htNnRRXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1RpbnRfX19tMW52WVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXdhcm5pbmdUaW50X19fbi1oeEZcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY3JpdGljYWxUaW50X19fNFZKTjhcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWxpbmtfX19IMnJlM1wiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY29kZV9fX1VDZE0wXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXplcm9fX19QbEFCTFwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXh4c19fX1pGbS1VXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14c19fX2hEelNzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXNfX19JV3QtdVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS1tX19fZjFyLXNcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tbF9fXzBIdmwxXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14bF9fX3NTUnRzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0teHhsX19fTnVCZ0ZcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxfX19HakxZVVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLTR4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLTR4bF9fX0J2SldQXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tNXhsX19fckNlREJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0taW5oZXJpdF9fXzczZHFWXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0td2hpdGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13aGl0ZV9fX0RabWo2XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS10cmFuc3BhcmVudF9fX3FrTmdGXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMDBfX19YMnY3eFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MF9fX3RuTWo1XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwX19fVU9XMG5cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBfX19jN3VjMFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMF9fX1k4NUM0XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1X19fa3YyTm1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBfX192Ty1tSlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMF9fX0ZhLWh5XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwX19faC1Da1ZcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2lyeG9IXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tcHJpbWFyeVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXByaW1hcnlfX19KLXI1SlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzX19fZnhadlJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VfX19JSUE1UlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nX19fbHNaRy1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWNyaXRpY2FsX19fQjdMNS1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fQXN2dGNcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdUaW50X19fNE9QZk9cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRfX194MlVMUVwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1saW5rX19fUjJYRHVcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jb2RlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tY29kZV9fX0VyOWhiXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0temVyb19fXzEtRk0tXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14eHNfX19vakFhcFwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14c19fX3oyWElGXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tc19fX0RxWGJjXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbV9fXzRqUHU1XCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbF9fX2xQYVJLXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXhsX19fTWMtLVJcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXh4bF9fX0tYT1JaXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS0zeGxfX180ZllJRVwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tNHhsX19fY2RVbFdcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLTV4bF9fXzdsOUgwXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0taW5oZXJpdF9fX3FkNGtEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlX19fLXJ6czdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRfX191VVVFeFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkxMDBfX19RRGJWMlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwX19fN2hWeThcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk2MF9fX3E5VHMyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5NDBfX195SXIwSlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTMwX19faXRVVXNcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyNV9fX3o5RWdEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5MjBfX19IcXJKblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTEwX19feXRaUE5cIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk3MF9fX0VveVZXXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwQWxwaGE4NV9fXzJHSVcyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tcHJpbWFyeV9fX0lOQzh5XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tc3VjY2Vzc19fXzEyS2l1XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ub3RpY2VfX19taEpBblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdhcm5pbmdfX191VjV0V1wiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbF9fX0E2SmlPXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50X19fZ09yWWpcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRfX19ON1VjVFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tY3JpdGljYWxUaW50X19fYS1mYUdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1saW5rX19fbXdSS3dcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jb2RlX19fdUpXRkhcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS16ZXJvX19fZGxzdFZcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1zX19fdm81ZWxcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1tX19fR0lFY3RcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxfX19tRWNEdlwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWxfX19yZy1EMFwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS01MF9fX1hsbEdzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tZnVsbF9fXzVaSXY4XCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0temVyb19fX084ZEUzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tc19fX254THRMXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbV9fX1NsNVJSXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sX19fQW9RMGJcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1sX19fNTJKb2xcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBfX183LXdPR1wiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLWZ1bGxfX19MQmFQNlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS16ZXJvX19fb1FCZG1cIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tc19fX3pGSUwzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1fX19LTlNjVFwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbWxfX192dDd4MlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1sX19fazhwaWtcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLTUwX19fZjJYVHVcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tZnVsbF9fX2VIajZzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLXplcm9fX19QMVl0d1wiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1zX19fSC1sWGVcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BMZWZ0LS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tbV9fXzNMUlIwXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1tbF9fX2lndjB3XCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLWxfX18zczJDSlwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLTUwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tNTBfX193Tll3UVwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1mdWxsX19fQ2Z6LVJcIixcbiAgXCJib3JkZXItLWV4Y2VwdC1sYXN0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyLS1leGNlcHQtbGFzdF9fXzIyWXNCXCJcbn07IiwgImltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlclJhZGl1c1NpemUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcm5lclN0eWxlcyB7XG4gIHJhZGl1cz86IEJvcmRlclJhZGl1c1NpemUgfCBib29sZWFuO1xuICByYWRpdXNUb3BSaWdodD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c0JvdHRvbVJpZ2h0PzogQm9yZGVyUmFkaXVzU2l6ZTtcbiAgcmFkaXVzQm90dG9tTGVmdD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c1RvcExlZnQ/OiBCb3JkZXJSYWRpdXNTaXplO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29ybmVyU3R5bGVzID0gKHN0eWxlczogQ29ybmVyU3R5bGVzKSA9PiB7XG4gIGNvbnN0IHsgcmFkaXVzLCByYWRpdXNUb3BSaWdodCwgcmFkaXVzQm90dG9tUmlnaHQsIHJhZGl1c0JvdHRvbUxlZnQsIHJhZGl1c1RvcExlZnQgfSA9IHN0eWxlcztcblxuICBpZiAocmFkaXVzKSB7XG4gICAgY29uc3QgYm9yZGVyUmFkaXVzU2l6ZSA9IHJhZGl1cyA9PT0gdHJ1ZSA/IFwic1wiIDogcmFkaXVzO1xuXG4gICAgcmV0dXJuIGJvcmRlclJhZGl1c1NpemUgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fcmFkaXVzLS0ke2JvcmRlclJhZGl1c1NpemV9YF0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHJhZGl1c1RvcFJpZ2h0ID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJSYWRpdXNUb3BSaWdodC0tJHtyYWRpdXNUb3BSaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICByYWRpdXNCb3R0b21SaWdodCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLSR7cmFkaXVzQm90dG9tUmlnaHR9YF0gOiB1bmRlZmluZWQsXG4gICAgcmFkaXVzQm90dG9tTGVmdCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tJHtyYWRpdXNCb3R0b21MZWZ0fWBdIDogdW5kZWZpbmVkLFxuICAgIHJhZGl1c1RvcExlZnQgPyBib3JkZXJTdHlsZXNbYGJvcmRlclJhZGl1c1RvcExlZnQtLSR7cmFkaXVzVG9wTGVmdH1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG4iLCAiaW1wb3J0IGJvcmRlclN0eWxlcyBmcm9tIFwiLi9ib3JkZXIubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgQm9yZGVyU2lkZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7IGNhcGl0YWxpemUgYXMgbG9kYXNoQ2FwaXRhbGl6ZSB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaWRlU3R5bGVzIHtcbiAgdG9wPzogQm9yZGVyU2lkZTtcbiAgcmlnaHQ/OiBCb3JkZXJTaWRlO1xuICBib3R0b20/OiBCb3JkZXJTaWRlO1xuICBsZWZ0PzogQm9yZGVyU2lkZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNpZGVTdHlsZXMgPSAoc2lkZXM6IFNpZGVTdHlsZXMpID0+IFtcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwidG9wXCIsIHNpZGVzKSxcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwicmlnaHRcIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJib3R0b21cIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJsZWZ0XCIsIHNpZGVzKSxcbl07XG5cbmNvbnN0IGdldFNwZWNpZmljU2lkZVN0eWxlcyA9IChzaWRlOiBrZXlvZiBTaWRlU3R5bGVzLCBzaWRlczogU2lkZVN0eWxlcykgPT4ge1xuICBjb25zdCB7IHdpZHRoLCBjb2xvciB9ID0gc2lkZXNbc2lkZV0gPz8ge307XG4gIGNvbnN0IHNpZGVOYW1lID0gY2FwaXRhbGl6ZShzaWRlKTtcblxuICByZXR1cm4gW1xuICAgIHdpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXIke3NpZGVOYW1lfV9fd2lkdGgtLSR7d2lkdGh9YF0gOiB1bmRlZmluZWQsXG4gICAgY29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlciR7c2lkZU5hbWV9X19jb2xvci0tJHtjb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG5cbmNvbnN0IGNhcGl0YWxpemUgPSA8VCBleHRlbmRzIHN0cmluZz4odGFyZ2V0OiBUKSA9PiBsb2Rhc2hDYXBpdGFsaXplKHRhcmdldCkgYXMgQ2FwaXRhbGl6ZTxUPjtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGZvbnRTdHlsZXMgZnJvbSBcIi4vZm9udC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBGb250U2l6ZSA9IFwieHhzXCIgfCBcInhzXCIgfCBcInNcIiB8IFwibVwiIHwgXCJsXCIgfCBcInhsXCIgfCBcInh4bFwiIHwgXCIzeGxcIiB8IFwiNHhsXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRCb2xkID0gXCI2MDBcIjtcblxuZXhwb3J0IHR5cGUgRm9udExpbmVIZWlnaHQgPSBcIm5vbmVcIiB8IFwidGlnaHRcIiB8IFwibm9ybWFsXCIgfCBcImxvb3NlXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRQbHVnaW5Qcm9wcyA9IHtcbiAgJGZvbnQ/OlxuICAgIHwgYm9vbGVhblxuICAgIHwge1xuICAgICAgICBzaXplPzogRm9udFNpemU7XG4gICAgICAgIGl0YWxpYz86IGJvb2xlYW47XG4gICAgICAgIGJvbGQ/OiBib29sZWFuIHwgRm9udEJvbGQ7XG4gICAgICAgIGxpbmVIZWlnaHQ/OiBGb250TGluZUhlaWdodDtcbiAgICAgICAgZm9yY2VXcmFwPzogYm9vbGVhbjtcbiAgICAgICAgbm9XcmFwPzogYm9vbGVhbjtcbiAgICAgICAgdXBwZXJjYXNlPzogYm9vbGVhbjtcbiAgICAgICAgdW5kZXJsaW5lPzogYm9vbGVhbjtcbiAgICAgICAgdGV4dE92ZXJmbG93PzogXCJjbGlwXCIgfCBcImVsbGlwc2lzXCIgfCBcImRlZmF1bHRcIjtcbiAgICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZm9udFBsdWdpbiA9IGdldFBsdWdpbjxGb250UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGZvbnQpIHtcbiAgICByZXR1cm4geyAkZm9udDogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB7XG4gICAgc2l6ZSA9IHVuZGVmaW5lZCxcbiAgICBib2xkID0gZmFsc2UsXG4gICAgbGluZUhlaWdodCA9IHVuZGVmaW5lZCxcbiAgICBub1dyYXAgPSBmYWxzZSxcbiAgICB1cHBlcmNhc2UgPSBmYWxzZSxcbiAgICBpdGFsaWMgPSBmYWxzZSxcbiAgICBmb3JjZVdyYXAgPSBmYWxzZSxcbiAgICB1bmRlcmxpbmUgPSBmYWxzZSxcbiAgICB0ZXh0T3ZlcmZsb3cgPSBcImRlZmF1bHRcIixcbiAgfSA9IHByb3BzLiRmb250ID09PSB0cnVlID8ge30gOiBwcm9wcy4kZm9udDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgICBzaXplID8gZm9udFN0eWxlc1tgZm9udF9fc2l6ZS0tJHtzaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgYm9sZCA9PT0gdHJ1ZSA/IGZvbnRTdHlsZXNbXCJmb250LS1ib2xkXCJdIDogYm9sZCA/IGZvbnRTdHlsZXNbYGZvbnQtLXdlaWdodC0ke2JvbGR9YF0gOiB1bmRlZmluZWQsXG4gICAgICBsaW5lSGVpZ2h0ID8gZm9udFN0eWxlc1tgZm9udF9fbGluZS1oZWlnaHQtLSR7bGluZUhlaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIHRleHRPdmVyZmxvdyA9PT0gXCJkZWZhdWx0XCIgPyB1bmRlZmluZWQgOiBmb250U3R5bGVzW2Bmb250LS10ZXh0LW92ZXJmbG93LS0ke3RleHRPdmVyZmxvd31gXSxcbiAgICAgIHtcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS1uby13cmFwXCJdXTogbm9XcmFwLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLWZvcmNlLXdyYXBcIl1dOiBmb3JjZVdyYXAsXG4gICAgICAgIFtmb250U3R5bGVzW1wiZm9udC0taXRhbGljXCJdXTogaXRhbGljLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLXVwcGVyY2FzZVwiXV06IHVwcGVyY2FzZSxcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS11bmRlcmxpbmVcIl1dOiB1bmRlcmxpbmUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgJGZvbnQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ZvbnQvZm9udC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZvbnRfX3NpemUtLXh4c1wiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14eHNfX19LSjJRLVwiLFxuICBcImZvbnRfX3NpemUtLXhzXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXhzX19feEVhVTlcIixcbiAgXCJmb250X19zaXplLS1zXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXNfX19UYm5NbFwiLFxuICBcImZvbnRfX3NpemUtLW1cIjogXCJmb250LW1vZHVsZV9fZm9udF9fc2l6ZS0tbV9fX2ZESkFqXCIsXG4gIFwiZm9udF9fc2l6ZS0tbFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS1sX19fdUtjdWtcIixcbiAgXCJmb250X19zaXplLS14bFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14bF9fX1JlaG9RXCIsXG4gIFwiZm9udF9fc2l6ZS0teHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXh4bF9fX0Nnb0tQXCIsXG4gIFwiZm9udF9fc2l6ZS0tM3hsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTN4bF9fX3NDSWV6XCIsXG4gIFwiZm9udF9fc2l6ZS0tNHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTR4bF9fX0E1a3NlXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLW5vbmVcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vbmVfX18xc0k5S1wiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS10aWdodFwiOiBcImZvbnQtbW9kdWxlX19mb250X19saW5lLWhlaWdodC0tdGlnaHRfX19yLUVCOVwiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS1ub3JtYWxcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vcm1hbF9fX3JKNFZOXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLWxvb3NlXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX2xpbmUtaGVpZ2h0LS1sb29zZV9fX2RwelMtXCIsXG4gIFwiZm9udC0tYm9sZFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1ib2xkX19fYmplLWJcIixcbiAgXCJmb250LS13ZWlnaHQtNjAwXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnQtLXdlaWdodC02MDBfX19FZ2R6bVwiLFxuICBcImZvbnQtLW5vLXdyYXBcIjogXCJmb250LW1vZHVsZV9fZm9udC0tbm8td3JhcF9fX3FiUlJPXCIsXG4gIFwiZm9udC0tZm9yY2Utd3JhcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1mb3JjZS13cmFwX19fT0dDRnpcIixcbiAgXCJmb250LS11cHBlcmNhc2VcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdXBwZXJjYXNlX19fdlFYbW5cIixcbiAgXCJmb250LS1pdGFsaWNcIjogXCJmb250LW1vZHVsZV9fZm9udC0taXRhbGljX19fSkg0VFpcIixcbiAgXCJmb250LS11bmRlcmxpbmVcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdW5kZXJsaW5lX19fZDRvbkxcIixcbiAgXCJmb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc1wiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc19fX0hxZlgtXCIsXG4gIFwiZm9udC0tdGV4dC1vdmVyZmxvdy0tY2xpcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1jbGlwX19fOTZ4QjlcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYm94LXNoYWRvdy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBCb3hTaGFkb3dQbHVnaW5Qcm9wcyA9IHtcbiAgJGJveFNoYWRvdz86IGJvb2xlYW4gfCBcImVsZXZhdGVkXCIgfCBcInN1YnRsZVwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGJveFNoYWRvd1BsdWdpbiA9IGdldFBsdWdpbjxCb3hTaGFkb3dQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kYm94U2hhZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRib3hTaGFkb3c6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdmFyaWFudCA9IHByb3BzLiRib3hTaGFkb3cgPT09IHRydWUgPyBcImVsZXZhdGVkXCIgOiBwcm9wcy4kYm94U2hhZG93O1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHN0eWxlc1tgYm94LXNoYWRvdy0tJHt2YXJpYW50fWBdXSxcbiAgICAkYm94U2hhZG93OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3gtc2hhZG93L2JveC1zaGFkb3cubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJib3gtc2hhZG93LS1lbGV2YXRlZFwiOiBcImJveC1zaGFkb3ctbW9kdWxlX19ib3gtc2hhZG93LS1lbGV2YXRlZF9fX2phaDdmXCIsXG4gIFwiYm94LXNoYWRvdy0tc3VidGxlXCI6IFwiYm94LXNoYWRvdy1tb2R1bGVfX2JveC1zaGFkb3ctLXN1YnRsZV9fX1ZvNnhNXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzID0geyAkbm9Qb2ludGVyRXZlbnRzPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3Qgbm9Qb2ludGVyRXZlbnRzUGx1Z2luID0gZ2V0UGx1Z2luPE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3N0eWxlc1tcIm5vLXBvaW50ZXItZXZlbnRzXCJdXTogcHJvcHMuJG5vUG9pbnRlckV2ZW50cyB9XSxcbiAgJG5vUG9pbnRlckV2ZW50czogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibm8tcG9pbnRlci1ldmVudHNcIjogXCJuby1wb2ludGVyLWV2ZW50cy1tb2R1bGVfX25vLXBvaW50ZXItZXZlbnRzX19fN21GMGJcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU2ltcGxpZmllZCB0eXBlIHNpbmNlIFJlZkNhbGxiYWNrIGZyb20gXCJyZWFjdFwiIGNhdXNlcyBVTkRFRklORURfVk9JRF9PTkxZIGVycm9yXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQ29uZnVzaW5nVm9pZFR5cGU6IHZvaWQgdHlwaW5nIHJlcXVpcmVkXG50eXBlIFJlZkNhbGxiYWNrPFQ+ID0gKGluc3RhbmNlOiBUIHwgbnVsbCkgPT4gdW5kZWZpbmVkIHwgdm9pZCB8ICgoKSA9PiBhbnkpO1xuXG5leHBvcnQgdHlwZSBSZWZMaWtlPFQ+ID0gUmVmQ2FsbGJhY2s8VD4gfCBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PFQgfCBudWxsPiB8IFJlYWN0LlJlZk9iamVjdDxUPiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgJFJlZlByb3A8VD4gPSBSZWZMaWtlPFQ+IHwgJFJlZlByb3A8VD5bXTtcblxuZXhwb3J0IHR5cGUgUmVmUGx1Z2luUHJvcHM8VD4gPSB7XG4gICRyZWY/OiAkUmVmUHJvcDxUPjtcbiAgcmVmPzogUmVmTGlrZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlZlBsdWdpbjxUPiA9IFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPiwgdW5rbm93bj47XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZQbHVnaW48VCA9IEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPj4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkcmVmIH0gPSBwcm9wcztcbiAgICBjb25zdCBwcmV2UmVmcyA9IHVzZVJlZihuZXcgU2V0PFJlZkxpa2U8VD4+KCkpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8VCB8IG51bGw+KG51bGwpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IFdlIGRvIG5vdCB3YW50IHRvIHJ1biB0aGlzIG11bHRpcGxlIHRpbWVzXG4gICAgY29uc3QgcmVmID0gdXNlQ2FsbGJhY2soKGN1cnJlbnQ6IFQpID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0UmVmcyA9IGZsYXR0ZW5SZWZzKCRyZWYpO1xuXG4gICAgICBmaXJzdFJlZnMuZm9yRWFjaChoYW5kbGVSZWZzRm9yKGN1cnJlbnQpKTtcbiAgICAgIHByZXZSZWZzLmN1cnJlbnQgPSBmaXJzdFJlZnM7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBjdXJyZW50O1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBwcmV2UmVmcy5jdXJyZW50LmZvckVhY2goaGFuZGxlUmVmc0ZvcjxUPihudWxsKSk7XG4gICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBmaXJzdFJlbmRlciA9IHVzZVJlZih0cnVlKTtcblxuICAgIGlmICghZmlyc3RSZW5kZXIuY3VycmVudCkge1xuICAgICAgY29uc3QgY3VycmVudFJlZnMgPSBmbGF0dGVuUmVmcygkcmVmKTtcbiAgICAgIGNvbnN0IGFkZGVkUmVmcyA9IGN1cnJlbnRSZWZzLmRpZmZlcmVuY2UocHJldlJlZnMuY3VycmVudCk7XG4gICAgICBjb25zdCByZW1vdmVkUmVmcyA9IHByZXZSZWZzLmN1cnJlbnQuZGlmZmVyZW5jZShjdXJyZW50UmVmcyk7XG5cbiAgICAgIGFkZGVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4oZWxlbWVudFJlZi5jdXJyZW50KSk7XG4gICAgICByZW1vdmVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4obnVsbCkpO1xuICAgICAgcHJldlJlZnMuY3VycmVudCA9IGN1cnJlbnRSZWZzO1xuICAgIH1cblxuICAgIGZpcnN0UmVuZGVyLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWYsXG4gICAgICAkcmVmOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IGZsYXR0ZW5SZWZzID0gPFQsPihyZWZzOiAkUmVmUHJvcDxUPik6IFNldDxSZWZMaWtlPFQ+PiA9PlxuICBuZXcgU2V0KChbcmVmc10uZmxhdChJbmZpbml0eSBhcyAxKSBhcyBBcnJheTxOb25OdWxsYWJsZTxSZWZMaWtlPFQ+Pj4pLmZpbHRlcihpc0RlZmluZWQpKTtcblxuY29uc3QgaGFuZGxlUmVmc0ZvciA9XG4gIDxULD4odmFsdWU6IFQgfCBudWxsKSA9PlxuICAocmVmczogJFJlZlByb3A8VD4pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzKSkge1xuICAgICAgcmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3IodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWZzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlZnModmFsdWUpO1xuICAgIH0gZWxzZSBpZiAocmVmcykge1xuICAgICAgKHJlZnMgYXMgTXV0YWJsZVJlZk9iamVjdDxUIHwgbnVsbD4pLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gIH07XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjc3NOYW1lcywgdHlwZSBJQ2xhc3NOYW1lIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lUGx1Z2luUHJvcHMgPSB7ICRjbGFzc05hbWU/OiBJQ2xhc3NOYW1lOyBjbGFzc05hbWU/OiBzdHJpbmcgfTtcblxubGV0IHNob3dDbHV0dGVyID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IGNsYXNzTmFtZVBsdWdpbiA9IGdldFBsdWdpbjxDbGFzc05hbWVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGNzc05hbWVzKHByb3BzLmNsYXNzTmFtZSwgcHJvcHMuJGNsYXNzTmFtZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oY2xhc3NOYW1lID8geyBjbGFzc05hbWU6IHNob3dDbHV0dGVyID8gY2xhc3NOYW1lIDogcmVtb3ZlQ2x1dHRlcihjbGFzc05hbWUpIH0gOiB7fSksXG4gICAgJGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmNvbnN0IHJlbW92ZUNsdXR0ZXIgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+XG4gIGNsYXNzTmFtZS5yZXBsYWNlKC9fX18uKj8oPz1cXHN8JCkvZywgXCJcIikucmVwbGFjZSgvXFxiW2EtekEtWjAtOS1dKy1tb2R1bGVfXy9nLCBcIlwiKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyA9ICgpID0+IHtcbiAgc2hvd0NsdXR0ZXIgPSBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24gPSAoKSA9PiB7XG4gIHNob3dDbHV0dGVyID0gdHJ1ZTtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCByZWxhdGl2ZVN0eWxlcyBmcm9tIFwiLi9yZWxhdGl2ZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBSZWxhdGl2ZVBsdWdpblByb3BzID0geyAkcmVsYXRpdmU/OiBib29sZWFuOyAkZml4ZWQ/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCByZWxhdGl2ZVBsdWdpbiA9IGdldFBsdWdpbjxSZWxhdGl2ZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW1xuICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgeyBbcmVsYXRpdmVTdHlsZXMucmVsYXRpdmVdOiAhIXByb3BzLiRyZWxhdGl2ZSwgW3JlbGF0aXZlU3R5bGVzLmZpeGVkXTogISFwcm9wcy4kZml4ZWQgfSxcbiAgXSxcbiAgJGZpeGVkOiB1bmRlZmluZWQsXG4gICRyZWxhdGl2ZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicmVsYXRpdmVcIjogXCJyZWxhdGl2ZS1tb2R1bGVfX3JlbGF0aXZlX19fa3dNNXFcIixcbiAgXCJmaXhlZFwiOiBcInJlbGF0aXZlLW1vZHVsZV9fZml4ZWRfX19Dc1hIRFwiXG59OyIsICJleHBvcnQgdHlwZSBEcmFnZ2FibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyYWdnYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIGl0ZW06IFQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcm9wcGFibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyb3BwYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIG9uRHJvcDogKGl0ZW06IFQpID0+IHZvaWQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcmFnZ2FibGVDb250ZXh0PERyYWdnZWRJdGVtPiA9IHtcbiAgZHJhZ2dhYmxlOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IE5vbk51bGxhYmxlPERyYWdnYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltgJGRyYWdnYWJsZWBdPjtcbiAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+IE5vbk51bGxhYmxlPERyb3BwYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltcIiRkcm9wcGFibGVcIl0+O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERyYWdnYWJsZUNvbnRleHQgPSA8RHJhZ2dlZEl0ZW0+KCk6IERyYWdnYWJsZUNvbnRleHQ8RHJhZ2dlZEl0ZW0+ID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBkcmFnZ2FibGU6IChpdGVtOiBEcmFnZ2VkSXRlbSkgPT4gKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICBpdGVtLFxuICAgIH0pLFxuXG4gICAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+ICh7XG4gICAgICBjb250ZXh0LFxuICAgICAgb25Ecm9wLFxuICAgIH0pLFxuICB9O1xuXG4gIHJldHVybiBjb250ZXh0O1xufTtcbiIsICJpbXBvcnQgeyBnZXRGZWF0dXJlIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJJbmplY3RhYmxlc0Zyb21Nb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMgZnJvbSBcIi4vKiovKi5pbmplY3RhYmxlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50Q29tcG9uZW50RmVhdHVyZSA9IGdldEZlYXR1cmUoe1xuICBpZDogXCJlbGVtZW50LWNvbXBvbmVudFwiLFxuICByZWdpc3RlcjogKGRpKSA9PiByZWdpc3RlckluamVjdGFibGVzRnJvbU1vZHVsZXMoZGksIG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMpLFxuICAvLyBObyBmZWF0dXJlIGRlcGVuZGVuY2llczogYSBkZXNpZ24gc3lzdGVtIGV2ZXJ5b25lIG1heSBpbnN0YWxsIGNhbm5vdCBkcmFnXG4gIC8vIExlbnMgZmVhdHVyZXMgaW50byB0aGUgY2xvc3VyZS4gVGhlIGNsb2NrIHRoZSBob3ZlcmFibGUgcGx1Z2luIG5lZWRzIGlzXG4gIC8vIGxvY2FsLCBhbmQgdGhlIHBsYXRmb3JtIGlzIHJlYWQgZGlyZWN0bHkuXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5cbi8qKlxuICogV2hldGhlciB0aGUga2V5Ym9hcmQgY29udmVudGlvbnMgb2YgbWFjT1MgYXBwbHkuXG4gKlxuICogUmVhZCBmcm9tIHRoZSBicm93c2VyIHJhdGhlciB0aGFuIGZyb20gYHByb2Nlc3NgIG9yIHRoZSB2YXJzIGZlYXR1cmU6IHRoaXMgaXNcbiAqIGEgcmVuZGVyZXItb25seSBkZXNpZ24gc3lzdGVtLCBpdCBtYXkgbm90IGRlcGVuZCBvbiBhIGZlYXR1cmUgcGFja2FnZSwgYW5kXG4gKiBgcHJvY2Vzc2AgaXMgbm90IHRoZXJlIHRvIHJlYWQgb25jZSB0aGUgcmVuZGVyZXIgc3RvcHMgcnVubmluZyB3aXRoIG5vZGVcbiAqIGludGVncmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgaXNNYWNJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpcy1tYWNcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4ge1xuICAgIGNvbnN0IHsgdXNlckFnZW50RGF0YSwgcGxhdGZvcm0sIHVzZXJBZ2VudCB9ID0gbmF2aWdhdG9yIGFzIE5hdmlnYXRvciAmIHtcbiAgICAgIHJlYWRvbmx5IHVzZXJBZ2VudERhdGE/OiB7IHJlYWRvbmx5IHBsYXRmb3JtPzogc3RyaW5nIH07XG4gICAgfTtcblxuICAgIHJldHVybiAvbWFjL2kudGVzdCh1c2VyQWdlbnREYXRhPy5wbGF0Zm9ybSA/PyBwbGF0Zm9ybSA/PyB1c2VyQWdlbnQgPz8gXCJcIik7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYXRjaGVzIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHsgaXNNYWNJbmplY3RhYmxlIH0gZnJvbSBcIi4vaXMtbWFjLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwib24tcmlnaHQtdHJpZ2dlclwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBpc01hYyA9IGRpLmluamVjdChpc01hY0luamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+IG9uUmlnaHRUcmlnZ2VyRm9yKGlzTWFjKCkgPyBpc01hY29zU2hvcnRjdXQgOiBpc0xpbnV4T3JXaW5kb3dzU2hvcnRjdXQpO1xuICB9LFxufSk7XG5cbmNvbnN0IG9uUmlnaHRUcmlnZ2VyRm9yID1cbiAgPFQ+KGNiOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8VD4pID0+IGJvb2xlYW4pID0+XG4gIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxUPiwgY2FsbGJhY2s6IFJlYWN0LktleWJvYXJkRXZlbnRIYW5kbGVyPFQ+KSA9PiB7XG4gICAgaWYgKGNiKGV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbmNvbnN0IGlzTWFjb3NTaG9ydGN1dCA9IG1hdGNoZXMoe1xuICBzaGlmdEtleTogZmFsc2UsXG4gIGFsdEtleTogZmFsc2UsXG4gIGN0cmxLZXk6IGZhbHNlLFxuICBtZXRhS2V5OiB0cnVlLFxuICBjb2RlOiBcIkVudGVyXCIsXG59KTtcblxuY29uc3QgaXNMaW51eE9yV2luZG93c1Nob3J0Y3V0ID0gbWF0Y2hlcyh7XG4gIHNoaWZ0S2V5OiBmYWxzZSxcbiAgYWx0S2V5OiBmYWxzZSxcbiAgY3RybEtleTogdHJ1ZSxcbiAgbWV0YUtleTogZmFsc2UsXG4gIGNvZGU6IFwiRW50ZXJcIixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG1ha2VTdXJlRHJhZ0FuZERyb3BFdmVudHNIYXZlVGltZVRvSGFwcGVuSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwibWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW5cIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4gKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0sIDUwKTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBOYXZpZ2FibGVFbnRyeSA9IHtcbiAgcmVhZG9ubHkgaXRlbTogdW5rbm93bjtcbiAgcmVhZG9ubHkgb3JkZXJOdW1iZXI6IG51bWJlcjtcbiAgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG59O1xuXG50eXBlIE5hdmlnYWJsZUNvbnRleHQgPSBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8YW55PjtcblxuLyoqXG4gKiBUaGUgbWVtYmVycyBvZiBldmVyeSBrZXlib2FyZC1uYXZpZ2FibGUgY29udGV4dCwgdGhlIG9yZGVyIHRoZSBjb250ZXh0cyBhcHBlYXJlZCBpbiwgYW5kIHdoaWNoXG4gKiBtZW1iZXIgb2YgZWFjaCBoYWQgZm9jdXMuIEZvY3VzIGJlbG9uZ3MgdG8gdGhlIGNvbnRleHQgdGhhdCBhcHBlYXJlZCBsYXN0OyB3aGVuIGl0IGdvZXMgYXdheSwgdGhlXG4gKiBwcmV2aW91cyBvbmUgdGFrZXMgaXQgYmFjayBcdTIwMTQgYXQgdGhlIG1lbWJlciBpdCB3YXMgbGVmdCBvbiwgd2hpY2ggaXMgd2hhdCBtYWtlcyBzdGVwcGluZyBpbnRvXG4gKiBzb21ldGhpbmcgYW5kIGJhY2sgb3V0IG9mIGl0IGxhbmQgd2hlcmUgaXQgc3RhcnRlZCByYXRoZXIgdGhhbiBhdCB0aGUgYmVnaW5uaW5nLlxuICovXG5leHBvcnQgY29uc3Qga2V5Ym9hcmROYXZpZ2F0aW9uU3RhdGVJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJrZXlib2FyZC1uYXZpZ2F0aW9uLXN0YXRlXCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IHtcbiAgICBjb25zdCBlbnRyaWVzQnlDb250ZXh0ID0gbmV3IE1hcDxOYXZpZ2FibGVDb250ZXh0LCBTZXQ8TmF2aWdhYmxlRW50cnk+PigpO1xuICAgIGNvbnN0IGl0ZW1JbkZvY3VzQnlDb250ZXh0ID0gbmV3IE1hcDxOYXZpZ2FibGVDb250ZXh0LCB1bmtub3duPigpO1xuICAgIGNvbnN0IGNvbnRleHRTdGFjazogTmF2aWdhYmxlQ29udGV4dFtdID0gW107XG5cbiAgICBjb25zdCBlbnRyaWVzT2YgPSAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBlbnRyaWVzQnlDb250ZXh0LmdldChjb250ZXh0KTtcblxuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZztcbiAgICAgIH1cblxuICAgICAgY29uc3QgY3JlYXRlZCA9IG5ldyBTZXQ8TmF2aWdhYmxlRW50cnk+KCk7XG5cbiAgICAgIGVudHJpZXNCeUNvbnRleHQuc2V0KGNvbnRleHQsIGNyZWF0ZWQpO1xuXG4gICAgICByZXR1cm4gY3JlYXRlZDtcbiAgICB9O1xuXG4gICAgcmV0dXJuICgpID0+ICh7XG4gICAgICBzb3J0ZWRFbnRyaWVzT2Y6IChjb250ZXh0OiBOYXZpZ2FibGVDb250ZXh0KSA9PlxuICAgICAgICBbLi4uZW50cmllc09mKGNvbnRleHQpXS5zb3J0KChhLCBiKSA9PiBhLm9yZGVyTnVtYmVyIC0gYi5vcmRlck51bWJlciksXG5cbiAgICAgIGNvbnRleHRJbkZvY3VzOiAoKSA9PiBjb250ZXh0U3RhY2suYXQoLTEpLFxuXG4gICAgICBpdGVtSW5Gb2N1c09mOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCkgPT4gaXRlbUluRm9jdXNCeUNvbnRleHQuZ2V0KGNvbnRleHQpLFxuXG4gICAgICBub3RlSXRlbUluRm9jdXM6IChjb250ZXh0OiBOYXZpZ2FibGVDb250ZXh0LCBpdGVtOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGl0ZW1JbkZvY3VzQnlDb250ZXh0LnNldChjb250ZXh0LCBpdGVtKTtcbiAgICAgIH0sXG5cbiAgICAgIHJlZ2lzdGVyOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCwgZW50cnk6IE5hdmlnYWJsZUVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBlbnRyaWVzT2YoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKGVudHJpZXMuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgIGNvbnRleHRTdGFjay5wdXNoKGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZW50cmllcy5hZGQoZW50cnkpO1xuICAgICAgfSxcblxuICAgICAgZGVyZWdpc3RlcjogKGNvbnRleHQ6IE5hdmlnYWJsZUNvbnRleHQsIGVudHJ5OiBOYXZpZ2FibGVFbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gZW50cmllc09mKGNvbnRleHQpO1xuXG4gICAgICAgIGVudHJpZXMuZGVsZXRlKGVudHJ5KTtcblxuICAgICAgICBpZiAoZW50cmllcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXhJblN0YWNrID0gY29udGV4dFN0YWNrLmxhc3RJbmRleE9mKGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGluZGV4SW5TdGFjayAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnRleHRTdGFjay5zcGxpY2UoaW5kZXhJblN0YWNrLCAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBIGNvbnRleHQgdGhhdCBpcyBnb25lIHJlbWVtYmVycyBub3RoaW5nOiB0aGUgbmV4dCB0aW1lIGl0cyBtZW1iZXJzIGFwcGVhciwgdGhleVxuICAgICAgICAgIC8vIGFwcGVhciBhbmV3LCBhbmQgdGhlIGxvd2VzdCBvcmRlciBudW1iZXIgdGFrZXMgZm9jdXMgYXMgaXQgZGlkIHRoZSBmaXJzdCB0aW1lLlxuICAgICAgICAgIGl0ZW1JbkZvY3VzQnlDb250ZXh0LmRlbGV0ZShjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJtb2J4XCI7XG5cbmV4cG9ydCBjb25zdCBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJjb250ZXh0LWlzLWJlaW5nLWhvdmVyZWRcIixcbiAgY29uc3VtcHRpb25zOiBbaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuXSxcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IGRpLmluamVjdChpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4pO1xuXG4gICAgcmV0dXJuIChjb250ZXh0OiBIb3ZlcmFibGVDb250ZXh0PE11dGFibGVSZWZPYmplY3Q8YW55Pj4pID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWRJdGVtID0gaXRlbUJlaW5nSG92ZXJlZCgpKGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gISFob3ZlcmVkSXRlbS5nZXQoKSk7XG4gICAgfTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuaW1wb3J0IGdsb2JhbE92ZXJyaWRlcyBmcm9tIFwiLi8qKi8qLmdsb2JhbC1vdmVycmlkZS1mb3ItaW5qZWN0YWJsZS4odHN8dHN4KVwiO1xuaW1wb3J0IGRlZmF1bHRPdmVycmlkZXMgZnJvbSBcIi4vKiovKi5kZWZhdWx0LW92ZXJyaWRlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCB0ZXN0VXRpbFJ1bm5hYmxlSW5qZWN0YWJsZSA9IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMoe1xuICBnbG9iYWxPdmVycmlkZXMsXG4gIGRlZmF1bHRPdmVycmlkZXMsXG59KTtcbiIsICJcblxuY29uc3QgbW9kdWxlcyA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFtdXG4iLCAiaW1wb3J0IHR5cGUgeyBEaUNvbnRhaW5lciB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUgfSBmcm9tIFwiLi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlXCI7XG5cbi8vIFJ1bnMgdGhlIGNhbGxiYWNrIHN0cmFpZ2h0IGF3YXkgaW4gdGVzdHMsIGluc3RlYWQgb2YgYWZ0ZXIgdGhlIHJlYWwgZGVsYXkuXG5leHBvcnQgZGVmYXVsdCAoZGk6IERpQ29udGFpbmVyKSA9PiB7XG4gIGRpLm92ZXJyaWRlMihtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUsICgpID0+ICgpID0+IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gY2FsbGJhY2soKSk7XG59O1xuIiwgImltcG9ydCB0eXBlIHsgRGlDb250YWluZXIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdG9vbHRpcERlbGF5SW5qZWN0YWJsZSB9IGZyb20gXCIuL3Rvb2x0aXAtZGVsYXkuaW5qZWN0YWJsZVwiO1xuXG4vLyBObyBkZWxheSBpbiB0ZXN0cywgc28gYSB0b29sdGlwIGFwcGVhcnMgd2l0aG91dCBhbnlvbmUgYWR2YW5jaW5nIHRpbWVycy5cbi8vIFdyaXR0ZW4gYXMgYSBwbGFpbiBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aHJvdWdoIGdldERlZmF1bHRNb2NraW5nT3ZlcnJpZGUsXG4vLyB3aGljaCBpcyBhbiBpZGVudGl0eSBmdW5jdGlvbiBpbiBhIHRlc3QgcGFja2FnZSB0aGlzIG9uZSBtYXkgbm90IGltcG9ydC5cbmV4cG9ydCBkZWZhdWx0IChkaTogRGlDb250YWluZXIpID0+IHtcbiAgZGkub3ZlcnJpZGUyKHRvb2x0aXBEZWxheUluamVjdGFibGUsICgpID0+ICgpID0+IHVuZGVmaW5lZCk7XG59O1xuIiwgImltcG9ydCB7IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nKCk7XG59O1xuIiwgImltcG9ydCAqIGFzIG1vZHVsZTAgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTJdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFsncGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5kZWZhdWx0LW92ZXJyaWRlLnRzJywncGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzJywncmVtb3ZlLWNzcy1tb2R1bGUtY2x1dHRlci5kZWZhdWx0LW92ZXJyaWRlLnRzJ11cbiIsICJpbXBvcnQgKiBhcyBtb2R1bGUwIGZyb20gJy4vcGx1Z2lucy9jbGlja2FibGUvaXMtbWFjLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTMgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU0IGZyb20gJy4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU1IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNiBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNyBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU4IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlOSBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMCBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2NvbXB1dGVkLW5vdy5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMSBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMiBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMyBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2xvY2FsLWhvdmVyYWJsZS9fcHJpdmF0ZS9jb250ZXh0LWlzLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlMTQgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTE1IGZyb20gJy4vdGVzdC11dGlsLXJ1bm5hYmxlLmluamVjdGFibGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTIsbW9kdWxlMyxtb2R1bGU0LG1vZHVsZTUsbW9kdWxlNixtb2R1bGU3LG1vZHVsZTgsbW9kdWxlOSxtb2R1bGUxMCxtb2R1bGUxMSxtb2R1bGUxMixtb2R1bGUxMyxtb2R1bGUxNCxtb2R1bGUxNV07XG5cbmV4cG9ydCBkZWZhdWx0IG1vZHVsZXM7XG5leHBvcnQgY29uc3QgZmlsZW5hbWVzID0gWydwbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvY2xpY2thYmxlL29uLXJpZ2h0LXRyaWdnZXIuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9fc2hhcmVkL2ZvY3VzYWJsZS1odG1sLWVsZW1lbnQtcmVmLXNldC5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9rZXlib2FyZC1uYXZpZ2F0aW9uLXN0YXRlLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9jb21wdXRlZC1ub3cuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9ob3ZlcmFibGUvaXRlbS1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnLCd0ZXN0LXV0aWwtcnVubmFibGUuaW5qZWN0YWJsZS50cyddXG4iLCAiaW1wb3J0IHR5cGUgeyBUdXBsZSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IHR5cGUgVFNoaXJ0U2l6ZSA9XG4gIHwgXCJ6ZXJvXCJcbiAgfCBgJHtSYW5nZTwzLCA0Pn14c2BcbiAgfCBcInh4c1wiXG4gIHwgXCJ4c1wiXG4gIHwgXCJzXCJcbiAgfCBcIm1cIlxuICB8IFwibFwiXG4gIHwgXCJ4bFwiXG4gIHwgXCJ4eGxcIlxuICB8IGAke1JhbmdlPDMsIDExPn14bGA7XG5cbmV4cG9ydCB0eXBlIFJhbmdlPFN0YXJ0IGV4dGVuZHMgbnVtYmVyLCBFbmQgZXh0ZW5kcyBudW1iZXI+ID0gUmFuZ2VJbXBsPFN0YXJ0LCBFbmQ+O1xudHlwZSBSYW5nZUltcGw8XG4gIFN0YXJ0IGV4dGVuZHMgbnVtYmVyLFxuICBFbmQgZXh0ZW5kcyBudW1iZXIsXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9Db25mdXNpbmdWb2lkVHlwZTogcmVxdWlyZWQgZm9yIHRoZSBidWlsZCB0byBwYXNzXG4gIFQgZXh0ZW5kcyB2b2lkW10gPSBUdXBsZTx2b2lkLCBTdGFydD4sXG4+ID0gRW5kIGV4dGVuZHMgVFtcImxlbmd0aFwiXSA/IEVuZCA6IFRbXCJsZW5ndGhcIl0gfCBSYW5nZUltcGw8U3RhcnQsIEVuZCwgW3VuZGVmaW5lZCwgLi4uVF0+O1xuXG4vKiBjOCBpZ25vcmUgZW5kICovXG5cbi8qKiBUaGUgYmFzZSB1bml0IChpbiBwaXhlbHMpIHRoZSB0LXNoaXJ0IHNjYWxlIGlzIGJ1aWx0IG9uLiBNaXJyb3JzIGAkdW5pdGAgaW4gYHNpemVzLnNjc3NgLiAqL1xuZXhwb3J0IGNvbnN0IHNpemVVbml0SW5QaXhlbHMgPSA0O1xuXG4vLyBNdWx0aXBsaWVyIHBlciBzaXplLCBtaXJyb3JpbmcgdGhlIGAkc2l6ZXNgIG1hcCBpbiBgc2l6ZXMuc2Nzc2AuIEtlZXAgdGhlIHR3byBpbiBzeW5jLlxuY29uc3Qgc2l6ZU11bHRpcGxpZXJzOiBSZWNvcmQ8VFNoaXJ0U2l6ZSwgbnVtYmVyPiA9IHtcbiAgemVybzogMCxcbiAgXCI0eHNcIjogMSAvIDQsXG4gIFwiM3hzXCI6IDEgLyAyLFxuICB4eHM6IDEsXG4gIHhzOiAyLFxuICBzOiAzLFxuICBtOiA0LFxuICBsOiA1LFxuICB4bDogNixcbiAgeHhsOiA3LFxuICBcIjN4bFwiOiA4LFxuICBcIjR4bFwiOiA5LFxuICBcIjV4bFwiOiAxMCxcbiAgXCI2eGxcIjogMTEsXG4gIFwiN3hsXCI6IDEyLFxuICBcIjh4bFwiOiAxMyxcbiAgXCI5eGxcIjogMTQsXG4gIFwiMTB4bFwiOiAxNSxcbiAgXCIxMXhsXCI6IDE2LFxufTtcblxuLyoqXG4gKiBUaGUgcGl4ZWwgbGVuZ3RoIG9mIGEgdC1zaGlydCBzaXplIFx1MjAxNCB0aGUgc2FtZSB2YWx1ZSB0aGUgYCRzaXplYC9gJHdpZHRoYC9gJGhlaWdodGBcbiAqIGNsYXNzZXMgcmVzb2x2ZSB0byBpbiBDU1MuIFVzZSB3aGVuIGEgbGVuZ3RoIGlzIG5lZWRlZCByYXRoZXIgdGhhbiBhIHNpemluZyBjbGFzcyxcbiAqIGUuZy4gdG8gZHJpdmUgYW4gaWNvbiBmb250J3MgYGZvbnQtc2l6ZWAuXG4gKi9cbmV4cG9ydCBjb25zdCB0U2hpcnRTaXplSW5QaXhlbHMgPSAoc2l6ZTogVFNoaXJ0U2l6ZSk6IG51bWJlciA9PiBzaXplVW5pdEluUGl4ZWxzICogc2l6ZU11bHRpcGxpZXJzW3NpemVdO1xuIiwgIi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgZ2V0RWxlbWVudENvbXBvbmVudCB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZmxleFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxleC9mbGV4XCI7XG5pbXBvcnQgeyBncmlkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmlkL2dyaWRcIjtcbmltcG9ydCB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyB3aWR0aFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcbmltcG9ydCB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuaW1wb3J0IHsgc3R5bGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBoZWlnaHRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2hlaWdodC9oZWlnaHRcIjtcbmltcG9ydCB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYm9yZGVyL2JvcmRlclwiO1xuaW1wb3J0IHsgZm9udFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZm9udC9mb250XCI7XG5pbXBvcnQgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY29sb3IvY29sb3JcIjtcbmltcG9ydCB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgeyBncmFkaWVudFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZ3JhZGllbnQvZ3JhZGllbnRcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZHJhZ2dhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGVcIjtcbmltcG9ydCB7IGRyb3BwYWJsZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJvcHBhYmxlXCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCJtb2J4LXJlYWN0XCI7XG5pbXBvcnQgeyB0b29sdGlwUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90b29sdGlwL3Rvb2x0aXBcIjtcbmltcG9ydCB7IHRyYW5zaXRpb25QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuaW1wb3J0IHsgb2Zmc2V0UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9vZmZzZXQvb2Zmc2V0XCI7XG5pbXBvcnQgeyBvZmZzZXRDaGlsZHJlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb2Zmc2V0LWNoaWxkcmVuL29mZnNldC1jaGlsZHJlblwiO1xuaW1wb3J0IHsgaGlkZGVuUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9oaWRkZW4vaGlkZGVuXCI7XG5pbXBvcnQgeyBub1BvaW50ZXJFdmVudHNQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzXCI7XG5pbXBvcnQgeyBtYXJnaW5QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL21hcmdpbi9tYXJnaW5cIjtcbmltcG9ydCB7IHJlbGF0aXZlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9yZWxhdGl2ZS9yZWxhdGl2ZVwiO1xuaW1wb3J0IHsgYWJzb2x1dGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Fic29sdXRlL2Fic29sdXRlXCI7XG5pbXBvcnQgeyB2aXN1YWxseUhpZGRlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuaW1wb3J0IHsgaG92ZXJhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBob3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlLWJ5LWRyYWdnaW5nXCI7XG5pbXBvcnQgeyBib3hTaGFkb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuaW1wb3J0IHsgb3ZlcmZsb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL292ZXJmbG93L292ZXJmbG93XCI7XG5pbXBvcnQgeyBmbGV4Q2hpbGRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZFwiO1xuaW1wb3J0IHsgZ3JheXNjYWxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlXCI7XG5pbXBvcnQgeyB0aW50UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90aW50L3RpbnRcIjtcbmltcG9ydCB7IGZhZGVkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuaW1wb3J0IHsgZW5hYmxlZFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgeyBmb2N1c2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGVcIjtcbmltcG9ydCB7IGFyZWFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEvYXJlYVwiO1xuaW1wb3J0IHsgYXJlYUNvbnRlbnRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEtY29udGVudC9hcmVhLWNvbnRlbnRcIjtcbmltcG9ydCB7IHNpemVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuaW1wb3J0IHsgY3Vyc29yUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyBjbGlja2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHJlZlBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcmVmL3JlZlwiO1xuaW1wb3J0IHsgZGlzcGxheUNvbnRlbnRzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHNcIjtcbmltcG9ydCB7IHRleHRBbGlnblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduXCI7XG5pbXBvcnQgeyBibG9ja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmxvY2svYmxvY2tcIjtcbmltcG9ydCB7IG91dGxpbmVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL291dGxpbmUvb3V0bGluZVwiO1xuaW1wb3J0IHsgcG9wb3ZlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5pbXBvcnQgeyBmbG9hdGluZ1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcbmltcG9ydCB7IGludmlzaWJsZUJhY2tkcm9wUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wXCI7XG5pbXBvcnQgeyBvbk91dHNpZGVDbGlja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5pbXBvcnQgeyBkcm9wRG93bk1lbnVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51XCI7XG5pbXBvcnQgeyBhbmNob3JQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FuY2hvci9hbmNob3JcIjtcblxuZXhwb3J0IGNvbnN0IHNoYXJlZFBsdWdpbnMgPSBbXG4gIC8vIENvbnRyaWJ1dGVzIHByb3BzIG9mIGl0cyBvd24sIHNvIGl0IGhhcyB0byBydW4gYmVmb3JlIHRoZSBwbHVnaW5zIHRoYXQgcmVzb2x2ZSB0aGVtLlxuICBhbmNob3JQbHVnaW4sXG4gIHNpemVQbHVnaW4sXG4gIGRyYWdnYWJsZVBsdWdpbixcbiAgdGV4dEFsaWduUGx1Z2luLFxuICBkcm9wcGFibGVQbHVnaW4sXG4gIGFyZWFQbHVnaW4sXG4gIGFyZWFDb250ZW50UGx1Z2luLFxuICBmbGV4UGx1Z2luLFxuICBncmlkUGx1Z2luLFxuICB3aWR0aFBsdWdpbixcbiAgaGVpZ2h0UGx1Z2luLFxuICBmbGV4Q2hpbGRQbHVnaW4sXG4gIG92ZXJmbG93UGx1Z2luLFxuICBwYWRkaW5nUGx1Z2luLFxuICBtYXJnaW5QbHVnaW4sXG4gIGJsb2NrUGx1Z2luLFxuICBib3hTaGFkb3dQbHVnaW4sXG4gIGJvcmRlclBsdWdpbixcbiAgb3V0bGluZVBsdWdpbixcbiAgZm9udFBsdWdpbixcbiAgY29sb3JQbHVnaW4sXG4gIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgZ3JhZGllbnRQbHVnaW4sXG4gIGdyYXlzY2FsZVBsdWdpbixcbiAgdGludFBsdWdpbixcbiAgZmFkZWRQbHVnaW4sXG4gIHN0eWxlUGx1Z2luLFxuICB0cmFuc2l0aW9uUGx1Z2luLFxuICBvZmZzZXRQbHVnaW4sXG4gIG9mZnNldENoaWxkcmVuUGx1Z2luLFxuICBoaWRkZW5QbHVnaW4sXG4gIG5vUG9pbnRlckV2ZW50c1BsdWdpbixcbiAgaW52aXNpYmxlQmFja2Ryb3BQbHVnaW4sXG4gIHZpc3VhbGx5SGlkZGVuUGx1Z2luLFxuICByZWxhdGl2ZVBsdWdpbixcbiAgYWJzb2x1dGVQbHVnaW4sXG4gIGN1cnNvclBsdWdpbixcbiAgZGlzcGxheUNvbnRlbnRzUGx1Z2luLFxuICBvbk91dHNpZGVDbGlja1BsdWdpbixcbiAgY2xhc3NOYW1lUGx1Z2luLFxuXTtcblxuY29uc3Qgc2hhcmVkQ2xpY2thYmxlUGx1Z2lucyA9IFtkcm9wRG93bk1lbnVQbHVnaW4sIHBvcG92ZXJQbHVnaW4sIGVuYWJsZWRQbHVnaW4sIGNsaWNrYWJsZVBsdWdpbl07XG5cbmV4cG9ydCBjb25zdCBnZXRTaGFyZWRUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgLi4uZ2V0U2hhcmVkQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbiAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbl07XG5cbmNvbnN0IGdldFNoYXJlZENoaWxkcmVuQWRkaW5nVHlwZWRQbHVnaW5zID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiBbdG9vbHRpcFBsdWdpbjxUPigpLCBmbG9hdGluZ1BsdWdpbjxUPigpXTtcblxuY29uc3QgZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgaG92ZXJhYmxlUGx1Z2luPFQ+KCksXG4gIGhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW48VD4oKSxcbiAgZm9jdXNhYmxlUGx1Z2luPFQ+KCksXG4gIHJlZlBsdWdpbjxUPigpLFxuXTtcblxuZXhwb3J0IGNvbnN0IERpdiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIERpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERpdj47XG5cbi8vIFVzZSBkaXYgYXMgbmV1dHJhbCB0ZW1wbGF0ZSBmb3Igd2hhdCBjb21tb24gcHJvcHMgc2hvdWxkIGxvb2sgbGlrZVxuZXhwb3J0IGNvbnN0IENvbW1vbiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPGFueT4oKSkpO1xuZXhwb3J0IHR5cGUgQ29tbW9uUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29tbW9uPjtcblxuZXhwb3J0IGNvbnN0IFN2ZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJzdmdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIFN2Z1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFN2Zz47XG5cbmV4cG9ydCBjb25zdCBJbnB1dCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFxuICAgIFwiaW5wdXRcIixcbiAgICBlbmFibGVkUGx1Z2luLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8SFRNTElucHV0RWxlbWVudD4oKSxcbiAgKSxcbik7XG5leHBvcnQgdHlwZSBJbnB1dFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIElucHV0PjtcblxuZXhwb3J0IGNvbnN0IFRleHRBcmVhID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0ZXh0YXJlYVwiLCBlbmFibGVkUGx1Z2luLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRleHRBcmVhRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGV4dEFyZWFQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUZXh0QXJlYT47XG5cbmV4cG9ydCBjb25zdCBGb3JtID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJmb3JtXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRm9ybUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIEZvcm1Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBGb3JtPjtcblxuZXhwb3J0IGNvbnN0IFNwYW4gPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInNwYW5cIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxTcGFuRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgU3BhblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNwYW4+O1xuXG5leHBvcnQgY29uc3QgQ2xpY2thYmxlRGl2ID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBDbGlja2FibGVEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBDbGlja2FibGVEaXY+O1xuXG5leHBvcnQgY29uc3QgSSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEk+O1xuXG5leHBvcnQgY29uc3QgQSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJhXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQW5jaG9yRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgQVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEE+O1xuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXG4gICAgXCJidXR0b25cIixcbiAgICAuLi5zaGFyZWRDbGlja2FibGVQbHVnaW5zLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxCdXR0b25FbGVtZW50PigpLFxuICApLFxuKTtcbmV4cG9ydCB0eXBlIEJ1dHRvblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEJ1dHRvbj47XG5cbmV4cG9ydCBjb25zdCBDb2RlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImNvZGVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBDb2RlUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29kZT47XG5cbmV4cG9ydCBjb25zdCBMYWJlbCA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJsYWJlbFwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIExhYmVsUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTGFiZWw+O1xuXG5leHBvcnQgY29uc3QgUHJlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInByZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFByZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIFByZVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFByZT47XG5cbmV4cG9ydCBjb25zdCBOYXYgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwibmF2XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgTmF2UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTmF2PjtcblxuZXhwb3J0IGNvbnN0IEgxID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImgxXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEgxUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDE+O1xuXG5leHBvcnQgY29uc3QgSDIgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDJcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBIMj47XG5cbmV4cG9ydCBjb25zdCBIMyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoM1wiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBIM1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEgzPjtcblxuZXhwb3J0IGNvbnN0IEg0ID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImg0XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEg0UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDQ+O1xuXG5leHBvcnQgY29uc3QgSDUgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBINT47XG5cbmV4cG9ydCBjb25zdCBINiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoNlwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBINlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEg2PjtcblxuZXhwb3J0IGNvbnN0IE9sID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcIm9sXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MT0xpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBPbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIE9sPjtcblxuZXhwb3J0IGNvbnN0IFVsID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInVsXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVUxpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBVbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFVsPjtcblxuZXhwb3J0IGNvbnN0IExpID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImxpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MTElFbGVtZW50PigpKSk7XG5cbmV4cG9ydCBjb25zdCBDbGlja2FibGVMaSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwibGlcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxMSUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIENsaWNrYWJsZUxpUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2xpY2thYmxlTGk+O1xuZXhwb3J0IHR5cGUgTGlQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBMaT47XG5cbmV4cG9ydCBjb25zdCBQID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInBcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxQYXJhZ3JhcGhFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBQUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUD47XG5cbmV4cG9ydCBjb25zdCBUaCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGhcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZUNlbGxFbGVtZW50PigpKSxcbik7XG5cbmV4cG9ydCB0eXBlIFRoUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgVGg+O1xuXG5leHBvcnQgY29uc3QgVGQgPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInRkXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVGFibGVDZWxsRWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUZFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRkPjtcblxuZXhwb3J0IGNvbnN0IFRyID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0clwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlUm93RWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRyPjtcblxuZXhwb3J0IGNvbnN0IFRhYmxlID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0YWJsZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGFibGVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUYWJsZT47XG5cbmV4cG9ydCBjb25zdCBUQm9keSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGJvZHlcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBUQm9keVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRCb2R5PjtcblxuZXhwb3J0IGNvbnN0IERpYWxvZyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiZGlhbG9nXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRGlhbG9nRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgRGlhbG9nUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nPjtcblxuZXhwb3J0IGNvbnN0IENhbnZhcyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiY2FudmFzXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQ2FudmFzRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgQ2FudmFzUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2FudmFzPjtcblxuZXhwb3J0IGNvbnN0IEltZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpbWdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxJbWFnZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEltZ1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEltZz47XG5cbi8qIGM4IGlnbm9yZSBlbmQgKi9cbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mbGV4L2ZsZXgubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJmbGV4XCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX19lRkxFY1wiLFxuICBcImZsZXhfX3dyYXAtLXdyYXBcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fd3JhcC0td3JhcF9fXzJMcVRnXCIsXG4gIFwiZmxleF9fZGlyZWN0aW9uLS12ZXJ0aWNhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsX19fMEFpT2ZcIixcbiAgXCJmbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsLXJldmVyc2VkXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2RpcmVjdGlvbi0tdmVydGljYWwtcmV2ZXJzZWRfX19Jb2UtNVwiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWxfX19hMzJ6b1wiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbC1yZXZlcnNlZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWwtcmV2ZXJzZWRfX19pTHdES1wiLFxuICBcImZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5cIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2Vlbl9fX2E2b01IXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQXJvdW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUFyb3VuZF9fXzVZT1U0XCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWNlbnRlclwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tY2VudGVyX19fdXJaWUdcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaF9fX001YXowXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0X19fUEhGMUVcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZF9fX2FNUHgwXCIsXG4gIFwiZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19hbGlnbkl0ZW1zLS1zdHJldGNoX19fYkFOaWdcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyX19fMFZzeTlcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4U3RhcnRcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tZmxleFN0YXJ0X19fajBKenhcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4RW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2FsaWduSXRlbXMtLWZsZXhFbmRfX19EbVU1UlwiLFxuICBcImZsZXhfX2dhcC0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXplcm9fX193My1UZ1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS16ZXJvXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS16ZXJvX19fOTYwQTdcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0temVyb19fX29LdXNUXCIsXG4gIFwiZmxleF9fZ2FwLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS00eHNfX19yclRKZVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTR4c19fX1RSM1lFXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTR4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNHhzX19fNmluM2pcIixcbiAgXCJmbGV4X19nYXAtLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTN4c19fX1JjdW1SXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tM3hzX19fWC1DMWFcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tM3hzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS0zeHNfX19rVzBpT1wiLFxuICBcImZsZXhfX2dhcC0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhzX19fVUIzRmpcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eHNfX191SVp2MlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4c19fX3QtZ3FOXCIsXG4gIFwiZmxleF9fZ2FwLS14c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXhzX19fdHQzU29cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLXhzX19fQjVvWGNcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXhzX19fMUVYMmZcIixcbiAgXCJmbGV4X19nYXAtLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1zX19fOW1ZelNcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tc1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tc19fX2F2dGYtXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXNfX19ZT0JWVlwiLFxuICBcImZsZXhfX2dhcC0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLW1fX19BYi10MFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS1tXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS1tX19fUTZjQi1cIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tbV9fXzctRFEwXCIsXG4gIFwiZmxleF9fZ2FwLS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tbF9fX2N2bWp3XCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLWxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLWxfX19FcFF0VFwiLFxuICBcImZsZXhfX2dhcC0tcm93LS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS1sX19feFlpS2hcIixcbiAgXCJmbGV4X19nYXAtLXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teGxfX19DSXNOUFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0teGxfX19tTFV4UlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0teGxfX19LV04zM1wiLFxuICBcImZsZXhfX2dhcC0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhsX19fMTJ0LTZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eGxfX192QUx0ZlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4bF9fX0lkY3FVXCIsXG4gIFwiZmxleF9fZ2FwLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0zeGxfX19pVXJ4MVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTN4bF9fXy1OVjBaXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTN4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tM3hsX19fVlljUmhcIixcbiAgXCJmbGV4X19nYXAtLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTR4bF9fX2ZaaUtWXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tNHhsX19fWDlLcHlcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tNHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS00eGxfX19kYnZXMFwiLFxuICBcImZsZXhfX2dhcC0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tNXhsX19fNDNoSHZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS01eGxfX18yWHllUVwiLFxuICBcImZsZXhfX2dhcC0tcm93LS01eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTV4bF9fX3F2ak9FXCIsXG4gIFwiZmxleF9fZ2FwLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS02eGxfX19zUHk2TFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTZ4bF9fX3phZ1dNXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTZ4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNnhsX19fVS11WkpcIixcbiAgXCJmbGV4X19nYXAtLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTd4bF9fX09hd3YtXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tN3hsX19fS3pyTXJcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tN3hsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS03eGxfX19wQXZMdlwiLFxuICBcImZsZXhfX2dhcC0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tOHhsX19fRWVvRS1cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS04eGxfX19rYmlvSlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS04eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTh4bF9fX1AtOS1lXCIsXG4gIFwiZmxleF9fZ2FwLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS05eGxfX19UZ25VU1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTl4bF9fX05HbDNKXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTl4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tOXhsX19fRUd1ZWhcIixcbiAgXCJmbGV4X19nYXAtLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0xMHhsX19fQ2YxdzZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tMTB4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tMTB4bF9fX0xKUkdsXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTEweGxfX196UHR5TlwiLFxuICBcImZsZXhfX2dhcC0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTExeGxfX19vcmZnSVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0xMXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS0xMXhsX19fZERLZHBcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tMTF4bF9fX3ZERy1BXCJcbn07IiwgImltcG9ydCBmbGV4U3R5bGVzIGZyb20gXCIuL2ZsZXgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBIb3Jpem9udGFsRmxleFByb3BzID0ge1xuICBkaXJlY3Rpb24/OiBcImhvcml6b250YWxcIiB8IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiO1xuXG4gIGhvcml6b250YWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInN0cmV0Y2hcIiB8IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxuZXhwb3J0IHR5cGUgVmVydGljYWxGbGV4UHJvcHMgPSB7XG4gIGRpcmVjdGlvbj86IFwidmVydGljYWxcIiB8IFwidmVydGljYWwtcmV2ZXJzZWRcIjtcblxuICBob3Jpem9udGFsQWxpZ24/OiBcImNlbnRlclwiIHwgXCJzdHJldGNoXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcInRvcFwiIHwgXCJib3R0b21cIjtcbn07XG5cbmV4cG9ydCB0eXBlIE1heGltYWxGbGV4UHJvcHMgPSAoSG9yaXpvbnRhbEZsZXhQcm9wcyB8IFZlcnRpY2FsRmxleFByb3BzKSAmIHtcbiAgZ2FwPzogVFNoaXJ0U2l6ZSB8IHsgcm93PzogVFNoaXJ0U2l6ZTsgY29sdW1uPzogVFNoaXJ0U2l6ZSB9O1xuICB3cmFwPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFNpbXBsZUZsZXhQcm9wID0gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgRmxleFBsdWdpblByb3BzID0geyAkZmxleD86IFNpbXBsZUZsZXhQcm9wIHwgTWF4aW1hbEZsZXhQcm9wcyB9O1xuXG5leHBvcnQgY29uc3QgZmxleFBsdWdpbiA9IGdldFBsdWdpbjxGbGV4UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGZsZXggfSA9IHByb3BzO1xuXG4gIGlmICghJGZsZXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGZsZXg6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvbiA9IFwiaG9yaXpvbnRhbFwiLFxuICAgIHZlcnRpY2FsQWxpZ24gPSBcIlwiLFxuICAgIGhvcml6b250YWxBbGlnbiA9IFwiXCIsXG4gICAgZ2FwID0gdW5kZWZpbmVkLFxuICAgIHdyYXAsXG4gIH0gPSAkZmxleCA9PT0gdHJ1ZSA/IHt9IDogJGZsZXg7XG5cbiAgY29uc3QgaG9yaXpvbnRhbEFsaWduUHJvcHMgPSB7XG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLXN0cmV0Y2hgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3RyZXRjaFwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJib3R0b21cIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzcGFjZS1hcm91bmRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2VlbmBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInNwYWNlLWJldHdlZW5cIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXN0cmV0Y2hgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJjZW50ZXJcIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0YF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIikgfHxcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSxcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsLXJldmVyc2VkXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIiksXG4gIH07XG5cbiAgY29uc3QgdmVydGljYWxBbGlnblByb3BzID0ge1xuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYXJvdW5kXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5gXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYmV0d2VlblwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwidmVydGljYWxcIiAmJiB2ZXJ0aWNhbEFsaWduID09PSBcInRvcFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbC1yZXZlcnNlZFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpLFxuXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1mbGV4RW5kYF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpIHx8XG4gICAgICAoZGlyZWN0aW9uID09PSBcInZlcnRpY2FsLXJldmVyc2VkXCIgJiYgdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIiksXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInN0cmV0Y2hcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyYF1dOiBob3Jpem9udGFsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInJpZ2h0XCIsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBmbGV4U3R5bGVzLmZsZXgsXG4gICAgICBmbGV4U3R5bGVzW2BmbGV4X19kaXJlY3Rpb24tLSR7ZGlyZWN0aW9ufWBdLFxuXG4gICAgICBbXCJob3Jpem9udGFsXCIsIFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiXS5pbmNsdWRlcyhkaXJlY3Rpb24pID8gaG9yaXpvbnRhbEFsaWduUHJvcHMgOiB2ZXJ0aWNhbEFsaWduUHJvcHMsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZmxleFN0eWxlc1tgZmxleF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHdyYXAgJiYgZmxleFN0eWxlc1tgZmxleF9fd3JhcC0td3JhcGBdLFxuXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG5cbiAgICAkZmxleDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZ3JpZC9ncmlkLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JpZFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19fTVBUaE9cIixcbiAgXCJncmlkX19jb2x1bW5zLS0xXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTFfX19ZMFUyTVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTJcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tMl9fX1lnUzRIXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tM1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS0zX19fbWFCRDJcIixcbiAgXCJncmlkX19jb2x1bW5zLS00XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTRfX183M0JqQVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTVcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tNV9fX1NsdC1EXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tNlwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS02X19fbnlNOHpcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1zdHJldGNoXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0cmV0Y2hfX194WGQzWlwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLWNlbnRlclwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19hbGlnbkl0ZW1zLS1jZW50ZXJfX19FOG1MLVwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLXN0YXJ0XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0YXJ0X19fMk5kdlNcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1lbmRcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fYWxpZ25JdGVtcy0tZW5kX19fMUlwWW1cIixcbiAgXCJncmlkX19nYXAtLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS16ZXJvX19fRzFxOGRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0temVyb1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0temVyb19fX3lnUXBKXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXplcm9fX193MS1PeFwiLFxuICBcImdyaWRfX2dhcC0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNHhzX19fek8wbXZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS00eHNfX19HVW9kM1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS00eHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTR4c19fX3NWUVplXCIsXG4gIFwiZ3JpZF9fZ2FwLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0zeHNfX18tSXhTd1wiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTN4c19fX3V3NDY2XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTN4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tM3hzX19fSmZ3bVlcIixcbiAgXCJncmlkX19nYXAtLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4c19fX2doOGMtXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhzX19fRTc2Z0tcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eHNfX19uaHh6LVwiLFxuICBcImdyaWRfX2dhcC0teHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS14c19fX0dINGgyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS14c19fX3VScXJpXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14c19fX2xBTkV1XCIsXG4gIFwiZ3JpZF9fZ2FwLS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tc19fXzdSMHBzXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXNfX19hRFZBR1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS1zX19fQVJEbXhcIixcbiAgXCJncmlkX19nYXAtLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1tX19fbTNYaWhcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tbVwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tbV9fX0NzeWVNXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLW1fX19zT0FYblwiLFxuICBcImdyaWRfX2dhcC0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWxfX18wU3lLbFwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS1sXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS1sX19fSnZKaE1cIixcbiAgXCJncmlkX19nYXAtLXJvdy0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tbF9fX2FwSDhiXCIsXG4gIFwiZ3JpZF9fZ2FwLS14bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXhsX19fSS12UnRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXhsX19fdDBTTzNcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXhsX19fZXZORWRcIixcbiAgXCJncmlkX19nYXAtLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4bF9fX2VXUzAyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhsX19fcy0tLWJcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eGxfX19KNEY3b1wiLFxuICBcImdyaWRfX2dhcC0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tM3hsX19fSFZsa0RcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS0zeGxfX196S3RMTFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0zeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTN4bF9fX0U5U1Y5XCIsXG4gIFwiZ3JpZF9fZ2FwLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS00eGxfX19NM0czZlwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTR4bF9fX25udC1wXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTR4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tNHhsX19fMVc4YmRcIixcbiAgXCJncmlkX19nYXAtLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTV4bF9fX3lBblhEXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tNXhsX19fMnc0UjFcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tNXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS01eGxfX19WQ2ZqZ1wiLFxuICBcImdyaWRfX2dhcC0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNnhsX19faEVsMEZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS02eGxfX19GeFB0cFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS02eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTZ4bF9fX3luMWYtXCIsXG4gIFwiZ3JpZF9fZ2FwLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS03eGxfX19nYkdIdVwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTd4bF9fX1Z5ajFwXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTd4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tN3hsX19fNUJCc1NcIixcbiAgXCJncmlkX19nYXAtLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTh4bF9fX2pDbG1DXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tOHhsX19fYnE3RXpcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tOHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS04eGxfX193TnVaMlwiLFxuICBcImdyaWRfX2dhcC0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tOXhsX19faW5FMUVcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS05eGxfX19Nc2ZqcVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS05eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTl4bF9fX2kyMy1jXCIsXG4gIFwiZ3JpZF9fZ2FwLS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tMTB4bF9fX0xDRHRjXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxfX19vOGNCeVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS0xMHhsX19fUmpSdzlcIixcbiAgXCJncmlkX19nYXAtLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0xMXhsX19fU3F1TmFcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tMTF4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tMTF4bF9fX3VTZVd6XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTExeGxfX19qcUctSVwiXG59OyIsICJpbXBvcnQgZ3JpZFN0eWxlcyBmcm9tIFwiLi9ncmlkLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgR3JpZENvbHVtbnMgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG5cbmV4cG9ydCB0eXBlIEdyaWRQcm9wcyA9IHtcbiAgY29sdW1uczogR3JpZENvbHVtbnM7XG4gIGdhcD86IFRTaGlydFNpemUgfCB7IHJvdz86IFRTaGlydFNpemU7IGNvbHVtbj86IFRTaGlydFNpemUgfTtcbiAgYWxpZ25JdGVtcz86IFwic3RyZXRjaFwiIHwgXCJjZW50ZXJcIiB8IFwic3RhcnRcIiB8IFwiZW5kXCI7XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkUGx1Z2luUHJvcHMgPSB7ICRncmlkPzogR3JpZFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBncmlkUGx1Z2luID0gZ2V0UGx1Z2luPEdyaWRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZ3JpZCB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkZ3JpZCkge1xuICAgIHJldHVybiB7ICRncmlkOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgY29sdW1ucywgZ2FwLCBhbGlnbkl0ZW1zIH0gPSAkZ3JpZDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIGdyaWRTdHlsZXMuZ3JpZCxcbiAgICAgIGdyaWRTdHlsZXNbYGdyaWRfX2NvbHVtbnMtLSR7Y29sdW1uc31gXSxcbiAgICAgIGFsaWduSXRlbXMgPyBncmlkU3R5bGVzW2BncmlkX19hbGlnbkl0ZW1zLS0ke2FsaWduSXRlbXN9YF0gOiB1bmRlZmluZWQsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZ3JpZFN0eWxlc1tgZ3JpZF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcblxuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICBdLFxuXG4gICAgJGdyaWQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibWF4LXdpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLWZ1bGxfX19ub0lrVFwiLFxuICBcIm1heC13aWR0aC0tY29udGVudFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1jb250ZW50X19feWtzVXJcIixcbiAgXCJtYXgtd2lkdGgtLXplcm9cIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0temVyb19fXzhOVUYxXCIsXG4gIFwibWF4LXdpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNHhzX19fZ0hsTElcIixcbiAgXCJtYXgtd2lkdGgtLTN4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeHNfX19yZG9QOFwiLFxuICBcIm1heC13aWR0aC0teHhzXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXh4c19fX2pscDh2XCIsXG4gIFwibWF4LXdpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14c19fX2tRc1d4XCIsXG4gIFwibWF4LXdpZHRoLS1zXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXNfX19NZ0dhelwiLFxuICBcIm1heC13aWR0aC0tbVwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1tX19fYUZ6U2NcIixcbiAgXCJtYXgtd2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tbF9fX2lLbGFIXCIsXG4gIFwibWF4LXdpZHRoLS14bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14bF9fXzR6VWRDXCIsXG4gIFwibWF4LXdpZHRoLS14eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0teHhsX19fNTh6M1BcIixcbiAgXCJtYXgtd2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeGxfX18yWVhuSFwiLFxuICBcIm1heC13aWR0aC0tNHhsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTR4bF9fX2pGSjlWXCIsXG4gIFwibWF4LXdpZHRoLS01eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNXhsX19fNy1WUUdcIixcbiAgXCJtYXgtd2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS02eGxfX19QUzM3SlwiLFxuICBcIm1heC13aWR0aC0tN3hsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTd4bF9fX3NTQndrXCIsXG4gIFwibWF4LXdpZHRoLS04eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tOHhsX19fVjNJSHlcIixcbiAgXCJtYXgtd2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS05eGxfX180VldFTVwiLFxuICBcIm1heC13aWR0aC0tMTB4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0xMHhsX19fejk3VFFcIixcbiAgXCJtYXgtd2lkdGgtLTExeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tMTF4bF9fX2p4ZW5YXCIsXG4gIFwibWluLXdpZHRoXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGhfX19xbmxZQ1wiLFxuICBcIm1pbi13aWR0aC0tZml0XCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWZpdF9fXzJXLVREXCIsXG4gIFwibWluLXdpZHRoLS16ZXJvXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXplcm9fX185NDI5U1wiLFxuICBcIm1pbi13aWR0aC0tNHhzXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTR4c19fXzNUR00tXCIsXG4gIFwibWluLXdpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hzX19fUjZqMzJcIixcbiAgXCJtaW4td2lkdGgtLXh4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS14eHNfX192aktkQ1wiLFxuICBcIm1pbi13aWR0aC0teHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teHNfX19WLUwxc1wiLFxuICBcIm1pbi13aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS1zX19fZElmWm1cIixcbiAgXCJtaW4td2lkdGgtLW1cIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tbV9fX0pINUlQXCIsXG4gIFwibWluLXdpZHRoLS1sXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWxfX19HZ2tFOFwiLFxuICBcIm1pbi13aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teGxfX19hR0x1aVwiLFxuICBcIm1pbi13aWR0aC0teHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXh4bF9fX3pRT3RUXCIsXG4gIFwibWluLXdpZHRoLS0zeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hsX19fSmV2RFpcIixcbiAgXCJtaW4td2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS00eGxfX18xZTZOMVwiLFxuICBcIm1pbi13aWR0aC0tNXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTV4bF9fX0t1bXRvXCIsXG4gIFwibWluLXdpZHRoLS02eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tNnhsX19fWUVrbThcIixcbiAgXCJtaW4td2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS03eGxfX192WDFGWVwiLFxuICBcIm1pbi13aWR0aC0tOHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTh4bF9fX1ZiUWhrXCIsXG4gIFwibWluLXdpZHRoLS05eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tOXhsX19fZVVLUWlcIixcbiAgXCJtaW4td2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tMTB4bF9fX1pvTjNOXCIsXG4gIFwibWluLXdpZHRoLS0xMXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTExeGxfX19CTkZqQVwiLFxuICBcIndpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tZnVsbF9fXzFtcGl6XCIsXG4gIFwid2lkdGgtLXN0cmV0Y2hcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1zdHJldGNoX19fUnF3MDBcIixcbiAgXCJ3aWR0aC0temVyb1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXplcm9fX19JTmRWdlwiLFxuICBcIndpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS00eHNfX19kUlVoV1wiLFxuICBcIndpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0zeHNfX19vUkowelwiLFxuICBcIndpZHRoLS14eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14eHNfX19IeWw5UlwiLFxuICBcIndpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXhzX19fRzNqUXpcIixcbiAgXCJ3aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXNfX18tbXpxbVwiLFxuICBcIndpZHRoLS1tXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tbV9fX21FWjc3XCIsXG4gIFwid2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1sX19fcXlJTjdcIixcbiAgXCJ3aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14bF9fX21PMjVJXCIsXG4gIFwid2lkdGgtLXh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXh4bF9fX0VHUU1wXCIsXG4gIFwid2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTN4bF9fX0h1bDctXCIsXG4gIFwid2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTR4bF9fX3pPUGJTXCIsXG4gIFwid2lkdGgtLTV4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTV4bF9fX3hicW5pXCIsXG4gIFwid2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTZ4bF9fX05tYmY5XCIsXG4gIFwid2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTd4bF9fX0IwbnZ3XCIsXG4gIFwid2lkdGgtLTh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTh4bF9fX1cxSERQXCIsXG4gIFwid2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTl4bF9fX0tKTDhVXCIsXG4gIFwid2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0xMHhsX19fOTR6MTlcIixcbiAgXCJ3aWR0aC0tMTF4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTExeGxfX19qQi1MblwiXG59OyIsICJpbXBvcnQgd2lkdGhTdHlsZXMgZnJvbSBcIi4vd2lkdGgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBzdHlsZVBsdWdpbiB9IGZyb20gXCIuLi9zdHlsZS9zdHlsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG4vKiogQSBzaGFyZSBvZiB0aGUgcGFyZW50J3Mgd2lkdGgsIGUuZy4gYFwiMzAlXCJgLCBmb3IgbGF5b3V0cyB0aGF0IGRpdmlkZSBhIHJvdyByYXRoZXIgdGhhbiBzaXplIGEgYm94LiAqL1xuZXhwb3J0IHR5cGUgUGVyY2VudGFnZSA9IGAke251bWJlcn0lYDtcblxuZXhwb3J0IHR5cGUgJFdpZHRoUHJvcHMgPSB7XG4gIHdpZHRoPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBQZXJjZW50YWdlO1xuICBtaW4/OiBUU2hpcnRTaXplIHwgXCJmaXRcIiB8IFBlcmNlbnRhZ2U7XG4gIG1heD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwiY29udGVudFwiIHwgUGVyY2VudGFnZTtcbn07XG5cbmV4cG9ydCB0eXBlIFdpZHRoUGx1Z2luUHJvcHMgPSB7ICR3aWR0aD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwic3RyZXRjaFwiIHwgUGVyY2VudGFnZSB8ICRXaWR0aFByb3BzIH07XG5cbmNvbnN0IGlzUGVyY2VudGFnZSA9ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgUGVyY2VudGFnZSA9PiB2YWx1ZT8uZW5kc1dpdGgoXCIlXCIpID09PSB0cnVlO1xuXG5leHBvcnQgY29uc3Qgd2lkdGhQbHVnaW4gPSBnZXRQbHVnaW48V2lkdGhQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICR3aWR0aCwgJGNsYXNzTmFtZSwgJHN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgeyB3aWR0aCwgbWluLCBtYXggfSA9IHR5cGVvZiAkd2lkdGggPT09IFwic3RyaW5nXCIgPyB7IHdpZHRoOiAkd2lkdGggfSA6ICgkd2lkdGggPz8ge30pO1xuICBjb25zdCBwZXJjZW50YWdlcyA9IHtcbiAgICAuLi4oaXNQZXJjZW50YWdlKHdpZHRoKSA/IHsgd2lkdGggfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1pbikgPyB7IG1pbldpZHRoOiBtaW4gfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1heCkgPyB7IG1heFdpZHRoOiBtYXggfSA6IHt9KSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHdpZHRoICYmICFpc1BlcmNlbnRhZ2Uod2lkdGgpID8gd2lkdGhTdHlsZXNbYHdpZHRoLS0ke3dpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluICYmICFpc1BlcmNlbnRhZ2UobWluKSA/IHdpZHRoU3R5bGVzW2BtaW4td2lkdGgtLSR7bWlufWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWF4ICYmICFpc1BlcmNlbnRhZ2UobWF4KSA/IHdpZHRoU3R5bGVzW2BtYXgtd2lkdGgtLSR7bWF4fWBdIDogdW5kZWZpbmVkLFxuICAgICAgJGNsYXNzTmFtZSxcbiAgICBdLFxuICAgICRzdHlsZTogT2JqZWN0LmtleXMocGVyY2VudGFnZXMpLmxlbmd0aCA+IDAgPyB7IC4uLiRzdHlsZSwgLi4ucGVyY2VudGFnZXMgfSA6ICRzdHlsZSxcbiAgICAkd2lkdGg6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5leHBvcnQgdHlwZSBTdHlsZVBsdWdpblByb3BzID0geyAkc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzOyBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfTtcblxuZXhwb3J0IGNvbnN0IHN0eWxlUGx1Z2luID0gZ2V0UGx1Z2luPFN0eWxlUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCAkc3R5bGUgPSBwcm9wcy4kc3R5bGUgfHwge307XG5cbiAgY29uc3Qgc3R5bGUgPSBwcm9wcy5zdHlsZSB8fCB7fTtcblxuICByZXR1cm4ge1xuICAgIHN0eWxlOiB7IC4uLiRzdHlsZSwgLi4uc3R5bGUgfSxcbiAgICAkc3R5bGU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJtYXgtaGVpZ2h0LS1mdWxsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tZnVsbF9fXy1pb2pmXCIsXG4gIFwibWF4LWhlaWdodC0temVyb1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXplcm9fX19kNTd3V1wiLFxuICBcIm1heC1oZWlnaHQtLTR4c1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTR4c19fX0xKVUJuXCIsXG4gIFwibWF4LWhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hzX19fLTJXby1cIixcbiAgXCJtYXgtaGVpZ2h0LS14eHNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS14eHNfX19oRnJCZVwiLFxuICBcIm1heC1oZWlnaHQtLXhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teHNfX19jMnBhRFwiLFxuICBcIm1heC1oZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS1zX19fQWNwNlRcIixcbiAgXCJtYXgtaGVpZ2h0LS1tXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tbV9fX1Z6b1E5XCIsXG4gIFwibWF4LWhlaWdodC0tbFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLWxfX19XZ2xxYlwiLFxuICBcIm1heC1oZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teGxfX19MVW1sSlwiLFxuICBcIm1heC1oZWlnaHQtLXh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXh4bF9fX2RSM3pLXCIsXG4gIFwibWF4LWhlaWdodC0tM3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hsX19fYnViVERcIixcbiAgXCJtYXgtaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS00eGxfX19iZFpYNlwiLFxuICBcIm1heC1oZWlnaHQtLTV4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTV4bF9fX1RVVEFSXCIsXG4gIFwibWF4LWhlaWdodC0tNnhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tNnhsX19fR2MtSGxcIixcbiAgXCJtYXgtaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS03eGxfX19ZeGR0WFwiLFxuICBcIm1heC1oZWlnaHQtLTh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTh4bF9fX0EyV3ZkXCIsXG4gIFwibWF4LWhlaWdodC0tOXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tOXhsX19fSnZyR0pcIixcbiAgXCJtYXgtaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tMTB4bF9fX3dMUlF1XCIsXG4gIFwibWF4LWhlaWdodC0tMTF4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTExeGxfX19nVTN4SVwiLFxuICBcIm1pbi1oZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS16ZXJvX19fUEJWNDdcIixcbiAgXCJtaW4taGVpZ2h0LS00eHNcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS00eHNfX19WM04tYlwiLFxuICBcIm1pbi1oZWlnaHQtLTN4c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4c19fX3RnRFFRXCIsXG4gIFwibWluLWhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0teHhzX19fLXFoU3pcIixcbiAgXCJtaW4taGVpZ2h0LS14c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhzX19fWklwcXVcIixcbiAgXCJtaW4taGVpZ2h0LS1zXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tc19fX3hNaUdjXCIsXG4gIFwibWluLWhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLW1fX19WRVdMclwiLFxuICBcIm1pbi1oZWlnaHQtLWxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS1sX19fYTYtRjdcIixcbiAgXCJtaW4taGVpZ2h0LS14bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhsX19fLXlsRnVcIixcbiAgXCJtaW4taGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS14eGxfX183SzZmLVwiLFxuICBcIm1pbi1oZWlnaHQtLTN4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4bF9fXzBGWlFtXCIsXG4gIFwibWluLWhlaWdodC0tNHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tNHhsX19fY0dvSmtcIixcbiAgXCJtaW4taGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS01eGxfX19mVjNhT1wiLFxuICBcIm1pbi1oZWlnaHQtLTZ4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTZ4bF9fX0ZrVUdDXCIsXG4gIFwibWluLWhlaWdodC0tN3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tN3hsX19fQ3Npd1ZcIixcbiAgXCJtaW4taGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS04eGxfX19oLS1ES1wiLFxuICBcIm1pbi1oZWlnaHQtLTl4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTl4bF9fX25GTVNIXCIsXG4gIFwibWluLWhlaWdodC0tMTB4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTEweGxfX19LYS1jQVwiLFxuICBcIm1pbi1oZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS0xMXhsX19fZlFzZ2NcIixcbiAgXCJoZWlnaHQtLXN0cmV0Y2hcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXN0cmV0Y2hfX19yWWFZblwiLFxuICBcImhlaWdodC0tZnVsbFwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tZnVsbF9fX3ZXeGllXCIsXG4gIFwiaGVpZ2h0LS1hdXRvXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1hdXRvX19fNjduRk5cIixcbiAgXCJoZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXplcm9fX19BcUEwUFwiLFxuICBcImhlaWdodC0tNHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS00eHNfX19GZEowaFwiLFxuICBcImhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0zeHNfX19hc1VKYlwiLFxuICBcImhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14eHNfX19ZcVRxcFwiLFxuICBcImhlaWdodC0teHNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXhzX19fbE5SdFlcIixcbiAgXCJoZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXNfX19IN20tLVwiLFxuICBcImhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tbV9fX0NtTHAxXCIsXG4gIFwiaGVpZ2h0LS1sXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1sX19fMnRra2hcIixcbiAgXCJoZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14bF9fXzd4QkppXCIsXG4gIFwiaGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXh4bF9fX0NqU3U1XCIsXG4gIFwiaGVpZ2h0LS0zeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTN4bF9fX3BVZHZOXCIsXG4gIFwiaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTR4bF9fX1FIWll5XCIsXG4gIFwiaGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTV4bF9fX1diZ283XCIsXG4gIFwiaGVpZ2h0LS02eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTZ4bF9fX2t3YzhhXCIsXG4gIFwiaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTd4bF9fX211TzFsXCIsXG4gIFwiaGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTh4bF9fXzlwRU1OXCIsXG4gIFwiaGVpZ2h0LS05eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTl4bF9fXzZlNDZRXCIsXG4gIFwiaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0xMHhsX19fWGdYcC1cIixcbiAgXCJoZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTExeGxfX19hZHd1SFwiXG59OyIsICJpbXBvcnQgaGVpZ2h0U3R5bGVzIGZyb20gXCIuL2hlaWdodC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlICRIZWlnaHRQcm9wcyA9IHtcbiAgaGVpZ2h0PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBcImF1dG9cIjtcbiAgbWluPzogVFNoaXJ0U2l6ZTtcbiAgbWF4PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xufTtcblxuZXhwb3J0IHR5cGUgSGVpZ2h0UGx1Z2luUHJvcHMgPSB7ICRoZWlnaHQ/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCBcImF1dG9cIiB8IFwic3RyZXRjaFwiIHwgJEhlaWdodFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBoZWlnaHRQbHVnaW4gPSBnZXRQbHVnaW48SGVpZ2h0UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGhlaWdodCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgaGVpZ2h0LCBtaW4sIG1heCB9ID0gdHlwZW9mICRoZWlnaHQgPT09IFwic3RyaW5nXCIgPyB7IGhlaWdodDogJGhlaWdodCB9IDogKCRoZWlnaHQgPz8ge30pO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgaGVpZ2h0ID8gaGVpZ2h0U3R5bGVzW2BoZWlnaHQtLSR7aGVpZ2h0fWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluID8gaGVpZ2h0U3R5bGVzW2BtaW4taGVpZ2h0LS0ke21pbn1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIG1heCA/IGhlaWdodFN0eWxlc1tgbWF4LWhlaWdodC0tJHttYXh9YF0gOiB1bmRlZmluZWQsXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG4gICAgJGhlaWdodDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBjb2xvclN0eWxlcyBmcm9tIFwiLi9jb2xvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSBUZXh0Q29sb3IgPSBDb2xvciB8IFRleHRDb2xvckFsaWFzO1xuXG5leHBvcnQgdHlwZSAkQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogVGV4dENvbG9yO1xuICByZWFkb25seSBob3Zlcj86IFRleHRDb2xvcjtcbiAgcmVhZG9ubHkgZm9jdXM/OiBUZXh0Q29sb3I7XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogVGV4dENvbG9yO1xufTtcblxuZXhwb3J0IHR5cGUgQ29sb3JQbHVnaW5Qcm9wcyA9IHsgcmVhZG9ubHkgJGNvbG9yPzogVGV4dENvbG9yIHwgJENvbG9yUHJvcHMgfTtcbmV4cG9ydCB0eXBlIFRleHRDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuXG5jb25zdCBhbGlhc1RvTm9taW5hbCA9IHtcbiAgdGV4dE11dGVkOiBcImdyZXkyNVwiLFxuICB0ZXh0RGVmYXVsdDogXCJncmV5MjBcIixcbiAgdGV4dEhpZ2hsaWdodDogXCJncmV5MTBcIixcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IGlzVGV4dENvbG9yQWxpYXMgPSAoY29sb3I6IFRleHRDb2xvcik6IGNvbG9yIGlzIFRleHRDb2xvckFsaWFzID0+IGNvbG9yIGluIGFsaWFzVG9Ob21pbmFsO1xuXG5leHBvcnQgY29uc3QgY29sb3JQbHVnaW4gPSBnZXRQbHVnaW48Q29sb3JQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkY2xhc3NOYW1lLCAkY29sb3IgfSA9IHByb3BzO1xuICBjb25zdCB7IG5vcm1hbCwgaG92ZXIsIGZvY3VzLCBkaXNhYmxlZCB9ID0gdHlwZW9mICRjb2xvciA9PT0gXCJzdHJpbmdcIiA/IHsgbm9ybWFsOiAkY29sb3IgfSA6ICgkY29sb3IgPz8ge30pO1xuXG4gIGNvbnN0IG5vcm1hbENvbG9yID0gbm9ybWFsID8gKGlzVGV4dENvbG9yQWxpYXMobm9ybWFsKSA/IGFsaWFzVG9Ob21pbmFsW25vcm1hbF0gOiBub3JtYWwpIDogdW5kZWZpbmVkO1xuICBjb25zdCBob3ZlckNvbG9yID0gaG92ZXIgPyAoaXNUZXh0Q29sb3JBbGlhcyhob3ZlcikgPyBhbGlhc1RvTm9taW5hbFtob3Zlcl0gOiBob3ZlcikgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGZvY3VzQ29sb3IgPSBmb2N1cyA/IChpc1RleHRDb2xvckFsaWFzKGZvY3VzKSA/IGFsaWFzVG9Ob21pbmFsW2ZvY3VzXSA6IGZvY3VzKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZGlzYWJsZWRDb2xvciA9IGRpc2FibGVkID8gKGlzVGV4dENvbG9yQWxpYXMoZGlzYWJsZWQpID8gYWxpYXNUb05vbWluYWxbZGlzYWJsZWRdIDogZGlzYWJsZWQpIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgJGNsYXNzTmFtZSxcbiAgICAgIG5vcm1hbENvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLS0ke25vcm1hbENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgICAgaG92ZXJDb2xvciA/IGNvbG9yU3R5bGVzW2Bjb2xvci1ob3Zlci0tJHtob3ZlckNvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgICAgZm9jdXNDb2xvciA/IGNvbG9yU3R5bGVzW2Bjb2xvci1mb2N1cy0tJHtmb2N1c0NvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgICAgZGlzYWJsZWRDb2xvciA/IGNvbG9yU3R5bGVzW2Bjb2xvci1kaXNhYmxlZC0tJHtkaXNhYmxlZENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIF0sXG4gICAgJGNvbG9yOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImNvbG9yLS1pbmhlcml0XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0taW5oZXJpdF9fX0dNcC1hXCIsXG4gIFwiY29sb3ItaG92ZXItLWluaGVyaXRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1pbmhlcml0X19fZkdMSzZcIixcbiAgXCJjb2xvci1mb2N1cy0taW5oZXJpdFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWluaGVyaXRfX195R2ZDZVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1pbmhlcml0XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0taW5oZXJpdF9fX3M5TUNJXCIsXG4gIFwiY29sb3ItLXdoaXRlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0td2hpdGVfX19mOGMxc1wiLFxuICBcImNvbG9yLWhvdmVyLS13aGl0ZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdoaXRlX19fTTZhUmdcIixcbiAgXCJjb2xvci1mb2N1cy0td2hpdGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS13aGl0ZV9fX2k2dVl6XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLXdoaXRlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0td2hpdGVfX19udGpZRVwiLFxuICBcImNvbG9yLS10cmFuc3BhcmVudFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLXRyYW5zcGFyZW50X19fMXZmcnZcIixcbiAgXCJjb2xvci1ob3Zlci0tdHJhbnNwYXJlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS10cmFuc3BhcmVudF9fX3htN0JEXCIsXG4gIFwiY29sb3ItZm9jdXMtLXRyYW5zcGFyZW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tdHJhbnNwYXJlbnRfX19wZGUtV1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS10cmFuc3BhcmVudFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLXRyYW5zcGFyZW50X19fWjBRdVVcIixcbiAgXCJjb2xvci0tZ3JleTEwMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkxMDBfX19DcER6dlwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5MTAwXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tZ3JleTEwMF9fX0dGQ29tXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXkxMDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5MTAwX19fQU03b01cIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tZ3JleTEwMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkxMDBfX184U1J1SlwiLFxuICBcImNvbG9yLS1ncmV5ODBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5ODBfX19ENzFmblwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5ODBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5ODBfX19zQkl4YlwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5ODBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5ODBfX184UGx5b1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5ODBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5ODBfX193MW5wY1wiLFxuICBcImNvbG9yLS1ncmV5NjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5NjBfX19VVDI4WFwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5NjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5NjBfX194ZlptYlwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5NjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5NjBfX19rd20yR1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5NjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5NjBfX19tZlZncVwiLFxuICBcImNvbG9yLS1ncmV5NDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5NDBfX19pUk96UlwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5NDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5NDBfX19yYk4wNFwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5NDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5NDBfX19vSVJVZlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5NDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5NDBfX19OaVp4aVwiLFxuICBcImNvbG9yLS1ncmV5MzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MzBfX19Md25MMlwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5MzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5MzBfX19YN2gtaFwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5MzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5MzBfX19RVWI0U1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5MzBfX19LcTlnV1wiLFxuICBcImNvbG9yLS1ncmV5MjVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MjVfX19FTlQ1b1wiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5MjVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5MjVfX190WXlnRFwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5MjVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5MjVfX19UeGk1bFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MjVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5MjVfX19ibS0xY1wiLFxuICBcImNvbG9yLS1ncmV5MjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MjBfX19FRjJPTFwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5MjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5MjBfX191UHRYVVwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5MjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5MjBfX193M3JXY1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5MjBfX192cHV5MVwiLFxuICBcImNvbG9yLS1ncmV5MTBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MTBfX19sNWFacFwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5MTBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5MTBfX180QXBjclwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5MTBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5MTBfX19Wd1c3MVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MTBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5MTBfX19ZNXF5d1wiLFxuICBcImNvbG9yLS1ncmV5NzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5NzBfX19DOUhITVwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5NzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5NzBfX18za3J0TFwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5NzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5NzBfX19wM2lleFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5NzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5NzBfX184NkpxVlwiLFxuICBcImNvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fXy0zVGRkXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5ODBBbHBoYTg1X19fRG9mbzBcIixcbiAgXCJjb2xvci1mb2N1cy0tZ3JleTgwQWxwaGE4NVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXk4MEFscGhhODVfX19UNEJnRlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5ODBBbHBoYTg1XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tZ3JleTgwQWxwaGE4NV9fX2VSM3pzXCIsXG4gIFwiY29sb3ItLXByaW1hcnlcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1wcmltYXJ5X19fMDhXblZcIixcbiAgXCJjb2xvci1ob3Zlci0tcHJpbWFyeVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXByaW1hcnlfX19WdC0zZlwiLFxuICBcImNvbG9yLWZvY3VzLS1wcmltYXJ5XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tcHJpbWFyeV9fX3Q1cjAyXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLXByaW1hcnlcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1wcmltYXJ5X19fMFhzazlcIixcbiAgXCJjb2xvci0tc3VjY2Vzc1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLXN1Y2Nlc3NfX193b1RGMlwiLFxuICBcImNvbG9yLWhvdmVyLS1zdWNjZXNzXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tc3VjY2Vzc19fXzdFSVdjXCIsXG4gIFwiY29sb3ItZm9jdXMtLXN1Y2Nlc3NcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1zdWNjZXNzX19fS1owZGlcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tc3VjY2Vzc1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLXN1Y2Nlc3NfX19OZTJXSVwiLFxuICBcImNvbG9yLS1ub3RpY2VcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ub3RpY2VfX182RDZLR1wiLFxuICBcImNvbG9yLWhvdmVyLS1ub3RpY2VcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ub3RpY2VfX19lT2RVcFwiLFxuICBcImNvbG9yLWZvY3VzLS1ub3RpY2VcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ub3RpY2VfX19OZ1VSTFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ub3RpY2VcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ub3RpY2VfX19zRG84clwiLFxuICBcImNvbG9yLS13YXJuaW5nXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0td2FybmluZ19fX2ZLYndkXCIsXG4gIFwiY29sb3ItaG92ZXItLXdhcm5pbmdcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS13YXJuaW5nX19fR2oyaE1cIixcbiAgXCJjb2xvci1mb2N1cy0td2FybmluZ1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLXdhcm5pbmdfX19jQm10OVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS13YXJuaW5nXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0td2FybmluZ19fX3JYRGJSXCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tY3JpdGljYWxfX19zaEZCcVwiLFxuICBcImNvbG9yLWhvdmVyLS1jcml0aWNhbFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNyaXRpY2FsX19fUlFXWllcIixcbiAgXCJjb2xvci1mb2N1cy0tY3JpdGljYWxcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1jcml0aWNhbF9fXzlZbENZXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tY3JpdGljYWxfX19oMzctM1wiLFxuICBcImNvbG9yLS1zdWNjZXNzVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fRGQwUnlcIixcbiAgXCJjb2xvci1ob3Zlci0tc3VjY2Vzc1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1zdWNjZXNzVGludF9fX0xLbHpnXCIsXG4gIFwiY29sb3ItZm9jdXMtLXN1Y2Nlc3NUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tc3VjY2Vzc1RpbnRfX19iUVlocFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1zdWNjZXNzVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLXN1Y2Nlc3NUaW50X19fbHNtSmhcIixcbiAgXCJjb2xvci0td2FybmluZ1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS13YXJuaW5nVGludF9fX2ozUFpYXCIsXG4gIFwiY29sb3ItaG92ZXItLXdhcm5pbmdUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0td2FybmluZ1RpbnRfX19qbjF3dVwiLFxuICBcImNvbG9yLWZvY3VzLS13YXJuaW5nVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLXdhcm5pbmdUaW50X19fQzZ6bkRcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0td2FybmluZ1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13YXJuaW5nVGludF9fX1c2akk4XCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsVGludF9fX3lSSmFBXCIsXG4gIFwiY29sb3ItaG92ZXItLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNyaXRpY2FsVGludF9fX1Zzb041XCIsXG4gIFwiY29sb3ItZm9jdXMtLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWNyaXRpY2FsVGludF9fXzh0RG1nXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsVGludF9fX1RBQkhrXCIsXG4gIFwiY29sb3ItLWxpbmtcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1saW5rX19fblNNbTlcIixcbiAgXCJjb2xvci1ob3Zlci0tbGlua1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWxpbmtfX19HbmlZM1wiLFxuICBcImNvbG9yLWZvY3VzLS1saW5rXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tbGlua19fXzg2SnRmXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWxpbmtcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1saW5rX19fRm9KNVhcIixcbiAgXCJjb2xvci0tY29kZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWNvZGVfX19uQ09qQVwiLFxuICBcImNvbG9yLWhvdmVyLS1jb2RlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tY29kZV9fX1Y1dXVWXCIsXG4gIFwiY29sb3ItZm9jdXMtLWNvZGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1jb2RlX19fSUFLN2RcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tY29kZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWNvZGVfX193M1ZVd1wiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGdyYWRpZW50U3R5bGVzIGZyb20gXCIuL2dyYWRpZW50Lm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEdyYWRpZW50UGx1Z2luUHJvcHMgPSB7ICRncmFkaWVudD86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGdyYWRpZW50UGx1Z2luID0gZ2V0UGx1Z2luPEdyYWRpZW50UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcHJvcHMuJGdyYWRpZW50ID8gZ3JhZGllbnRTdHlsZXMuZ3JhZGllbnQgOiB1bmRlZmluZWRdLFxuICAkZ3JhZGllbnQ6IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImdyYWRpZW50XCI6IFwiZ3JhZGllbnQtbW9kdWxlX19ncmFkaWVudF9fX01EQnZGXCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBEcmFnZ2FibGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL2dldC1kcmFnZ2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vZHJhZ2dhYmxlLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgZHJhZ2dhYmxlUGx1Z2luID0gZ2V0UGx1Z2luPERyYWdnYWJsZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRkcmFnZ2FibGUpIHtcbiAgICByZXR1cm4geyAkZHJhZ2dhYmxlOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IFtkcmFnZ2luZywgc2V0RHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IHsgY29udGV4dCwgaXRlbSB9ID0gcHJvcHMuJGRyYWdnYWJsZTtcblxuICBjb25zdCBkcmFnZ2VkSXRlbVN0YXRlID0gdXNlU3luY0luamVjdChkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkcmFnZ2FibGU6IHRydWUsXG5cbiAgICAkdmlzdWFsbHlIaWRkZW46IGRyYWdnaW5nLFxuXG4gICAgb25EcmFnU3RhcnQ6IGFjdGlvbigoZXZlbnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gXCJtb3ZlXCI7XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIHByb3BzLm9uRHJhZ1N0YXJ0Py4oZXZlbnQpO1xuXG4gICAgICBtYWtlQ2hyb21pdW1Ob3RHbGl0Y2hXaGVuRHJhZ2dpbmcoZXZlbnQpO1xuXG4gICAgICBkcmFnZ2VkSXRlbVN0YXRlLnNldChpdGVtKTtcblxuICAgICAgLy8gRG9uJ3Qgc2V0IGRyYWdnaW5nIHRvbyBlYXJseSwgYmVjYXVzZSBpdCB3b3VsZCBoaWRlIHRoZSBcImRyYWcgcHJldmlld1wiIGZvciBlbGVtZW50IGJlaW5nIGRyYWdnZWQuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0RHJhZ2dpbmcodHJ1ZSk7XG4gICAgICB9LCAwKTtcbiAgICB9KSxcblxuICAgIG9uRHJhZ0VuZDogYWN0aW9uKChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25EcmFnRW5kPy4oZXZlbnQpO1xuXG4gICAgICBkcmFnZ2VkSXRlbVN0YXRlLnNldCh1bmRlZmluZWQpO1xuICAgICAgc2V0RHJhZ2dpbmcoZmFsc2UpO1xuICAgIH0pLFxuXG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHN0eWxlcy5kcmFnZ2FibGVdLFxuXG4gICAgJGRyYWdnYWJsZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmNvbnN0IG1ha2VDaHJvbWl1bU5vdEdsaXRjaFdoZW5EcmFnZ2luZyA9IChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShcInRleHQvcGxhaW5cIiwgXCJzdHViLWRhdGEtdG8tZml4LWNocm9taXVtXCIpO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJkcmFnZ2FibGVcIjogXCJkcmFnZ2FibGUtbW9kdWxlX19kcmFnZ2FibGVfX19iakNBM1wiXG59OyIsICJpbXBvcnQgeyBkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgeyBtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUgfSBmcm9tIFwiLi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IERyb3BwYWJsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBkcm9wcGFibGVQbHVnaW4gPSBnZXRQbHVnaW48RHJvcHBhYmxlUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRkcm9wcGFibGUpIHtcbiAgICByZXR1cm4geyAkZHJvcHBhYmxlOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgY29udGV4dCwgb25Ecm9wIH0gPSBwcm9wcy4kZHJvcHBhYmxlO1xuXG4gIGNvbnN0IGRyYWdnZWRJdGVtU3RhdGUgPSB1c2VTeW5jSW5qZWN0KGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlLCBjb250ZXh0KTtcbiAgY29uc3Qgc29tZSA9IHVzZVN5bmNJbmplY3QobWFrZVN1cmVEcmFnQW5kRHJvcEV2ZW50c0hhdmVUaW1lVG9IYXBwZW5JbmplY3RhYmxlKTtcblxuICBjb25zdCBkcmFnZ2VkSXRlbSA9IGRyYWdnZWRJdGVtU3RhdGUuZ2V0KCk7XG5cbiAgcmV0dXJuIHtcbiAgICBvbkRyYWdPdmVyOiAoZXZlbnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIHByb3BzLm9uRHJhZ092ZXI/LihldmVudCk7XG5cbiAgICAgIGlmIChkcmFnZ2VkSXRlbSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBvbkRyb3A6IChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25Ecm9wPy4oZXZlbnQpO1xuXG4gICAgICBpZiAoZHJhZ2dlZEl0ZW0pIHtcbiAgICAgICAgc29tZSgoKSA9PiB7XG4gICAgICAgICAgb25Ecm9wKGRyYWdnZWRJdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgICRkcm9wcGFibGU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHJhbnNpdGlvblN0eWxlcyBmcm9tIFwiLi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIFRyYW5zaXRpb25QbHVnaW5Qcm9wcyA9IHsgJHRyYW5zaXRpb24/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2l0aW9uUGx1Z2luID0gZ2V0UGx1Z2luPFRyYW5zaXRpb25QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCB7IFt0cmFuc2l0aW9uU3R5bGVzLnRyYW5zaXRpb25dOiAhIXByb3BzLiR0cmFuc2l0aW9uIH1dLFxuICAkdHJhbnNpdGlvbjogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvbi5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInRyYW5zaXRpb25cIjogXCJ0cmFuc2l0aW9uLW1vZHVsZV9fdHJhbnNpdGlvbl9fX1N3d09FXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgb2Zmc2V0U3R5bGVzIGZyb20gXCIuL29mZnNldC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3Rpb24gfSBmcm9tIFwiLi4vX3NoYXJlZC9kaXJlY3Rpb25zXCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBPZmZzZXRQbHVnaW5Qcm9wcyA9IHsgJG9mZnNldD86IHsgZGlyZWN0aW9uOiBEaXJlY3Rpb247IHNpemU6IFRTaGlydFNpemUgfSB9O1xuXG5leHBvcnQgY29uc3Qgb2Zmc2V0UGx1Z2luID0gZ2V0UGx1Z2luPE9mZnNldFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRvZmZzZXQpIHtcbiAgICByZXR1cm4geyAkb2Zmc2V0OiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIG9mZnNldFN0eWxlc1tgb2Zmc2V0X18ke3Byb3BzLiRvZmZzZXQuZGlyZWN0aW9ufS0tJHtwcm9wcy4kb2Zmc2V0LnNpemV9YF1dLFxuXG4gICAgJG9mZnNldDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcIm9mZnNldF9fdG9wLS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXplcm9fX19hcHJPclwiLFxuICBcIm9mZnNldF9fYm90dG9tLS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLXplcm9fX19iRk55NFwiLFxuICBcIm9mZnNldF9fbGVmdC0temVyb1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0temVyb19fXzVLZE14XCIsXG4gIFwib2Zmc2V0X19yaWdodC0temVyb1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXplcm9fX19EcmowdVwiLFxuICBcIm9mZnNldF9fdG9wLS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tNHhzX19fRmE4emVcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tNHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTR4c19fX0pjN1p3XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTR4c19fX3Q3akd6XCIsXG4gIFwib2Zmc2V0X19yaWdodC0tNHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tNHhzX19fMm1jTFpcIixcbiAgXCJvZmZzZXRfX3RvcC0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTN4c19fX2hIeEFLXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTN4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS0zeHNfX19xUDNMdlwiLFxuICBcIm9mZnNldF9fbGVmdC0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0zeHNfX19ObUQ3aVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTN4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTN4c19fXzlZbHVlXCIsXG4gIFwib2Zmc2V0X190b3AtLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS14eHNfX19aQUt4b1wiLFxuICBcIm9mZnNldF9fYm90dG9tLS14eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0teHhzX19fazlGNHhcIixcbiAgXCJvZmZzZXRfX2xlZnQtLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0teHhzX19fRUVmNERcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS14eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS14eHNfX18tSjc1S1wiLFxuICBcIm9mZnNldF9fdG9wLS14c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS14c19fX2lycG5hXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLXhzX19fM0dYb0hcIixcbiAgXCJvZmZzZXRfX2xlZnQtLXhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS14c19fXzdXWUpJXCIsXG4gIFwib2Zmc2V0X19yaWdodC0teHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS14c19fX3FZLWxPXCIsXG4gIFwib2Zmc2V0X190b3AtLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tc19fX05kUktxXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tc19fX1lLZjllXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS1zXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS1zX19fbWl4cEFcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS1zXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tc19fX202amY1XCIsXG4gIFwib2Zmc2V0X190b3AtLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tbV9fX0VYa3FpXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tbV9fX092bFlyXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS1tXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS1tX19fWFMtUEdcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS1tXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tbV9fX28welotXCIsXG4gIFwib2Zmc2V0X190b3AtLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tbF9fXzBiR2FQXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tbF9fX1MxLUxXXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS1sXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS1sX19faFMxYjNcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS1sXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tbF9fX3ZRNFl6XCIsXG4gIFwib2Zmc2V0X190b3AtLXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXhsX19fNk1mS1ZcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0teGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0teGxfX19kZ2JXV1wiLFxuICBcIm9mZnNldF9fbGVmdC0teGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXhsX19fMGFXQjVcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS14bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXhsX19feVB6OE9cIixcbiAgXCJvZmZzZXRfX3RvcC0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXh4bF9fX2l2SlJkXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXh4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS14eGxfX19adEU2WlwiLFxuICBcIm9mZnNldF9fbGVmdC0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS14eGxfX180bEstRVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXh4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXh4bF9fX0VNOHJCXCIsXG4gIFwib2Zmc2V0X190b3AtLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS0zeGxfX19BOUJrblwiLFxuICBcIm9mZnNldF9fYm90dG9tLS0zeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tM3hsX19fekM4LWFcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tM3hsX19fV3JMLVRcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS0zeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS0zeGxfX19uZVdhcFwiLFxuICBcIm9mZnNldF9fdG9wLS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tNHhsX19fQldROWlcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tNHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTR4bF9fXzhYNGtFXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTR4bF9fX0hjNDBUXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tNHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tNHhsX19fc1JqR1FcIixcbiAgXCJvZmZzZXRfX3RvcC0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTV4bF9fXzZ1UlhZXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTV4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS01eGxfX19uV2M2blwiLFxuICBcIm9mZnNldF9fbGVmdC0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS01eGxfX19Wa1d6SlwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTV4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTV4bF9fX2NuZ0tFXCIsXG4gIFwib2Zmc2V0X190b3AtLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS02eGxfX190cjdoSFwiLFxuICBcIm9mZnNldF9fYm90dG9tLS02eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tNnhsX19fQ1lVMU1cIixcbiAgXCJvZmZzZXRfX2xlZnQtLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tNnhsX19fMEl1TWJcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS02eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS02eGxfX18tMXN3b1wiLFxuICBcIm9mZnNldF9fdG9wLS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tN3hsX19fTjctWGRcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tN3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTd4bF9fXy1wQWh5XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTd4bF9fX214VnJrXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tN3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tN3hsX19fbnp1bFBcIixcbiAgXCJvZmZzZXRfX3RvcC0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTh4bF9fX2VNLTdXXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTh4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS04eGxfX19lbnBFbVwiLFxuICBcIm9mZnNldF9fbGVmdC0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS04eGxfX19qaUZZblwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTh4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTh4bF9fX0ZOcU5zXCIsXG4gIFwib2Zmc2V0X190b3AtLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS05eGxfX18tQ21oOVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS05eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tOXhsX19fdHdFM3RcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tOXhsX19fNzVtdWJcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS05eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS05eGxfX19rQ1NzQ1wiLFxuICBcIm9mZnNldF9fdG9wLS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTEweGxfX19qbGJoWlwiLFxuICBcIm9mZnNldF9fYm90dG9tLS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTEweGxfX19yZXlUcVwiLFxuICBcIm9mZnNldF9fbGVmdC0tMTB4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tMTB4bF9fXzlwM2NuXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tMTB4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTEweGxfX190LXZvN1wiLFxuICBcIm9mZnNldF9fdG9wLS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTExeGxfX18wbnJaYVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTExeGxfX193Y2ZXZ1wiLFxuICBcIm9mZnNldF9fbGVmdC0tMTF4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tMTF4bF9fX3NJdGc1XCIsXG4gIFwib2Zmc2V0X19yaWdodC0tMTF4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTExeGxfX19OVXAtblwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IG9mZnNldFN0eWxlcyBmcm9tIFwiLi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgRGlyZWN0aW9uIH0gZnJvbSBcIi4uL19zaGFyZWQvZGlyZWN0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyA9IHsgJG9mZnNldENoaWxkcmVuPzogeyBkaXJlY3Rpb246IERpcmVjdGlvbjsgc2l6ZTogVFNoaXJ0U2l6ZSB9IH07XG5cbmV4cG9ydCBjb25zdCBvZmZzZXRDaGlsZHJlblBsdWdpbiA9IGdldFBsdWdpbjxPZmZzZXRDaGlsZHJlblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRvZmZzZXRDaGlsZHJlbikge1xuICAgIHJldHVybiB7ICRvZmZzZXRDaGlsZHJlbjogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgICBvZmZzZXRTdHlsZXNbYG9mZnNldC1jaGlsZHJlbl9fJHtwcm9wcy4kb2Zmc2V0Q2hpbGRyZW4uZGlyZWN0aW9ufS0tJHtwcm9wcy4kb2Zmc2V0Q2hpbGRyZW4uc2l6ZX1gXSxcbiAgICBdLFxuXG4gICAgJG9mZnNldENoaWxkcmVuOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0temVyb19fXzhseUdpXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0temVyb19fX0RiSTNqXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS16ZXJvXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS16ZXJvX19faWhuU1hcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS16ZXJvXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0temVyb19fX1E0TFhPXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS00eHNfX19MZk0weFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNHhzX19fWWV5dzZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhzX19fVEFhREtcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS00eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS00eHNfX182aVdVb1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tM3hzX19fdXJraWdcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tM3hzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTN4c19fX3lYSDN6XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTN4c19fX2dBelZBXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hzX19fV3I0OGNcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLXh4c19fX2RxVFRTXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXh4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14eHNfX19FcDY2UlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14eHNfX185dlBZZFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXh4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXh4c19fX2p1dUtwXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLXhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLXhzX19fbnc1YWFcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHNfX19KZ0M2bFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0teHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXhzX19fY3h0VnhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXhzX19fMmlQNWdcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS1zX19fSG0yaXBcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1zX19fV2EzOE5cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXNfX19XV0JGaFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS1zX19fd3pGVjlcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS1tX19fWmpPQ01cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1tX19faXBEa1dcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLW1cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLW1fX19ZOHFEV1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLW1cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS1tX19fNFhKZnZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS1sX19fUXZUUm9cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1sX19fRUdrQVJcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLWxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLWxfX19VblVIdlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLWxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS1sX19falZOTlhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0teGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teGxfX19FTmNjWFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14bF9fX2JtcnNhXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0teGxfX19Lam8tY1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teGxfX19ESFJ1eVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teHhsX19fb25qZUFcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXh4bF9fX3YtMVRsXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXh4bF9fX2ktYzJoXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhsX19fcUcwODVcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTN4bF9fX0w5bXNRXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTN4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0zeGxfX193TU1ibVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0zeGxfX19iU1NPclwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTN4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTN4bF9fX2U5Vzd2XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS00eGxfX19WQWsteFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNHhsX19fRHl5NVhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhsX19fWDB4NWFcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS00eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS00eGxfX19RdWwtalwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tNXhsX19fZVc1UWtcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTV4bF9fX3BpYS1aXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTV4bF9fX2lBQWhvXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNXhsX19feGp1Q0xcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTZ4bF9fX0MwV3ZrXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTZ4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS02eGxfX184NHpwLVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS02eGxfX19pdWVCRlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTZ4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTZ4bF9fX1VOUS1CXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS03eGxfX19oUGNsY1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS03eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tN3hsX19fNVJad1FcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tN3hsX19fSElwNkJcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS03eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS03eGxfX19GaU9FSVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tOHhsX19fZ3Q0ZnVcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tOHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTh4bF9fX2ZQRU9EXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTh4bF9fXy10VGZQXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOHhsX19fZFVYUmhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTl4bF9fX2tSTkE2XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTl4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS05eGxfX19qYkhhQlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS05eGxfX19TRmdQbFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTl4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTl4bF9fX1RKaWVIXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTB4bF9fXy11dE9uXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTB4bF9fX2E1OXdUXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0xMHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0xMHhsX19fS2NlemVcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tMTB4bF9fX05vbVl1XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTF4bF9fX1NZdGduXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTF4bF9fX1A2MnU0XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0xMXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0xMXhsX19fZzBvb2VcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tMTF4bF9fX0VPV0wtXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgaGlkZGVuU3R5bGVzIGZyb20gXCIuL2hpZGRlbi5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBIaWRkZW5QbHVnaW5Qcm9wcyA9IHsgJGhpZGRlbj86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGhpZGRlblBsdWdpbiA9IGdldFBsdWdpbjxIaWRkZW5QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCB7IFtoaWRkZW5TdHlsZXMuaGlkZGVuXTogISFwcm9wcy4kaGlkZGVuIH1dLFxuXG4gICRoaWRkZW46IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiaGlkZGVuXCI6IFwiaGlkZGVuLW1vZHVsZV9faGlkZGVuX19fblVVaTFcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBtYXJnaW5TdHlsZXMgZnJvbSBcIi4vbWFyZ2luLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlIERpcmVjdGlvbmFsTWFyZ2luID0ge1xuICB0b3A/OiBUU2hpcnRTaXplO1xuICBib3R0b20/OiBUU2hpcnRTaXplO1xuICBsZWZ0PzogVFNoaXJ0U2l6ZTtcbiAgcmlnaHQ/OiBUU2hpcnRTaXplO1xuICBob3Jpem9udGFsPzogVFNoaXJ0U2l6ZTtcbiAgdmVydGljYWw/OiBUU2hpcnRTaXplO1xufTtcblxuZXhwb3J0IHR5cGUgTWFyZ2luUGx1Z2luUHJvcHMgPSB7ICRtYXJnaW4/OiBib29sZWFuIHwgRGlyZWN0aW9uYWxNYXJnaW4gfCBUU2hpcnRTaXplIHwgXCJhdXRvXCIgfTtcblxuZXhwb3J0IGNvbnN0IG1hcmdpblBsdWdpbiA9IGdldFBsdWdpbjxNYXJnaW5QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kbWFyZ2luKSB7XG4gICAgcmV0dXJuIHsgJG1hcmdpbjogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCBtYXJnaW4gPSBwcm9wcy4kbWFyZ2luID09PSB0cnVlID8gXCJ4c1wiIDogcHJvcHMuJG1hcmdpbjtcblxuICBpZiAoaXNTdHJpbmcobWFyZ2luKSkge1xuICAgIHJldHVybiB7XG4gICAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgbWFyZ2luU3R5bGVzW2BtYXJnaW4tLSR7bWFyZ2lufWBdXSxcbiAgICAgICRtYXJnaW46IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdG9wU2l6ZSA9IG1hcmdpbi50b3AgfHwgbWFyZ2luLnZlcnRpY2FsO1xuICBjb25zdCBib3R0b21TaXplID0gbWFyZ2luLmJvdHRvbSB8fCBtYXJnaW4udmVydGljYWw7XG4gIGNvbnN0IHJpZ2h0U2l6ZSA9IG1hcmdpbi5yaWdodCB8fCBtYXJnaW4uaG9yaXpvbnRhbDtcbiAgY29uc3QgbGVmdFNpemUgPSBtYXJnaW4ubGVmdCB8fCBtYXJnaW4uaG9yaXpvbnRhbDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgICB0b3BTaXplID8gbWFyZ2luU3R5bGVzW2BtYXJnaW5fX3RvcC0tJHt0b3BTaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHRTaXplID8gbWFyZ2luU3R5bGVzW2BtYXJnaW5fX3JpZ2h0LS0ke3JpZ2h0U2l6ZX1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIGJvdHRvbVNpemUgPyBtYXJnaW5TdHlsZXNbYG1hcmdpbl9fYm90dG9tLS0ke2JvdHRvbVNpemV9YF0gOiB1bmRlZmluZWQsXG4gICAgICBsZWZ0U2l6ZSA/IG1hcmdpblN0eWxlc1tgbWFyZ2luX19sZWZ0LS0ke2xlZnRTaXplfWBdIDogdW5kZWZpbmVkLFxuICAgIF0sXG4gICAgJG1hcmdpbjogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcIm1hcmdpbl9fdG9wLS16ZXJvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXplcm9fX19nR0xxd1wiLFxuICBcIm1hcmdpbl9fdG9wLS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tNHhzX19fRXY4cjdcIixcbiAgXCJtYXJnaW5fX3RvcC0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTN4c19fX200WU9aXCIsXG4gIFwibWFyZ2luX190b3AtLXh4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS14eHNfX19vcFh2cFwiLFxuICBcIm1hcmdpbl9fdG9wLS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS14c19fX0pJallDXCIsXG4gIFwibWFyZ2luX190b3AtLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tc19fX1lOOERJXCIsXG4gIFwibWFyZ2luX190b3AtLW1cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tbV9fX1h3ay1TXCIsXG4gIFwibWFyZ2luX190b3AtLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tbF9fX0tUV2lHXCIsXG4gIFwibWFyZ2luX190b3AtLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXhsX19fOUlPYlpcIixcbiAgXCJtYXJnaW5fX3RvcC0teHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXh4bF9fXzNNV3pwXCIsXG4gIFwibWFyZ2luX190b3AtLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS0zeGxfX19NOHhIM1wiLFxuICBcIm1hcmdpbl9fdG9wLS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tNHhsX19fcnZOSFJcIixcbiAgXCJtYXJnaW5fX3RvcC0tNXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTV4bF9fX0luRVJ4XCIsXG4gIFwibWFyZ2luX190b3AtLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS02eGxfX19QUy10NlwiLFxuICBcIm1hcmdpbl9fdG9wLS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tN3hsX19fUDVZYnpcIixcbiAgXCJtYXJnaW5fX3RvcC0tOHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTh4bF9fXzk2TW9LXCIsXG4gIFwibWFyZ2luX190b3AtLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS05eGxfX19vcGVEY1wiLFxuICBcIm1hcmdpbl9fdG9wLS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTEweGxfX19wdkY2eFwiLFxuICBcIm1hcmdpbl9fdG9wLS0xMXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTExeGxfX19wQnpBbVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXplcm9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS16ZXJvX19fQld3Nk9cIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS00eHNfX19yZFBPb1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTN4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTN4c19fXy1ZOU9PXCIsXG4gIFwibWFyZ2luX19yaWdodC0teHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0teHhzX19fSnJvQUFcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXhzX19fWmw4TWlcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS1zXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tc19fXzI0REluXCIsXG4gIFwibWFyZ2luX19yaWdodC0tbVwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLW1fX19aTGw2QlwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS1sX19fZUhTLUJcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS14bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXhsX19fSVc4ZDRcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS14eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS14eGxfX18tT0Q3TFwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTN4bF9fX3RHWVJSXCIsXG4gIFwibWFyZ2luX19yaWdodC0tNHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tNHhsX19fRVhxaDNcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS01eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS01eGxfX19DdVlWR1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTZ4bF9fX0RLZ0RUXCIsXG4gIFwibWFyZ2luX19yaWdodC0tN3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tN3hsX19fRnp4NGJcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS04eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS04eGxfX19FbFNXTVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTl4bF9fXzBvYVR4XCIsXG4gIFwibWFyZ2luX19yaWdodC0tMTB4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTEweGxfX19RNTVQQ1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTExeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS0xMXhsX19fcDAya25cIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS16ZXJvX19fbi1OVlFcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tNHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTR4c19fX2lKSmFhXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTN4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS0zeHNfX19md1FkMVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0teHhzX19fNlVhZkhcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0teHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0teHNfX196MkoxZVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS1zXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXNfX18tSEY2UVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLW1fX19KSk9SRVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS1sXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLWxfX19HSVpjRlwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS14bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14bF9fX000QXdOXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14eGxfX19UcjhtWlwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS0zeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tM3hsX19fLTBaLUhcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tNHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTR4bF9fXzRsa1NGXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS01eGxfX196aXpVUFwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS02eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tNnhsX19fc01tdEtcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tN3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTd4bF9fX0pPQVpyXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS04eGxfX19BNVE0Q1wiLFxuICBcIm1hcmdpbl9fYm90dG9tLS05eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tOXhsX19fN3VTenZcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tMTB4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS0xMHhsX19fSm1RSjVcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS0xMXhsX19fNktFWXNcIixcbiAgXCJtYXJnaW5fX2xlZnQtLXplcm9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXplcm9fX192Q3ZTb1wiLFxuICBcIm1hcmdpbl9fbGVmdC0tNHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS00eHNfX19sSzUteVwiLFxuICBcIm1hcmdpbl9fbGVmdC0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS0zeHNfX183LXhWLVwiLFxuICBcIm1hcmdpbl9fbGVmdC0teHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS14eHNfX19nZTZWSlwiLFxuICBcIm1hcmdpbl9fbGVmdC0teHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXhzX19fZHZyVWpcIixcbiAgXCJtYXJnaW5fX2xlZnQtLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXNfX19ETVpKMlwiLFxuICBcIm1hcmdpbl9fbGVmdC0tbVwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tbV9fXzVwZWR3XCIsXG4gIFwibWFyZ2luX19sZWZ0LS1sXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS1sX19fLVN4RElcIixcbiAgXCJtYXJnaW5fX2xlZnQtLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS14bF9fXzZOLWtaXCIsXG4gIFwibWFyZ2luX19sZWZ0LS14eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXh4bF9fX1lrYXBZXCIsXG4gIFwibWFyZ2luX19sZWZ0LS0zeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTN4bF9fXzhVVXV4XCIsXG4gIFwibWFyZ2luX19sZWZ0LS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTR4bF9fX2FxbDViXCIsXG4gIFwibWFyZ2luX19sZWZ0LS01eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTV4bF9fX2hRTnRwXCIsXG4gIFwibWFyZ2luX19sZWZ0LS02eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTZ4bF9fX1NxUDMxXCIsXG4gIFwibWFyZ2luX19sZWZ0LS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTd4bF9fX2Uwai1qXCIsXG4gIFwibWFyZ2luX19sZWZ0LS04eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTh4bF9fX3VrcFZ6XCIsXG4gIFwibWFyZ2luX19sZWZ0LS05eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTl4bF9fX2xOSEJUXCIsXG4gIFwibWFyZ2luX19sZWZ0LS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS0xMHhsX19fQ0JVU25cIixcbiAgXCJtYXJnaW5fX2xlZnQtLTExeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTExeGxfX191Y0tDOFwiLFxuICBcIm1hcmdpbi0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0temVyb19fX3lLTERIXCIsXG4gIFwibWFyZ2luLS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLTR4c19fXzduanNpXCIsXG4gIFwibWFyZ2luLS0zeHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLTN4c19fX2tXQmJlXCIsXG4gIFwibWFyZ2luLS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLXh4c19fX2ZaaVVhXCIsXG4gIFwibWFyZ2luLS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teHNfX18tdGRPalwiLFxuICBcIm1hcmdpbi0tc1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tc19fXzB4UDBnXCIsXG4gIFwibWFyZ2luLS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS1tX19fV2Q0cHBcIixcbiAgXCJtYXJnaW4tLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLWxfX195TVVYc1wiLFxuICBcIm1hcmdpbi0teGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLXhsX19fd2paUFJcIixcbiAgXCJtYXJnaW4tLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teHhsX19fRW00VDdcIixcbiAgXCJtYXJnaW4tLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tM3hsX19fY1FaSGZcIixcbiAgXCJtYXJnaW4tLTR4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tNHhsX19fN0lXck1cIixcbiAgXCJtYXJnaW4tLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tNXhsX19fY1NPVVFcIixcbiAgXCJtYXJnaW4tLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tNnhsX19fRjNiU21cIixcbiAgXCJtYXJnaW4tLTd4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tN3hsX19fMVVRbUpcIixcbiAgXCJtYXJnaW4tLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tOHhsX19fR0UwU3ZcIixcbiAgXCJtYXJnaW4tLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tOXhsX19faDVoaEVcIixcbiAgXCJtYXJnaW4tLTEweGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLTEweGxfX19kR0stUlwiLFxuICBcIm1hcmdpbi0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tMTF4bF9fXzN5eEJwXCIsXG4gIFwibWFyZ2luLS1hdXRvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS1hdXRvX19feTdnZjlcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB2aXN1YWxseUhpZGRlblN0eWxlcyBmcm9tIFwiLi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgVmlzdWFsbHlIaWRkZW5QbHVnaW5Qcm9wcyA9IHsgJHZpc3VhbGx5SGlkZGVuPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgdmlzdWFsbHlIaWRkZW5QbHVnaW4gPSBnZXRQbHVnaW48VmlzdWFsbHlIaWRkZW5QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCB7IFt2aXN1YWxseUhpZGRlblN0eWxlc1tcInZpc3VhbGx5LWhpZGRlblwiXV06ICEhcHJvcHMuJHZpc3VhbGx5SGlkZGVuIH1dLFxuXG4gICR2aXN1YWxseUhpZGRlbjogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJ2aXN1YWxseS1oaWRkZW5cIjogXCJ2aXN1YWxseS1oaWRkZW4tbW9kdWxlX192aXN1YWxseS1oaWRkZW5fX19EUHVsTVwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IG92ZXJmbG93U3R5bGVzIGZyb20gXCIuL292ZXJmbG93Lm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIE92ZXJmbG93ID0gXCJoaWRkZW5cIiB8IFwic2Nyb2xsXCIgfCBcImF1dG9cIiB8IFwidmlzaWJsZVwiO1xuXG5leHBvcnQgdHlwZSBPdmVyZmxvd1BsdWdpblByb3BzID0geyAkb3ZlcmZsb3c/OiBPdmVyZmxvdyB8IHsgeD86IE92ZXJmbG93OyB5PzogT3ZlcmZsb3c7IGhpZGVTY3JvbGxiYXI/OiBib29sZWFuIH0gfTtcblxuZXhwb3J0IGNvbnN0IG92ZXJmbG93UGx1Z2luID0gZ2V0UGx1Z2luPE92ZXJmbG93UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0ICRvdmVyZmxvdyA9IHByb3BzLiRvdmVyZmxvdztcblxuICBpZiAoISRvdmVyZmxvdykge1xuICAgIHJldHVybiB7ICRvdmVyZmxvdzogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB4ID0gdHlwZW9mICRvdmVyZmxvdyA9PT0gXCJzdHJpbmdcIiA/ICRvdmVyZmxvdyA6ICRvdmVyZmxvdy54O1xuICBjb25zdCB5ID0gdHlwZW9mICRvdmVyZmxvdyA9PT0gXCJzdHJpbmdcIiA/ICRvdmVyZmxvdyA6ICRvdmVyZmxvdy55O1xuICBjb25zdCBoaWRlU2Nyb2xsYmFyID0gdHlwZW9mICRvdmVyZmxvdyA9PT0gXCJzdHJpbmdcIiA/IGZhbHNlIDogJG92ZXJmbG93LmhpZGVTY3JvbGxiYXI7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuXG4gICAgICB7XG4gICAgICAgIFtvdmVyZmxvd1N0eWxlc1tgb3ZlcmZsb3dfX3gtLSR7eH1gXV06IHgsXG4gICAgICAgIFtvdmVyZmxvd1N0eWxlc1tgb3ZlcmZsb3dfX3ktLSR7eX1gXV06IHksXG4gICAgICAgIFtvdmVyZmxvd1N0eWxlc1tgb3ZlcmZsb3ctLWhpZGUtc2Nyb2xsYmFyYF1dOiBoaWRlU2Nyb2xsYmFyLFxuICAgICAgfSxcbiAgICBdLFxuXG4gICAgJG92ZXJmbG93OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vdmVyZmxvdy9vdmVyZmxvdy5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcIm92ZXJmbG93LS1oaWRlLXNjcm9sbGJhclwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3ctLWhpZGUtc2Nyb2xsYmFyX19fd2M2alBcIixcbiAgXCJvdmVyZmxvd19feS0taGlkZGVuXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feS0taGlkZGVuX19fVUJJWFFcIixcbiAgXCJvdmVyZmxvd19feS0tdmlzaWJsZVwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3ktLXZpc2libGVfX19zZk9iVVwiLFxuICBcIm92ZXJmbG93X195LS1zY3JvbGxcIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X195LS1zY3JvbGxfX195a1oyMVwiLFxuICBcIm92ZXJmbG93X195LS1hdXRvXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feS0tYXV0b19fXzFPTkhLXCIsXG4gIFwib3ZlcmZsb3dfX3gtLWhpZGRlblwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3gtLWhpZGRlbl9fX0xLM1VoXCIsXG4gIFwib3ZlcmZsb3dfX3gtLXZpc2libGVcIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X194LS12aXNpYmxlX19fdS0tNkZcIixcbiAgXCJvdmVyZmxvd19feC0tc2Nyb2xsXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feC0tc2Nyb2xsX19fYWlJSDZcIixcbiAgXCJvdmVyZmxvd19feC0tYXV0b1wiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3gtLWF1dG9fX19TNm9WTFwiXG59OyIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mbGV4LWNoaWxkL2ZsZXgtY2hpbGQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJmbGV4LWNoaWxkXCI6IFwiZmxleC1jaGlsZC1tb2R1bGVfX2ZsZXgtY2hpbGRfX183QmRoZFwiLFxuICBcImZsZXgtY2hpbGQtLXNocmlua2FibGVcIjogXCJmbGV4LWNoaWxkLW1vZHVsZV9fZmxleC1jaGlsZC0tc2hyaW5rYWJsZV9fXzZINS0tXCIsXG4gIFwiZmxleC1jaGlsZC0tZml4ZWRcIjogXCJmbGV4LWNoaWxkLW1vZHVsZV9fZmxleC1jaGlsZC0tZml4ZWRfX19GS2V0TFwiXG59OyIsICJpbXBvcnQgZmxleENoaWxkU3R5bGVzIGZyb20gXCIuL2ZsZXgtY2hpbGQubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBzdHlsZVBsdWdpbiB9IGZyb20gXCIuLi9zdHlsZS9zdHlsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5cbi8qKlxuICogLSBgdHJ1ZWA6IHNoYXJlIHRoZSBwYXJlbnQncyByZW1haW5pbmcgc3BhY2UgZXF1YWxseSAoYGZsZXg6IDEgMSAwYCkuXG4gKiAtIGBcInNocmlua2FibGVcImA6IGFkZGl0aW9uYWxseSByZW1vdmUgdGhlIGl0ZW0ncyBpbXBsaWNpdCBjb250ZW50LXNpemVkXG4gKiAgIG1pbmltdW0gKGBtaW4taGVpZ2h0OiBhdXRvYCAvIGBtaW4td2lkdGg6IGF1dG9gKSwgc28gaXQgY2FuIGFjdHVhbGx5IGJlXG4gKiAgIHNpemVkIHRvIHRoZSByZW1haW5pbmcgc3BhY2UgaW4gYSBjb25zdHJhaW5lZCBsYXlvdXQgXHUyMDE0IHJlcXVpcmVkIGZvciBhXG4gKiAgIGRlc2NlbmRhbnQgdG8gc2Nyb2xsIGludGVybmFsbHkgaW5zdGVhZCBvZiBpbmZsYXRpbmcgZXZlcnkgYW5jZXN0b3IuXG4gKiAtIGEgbnVtYmVyOiBsaWtlIGBcInNocmlua2FibGVcImAsIGJ1dCB0YWtpbmcgdGhhdCBtYW55IHNoYXJlcyBvZiB0aGVcbiAqICAgcmVtYWluaW5nIHNwYWNlIGluc3RlYWQgb2Ygb25lIChgZmxleC1ncm93YCksIGZvciB3ZWlnaHRlZCBzcGxpdHMgYmV0d2VlblxuICogICBzaWJsaW5ncy5cbiAqIC0gYFwiZml4ZWRcImA6IHRoZSBvcHBvc2l0ZSBcdTIwMTQga2VlcCB0aGUgaXRlbSdzIG93biBzaXplIChgZmxleC1zaHJpbms6IDBgKSxcbiAqICAgb3B0aW5nIG91dCBvZiB0aGUgc2hyaW5rIG5lZ290aWF0aW9uIGVudGlyZWx5IChlLmcuIGEgY29udGVudC1odWdnaW5nXG4gKiAgIHBhbmVsIG5leHQgdG8gYSBmaWxsaW5nIG9uZSkuXG4gKi9cbmV4cG9ydCB0eXBlIEZsZXhDaGlsZFBsdWdpblByb3BzID0geyAkZmxleENoaWxkPzogYm9vbGVhbiB8IG51bWJlciB8IFwic2hyaW5rYWJsZVwiIHwgXCJmaXhlZFwiIH07XG5cbmV4cG9ydCBjb25zdCBmbGV4Q2hpbGRQbHVnaW4gPSBnZXRQbHVnaW48RmxleENoaWxkUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luLCB0eXBlb2Ygc3R5bGVQbHVnaW5dPihcbiAgKHByb3BzKSA9PiB7XG4gICAgY29uc3Qgd2VpZ2h0ID0gdHlwZW9mIHByb3BzLiRmbGV4Q2hpbGQgPT09IFwibnVtYmVyXCIgPyBwcm9wcy4kZmxleENoaWxkIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNocmlua2FibGUgPSBwcm9wcy4kZmxleENoaWxkID09PSBcInNocmlua2FibGVcIiB8fCB3ZWlnaHQgIT09IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICAkY2xhc3NOYW1lOiBbXG4gICAgICAgIHByb3BzLiRmbGV4Q2hpbGQgPT09IHRydWUgfHwgc2hyaW5rYWJsZSA/IGZsZXhDaGlsZFN0eWxlc1tcImZsZXgtY2hpbGRcIl0gOiB1bmRlZmluZWQsXG4gICAgICAgIHNocmlua2FibGUgPyBmbGV4Q2hpbGRTdHlsZXNbXCJmbGV4LWNoaWxkLS1zaHJpbmthYmxlXCJdIDogdW5kZWZpbmVkLFxuICAgICAgICBwcm9wcy4kZmxleENoaWxkID09PSBcImZpeGVkXCIgPyBmbGV4Q2hpbGRTdHlsZXNbXCJmbGV4LWNoaWxkLS1maXhlZFwiXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIF0sXG4gICAgICAkc3R5bGU6IHdlaWdodCA9PT0gdW5kZWZpbmVkID8gcHJvcHMuJHN0eWxlIDogeyAuLi5wcm9wcy4kc3R5bGUsIGZsZXhHcm93OiB3ZWlnaHQgfSxcbiAgICAgICRmbGV4Q2hpbGQ6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9LFxuKTtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGdyYXlzY2FsZVN0eWxlcyBmcm9tIFwiLi9ncmF5c2NhbGUubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgR3JheXNjYWxlUGx1Z2luUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBGdWxseSBkZXNhdHVyYXRlcyB0aGUgZWxlbWVudCAoYGZpbHRlcjogZ3JheXNjYWxlKDEwMCUpYCkgd2hlbiBgdHJ1ZWAgXHUyMDE0IHNvXG4gICAqIGV2ZW4gZml4ZWQtY29sb3VyIGNvbnRlbnQgKGUuZy4gYnJhbmQgbG9nb3MpIGdyZXlzIG91dCwgbm90IGp1c3QgdGhlbWVkXG4gICAqIGNvbG91cnMuIENvbWJpbmUgd2l0aCBgJGZhZGVkYCB0byBkZS1lbXBoYXNpc2UgYW4gdW5hdmFpbGFibGUgaXRlbS5cbiAgICovXG4gICRncmF5c2NhbGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGdyYXlzY2FsZVBsdWdpbiA9IGdldFBsdWdpbjxHcmF5c2NhbGVQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBwcm9wcy4kZ3JheXNjYWxlID8gZ3JheXNjYWxlU3R5bGVzLmdyYXlzY2FsZSA6IHVuZGVmaW5lZF0sXG4gICRncmF5c2NhbGU6IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JheXNjYWxlXCI6IFwiZ3JheXNjYWxlLW1vZHVsZV9fZ3JheXNjYWxlX19fM21aUDZcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IHN0eWxlUGx1Z2luIH0gZnJvbSBcIi4uL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHRpbnRTdHlsZXMgZnJvbSBcIi4vdGludC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBUaW50UGx1Z2luUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGVsZW1lbnQncyAoYW5kIGl0cyBkZXNjZW5kYW50cycpIFNWRyBgZmlsbGAgdG8gdGhpcyBjb2xvdXIsIHZpYSBhIENTUyBjdXN0b21cbiAgICogcHJvcGVydHkgXHUyMDE0IGBzdHJva2VgIGlzIGxlZnQgdW50b3VjaGVkLCBzbyBzdHJva2VkIGRldGFpbHMgc3Vydml2ZS4gVW5saWtlIGAkZ3JheXNjYWxlYCAod2hpY2ggb25seVxuICAgKiBkZXNhdHVyYXRlcykgdGhpcyBwYWludHMgdGhlIHNoYXBlIGFuIGV4YWN0IGZsYXQgY29sb3VyIHdoaWxlIHJlc3BlY3RpbmcgdHJhbnNwYXJlbmN5LCBzbyBhXG4gICAqIGZpeGVkLWNvbG91ciBicmFuZCBtYXJrIGNhbiBiZSB0aW50ZWQgKGUuZy4gYW4gQUktdG9vbCBsb2dvIHRpbnRlZCB0byB0aGUgY2x1c3RlciBjb2xvdXIpLiBMZWF2ZVxuICAgKiB1bnNldCB0byByZW5kZXIgdGhlIGVsZW1lbnQncyBuYXR1cmFsIGNvbG91cnMuXG4gICAqL1xuICAkdGludD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCB0aW50UGx1Z2luID0gZ2V0UGx1Z2luPFRpbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHByb3BzLiR0aW50ID8gdGludFN0eWxlcy50aW50IDogdW5kZWZpbmVkXSxcbiAgLy8gVGhlIHRpbnQgY29sb3VyIGlzIGV4cG9zZWQgYXMgYSBjdXN0b20gcHJvcGVydHkgdGhlIGAudGludGAgY2xhc3MgcmVhZHMgKGBmaWxsOiB2YXIoLS1lbGVtZW50LXRpbnQpYCkuXG4gICRzdHlsZTogcHJvcHMuJHRpbnQgPyAoeyAuLi5wcm9wcy4kc3R5bGUsIFwiLS1lbGVtZW50LXRpbnRcIjogcHJvcHMuJHRpbnQgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzKSA6IHByb3BzLiRzdHlsZSxcbiAgJHRpbnQ6IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy90aW50L3RpbnQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJ0aW50XCI6IFwidGludC1tb2R1bGVfX3RpbnRfX19nQ3pHN1wiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGZhZGVkU3R5bGVzIGZyb20gXCIuL2ZhZGVkLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEZhZGVkUGx1Z2luUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBGYWRlcyB0aGUgZWxlbWVudCAoYG9wYWNpdHk6IDUwJWApIHdoZW4gYHRydWVgLiBDb21iaW5lIHdpdGggYCRncmF5c2NhbGVgXG4gICAqIHRvIGRlLWVtcGhhc2lzZSBhbiB1bmF2YWlsYWJsZSBpdGVtLlxuICAgKi9cbiAgJGZhZGVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBmYWRlZFBsdWdpbiA9IGdldFBsdWdpbjxGYWRlZFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHByb3BzLiRmYWRlZCA/IGZhZGVkU3R5bGVzLmZhZGVkIDogdW5kZWZpbmVkXSxcbiAgJGZhZGVkOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZmFkZWQvZmFkZWQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJmYWRlZFwiOiBcImZhZGVkLW1vZHVsZV9fZmFkZWRfX18tdWJiTVwiXG59OyIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzLCB0eXBlIENvbnRyaWJ1dGVSZWYgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgdXNlVXBkYXRlV2hlblByb3BzQ2hhbmdlIH0gZnJvbSBcIi4vX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZVwiO1xuaW1wb3J0IHsgdXNlQ2xlYW51cE9uVW5tb3VudCB9IGZyb20gXCIuL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnRcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHsgdXNlS2V5Ym9hcmROYXZpZ2F0aW9uIH0gZnJvbSBcIi4vX3ByaXZhdGUvdXNlLWtleWJvYXJkLW5hdmlnYXRpb25cIjtcbmltcG9ydCB7IGhhbmRsZUZvY3VzRm9yIH0gZnJvbSBcIi4vX3ByaXZhdGUvaGFuZGxlLWZvY3VzXCI7XG5pbXBvcnQgeyBoYW5kbGVCbHVyRm9yIH0gZnJvbSBcIi4vX3ByaXZhdGUvaGFuZGxlLWJsdXJcIjtcbmltcG9ydCB7IHVzZVByb2dyYW1tYXRpY0ZvY3VzaW5nIH0gZnJvbSBcIi4vX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZ1wiO1xuaW1wb3J0IHR5cGUgeyByZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSBGb2N1c2FibGVQbHVnaW5Qcm9wczxULCBGb2N1c2VkSXRlbSA9IGFueT4gPSB7XG4gICRmb2N1c2FibGU/OiB7XG4gICAgY29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT47XG4gICAgaXRlbTogRm9jdXNlZEl0ZW07XG4gICAgb3JkZXJOdW1iZXI/OiBudW1iZXI7XG4gIH07XG5cbiAgb25Gb2N1cz86IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPFQ+O1xuICBvbkJsdXI/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxUPjtcbiAgb25LZXlEb3duPzogUmVhY3QuS2V5Ym9hcmRFdmVudEhhbmRsZXI8VD47XG4gIHRhYkluZGV4PzogSFRNTEVsZW1lbnRbXCJ0YWJJbmRleFwiXTtcbn07XG5cbnR5cGUgRm9jdXNhYmxlV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBmb2N1c2FibGU6IHtcbiAgICBjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PGFueT47XG4gICAgaXRlbTogYW55O1xuICAgIG9yZGVyTnVtYmVyPzogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSB0YWJJbmRleDogbnVtYmVyO1xuICByZWFkb25seSBvbkZvY3VzPzogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8YW55PjtcbiAgcmVhZG9ubHkgb25CbHVyPzogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8YW55PjtcbiAgcmVhZG9ubHkgb25LZXlEb3duPzogUmVhY3QuS2V5Ym9hcmRFdmVudEhhbmRsZXI8YW55PjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBGb2N1c2FibGVXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgZm9jdXNhYmxlLFxuICB0YWJJbmRleCxcbiAgb25Gb2N1cyxcbiAgb25CbHVyLFxuICBvbktleURvd24sXG4gIGNvbnRyaWJ1dGVSZWYsXG4gIGNvbnRyaWJ1dGVQcm9wcyxcbiAgY2hpbGRyZW4sXG59OiBGb2N1c2FibGVXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjb250ZXh0OiBmb2N1c2FibGVDb250ZXh0LCBpdGVtOiBmb2N1c2FibGVJdGVtLCBvcmRlck51bWJlciB9ID0gZm9jdXNhYmxlO1xuXG4gIGNvbnN0IFtlbGVtZW50LCBzZXRFbGVtZW50XSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnRyaWJ1dGVSZWYoc2V0RWxlbWVudCk7XG5cbiAgY29uc3QgaHRtbEVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQ+KHVuZGVmaW5lZCk7XG4gIGh0bWxFbGVtZW50UmVmLmN1cnJlbnQgPSAoZWxlbWVudCA/PyB1bmRlZmluZWQpIGFzIEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3Qgb2xkU3RhdGVSZWYgPSB1c2VSZWY8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPj4odW5kZWZpbmVkKTtcblxuICBjb25zdCBzdGF0ZSA9IHVzZVN5bmNJbmplY3QoZm9jdXNhYmxlSXRlbVN0YXRlSW5qZWN0YWJsZSwgZm9jdXNhYmxlQ29udGV4dCk7XG5cbiAgdXNlVXBkYXRlV2hlblByb3BzQ2hhbmdlKGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmLCBvbGRTdGF0ZVJlZiwgc3RhdGUsIGZvY3VzYWJsZUl0ZW0pO1xuICB1c2VDbGVhbnVwT25Vbm1vdW50KGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmLCBvbGRTdGF0ZVJlZik7XG4gIHVzZVByb2dyYW1tYXRpY0ZvY3VzaW5nKGZvY3VzYWJsZUNvbnRleHQsIGZvY3VzYWJsZUl0ZW0sIGh0bWxFbGVtZW50UmVmKTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9IGhhbmRsZUZvY3VzRm9yKHN0YXRlLCBmb2N1c2FibGVJdGVtLCBmb2N1c2FibGVDb250ZXh0LCBodG1sRWxlbWVudElzRm9jdXNlZFJlZik7XG4gIGNvbnN0IGhhbmRsZUJsdXIgPSBoYW5kbGVCbHVyRm9yKGZvY3VzYWJsZUNvbnRleHQsIHN0YXRlLCBodG1sRWxlbWVudElzRm9jdXNlZFJlZik7XG5cbiAgY29uc3Qga2V5Ym9hcmROYXZpZ2F0aW9uID0gdXNlS2V5Ym9hcmROYXZpZ2F0aW9uKFxuICAgIGZvY3VzYWJsZUNvbnRleHQuaXNLZXlib2FyZE5hdmlnYWJsZSA/IGZvY3VzYWJsZUNvbnRleHQgOiB1bmRlZmluZWQsXG4gICAgZm9jdXNhYmxlSXRlbSxcbiAgICBvcmRlck51bWJlcixcbiAgICBlbGVtZW50LFxuICApO1xuXG4gIGNvbnRyaWJ1dGVQcm9wcyh7XG4gICAgdGFiSW5kZXgsXG5cbiAgICBvbkZvY3VzOiAoZTogUmVhY3QuRm9jdXNFdmVudDxhbnk+KSA9PiB7XG4gICAgICBoYW5kbGVGb2N1cyhlKTtcbiAgICAgIGtleWJvYXJkTmF2aWdhdGlvbi5vbkZvY3VzKCk7XG4gICAgICBvbkZvY3VzPy4oZSk7XG4gICAgfSxcblxuICAgIG9uQmx1cjogKGU6IFJlYWN0LkZvY3VzRXZlbnQ8YW55PikgPT4ge1xuICAgICAgaWYgKCFodG1sRWxlbWVudFJlZi5jdXJyZW50Py5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgIGhhbmRsZUJsdXIoZSk7XG4gICAgICB9XG4gICAgICBvbkJsdXI/LihlKTtcbiAgICB9LFxuXG4gICAgb25LZXlEb3duOiAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxhbnk+KSA9PiB7XG4gICAgICBvbktleURvd24/LihlKTtcbiAgICAgIGtleWJvYXJkTmF2aWdhdGlvbi5vbktleURvd24oZSk7XG4gICAgfSxcblxuICAgIG9uTW91c2VFbnRlcjoga2V5Ym9hcmROYXZpZ2F0aW9uLmZvY3VzV2hhdFRoZVBvaW50ZXJJc09uLFxuICAgIG9uTW91c2VNb3ZlOiBrZXlib2FyZE5hdmlnYXRpb24uZm9jdXNXaGF0VGhlUG9pbnRlcklzT24sXG4gIH0pO1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNhYmxlUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEZvY3VzYWJsZVBsdWdpblByb3BzPFQ+LCBbUmV0dXJuVHlwZTx0eXBlb2YgcmVmUGx1Z2luPFQ+Pl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGZvY3VzYWJsZSwgdGFiSW5kZXgsIG9uQmx1ciwgb25Gb2N1cywgb25LZXlEb3duIH0gPSBwcm9wcztcblxuICAgIGlmICghJGZvY3VzYWJsZSkge1xuICAgICAgcmV0dXJuIHsgJGZvY3VzYWJsZTogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRmb2N1c2FibGU6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRm9jdXNhYmxlV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBmb2N1c2FibGU6ICRmb2N1c2FibGUsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4ID8/IC0xLFxuICAgICAgICAgIG9uRm9jdXMsXG4gICAgICAgICAgb25CbHVyLFxuICAgICAgICAgIG9uS2V5RG93bixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgcnVuSW5BY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB0eXBlIE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVVwZGF0ZVdoZW5Qcm9wc0NoYW5nZSA9IChcbiAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgb2xkU3RhdGVSZWY6IE11dGFibGVSZWZPYmplY3Q8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPiB8IHVuZGVmaW5lZD4sXG4gIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+LFxuICBmb2N1c2FibGVJdGVtOiB1bmtub3duLFxuKSA9PiB7XG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHJlbW92ZSB3aGVuIHBvc3NpYmxlXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoZm9jdXNlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICBzdGF0ZS5zZXQoZm9jdXNhYmxlSXRlbSk7XG5cbiAgICAgICAgICBjb25zdCBjb250ZXh0SGFzQ2hhbmdlZCA9IG9sZFN0YXRlUmVmLmN1cnJlbnQgIT09IHN0YXRlO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHRIYXNDaGFuZ2VkICYmIG9sZFN0YXRlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGFzc2VydERlZmluZWQob2xkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBvbGRTdGF0ZVJlZi5jdXJyZW50LnNldCh1bmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG9sZFN0YXRlUmVmLmN1cnJlbnQgPSBzdGF0ZTtcbiAgICB9LFxuICAgIC8vIE5vdGU6IGZvY3VzZWRSZWYgYW5kIG9sZFN0YXRlUmVmIG5ldmVyIGNoYW5nZS5cbiAgICBbZm9jdXNhYmxlSXRlbSwgc3RhdGVdLFxuICApO1xufTtcbiIsICJpbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHR5cGUgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgdXNlQ2xlYW51cE9uVW5tb3VudCA9IChcbiAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgb2xkU3RhdGVSZWY6IE11dGFibGVSZWZPYmplY3Q8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPiB8IHVuZGVmaW5lZD4sXG4pID0+IHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogcmVtb3ZlIHdoZW4gcG9zc2libGVcbiAgdXNlRWZmZWN0KFxuICAgICgpID0+ICgpID0+IHtcbiAgICAgIGlmIChmb2N1c2VkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgIGFzc2VydERlZmluZWQob2xkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgICAgb2xkU3RhdGVSZWYuY3VycmVudC5zZXQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIE5vdGU6IGZvY3VzZWRSZWYgYW5kIG9sZFN0YXRlUmVmIG5ldmVyIGNoYW5nZS5cbiAgICBbXSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7XG4gIGtleWJvYXJkTmF2aWdhdGlvblN0YXRlSW5qZWN0YWJsZSxcbiAgdHlwZSBOYXZpZ2FibGVFbnRyeSxcbn0gZnJvbSBcIi4uL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCwgS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb24gfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbnR5cGUgS2V5Ym9hcmROYXZpZ2F0aW9uID0ge1xuICByZWFkb25seSBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Gb2N1czogKCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgZm9jdXNXaGF0VGhlUG9pbnRlcklzT246IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IG5vS2V5Ym9hcmROYXZpZ2F0aW9uOiBLZXlib2FyZE5hdmlnYXRpb24gPSB7XG4gIG9uS2V5RG93bjogKCkgPT4ge30sXG4gIG9uRm9jdXM6ICgpID0+IHt9LFxuICBmb2N1c1doYXRUaGVQb2ludGVySXNPbjogKCkgPT4ge30sXG59O1xuXG5leHBvcnQgY29uc3QgdXNlS2V5Ym9hcmROYXZpZ2F0aW9uID0gKFxuICBjb250ZXh0OiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8YW55PiB8IHVuZGVmaW5lZCxcbiAgaXRlbTogdW5rbm93bixcbiAgb3JkZXJOdW1iZXI6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLFxuKTogS2V5Ym9hcmROYXZpZ2F0aW9uID0+IHtcbiAgY29uc3QgbmF2aWdhdGlvbiA9IHVzZVN5bmNJbmplY3Qoa2V5Ym9hcmROYXZpZ2F0aW9uU3RhdGVJbmplY3RhYmxlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY29udGV4dCB8fCAhZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5OiBOYXZpZ2FibGVFbnRyeSA9IHsgaXRlbSwgb3JkZXJOdW1iZXI6IG9yZGVyTnVtYmVyID8/IDAsIGVsZW1lbnQgfTtcblxuICAgIG5hdmlnYXRpb24ucmVnaXN0ZXIoY29udGV4dCwgZW50cnkpO1xuXG4gICAgY29uc3QgZm9jdXNXaGF0U2hvdWxkSGF2ZUZvY3VzID0gKCkgPT4ge1xuICAgICAgY29uc3QgY29udGV4dEluRm9jdXMgPSBuYXZpZ2F0aW9uLmNvbnRleHRJbkZvY3VzKCk7XG5cbiAgICAgIGlmICghY29udGV4dEluRm9jdXMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbnRyaWVzID0gbmF2aWdhdGlvbi5zb3J0ZWRFbnRyaWVzT2YoY29udGV4dEluRm9jdXMpO1xuXG4gICAgICAvLyBUaGUgbWVtYmVyIHRoYXQgY29udGV4dCB3YXMgbGVmdCBvbiwgc28gc3RlcHBpbmcgaW50byBzb21ldGhpbmcgYW5kIGJhY2sgb3V0IG9mIGl0IGxhbmRzXG4gICAgICAvLyB3aGVyZSBpdCBzdGFydGVkLiBPbmx5IHRoZSBsb3dlc3Qgb3JkZXIgbnVtYmVyIHdoZW4gaXQgd2FzIG5ldmVyIGxlZnQgYW55d2hlcmU6IHRoYXQgaXMgYVxuICAgICAgLy8gc2V0IG9mIG1lbWJlcnMgYXBwZWFyaW5nIHJhdGhlciB0aGFuIG9uZSBiZWluZyByZXR1cm5lZCB0by5cbiAgICAgIGNvbnN0IGl0ZW1JbkZvY3VzID0gbmF2aWdhdGlvbi5pdGVtSW5Gb2N1c09mKGNvbnRleHRJbkZvY3VzKTtcbiAgICAgIGNvbnN0IHRvRm9jdXMgPSBlbnRyaWVzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLml0ZW0gPT09IGl0ZW1JbkZvY3VzKSA/PyBlbnRyaWVzWzBdO1xuXG4gICAgICBpZiAodG9Gb2N1cz8uZWxlbWVudC5pc0Nvbm5lY3RlZCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0b0ZvY3VzLmVsZW1lbnQpIHtcbiAgICAgICAgdG9Gb2N1cy5lbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIERlZmVycmVkIHNvIHRoYXQgZXZlcnl0aGluZyBhcHBlYXJpbmcgdG9nZXRoZXIgaGFzIHJlZ2lzdGVyZWQsIGFuZCB0aGUgbG93ZXN0IG9yZGVyIG51bWJlciBvZlxuICAgIC8vIHRoZSB3aG9sZSBzZXQgd2lucyByYXRoZXIgdGhhbiB3aGljaGV2ZXIgYXBwZWFyZWQgZmlyc3QuXG4gICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZvY3VzV2hhdFNob3VsZEhhdmVGb2N1cyk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbmF2aWdhdGlvbi5kZXJlZ2lzdGVyKGNvbnRleHQsIGVudHJ5KTtcblxuICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZvY3VzV2hhdFNob3VsZEhhdmVGb2N1cyk7XG4gICAgfTtcbiAgfSwgW25hdmlnYXRpb24sIGNvbnRleHQsIGl0ZW0sIG9yZGVyTnVtYmVyLCBlbGVtZW50XSk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5vS2V5Ym9hcmROYXZpZ2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBXaGljaCBtZW1iZXIgdGhlIGNvbnRleHQgaXMgb24sIHJlbWVtYmVyZWQgZm9yIGFzIGxvbmcgYXMgaXRzIG1lbWJlcnMgYXJlIHRoZXJlOiBpdCBpcyB3aGF0XG4gICAgLy8gZm9jdXMgcmV0dXJucyB0byB3aGVuIHNvbWV0aGluZyB0aGF0IHRvb2sgZm9jdXMgb3ZlciBnb2VzIGF3YXkgYWdhaW4uXG4gICAgb25Gb2N1czogKCkgPT4gbmF2aWdhdGlvbi5ub3RlSXRlbUluRm9jdXMoY29udGV4dCwgaXRlbSksXG5cbiAgICAvLyBXaGVyZSB0aGUgcG9pbnRlciBnb2VzLCBmb2N1cyBnb2VzOiB0aGUgbWVtYmVyIHVuZGVyIGl0IGJlY29tZXMgdGhlIGZvY3VzZWQgb25lLCBzbyBhcnJvd2luZ1xuICAgIC8vIG9uIGZyb20gdGhlcmUgY29udGludWVzIGZyb20gd2hhdCB0aGUgdXNlciBpcyBsb29raW5nIGF0IHJhdGhlciB0aGFuIGZyb20gd2hlcmV2ZXIgdGhlXG4gICAgLy8ga2V5Ym9hcmQgd2FzIGxlZnQuIFdoaWNoZXZlciBvZiB0aGUgdHdvIG1vdmVkIGxhc3QgZGVjaWRlcywgd2hpY2ggaXMgd2h5IHRoaXMgYW5zd2VycyB0byB0aGVcbiAgICAvLyBwb2ludGVyIG1vdmluZyBhcyB3ZWxsIGFzIHRvIGl0IGFycml2aW5nIFx1MjAxNCB0aGUga2V5Ym9hcmQgbWF5IGhhdmUgdGFrZW4gZm9jdXMgZWxzZXdoZXJlIHdoaWxlXG4gICAgLy8gdGhlIHBvaW50ZXIgcmVzdGVkIHdoZXJlIGl0IHdhcywgYW5kIG1vdmluZyBpdCBhdCBhbGwgaXMgdGhlIHVzZXIgcG9pbnRpbmcgYWdhaW4uXG4gICAgLy9cbiAgICAvLyBUaGUgZWxlbWVudCBjb21lcyBmcm9tIHRoZSBldmVudCByYXRoZXIgdGhhbiBmcm9tIHRoZSByZW5kZXIgdGhpcyBoYW5kbGVyIHdhcyBjcmVhdGVkIGluOlxuICAgIC8vIHRoZSBoYW5kbGVyIHRoZSBET00gZW5kcyB1cCB3aXRoIGlzIHRoZSBvbmUgZnJvbSB0aGUgZmlyc3QgcmVuZGVyLCB3aGVuIHRoZXJlIHdhcyBubyBlbGVtZW50XG4gICAgLy8geWV0IFx1MjAxNCBSZWFjdCBoYXMgbm8gcmVhc29uIHRvIHJlbmRlciB0aGUgZWxlbWVudCBhZ2FpbiBmb3IgYSB3cmFwcGVyJ3Mgb3duIHN0YXRlLlxuICAgIGZvY3VzV2hhdFRoZVBvaW50ZXJJc09uOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gaG92ZXJlZCkge1xuICAgICAgICBob3ZlcmVkLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzdGVwID0gc3RlcE9mKGV2ZW50LmtleSwgY29udGV4dC5vcmllbnRhdGlvbik7XG5cbiAgICAgIGlmIChzdGVwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbnRyaWVzID0gbmF2aWdhdGlvbi5zb3J0ZWRFbnRyaWVzT2YoY29udGV4dCk7XG5cbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGVudHJpZXMuZmluZEluZGV4KChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5pdGVtID09PSBpdGVtKTtcblxuICAgICAgY29uc3QgbmV4dEluZGV4ID1cbiAgICAgICAgc3RlcCA9PT0gXCJmaXJzdFwiXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBzdGVwID09PSBcImxhc3RcIlxuICAgICAgICAgICAgPyBlbnRyaWVzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgIDogKGN1cnJlbnRJbmRleCArIHN0ZXAgKyBlbnRyaWVzLmxlbmd0aCkgJSBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgY29uc3QgbmV4dCA9IGVudHJpZXNbbmV4dEluZGV4XTtcblxuICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbmV4dC5lbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IHN0ZXBPZiA9IChrZXk6IHN0cmluZywgb3JpZW50YXRpb246IEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uKSA9PiB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IHVuZGVmaW5lZCA6IDE7XG4gICAgY2FzZSBcIkFycm93UmlnaHRcIjpcbiAgICAgIHJldHVybiBvcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiID8gdW5kZWZpbmVkIDogMTtcbiAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IHVuZGVmaW5lZCA6IC0xO1xuICAgIGNhc2UgXCJBcnJvd0xlZnRcIjpcbiAgICAgIHJldHVybiBvcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiID8gdW5kZWZpbmVkIDogLTE7XG4gICAgY2FzZSBcIkhvbWVcIjpcbiAgICAgIHJldHVybiBcImZpcnN0XCIgYXMgY29uc3Q7XG4gICAgY2FzZSBcIkVuZFwiOlxuICAgICAgcmV0dXJuIFwibGFzdFwiIGFzIGNvbnN0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuIiwgImltcG9ydCB7IHJ1bkluQWN0aW9uLCB0eXBlIElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IEZvY3VzYWJsZUV2ZW50IH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtZXZlbnRcIjtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUZvY3VzRm9yID1cbiAgPEZvY3VzYWJsZUl0ZW0+KFxuICAgIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPEZvY3VzYWJsZUl0ZW0gfCB1bmRlZmluZWQ+LFxuICAgIGZvY3VzYWJsZUl0ZW06IEZvY3VzYWJsZUl0ZW0sXG4gICAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxGb2N1c2FibGVJdGVtPixcbiAgICBmb2N1c2VkUmVmOiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+LFxuICApID0+XG4gIDxUPihldmVudDogRm9jdXNhYmxlRXZlbnQ8VD4pID0+IHtcbiAgICBjb25zdCBuYXRpdmVFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuXG4gICAgbmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzID8/PSBuZXcgU2V0KCk7XG5cbiAgICBpZiAobmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzLmhhcyhmb2N1c2FibGVDb250ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cy5hZGQoZm9jdXNhYmxlQ29udGV4dCk7XG5cbiAgICBmb2N1c2VkUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgc3RhdGUuc2V0KGZvY3VzYWJsZUl0ZW0pO1xuICAgIH0pO1xuICB9O1xuIiwgImltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEZvY3VzYWJsZUV2ZW50IH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtZXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlQmx1ckZvciA9XG4gIDxUPihcbiAgICBmb2N1c2FibGVDb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PFQ+LFxuICAgIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPFQgfCB1bmRlZmluZWQ+LFxuICAgIGZvY3VzZWRSZWY6IE11dGFibGVSZWZPYmplY3Q8Ym9vbGVhbj4sXG4gICkgPT5cbiAgPFQ+KGV2ZW50OiBGb2N1c2FibGVFdmVudDxUPikgPT4ge1xuICAgIGNvbnN0IG5hdGl2ZUV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQ7XG5cbiAgICBpZiAobmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzPy5oYXMoZm9jdXNhYmxlQ29udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb2N1c2VkUmVmLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgIHN0YXRlLnNldCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9O1xuIiwgImltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUgfSBmcm9tIFwiLi4vX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VQcm9ncmFtbWF0aWNGb2N1c2luZyA9IDxUPihcbiAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPixcbiAgZm9jdXNhYmxlSXRlbTogVCxcbiAgaHRtbEVsZW1lbnRSZWY6IE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ+LFxuKSA9PiB7XG4gIGNvbnN0IGh0bWxFbGVtZW50c0J5Rm9jdXNhYmxlTWFwID0gdXNlU3luY0luamVjdChcbiAgICBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUsXG4gICAgZm9jdXNhYmxlQ29udGV4dCxcbiAgICBmb2N1c2FibGVJdGVtLFxuICApO1xuXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHJlbW92ZSB3aGVuIHBvc3NpYmxlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAuYWRkKGh0bWxFbGVtZW50UmVmKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcC5kZWxldGUoaHRtbEVsZW1lbnRSZWYpO1xuICAgIH07XG4gIH0sIFtodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcCwgZm9jdXNhYmxlSXRlbSwgaHRtbEVsZW1lbnRSZWZdKTtcbn07XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGZsZXhQbHVnaW4gfSBmcm9tIFwiLi4vZmxleC9mbGV4XCI7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IG92ZXJmbG93UGx1Z2luIH0gZnJvbSBcIi4uL292ZXJmbG93L292ZXJmbG93XCI7XG5cbmV4cG9ydCB0eXBlIEFyZWFQbHVnaW5Qcm9wcyA9IHsgJGFyZWE/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBhcmVhUGx1Z2luID0gZ2V0UGx1Z2luPEFyZWFQbHVnaW5Qcm9wcywgW3R5cGVvZiBmbGV4UGx1Z2luLCB0eXBlb2Ygb3ZlcmZsb3dQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgZXhwbGljaXRGbGV4UHJvcHMgPSBpc09iamVjdChwcm9wcy4kZmxleCkgPyBwcm9wcy4kZmxleCA6IHt9O1xuXG4gIHJldHVybiB7XG4gICAgJGFyZWE6IHVuZGVmaW5lZCxcblxuICAgICRmbGV4OiBwcm9wcy4kYXJlYVxuICAgICAgPyB7XG4gICAgICAgICAgdmVydGljYWxBbGlnbjogXCJzdHJldGNoXCIsXG4gICAgICAgICAgaG9yaXpvbnRhbEFsaWduOiBcInN0cmV0Y2hcIixcbiAgICAgICAgICAuLi5leHBsaWNpdEZsZXhQcm9wcyxcbiAgICAgICAgfVxuICAgICAgOiBwcm9wcy4kZmxleCxcblxuICAgICRvdmVyZmxvdzogcHJvcHMuJG92ZXJmbG93ID8/IChwcm9wcy4kYXJlYSA/IFwiaGlkZGVuXCIgOiB1bmRlZmluZWQpLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGZsZXhDaGlsZFBsdWdpbiB9IGZyb20gXCIuLi9mbGV4LWNoaWxkL2ZsZXgtY2hpbGRcIjtcblxuZXhwb3J0IHR5cGUgQXJlYUNvbnRlbnRQbHVnaW5Qcm9wcyA9IHsgJGFyZWFDb250ZW50PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgYXJlYUNvbnRlbnRQbHVnaW4gPSBnZXRQbHVnaW48QXJlYUNvbnRlbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBmbGV4Q2hpbGRQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRhcmVhQ29udGVudDogdW5kZWZpbmVkLFxuICAkZmxleENoaWxkOiBwcm9wcy4kYXJlYUNvbnRlbnQgPyB0cnVlIDogcHJvcHMuJGZsZXhDaGlsZCxcbn0pKTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5pbXBvcnQgdHlwZSB7IHdpZHRoUGx1Z2luIH0gZnJvbSBcIi4uL3dpZHRoL3dpZHRoXCI7XG5pbXBvcnQgdHlwZSB7IGhlaWdodFBsdWdpbiB9IGZyb20gXCIuLi9oZWlnaHQvaGVpZ2h0XCI7XG5cbmV4cG9ydCB0eXBlICRTaXplUHJvcHMgPSB7XG4gIHNpemU/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCBcImF1dG9cIjtcbiAgbWluPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xuICBtYXg/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCI7XG59O1xuXG5leHBvcnQgdHlwZSBTaXplUGx1Z2luUHJvcHMgPSB7ICRzaXplPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgJFNpemVQcm9wcyB9O1xuXG5leHBvcnQgY29uc3Qgc2l6ZVBsdWdpbiA9IGdldFBsdWdpbjxTaXplUGx1Z2luUHJvcHMsIFt0eXBlb2Ygd2lkdGhQbHVnaW4sIHR5cGVvZiBoZWlnaHRQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkc2l6ZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkc2l6ZSkge1xuICAgIHJldHVybiB7ICRzaXplOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgc2l6ZSwgbWluLCBtYXggfSA9IHR5cGVvZiAkc2l6ZSA9PT0gXCJzdHJpbmdcIiA/IHsgc2l6ZTogJHNpemUgfSA6ICRzaXplO1xuXG4gIHJldHVybiB7XG4gICAgJGhlaWdodDogeyBoZWlnaHQ6IHNpemUsIG1pbiwgbWF4IH0sXG4gICAgJHdpZHRoOiB7IHdpZHRoOiBzaXplLCBtaW4sIG1heCB9LFxuICAgICRzaXplOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYWxpYXNcIjogXCJjdXJzb3ItbW9kdWxlX19hbGlhc19fXzBpeUgyXCIsXG4gIFwiYWxsLXNjcm9sbFwiOiBcImN1cnNvci1tb2R1bGVfX2FsbC1zY3JvbGxfX19VOWhvOFwiLFxuICBcImNlbGxcIjogXCJjdXJzb3ItbW9kdWxlX19jZWxsX19fNVdPMkZcIixcbiAgXCJjb2x1bW4tcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fY29sdW1uLXJlc2l6ZV9fX3BMcTNzXCIsXG4gIFwiY29udGV4dC1tZW51XCI6IFwiY3Vyc29yLW1vZHVsZV9fY29udGV4dC1tZW51X19fSXFwNTZcIixcbiAgXCJjb3B5XCI6IFwiY3Vyc29yLW1vZHVsZV9fY29weV9fX1hVN3lMXCIsXG4gIFwiY3Jvc3NoYWlyXCI6IFwiY3Vyc29yLW1vZHVsZV9fY3Jvc3NoYWlyX19fMThheWtcIixcbiAgXCJkZWZhdWx0XCI6IFwiY3Vyc29yLW1vZHVsZV9fZGVmYXVsdF9fX3ZELThUXCIsXG4gIFwiZWFzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19lYXN0LXJlc2l6ZV9fX1M0SEY1XCIsXG4gIFwiZWFzdC1hbmQtd2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19lYXN0LWFuZC13ZXN0LXJlc2l6ZV9fX3UtSmYtXCIsXG4gIFwiZ3JhYlwiOiBcImN1cnNvci1tb2R1bGVfX2dyYWJfX19VdkFGN1wiLFxuICBcImdyYWJiaW5nXCI6IFwiY3Vyc29yLW1vZHVsZV9fZ3JhYmJpbmdfX19NTWl2WFwiLFxuICBcImhlbHBcIjogXCJjdXJzb3ItbW9kdWxlX19oZWxwX19faUI4RzRcIixcbiAgXCJtb3ZlXCI6IFwiY3Vyc29yLW1vZHVsZV9fbW92ZV9fX3lwZC1QXCIsXG4gIFwibm9ydGgtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGgtcmVzaXplX19fN05raFZcIixcbiAgXCJub3J0aGVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGhlYXN0LXJlc2l6ZV9fX000TUl6XCIsXG4gIFwibm9ydGhlYXN0LWFuZC1zb3V0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGhlYXN0LWFuZC1zb3V0aHdlc3QtcmVzaXplX19fei0xZHFcIixcbiAgXCJuby1kcm9wXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm8tZHJvcF9fX1dUMXQ5XCIsXG4gIFwibm9uZVwiOiBcImN1cnNvci1tb2R1bGVfX25vbmVfX19FaTlzelwiLFxuICBcIm5vdC1hbGxvd2VkXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm90LWFsbG93ZWRfX185dUZMdVwiLFxuICBcIm5vcnRoLWFuZC1zb3V0aC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19ub3J0aC1hbmQtc291dGgtcmVzaXplX19fUUc1QU5cIixcbiAgXCJub3J0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGh3ZXN0LXJlc2l6ZV9fX2NrQ29oXCIsXG4gIFwibm9ydGh3ZXN0LWFuZC1zb3V0aGVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGh3ZXN0LWFuZC1zb3V0aGVhc3QtcmVzaXplX19fbmo0VlNcIixcbiAgXCJwb2ludGVyXCI6IFwiY3Vyc29yLW1vZHVsZV9fcG9pbnRlcl9fX0ZpZGZLXCIsXG4gIFwicHJvZ3Jlc3NcIjogXCJjdXJzb3ItbW9kdWxlX19wcm9ncmVzc19fX0lnRXh5XCIsXG4gIFwicm93LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3Jvdy1yZXNpemVfX18wU3NlNlwiLFxuICBcInNvdXRoLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3NvdXRoLXJlc2l6ZV9fXzRGZW5TXCIsXG4gIFwic291dGhlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3NvdXRoZWFzdC1yZXNpemVfX193OGhHcVwiLFxuICBcInNvdXRod2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19zb3V0aHdlc3QtcmVzaXplX19fNlV2NEdcIixcbiAgXCJ0ZXh0XCI6IFwiY3Vyc29yLW1vZHVsZV9fdGV4dF9fX3RxLUF3XCIsXG4gIFwidmVydGljYWwtdGV4dFwiOiBcImN1cnNvci1tb2R1bGVfX3ZlcnRpY2FsLXRleHRfX18zT2F6RVwiLFxuICBcIndlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fd2VzdC1yZXNpemVfX19iclc1NlwiLFxuICBcIndhaXRcIjogXCJjdXJzb3ItbW9kdWxlX193YWl0X19fUXRYbEdcIixcbiAgXCJ6b29tLWluXCI6IFwiY3Vyc29yLW1vZHVsZV9fem9vbS1pbl9fX3pFREhRXCIsXG4gIFwiem9vbS1vdXRcIjogXCJjdXJzb3ItbW9kdWxlX196b29tLW91dF9fX3FicW82XCJcbn07IiwgImltcG9ydCByYXdTdHlsZXMgZnJvbSBcIi4vY3Vyc29yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgc2FuaXRpemVTY3NzTW9kdWxlcyB9IGZyb20gXCJAazhzbGVucy90ZXN0LXV0aWxzXCI7XG5cbmNvbnN0IHN0eWxlcyA9IHNhbml0aXplU2Nzc01vZHVsZXMocmF3U3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgJEN1cnNvclByb3BzID1cbiAgfCBcImFsaWFzXCJcbiAgfCBcImFsbC1zY3JvbGxcIlxuICB8IFwiY2VsbFwiXG4gIHwgXCJjb2x1bW4tcmVzaXplXCJcbiAgfCBcImNvbnRleHQtbWVudVwiXG4gIHwgXCJjb3B5XCJcbiAgfCBcImNyb3NzaGFpclwiXG4gIHwgXCJkZWZhdWx0XCJcbiAgfCBcImVhc3QtcmVzaXplXCJcbiAgfCBcImVhc3QtYW5kLXdlc3QtcmVzaXplXCJcbiAgfCBcImdyYWJcIlxuICB8IFwiZ3JhYmJpbmdcIlxuICB8IFwiaGVscFwiXG4gIHwgXCJtb3ZlXCJcbiAgfCBcIm5vcnRoLXJlc2l6ZVwiXG4gIHwgXCJub3J0aGVhc3QtcmVzaXplXCJcbiAgfCBcIm5vcnRoZWFzdC1hbmQtc291dGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJuby1kcm9wXCJcbiAgfCBcIm5vbmVcIlxuICB8IFwibm90LWFsbG93ZWRcIlxuICB8IFwibm9ydGgtYW5kLXNvdXRoLXJlc2l6ZVwiXG4gIHwgXCJub3J0aHdlc3QtcmVzaXplXCJcbiAgfCBcIm5vcnRod2VzdC1hbmQtc291dGhlYXN0LXJlc2l6ZVwiXG4gIHwgXCJwb2ludGVyXCJcbiAgfCBcInByb2dyZXNzXCJcbiAgfCBcInJvdy1yZXNpemVcIlxuICB8IFwic291dGgtcmVzaXplXCJcbiAgfCBcInNvdXRoZWFzdC1yZXNpemVcIlxuICB8IFwic291dGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJ0ZXh0XCJcbiAgfCBcInZlcnRpY2FsLXRleHRcIlxuICB8IFwid2VzdC1yZXNpemVcIlxuICB8IFwid2FpdFwiXG4gIHwgXCJ6b29tLWluXCJcbiAgfCBcInpvb20tb3V0XCI7XG5cbmV4cG9ydCB0eXBlIEN1cnNvclBsdWdpblByb3BzID0ge1xuICAkY3Vyc29yPzogJEN1cnNvclByb3BzO1xufTtcblxuZXhwb3J0IGNvbnN0IGN1cnNvclBsdWdpbiA9IGdldFBsdWdpbjxDdXJzb3JQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkY3Vyc29yLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRjdXJzb3IpIHtcbiAgICByZXR1cm4geyAkY3Vyc29yOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGN1cnNvcjogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCBzdHlsZXNbJGN1cnNvcl1dLFxuICAgIFwiZGF0YS1jdXJzb3ItdGVzdFwiOiAkY3Vyc29yLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBvbk1pZGRsZUNsaWNrLCBvblRyaWdnZXIgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IGVuYWJsZWRQbHVnaW4gfSBmcm9tIFwiLi4vZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgY3Vyc29yUGx1Z2luIH0gZnJvbSBcIi4uL2N1cnNvci9jdXJzb3JcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSB9IGZyb20gXCIuL29uLXJpZ2h0LXRyaWdnZXIuaW5qZWN0YWJsZVwiO1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbjJkID0ge1xuICByZWFkb25seSB4OiBudW1iZXI7XG4gIHJlYWRvbmx5IHk6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIENsaWNrSGFuZGxlckRldGFpbHMgPSB7XG4gIHJlYWRvbmx5IGN1cnNvcjogUG9zaXRpb24yZDtcbiAgcmVhZG9ubHkgY2F1c2U6IFwiY2xpY2tcIiB8IFwia2V5Ym9hcmRcIjtcbn07XG5cbmV4cG9ydCB0eXBlIENsaWNrSGFuZGxlciA9ICgoZGV0YWlsczogQ2xpY2tIYW5kbGVyRGV0YWlscykgPT4gdm9pZCkgfCAoKGRldGFpbHM6IENsaWNrSGFuZGxlckRldGFpbHMpID0+IFByb21pc2U8dm9pZD4pO1xuXG5leHBvcnQgdHlwZSBDbGlja1BsdWdpblByb3BzID0ge1xuICAkb25DbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uT25seU1vdXNlQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gICRvbkRvdWJsZUNsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25SaWdodENsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25NaWRkbGVDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG59O1xuXG5jb25zdCBjbGlja1VzZWQgPSBTeW1ib2woKTtcblxuZXhwb3J0IGNvbnN0IGNsaWNrYWJsZVBsdWdpbiA9IGdldFBsdWdpbjxDbGlja1BsdWdpblByb3BzLCBbdHlwZW9mIGVuYWJsZWRQbHVnaW4sIHR5cGVvZiBjdXJzb3JQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgLy8gdHlwaW5nIHJlcXVpcmVkIGR1ZSB0byBsYWNrIG9mIGdvb2QgdHlwaW5nIG9mIHByZS1wcm9jZXNzZWQgZGVwZW5kZW50IHBsdWdpbnNcbiAgY29uc3Qge1xuICAgICRjdXJzb3IsXG4gICAgJG9uQ2xpY2ssXG4gICAgJG9uT25seU1vdXNlQ2xpY2ssXG4gICAgJG9uTWlkZGxlQ2xpY2ssXG4gICAgJG9uUmlnaHRDbGljayxcbiAgICAkb25Eb3VibGVDbGljayxcbiAgICBvbkRvdWJsZUNsaWNrLFxuICAgIG9uQXV4Q2xpY2ssXG4gICAgb25DbGljayxcbiAgICBvbkNvbnRleHRNZW51LFxuICAgIG9uS2V5RG93bixcbiAgICB0YWJJbmRleCxcbiAgICBkaXNhYmxlZCxcbiAgICByb2xlLFxuICB9ID0gcHJvcHMgYXMgdHlwZW9mIHByb3BzICYgUmVhY3QuSFRNTFByb3BzPEhUTUxFbGVtZW50PjtcbiAgY29uc3QgW3BlbmRpbmcsIHNldFBlbmRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBvblJpZ2h0VHJpZ2dlciA9IHVzZVN5bmNJbmplY3Qob25SaWdodFRyaWdnZXJJbmplY3RhYmxlKTtcbiAgY29uc3Qgb25Nb3VzZUNsaWNrID0gJG9uQ2xpY2sgPz8gJG9uT25seU1vdXNlQ2xpY2s7XG5cbiAgaWYgKCRvbkNsaWNrICYmICRvbk9ubHlNb3VzZUNsaWNrKSB7XG4gICAgY29uc29sZS53YXJuKFwiQ2Fubm90IGhhdmUgYm90aCAkb25DbGljayBhbmQgJG9uTW91c2VDbGlja09ubHkgb24gdGhlIHNhbWUgY29tcG9uZW50XCIpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkb25DbGljazogdW5kZWZpbmVkLFxuICAgICRvbk1pZGRsZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJG9uUmlnaHRDbGljazogdW5kZWZpbmVkLFxuICAgICRvbkRvdWJsZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJG9uT25seU1vdXNlQ2xpY2s6IHVuZGVmaW5lZCxcbiAgICB0YWJJbmRleDogdGFiSW5kZXggPz8gKG9uTW91c2VDbGljayB8fCAkb25SaWdodENsaWNrIHx8ICRvbkRvdWJsZUNsaWNrID8gMCA6IHVuZGVmaW5lZCksXG4gICAgJGN1cnNvcjogZ2V0Q3Vyc29yUHJvcHMoJGN1cnNvciwgZGlzYWJsZWQsIHBlbmRpbmcsIG9uTW91c2VDbGljaywgJG9uUmlnaHRDbGljayksXG4gICAgcm9sZTogcm9sZSA/PyAob25Nb3VzZUNsaWNrID8gXCJidXR0b25cIiA6IHJvbGUpLFxuICAgIG9uQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQ2xpY2s/LihldmVudCk7XG5cbiAgICAgIGlmICghZGlzYWJsZWQgJiYgb25Nb3VzZUNsaWNrICYmICEoY2xpY2tVc2VkIGluIGV2ZW50KSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGV2ZW50LCB7IFtjbGlja1VzZWRdOiB0cnVlIH0pO1xuXG4gICAgICAgIGNvbnN0IG1heWJlUHJvbWlzZSA9IG9uTW91c2VDbGljayh0b0RldGFpbHMoZXZlbnQpKTtcblxuICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShtYXliZVByb21pc2UpKSB7XG4gICAgICAgICAgc2V0UGVuZGluZyh0cnVlKTtcbiAgICAgICAgICBtYXliZVByb21pc2UudGhlbigoKSA9PiBzZXRQZW5kaW5nKGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG9uRG91YmxlQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uRG91YmxlQ2xpY2s/LihldmVudCk7XG4gICAgICAkb25Eb3VibGVDbGljaz8uKHRvRGV0YWlscyhldmVudCkpO1xuICAgIH0sXG4gICAgb25Db250ZXh0TWVudTogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Db250ZXh0TWVudT8uKGV2ZW50KTtcbiAgICAgICRvblJpZ2h0Q2xpY2s/Lih0b0RldGFpbHMoZXZlbnQpKTtcbiAgICB9LFxuICAgIG9uQXV4Q2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQXV4Q2xpY2s/LihldmVudCk7XG4gICAgICBvbk1pZGRsZUNsaWNrKGV2ZW50LCAoKSA9PiAkb25NaWRkbGVDbGljaz8uKHRvRGV0YWlscyhldmVudCkpKTtcbiAgICB9LFxuICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25LZXlEb3duPy4oZXZlbnQpO1xuXG4gICAgICBpZiAoJG9uQ2xpY2spIHtcbiAgICAgICAgb25UcmlnZ2VyKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgICAgaWYgKCFkaXNhYmxlZCAmJiAhKGNsaWNrVXNlZCBpbiBldmVudCkpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXZlbnQsIHsgW2NsaWNrVXNlZF06IHRydWUgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1heWJlUHJvbWlzZSA9ICRvbkNsaWNrKHRvRGV0YWlscyhldmVudCkpO1xuXG4gICAgICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShtYXliZVByb21pc2UpKSB7XG4gICAgICAgICAgICAgIHNldFBlbmRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgIG1heWJlUHJvbWlzZS50aGVuKCgpID0+IHNldFBlbmRpbmcoZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoJG9uUmlnaHRDbGljaykge1xuICAgICAgICBvblJpZ2h0VHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgICRvblJpZ2h0Q2xpY2sodG9EZXRhaWxzKGV2ZW50KSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59KTtcblxuY29uc3QgdG9NaWRkbGUgPSAocmVjdDogRE9NUmVjdCkgPT4gKHtcbiAgeDogcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsXG4gIHk6IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyLFxufSk7XG5cbmNvbnN0IHRvRGV0YWlscyA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4gfCBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxFbGVtZW50Pik6IENsaWNrSGFuZGxlckRldGFpbHMgPT4ge1xuICBjb25zdCBjdXJzb3IgPVxuICAgIFwiY2xpZW50WFwiIGluIGV2ZW50XG4gICAgICA/IHtcbiAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFksXG4gICAgICAgIH1cbiAgICAgIDogdG9NaWRkbGUoZXZlbnQuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjdXJzb3IsXG4gICAgY2F1c2U6IGV2ZW50LmRldGFpbCA/IFwiY2xpY2tcIiA6IFwia2V5Ym9hcmRcIixcbiAgfTtcbn07XG5cbmNvbnN0IGlzUHJvbWlzZUxpa2UgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPHVua25vd24+ID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhIXZhbHVlICYmIFwidGhlblwiIGluIHZhbHVlO1xuXG5jb25zdCBnZXRDdXJzb3JQcm9wcyA9IChcbiAgJGN1cnNvcjogJEN1cnNvclByb3BzIHwgdW5kZWZpbmVkLFxuICBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgcGVuZGluZzogYm9vbGVhbixcbiAgJG9uQ2xpY2s6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkLFxuICAkb25SaWdodENsaWNrOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCxcbik6ICRDdXJzb3JQcm9wcyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICgkY3Vyc29yKSB7XG4gICAgcmV0dXJuICRjdXJzb3I7XG4gIH1cblxuICBpZiAocGVuZGluZykge1xuICAgIHJldHVybiBcInByb2dyZXNzXCI7XG4gIH1cblxuICBpZiAoISRvbkNsaWNrICYmICEkb25SaWdodENsaWNrKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChkaXNhYmxlZCkge1xuICAgIHJldHVybiBcIm5vdC1hbGxvd2VkXCI7XG4gIH1cblxuICBpZiAoJG9uQ2xpY2spIHtcbiAgICByZXR1cm4gXCJwb2ludGVyXCI7XG4gIH1cblxuICByZXR1cm4gXCJjb250ZXh0LW1lbnVcIjtcbn07XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiY29udGVudHNcIjogXCJkaXNwbGF5LWNvbnRlbnRzLW1vZHVsZV9fY29udGVudHNfX19tUmVYS1wiXG59OyIsICJpbXBvcnQgcmF3U3R5bGVzIGZyb20gXCIuL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZVNjc3NNb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL3Rlc3QtdXRpbHNcIjtcblxuY29uc3Qgc3R5bGVzID0gc2FuaXRpemVTY3NzTW9kdWxlcyhyYXdTdHlsZXMpO1xuXG5leHBvcnQgdHlwZSBEaXNwbGF5Q29udGVudHNQbHVnaW5Qcm9wcyA9IHtcbiAgJGRpc3BsYXlDb250ZW50cz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZGlzcGxheUNvbnRlbnRzUGx1Z2luID0gZ2V0UGx1Z2luPERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRkaXNwbGF5Q29udGVudHMsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGRpc3BsYXlDb250ZW50cykge1xuICAgIHJldHVybiB7ICRkaXNwbGF5Q29udGVudHM6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkZGlzcGxheUNvbnRlbnRzOiB1bmRlZmluZWQsXG4gICAgJGNsYXNzTmFtZTogWyRjbGFzc05hbWUsIHN0eWxlcy5jb250ZW50c10sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJ0ZXh0LWFsaWduLS1jZW50ZXJcIjogXCJ0ZXh0LWFsaWduLW1vZHVsZV9fdGV4dC1hbGlnbi0tY2VudGVyX19fYkRyUjJcIixcbiAgXCJ0ZXh0LWFsaWduLS1yaWdodFwiOiBcInRleHQtYWxpZ24tbW9kdWxlX190ZXh0LWFsaWduLS1yaWdodF9fX0pWUk1QXCIsXG4gIFwidGV4dC1hbGlnbi0tbGVmdFwiOiBcInRleHQtYWxpZ24tbW9kdWxlX190ZXh0LWFsaWduLS1sZWZ0X19fTExMazZcIlxufTsiLCAiaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi90ZXh0LWFsaWduLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5leHBvcnQgdHlwZSBUZXh0QWxpZ25QbHVnaW5Qcm9wcyA9IHsgJHRleHRBbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIiB9O1xuXG5leHBvcnQgY29uc3QgdGV4dEFsaWduUGx1Z2luID0gZ2V0UGx1Z2luPFRleHRBbGlnblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICR0ZXh0QWxpZ24gfSA9IHByb3BzO1xuXG4gIGlmICghJHRleHRBbGlnbikge1xuICAgIHJldHVybiB7ICR0ZXh0QWxpZ246IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHsgJGNsYXNzTmFtZTogW3N0eWxlc1tgdGV4dC1hbGlnbi0tJHskdGV4dEFsaWdufWBdLCBwcm9wcy4kY2xhc3NOYW1lXSwgJHRleHRBbGlnbjogdW5kZWZpbmVkIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ibG9jay9ibG9jay5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImJsb2NrXCI6IFwiYmxvY2stbW9kdWxlX19ibG9ja19fX1k0dHpqXCIsXG4gIFwiYmxvY2stLWlubGluZVwiOiBcImJsb2NrLW1vZHVsZV9fYmxvY2stLWlubGluZV9fXy0xWUNnXCJcbn07IiwgImltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYmxvY2subW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIEJsb2NrUGx1Z2luUHJvcHMgPSB7XG4gICRibG9jaz86IGJvb2xlYW4gfCBcImlubGluZVwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGJsb2NrUGx1Z2luID0gZ2V0UGx1Z2luPEJsb2NrUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGJsb2NrLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRibG9jaykge1xuICAgIHJldHVybiB7ICRibG9jazogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRibG9jazogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCAkYmxvY2sgPT09IFwiaW5saW5lXCIgPyBzdHlsZXNbXCJibG9jay0taW5saW5lXCJdIDogc3R5bGVzLmJsb2NrXSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFJhbmdlIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcbmltcG9ydCBvdXRsaW5lU3R5bGVzIGZyb20gXCIuL291dGxpbmUubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHNhbml0aXplU2Nzc01vZHVsZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBJQ2xhc3NOYW1lIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuY29uc3Qgc3R5bGVzID0gc2FuaXRpemVTY3NzTW9kdWxlcyhvdXRsaW5lU3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgT3V0bGluZVdpZHRoID0gXCJ6ZXJvXCIgfCBcInh4c1wiIHwgXCJ4c1wiIHwgXCJzXCIgfCBcIm1cIiB8IFwibFwiIHwgXCJ4bFwiIHwgXCJ4eGxcIiB8IGAke1JhbmdlPDMsIDU+fXhsYDtcblxuZXhwb3J0IHR5cGUgJE91dGxpbmVQcm9wcyA9IHsgY29sb3I/OiBDb2xvcjsgd2lkdGg/OiBPdXRsaW5lV2lkdGggfTtcblxuZXhwb3J0IHR5cGUgT3V0bGluZVBsdWdpblByb3BzID0geyAkb3V0bGluZT86IHsgZm9jdXNWaXNpYmxlPzogJE91dGxpbmVQcm9wcyB9IH07XG5cbmV4cG9ydCBjb25zdCBvdXRsaW5lUGx1Z2luID0gZ2V0UGx1Z2luPE91dGxpbmVQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Rm9jdXNWaXNpYmxlT3V0bGluZVN0eWxlcyhwcm9wcy4kb3V0bGluZT8uZm9jdXNWaXNpYmxlKV0sXG4gICAgJG91dGxpbmU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRGb2N1c1Zpc2libGVPdXRsaW5lU3R5bGVzID0gKHByb3BzOiAkT3V0bGluZVByb3BzIHwgdW5kZWZpbmVkKTogSUNsYXNzTmFtZSA9PiB7XG4gIGlmICghcHJvcHMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgeyBjb2xvciwgd2lkdGggfSA9IHByb3BzO1xuXG4gIHJldHVybiBbXG4gICAgY29sb3IgIT09IHVuZGVmaW5lZCB8fCB3aWR0aCAhPT0gdW5kZWZpbmVkID8gW3N0eWxlcy5vdXRsaW5lLCBzdHlsZXMuZm9jdXNWaXNpYmxlXSA6IHVuZGVmaW5lZCxcbiAgICBjb2xvciA/IHN0eWxlc1tgY29sb3ItLSR7Y29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgd2lkdGggPyBzdHlsZXNbYHdpZHRoLS0ke3dpZHRofWBdIDogdW5kZWZpbmVkLFxuICBdO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJvdXRsaW5lXCI6IFwib3V0bGluZS1tb2R1bGVfX291dGxpbmVfX19Bb0J0RlwiLFxuICBcImZvY3VzVmlzaWJsZVwiOiBcIm91dGxpbmUtbW9kdWxlX19mb2N1c1Zpc2libGVfX19KQXJQSlwiLFxuICBcImNvbG9yLS1pbmhlcml0XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1pbmhlcml0X19fMFdQMHJcIixcbiAgXCJjb2xvci0td2hpdGVcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXdoaXRlX19fVXEtZ2RcIixcbiAgXCJjb2xvci0tdHJhbnNwYXJlbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXRyYW5zcGFyZW50X19fVE5vTXZcIixcbiAgXCJjb2xvci0tZ3JleTEwMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTEwMF9fX1ZNRjdZXCIsXG4gIFwiY29sb3ItLWdyZXk4MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTgwX19fS2Q4Zk1cIixcbiAgXCJjb2xvci0tZ3JleTYwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NjBfX19aR2pPdFwiLFxuICBcImNvbG9yLS1ncmV5NDBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXk0MF9fX3VhRm5HXCIsXG4gIFwiY29sb3ItLWdyZXkzMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTMwX19fN1FCVlZcIixcbiAgXCJjb2xvci0tZ3JleTI1XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5MjVfX19yLWJiSlwiLFxuICBcImNvbG9yLS1ncmV5MjBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkyMF9fX2l3emVMXCIsXG4gIFwiY29sb3ItLWdyZXkxMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTEwX19faEp0dFNcIixcbiAgXCJjb2xvci0tZ3JleTcwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NzBfX18wT0dsVVwiLFxuICBcImNvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19falJ3SG5cIixcbiAgXCJjb2xvci0tcHJpbWFyeVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tcHJpbWFyeV9fX1B4Y214XCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXN1Y2Nlc3NfX194akpMblwiLFxuICBcImNvbG9yLS1ub3RpY2VcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLW5vdGljZV9fX0NSaVliXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXdhcm5pbmdfX18xT2U3V1wiLFxuICBcImNvbG9yLS1jcml0aWNhbFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tY3JpdGljYWxfX195UXgtTFwiLFxuICBcImNvbG9yLS1zdWNjZXNzVGludFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tc3VjY2Vzc1RpbnRfX19HSGFxLVwiLFxuICBcImNvbG9yLS13YXJuaW5nVGludFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0td2FybmluZ1RpbnRfX19ZQW50dVwiLFxuICBcImNvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsVGludF9fX1ExbWRoXCIsXG4gIFwiY29sb3ItLWxpbmtcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWxpbmtfX191SWszb1wiLFxuICBcImNvbG9yLS1jb2RlXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1jb2RlX19feWJud2lcIixcbiAgXCJ3aWR0aC0temVyb1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0temVyb19fX0VrZnpOXCIsXG4gIFwid2lkdGgtLXh4c1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0teHhzX19fYkd5VHJcIixcbiAgXCJ3aWR0aC0teHNcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXhzX19fWlpSMkJcIixcbiAgXCJ3aWR0aC0tc1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tc19fXzhkREV6XCIsXG4gIFwid2lkdGgtLW1cIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLW1fX19nMnVHNVwiLFxuICBcIndpZHRoLS1sXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS1sX19fV2gwYkNcIixcbiAgXCJ3aWR0aC0teGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXhsX19fOGRPTWpcIixcbiAgXCJ3aWR0aC0teHhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14eGxfX19CRXNVbVwiLFxuICBcIndpZHRoLS0zeGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLTN4bF9fX0VzMFNZXCIsXG4gIFwid2lkdGgtLTR4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tNHhsX19fWWVvdjhcIixcbiAgXCJ3aWR0aC0tNXhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS01eGxfX19Oc1Y4UFwiXG59OyIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IGNsaWNrYWJsZVBsdWdpbiwgQ2xpY2tIYW5kbGVyRGV0YWlscyB9IGZyb20gXCIuLi9jbGlja2FibGUvY2xpY2thYmxlXCI7XG5pbXBvcnQgeyBhdXRvVXBkYXRlLCBmbGlwLCBvZmZzZXQsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgdHlwZSB7IFJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgeyBleHBlY3REZWZpbmVkLCBzdG9wUHJvcGFnYXRpb24gfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9wb3BvdmVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBNaW5pbWFsRGl2IH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzL21pbmltYWwtZGl2XCI7XG5cbmV4cG9ydCB0eXBlIFBvcG92ZXJQbHVnaW5Qcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gICRwb3BvdmVyPzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IHBvcG92ZXJJc09wZW5Db250ZXh0ID0gY3JlYXRlQ29udGV4dChmYWxzZSk7XG5cbmV4cG9ydCBjb25zdCB1c2VQb3BvdmVySXNPcGVuID0gKCkgPT4gdXNlQ29udGV4dChwb3BvdmVySXNPcGVuQ29udGV4dCk7XG5cbmV4cG9ydCBjb25zdCBwb3BvdmVyUGx1Z2luID0gZ2V0UGx1Z2luPFBvcG92ZXJQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGlja2FibGVQbHVnaW4sIFJlZlBsdWdpbjxhbnk+XT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHBvcG92ZXIsICRvbkNsaWNrLCAkcmVmIH0gPSBwcm9wcztcbiAgY29uc3QgW3BvcG92ZXJDb250ZW50SXNTaG93biwgc2V0UG9wb3ZlckNvbnRlbnRJc1Nob3duXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZmVyZW5jZSwgc2V0RWxlbWVudF0gPSB1c2VTdGF0ZTxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjbG9zZVBvcG92ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRQb3BvdmVyQ29udGVudElzU2hvd24oZmFsc2UpLCBbXSk7XG5cbiAgaWYgKCEkcG9wb3Zlcikge1xuICAgIHJldHVybiB7XG4gICAgICAkcG9wb3ZlcjogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRwb3BvdmVyOiB1bmRlZmluZWQsXG4gICAgJHJlZjogWyRyZWYsIHNldEVsZW1lbnRdLFxuICAgICRvbkNsaWNrOiAoZGV0YWlsczogQ2xpY2tIYW5kbGVyRGV0YWlscykgPT4ge1xuICAgICAgc2V0UG9wb3ZlckNvbnRlbnRJc1Nob3duKCFwb3BvdmVyQ29udGVudElzU2hvd24pO1xuICAgICAgJG9uQ2xpY2s/LihkZXRhaWxzKTtcbiAgICB9LFxuICAgIG9uQ2xpY2s6IHN0b3BQcm9wYWdhdGlvbixcbiAgICAkd3JhcHBlcjoge1xuICAgICAgQ29tcG9uZW50OiBQb3BvdmVyV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIHBvcG92ZXI6IHtcbiAgICAgICAgICAkcG9wb3ZlcixcbiAgICAgICAgICBpc1Nob3duOiBwb3BvdmVyQ29udGVudElzU2hvd24sXG4gICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgIGNsb3NlUG9wb3ZlcixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn0pO1xuXG50eXBlIFBvcG92ZXJXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IHBvcG92ZXI6IHtcbiAgICByZWFkb25seSAkcG9wb3ZlcjogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICAgIHJlYWRvbmx5IGlzU2hvd246IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgcmVmZXJlbmNlOiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XG4gICAgcmVhZG9ubHkgY2xvc2VQb3BvdmVyOiBWb2lkRnVuY3Rpb247XG4gIH07XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBQb3BvdmVyV3JhcHBlckNvbXBvbmVudCA9ICh7IHBvcG92ZXIsIGNoaWxkcmVuIH06IFBvcG92ZXJXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyAkcG9wb3ZlciwgaXNTaG93biwgcmVmZXJlbmNlLCBjbG9zZVBvcG92ZXIgfSA9IHBvcG92ZXI7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzU2hvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxQb3BvdmVyT3ZlcmxheUNvbnRlbnRcbiAgICAgICAgICAgIHsuLi57XG4gICAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgJHBvcG92ZXIsXG4gICAgICAgICAgICAgIGNsb3NlUG9wb3ZlcixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgKX1cbiAgICAgIDxwb3BvdmVySXNPcGVuQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17aXNTaG93bn0+e2NoaWxkcmVufTwvcG9wb3ZlcklzT3BlbkNvbnRleHQuUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuXG50eXBlIFBvcG92ZXJPdmVybGF5Q29udGVudFByb3BzID0ge1xuICByZWZlcmVuY2U6IEhUTUxEaXZFbGVtZW50IHwgbnVsbDtcbiAgJHBvcG92ZXI6ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2xvc2VQb3BvdmVyOiBWb2lkRnVuY3Rpb247XG59O1xuXG5jb25zdCBQb3BvdmVyT3ZlcmxheUNvbnRlbnQgPSAocHJvcHM6IFBvcG92ZXJPdmVybGF5Q29udGVudFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHBvcG92ZXIsIGNsb3NlUG9wb3ZlciwgcmVmZXJlbmNlIH0gPSBwcm9wcztcbiAgY29uc3QgW2Zsb2F0aW5nLCBzZXRGbG9hdGluZ10gPSB1c2VTdGF0ZTxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyh7XG4gICAgcGxhY2VtZW50OiBcImJvdHRvbVwiLFxuICAgIG1pZGRsZXdhcmU6IFtmbGlwKCksIG9mZnNldCg4KSwgc2hpZnQoKV0sXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgcmVmZXJlbmNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGNsb3NlUG9wb3ZlckZyb21PdmVybGF5ID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICBjbG9zZVBvcG92ZXIoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxNaW5pbWFsRGl2XG4gICAgICBkYXRhLXBvcG92ZXItb3ZlcmxheS10ZXN0XG4gICAgICAkYWJzb2x1dGVcbiAgICAgICRjbGFzc05hbWU9e3N0eWxlcy5wb3BvdmVyX19vdmVybGF5fVxuICAgICAgb25DbGljaz17Y2xvc2VQb3BvdmVyRnJvbU92ZXJsYXl9XG4gICAgPlxuICAgICAgPE1pbmltYWxEaXZcbiAgICAgICAgJHJlZj17c2V0RmxvYXRpbmd9XG4gICAgICAgIHN0eWxlPXtmbG9hdGluZ1N0eWxlc31cbiAgICAgICAgb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufVxuICAgICAgICAkY2xhc3NOYW1lPXtzdHlsZXMucG9wb3Zlcl9fY29udGVudH1cbiAgICAgID5cbiAgICAgICAgPGNvbnRleHRGb3JDbG9zaW5nUG9wb3Zlci5Qcm92aWRlciB2YWx1ZT17Y2xvc2VQb3BvdmVyfT57JHBvcG92ZXIoKX08L2NvbnRleHRGb3JDbG9zaW5nUG9wb3Zlci5Qcm92aWRlcj5cbiAgICAgIDwvTWluaW1hbERpdj5cbiAgICA8L01pbmltYWxEaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY29udGV4dEZvckNsb3NpbmdQb3BvdmVyID0gY3JlYXRlQ29udGV4dDxWb2lkRnVuY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmV4cG9ydCBjb25zdCB1c2VDbG9zZVBvcG92ZXIgPSAoKSA9PlxuICBleHBlY3REZWZpbmVkKFxuICAgIHVzZUNvbnRleHQoY29udGV4dEZvckNsb3NpbmdQb3BvdmVyKSxcbiAgICBcIlRyaWVkIHRvIHVzZSBjbG9zZSBwb3BvdmVyIHdoaWxlIGNvbnRlbnQgaXMgbm90IHNob3duIGluc2lkZSB0aGUgcG9wb3ZlciBjb250ZW50LlwiLFxuICApO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInBvcG92ZXJfX292ZXJsYXlcIjogXCJwb3BvdmVyLW1vZHVsZV9fcG9wb3Zlcl9fb3ZlcmxheV9fX1RjS3YtXCIsXG4gIFwicG9wb3Zlcl9fY29udGVudFwiOiBcInBvcG92ZXItbW9kdWxlX19wb3BvdmVyX19jb250ZW50X19fVUNVWjZcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVSZWYsIHR5cGUgUGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGF1dG9VcGRhdGUsIGZsaXAsIG9mZnNldCwgc2hpZnQsIHVzZUZsb2F0aW5nLCB0eXBlIFBsYWNlbWVudCB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgdHlwZSBGbG9hdGluZ0NvbnRlbnRBcmdzID0ge1xuICByZWFkb25seSBmbG9hdGluZ1N0eWxlczogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgcmVhZG9ubHkgY29udGVudFJlZjogTm9uTnVsbGFibGU8UmVhY3QuUmVmPEhUTUxEaXZFbGVtZW50Pj47XG59O1xuXG5leHBvcnQgdHlwZSBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5ID0gKGFyZ3M6IEZsb2F0aW5nQ29udGVudEFyZ3MpID0+IFJlYWN0LlJlYWN0Tm9kZTtcblxuZXhwb3J0IHR5cGUgJEZsb2F0aW5nUHJvcHMgPSB7XG4gIHJlYWRvbmx5IHBvc2l0aW9uPzogUGxhY2VtZW50O1xuICByZWFkb25seSBjb250ZW50OiBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5O1xufTtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIHJlYWRvbmx5ICRmbG9hdGluZz86ICRGbG9hdGluZ1Byb3BzO1xufTtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdQbHVnaW4gPSBQbHVnaW48RmxvYXRpbmdQbHVnaW5Qcm9wcywgdW5rbm93bj47XG5cbnR5cGUgRmxvYXRpbmdXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGZsb2F0aW5nOiAkRmxvYXRpbmdQcm9wcztcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IEZsb2F0aW5nV3JhcHBlckNvbXBvbmVudCA9ICh7IGZsb2F0aW5nLCBjb250cmlidXRlUmVmLCBjaGlsZHJlbiB9OiBGbG9hdGluZ1dyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCBbcmVmZXJlbmNlLCBzZXRSZWZlcmVuY2VdID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2Zsb2F0aW5nRWwsIHNldEZsb2F0aW5nXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29udHJpYnV0ZVJlZihzZXRSZWZlcmVuY2UpO1xuXG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICBwbGFjZW1lbnQ6IGZsb2F0aW5nLnBvc2l0aW9uID8/IFwiYm90dG9tXCIsXG4gICAgbWlkZGxld2FyZTogW2ZsaXAoKSwgb2Zmc2V0KDgpLCBzaGlmdCgpXSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgICBlbGVtZW50czoge1xuICAgICAgZmxvYXRpbmc6IGZsb2F0aW5nRWwsXG4gICAgICByZWZlcmVuY2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgZmxvYXRpbmdDb250ZW50ID0gZmxvYXRpbmcuY29udGVudCh7IGZsb2F0aW5nU3R5bGVzLCBjb250ZW50UmVmOiBzZXRGbG9hdGluZyB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7ZmxvYXRpbmdDb250ZW50ID8gY3JlYXRlUG9ydGFsKGZsb2F0aW5nQ29udGVudCwgZG9jdW1lbnQuYm9keSkgOiBudWxsfVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0aW5nUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEZsb2F0aW5nUGx1Z2luUHJvcHMsIFtSZWZQbHVnaW48VD5dPigocHJvcHMpID0+IHtcbiAgICBjb25zdCB7ICRmbG9hdGluZyB9ID0gcHJvcHM7XG5cbiAgICBpZiAoJGZsb2F0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7ICRmbG9hdGluZzogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRmbG9hdGluZzogdW5kZWZpbmVkLFxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBGbG9hdGluZ1dyYXBwZXJDb21wb25lbnQsXG4gICAgICAgIHByb3BzOiB7IGZsb2F0aW5nOiAkZmxvYXRpbmcgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvaW52aXNpYmxlLWJhY2tkcm9wL2ludmlzaWJsZS1iYWNrZHJvcC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImludmlzaWJsZUJhY2tkcm9wXCI6IFwiaW52aXNpYmxlLWJhY2tkcm9wLW1vZHVsZV9faW52aXNpYmxlQmFja2Ryb3BfX19oT2g1YlwiXG59OyIsICJpbXBvcnQgc3R5bGVzIGZyb20gXCIuL2ludmlzaWJsZS1iYWNrZHJvcC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcblxuZXhwb3J0IHR5cGUgSW52aXNpYmxlQmFja2Ryb3BQbHVnaW5Qcm9wcyA9IHtcbiAgJGludmlzaWJsZUJhY2tkcm9wPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnZpc2libGVCYWNrZHJvcFBsdWdpbiA9IGdldFBsdWdpbjxJbnZpc2libGVCYWNrZHJvcFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRpbnZpc2libGVCYWNrZHJvcCwgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkaW52aXNpYmxlQmFja2Ryb3ApIHtcbiAgICByZXR1cm4geyAkaW52aXNpYmxlQmFja2Ryb3A6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkaW52aXNpYmxlQmFja2Ryb3A6IHVuZGVmaW5lZCxcbiAgICAkY2xhc3NOYW1lOiBbJGNsYXNzTmFtZSwgc3R5bGVzLmludmlzaWJsZUJhY2tkcm9wXSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRHJvcERvd25NZW51LCB0eXBlIERyb3BEb3duTWVudVNwZWMgfSBmcm9tIFwiQGs4c2xlbnMvZHJvcC1kb3duLW1lbnUtY29udHJhY3RzXCI7XG5pbXBvcnQgeyBvblRyaWdnZXIgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSB9IGZyb20gXCIuLi9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uMmQgfSBmcm9tIFwiLi4vY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBjdXJzb3JQbHVnaW4gfSBmcm9tIFwiLi4vY3Vyc29yL2N1cnNvclwiO1xuaW1wb3J0IHsgdHlwZSBlbmFibGVkUGx1Z2luLCBpc0Rpc2FibGVkIH0gZnJvbSBcIi4uL2VuYWJsZWQvZW5hYmxlZFwiO1xuaW1wb3J0IHsgdXNlT25PdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudVBsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgdGFiSW5kZXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIGEgZHJvcC1kb3duIG1lbnUgdG8gdGhlIGVsZW1lbnQuIENyZWF0ZSB0aGUgdmFsdWUgd2l0aCBgZHJvcERvd25NZW51KGtpbmQsIG9wdGlvbnM/KWBcbiAgICogZnJvbSBgQGs4c2xlbnMvZHJvcC1kb3duLW1lbnUtY29udHJhY3RzYDsgdGhlIGl0ZW1zIGNvbWUgZnJvbSB0aGUgY29udHJpYnV0aW9ucyByZWdpc3RlcmVkIGZvclxuICAgKiB0aGUga2luZC5cbiAgICpcbiAgICogVGhlIG1lbnUgcG9zaXRpb25zIGl0c2VsZiBhZ2FpbnN0IHRoZSBuZWFyZXN0IGFuY2hvciBhcm91bmQgaXQsIHNvIHRoZSBlbGVtZW50IFx1MjAxNCBvciBzb21ldGhpbmdcbiAgICogZW5jbG9zaW5nIGl0IFx1MjAxNCBkZWNsYXJlcyBgJGFuY2hvcmAuXG4gICAqXG4gICAqIEZvY3VzIHJldHVybnMgdG8gdGhlIGVsZW1lbnQgb25jZSB0aGUgbWVudSBpcyBnb25lLiBBIG1lbnUgdGhhdCBvcGVucyBvbiBob3ZlcmluZyBvcGVucyB3aXRoXG4gICAqIEFycm93UmlnaHQgYXMgd2VsbCwgYW5kIGNsb3NlcyB3aXRoIEFycm93TGVmdCBmcm9tIGFueXdoZXJlIHdpdGhpbiBpdCwgc28gYSBtZW51IGhlbGQgYnkgYSBtZW51XG4gICAqIHJvdyBpcyByZWFjaGFibGUgd2l0aG91dCBhIHBvaW50ZXIuXG4gICAqXG4gICAqIFJlcXVpcmVzIGBkcm9wRG93bk1lbnVGZWF0dXJlYCBvZiBgQGxlbnNhcHAvZHJvcC1kb3duLW1lbnVgIHRvIGJlIHJlZ2lzdGVyZWQ6IHRoZSBtZW51XG4gICAqIGNvbXBvbmVudCBpcyByZXNvbHZlZCB0aHJvdWdoIGFuIGluamVjdGlvbiB0b2tlbiB0aGlzIHBhY2thZ2UgZG9lcyBub3QgaW1wbGVtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGRyb3BEb3duTWVudT86IERyb3BEb3duTWVudVNwZWM7XG59O1xuXG5jb25zdCBob3ZlckNsb3NlRGVsYXlJbk1pbGxpc2Vjb25kcyA9IDIwMDtcblxudHlwZSBEcm9wRG93bk1lbnVXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGRyb3BEb3duTWVudTogRHJvcERvd25NZW51U3BlYztcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBEcm9wRG93bk1lbnVXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgZHJvcERvd25NZW51LFxuICBjb250cmlidXRlUmVmLFxuICBjb250cmlidXRlUHJvcHMsXG4gIGNoaWxkcmVuLFxufTogRHJvcERvd25NZW51V3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSB1c2VTdGF0ZTxQb3NpdGlvbjJkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBjbG9zZVRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBvblJpZ2h0VHJpZ2dlciA9IHVzZVN5bmNJbmplY3Qob25SaWdodFRyaWdnZXJJbmplY3RhYmxlKTtcblxuICBjb25zdCBlbGVtZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IG1lbnVSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgZWxlbWVudFRha2VzRm9jdXNCYWNrUmVmID0gdXNlUmVmKGZhbHNlKTtcblxuICBjb250cmlidXRlUmVmKFxuICAgIHVzZUNhbGxiYWNrKChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGVsZW1lbnRSZWYuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgfSwgW10pLFxuICApO1xuXG4gIGNvbnN0IHRvZ2dsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldElzT3Blbigod2FzT3BlbikgPT4gIXdhc09wZW4pLCBbXSk7XG5cbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gVGhlIGVsZW1lbnQgdGhlIG1lbnUgYmVsb25ncyB0byB0YWtlcyBmb2N1cyBiYWNrIHdoZW4gZm9jdXMgaXMgaW4gdGhlIG1lbnUgdGhhdCBpcyBjbG9zaW5nLFxuICAgIC8vIG9yIG5vd2hlcmUgYXQgYWxsOiB3aGF0ZXZlciB0aGUgdXNlciBkb2VzIG5leHQsIHRoZXkgZG8gZnJvbSB3aGVyZSB0aGV5IHdlcmUuIERlY2lkZWQgaGVyZSxcbiAgICAvLyB3aGlsZSBpdCBpcyBzdGlsbCBjbGVhciB3aGVyZSBmb2N1cyB3YXMsIHJhdGhlciB0aGFuIG9uY2UgdGhlIG1lbnUgaGFzIGdvbmUuXG4gICAgY29uc3QgZm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICBlbGVtZW50VGFrZXNGb2N1c0JhY2tSZWYuY3VycmVudCA9XG4gICAgICBmb2N1c2VkID09PSBudWxsIHx8IGZvY3VzZWQgPT09IGRvY3VtZW50LmJvZHkgfHwgbWVudVJlZi5jdXJyZW50Py5jb250YWlucyhmb2N1c2VkKSA9PT0gdHJ1ZTtcblxuICAgIHNldElzT3BlbihmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBjYW5jZWxTY2hlZHVsZWRDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoY2xvc2VUaW1lclJlZi5jdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dChjbG9zZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9wZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBzZXRJc09wZW4odHJ1ZSk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIGNvbnN0IHNjaGVkdWxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGNsb3NlLCBob3ZlckNsb3NlRGVsYXlJbk1pbGxpc2Vjb25kcyk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZSwgY2xvc2VdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gY2FuY2VsU2NoZWR1bGVkQ2xvc2UsIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gQSBtZW51IHRoYXQgaXMgZGlzbWlzc2VkIHJhdGhlciB0aGFuIGNsb3NlZCBcdTIwMTQgY2xpY2tlZCBhd2F5IGZyb20gXHUyMDE0IGxlYXZlcyBmb2N1cyB3aGVyZXZlciB0aGVcbiAgICAvLyB1c2VyIHB1dCBpdC5cbiAgICBlbGVtZW50VGFrZXNGb2N1c0JhY2tSZWYuY3VycmVudCA9IGZhbHNlO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghZWxlbWVudFRha2VzRm9jdXNCYWNrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBEZWZlcnJlZCBwYXN0IHdoYXQgaXMgYmVpbmcgdGFrZW4gYXdheTogdGhlIGVsZW1lbnQgbWF5IGJlIGdvaW5nIHdpdGggdGhlIG1lbnUsIGEgbWVudVxuICAgICAgLy8gaW5zaWRlIGEgbWVudSB0aGF0IGlzIGNsb3NpbmcgdG9vLCBhbmQgb25seSB0aGVuIGlzIGl0IGNsZWFyIHdoZXRoZXIgaXQgaXMgc3RpbGwgdGhlcmUgdG9cbiAgICAgIC8vIHRha2UgZm9jdXMgYmFjay4gQW55dGhpbmcgdGhhdCB0b29rIGZvY3VzIGluIHRoZSBtZWFudGltZSB3YXMgZ2l2ZW4gaXQgb24gcHVycG9zZSwgYW5kIGFcbiAgICAgIC8vIG1lbnUgY2xvc2luZyBpcyBubyByZWFzb24gdG8gdGFrZSBpdCBhd2F5IGFnYWluLlxuICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgZm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGVsZW1lbnQ/LmlzQ29ubmVjdGVkICYmIChmb2N1c2VkID09PSBudWxsIHx8IGZvY3VzZWQgPT09IGRvY3VtZW50LmJvZHkpKSB7XG4gICAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbaXNPcGVuXSk7XG5cbiAgY29uc3Qgb3Blbk9uID0gZHJvcERvd25NZW51Lm9wZW5PbiA/PyBcImNsaWNrXCI7XG5cbiAgY29uc3QgY2xvc2VPbkFycm93TGVmdCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0xlZnRcIikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjbG9zZV0sXG4gICk7XG5cbiAgLy8gTWFya3MgdGhlIGVsZW1lbnQgYW5kLCBiZWxvdywgdGhlIG1lbnUgaXQgb3BlbnMgYXMgb25lIHRoaW5nIGZvciBvdXRzaWRlLWNsaWNrIHB1cnBvc2VzLlxuICBjb25zdCBvdXRzaWRlQ2xpY2tNYXJraW5nUHJvcHMgPSB1c2VPbk91dHNpZGVDbGljayhcbiAgICB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICB9XG4gICAgfSwgW2lzT3Blbl0pLFxuICApO1xuXG4gIGNvbnRyaWJ1dGVQcm9wcyh7XG4gICAgLi4ub3V0c2lkZUNsaWNrTWFya2luZ1Byb3BzLFxuICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcIm1lbnVcIixcblxuICAgIC4uLihvcGVuT24gPT09IFwiY2xpY2tcIiAmJiB7XG4gICAgICBvbkNsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgfSxcblxuICAgICAgLy8gQSBrZXkgcHJlc3MgdGhlIGVsZW1lbnQgYW5zd2VycyB3aXRoIGEgbWVudSBpcyBhbnN3ZXJlZCBoZXJlIGFuZCBub3doZXJlIGVsc2UsXG4gICAgICAvLyBleGFjdGx5IGFzIGl0cyBjbGljayBpczogd2hhdGV2ZXIgZW5jbG9zZXMgdGhlIGVsZW1lbnQgKGEgbWVudSByb3cgd2l0aCBhblxuICAgICAgLy8gYWN0aW9uIG9mIGl0cyBvd24sIHNheSkgbXVzdCBub3QgdGFrZSB0aGUgc2FtZSBwcmVzcyBmb3IgYmVpbmcgYWN0aXZhdGVkIHRvby5cbiAgICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIG9uVHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICAuLi4ob3Blbk9uID09PSBcInJpZ2h0LWNsaWNrXCIgJiYge1xuICAgICAgb25Db250ZXh0TWVudTogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAvLyBBIG1lbnUgb3BlbmVkIGJ5IHJpZ2h0LWNsaWNraW5nIGJlbG9uZ3MgYXQgdGhlIGN1cnNvciByYXRoZXIgdGhhbiBhdCB0aGUgZWxlbWVudC5cbiAgICAgICAgc2V0Q3Vyc29yKHsgeDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WSB9KTtcbiAgICAgICAgdG9nZ2xlKCk7XG4gICAgICB9LFxuXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBvblJpZ2h0VHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICAuLi4ob3Blbk9uID09PSBcImhvdmVyXCIgJiYge1xuICAgICAgb25Nb3VzZUVudGVyOiBvcGVuLFxuICAgICAgb25Nb3VzZUxlYXZlOiBzY2hlZHVsZUNsb3NlLFxuXG4gICAgICAvLyBBIG1lbnUgdGhhdCBvcGVucyBvbiBob3ZlcmluZyB3b3VsZCBiZSBvdXQgb2YgdGhlIGtleWJvYXJkJ3MgcmVhY2ggb3RoZXJ3aXNlLiBTaWRld2F5c1xuICAgICAgLy8gaW50byBpdCwgc2luY2UgdGhhdCBpcyB3aGVyZSBzdWNoIGEgbWVudSBzaXRzOiBiZXNpZGUgdGhlIGVsZW1lbnQgaXQgYmVsb25ncyB0by4gRm9jdXNcbiAgICAgIC8vIGZvbGxvd3Mgb24gaXRzIG93biwgdGhlIG1lbnUgdGFraW5nIGl0IGFzIGl0IGFwcGVhcnMuXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93UmlnaHRcIikge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgb3BlbigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7Y2hpbGRyZW59XG5cbiAgICAgIHtpc09wZW4gJiYgKFxuICAgICAgICAvLyBNYXJrZWQgYXMgaW5zaWRlIGZvciB0aGUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb24gYWJvdmU6IHRoZSBtZW51IGlzIGEgc2libGluZyBvZiB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpbiB0aGUgRE9NLCBidXQgcGFydCBvZiB0aGUgc2FtZSB0aGluZyBhcyBmYXIgYXMgYSB1c2VyIGlzIGNvbmNlcm5lZC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gQSBjbGljayBsYW5kaW5nIG9uIHRoZSBtZW51IGlzIGEgY2xpY2sgb24gdGhlIG1lbnUgYW5kIG5vdGhpbmcgZWxzZSwgc28gaXQgc3RvcHMgaGVyZVxuICAgICAgICAvLyByYXRoZXIgdGhhbiBnb2luZyBvbiB0byB3aGF0ZXZlciBlbmNsb3NlcyB0aGUgZWxlbWVudCB0aGUgbWVudSB3YXMgb3BlbmVkIGZyb20gXHUyMDE0IGEgcm93XG4gICAgICAgIC8vIG9mIGEgbWVudSBvZiBpdHMgb3duLCBzYXksIHdoaWNoIHdvdWxkIHRha2UgaXQgZm9yIHRoZSByb3cgYmVpbmcgYWN0aXZhdGVkLiBPbmx5XG4gICAgICAgIC8vIGBjbGlja2Agc3RvcHM6IHRoZSBvdXRzaWRlLWNsaWNrIGRldGVjdGlvbiBhYm92ZSB3b3JrcyBvbiBgcG9pbnRlcmRvd25gLlxuICAgICAgICA8c3BhblxuICAgICAgICAgIHsuLi5vdXRzaWRlQ2xpY2tNYXJraW5nUHJvcHN9XG4gICAgICAgICAgcmVmPXttZW51UmVmfVxuICAgICAgICAgIHN0eWxlPXtkaXNwbGF5Q29udGVudHN9XG4gICAgICAgICAgb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufVxuICAgICAgICAgIC8vIFNpZGV3YXlzIGJhY2sgb3V0IG9mIGEgbWVudSB0aGF0IG9wZW5lZCBzaWRld2F5cywgZnJvbSB3aGVyZXZlciBpbiBpdCBmb2N1cyBoYXBwZW5zIHRvXG4gICAgICAgICAgLy8gYmUuIEl0IHN0b3BzIGhlcmUsIHNvIHRoZSBtZW51IHRoaXMgb25lIHdhcyBvcGVuZWQgZnJvbSBpcyBsZWZ0IGFzIGl0IGlzIHJhdGhlciB0aGFuXG4gICAgICAgICAgLy8gY2xvc2luZyBhbG9uZyB3aXRoIGl0IFx1MjAxNCBvbmUgc3RlcCBvdXQgcGVyIHByZXNzLiBPbmx5IHN1Y2ggYSBtZW51OiBlbHNld2hlcmUgdGhlIGtleVxuICAgICAgICAgIC8vIGJlbG9uZ3MgdG8gd2hhdGV2ZXIgdGhlIG1lbnUgaG9sZHMsIGFuZCBFc2NhcGUgaXMgaG93IGEgbWVudSBpcyBkaXNtaXNzZWQuXG4gICAgICAgICAgb25LZXlEb3duPXtvcGVuT24gPT09IFwiaG92ZXJcIiA/IGNsb3NlT25BcnJvd0xlZnQgOiB1bmRlZmluZWR9XG4gICAgICAgID5cbiAgICAgICAgICA8RHJvcERvd25NZW51XG4gICAgICAgICAgICBzcGVjPXtkcm9wRG93bk1lbnV9XG4gICAgICAgICAgICBhbmNob3JQb2ludD17b3Blbk9uID09PSBcInJpZ2h0LWNsaWNrXCIgPyBjdXJzb3IgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBvbkNsb3NlPXtjbG9zZX1cbiAgICAgICAgICAgIG9uTWVudUhvdmVyQ2hhbmdlPXtcbiAgICAgICAgICAgICAgb3Blbk9uID09PSBcImhvdmVyXCJcbiAgICAgICAgICAgICAgICA/IChtZW51SXNIb3ZlcmVkKSA9PiAobWVudUlzSG92ZXJlZCA/IGNhbmNlbFNjaGVkdWxlZENsb3NlKCkgOiBzY2hlZHVsZUNsb3NlKCkpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgZGlzcGxheUNvbnRlbnRzID0geyBkaXNwbGF5OiBcImNvbnRlbnRzXCIgfSBhcyBjb25zdDtcblxuY29uc3Qgc3RvcFByb3BhZ2F0aW9uID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuZXhwb3J0IGNvbnN0IGRyb3BEb3duTWVudVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wRG93bk1lbnVQbHVnaW5Qcm9wcywgW3R5cGVvZiBlbmFibGVkUGx1Z2luLCB0eXBlb2YgY3Vyc29yUGx1Z2luXT4oXG4gIChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGRyb3BEb3duTWVudSwgJGN1cnNvciwgcm9sZSB9ID0gcHJvcHMgYXMgdHlwZW9mIHByb3BzICYgUmVhY3QuSFRNTFByb3BzPEhUTUxFbGVtZW50PjtcblxuICAgIGlmICgkZHJvcERvd25NZW51ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7ICRkcm9wRG93bk1lbnU6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGNvbnN0IG9wZW5zT25DbGljayA9ICgkZHJvcERvd25NZW51Lm9wZW5PbiA/PyBcImNsaWNrXCIpID09PSBcImNsaWNrXCI7XG4gICAgLy8gUmVhZCBmcm9tIHdoYXQgdGhlIGVsZW1lbnQgd2FzIGdpdmVuOiB0aGlzIHBsdWdpbiBydW5zIGJlZm9yZSB0aGUgb25lIHRoYXQgdHVybnMgaXQgaW50b1xuICAgIC8vIHRoZSBgZGlzYWJsZWRgIHByb3AuXG4gICAgY29uc3QgY2Fubm90QmVVc2VkID0gaXNEaXNhYmxlZChwcm9wcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGRyb3BEb3duTWVudTogdW5kZWZpbmVkLFxuXG4gICAgICAuLi4oJGRyb3BEb3duTWVudS5vcGVuT24gPT09IFwiaG92ZXJcIiA/IHt9IDogeyB0YWJJbmRleDogcHJvcHMudGFiSW5kZXggPz8gMCB9KSxcblxuICAgICAgLy8gQW4gZWxlbWVudCB0aGF0IGFuc3dlcnMgYSBjbGljayB3aXRoIGEgbWVudSBpcyBhIGJ1dHRvbiwgYW5kIHRoZSBjdXJzb3IgaXMgaG93IGl0IHNheXMgc29cbiAgICAgIC8vIC0tIG9yIHNheXMgdGhhdCBpdCBjYW5ub3QgcmlnaHQgbm93LiBCb3RoIHdvdWxkIG90aGVyd2lzZSBjb21lIGZyb20gYSBjbGljayBoYW5kbGVyIHN1Y2ggYW5cbiAgICAgIC8vIGVsZW1lbnQgaGFzIG5vIHJlYXNvbiB0byBoYXZlLiBPbmx5IGEgY2xpY2s6IHNvbWV0aGluZyByaWdodC1jbGlja2VkIGlzIG5vdCBhIGJ1dHRvbiwgYW5kIGFcbiAgICAgIC8vIHJvdyB0aGF0IHJldmVhbHMgYSBtZW51IG9uIGhvdmVyIGlzIGEgcm93LlxuICAgICAgLi4uKG9wZW5zT25DbGljayAmJiB7XG4gICAgICAgIHJvbGU6IHJvbGUgPz8gXCJidXR0b25cIixcbiAgICAgICAgJGN1cnNvcjogJGN1cnNvciA/PyAoY2Fubm90QmVVc2VkID8gXCJub3QtYWxsb3dlZFwiIDogXCJwb2ludGVyXCIpLFxuICAgICAgfSksXG5cbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRHJvcERvd25NZW51V3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHsgZHJvcERvd25NZW51OiAkZHJvcERvd25NZW51IH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0sXG4pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgY3NzTmFtZXMgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VJZCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2FuY2hvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBQb3NpdGlvbjJkIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHR5cGUgVFNoaXJ0U2l6ZSwgdFNoaXJ0U2l6ZUluUGl4ZWxzIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuLi9jb2xvci9jb2xvclwiO1xuaW1wb3J0IHR5cGUgeyBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4gfSBmcm9tIFwiLi4vYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgdHlwZSB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuLi9ib3JkZXIvYm9yZGVyXCI7XG5pbXBvcnQgdHlwZSB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi4vcGFkZGluZy9wYWRkaW5nXCI7XG5pbXBvcnQgdHlwZSB7IG1hcmdpblBsdWdpbiB9IGZyb20gXCIuLi9tYXJnaW4vbWFyZ2luXCI7XG5pbXBvcnQgdHlwZSB7IG92ZXJmbG93UGx1Z2luIH0gZnJvbSBcIi4uL292ZXJmbG93L292ZXJmbG93XCI7XG5cbi8qKlxuICogV2hlcmUgYW4gZWxlbWVudCBzaXRzIHJlbGF0aXZlIHRvIGl0cyBhbmNob3I6IGEgc2lkZSBvZiB0aGUgYW5jaG9yLCBvcHRpb25hbGx5IHJlZmluZWQgd2l0aCBob3dcbiAqIHRoZSBlbGVtZW50IGV4dGVuZHMgYWxvbmcgdGhhdCBzaWRlLiBBIGJhcmUgc2lkZSBjZW50ZXJzIHRoZSBlbGVtZW50IG9uIGl0OyBgc3Bhbi08ZGlyZWN0aW9uPmBcbiAqIGFsaWducyB0aGVpciBlZGdlcyBhbmQgbGV0cyB0aGUgZWxlbWVudCBleHRlbmQgdG93YXJkIHRoYXQgZGlyZWN0aW9uLlxuICpcbiAqIFdoZW4gdGhlIGVsZW1lbnQgd291bGQgbm90IGZpdCB0aGUgdmlld3BvcnQsIGl0IGZhbGxzIGJhY2sgdG8gdGhlIG1pcnJvcmVkIHBvc2l0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgQW5jaG9yUG9zaXRpb24gPVxuICB8IFwidG9wXCJcbiAgfCBcImJvdHRvbVwiXG4gIHwgXCJsZWZ0XCJcbiAgfCBcInJpZ2h0XCJcbiAgfCBcInRvcCBzcGFuLWxlZnRcIlxuICB8IFwidG9wIHNwYW4tcmlnaHRcIlxuICB8IFwiYm90dG9tIHNwYW4tbGVmdFwiXG4gIHwgXCJib3R0b20gc3Bhbi1yaWdodFwiXG4gIHwgXCJsZWZ0IHNwYW4tdG9wXCJcbiAgfCBcImxlZnQgc3Bhbi1ib3R0b21cIlxuICB8IFwicmlnaHQgc3Bhbi10b3BcIlxuICB8IFwicmlnaHQgc3Bhbi1ib3R0b21cIjtcblxuLyoqXG4gKiBFaXRoZXIgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbmVhcmVzdCBhbmNlc3RvciBgJGFuY2hvcmAsIG9yIHRoZSBzYW1lIHBvc2l0aW9uIHJlbGF0aXZlIHRvIGFcbiAqIHBvaW50IGluIHRoZSB2aWV3cG9ydC5cbiAqL1xuZXhwb3J0IHR5cGUgQW5jaG9yZWRBdCA9XG4gIHwgQW5jaG9yUG9zaXRpb25cbiAgfCB7XG4gICAgICByZWFkb25seSBwb3NpdGlvbjogQW5jaG9yUG9zaXRpb247XG5cbiAgICAgIC8qKiBIb3cgZmFyIGZyb20gdGhlIGFuY2hvciB0aGUgZWxlbWVudCBzaXRzLiBEZWZhdWx0cyB0byBgXCJ4c1wiYC4gKi9cbiAgICAgIHJlYWRvbmx5IGdhcD86IFRTaGlydFNpemU7XG5cbiAgICAgIC8qKiBTaXQgYXQgdGhpcyB2aWV3cG9ydCBwb2ludCBpbnN0ZWFkIG9mIGF0IGFuIGFuY2hvci4gKi9cbiAgICAgIHJlYWRvbmx5IHBvaW50PzogUG9zaXRpb24yZDtcbiAgICB9O1xuXG5jb25zdCBkZWZhdWx0R2FwOiBUU2hpcnRTaXplID0gXCJ4c1wiO1xuXG5leHBvcnQgdHlwZSBBbmNob3JQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG5cbiAgLyoqXG4gICAqIE1ha2VzIHRoZSBlbGVtZW50IGFuIGFuY2hvciBmb3IgdGhlIGVsZW1lbnRzIG9mIGl0cyBzdWJ0cmVlIHRoYXQgZGVjbGFyZSB7QGxpbmsgJGFuY2hvcmVkQXR9LlxuICAgKiBUaGUgbmVhcmVzdCBzdWNoIGFuY2VzdG9yIHdpbnMsIHNvIG5lc3Rpbmcgd29ya3Mgd2l0aG91dCBuYW1pbmcgYW55dGhpbmcuXG4gICAqL1xuICByZWFkb25seSAkYW5jaG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUG9zaXRpb25zIHRoZSBlbGVtZW50IHJlbGF0aXZlIHRvIGFuIGFuY2hvciwgYWJvdmUgZXZlcnl0aGluZyBlbHNlIG9uIHRoZSBwYWdlIFx1MjAxNCBpdCBlc2NhcGVzXG4gICAqIGNsaXBwaW5nIGFuY2VzdG9ycyBhbmQgc3RhY2tpbmcgY29udGV4dHMsIHNvIGl0IG5lZWRzIG5vIHBvcnRhbC5cbiAgICpcbiAgICogVGhlIGFuY2hvciBpcyB0aGUgbmVhcmVzdCBhbmNlc3RvciBkZWNsYXJpbmcge0BsaW5rICRhbmNob3J9LCBvciB0aGUgZ2l2ZW4gcG9pbnQgd2hlbiBhIHBvaW50XG4gICAqIGlzIHByb3ZpZGVkIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSAkYW5jaG9yZWRBdD86IEFuY2hvcmVkQXQ7XG59O1xuXG5jb25zdCBhbmNob3JOYW1lQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG50eXBlIEFuY2hvcldyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgaXNBbmNob3I6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFuY2hvcmVkQXQ6IEFuY2hvcmVkQXQgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgQW5jaG9yV3JhcHBlckNvbXBvbmVudCA9ICh7XG4gIGlzQW5jaG9yLFxuICBhbmNob3JlZEF0LFxuICBjb250cmlidXRlUmVmLFxuICBjb250cmlidXRlUHJvcHMsXG4gIGNoaWxkcmVuLFxufTogQW5jaG9yV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IG93bkFuY2hvck5hbWUgPSB0b0FuY2hvck5hbWUodXNlSWQoKSk7XG4gIGNvbnN0IGluaGVyaXRlZEFuY2hvck5hbWUgPSB1c2VDb250ZXh0KGFuY2hvck5hbWVDb250ZXh0KTtcbiAgY29uc3QgZWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBwb2ludFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnRyaWJ1dGVSZWYoXG4gICAgdXNlQ2FsbGJhY2soKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgZWxlbWVudFJlZi5jdXJyZW50ID0gZWxlbWVudDtcbiAgICB9LCBbXSksXG4gICk7XG5cbiAgY29uc3QgcG9zaXRpb24gPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJzdHJpbmdcIiA/IGFuY2hvcmVkQXQgOiBhbmNob3JlZEF0Py5wb3NpdGlvbjtcbiAgY29uc3QgcG9pbnQgPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJvYmplY3RcIiA/IGFuY2hvcmVkQXQucG9pbnQgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGdhcCA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcIm9iamVjdFwiID8gKGFuY2hvcmVkQXQuZ2FwID8/IGRlZmF1bHRHYXApIDogZGVmYXVsdEdhcDtcblxuICBpZiAocG9zaXRpb24gJiYgIXBvaW50ICYmICFpbmhlcml0ZWRBbmNob3JOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRyaWVkIHRvIHBvc2l0aW9uIGFuIGVsZW1lbnQgYXQgXCIke3Bvc2l0aW9ufVwiIHdpdGhvdXQgYW4gYW5jaG9yLiBFaXRoZXIgZ2l2ZSBhbiBhbmNlc3RvciB0aGUgJGFuY2hvciBwcm9wLCBvciBhbmNob3IgdG8gYSBwb2ludCBpbnN0ZWFkLmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEEgcG9pbnQgYW5jaG9yIGlzIHRoZSBlbGVtZW50J3Mgb3duOyBvdGhlcndpc2UgaXQgcG9zaXRpb25zIGFnYWluc3Qgd2hhdGV2ZXIgYW5jaG9yIGVuY2xvc2VzIGl0LlxuICBjb25zdCBhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QgPSBwb2ludCA/IG93bkFuY2hvck5hbWUgOiBpbmhlcml0ZWRBbmNob3JOYW1lO1xuXG4gIGlmIChhbmNob3JlZEF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmlidXRlUHJvcHMoeyBwb3BvdmVyOiBcIm1hbnVhbFwiIH0pO1xuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gZWxlbWVudFJlZi5jdXJyZW50O1xuXG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQW5jaG9yKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGFuY2hvck5hbWVQcm9wZXJ0eSwgb3duQW5jaG9yTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHBvc2l0aW9uUHJvcGVydHksIHBvc2l0aW9uKTtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoZ2FwUHJvcGVydHksIGAke3RTaGlydFNpemVJblBpeGVscyhnYXApfXB4YCk7XG5cbiAgICAgIC8vIE9ubHkgdG93YXJkIHRoZSBhbmNob3IsIHNvIHRoZSBlbGVtZW50IHN0aWxsIGxpbmVzIHVwIHdpdGggaXQgb24gdGhlIG90aGVyIGF4aXMuIEFcbiAgICAgIC8vIGZhbGxiYWNrIHRoYXQgbWlycm9ycyB0aGUgcG9zaXRpb24gbWlycm9ycyB0aGlzIG1hcmdpbiB3aXRoIGl0LlxuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShtYXJnaW5Qcm9wZXJ0eVRvd2FyZHNBbmNob3IocG9zaXRpb24pLCBgJHt0U2hpcnRTaXplSW5QaXhlbHMoZ2FwKX1weGApO1xuXG4gICAgICBpZiAoYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9zaXRpb25BbmNob3JQcm9wZXJ0eSwgYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBvaW50KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9pbnRYUHJvcGVydHksIGAke3BvaW50Lnh9cHhgKTtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb2ludFlQcm9wZXJ0eSwgYCR7cG9pbnQueX1weGApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gVGhlIHBvaW50IHJpc2VzIHRvIHRoZSB0b3AgbGF5ZXIgYWxvbmcgd2l0aCB3aGF0IGlzIGFuY2hvcmVkIHRvIGl0LiBBIGBmaXhlZGAgZWxlbWVudCByZXNvbHZlc1xuICAvLyBhZ2FpbnN0IHRoZSBuZWFyZXN0IGFuY2VzdG9yIHRoYXQgdHJhbnNmb3JtcywgZmlsdGVycyBvciBjb250YWlucyBpdHMgc3VidHJlZSwgc28gYSBwb2ludCBsZWZ0XG4gIC8vIGluIHRoZSB0cmVlIGxhbmRzIGF0IHRoZSBjdXJzb3IgcGx1cyB0aGF0IGFuY2VzdG9yJ3Mgb3duIG9mZnNldCBcdTIwMTQgd2hpY2ggaXMgaG93IGEgbWVudSBvcGVuZWRcbiAgLy8gb3ZlciBhIG5hdmlnYXRvciBpdGVtIHVzZWQgdG8gYXBwZWFyIGh1bmRyZWRzIG9mIHBpeGVscyBiZWxvdyB0aGUgY3Vyc29yLlxuICAvL1xuICAvLyBTaG93biBiZWZvcmUgdGhlIGVsZW1lbnQgYW5jaG9yZWQgdG8gaXQ6IGFuIGFuY2hvciBoYXMgdG8gcmVhY2ggdGhlIHRvcCBsYXllciBmaXJzdCwgb3IgdGhlXG4gIC8vIGVsZW1lbnQgcG9zaXRpb25pbmcgYWdhaW5zdCBpdCBmaW5kcyBubyBhbmNob3IgYXQgYWxsIGFuZCBsYW5kcyBpbiB0aGUgdmlld3BvcnQncyBjb3JuZXIuXG4gIC8vXG4gIC8vIE9uY2UsIG9uIG1vdW50OiBhbiBlbGVtZW50IGlzIGFuY2hvcmVkIHRvIGEgcG9pbnQgZm9yIGFzIGxvbmcgYXMgaXQgaXMgbW91bnRlZCwgc2luY2UgdGhlIHBvaW50XG4gIC8vIGlzIHdoZXJlIHRoZSBjdXJzb3Igd2FzIHdoZW4gd2hhdGV2ZXIgb3BlbmVkIGl0IHdhcyBvcGVuZWQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IHBvaW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIWVsZW1lbnQgfHwgIWlzUG9wb3ZlckNhcGFibGUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbGVtZW50LnNob3dQb3BvdmVyKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgZWxlbWVudC5oaWRlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIXBvc2l0aW9uIHx8ICFlbGVtZW50IHx8ICFpc1BvcG92ZXJDYXBhYmxlKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGVsZW1lbnQuaGlkZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbcG9zaXRpb25dKTtcblxuICBjb25zdCBjb250ZW50ID0gcG9pbnQgPyAoXG4gICAgPD5cbiAgICAgIHsvKiBBIHplcm8tc2l6ZSBhbmNob3IgYXQgdGhlIHBvaW50LCBzbyBhIGN1cnNvci1hbmNob3JlZCBlbGVtZW50IHBvc2l0aW9ucyBsaWtlIGFueSBvdGhlci4gKi99XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17cG9pbnRSZWYgYXMgUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50Pn1cbiAgICAgICAgcG9wb3Zlcj1cIm1hbnVhbFwiXG4gICAgICAgIGRhdGEtYW5jaG9yLXBvaW50LXRlc3RcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYW5jaG9yUG9pbnR9XG4gICAgICAgIHN0eWxlPXtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbYW5jaG9yTmFtZVByb3BlcnR5XTogb3duQW5jaG9yTmFtZSxcbiAgICAgICAgICAgIFtwb2ludFhQcm9wZXJ0eV06IGAke3BvaW50Lnh9cHhgLFxuICAgICAgICAgICAgW3BvaW50WVByb3BlcnR5XTogYCR7cG9pbnQueX1weGAsXG4gICAgICAgICAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gICAgICAgIH1cbiAgICAgIC8+XG5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKSA6IChcbiAgICBjaGlsZHJlblxuICApO1xuXG4gIGlmIChpc0FuY2hvcikge1xuICAgIHJldHVybiA8YW5jaG9yTmFtZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e293bkFuY2hvck5hbWV9Pntjb250ZW50fTwvYW5jaG9yTmFtZUNvbnRleHQuUHJvdmlkZXI+O1xuICB9XG5cbiAgcmV0dXJuIDw+e2NvbnRlbnR9PC8+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFuY2hvclBsdWdpbiA9IGdldFBsdWdpbjxcbiAgQW5jaG9yUGx1Z2luUHJvcHMsXG4gIFtcbiAgICB0eXBlb2YgY2xhc3NOYW1lUGx1Z2luLFxuICAgIHR5cGVvZiBjb2xvclBsdWdpbixcbiAgICB0eXBlb2YgYmFja2dyb3VuZENvbG9yUGx1Z2luLFxuICAgIHR5cGVvZiBib3JkZXJQbHVnaW4sXG4gICAgdHlwZW9mIHBhZGRpbmdQbHVnaW4sXG4gICAgdHlwZW9mIG1hcmdpblBsdWdpbixcbiAgICB0eXBlb2Ygb3ZlcmZsb3dQbHVnaW4sXG4gIF1cbj4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGFuY2hvciwgJGFuY2hvcmVkQXQsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGFuY2hvciAmJiAkYW5jaG9yZWRBdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgJGFuY2hvcjogdW5kZWZpbmVkLCAkYW5jaG9yZWRBdDogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRhbmNob3I6IHVuZGVmaW5lZCxcbiAgICAkYW5jaG9yZWRBdDogdW5kZWZpbmVkLFxuXG4gICAgLy8gUmlzaW5nIHRvIHRoZSB0b3AgbGF5ZXIgaXMgYSB0ZWNobmljYWxpdHkgb2YgcG9zaXRpb25pbmcsIGJ1dCB0aGUgYnJvd3NlciBtYWtlcyBpdCBhIGxvb2s6XG4gICAgLy8gY29sb3VycyBvZiBpdHMgb3duLCBhIGJvcmRlciwgcGFkZGluZywgYW5kIGEgbWFyZ2luIHRoYXQgd291bGQgY2VudGVyIHRoZSBlbGVtZW50LiBVbmRvIHRoYXQsXG4gICAgLy8gc28gYW4gZWxlbWVudCBwb3NpdGlvbmVkIHRoaXMgd2F5IGxvb2tzIGxpa2UgaXQgZG9lcyBhbnl3aGVyZSBlbHNlLCBhbmQgbGV0IHdoYXRldmVyIGl0IHNheXNcbiAgICAvLyBhYm91dCBpdHNlbGYgd2luLlxuICAgIC4uLigkYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICRjb2xvcjogcHJvcHMuJGNvbG9yID8/IFwiaW5oZXJpdFwiLFxuICAgICAgJGJhY2tncm91bmRDb2xvcjogcHJvcHMuJGJhY2tncm91bmRDb2xvciA/PyBcInRyYW5zcGFyZW50XCIsXG4gICAgICAkYm9yZGVyOiB7IHdpZHRoOiBcInplcm9cIiwgLi4ucHJvcHMuJGJvcmRlciB9LFxuICAgICAgJHBhZGRpbmc6IHByb3BzLiRwYWRkaW5nID8/IFwiemVyb1wiLFxuICAgICAgJG1hcmdpbjogcHJvcHMuJG1hcmdpbiA/PyBcInplcm9cIixcbiAgICAgICRvdmVyZmxvdzogcHJvcHMuJG92ZXJmbG93ID8/IFwidmlzaWJsZVwiLFxuICAgIH0pLFxuXG4gICAgJGNsYXNzTmFtZTogY3NzTmFtZXMoJGNsYXNzTmFtZSwge1xuICAgICAgW3N0eWxlcy5hbmNob3JdOiAhISRhbmNob3IsXG4gICAgICBbc3R5bGVzLmFuY2hvcmVkQXRdOiAkYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkLFxuICAgIH0pLFxuXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogQW5jaG9yV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7IGlzQW5jaG9yOiAhISRhbmNob3IsIGFuY2hvcmVkQXQ6ICRhbmNob3JlZEF0IH0sXG4gICAgfSxcbiAgfTtcbn0pO1xuXG5jb25zdCBtYXJnaW5Qcm9wZXJ0eVRvd2FyZHNBbmNob3IgPSAocG9zaXRpb246IEFuY2hvclBvc2l0aW9uKSA9PiB7XG4gIGlmIChwb3NpdGlvbi5zdGFydHNXaXRoKFwiYm90dG9tXCIpKSB7XG4gICAgcmV0dXJuIFwibWFyZ2luLXRvcFwiO1xuICB9XG5cbiAgaWYgKHBvc2l0aW9uLnN0YXJ0c1dpdGgoXCJ0b3BcIikpIHtcbiAgICByZXR1cm4gXCJtYXJnaW4tYm90dG9tXCI7XG4gIH1cblxuICByZXR1cm4gcG9zaXRpb24uc3RhcnRzV2l0aChcInJpZ2h0XCIpID8gXCJtYXJnaW4tbGVmdFwiIDogXCJtYXJnaW4tcmlnaHRcIjtcbn07XG5cbmNvbnN0IGFuY2hvck5hbWVQcm9wZXJ0eSA9IFwiLS1hbmNob3ItbmFtZVwiO1xuY29uc3QgZ2FwUHJvcGVydHkgPSBcIi0tYW5jaG9yLWdhcFwiO1xuY29uc3QgcG9zaXRpb25BbmNob3JQcm9wZXJ0eSA9IFwiLS1hbmNob3ItdGFyZ2V0XCI7XG5jb25zdCBwb3NpdGlvblByb3BlcnR5ID0gXCItLWFuY2hvci1wb3NpdGlvblwiO1xuY29uc3QgcG9pbnRYUHJvcGVydHkgPSBcIi0tYW5jaG9yLXBvaW50LXhcIjtcbmNvbnN0IHBvaW50WVByb3BlcnR5ID0gXCItLWFuY2hvci1wb2ludC15XCI7XG5cbi8qKiBBbmNob3IgbmFtZXMgYXJlIGRhc2hlZCBpZGVudHMsIHNvIHRoZSBnZW5lcmF0ZWQgaWQgaGFzIHRvIGxvc2UgZXZlcnl0aGluZyBlbHNlLiAqL1xuY29uc3QgdG9BbmNob3JOYW1lID0gKGlkOiBzdHJpbmcpID0+IGAtLWFuY2hvci0ke2lkLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCBcIlwiKX1gO1xuXG50eXBlIFBvcG92ZXJDYXBhYmxlID0gSFRNTEVsZW1lbnQgJiB7IHNob3dQb3BvdmVyOiBWb2lkRnVuY3Rpb247IGhpZGVQb3BvdmVyOiBWb2lkRnVuY3Rpb24gfTtcblxuY29uc3QgaXNQb3BvdmVyQ2FwYWJsZSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgUG9wb3ZlckNhcGFibGUgPT5cbiAgdHlwZW9mIChlbGVtZW50IGFzIFBhcnRpYWw8UG9wb3ZlckNhcGFibGU+KS5zaG93UG9wb3ZlciA9PT0gXCJmdW5jdGlvblwiO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2FuY2hvci9hbmNob3IubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJhbmNob3JcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JfX19tLTV1YlwiLFxuICBcImFuY2hvcmVkQXRcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JlZEF0X19fVUFyVUtcIixcbiAgXCJhbmNob3JQb2ludFwiOiBcImFuY2hvci1tb2R1bGVfX2FuY2hvclBvaW50X19fc0ExQWNcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL2ZvY3VzYWJsZVwiO1xuXG5leHBvcnQgdHlwZSAkRm9jdXNhYmxlUHJvcHM8Rm9jdXNlZEl0ZW0+ID0gUmVxdWlyZWQ8Rm9jdXNhYmxlUGx1Z2luUHJvcHM8Rm9jdXNlZEl0ZW0+PltcIiRmb2N1c2FibGVcIl07XG5cbi8qKlxuICogSWRlbnRpZmllcyBhIHNldCBvZiBmb2N1c2FibGVzIGNvbXBldGluZyBmb3Igb25lIGZvY3VzZWQgaXRlbS4gRWxlbWVudHMgam9pbiBpdCBieSBkZWNsYXJpbmdcbiAqIGAkZm9jdXNhYmxlYDsgbm90aGluZyBlbnVtZXJhdGVzIHRoZW0gYXQgdGhlIGNhbGwgc2l0ZS5cbiAqL1xuZXhwb3J0IHR5cGUgRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzS2V5Ym9hcmROYXZpZ2FibGU6IGZhbHNlO1xuICBmb2N1c2FibGU6IChpdGVtOiBGb2N1c2VkSXRlbSkgPT4gJEZvY3VzYWJsZVByb3BzPEZvY3VzZWRJdGVtPjtcbn07XG5cbi8qKiBXaGljaCBhcnJvdyBrZXlzIG1vdmUgZm9jdXMgd2l0aGluIGEga2V5Ym9hcmQtbmF2aWdhYmxlIGNvbnRleHQuICovXG5leHBvcnQgdHlwZSBLZXlib2FyZE5hdmlnYXRpb25PcmllbnRhdGlvbiA9IFwidmVydGljYWxcIiB8IFwiaG9yaXpvbnRhbFwiIHwgXCJib3RoXCI7XG5cbi8qKlxuICogQSBmb2N1c2FibGUgY29udGV4dCB3aG9zZSBtZW1iZXJzIGFyZSBhbHNvIG5hdmlnYXRlZCB3aXRoIGFycm93IGtleXMsIGluIHRoZSBvcmRlciB0aGV5IHN0YXRlLlxuICogVGhlIGxvd2VzdCBvcmRlciBudW1iZXIgaXMgZm9jdXNlZCB3aGVuIHRoZSBtZW1iZXJzIGFwcGVhciwgYW5kIGZvY3VzIHJldHVybnMgdG8gdGhlIGVuY2xvc2luZ1xuICogY29udGV4dCB3aGVuIHRoZXkgZ28gYXdheS5cbiAqL1xuZXhwb3J0IHR5cGUgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNLZXlib2FyZE5hdmlnYWJsZTogdHJ1ZTtcbiAgcmVhZG9ubHkgb3JpZW50YXRpb246IEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uO1xuICBmb2N1c2FibGU6IChpdGVtOiBGb2N1c2VkSXRlbSwgb3JkZXJOdW1iZXI6IG51bWJlcikgPT4gJEZvY3VzYWJsZVByb3BzPEZvY3VzZWRJdGVtPjtcbn07XG5cbmV4cG9ydCB0eXBlIEFueUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0gPSBhbnk+ID1cbiAgfCBGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPlxuICB8IEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT47XG5cbmNvbnN0IGNvbnRleHRzQnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBBbnlGb2N1c2FibGVDb250ZXh0PigpO1xuXG4vKipcbiAqIERlY2xhcmVzIGEgZm9jdXNhYmxlIGNvbnRleHQuIFRoZSBzYW1lIGlkIGFsd2F5cyB5aWVsZHMgdGhlIHNhbWUgY29udGV4dCwgc28gY2FsbGluZyB0aGlzIGR1cmluZ1xuICogcmVuZGVyIGlzIHN0YWJsZSBcdTIwMTQgd2hpY2ggaXMgd2hhdCBsZXRzIGEgc3VyZmFjZSB3aXRoIHNldmVyYWwgbGl2ZSBpbnN0YW5jZXMgbmFtZSBvbmUgY29udGV4dCBwZXJcbiAqIGluc3RhbmNlLlxuICovXG5leHBvcnQgY29uc3QgZ2V0Rm9jdXNhYmxlQ29udGV4dCA9IDxGb2N1c2VkSXRlbSw+KGlkOiBzdHJpbmcpOiBGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9PlxuICBnZXRPckNyZWF0ZUNvbnRleHQoaWQsICgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0OiBGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgICAgIGlkLFxuICAgICAgaXNLZXlib2FyZE5hdmlnYWJsZTogZmFsc2UsXG4gICAgICBmb2N1c2FibGU6IChpdGVtKSA9PiAoeyBjb250ZXh0LCBpdGVtIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbmV4cG9ydCB0eXBlIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBXaGljaCBhcnJvdyBrZXlzIG1vdmUgZm9jdXMuIERvd253YXJkcyBieSBkZWZhdWx0LCBhcyBtb3N0IHNldHMgb2YgdGhpbmdzIGFyZSBsYWlkIG91dDogdGhlXG4gICAqIGtleXMgb2YgdGhlIG90aGVyIGF4aXMgYXJlIHRoZW4gbGVmdCB0byB3aGF0ZXZlciB0aGUgbWVtYmVycyB3YW50IHRoZW0gZm9yLCBzdWNoIGFzIGEgbWVudSByb3dcbiAgICogb3BlbmluZyB0aGUgbWVudSBpdCBob2xkcyB3aXRoIEFycm93UmlnaHQuXG4gICAqL1xuICByZWFkb25seSBvcmllbnRhdGlvbj86IEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uO1xufTtcblxuLyoqXG4gKiBEZWNsYXJlcyBhIGZvY3VzYWJsZSBjb250ZXh0IHdob3NlIG1lbWJlcnMgYXJlIG5hdmlnYXRlZCB3aXRoIGFycm93IGtleXMuIEFzIHdpdGhcbiAqIHtAbGluayBnZXRGb2N1c2FibGVDb250ZXh0fSwgdGhlIHNhbWUgaWQgYWx3YXlzIHlpZWxkcyB0aGUgc2FtZSBjb250ZXh0IFx1MjAxNCBzbyB0aGUgb3B0aW9ucyBhcmUgdGhlXG4gKiBvbmVzIHRoZSBmaXJzdCBjYWxsIGZvciBhbiBpZCBzdGF0ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQgPSA8Rm9jdXNlZEl0ZW0sPihcbiAgaWQ6IHN0cmluZyxcbiAgb3B0aW9uczogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0T3B0aW9ucyA9IHt9LFxuKTogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9PlxuICBnZXRPckNyZWF0ZUNvbnRleHQoaWQsICgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0OiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICAgICAgaWQsXG4gICAgICBpc0tleWJvYXJkTmF2aWdhYmxlOiB0cnVlLFxuICAgICAgb3JpZW50YXRpb246IG9wdGlvbnMub3JpZW50YXRpb24gPz8gXCJ2ZXJ0aWNhbFwiLFxuICAgICAgZm9jdXNhYmxlOiAoaXRlbSwgb3JkZXJOdW1iZXIpID0+ICh7IGNvbnRleHQsIGl0ZW0sIG9yZGVyTnVtYmVyIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbmNvbnN0IGdldE9yQ3JlYXRlQ29udGV4dCA9IDxUIGV4dGVuZHMgQW55Rm9jdXNhYmxlQ29udGV4dD4oaWQ6IHN0cmluZywgY3JlYXRlOiAoKSA9PiBUKTogVCA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nID0gY29udGV4dHNCeUlkLmdldChpZCk7XG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nIGFzIFQ7XG4gIH1cblxuICBjb25zdCBjcmVhdGVkID0gY3JlYXRlKCk7XG5cbiAgY29udGV4dHNCeUlkLnNldChpZCwgY3JlYXRlZCk7XG5cbiAgcmV0dXJuIGNyZWF0ZWQ7XG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgJEZvY3VzYWJsZVByb3BzIH0gZnJvbSBcIi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbi8qKlxuICogQ2FycmllcyB0aGUgZm9jdXNhYmxlIGFuIGVsZW1lbnQgaXMsIGFzIGRlY2lkZWQgYnkgdGhlIHN1cmZhY2UgaXQgcmVuZGVycyBpbiByYXRoZXIgdGhhbiBieSB0aGVcbiAqIGVsZW1lbnQgaXRzZWxmOiB3aGljaCBjb250ZXh0IGl0IGNvbXBldGVzIGluLCB3aGljaCBpdGVtIGl0IHN0YW5kcyBmb3IsIGFuZCB3aGVyZSBpdCBzaXRzIGFtb25nXG4gKiB0aGUgb3RoZXJzLlxuICpcbiAqIEEgc3VyZmFjZSB0aGF0IGtub3dzIGl0cyBpdGVtcyBcdTIwMTQgYSBtZW51LCBhIHRvb2xiYXIgXHUyMDE0IHByb3ZpZGVzIG9uZSBvZiB0aGVzZSBwZXIgaXRlbTsgd2hhdGV2ZXJcbiAqIGRyYXdzIHRoZSBpdGVtIGFkb3B0cyBpdCB0aHJvdWdoIHtAbGluayB1c2VGb2N1c2FibGVJdGVtfSB3aGlsZSBrbm93aW5nIG5vdGhpbmcgYWJvdXQgdGhlXG4gKiBzdXJmYWNlLCB3aGljaCBpcyB3aGF0IGxldHMgYSBkdW1iIGNvbXBvbmVudCBiZSBrZXlib2FyZC1uYXZpZ2FibGUgaW4gb25lIHN1cmZhY2UgYW5kIG9yZGluYXJ5XG4gKiBpbiBhbm90aGVyLlxuICovXG5leHBvcnQgY29uc3QgY29udGV4dEZvckZvY3VzYWJsZUl0ZW0gPSBjcmVhdGVDb250ZXh0PCRGb2N1c2FibGVQcm9wczxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4vKipcbiAqIFRoZSBgJGZvY3VzYWJsZWAgb2YgdGhlIGl0ZW0gYSBjb21wb25lbnQgZHJhd3MsIHdoZW4gdGhlIHN1cmZhY2UgYXJvdW5kIGl0IGRlY2lkZWQgb25lLlxuICogYHVuZGVmaW5lZGAgb3V0c2lkZSBzdWNoIGEgc3VyZmFjZSwgd2hpY2ggaXMgd2hhdCBtYWtlcyBhZG9wdGluZyBpdCBhIG1hdHRlciBvZiBwYXNzaW5nIGl0IG9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IFJvdyA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSA9PiAoXG4gKiAgIDxDbGlja2FibGVMaSAkZm9jdXNhYmxlPXt1c2VGb2N1c2FibGVJdGVtKCl9PntjaGlsZHJlbn08L0NsaWNrYWJsZUxpPlxuICogKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgdXNlRm9jdXNhYmxlSXRlbSA9ICgpID0+IHVzZUNvbnRleHQoY29udGV4dEZvckZvY3VzYWJsZUl0ZW0pO1xuIiwgImltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgZ2V0SG92ZXJhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IHR5cGUgTXV0YWJsZVJlZk9iamVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IHVzZUxvY2FsSG92ZXJhYmxlID0gPEVsZW0gZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiB7XG4gIGNvbnN0IGhvdmVyYWJsZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+IGdldEhvdmVyYWJsZUNvbnRleHQ8TXV0YWJsZVJlZk9iamVjdDxFbGVtIHwgbnVsbD4+KCksIFtdKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEVsZW0+KG51bGwpO1xuICBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkID0gdXNlU3luY0luamVjdChjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlLCBob3ZlcmFibGVDb250ZXh0KTtcblxuICByZXR1cm4ge1xuICAgIHJlZixcbiAgICBjb250ZXh0OiBob3ZlcmFibGVDb250ZXh0LmhvdmVyYWJsZShyZWYpLFxuICAgIGNvbXBvbmVudElzSG92ZXJlZDogaXRlbUJlaW5nSG92ZXJlZCxcbiAgfTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsK0JBQWdEO0FBRWhELG1CQUErQztBQXdEdEM7QUFwQ0YsSUFBTSxvQkFBb0IsQ0FBQyxtQkFBa0Q7QUFDbEYsUUFBTSwrQkFBMkIscUJBQTBCLE1BQVM7QUFDcEUsUUFBTSxpQkFBYSxxQkFBTyxjQUFjO0FBRXhDLDhCQUFVLE1BQU07QUFDZCxlQUFXLFVB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QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNw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O0FBQUEsRUFDdEIsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsd0JBQXdCO0FBQUEsRUFDeEIsK0JBQStCO0FBQUEsRUFDL0Isa0NBQWtDO0FBQUEsRUFDbEMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsZ0NBQWdDO0FBQUEsRUFDaEMsdUNBQXVDO0FBQUEsRUFDdkMsMENBQTBDO0FBQUEsRUFDMUMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsMkJBQTJCO0FBQUEsRUFDM0Isa0NBQWtDO0FBQUEsRUFDbEMscUNBQXFDO0FBQUEsRUFDckMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsK0JBQStCO0FBQUEsRUFDL0Isc0NBQXNDO0FBQUEsRUFDdEMseUNBQXlDO0FBQUEsRUFDekMsdUJBQXVCO0FBQUEsRUFDdkIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsdUJBQXVCO0FBQUEsRUFDdkIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsd0JBQXdCO0FBQUEsRUFDeEIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsaUNBQWlDO0FBQUEsRUFDakMsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsbUNBQW1DO0FBQUEsRUFDbkMsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsaUNBQWlDO0FBQUEsRUFDakMsa0NBQWtDO0FBQUEsRUFDbEMsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsNEJBQTRCO0FBQUEsRUFDNUIsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsbUNBQW1DO0FBQUEsRUFDbkMsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsbUNBQW1DO0FBQUEsRUFDbkMsb0NBQW9DO0FBQUEsRUFDcEMsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0IsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsb0NBQW9DO0FBQUEsRUFDcEMsZ0NBQWdDO0FBQUEsRUFDaEMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0Isc0NBQXNDO0FBQUEsRUFDdEMsZ0NBQWdDO0FBQUEsRUFDaEMsZ0NBQWdDO0FBQUEsRUFDaEMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsb0NBQW9DO0FBQUEsRUFDcEMscUNBQXFDO0FBQUEsRUFDckMsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsa0NBQWtDO0FBQUEsRUFDbEMsOEJBQThCO0FBQUEsRUFDOUIsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0Isb0NBQW9DO0FBQUEsRUFDcEMsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStC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bUJBQW1CO0FBQUEsRUFDbkIsMkJBQTJCO0FBQUEsRUFDM0Isd0JBQXdCO0FBQUEsRUFDeEIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsaUJBQWlCO0FBQUEsRUFDakIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsaUJBQWlCO0FBQUEsRUFDakIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIs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QUM7OztBQ2R3RCxJQUFPLHdCQUFRO0FBQUEsRUFDdEUsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQ2xCOzs7QUM1REEsSUFBQUMsNkJBQTBCO0FBV25CLElBQU0sbUJBQWUsc0NBQXVELENBQUMsVUFBVTtBQUM1RixRQUFNLEVBQUUsUUFBUSxJQUFJO0FBQ3BCLFFBQU0sRUFBRSxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUUsUUFBUSxRQUFRLElBQUssV0FBVyxDQUFDO0FBRTlGLFNBQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxNQUNWLFNBQVMsc0JBQWEsV0FBVyxNQUFNLEVBQUUsSUFBSTtBQUFBLE1BQzdDLE1BQU0sc0JBQWEsZUFBZSxHQUFHLEVBQUUsSUFBSTtBQUFBLE1BQzNDLE1BQU0sc0JBQWEsZUFBZSxHQUFHLEVBQUUsSUFBSTtBQUFBLE1BQzNDLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxTQUFTO0FBQUEsRUFDWDtBQUNGLENBQUM7OztBQ3pCRCxJQUFBQyw2QkFBMEI7OztBQ0Q2QixJQUFPLHVCQUFRO0FBQUEsRUFDcEUsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsZ0JBQWdCO0FBQUEsRUFDaEIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0Isa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsd0JBQXdCO0FBQUEsRUFDeEIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0Isa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsbUJBQW1CO0FBQUEsRUFDbkIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsNEJBQTRCO0FBQUEsRUFDNUIsc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0Isc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0IsdUJBQXVCO0FBQUEsRUFDdkIsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsZUFBZTtBQUFBLEVBQ2YscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsd0JBQXdCO0FBQUEsRUFDeEIsZUFBZTtBQUFBLEVBQ2YscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsd0JBQXdCO0FBQzFCOzs7QUQ1RUEsSUFBTUMsa0JBQWlCO0FBQUEsRUFDckIsV0FBVztBQUFBLEVBQ1gsYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUNqQjtBQUVBLElBQU0sbUJBQW1CLENBQUMsVUFBOEMsU0FBU0E7QUFFMUUsSUFBTSxrQkFBYyxzQ0FBc0QsQ0FBQyxVQUFVO0FBQzFGLFFBQU0sRUFBRSxZQUFZLE9BQU8sSUFBSTtBQUMvQixRQUFNLEVBQUUsUUFBUSxPQUFPLE9BQU8sU0FBUyxJQUFJLE9BQU8sV0FBVyxXQUFXLEVBQUUsUUFBUSxPQUFPLElBQUssVUFBVSxDQUFDO0FBRXpHLFFBQU0sY0FBYyxTQUFVLGlCQUFpQixNQUFNLElBQUlBLGdCQUFlLE1BQU0sSUFBSSxTQUFVO0FBQzVGLFFBQU0sYUFBYSxRQUFTLGlCQUFpQixLQUFLLElBQUlBLGdCQUFlLEtBQUssSUFBSSxRQUFTO0FBQ3ZGLFFBQU0sYUFBYSxRQUFTLGlCQUFpQixLQUFLLElBQUlBLGdCQUFlLEtBQUssSUFBSSxRQUFTO0FBQ3ZGLFFBQU0sZ0JBQWdCLFdBQVksaUJBQWlCLFFBQVEsSUFBSUEsZ0JBQWUsUUFBUSxJQUFJLFdBQVk7QUFFdEcsU0FBTztBQUFBLElBQ0wsWUFBWTtBQUFBLE1BQ1Y7QUFBQSxNQUNBLGNBQWMscUJBQVksVUFBVSxXQUFXLEVBQUUsSUFBSTtBQUFBLE1BQ3JELGFBQWEscUJBQVksZ0JBQWdCLFVBQVUsRUFBRSxJQUFJO0FBQUEsTUFDekQsYUFBYSxxQkFBWSxnQkFBZ0IsVUFBVSxFQUFFLElBQUk7QUFBQSxNQUN6RCxnQkFBZ0IscUJBQVksbUJBQW1CLGFBQWEsRUFBRSxJQUFJO0FBQUEsSUFDcEU7QUFBQSxJQUNBLFFBQVE7QUFBQSxFQUNWO0FBQ0YsQ0FBQzs7O0FFM0NELElBQUFDLDZCQUEwQjs7O0FDRG1DLElBQU8sMEJBQVE7QUFBQSxFQUMxRSxZQUFZO0FBQ2Q7OztBRElPLElBQU0scUJBQWlCLHNDQUF5RCxDQUFDLFdBQVc7QUFBQSxFQUNqRyxZQUFZLENBQUMsTUFBTSxZQUFZLE1BQU0sWUFBWSx3QkFBZSxXQUFXLE1BQVM7QUFBQSxFQUNwRixXQUFXO0FBQ2IsRUFBRTs7O0FFVEYsSUFBQUMsNkJBQTBCO0FBRTFCLElBQUFDLGdCQUF1QjtBQUV2QixJQUFBQyxxQkFBOEI7OztBQ0orQyxJQUFPLDJCQUFRO0FBQUEsRUFDMUYsYUFBYTtBQUNmOzs7QURLQSxJQUFBQyxnQkFBeUI7QUFFbEIsSUFBTSxzQkFBa0Isc0NBQTBELENBQUMsVUFBVTtBQUNsRyxNQUFJLENBQUMsTUFBTSxZQUFZO0FBQ3JCLFdBQU8sRUFBRSxZQUFZLE9BQVU7QUFBQSxFQUNqQztBQUVBLFFBQU0sQ0FBQyxVQUFVLFdBQVcsUUFBSSx3QkFBUyxLQUFLO0FBRTlDLFFBQU0sRUFBRSxTQUFTLEtBQUssSUFBSSxNQUFNO0FBRWhDLFFBQU0sdUJBQW1CLGtDQUFjLDRCQUE0QixPQUFPO0FBRTFFLFNBQU87QUFBQSxJQUNMLFdBQVc7QUFBQSxJQUVYLGlCQUFpQjtBQUFBLElBRWpCLGlCQUFhLHNCQUFPLENBQUMsVUFBd0M7QUF6QmpFO0FBMEJNLFlBQU0sYUFBYSxnQkFBZ0I7QUFHbkMsa0JBQU0sZ0JBQU4sK0JBQW9CO0FBRXBCLHdDQUFrQyxLQUFLO0FBRXZDLHVCQUFpQixJQUFJLElBQUk7QUFHekIsaUJBQVcsTUFBTTtBQUNmLG9CQUFZLElBQUk7QUFBQSxNQUNsQixHQUFHLENBQUM7QUFBQSxJQUNOLENBQUM7QUFBQSxJQUVELGVBQVcsc0JBQU8sQ0FBQyxVQUF3QztBQXpDL0Q7QUEyQ00sa0JBQU0sY0FBTiwrQkFBa0I7QUFFbEIsdUJBQWlCLElBQUksTUFBUztBQUM5QixrQkFBWSxLQUFLO0FBQUEsSUFDbkIsQ0FBQztBQUFBLElBRUQsWUFBWSxDQUFDLE1BQU0sWUFBWSx5QkFBTyxTQUFTO0FBQUEsSUFFL0MsWUFBWTtBQUFBLEVBQ2Q7QUFDRixDQUFDO0FBRUQsSUFBTSxvQ0FBb0MsQ0FBQyxVQUF3QztBQUNqRixRQUFNLGFBQWEsUUFBUSxjQUFjLDJCQUEyQjtBQUN0RTs7O0FFeERBLElBQUFDLDZCQUEwQjtBQUMxQixJQUFBQyxxQkFBOEI7QUFJdkIsSUFBTSxzQkFBa0Isc0NBQWdDLENBQUMsVUFBVTtBQUN4RSxNQUFJLENBQUMsTUFBTSxZQUFZO0FBQ3JCLFdBQU8sRUFBRSxZQUFZLE9BQVU7QUFBQSxFQUNqQztBQUVBLFFBQU0sRUFBRSxTQUFTLE9BQU8sSUFBSSxNQUFNO0FBRWxDLFFBQU0sdUJBQW1CLGtDQUFjLDRCQUE0QixPQUFPO0FBQzFFLFFBQU0sV0FBTyxrQ0FBYyxtREFBbUQ7QUFFOUUsUUFBTSxjQUFjLGlCQUFpQixJQUFJO0FBRXpDLFNBQU87QUFBQSxJQUNMLFlBQVksQ0FBQyxVQUF3QztBQW5CekQ7QUFxQk0sa0JBQU0sZUFBTiwrQkFBbUI7QUFFbkIsVUFBSSxhQUFhO0FBQ2YsY0FBTSxlQUFlO0FBQUEsTUFDdkI7QUFBQSxJQUNGO0FBQUEsSUFFQSxRQUFRLENBQUMsVUFBd0M7QUE1QnJEO0FBOEJNLGtCQUFNLFdBQU4sK0JBQWU7QUFFZixVQUFJLGFBQWE7QUFDZixhQUFLLE1BQU07QUFDVCxpQkFBTyxXQUFXO0FBQUEsUUFDcEIsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsSUFFQSxZQUFZO0FBQUEsRUFDZDtBQUNGLENBQUM7OztBaEJ4QkQsSUFBQUMscUJBQXlCOzs7QWlCaEJ6QixJQUFBQyw2QkFBMEI7OztBQ0R1QyxJQUFPLDRCQUFRO0FBQUEsRUFDOUUsY0FBYztBQUNoQjs7O0FESU8sSUFBTSx1QkFBbUIsc0NBQTJELENBQUMsV0FBVztBQUFBLEVBQ3JHLFlBQVksQ0FBQyxNQUFNLFlBQVksRUFBRSxDQUFDLDBCQUFpQixVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sWUFBWSxDQUFDO0FBQUEsRUFDckYsYUFBYTtBQUNmLEVBQUU7OztBRVJGLElBQUFDLDZCQUEwQjs7O0FDRCtCLElBQU8sd0JBQVE7QUFBQSxFQUN0RSxxQkFBcUI7QUFBQSxFQUNyQix3QkFBd0I7QUFBQSxFQUN4QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixtQkFBbUI7QUFBQSxFQUNuQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixrQkFBa0I7QUFBQSxFQUNsQixxQkFBcUI7QUFBQSxFQUNyQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixrQkFBa0I7QUFBQSxFQUNsQixxQkFBcUI7QUFBQSxFQUNyQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixrQkFBa0I7QUFBQSxFQUNsQixxQkFBcUI7QUFBQSxFQUNyQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixtQkFBbUI7QUFBQSxFQUNuQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixvQkFBb0I7QUFBQSxFQUNwQix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQix3QkFBd0I7QUFBQSxFQUN4QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2QixxQkFBcUI7QUFBQSxFQUNyQix3QkFBd0I7QUFBQSxFQUN4QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFDekI7OztBRHJFTyxJQUFNLG1CQUFlLHNDQUF1RCxDQUFDLFVBQVU7QUFDNUYsTUFBSSxDQUFDLE1BQU0sU0FBUztBQUNsQixXQUFPLEVBQUUsU0FBUyxPQUFVO0FBQUEsRUFDOUI7QUFFQSxTQUFPO0FBQUEsSUFDTCxZQUFZLENBQUMsTUFBTSxZQUFZLHNCQUFhLFdBQVcsTUFBTSxRQUFRLFNBQVMsS0FBSyxNQUFNLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFBQSxJQUV4RyxTQUFTO0FBQUEsRUFDWDtBQUNGLENBQUM7OztBRWpCRCxJQUFBQyw2QkFBMEI7OztBQ0RpRCxJQUFPLGlDQUFRO0FBQUEsRUFDeEYsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsMkJBQTJCO0FBQUEsRUFDM0IsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQ2xDOzs7QURyRU8sSUFBTSwyQkFBdUIsc0NBQStELENBQUMsVUFBVTtBQUM1RyxNQUFJLENBQUMsTUFBTSxpQkFBaUI7QUFDMUIsV0FBTyxFQUFFLGlCQUFpQixPQUFVO0FBQUEsRUFDdEM7QUFFQSxTQUFPO0FBQUEsSUFDTCxZQUFZO0FBQUEsTUFDVixNQUFNO0FBQUEsTUFDTiwrQkFBYSxvQkFBb0IsTUFBTSxnQkFBZ0IsU0FBUyxLQUFLLE1BQU0sZ0JBQWdCLElBQUksRUFBRTtBQUFBLElBQ25HO0FBQUEsSUFFQSxpQkFBaUI7QUFBQSxFQUNuQjtBQUNGLENBQUM7OztBRXBCRCxJQUFBQyw2QkFBMEI7OztBQ0QrQixJQUFPLHdCQUFRO0FBQUEsRUFDdEUsVUFBVTtBQUNaOzs7QURJTyxJQUFNLG1CQUFlLHNDQUF1RCxDQUFDLFdBQVc7QUFBQSxFQUM3RixZQUFZLENBQUMsTUFBTSxZQUFZLEVBQUUsQ0FBQyxzQkFBYSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQUEsRUFFekUsU0FBUztBQUNYLEVBQUU7OztBRVRGLElBQUFDLDZCQUEwQjs7O0FDRCtCLElBQU8sd0JBQVE7QUFBQSxFQUN0RSxxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixtQkFBbUI7QUFBQSxFQUNuQixrQkFBa0I7QUFBQSxFQUNsQixrQkFBa0I7QUFBQSxFQUNsQixrQkFBa0I7QUFBQSxFQUNsQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixtQkFBbUI7QUFBQSxFQUNuQixtQkFBbUI7QUFBQSxFQUNuQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixnQkFBZ0I7QUFBQSxFQUNoQixlQUFlO0FBQUEsRUFDZixlQUFlO0FBQUEsRUFDZixlQUFlO0FBQUEsRUFDZixjQUFjO0FBQUEsRUFDZCxhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixjQUFjO0FBQUEsRUFDZCxlQUFlO0FBQUEsRUFD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MUJ4RSxJQUFBQyxzQkFBOEI7QUFFOUIsSUFBQUMsaUJBQXVEO0FBR2hELElBQU0sb0JBQW9CLE1BQWdDO0FBQy9ELFFBQU0sdUJBQW1CLHdCQUFRLE1BQU0sb0JBQW1ELEdBQUcsQ0FBQyxDQUFDO0FBQy9GLFFBQU0sVUFBTSx1QkFBYSxJQUFJO0FBQzdCLFFBQU0sdUJBQW1CLG1DQUFjLGlDQUFpQyxnQkFBZ0I7QUFFeEYsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLFNBQVMsaUJBQWlCLFVBQVUsR0FBRztBQUFBLElBQ3ZDLG9CQUFvQjtBQUFBLEVBQ3RCO0FBQ0Y7IiwKICAibmFtZXMiOiBbImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgInRvQ29udGV4dE1hcCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9yZWFjdF9kb20iLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2ZwIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAic3R5bGVzIiwgImltcG9ydF9mcCIsICJsb2Rhc2hDYXBpdGFsaXplIiwgImltcG9ydF9mcCIsICJhbGlhc1RvTm9taW5hbCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9mZWF0dXJlX2NvcmUiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2ZwIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgIm1vZHVsZXMiLCAibW9kdWxlcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiYWxpYXNUb05vbWluYWwiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2ZwIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3Rlc3RfdXRpbHMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3Rlc3RfdXRpbHMiLCAic3R5bGVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgInN0eWxlcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0X2RvbSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgInN0b3BQcm9wYWdhdGlvbiIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpc1BvcG92ZXJDYXBhYmxlIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiXQp9Cg==