@k8slens/element-components 3.4.0 → 3.5.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
@@ -1647,9 +1647,9 @@ __export(test_util_runnable_injectable_exports, {
1647
1647
  });
1648
1648
  var import_test_utils = require("@k8slens/test-utils");
1649
1649
 
1650
- // import-glob:./**/*.global-override-for-injectable.(ts|tsx)/proof-of-uniqueness/e5ae570b-19de-4a82-9951-4c4d4c0a991f
1650
+ // import-glob:./**/*.global-override-for-injectable.(ts|tsx)/proof-of-uniqueness/0de2d99e-8738-41d0-b822-ae72003a5a60
1651
1651
  var modules = [];
1652
- var e5ae570b_19de_4a82_9951_4c4d4c0a991f_default = modules;
1652
+ var de2d99e_8738_41d0_b822_ae72003a5a60_default = modules;
1653
1653
 
1654
1654
  // 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
1655
  var make_sure_drag_and_drop_events_have_time_to_happen_default_override_exports = {};
@@ -1678,24 +1678,24 @@ var remove_css_module_clutter_default_override_default = () => {
1678
1678
  removeCssModuleClutterForUnitTesting();
1679
1679
  };
1680
1680
 
1681
- // import-glob:./**/*.default-override.(ts|tsx)/proof-of-uniqueness/f83fb947-6187-47c6-950b-e0223c5030b7
1681
+ // import-glob:./**/*.default-override.(ts|tsx)/proof-of-uniqueness/9778f4d0-ee1a-4649-9bad-bc5daad8a3a4
1682
1682
  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 f83fb947_6187_47c6_950b_e0223c5030b7_default = modules2;
1683
+ var f4d0_ee1a_4649_9bad_bc5daad8a3a4_default = modules2;
1684
1684
 
1685
1685
  // src/test-util-runnable.injectable.ts
1686
1686
  var testUtilRunnableInjectable = (0, import_test_utils.getTestUtilRunnableForOverrides)({
1687
- globalOverrides: e5ae570b_19de_4a82_9951_4c4d4c0a991f_default,
1688
- defaultOverrides: f83fb947_6187_47c6_950b_e0223c5030b7_default
1687
+ globalOverrides: de2d99e_8738_41d0_b822_ae72003a5a60_default,
1688
+ defaultOverrides: f4d0_ee1a_4649_9bad_bc5daad8a3a4_default
1689
1689
  });
1690
1690
 
1691
- // import-glob:./**/*.injectable.(ts|tsx)/proof-of-uniqueness/0927df8c-a04a-408d-beea-4458030c6ce3
1691
+ // import-glob:./**/*.injectable.(ts|tsx)/proof-of-uniqueness/fd0d3b6b-4f3e-4797-88a7-4d12c5e2e792
1692
1692
  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 df8c_a04a_408d_beea_4458030c6ce3_default = modules3;
1693
+ var fd0d3b6b_4f3e_4797_88a7_4d12c5e2e792_default = modules3;
1694
1694
 
1695
1695
  // src/feature.ts
1696
1696
  var elementComponentFeature = (0, import_feature_core.getFeature)({
1697
1697
  id: "element-component",
1698
- register: (di) => (0, import_feature_core2.registerInjectablesFromModules)(di, df8c_a04a_408d_beea_4458030c6ce3_default)
1698
+ register: (di) => (0, import_feature_core2.registerInjectablesFromModules)(di, fd0d3b6b_4f3e_4797_88a7_4d12c5e2e792_default)
1699
1699
  // No feature dependencies: a design system everyone may install cannot drag
1700
1700
  // Lens features into the closure. The clock the hoverable plugin needs is
1701
1701
  // local, and the platform is read directly.
@@ -3642,20 +3642,32 @@ var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children })
3642
3642
  };
3643
3643
  var displayContents = { display: "contents" };
3644
3644
  var stopPropagation2 = (event) => event.stopPropagation();
3645
- var dropDownMenuPlugin = (0, import_element_component50.getPlugin)((props) => {
3646
- const { $dropDownMenu } = props;
3647
- if ($dropDownMenu === void 0) {
3648
- return { $dropDownMenu: void 0 };
3649
- }
3650
- return {
3651
- $dropDownMenu: void 0,
3652
- ...$dropDownMenu.openOn === "hover" ? {} : { tabIndex: props.tabIndex ?? 0 },
3653
- $wrapper: {
3654
- Component: DropDownMenuWrapperComponent,
3655
- props: { dropDownMenu: $dropDownMenu }
3645
+ var dropDownMenuPlugin = (0, import_element_component50.getPlugin)(
3646
+ (props) => {
3647
+ const { $dropDownMenu, $cursor, role } = props;
3648
+ if ($dropDownMenu === void 0) {
3649
+ return { $dropDownMenu: void 0 };
3656
3650
  }
3657
- };
3658
- });
3651
+ const opensOnClick = ($dropDownMenu.openOn ?? "click") === "click";
3652
+ const cannotBeUsed = isDisabled(props);
3653
+ return {
3654
+ $dropDownMenu: void 0,
3655
+ ...$dropDownMenu.openOn === "hover" ? {} : { tabIndex: props.tabIndex ?? 0 },
3656
+ // An element that answers a click with a menu is a button, and the cursor is how it says so
3657
+ // -- or says that it cannot right now. Both would otherwise come from a click handler such an
3658
+ // element has no reason to have. Only a click: something right-clicked is not a button, and a
3659
+ // row that reveals a menu on hover is a row.
3660
+ ...opensOnClick && {
3661
+ role: role ?? "button",
3662
+ $cursor: $cursor ?? (cannotBeUsed ? "not-allowed" : "pointer")
3663
+ },
3664
+ $wrapper: {
3665
+ Component: DropDownMenuWrapperComponent,
3666
+ props: { dropDownMenu: $dropDownMenu }
3667
+ }
3668
+ };
3669
+ }
3670
+ );
3659
3671
 
3660
3672
  // src/plugins/anchor/anchor.tsx
3661
3673
  var import_element_component51 = require("@k8slens/element-component");
@@ -3683,6 +3695,7 @@ var AnchorWrapperComponent = ({
3683
3695
  const ownAnchorName = toAnchorName((0, import_react16.useId)());
3684
3696
  const inheritedAnchorName = (0, import_react16.useContext)(anchorNameContext);
3685
3697
  const elementRef = (0, import_react16.useRef)(null);
3698
+ const pointRef = (0, import_react16.useRef)(null);
3686
3699
  contributeRef(
3687
3700
  (0, import_react16.useCallback)((element) => {
3688
3701
  elementRef.current = element;
@@ -3721,6 +3734,18 @@ var AnchorWrapperComponent = ({
3721
3734
  }
3722
3735
  }
3723
3736
  });
3737
+ (0, import_react16.useEffect)(() => {
3738
+ const element = pointRef.current;
3739
+ if (!element || !isPopoverCapable2(element)) {
3740
+ return;
3741
+ }
3742
+ element.showPopover();
3743
+ return () => {
3744
+ if (element.isConnected) {
3745
+ element.hidePopover();
3746
+ }
3747
+ };
3748
+ }, []);
3724
3749
  (0, import_react16.useEffect)(() => {
3725
3750
  const element = elementRef.current;
3726
3751
  if (!position || !element || !isPopoverCapable2(element)) {
@@ -3737,6 +3762,9 @@ var AnchorWrapperComponent = ({
3737
3762
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3738
3763
  "div",
3739
3764
  {
3765
+ ref: pointRef,
3766
+ popover: "manual",
3767
+ "data-anchor-point-test": true,
3740
3768
  className: anchor_module_default.anchorPoint,
3741
3769
  style: {
3742
3770
  [anchorNameProperty]: ownAnchorName,
@@ -4030,4 +4058,4 @@ var useLocalHoverable = () => {
4030
4058
  useOnOutsideClick,
4031
4059
  usePopoverIsOpen
4032
4060
  });
4033
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQudHMiLCAiLi4vc3JjL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9ob3ZlcmFibGUvY29tcHV0ZWQtbm93LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9lbGVtZW50cy9taW5pbWFsLWRpdi50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm9yZGVyL2JvcmRlci50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlcy50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvbnQvZm9udC50cyIsICIuLi9zcmMvcGx1Z2lucy9mb250L2ZvbnQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvdy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy50cyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9yZWYvcmVmLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZ2V0LWRyYWdnYWJsZS1jb250ZXh0LnRzIiwgIi4uL3NyYy9mZWF0dXJlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3Rlc3QtdXRpbC1ydW5uYWJsZS5pbmplY3RhYmxlLnRzIiwgImltcG9ydC1nbG9iOi4vKiovKi5nbG9iYWwtb3ZlcnJpZGUtZm9yLWluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9lNWFlNTcwYi0xOWRlLTRhODItOTk1MS00YzRkNGMwYTk5MWYiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4vbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4uZGVmYXVsdC1vdmVycmlkZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzIiwgIi4uL3NyYy9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmRlZmF1bHQtb3ZlcnJpZGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9mODNmYjk0Ny02MTg3LTQ3YzYtOTUwYi1lMDIyM2M1MDMwYjciLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy8wOTI3ZGY4Yy1hMDRhLTQwOGQtYmVlYS00NDU4MDMwYzZjZTMiLCAiLi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplcy50cyIsICIuLi9zcmMvZWxlbWVudHMudHMiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC9mbGV4Lm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgvZmxleC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmlkL2dyaWQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3N0eWxlL3N0eWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodC50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJhZ2dhYmxlLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2Ryb3BwYWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90cmFuc2l0aW9uL3RyYW5zaXRpb24udHMiLCAiLi4vc3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXQudHMiLCAiLi4vc3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGlkZGVuL2hpZGRlbi50cyIsICIuLi9zcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL21hcmdpbi9tYXJnaW4udHMiLCAiLi4vc3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy92aXN1YWxseS1oaWRkZW4vdmlzdWFsbHktaGlkZGVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC1jaGlsZC9mbGV4LWNoaWxkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGludC90aW50LnRzIiwgIi4uL3NyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC50cyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZS50c3giLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvbi50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvaGFuZGxlLWZvY3VzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS9oYW5kbGUtYmx1ci50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZy50cyIsICIuLi9zcmMvcGx1Z2lucy9hcmVhL2FyZWEudHMiLCAiLi4vc3JjL3BsdWdpbnMvYXJlYS1jb250ZW50L2FyZWEtY29udGVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9zaXplL3NpemUudHMiLCAiLi4vc3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvY2xpY2thYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLnRzeCIsICIuLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci50c3giLCAiLi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Zsb2F0aW5nL2Zsb2F0aW5nLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7IEJsb2NrUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ibG9jay9ibG9ja1wiO1xuZXhwb3J0IHR5cGUgeyBBbmNob3JlZEF0LCBBbmNob3JQbHVnaW5Qcm9wcywgQW5jaG9yUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yXCI7XG5leHBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29uLW91dHNpZGUtY2xpY2svb24tb3V0c2lkZS1jbGlja1wiO1xuZXhwb3J0IHR5cGUgeyBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZHJvcC1kb3duLW1lbnUvZHJvcC1kb3duLW1lbnVcIjtcbmV4cG9ydCB0eXBlIHsgVGV4dEFsaWduUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ25cIjtcblxuZXhwb3J0IHsgdHlwZSBEb0ZvY3VzLCB0eXBlIERvRm9jdXNGb3IsIGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9pdGVtLWJlaW5nLWZvY3VzZWQuaW5qZWN0YWJsZVwiO1xuZXhwb3J0IHR5cGUgeyBJdGVtQmVpbmdGb2N1c2VkIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlXCI7XG5leHBvcnQgeyB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcywgaXNEaXNhYmxlZCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZFwiO1xuZXhwb3J0IHR5cGUgeyBHcmF5c2NhbGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGVcIjtcbmV4cG9ydCB0eXBlIHsgVGludFBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdGludC90aW50XCI7XG5leHBvcnQgdHlwZSB7IEZhZGVkUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuXG5leHBvcnQgdHlwZSB7IFNpZGVTdHlsZXMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzXCI7XG5leHBvcnQgdHlwZSB7IENvcm5lclN0eWxlcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEJhY2tncm91bmRDb2xvclBsdWdpblByb3BzLFxuICBCYWNrZ3JvdW5kQ29sb3IsXG4gIEJhY2tncm91bmRDb2xvckFsaWFzLFxuICAkQmFja2dyb3VuZENvbG9yUHJvcHMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIE91dGxpbmVXaWR0aCxcbiAgJE91dGxpbmVQcm9wcyxcbiAgT3V0bGluZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmVcIjtcblxuZXhwb3J0IHR5cGUge1xuICBGbG9hdGluZ0NvbnRlbnRBcmdzLFxuICBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5LFxuICAkRmxvYXRpbmdQcm9wcyxcbiAgRmxvYXRpbmdQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcblxuZXhwb3J0IHR5cGUgeyBQYWRkaW5nUGx1Z2luUHJvcHMsIERpcmVjdGlvbmFsUGFkZGluZyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuZXhwb3J0IHR5cGUgeyBNYXJnaW5QbHVnaW5Qcm9wcywgRGlyZWN0aW9uYWxNYXJnaW4gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luXCI7XG5leHBvcnQgdHlwZSB7IE92ZXJmbG93UGx1Z2luUHJvcHMsIE92ZXJmbG93IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuZXhwb3J0IHR5cGUgeyBCb3hTaGFkb3dQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcyxcbiAgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZS1ieS1kcmFnZ2luZ1wiO1xuZXhwb3J0IHsgaG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmdcIjtcblxuZXhwb3J0IHR5cGUge1xuICBIb3ZlcmFibGVDb250ZXh0LFxuICAkSG92ZXJhYmxlUHJvcHMsXG4gIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zLFxuICBIb3ZlcmFibGVQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaG92ZXJhYmxlUGx1Z2luLCBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgUmVmUGx1Z2luUHJvcHMsICRSZWZQcm9wLCBSZWZMaWtlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSB7IEFic29sdXRlUGx1Z2luUHJvcHMsIEFic29sdXRlUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuZXhwb3J0IHR5cGUgeyBIaWRkZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW5cIjtcbmV4cG9ydCB0eXBlIHsgTm9Qb2ludGVyRXZlbnRzUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuZXhwb3J0IHR5cGUgeyBPZmZzZXRQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXRcIjtcbmV4cG9ydCB0eXBlIHsgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW5cIjtcbmV4cG9ydCB0eXBlIHsgUmVsYXRpdmVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5leHBvcnQgdHlwZSB7IFRyYW5zaXRpb25QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuZXhwb3J0IHR5cGUgeyBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuXG5leHBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgQ3Vyc29yUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5leHBvcnQgdHlwZSB7IERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgVG9vbHRpcFBsdWdpblByb3BzLCAkVG9vbHRpcFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwXCI7XG5leHBvcnQgeyBTdHlsZWRUb29sdGlwQ29udGFpbmVyLCBnZXRUb29sdGlwUHJvcHMsIHN1cHByZXNzVG9vbHRpcCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcFwiO1xuXG5leHBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGdldERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHsgZWxlbWVudENvbXBvbmVudEZlYXR1cmUgfSBmcm9tIFwiLi9zcmMvZmVhdHVyZVwiO1xuXG5leHBvcnQgdHlwZSB7IFNpemVQbHVnaW5Qcm9wcywgJFNpemVQcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuXG5leHBvcnQgdHlwZSB7IFdpZHRoUGx1Z2luUHJvcHMsICRXaWR0aFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcblxuZXhwb3J0IHR5cGUgeyBTdHlsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvc3R5bGUvc3R5bGVcIjtcblxuZXhwb3J0IHR5cGUgeyBIZWlnaHRQbHVnaW5Qcm9wcywgJEhlaWdodFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSB7IEZvbnRQbHVnaW5Qcm9wcywgRm9udFNpemUsIEZvbnRMaW5lSGVpZ2h0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9udC9mb250XCI7XG5cbmV4cG9ydCB0eXBlIHsgR3JpZFBsdWdpblByb3BzLCBHcmlkUHJvcHMsIEdyaWRDb2x1bW5zIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgRHJhZ2dhYmxlUGx1Z2luUHJvcHMsXG4gIERyb3BwYWJsZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgeyBDb2xvclBsdWdpblByb3BzLCAkQ29sb3JQcm9wcywgVGV4dENvbG9yLCBUZXh0Q29sb3JBbGlhcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NvbG9yL2NvbG9yXCI7XG5leHBvcnQgdHlwZSB7IENsYXNzTmFtZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQm9yZGVyUGx1Z2luUHJvcHMsXG4gIEJvcmRlckNvbG9yQWxpYXMsXG4gIEJvcmRlckNvbG9yLFxuICAkQm9yZGVyUHJvcHMsXG4gICRCb3JkZXJDb2xvclByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQm9yZGVyUmFkaXVzU2l6ZSwgQm9yZGVyV2lkdGgsIEJvcmRlclNpZGUgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuZXhwb3J0IHsgdFNoaXJ0U2l6ZUluUGl4ZWxzLCBzaXplVW5pdEluUGl4ZWxzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdGlvbiwgU2hvcnREaXJlY3Rpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmV4cG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIENsaWNrSGFuZGxlcixcbiAgQ2xpY2tIYW5kbGVyRGV0YWlscyxcbiAgQ2xpY2tQbHVnaW5Qcm9wcyxcbiAgUG9zaXRpb24yZCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEZsZXhQbHVnaW5Qcm9wcyxcbiAgSG9yaXpvbnRhbEZsZXhQcm9wcyxcbiAgTWF4aW1hbEZsZXhQcm9wcyxcbiAgU2ltcGxlRmxleFByb3AsXG4gIFZlcnRpY2FsRmxleFByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mbGV4L2ZsZXhcIjtcblxuaW1wb3J0IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nLFxuICBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgeyByZW1vdmVDc3NNb2R1bGVDbHV0dGVyRm9yVW5pdFRlc3RpbmcsIHNob3dDc3NNb2R1bGVDbHV0dGVyRm9yUHJvZHVjdGlvbiB9O1xuXG5leHBvcnQge1xuICBDbGlja2FibGVEaXYsXG4gIE5hdixcbiAgU3ZnLFxuICBEaXYsXG4gIEJ1dHRvbixcbiAgSSxcbiAgSW5wdXQsXG4gIEZvcm0sXG4gIFNwYW4sXG4gIFRleHRBcmVhLFxuICBBLFxuICBDb2RlLFxuICBQcmUsXG4gIEgxLFxuICBIMixcbiAgSDMsXG4gIEg0LFxuICBINSxcbiAgSDYsXG4gIFAsXG4gIENsaWNrYWJsZUxpLFxuICBMaSxcbiAgT2wsXG4gIFVsLFxuICBUaCxcbiAgVGQsXG4gIFRyLFxuICBUYWJsZSxcbiAgTGFiZWwsXG4gIFRCb2R5LFxuICBEaWFsb2csXG4gIENhbnZhcyxcbiAgSW1nLFxufSBmcm9tIFwiLi9zcmMvZWxlbWVudHNcIjtcblxuZXhwb3J0IHR5cGUge1xuICBDb21tb25Qcm9wcyxcbiAgQ2xpY2thYmxlRGl2UHJvcHMsXG4gIENsaWNrYWJsZUxpUHJvcHMsXG4gIE5hdlByb3BzLFxuICBTdmdQcm9wcyxcbiAgRGl2UHJvcHMsXG4gIEJ1dHRvblByb3BzLFxuICBJUHJvcHMsXG4gIElucHV0UHJvcHMsXG4gIEZvcm1Qcm9wcyxcbiAgU3BhblByb3BzLFxuICBUZXh0QXJlYVByb3BzLFxuICBBUHJvcHMsXG4gIENvZGVQcm9wcyxcbiAgUHJlUHJvcHMsXG4gIEgxUHJvcHMsXG4gIEgyUHJvcHMsXG4gIEgzUHJvcHMsXG4gIEg0UHJvcHMsXG4gIEg1UHJvcHMsXG4gIEg2UHJvcHMsXG4gIFBQcm9wcyxcbiAgTGlQcm9wcyxcbiAgT2xQcm9wcyxcbiAgVWxQcm9wcyxcbiAgVGhQcm9wcyxcbiAgVGRQcm9wcyxcbiAgVHJQcm9wcyxcbiAgVGFibGVQcm9wcyxcbiAgTGFiZWxQcm9wcyxcbiAgVEJvZHlQcm9wcyxcbiAgRGlhbG9nUHJvcHMsXG4gIENhbnZhc1Byb3BzLFxuICBJbWdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCB7XG4gIGdldEZvY3VzYWJsZUNvbnRleHQsXG4gIGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHR5cGUge1xuICAkRm9jdXNhYmxlUHJvcHMsXG4gIEFueUZvY3VzYWJsZUNvbnRleHQsXG4gIEZvY3VzYWJsZUNvbnRleHQsXG4gIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHsgdXNlQ2xvc2VQb3BvdmVyLCB1c2VQb3BvdmVySXNPcGVuLCBjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9wb3BvdmVyL3BvcG92ZXJcIjtcbmV4cG9ydCB7IHVzZUxvY2FsSG92ZXJhYmxlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2xvY2FsLWhvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGVcIjtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgdHlwZSBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBwb2ludGVyLWRvd24gbGFuZHMgb3V0c2lkZSB0aGUgZWxlbWVudCdzIFJlYWN0IHRyZWUuIFRoZSB0cmVlIGluY2x1ZGVzIGNvbnRlbnRcbiAgICogdGhlIGVsZW1lbnQgcG9ydGFscyBlbHNld2hlcmUsIHNvIHBvcnRhbGVkIGNoaWxkcmVuIGNvdW50IGFzIGluc2lkZS4gQ2F2ZWF0OiBhbiBvdXRzaWRlXG4gICAqIHBvaW50ZXItZG93biB3aG9zZSBwcm9wYWdhdGlvbiB0byB0aGUgZG9jdW1lbnQgaXMgc3RvcHBlZCBuYXRpdmVseSBnb2VzIHVuZGV0ZWN0ZWQuXG4gICAqL1xuICByZWFkb25seSAkb25PdXRzaWRlQ2xpY2s/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+IHtcbiAgY29uc3QgeyAkaW52aXNpYmxlQmFja2Ryb3AsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGludmlzaWJsZUJhY2tkcm9wKSB7XG4gICAgcmV0dXJuIHsgJGludmlzaWJsZUJhY2tkcm9wOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGludmlzaWJsZUJhY2tkcm9wOiB1bmRlZmluZWQsXG4gICAgJGNsYXNzTmFtZTogWyRjbGFzc05hbWUsIHN0eWxlcy5pbnZpc2libGVCYWNrZHJvcF0sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEcm9wRG93bk1lbnUsIHR5cGUgRHJvcERvd25NZW51U3BlYyB9IGZyb20gXCJAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNcIjtcbmltcG9ydCB7IG9uVHJpZ2dlciB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb25SaWdodFRyaWdnZXJJbmplY3RhYmxlIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24yZCB9IGZyb20gXCIuLi9jbGlja2FibGUvY2xpY2thYmxlXCI7XG5pbXBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuLi9vbi1vdXRzaWRlLWNsaWNrL29uLW91dHNpZGUtY2xpY2tcIjtcblxuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51UGx1Z2luUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICByZWFkb25seSB0YWJJbmRleD86IG51bWJlcjtcblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBkcm9wLWRvd24gbWVudSB0byB0aGUgZWxlbWVudC4gQ3JlYXRlIHRoZSB2YWx1ZSB3aXRoIGBkcm9wRG93bk1lbnUoa2luZCwgb3B0aW9ucz8pYFxuICAgKiBmcm9tIGBAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNgOyB0aGUgaXRlbXMgY29tZSBmcm9tIHRoZSBjb250cmlidXRpb25zIHJlZ2lzdGVyZWQgZm9yXG4gICAqIHRoZSBraW5kLlxuICAgKlxuICAgKiBUaGUgbWVudSBwb3NpdGlvbnMgaXRzZWxmIGFnYWluc3QgdGhlIG5lYXJlc3QgYW5jaG9yIGFyb3VuZCBpdCwgc28gdGhlIGVsZW1lbnQgXHUyMDE0IG9yIHNvbWV0aGluZ1xuICAgKiBlbmNsb3NpbmcgaXQgXHUyMDE0IGRlY2xhcmVzIGAkYW5jaG9yYC5cbiAgICpcbiAgICogUmVxdWlyZXMgYGRyb3BEb3duTWVudUZlYXR1cmVgIG9mIGBAbGVuc2FwcC9kcm9wLWRvd24tbWVudWAgdG8gYmUgcmVnaXN0ZXJlZDogdGhlIG1lbnVcbiAgICogY29tcG9uZW50IGlzIHJlc29sdmVkIHRocm91Z2ggYW4gaW5qZWN0aW9uIHRva2VuIHRoaXMgcGFja2FnZSBkb2VzIG5vdCBpbXBsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSAkZHJvcERvd25NZW51PzogRHJvcERvd25NZW51U3BlYztcbn07XG5cbmNvbnN0IGhvdmVyQ2xvc2VEZWxheUluTWlsbGlzZWNvbmRzID0gMjAwO1xuXG50eXBlIERyb3BEb3duTWVudVdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgZHJvcERvd25NZW51OiBEcm9wRG93bk1lbnVTcGVjO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IERyb3BEb3duTWVudVdyYXBwZXJDb21wb25lbnQgPSAoeyBkcm9wRG93bk1lbnUsIGNvbnRyaWJ1dGVQcm9wcywgY2hpbGRyZW4gfTogRHJvcERvd25NZW51V3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSB1c2VTdGF0ZTxQb3NpdGlvbjJkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBjbG9zZVRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBvblJpZ2h0VHJpZ2dlciA9IHVzZVN5bmNJbmplY3Qob25SaWdodFRyaWdnZXJJbmplY3RhYmxlKTtcblxuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRJc09wZW4oKHdhc09wZW4pID0+ICF3YXNPcGVuKSwgW10pO1xuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldElzT3BlbihmYWxzZSksIFtdKTtcblxuICBjb25zdCBjYW5jZWxTY2hlZHVsZWRDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoY2xvc2VUaW1lclJlZi5jdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dChjbG9zZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9wZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBzZXRJc09wZW4odHJ1ZSk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIGNvbnN0IHNjaGVkdWxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGNsb3NlLCBob3ZlckNsb3NlRGVsYXlJbk1pbGxpc2Vjb25kcyk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZSwgY2xvc2VdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gY2FuY2VsU2NoZWR1bGVkQ2xvc2UsIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIGNvbnN0IG9wZW5PbiA9IGRyb3BEb3duTWVudS5vcGVuT24gPz8gXCJjbGlja1wiO1xuXG4gIC8vIE1hcmtzIHRoZSBlbGVtZW50IGFuZCwgYmVsb3csIHRoZSBtZW51IGl0IG9wZW5zIGFzIG9uZSB0aGluZyBmb3Igb3V0c2lkZS1jbGljayBwdXJwb3Nlcy5cbiAgY29uc3Qgb3V0c2lkZUNsaWNrTWFya2luZ1Byb3BzID0gdXNlT25PdXRzaWRlQ2xpY2soXG4gICAgdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgfVxuICAgIH0sIFtpc09wZW5dKSxcbiAgKTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIC4uLm91dHNpZGVDbGlja01hcmtpbmdQcm9wcyxcbiAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJtZW51XCIsXG5cbiAgICAuLi4ob3Blbk9uID09PSBcImNsaWNrXCIgJiYge1xuICAgICAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0b2dnbGUoKTtcbiAgICAgIH0sXG5cbiAgICAgIC8vIEEga2V5IHByZXNzIHRoZSBlbGVtZW50IGFuc3dlcnMgd2l0aCBhIG1lbnUgaXMgYW5zd2VyZWQgaGVyZSBhbmQgbm93aGVyZSBlbHNlLFxuICAgICAgLy8gZXhhY3RseSBhcyBpdHMgY2xpY2sgaXM6IHdoYXRldmVyIGVuY2xvc2VzIHRoZSBlbGVtZW50IChhIG1lbnUgcm93IHdpdGggYW5cbiAgICAgIC8vIGFjdGlvbiBvZiBpdHMgb3duLCBzYXkpIG11c3Qgbm90IHRha2UgdGhlIHNhbWUgcHJlc3MgZm9yIGJlaW5nIGFjdGl2YXRlZCB0b28uXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBvblRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJyaWdodC1jbGlja1wiICYmIHtcbiAgICAgIG9uQ29udGV4dE1lbnU6IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgLy8gQSBtZW51IG9wZW5lZCBieSByaWdodC1jbGlja2luZyBiZWxvbmdzIGF0IHRoZSBjdXJzb3IgcmF0aGVyIHRoYW4gYXQgdGhlIGVsZW1lbnQuXG4gICAgICAgIHNldEN1cnNvcih7IHg6IGV2ZW50LmNsaWVudFgsIHk6IGV2ZW50LmNsaWVudFkgfSk7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgfSxcblxuICAgICAgb25LZXlEb3duOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgb25SaWdodFRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJob3ZlclwiICYmIHtcbiAgICAgIG9uTW91c2VFbnRlcjogb3BlbixcbiAgICAgIG9uTW91c2VMZWF2ZTogc2NoZWR1bGVDbG9zZSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NoaWxkcmVufVxuXG4gICAgICB7aXNPcGVuICYmIChcbiAgICAgICAgLy8gTWFya2VkIGFzIGluc2lkZSBmb3IgdGhlIG91dHNpZGUtY2xpY2sgZGV0ZWN0aW9uIGFib3ZlOiB0aGUgbWVudSBpcyBhIHNpYmxpbmcgb2YgdGhlXG4gICAgICAgIC8vIGVsZW1lbnQgaW4gdGhlIERPTSwgYnV0IHBhcnQgb2YgdGhlIHNhbWUgdGhpbmcgYXMgZmFyIGFzIGEgdXNlciBpcyBjb25jZXJuZWQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEEgY2xpY2sgbGFuZGluZyBvbiB0aGUgbWVudSBpcyBhIGNsaWNrIG9uIHRoZSBtZW51IGFuZCBub3RoaW5nIGVsc2UsIHNvIGl0IHN0b3BzIGhlcmVcbiAgICAgICAgLy8gcmF0aGVyIHRoYW4gZ29pbmcgb24gdG8gd2hhdGV2ZXIgZW5jbG9zZXMgdGhlIGVsZW1lbnQgdGhlIG1lbnUgd2FzIG9wZW5lZCBmcm9tIFx1MjAxNCBhIHJvd1xuICAgICAgICAvLyBvZiBhIG1lbnUgb2YgaXRzIG93biwgc2F5LCB3aGljaCB3b3VsZCB0YWtlIGl0IGZvciB0aGUgcm93IGJlaW5nIGFjdGl2YXRlZC4gT25seVxuICAgICAgICAvLyBgY2xpY2tgIHN0b3BzOiB0aGUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb24gYWJvdmUgd29ya3Mgb24gYHBvaW50ZXJkb3duYC5cbiAgICAgICAgPHNwYW4gey4uLm91dHNpZGVDbGlja01hcmtpbmdQcm9wc30gc3R5bGU9e2Rpc3BsYXlDb250ZW50c30gb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufT5cbiAgICAgICAgICA8RHJvcERvd25NZW51XG4gICAgICAgICAgICBzcGVjPXtkcm9wRG93bk1lbnV9XG4gICAgICAgICAgICBhbmNob3JQb2ludD17b3Blbk9uID09PSBcInJpZ2h0LWNsaWNrXCIgPyBjdXJzb3IgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBvbkNsb3NlPXtjbG9zZX1cbiAgICAgICAgICAgIG9uTWVudUhvdmVyQ2hhbmdlPXtcbiAgICAgICAgICAgICAgb3Blbk9uID09PSBcImhvdmVyXCJcbiAgICAgICAgICAgICAgICA/IChtZW51SXNIb3ZlcmVkKSA9PiAobWVudUlzSG92ZXJlZCA/IGNhbmNlbFNjaGVkdWxlZENsb3NlKCkgOiBzY2hlZHVsZUNsb3NlKCkpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgZGlzcGxheUNvbnRlbnRzID0geyBkaXNwbGF5OiBcImNvbnRlbnRzXCIgfSBhcyBjb25zdDtcblxuY29uc3Qgc3RvcFByb3BhZ2F0aW9uID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuZXhwb3J0IGNvbnN0IGRyb3BEb3duTWVudVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wRG93bk1lbnVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGRyb3BEb3duTWVudSB9ID0gcHJvcHM7XG5cbiAgaWYgKCRkcm9wRG93bk1lbnUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7ICRkcm9wRG93bk1lbnU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkZHJvcERvd25NZW51OiB1bmRlZmluZWQsXG5cbiAgICAuLi4oJGRyb3BEb3duTWVudS5vcGVuT24gPT09IFwiaG92ZXJcIiA/IHt9IDogeyB0YWJJbmRleDogcHJvcHMudGFiSW5kZXggPz8gMCB9KSxcblxuICAgICR3cmFwcGVyOiB7XG4gICAgICBDb21wb25lbnQ6IERyb3BEb3duTWVudVdyYXBwZXJDb21wb25lbnQsXG4gICAgICBwcm9wczogeyBkcm9wRG93bk1lbnU6ICRkcm9wRG93bk1lbnUgfSxcbiAgICB9LFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcywgdHlwZSBDb250cmlidXRlUmVmIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjc3NOYW1lcyB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYW5jaG9yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uMmQgfSBmcm9tIFwiLi4vY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBUU2hpcnRTaXplLCB0U2hpcnRTaXplSW5QaXhlbHMgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IGNvbG9yUGx1Z2luIH0gZnJvbSBcIi4uL2NvbG9yL2NvbG9yXCI7XG5pbXBvcnQgdHlwZSB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuLi9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3JcIjtcbmltcG9ydCB0eXBlIHsgYm9yZGVyUGx1Z2luIH0gZnJvbSBcIi4uL2JvcmRlci9ib3JkZXJcIjtcbmltcG9ydCB0eXBlIHsgcGFkZGluZ1BsdWdpbiB9IGZyb20gXCIuLi9wYWRkaW5nL3BhZGRpbmdcIjtcbmltcG9ydCB0eXBlIHsgbWFyZ2luUGx1Z2luIH0gZnJvbSBcIi4uL21hcmdpbi9tYXJnaW5cIjtcbmltcG9ydCB0eXBlIHsgb3ZlcmZsb3dQbHVnaW4gfSBmcm9tIFwiLi4vb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuLyoqXG4gKiBXaGVyZSBhbiBlbGVtZW50IHNpdHMgcmVsYXRpdmUgdG8gaXRzIGFuY2hvcjogYSBzaWRlIG9mIHRoZSBhbmNob3IsIG9wdGlvbmFsbHkgcmVmaW5lZCB3aXRoIGhvd1xuICogdGhlIGVsZW1lbnQgZXh0ZW5kcyBhbG9uZyB0aGF0IHNpZGUuIEEgYmFyZSBzaWRlIGNlbnRlcnMgdGhlIGVsZW1lbnQgb24gaXQ7IGBzcGFuLTxkaXJlY3Rpb24+YFxuICogYWxpZ25zIHRoZWlyIGVkZ2VzIGFuZCBsZXRzIHRoZSBlbGVtZW50IGV4dGVuZCB0b3dhcmQgdGhhdCBkaXJlY3Rpb24uXG4gKlxuICogV2hlbiB0aGUgZWxlbWVudCB3b3VsZCBub3QgZml0IHRoZSB2aWV3cG9ydCwgaXQgZmFsbHMgYmFjayB0byB0aGUgbWlycm9yZWQgcG9zaXRpb25zLlxuICovXG5leHBvcnQgdHlwZSBBbmNob3JQb3NpdGlvbiA9XG4gIHwgXCJ0b3BcIlxuICB8IFwiYm90dG9tXCJcbiAgfCBcImxlZnRcIlxuICB8IFwicmlnaHRcIlxuICB8IFwidG9wIHNwYW4tbGVmdFwiXG4gIHwgXCJ0b3Agc3Bhbi1yaWdodFwiXG4gIHwgXCJib3R0b20gc3Bhbi1sZWZ0XCJcbiAgfCBcImJvdHRvbSBzcGFuLXJpZ2h0XCJcbiAgfCBcImxlZnQgc3Bhbi10b3BcIlxuICB8IFwibGVmdCBzcGFuLWJvdHRvbVwiXG4gIHwgXCJyaWdodCBzcGFuLXRvcFwiXG4gIHwgXCJyaWdodCBzcGFuLWJvdHRvbVwiO1xuXG4vKipcbiAqIEVpdGhlciBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBuZWFyZXN0IGFuY2VzdG9yIGAkYW5jaG9yYCwgb3IgdGhlIHNhbWUgcG9zaXRpb24gcmVsYXRpdmUgdG8gYVxuICogcG9pbnQgaW4gdGhlIHZpZXdwb3J0LlxuICovXG5leHBvcnQgdHlwZSBBbmNob3JlZEF0ID1cbiAgfCBBbmNob3JQb3NpdGlvblxuICB8IHtcbiAgICAgIHJlYWRvbmx5IHBvc2l0aW9uOiBBbmNob3JQb3NpdGlvbjtcblxuICAgICAgLyoqIEhvdyBmYXIgZnJvbSB0aGUgYW5jaG9yIHRoZSBlbGVtZW50IHNpdHMuIERlZmF1bHRzIHRvIGBcInhzXCJgLiAqL1xuICAgICAgcmVhZG9ubHkgZ2FwPzogVFNoaXJ0U2l6ZTtcblxuICAgICAgLyoqIFNpdCBhdCB0aGlzIHZpZXdwb3J0IHBvaW50IGluc3RlYWQgb2YgYXQgYW4gYW5jaG9yLiAqL1xuICAgICAgcmVhZG9ubHkgcG9pbnQ/OiBQb3NpdGlvbjJkO1xuICAgIH07XG5cbmNvbnN0IGRlZmF1bHRHYXA6IFRTaGlydFNpemUgPSBcInhzXCI7XG5cbmV4cG9ydCB0eXBlIEFuY2hvclBsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcblxuICAvKipcbiAgICogTWFrZXMgdGhlIGVsZW1lbnQgYW4gYW5jaG9yIGZvciB0aGUgZWxlbWVudHMgb2YgaXRzIHN1YnRyZWUgdGhhdCBkZWNsYXJlIHtAbGluayAkYW5jaG9yZWRBdH0uXG4gICAqIFRoZSBuZWFyZXN0IHN1Y2ggYW5jZXN0b3Igd2lucywgc28gbmVzdGluZyB3b3JrcyB3aXRob3V0IG5hbWluZyBhbnl0aGluZy5cbiAgICovXG4gIHJlYWRvbmx5ICRhbmNob3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbnMgdGhlIGVsZW1lbnQgcmVsYXRpdmUgdG8gYW4gYW5jaG9yLCBhYm92ZSBldmVyeXRoaW5nIGVsc2Ugb24gdGhlIHBhZ2UgXHUyMDE0IGl0IGVzY2FwZXNcbiAgICogY2xpcHBpbmcgYW5jZXN0b3JzIGFuZCBzdGFja2luZyBjb250ZXh0cywgc28gaXQgbmVlZHMgbm8gcG9ydGFsLlxuICAgKlxuICAgKiBUaGUgYW5jaG9yIGlzIHRoZSBuZWFyZXN0IGFuY2VzdG9yIGRlY2xhcmluZyB7QGxpbmsgJGFuY2hvcn0sIG9yIHRoZSBnaXZlbiBwb2ludCB3aGVuIGEgcG9pbnRcbiAgICogaXMgcHJvdmlkZWQgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5ICRhbmNob3JlZEF0PzogQW5jaG9yZWRBdDtcbn07XG5cbmNvbnN0IGFuY2hvck5hbWVDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbnR5cGUgQW5jaG9yV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBpc0FuY2hvcjogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYW5jaG9yZWRBdDogQW5jaG9yZWRBdCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBBbmNob3JXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgaXNBbmNob3IsXG4gIGFuY2hvcmVkQXQsXG4gIGNvbnRyaWJ1dGVSZWYsXG4gIGNvbnRyaWJ1dGVQcm9wcyxcbiAgY2hpbGRyZW4sXG59OiBBbmNob3JXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3Qgb3duQW5jaG9yTmFtZSA9IHRvQW5jaG9yTmFtZSh1c2VJZCgpKTtcbiAgY29uc3QgaW5oZXJpdGVkQW5jaG9yTmFtZSA9IHVzZUNvbnRleHQoYW5jaG9yTmFtZUNvbnRleHQpO1xuICBjb25zdCBlbGVtZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29udHJpYnV0ZVJlZihcbiAgICB1c2VDYWxsYmFjaygoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBlbGVtZW50O1xuICAgIH0sIFtdKSxcbiAgKTtcblxuICBjb25zdCBwb3NpdGlvbiA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcInN0cmluZ1wiID8gYW5jaG9yZWRBdCA6IGFuY2hvcmVkQXQ/LnBvc2l0aW9uO1xuICBjb25zdCBwb2ludCA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcIm9iamVjdFwiID8gYW5jaG9yZWRBdC5wb2ludCA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZ2FwID0gdHlwZW9mIGFuY2hvcmVkQXQgPT09IFwib2JqZWN0XCIgPyAoYW5jaG9yZWRBdC5nYXAgPz8gZGVmYXVsdEdhcCkgOiBkZWZhdWx0R2FwO1xuXG4gIGlmIChwb3NpdGlvbiAmJiAhcG9pbnQgJiYgIWluaGVyaXRlZEFuY2hvck5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVHJpZWQgdG8gcG9zaXRpb24gYW4gZWxlbWVudCBhdCBcIiR7cG9zaXRpb259XCIgd2l0aG91dCBhbiBhbmNob3IuIEVpdGhlciBnaXZlIGFuIGFuY2VzdG9yIHRoZSAkYW5jaG9yIHByb3AsIG9yIGFuY2hvciB0byBhIHBvaW50IGluc3RlYWQuYCxcbiAgICApO1xuICB9XG5cbiAgLy8gQSBwb2ludCBhbmNob3IgaXMgdGhlIGVsZW1lbnQncyBvd247IG90aGVyd2lzZSBpdCBwb3NpdGlvbnMgYWdhaW5zdCB3aGF0ZXZlciBhbmNob3IgZW5jbG9zZXMgaXQuXG4gIGNvbnN0IGFuY2hvck5hbWVUb1Bvc2l0aW9uQWdhaW5zdCA9IHBvaW50ID8gb3duQW5jaG9yTmFtZSA6IGluaGVyaXRlZEFuY2hvck5hbWU7XG5cbiAgaWYgKGFuY2hvcmVkQXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnRyaWJ1dGVQcm9wcyh7IHBvcG92ZXI6IFwibWFudWFsXCIgfSk7XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNBbmNob3IpIHtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYW5jaG9yTmFtZVByb3BlcnR5LCBvd25BbmNob3JOYW1lKTtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9zaXRpb25Qcm9wZXJ0eSwgcG9zaXRpb24pO1xuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShnYXBQcm9wZXJ0eSwgYCR7dFNoaXJ0U2l6ZUluUGl4ZWxzKGdhcCl9cHhgKTtcblxuICAgICAgLy8gT25seSB0b3dhcmQgdGhlIGFuY2hvciwgc28gdGhlIGVsZW1lbnQgc3RpbGwgbGluZXMgdXAgd2l0aCBpdCBvbiB0aGUgb3RoZXIgYXhpcy4gQVxuICAgICAgLy8gZmFsbGJhY2sgdGhhdCBtaXJyb3JzIHRoZSBwb3NpdGlvbiBtaXJyb3JzIHRoaXMgbWFyZ2luIHdpdGggaXQuXG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KG1hcmdpblByb3BlcnR5VG93YXJkc0FuY2hvcihwb3NpdGlvbiksIGAke3RTaGlydFNpemVJblBpeGVscyhnYXApfXB4YCk7XG5cbiAgICAgIGlmIChhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb3NpdGlvbkFuY2hvclByb3BlcnR5LCBhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QpO1xuICAgICAgfVxuXG4gICAgICBpZiAocG9pbnQpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb2ludFhQcm9wZXJ0eSwgYCR7cG9pbnQueH1weGApO1xuICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHBvaW50WVByb3BlcnR5LCBgJHtwb2ludC55fXB4YCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIXBvc2l0aW9uIHx8ICFlbGVtZW50IHx8ICFpc1BvcG92ZXJDYXBhYmxlKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGVsZW1lbnQuaGlkZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbcG9zaXRpb25dKTtcblxuICBjb25zdCBjb250ZW50ID0gcG9pbnQgPyAoXG4gICAgPD5cbiAgICAgIHsvKiBBIHplcm8tc2l6ZSBhbmNob3IgYXQgdGhlIHBvaW50LCBzbyBhIGN1cnNvci1hbmNob3JlZCBlbGVtZW50IHBvc2l0aW9ucyBsaWtlIGFueSBvdGhlci4gKi99XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFuY2hvclBvaW50fVxuICAgICAgICBzdHlsZT17XG4gICAgICAgICAge1xuICAgICAgICAgICAgW2FuY2hvck5hbWVQcm9wZXJ0eV06IG93bkFuY2hvck5hbWUsXG4gICAgICAgICAgICBbcG9pbnRYUHJvcGVydHldOiBgJHtwb2ludC54fXB4YCxcbiAgICAgICAgICAgIFtwb2ludFlQcm9wZXJ0eV06IGAke3BvaW50Lnl9cHhgLFxuICAgICAgICAgIH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllc1xuICAgICAgICB9XG4gICAgICAvPlxuXG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC8+XG4gICkgOiAoXG4gICAgY2hpbGRyZW5cbiAgKTtcblxuICBpZiAoaXNBbmNob3IpIHtcbiAgICByZXR1cm4gPGFuY2hvck5hbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtvd25BbmNob3JOYW1lfT57Y29udGVudH08L2FuY2hvck5hbWVDb250ZXh0LlByb3ZpZGVyPjtcbiAgfVxuXG4gIHJldHVybiA8Pntjb250ZW50fTwvPjtcbn07XG5cbmV4cG9ydCBjb25zdCBhbmNob3JQbHVnaW4gPSBnZXRQbHVnaW48XG4gIEFuY2hvclBsdWdpblByb3BzLFxuICBbXG4gICAgdHlwZW9mIGNsYXNzTmFtZVBsdWdpbixcbiAgICB0eXBlb2YgY29sb3JQbHVnaW4sXG4gICAgdHlwZW9mIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgICB0eXBlb2YgYm9yZGVyUGx1Z2luLFxuICAgIHR5cGVvZiBwYWRkaW5nUGx1Z2luLFxuICAgIHR5cGVvZiBtYXJnaW5QbHVnaW4sXG4gICAgdHlwZW9mIG92ZXJmbG93UGx1Z2luLFxuICBdXG4+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRhbmNob3IsICRhbmNob3JlZEF0LCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRhbmNob3IgJiYgJGFuY2hvcmVkQXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7ICRhbmNob3I6IHVuZGVmaW5lZCwgJGFuY2hvcmVkQXQ6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkYW5jaG9yOiB1bmRlZmluZWQsXG4gICAgJGFuY2hvcmVkQXQ6IHVuZGVmaW5lZCxcblxuICAgIC8vIFJpc2luZyB0byB0aGUgdG9wIGxheWVyIGlzIGEgdGVjaG5pY2FsaXR5IG9mIHBvc2l0aW9uaW5nLCBidXQgdGhlIGJyb3dzZXIgbWFrZXMgaXQgYSBsb29rOlxuICAgIC8vIGNvbG91cnMgb2YgaXRzIG93biwgYSBib3JkZXIsIHBhZGRpbmcsIGFuZCBhIG1hcmdpbiB0aGF0IHdvdWxkIGNlbnRlciB0aGUgZWxlbWVudC4gVW5kbyB0aGF0LFxuICAgIC8vIHNvIGFuIGVsZW1lbnQgcG9zaXRpb25lZCB0aGlzIHdheSBsb29rcyBsaWtlIGl0IGRvZXMgYW55d2hlcmUgZWxzZSwgYW5kIGxldCB3aGF0ZXZlciBpdCBzYXlzXG4gICAgLy8gYWJvdXQgaXRzZWxmIHdpbi5cbiAgICAuLi4oJGFuY2hvcmVkQXQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAkY29sb3I6IHByb3BzLiRjb2xvciA/PyBcImluaGVyaXRcIixcbiAgICAgICRiYWNrZ3JvdW5kQ29sb3I6IHByb3BzLiRiYWNrZ3JvdW5kQ29sb3IgPz8gXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgJGJvcmRlcjogeyB3aWR0aDogXCJ6ZXJvXCIsIC4uLnByb3BzLiRib3JkZXIgfSxcbiAgICAgICRwYWRkaW5nOiBwcm9wcy4kcGFkZGluZyA/PyBcInplcm9cIixcbiAgICAgICRtYXJnaW46IHByb3BzLiRtYXJnaW4gPz8gXCJ6ZXJvXCIsXG4gICAgICAkb3ZlcmZsb3c6IHByb3BzLiRvdmVyZmxvdyA/PyBcInZpc2libGVcIixcbiAgICB9KSxcblxuICAgICRjbGFzc05hbWU6IGNzc05hbWVzKCRjbGFzc05hbWUsIHtcbiAgICAgIFtzdHlsZXMuYW5jaG9yXTogISEkYW5jaG9yLFxuICAgICAgW3N0eWxlcy5hbmNob3JlZEF0XTogJGFuY2hvcmVkQXQgIT09IHVuZGVmaW5lZCxcbiAgICB9KSxcblxuICAgICR3cmFwcGVyOiB7XG4gICAgICBDb21wb25lbnQ6IEFuY2hvcldyYXBwZXJDb21wb25lbnQsXG4gICAgICBwcm9wczogeyBpc0FuY2hvcjogISEkYW5jaG9yLCBhbmNob3JlZEF0OiAkYW5jaG9yZWRBdCB9LFxuICAgIH0sXG4gIH07XG59KTtcblxuY29uc3QgbWFyZ2luUHJvcGVydHlUb3dhcmRzQW5jaG9yID0gKHBvc2l0aW9uOiBBbmNob3JQb3NpdGlvbikgPT4ge1xuICBpZiAocG9zaXRpb24uc3RhcnRzV2l0aChcImJvdHRvbVwiKSkge1xuICAgIHJldHVybiBcIm1hcmdpbi10b3BcIjtcbiAgfVxuXG4gIGlmIChwb3NpdGlvbi5zdGFydHNXaXRoKFwidG9wXCIpKSB7XG4gICAgcmV0dXJuIFwibWFyZ2luLWJvdHRvbVwiO1xuICB9XG5cbiAgcmV0dXJuIHBvc2l0aW9uLnN0YXJ0c1dpdGgoXCJyaWdodFwiKSA/IFwibWFyZ2luLWxlZnRcIiA6IFwibWFyZ2luLXJpZ2h0XCI7XG59O1xuXG5jb25zdCBhbmNob3JOYW1lUHJvcGVydHkgPSBcIi0tYW5jaG9yLW5hbWVcIjtcbmNvbnN0IGdhcFByb3BlcnR5ID0gXCItLWFuY2hvci1nYXBcIjtcbmNvbnN0IHBvc2l0aW9uQW5jaG9yUHJvcGVydHkgPSBcIi0tYW5jaG9yLXRhcmdldFwiO1xuY29uc3QgcG9zaXRpb25Qcm9wZXJ0eSA9IFwiLS1hbmNob3ItcG9zaXRpb25cIjtcbmNvbnN0IHBvaW50WFByb3BlcnR5ID0gXCItLWFuY2hvci1wb2ludC14XCI7XG5jb25zdCBwb2ludFlQcm9wZXJ0eSA9IFwiLS1hbmNob3ItcG9pbnQteVwiO1xuXG4vKiogQW5jaG9yIG5hbWVzIGFyZSBkYXNoZWQgaWRlbnRzLCBzbyB0aGUgZ2VuZXJhdGVkIGlkIGhhcyB0byBsb3NlIGV2ZXJ5dGhpbmcgZWxzZS4gKi9cbmNvbnN0IHRvQW5jaG9yTmFtZSA9IChpZDogc3RyaW5nKSA9PiBgLS1hbmNob3ItJHtpZC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgXCJcIil9YDtcblxudHlwZSBQb3BvdmVyQ2FwYWJsZSA9IEhUTUxFbGVtZW50ICYgeyBzaG93UG9wb3ZlcjogVm9pZEZ1bmN0aW9uOyBoaWRlUG9wb3ZlcjogVm9pZEZ1bmN0aW9uIH07XG5cbmNvbnN0IGlzUG9wb3ZlckNhcGFibGUgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBlbGVtZW50IGlzIFBvcG92ZXJDYXBhYmxlID0+XG4gIHR5cGVvZiAoZWxlbWVudCBhcyBQYXJ0aWFsPFBvcG92ZXJDYXBhYmxlPikuc2hvd1BvcG92ZXIgPT09IFwiZnVuY3Rpb25cIjtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYW5jaG9yXCI6IFwiYW5jaG9yLW1vZHVsZV9fYW5jaG9yX19fbS01dWJcIixcbiAgXCJhbmNob3JlZEF0XCI6IFwiYW5jaG9yLW1vZHVsZV9fYW5jaG9yZWRBdF9fX1VBclVLXCIsXG4gIFwiYW5jaG9yUG9pbnRcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JQb2ludF9fX3NBMUFjXCJcbn07IiwgImltcG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9mb2N1c2FibGVcIjtcblxuZXhwb3J0IHR5cGUgJEZvY3VzYWJsZVByb3BzPEZvY3VzZWRJdGVtPiA9IFJlcXVpcmVkPEZvY3VzYWJsZVBsdWdpblByb3BzPEZvY3VzZWRJdGVtPj5bXCIkZm9jdXNhYmxlXCJdO1xuXG4vKipcbiAqIElkZW50aWZpZXMgYSBzZXQgb2YgZm9jdXNhYmxlcyBjb21wZXRpbmcgZm9yIG9uZSBmb2N1c2VkIGl0ZW0uIEVsZW1lbnRzIGpvaW4gaXQgYnkgZGVjbGFyaW5nXG4gKiBgJGZvY3VzYWJsZWA7IG5vdGhpbmcgZW51bWVyYXRlcyB0aGVtIGF0IHRoZSBjYWxsIHNpdGUuXG4gKi9cbmV4cG9ydCB0eXBlIEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBpc0tleWJvYXJkTmF2aWdhYmxlOiBmYWxzZTtcbiAgZm9jdXNhYmxlOiAoaXRlbTogRm9jdXNlZEl0ZW0pID0+ICRGb2N1c2FibGVQcm9wczxGb2N1c2VkSXRlbT47XG59O1xuXG4vKipcbiAqIEEgZm9jdXNhYmxlIGNvbnRleHQgd2hvc2UgbWVtYmVycyBhcmUgYWxzbyBuYXZpZ2F0ZWQgd2l0aCBhcnJvdyBrZXlzLCBpbiB0aGUgb3JkZXIgdGhleSBzdGF0ZS5cbiAqIFRoZSBsb3dlc3Qgb3JkZXIgbnVtYmVyIGlzIGZvY3VzZWQgd2hlbiB0aGUgbWVtYmVycyBhcHBlYXIsIGFuZCBmb2N1cyByZXR1cm5zIHRvIHRoZSBlbmNsb3NpbmdcbiAqIGNvbnRleHQgd2hlbiB0aGV5IGdvIGF3YXkuXG4gKi9cbmV4cG9ydCB0eXBlIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzS2V5Ym9hcmROYXZpZ2FibGU6IHRydWU7XG4gIGZvY3VzYWJsZTogKGl0ZW06IEZvY3VzZWRJdGVtLCBvcmRlck51bWJlcjogbnVtYmVyKSA9PiAkRm9jdXNhYmxlUHJvcHM8Rm9jdXNlZEl0ZW0+O1xufTtcblxuZXhwb3J0IHR5cGUgQW55Rm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbSA9IGFueT4gPVxuICB8IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+XG4gIHwgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPjtcblxuY29uc3QgY29udGV4dHNCeUlkID0gbmV3IE1hcDxzdHJpbmcsIEFueUZvY3VzYWJsZUNvbnRleHQ+KCk7XG5cbi8qKlxuICogRGVjbGFyZXMgYSBmb2N1c2FibGUgY29udGV4dC4gVGhlIHNhbWUgaWQgYWx3YXlzIHlpZWxkcyB0aGUgc2FtZSBjb250ZXh0LCBzbyBjYWxsaW5nIHRoaXMgZHVyaW5nXG4gKiByZW5kZXIgaXMgc3RhYmxlIFx1MjAxNCB3aGljaCBpcyB3aGF0IGxldHMgYSBzdXJmYWNlIHdpdGggc2V2ZXJhbCBsaXZlIGluc3RhbmNlcyBuYW1lIG9uZSBjb250ZXh0IHBlclxuICogaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGb2N1c2FibGVDb250ZXh0ID0gPEZvY3VzZWRJdGVtLD4oaWQ6IHN0cmluZyk6IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0+XG4gIGdldE9yQ3JlYXRlQ29udGV4dChpZCwgKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICAgICAgaWQsXG4gICAgICBpc0tleWJvYXJkTmF2aWdhYmxlOiBmYWxzZSxcbiAgICAgIGZvY3VzYWJsZTogKGl0ZW0pID0+ICh7IGNvbnRleHQsIGl0ZW0gfSksXG4gICAgfTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9KTtcblxuLyoqXG4gKiBEZWNsYXJlcyBhIGZvY3VzYWJsZSBjb250ZXh0IHdob3NlIG1lbWJlcnMgYXJlIG5hdmlnYXRlZCB3aXRoIGFycm93IGtleXMuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQgPSA8Rm9jdXNlZEl0ZW0sPihcbiAgaWQ6IHN0cmluZyxcbik6IEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPT5cbiAgZ2V0T3JDcmVhdGVDb250ZXh0KGlkLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dDogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgICAgIGlkLFxuICAgICAgaXNLZXlib2FyZE5hdmlnYWJsZTogdHJ1ZSxcbiAgICAgIGZvY3VzYWJsZTogKGl0ZW0sIG9yZGVyTnVtYmVyKSA9PiAoeyBjb250ZXh0LCBpdGVtLCBvcmRlck51bWJlciB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH0pO1xuXG5jb25zdCBnZXRPckNyZWF0ZUNvbnRleHQgPSA8VCBleHRlbmRzIEFueUZvY3VzYWJsZUNvbnRleHQ+KGlkOiBzdHJpbmcsIGNyZWF0ZTogKCkgPT4gVCk6IFQgPT4ge1xuICBjb25zdCBleGlzdGluZyA9IGNvbnRleHRzQnlJZC5nZXQoaWQpO1xuXG4gIGlmIChleGlzdGluZykge1xuICAgIHJldHVybiBleGlzdGluZyBhcyBUO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlZCA9IGNyZWF0ZSgpO1xuXG4gIGNvbnRleHRzQnlJZC5zZXQoaWQsIGNyZWF0ZWQpO1xuXG4gIHJldHVybiBjcmVhdGVkO1xufTtcbiIsICJpbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IGdldEhvdmVyYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyB0eXBlIE11dGFibGVSZWZPYmplY3QsIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29udGV4dElzQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSB9IGZyb20gXCIuL19wcml2YXRlL2NvbnRleHQtaXMtYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VMb2NhbEhvdmVyYWJsZSA9IDxFbGVtIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KCkgPT4ge1xuICBjb25zdCBob3ZlcmFibGVDb250ZXh0ID0gdXNlTWVtbygoKSA9PiBnZXRIb3ZlcmFibGVDb250ZXh0PE11dGFibGVSZWZPYmplY3Q8RWxlbSB8IG51bGw+PigpLCBbXSk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxFbGVtPihudWxsKTtcbiAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IHVzZVN5bmNJbmplY3QoY29udGV4dElzQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSwgaG92ZXJhYmxlQ29udGV4dCk7XG5cbiAgcmV0dXJuIHtcbiAgICByZWYsXG4gICAgY29udGV4dDogaG92ZXJhYmxlQ29udGV4dC5ob3ZlcmFibGUocmVmKSxcbiAgICBjb21wb25lbnRJc0hvdmVyZWQ6IGl0ZW1CZWluZ0hvdmVyZWQsXG4gIH07XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsK0JBQWdEO0FBRWhELG1CQUErQztBQXdEdEM7QUFwQ0YsSUFBTSxvQkFBb0IsQ0FBQyxtQkFBa0Q7QUFDbEYsUUFBTSwrQkFBMkIscUJBQTBCLE1BQVM7QUFDcEUsUUFBTSxpQkFBYSxxQkFBTyxjQUFjO0FBRXhDLDhCQUFVLE1BQU07QUFDZCxlQUFXLFVBQVU7QUFBQSxFQUN2QixDQUFDO0FBRUQsOEJBQVUsTUFBTTtBQUNkLFVBQU0sNEJBQTRCLENBQUMsVUFBd0I7QUFDekQsVUFBSSxVQUFVLHlCQUF5QixTQUFTO0FBQzlDLG1CQUFXLFFBQVEsS0FBSztBQUFBLE1BQzFCO0FBQUEsSUFDRjtBQUVBLGFBQVMsaUJBQWlCLGVBQWUseUJBQXlCO0FBRWxFLFdBQU8sTUFBTSxTQUFTLG9CQUFvQixlQUFlLHlCQUF5QjtBQUFBLEVBQ3BGLEdBQUcsQ0FBQyxDQUFDO0FBRUwsUUFBTSwy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cUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QixpQkFB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RUFDckIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsd0JBQXdCO0FBQUEsRUFDeEIsK0JBQStCO0FBQUEsRUFDL0Isa0NBQWtDO0FBQUEsRUFDbEMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsZ0NBQWdDO0FBQUEsRUFDaEMsdUNBQXVDO0FBQUEsRUFDdkMsMENBQTBDO0FBQUEsRUFDMUMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsMkJBQTJCO0FBQUEsRUFDM0Isa0NBQWtDO0FBQUEsRUFDbEMscUNBQXFDO0FBQUEsRUFDckMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsK0JBQStCO0FBQUEsRUFDL0Isc0NBQXNDO0FBQUEsRUFDdEMseUNBQXlDO0FBQUEsRUFDekMsdUJBQXVCO0FBQUEsRUFDdkIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsdUJBQXVCO0FBQUEsRUFDdkIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsd0JBQXdCO0FBQUEsRUFDeEIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsaUNBQWlDO0FBQUEsRUFDakMsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsbUNBQW1DO0FBQUEsRUFDbkMsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsaUNBQWlDO0FBQUEsRUFDakMsa0NBQWtDO0FBQUEsRUFDbEMsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsNEJBQTRCO0FBQUEsRUFDNUIsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsbUNBQW1DO0FBQUEsRUFDbkMsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsbUNBQW1DO0FBQUEsRUFDbkMsb0NBQW9DO0FBQUEsRUFDcEMsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0IsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsb0NBQW9DO0FBQUEsRUFDcEMsZ0NBQWdDO0FBQUEsRUFDaEMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0Isc0NBQXNDO0FBQUEsRUFDdEMsZ0NBQWdDO0FBQUEsRUFDaEMsZ0NBQWdDO0FBQUEsRUFDaEMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsb0NBQW9DO0FBQUEsRUFDcEMscUNBQXFDO0FBQUEsRUFDckMsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsa0NBQWtDO0FBQUEsRUFDbEMsOEJBQThCO0FBQUEsRUFDOUIsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEs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M0Isd0JBQXdCO0FBQUEsRUFDeEIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsaUJBQWlCO0FBQUEsRUFDakIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsaUJBQWlCO0FBQUEsRUFDakIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsbUJBQW1CO0FBQUEsRUFD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b0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQ2xCOzs7QUM1REEsSUFBQUMsNkJBQTBCO0FBV25CLElBQU0sbUJBQWUsc0NBQXVELENBQUMsVUFBVTtBQUM1RixRQUFNLEVBQUUsUUFBUSxJQUFJO0FBQ3BCLFFBQU0sRUFBRSxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUUsUUFBUSxRQUFRLElBQUssV0FBVyxDQUFDO0FBRTlGLFNBQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxNQUNWLFNBQVMsc0JBQWEsV0FBVyxNQUFNLEVBQUUsSUFBSTtBQUFBLE1BQzdDLE1BQU0sc0JBQWEsZUFBZSxHQUFHLEVBQUUsSUFBSTtBQUFBLE1BQzNDLE1BQU0sc0JBQWEsZUFBZSxHQUFHLEVBQUUsSUFBSTtBQUFBLE1BQzNDLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxTQUFTO0FBQUEsRUFDWDtBQUNGLENBQUM7OztBQ3pCRCxJQUFBQyw2QkFBMEI7OztBQ0Q2QixJQUFPLHVCQUFRO0FBQUEsRUFDcEUsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsZ0JBQWdCO0FBQUEsRUFDaEIsc0JBQXNCO0FBQUEsRUFDdEIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0Isa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsd0JBQXdCO0FBQUEsRUFDeEIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0Isa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsbUJBQW1CO0FBQUEsRUFDbkIseUJBQXlCO0FBQUEsRUFDekIsNEJBQTRCO0FBQUEsRUFDNUIsc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0Isc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0IsdUJBQXVCO0FBQUEsRUFDdkIsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsZUFBZTtBQUFBLEVBQ2YscUJBQXFCO0FBQUEsRUFDckIsd0JBQXdCO0FBQUEsRUFDeEIsZUFBZTtBQUFBLEVBQ2YscUJBQXFCO0FBQUEsRUFDckIsd0JBQXdCO0FBQzFC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LHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG1CQUFtQjtBQUFBLEVBQ25CLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUN6Qjs7O0FEckVPLElBQU0sbUJBQWUsc0NBQXVELENBQUMsVUFBVTtBQUM1RixNQUFJLENBQUMsTUFBTSxTQUFTO0FBQ2xCLFdBQU8sRUFBRSxTQUFTLE9BQVU7QUFBQSxFQUM5QjtBQUVBLFNBQU87QUFBQSxJQUNMLFlBQVksQ0FBQyxNQUFNLFlBQVksc0JBQWEsV0FBVyxNQUFNLFFBQVEsU0FBUyxLQUFLLE1BQU0sUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUFBLElBRXhHLFNBQVM7QUFBQSxFQUNYO0FBQ0YsQ0FBQzs7O0FFakJELElBQUFDLDZCQUEwQjs7O0FDRGlELElBQU8saUNBQVE7QUFBQSxFQUN4Riw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw0QkFBNEI7QUFBQSxFQUM1QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFDbEM7OztBRHJFTyxJQUFNLDJCQUF1QixzQ0FBK0QsQ0FBQyxVQUFVO0FBQzVHLE1BQUksQ0FBQyxNQUFNLGlCQUFpQjtBQUMxQixXQUFPLEVBQUUsaUJBQWlCLE9BQVU7QUFBQSxFQUN0QztBQUVBLFNBQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUNOLCtCQUFhLG9CQUFvQixNQUFNLGdCQUFnQixTQUFTLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxFQUFFO0FBQUEsSUFDbkc7QUFBQSxJQUVBLGlCQUFpQjtBQUFBLEVBQ25CO0FBQ0YsQ0FBQzs7O0FFcEJELElBQUFDLDZCQUEwQjs7O0FDRCtCLElBQU8sd0JBQVE7QUFBQSxFQUN0RSxVQUFVO0FBQ1o7OztBRElPLElBQU0sbUJBQWUsc0NBQXVELENBQUMsV0FBVztBQUFBLEVBQzdGLFlBQVksQ0FBQyxNQUFNLFlBQVksRUFBRSxDQUFDLHNCQUFhLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUM7QUFBQSxFQUV6RSxTQUFTO0FBQ1gsRUFBRTs7O0FFVEYsSUFBQUMsNkJBQTBCOzs7QUNEK0IsSUFBTyx3QkFBUTtBQUFBLEVBQ3RFLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFv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QUEsRUFDVDtBQUVBLFFBQU0sVUFBVSxPQUFPO0FBRXZCLGVBQWEsSUFBSSxJQUFJLE9BQU87QUFFNUIsU0FBTztBQUNUOzs7QUMzRUEsSUFBQUMsc0JBQThCO0FBRTlCLElBQUFDLGlCQUF1RDtBQUdoRCxJQUFNLG9CQUFvQixNQUFnQztBQUMvRCxRQUFNLHVCQUFtQix3QkFBUSxNQUFNLG9CQUFtRCxHQUFHLENBQUMsQ0FBQztBQUMvRixRQUFNLFVBQU0sdUJBQWEsSUFBSTtBQUM3QixRQUFNLHVCQUFtQixtQ0FBYyxpQ0FBaUMsZ0JBQWdCO0FBRXhGLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxTQUFTLGlCQUFpQixVQUFVLEdBQUc7QUFBQSxJQUN2QyxvQkFBb0I7QUFBQSxFQUN0QjtBQUNGOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJ0b0NvbnRleHRNYXAiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgInN0eWxlcyIsICJpbXBvcnRfZnAiLCAibG9kYXNoQ2FwaXRhbGl6ZSIsICJpbXBvcnRfZnAiLCAiYWxpYXNUb05vbWluYWwiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZmVhdHVyZV9jb3JlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9mcCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJtb2R1bGVzIiwgIm1vZHVsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImFsaWFzVG9Ob21pbmFsIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfbW9ieF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgInN0eWxlcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdGVzdF91dGlscyIsICJzdHlsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdF9kb20iLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0X2RvbSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJzdG9wUHJvcGFnYXRpb24iLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaXNQb3BvdmVyQ2FwYWJsZSIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiXQp9Cg==
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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QUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHlCQUF5QjtBQUFBLEVBQ3pCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHlCQUF5QjtBQUFBLEVBQ3pCLHlCQUF5QjtBQUFBLEVBQ3pCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLGlCQUFpQjtBQUFBLEVBQ2pCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGVBQWU7QUFBQSxFQUNmLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGNBQWM7QUFBQSxFQUNkLGVBQWU7QUFBQSxFQUNmLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGlCQUFpQjtBQUFBLEVBQ2pCLGlCQUFpQjtBQUNuQjs7O0FEN0ZBLElBQUFDLGFBQXlCO0FBY2xCLElBQU0sb0JBQWdCLHFDQUF3RCxDQUFDLFVBQVU7QUFDOUYsTUFBSSxDQUFDLE1BQU0sVUFBVTtBQUNuQixXQUFPLEVBQUUsVUFBVSxPQUFVO0FBQUEsRUFDL0I7QUFFQSxRQUFNLFVBQVUsTUFBTSxhQUFhLE9BQU8sT0FBTyxNQUFNO0FBRXZELFVBQUkscUJBQVMsT0FBTyxHQUFHO0FBQ3JCLFdBQU87QUFBQSxNQUNMLFlBQVksQ0FBQyxNQUFNLFlBQVksdUJBQWMsWUFBWSxPQUFPLEVBQUUsQ0FBQztBQUFBLE1BQ25FLFVBQVU7QUFBQSxJQUNaO0FBQUEsRUFDRjtBQUVBLFFBQU0sVUFBVSxRQUFRLE9BQU8sUUFBUTtBQUN2QyxRQUFNLGFBQWEsUUFBUSxVQUFVLFFBQVE7QUFDN0MsUUFBTSxZQUFZLFFBQVEsU0FBUyxRQUFRO0FBQzNDLFFBQU0sV0FBVyxRQUFRLFFBQVEsUUFBUTtBQUV6QyxTQUFPO0FBQUEsSUFDTCxZQUFZO0FBQUEsTUFDVixNQUFNO0FBQUEsTUFFTjtBQUFBLFFBQ0UsQ0FBQyx1QkFBYyxpQkFBaUIsT0FBTyxFQUFFLENBQUMsR0FBRztBQUFBLFFBQzdDLENBQUMsdUJBQWMsbUJBQW1CLFNBQVMsRUFBRSxDQUFDLEdBQUc7QUFBQSxRQUNqRCxDQUFDLHVCQUFjLG9CQUFvQixVQUFVLEVBQUUsQ0FBQyxHQUFHO0FBQUEsUUFDbkQsQ0FBQyx1QkFBYyxrQkFBa0IsUUFBUSxFQUFFLENBQUMsR0FBRztBQUFBLE1BQ2pEO0FBQUEsSUFDRjtBQUFBLElBRUEsVUFBVTtBQUFBLEVBQ1o7QUFDRixDQUFDOzs7QUVqREQsSUFBQUMsNEJBQTBCOzs7QUNEbUQsSUFBTyxrQ0FBUTtBQUFBLEVBQzFGLDRCQUE0QjtBQUFBLEVBQzVCLDBCQUEwQjtBQUFBLEVBQzFCLGdDQUFnQztBQUFBLEVBQ2hDLDRCQUE0QjtBQUFBLEVBQzVCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLDJCQUEyQjtBQUFBLEVBQzNCLGtDQUFrQztBQUFBLEVBQ2xDLDRCQUE0QjtBQUFBLEVBQzVCLDRCQUE0QjtBQUFBLEVBQzVCLDJCQUEyQjtBQUFBLEVBQzNCLDRCQUE0QjtBQUFBLEVBQzVCLDZCQUE2QjtBQUFBLEVBQzdCLGdDQUFnQztBQUFBLEVBQ2hDLGdDQUFnQztBQUFBLEVBQ2hDLGlDQUFpQztBQUFBLEVBQ2pDLHlCQUF5QjtBQUFBLEVBQ3pCLHlCQUF5QjtBQUFBLEVBQ3pCLGtDQUFrQztBQUFBLEVBQ2xDLGdDQUFnQztBQUFBLEVBQ2hDLHNDQUFzQztBQUFBLEVBQ3RDLGtDQUFrQztBQUFBLEVBQ2xDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLGlDQUFpQztBQUFBLEVBQ2pDLHdDQUF3QztBQUFBLEVBQ3hDLGtDQUFrQztBQUFBLEVBQ2xDLGtDQUFrQztBQUFBLEVBQ2xDLGlDQUFpQztBQUFBLEVBQ2pDLGtDQUFrQztBQUFBLEVBQ2xDLG1DQUFtQztBQUFBLEVBQ25DLHNDQUFzQztBQUFBLEVBQ3RDLHNDQUFzQztBQUFBLEVBQ3RDLHVDQUF1QztBQUFBLEVBQ3ZDLCtCQUErQjtBQUFBLEVBQy9CLCtCQUErQjtBQUNqQzs7O0FEaENBLElBQU0saUJBQWlCO0FBQUEsRUFDckIsbUJBQW1CO0FBQUEsRUFDbkIscUJBQXFCO0FBQUEsRUFDckIseUJBQXlCO0FBQzNCO0FBRUEsSUFBTSx5QkFBeUIsQ0FBQyxVQUEwRCxTQUFTO0FBRTVGLElBQU0sNEJBQXdCLHFDQUFnRSxDQUFDLFVBQVU7QUFDOUcsUUFBTSxFQUFFLGtCQUFrQixNQUFNLElBQUk7QUFDcEMsUUFBTSxFQUFFLFFBQVEsTUFBTSxJQUFJLE9BQU8sVUFBVSxXQUFXLEVBQUUsUUFBUSxNQUFNLElBQUssU0FBUyxDQUFDO0FBRXJGLFFBQU0sY0FBYyxTQUFVLHVCQUF1QixNQUFNLElBQUksZUFBZSxNQUFNLElBQUksU0FBVTtBQUNsRyxRQUFNLGFBQWEsUUFBUyx1QkFBdUIsS0FBSyxJQUFJLGVBQWUsS0FBSyxJQUFJLFFBQVM7QUFFN0YsU0FBTztBQUFBLElBQ0wsWUFBWTtBQUFBLE1BQ1YsTUFBTTtBQUFBLE1BQ04sY0FBYyxnQ0FBc0Isb0JBQW9CLFdBQVcsRUFBRSxJQUFJO0FBQUEsTUFDekUsYUFBYSxnQ0FBc0IsMEJBQTBCLFVBQVUsRUFBRSxJQUFJO0FBQUEsSUFDL0U7QUFBQSxJQUNBLGtCQUFrQjtBQUFBLEVBQ3BCO0FBQ0YsQ0FBQzs7O0FFckNELElBQUFDLDRCQUEwQjs7O0FDRCtCLElBQU8sd0JBQVE7QUFBQSxFQUN0RSx3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QiwwQkFBMEI7QUFBQSxFQUMxQixpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyx3QkFBd0I7QUFBQSxFQUN4QiwrQkFBK0I7QUFBQSxFQUMvQixrQ0FBa0M7QUFBQSxFQUNsQyw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQyx3Q0FBd0M7QUFBQSxFQUN4QywwQkFBMEI7QUFBQSxFQUMxQixpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyxnQ0FBZ0M7QUFBQSxFQUNoQyx1Q0FBdUM7QUFBQSxFQUN2QywwQ0FBMEM7QUFBQSxFQUMxQywwQkFBMEI7QUFBQSxFQUMxQixpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQywwQkFBMEI7QUFBQSxFQUMxQixpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyx5QkFBeUI7QUFBQSxFQUN6QixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQywwQkFBMEI7QUFBQSxFQUMxQixpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQywyQkFBMkI7QUFBQSxFQUMzQixrQ0FBa0M7QUFBQSxFQUNsQyxxQ0FBcUM7QUFBQSxFQUNyQyw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQyx3Q0FBd0M7QUFBQSxFQUN4Qyw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQyx3Q0FBd0M7QUFBQSxFQUN4QywrQkFBK0I7QUFBQSxFQUMvQixzQ0FBc0M7QUFBQSxFQUN0Qyx5Q0FBeUM7QUFBQSxFQUN6Qyx1QkFBdUI7QUFBQSxFQUN2Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyx1QkFBdUI7QUFBQSxFQUN2Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQixpQ0FBaUM7QUFBQSxFQUNqQyw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QixtQ0FBbUM7QUFBQSxFQUNuQyw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyxpQ0FBaUM7QUFBQSxFQUNqQyxrQ0FBa0M7QUFBQSxFQUNsQywwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6QiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixtQ0FBbUM7QUFBQSxFQUNuQywrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5QixxQ0FBcUM7QUFBQSxFQUNyQywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyxtQ0FBbUM7QUFBQSxFQUNuQyxtQ0FBbUM7QUFBQSxFQUNuQyxvQ0FBb0M7QUFBQSxFQUNwQyw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1Qiw0QkFBNEI7QUFBQSxFQUM1QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QixvQ0FBb0M7QUFBQSxFQUNwQyxnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQiwrQkFBK0I7QUFBQSxFQUMvQixzQ0FBc0M7QUFBQSxFQUN0QyxnQ0FBZ0M7QUFBQSxFQUNoQyxnQ0FBZ0M7QUFBQSxFQUNoQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyxpQ0FBaUM7QUFBQSxFQUNqQyxvQ0FBb0M7QUFBQSxFQUNwQyxvQ0FBb0M7QUFBQSxFQUNwQyxxQ0FBcUM7QUFBQSxFQUNyQyw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6QiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1QixrQ0FBa0M7QUFBQSxFQUNsQyw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3QixvQ0FBb0M7QUFBQSxFQUNwQyw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQixrQ0FBa0M7QUFBQSxFQUNsQyxrQ0FBa0M7QUFBQSxFQUNsQyxtQ0FBbUM7QUFBQSxFQUNuQywyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5QiwyQkFBMkI7QUFBQSxFQUMzQiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1QiwyQkFBMkI7QUFBQSxFQUMzQiw0QkFBNEI7QUFBQSxFQUM1Qiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQyw4QkFBOEI7QUFBQSxFQUM5Qiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQixpQ0FBaUM7QUFBQSxFQUNqQyxnQ0FBZ0M7QUFBQSxFQUNoQyw2QkFBNkI7QUFBQSxFQUM3Qiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QixnQ0FBZ0M7QUFBQSxFQUNoQyw2QkFBNkI7QUFBQSxFQUM3QiwwQkFBMEI7QUFBQSxFQUMxQiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiwwQkFBMEI7QUFBQSxFQUMxQiwyQkFBMkI7QUFBQSxFQUMzQiw2QkFBNkI7QUFBQSxFQUM3Qix1QkFBdUI7QUFDekI7OztBQ25QTyxJQUFNLGtCQUFrQixDQUFDQyxZQUF5QjtBQUN2RCxRQUFNLEVBQUUsUUFBUSxnQkFBZ0IsbUJBQW1CLGtCQUFrQixjQUFjLElBQUlBO0FBRXZGLE1BQUksUUFBUTtBQUNWLFVBQU0sbUJBQW1CLFdBQVcsT0FBTyxNQUFNO0FBRWpELFdBQU8sbUJBQW1CLHNCQUFhLG1CQUFtQixnQkFBZ0IsRUFBRSxJQUFJO0FBQUEsRUFDbEY7QUFFQSxTQUFPO0FBQUEsSUFDTCxpQkFBaUIsc0JBQWEseUJBQXlCLGNBQWMsRUFBRSxJQUFJO0FBQUEsSUFDM0Usb0JBQW9CLHNCQUFhLDRCQUE0QixpQkFBaUIsRUFBRSxJQUFJO0FBQUEsSUFDcEYsbUJBQW1CLHNCQUFhLDJCQUEyQixnQkFBZ0IsRUFBRSxJQUFJO0FBQUEsSUFDakYsZ0JBQWdCLHNCQUFhLHdCQUF3QixhQUFhLEVBQUUsSUFBSTtBQUFBLEVBQzFFO0FBQ0Y7OztBQ3ZCQSxJQUFBQyxhQUErQztBQVN4QyxJQUFNLGdCQUFnQixDQUFDLFVBQXNCO0FBQUEsRUFDbEQsR0FBRyxzQkFBc0IsT0FBTyxLQUFLO0FBQUEsRUFDckMsR0FBRyxzQkFBc0IsU0FBUyxLQUFLO0FBQUEsRUFDdkMsR0FBRyxzQkFBc0IsVUFBVSxLQUFLO0FBQUEsRUFDeEMsR0FBRyxzQkFBc0IsUUFBUSxLQUFLO0FBQ3hDO0FBRUEsSUFBTSx3QkFBd0IsQ0FBQyxNQUF3QixVQUFzQjtBQUMzRSxRQUFNLEVBQUUsT0FBTyxNQUFNLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQztBQUN6QyxRQUFNLFdBQVcsV0FBVyxJQUFJO0FBRWhDLFNBQU87QUFBQSxJQUNMLFFBQVEsc0JBQWEsU0FBUyxRQUFRLFlBQVksS0FBSyxFQUFFLElBQUk7QUFBQSxJQUM3RCxRQUFRLHNCQUFhLFNBQVMsUUFBUSxZQUFZLEtBQUssRUFBRSxJQUFJO0FBQUEsRUFDL0Q7QUFDRjtBQUVBLElBQU0sYUFBYSxDQUFtQixlQUFjLFdBQUFDLFlBQWlCLE1BQU07OztBSHRCM0UsSUFBQUMsYUFBd0I7QUFLeEIsSUFBTUMsa0JBQWlCLEVBQUUsZUFBZSxTQUFTO0FBRWpELElBQU0scUJBQXFCLENBQUMsVUFBa0QsU0FBU0E7QUFxQmhGLElBQU0sbUJBQWUscUNBQXVELENBQUMsVUFBVTtBQUM1RixNQUFJLENBQUMsTUFBTSxTQUFTO0FBQ2xCLFdBQU8sRUFBRSxTQUFTLE9BQVU7QUFBQSxFQUM5QjtBQUVBLFNBQU87QUFBQSxJQUNMLFlBQVksQ0FBQyxNQUFNLFlBQVksZ0JBQWdCLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixNQUFNLE9BQU8sQ0FBQztBQUFBLElBQzdGLFNBQVM7QUFBQSxFQUNYO0FBQ0YsQ0FBQztBQUVELElBQU0sa0JBQWtCLENBQUMsRUFBRSxPQUFPLE1BQU0sT0FBTyxRQUFRLEtBQUssT0FBTyxXQUFXLE1BQW9CO0FBQ2hHLFFBQU0sY0FBYyxVQUFVLFFBQVMsVUFBVSxVQUFhLFFBQVMsUUFBUTtBQUMvRSxRQUFNLEVBQUUsUUFBUSxPQUFPLFNBQVMsSUFDOUIsZUFBZSxVQUFVLFNBQ3JCLEVBQUUsUUFBUSxnQkFBeUIsSUFDbkMsT0FBTyxVQUFVLFdBQ2YsRUFBRSxRQUFRLE1BQU0sSUFDZixTQUFTLENBQUM7QUFFbkIsUUFBTSxjQUFjLFVBQVUsbUJBQW1CLE1BQU0sSUFBSUEsZ0JBQWUsTUFBTSxJQUFJO0FBQ3BGLFFBQU0sYUFBYSxTQUFTLG1CQUFtQixLQUFLLElBQUlBLGdCQUFlLEtBQUssSUFBSTtBQUNoRixRQUFNLGdCQUFnQixZQUFZLG1CQUFtQixRQUFRLElBQUlBLGdCQUFlLFFBQVEsSUFBSTtBQUU1RixRQUFNLG1CQUFlLG9CQUFRO0FBQUEsSUFDM0IsY0FBYyxzQkFBYSxrQkFBa0IsV0FBVyxFQUFFLElBQUk7QUFBQSxJQUM5RCxjQUFjLHNCQUFhLGtCQUFrQixXQUFXLEVBQUUsSUFBSTtBQUFBLElBQzlELGFBQWEsc0JBQWEsa0JBQWtCLFVBQVUsU0FBUyxJQUFJO0FBQUEsSUFDbkUsZ0JBQWdCLHNCQUFhLGtCQUFrQixhQUFhLFlBQVksSUFBSTtBQUFBLElBQzVFLEdBQUcsY0FBYyxFQUFFLE1BQU0sT0FBTyxRQUFRLElBQUksQ0FBQztBQUFBLElBQzdDLGFBQWEsc0JBQWEscUJBQXFCLElBQUk7QUFBQSxFQUNyRCxDQUFDO0FBRUQsU0FBTyxDQUFDLGNBQWMsYUFBYSxTQUFTLEtBQUssc0JBQWEsc0JBQXNCLENBQUM7QUFDdkY7OztBSXBFQSxJQUFBQyw0QkFBMEI7OztBQ0QyQixJQUFPLHNCQUFRO0FBQUEsRUFDbEUsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsMkJBQTJCO0FBQUEsRUFDM0IsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsY0FBYztBQUFBLEVBQ2Qsb0JBQW9CO0FBQUEsRUFDcEIsaUJBQWlCO0FBQUEsRUFDakIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsZ0JBQWdCO0FBQUEsRUFDaEIsbUJBQW1CO0FBQUEsRUFDbkIsaUNBQWlDO0FBQUEsRUFDakMsNkJBQTZCO0FBQy9COzs7QURHTyxJQUFNLGlCQUFhLHFDQUFxRCxDQUFDLFVBQVU7QUFDeEYsTUFBSSxDQUFDLE1BQU0sT0FBTztBQUNoQixXQUFPLEVBQUUsT0FBTyxPQUFVO0FBQUEsRUFDNUI7QUFFQSxRQUFNO0FBQUEsSUFDSixPQUFPO0FBQUEsSUFDUCxPQUFPO0FBQUEsSUFDUCxhQUFhO0FBQUEsSUFDYixTQUFTO0FBQUEsSUFDVCxZQUFZO0FBQUEsSUFDWixTQUFTO0FBQUEsSUFDVCxZQUFZO0FBQUEsSUFDWixZQUFZO0FBQUEsSUFDWixlQUFlO0FBQUEsRUFDakIsSUFBSSxNQUFNLFVBQVUsT0FBTyxDQUFDLElBQUksTUFBTTtBQUV0QyxTQUFPO0FBQUEsSUFDTCxZQUFZO0FBQUEsTUFDVixNQUFNO0FBQUEsTUFDTixPQUFPLG9CQUFXLGVBQWUsSUFBSSxFQUFFLElBQUk7QUFBQSxNQUMzQyxTQUFTLE9BQU8sb0JBQVcsWUFBWSxJQUFJLE9BQU8sb0JBQVcsZ0JBQWdCLElBQUksRUFBRSxJQUFJO0FBQUEsTUFDdkYsYUFBYSxvQkFBVyxzQkFBc0IsVUFBVSxFQUFFLElBQUk7QUFBQSxNQUM5RCxpQkFBaUIsWUFBWSxTQUFZLG9CQUFXLHdCQUF3QixZQUFZLEVBQUU7QUFBQSxNQUMxRjtBQUFBLFFBQ0UsQ0FBQyxvQkFBVyxlQUFlLENBQUMsR0FBRztBQUFBLFFBQy9CLENBQUMsb0JBQVcsa0JBQWtCLENBQUMsR0FBRztBQUFBLFFBQ2xDLENBQUMsb0JBQVcsY0FBYyxDQUFDLEdBQUc7QUFBQSxRQUM5QixDQUFDLG9CQUFXLGlCQUFpQixDQUFDLEdBQUc7QUFBQSxRQUNqQyxDQUFDLG9CQUFXLGlCQUFpQixDQUFDLEdBQUc7QUFBQSxNQUNuQztBQUFBLElBQ0Y7QUFBQSxJQUNBLE9BQU87QUFBQSxFQUNUO0FBQ0YsQ0FBQzs7O0FFM0RELElBQUFDLDZCQUEwQjs7O0FDRHVDLElBQU8sNEJBQVE7QUFBQSxFQUM5RSx3QkFBd0I7QUFBQSxFQUN4QixzQkFBc0I7QUFDeEI7OztBREtPLElBQU0sc0JBQWtCLHNDQUEwRCxDQUFDLFVBQVU7QUFDbEcsTUFBSSxDQUFDLE1BQU0sWUFBWTtBQUNyQixXQUFPO0FBQUEsTUFDTCxZQUFZO0FBQUEsSUFDZDtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFVBQVUsTUFBTSxlQUFlLE9BQU8sYUFBYSxNQUFNO0FBRS9ELFNBQU87QUFBQSxJQUNMLFlBQVksQ0FBQyxNQUFNLFlBQVksMEJBQU8sZUFBZSxPQUFPLEVBQUUsQ0FBQztBQUFBLElBQy9ELFlBQVk7QUFBQSxFQUNkO0FBQ0YsQ0FBQzs7O0FFcEJELElBQUFDLDZCQUEwQjs7O0FDRHFELElBQU8sbUNBQVE7QUFBQSxFQUM1RixxQkFBcUI7QUFDdkI7OztBRElPLElBQU0sNEJBQXdCLHNDQUFnRSxDQUFDLFdBQVc7QUFBQSxFQUMvRyxZQUFZLENBQUMsTUFBTSxZQUFZLEVBQUUsQ0FBQyxpQ0FBTyxtQkFBbUIsQ0FBQyxHQUFHLE1BQU0saUJBQWlCLENBQUM7QUFBQSxFQUN4RixrQkFBa0I7QUFDcEIsRUFBRTs7O0FFUEYsSUFBQUMsNkJBQTBCO0FBQzFCLElBQUFDLDJCQUEwQjtBQUcxQixJQUFBQyxnQkFBb0M7QUFpQjdCLFNBQVMsWUFBNkI7QUFDM0MsYUFBTyxzQ0FBNkIsQ0FBQyxVQUFVO0FBQzdDLFVBQU0sRUFBRSxLQUFLLElBQUk7QUFDakIsVUFBTSxlQUFXLHNCQUFPLG9CQUFJLElBQWdCLENBQUM7QUFDN0MsVUFBTSxpQkFBYSxzQkFBaUIsSUFBSTtBQUV4QyxVQUFNLFVBQU0sMkJBQVksQ0FBQyxZQUFlO0FBQ3RDLFlBQU0sWUFBWSxZQUFZLElBQUk7QUFFbEMsZ0JBQVUsUUFBUSxjQUFjLE9BQU8sQ0FBQztBQUN4QyxlQUFTLFVBQVU7QUFDbkIsaUJBQVcsVUFBVTtBQUVyQixhQUFPLE1BQU07QUFDWCxpQkFBUyxRQUFRLFFBQVEsY0FBaUIsSUFBSSxDQUFDO0FBQUEsTUFDakQ7QUFBQSxJQUNGLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsVUFBTSxrQkFBYyxzQkFBTyxJQUFJO0FBRS9CLFFBQUksQ0FBQyxZQUFZLFNBQVM7QUFDeEIsWUFBTSxjQUFjLFlBQVksSUFBSTtBQUNwQyxZQUFNLFlBQVksWUFBWSxXQUFXLFNBQVMsT0FBTztBQUN6RCxZQUFNLGNBQWMsU0FBUyxRQUFRLFdBQVcsV0FBVztBQUUzRCxnQkFBVSxRQUFRLGNBQWlCLFdBQVcsT0FBTyxDQUFDO0FBQ3RELGtCQUFZLFFBQVEsY0FBaUIsSUFBSSxDQUFDO0FBQzFDLGVBQVMsVUFBVTtBQUFBLElBQ3JCO0FBRUEsZ0JBQVksVUFBVTtBQUV0QixXQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0EsTUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGLENBQUM7QUFDSDtBQUVBLElBQU0sY0FBYyxDQUFLLFNBQ3ZCLElBQUksSUFBSyxDQUFDLElBQUksRUFBRSxLQUFLLFFBQWEsRUFBcUMsT0FBTyxrQ0FBUyxDQUFDO0FBRTFGLElBQU0sZ0JBQ0osQ0FBSyxVQUNMLENBQUMsU0FBc0I7QUFDckIsTUFBSSxNQUFNLFFBQVEsSUFBSSxHQUFHO0FBQ3ZCLFNBQUssUUFBUSxjQUFjLEtBQUssQ0FBQztBQUFBLEVBQ25DLFdBQVcsT0FBTyxTQUFTLFlBQVk7QUFDckMsU0FBSyxLQUFLO0FBQUEsRUFDWixXQUFXLE1BQU07QUFDZixJQUFDLEtBQW9DLFVBQVU7QUFBQSxFQUNqRDtBQUNGOzs7QUMxRUYsSUFBQUMsNkJBQTBCO0FBQzFCLElBQUFDLDJCQUEwQztBQUkxQyxJQUFJLGNBQWM7QUFFWCxJQUFNLHNCQUFrQixzQ0FBZ0MsQ0FBQyxVQUFVO0FBQ3hFLFFBQU0sZ0JBQVksbUNBQVMsTUFBTSxXQUFXLE1BQU0sVUFBVTtBQUU1RCxTQUFPO0FBQUEsSUFDTCxHQUFJLFlBQVksRUFBRSxXQUFXLGNBQWMsWUFBWSxjQUFjLFNBQVMsRUFBRSxJQUFJLENBQUM7QUFBQSxJQUNyRixZQUFZO0FBQUEsRUFDZDtBQUNGLENBQUM7QUFFRCxJQUFNLGdCQUFnQixDQUFDLGNBQ3JCLFVBQVUsUUFBUSxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsNkJBQTZCLEVBQUU7QUFFM0UsSUFBTSx1Q0FBdUMsTUFBTTtBQUN4RCxnQkFBYztBQUNoQjtBQUVPLElBQU0sb0NBQW9DLE1BQU07QUFDckQsZ0JBQWM7QUFDaEI7OztBQ3hCQSxJQUFBQyw2QkFBMEI7OztBQ0RtQyxJQUFPLDBCQUFRO0FBQUEsRUFDMUUsWUFBWTtBQUFBLEVBQ1osU0FBUztBQUNYOzs7QURHTyxJQUFNLHFCQUFpQixzQ0FBeUQsQ0FBQyxXQUFXO0FBQUEsRUFDakcsWUFBWTtBQUFBLElBQ1YsTUFBTTtBQUFBLElBQ04sRUFBRSxDQUFDLHdCQUFlLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxXQUFXLENBQUMsd0JBQWUsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLE9BQU87QUFBQSxFQUN6RjtBQUFBLEVBQ0EsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUNiLEVBQUU7OztBbkJDRixJQUFNLFVBQVU7QUFBQSxFQUNkO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQUVBLElBQU0sa0JBQWtCLE1BQTZCLENBQUMsZ0JBQW1CLEdBQUcsVUFBYSxDQUFDO0FBRW5GLElBQU0saUJBQWEsZ0NBQVMsZ0RBQW9CLE9BQU8sR0FBRyxTQUFTLEdBQUcsZ0JBQWdDLENBQUMsQ0FBQzs7O0FIWi9HLElBQUFDLGdCQUE0QztBQWtFeEMsSUFBQUMsc0JBQUE7QUEvQkcsU0FBUyxnQkFBZ0IsY0FBc0Q7QUFDcEYsU0FBTztBQUNUO0FBcUJPLElBQU0sa0JBQWlDLEVBQUUsYUFBYSxHQUFHO0FBRWhFLElBQU0sMEJBQTBCLG9CQUF3QztBQUVqRSxJQUFNLHlCQUF5QixDQUFDLFVBQTJCO0FBQ2hFLFFBQU0sRUFBRSxZQUFZLEdBQUcsS0FBSyxJQUFJO0FBRWhDLFNBQ0U7QUFBQSxJQUFDO0FBQUE7QUFBQSxNQUNDLFVBQVE7QUFBQSxNQUNSLGtCQUFpQjtBQUFBLE1BQ2pCLFNBQVMsRUFBRSxRQUFRLEtBQUs7QUFBQSxNQUN4QixPQUFPLEVBQUUsTUFBTSxJQUFJO0FBQUEsTUFDbkIsWUFBVTtBQUFBLE1BQ1Ysa0JBQWdCO0FBQUEsTUFDaEIsV0FBUztBQUFBLE1BQ1QsWUFBWSxDQUFDLHVCQUFPLFNBQVMsVUFBVTtBQUFBLE1BQ3ZDLCtCQUEyQjtBQUFBLE1BQzFCLEdBQUc7QUFBQTtBQUFBLEVBQ047QUFFSjtBQVdBLElBQU0sbUJBQW1CLENBQUMsWUFDeEIsT0FBUSxRQUFvQyxnQkFBZ0I7QUFFOUQsSUFBTSxpQ0FBaUMsQ0FBQyxVQUErQztBQUNyRixRQUFNLEVBQUUsU0FBUyxVQUFVLFdBQVcsZUFBZSxJQUFJO0FBQ3pELFFBQU0sQ0FBQyxVQUFVLFdBQVcsUUFBSSx3QkFBNkIsSUFBSTtBQUNqRSxRQUFNLEVBQUUsZUFBZSxRQUFJLDhCQUFZO0FBQUEsSUFDckMsV0FBVztBQUFBLElBQ1gsWUFBWSxLQUFDLHVCQUFLLE9BQUcseUJBQU8sQ0FBQyxPQUFHLHdCQUFNLENBQUM7QUFBQSxJQUN2QyxzQkFBc0I7QUFBQSxJQUN0QixVQUFVO0FBQUEsTUFDUjtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsRUFDRixDQUFDO0FBR0QsK0JBQVUsTUFBTTtBQUNkLFNBQUssZUFBZTtBQUFBLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDO0FBS0wsK0JBQVUsTUFBTTtBQUNkLFFBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLFFBQVEsR0FBRztBQUM1QztBQUFBLElBQ0Y7QUFFQSxhQUFTLFlBQVk7QUFFckIsV0FBTyxNQUFNO0FBQ1gsVUFBSSxTQUFTLGFBQWE7QUFDeEIsaUJBQVMsWUFBWTtBQUFBLE1BQ3ZCO0FBQUEsSUFDRjtBQUFBLEVBQ0YsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUViLFNBQ0UsNkNBQUMsMEJBQXVCLE1BQU0sYUFBYSxTQUFRLFVBQVMsT0FBTyxnQkFDaEUsbUJBQ0g7QUFFSjtBQW1CQSxJQUFNLDBCQUEwQixDQUFDLEVBQUUsU0FBUyxlQUFlLGlCQUFpQixTQUFTLE1BQTJCO0FBQzlHLFFBQU0sQ0FBQyxXQUFXLFlBQVksUUFBSSx3QkFBNkIsSUFBSTtBQUNuRSxnQkFBYyxZQUFZO0FBRTFCLFFBQU0sbUJBQWUsa0NBQWMsc0JBQXNCO0FBQ3pELFFBQU0sd0JBQW9CLGtDQUFjLDJCQUEyQjtBQUNuRSxRQUFNLGtCQUFjLGtDQUFjLDhCQUE4QixFQUFFLHVCQUF1QjtBQUN6RixRQUFNLFNBQUsscUJBQU07QUFFakIsUUFBTSxtQkFBZSxzQkFBTyxTQUFTO0FBQ3JDLGVBQWEsVUFBVTtBQUV2QixRQUFNLHNCQUFrQixzQkFBTyxZQUFZO0FBQzNDLGtCQUFnQixVQUFVO0FBRTFCLGtCQUFnQjtBQUFBLElBQ2Qsa0JBQWMsc0JBQU8sTUFBTTtBQUN6QixZQUFNLFlBQVksS0FBSyxJQUFJO0FBRTNCLHdCQUFrQix1QkFBdUIsRUFBRSxJQUFJLElBQUk7QUFBQSxRQUNqRCxXQUFXLHlCQUFXLElBQUksV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQUEsUUFDcEQsVUFBVSxPQUFPO0FBQUEsVUFDZixNQUFNLGFBQWE7QUFBQSxVQUNuQixPQUFPLGdCQUFnQixXQUFXO0FBQUEsVUFDbEMsU0FBUztBQUFBLFVBQ1QsV0FBVztBQUFBLFFBQ2I7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNILENBQUM7QUFBQSxJQUVELGtCQUFjLHNCQUFPLE1BQU07QUFDekIsWUFBTSxlQUFlLGtCQUFrQix1QkFBdUI7QUFDOUQsWUFBTSxZQUFZLEtBQUssSUFBSTtBQUUzQixtQkFBYSxPQUFPLEVBQUU7QUFDdEIsbUJBQWEsUUFBUSxDQUFDLFVBQVUsTUFBTSxVQUFVLElBQUksU0FBUyxDQUFDO0FBQUEsSUFDaEUsQ0FBQztBQUFBLEVBQ0gsQ0FBQztBQUVEO0FBQUEsSUFDRSxVQUNFLHNCQUFPLE1BQU07QUFDWCx3QkFBa0IsdUJBQXVCLEVBQUUsT0FBTyxFQUFFO0FBQUEsSUFDdEQsQ0FBQztBQUFBLElBQ0gsQ0FBQyxtQkFBbUIsRUFBRTtBQUFBLEVBQ3hCO0FBRUEsUUFBTSxDQUFDLFNBQVMsVUFBVSxRQUFJLHdCQUFTLEtBQUs7QUFFNUMsK0JBQVUsTUFBTTtBQUNkLGVBQU8sdUJBQVEsTUFBTTtBQUNuQixZQUFNLFlBQVksWUFBWSxJQUFJLE1BQU0sYUFBYTtBQUNyRCxpQkFBVyxTQUFTO0FBQUEsSUFDdEIsQ0FBQztBQUFBLEVBQ0gsR0FBRyxDQUFDLFdBQVcsQ0FBQztBQUVoQixRQUFNLEVBQUUsYUFBYSxTQUFTLGNBQWMsVUFBVSxlQUFlLElBQUk7QUFDekUsUUFBTSxVQUFVLFVBQVUsWUFBWSxTQUFZLGNBQWMsNkNBQUMsV0FBUyxHQUFHLGNBQWMsSUFBSztBQUVoRyxTQUNFLDhFQUNHO0FBQUEsa0JBQ0c7QUFBQSxNQUNFLDZDQUFDLGtDQUFnQyxHQUFHLEVBQUUsU0FBUyxVQUFVLGdCQUFnQixVQUFVLEdBQUc7QUFBQSxNQUN0RixTQUFTO0FBQUEsSUFDWCxJQUNBO0FBQUEsSUFDSDtBQUFBLEtBQ0g7QUFFSjtBQUVPLFNBQVMsZ0JBQXVDO0FBQ3JELGFBQU8sc0NBQWtFLENBQUMsVUFBVTtBQUNsRixVQUFNLEVBQUUsU0FBUyxJQUFJO0FBRXJCLFFBQUksWUFBWSxNQUFNO0FBQ3BCLGFBQU87QUFBQSxRQUNMLFVBQVU7QUFBQSxNQUNaO0FBQUEsSUFDRjtBQUVBLFVBQU07QUFBQSxNQUNKO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBLFdBQVc7QUFBQSxNQUNYLGlCQUFpQjtBQUFBLElBQ25CLElBQXdCLE9BQU8sYUFBYSxXQUFXLEVBQUUsYUFBYSxTQUFTLElBQUk7QUFFbkYsV0FBTztBQUFBLE1BQ0wsVUFBVTtBQUFBLE1BQ1YsVUFBVTtBQUFBLFFBQ1IsV0FBVztBQUFBLFFBQ1gsT0FBTztBQUFBLFVBQ0wsU0FBUyxFQUFFLGFBQWEsU0FBUyxjQUFjLFVBQVUsZUFBZTtBQUFBLFFBQzFFO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGLENBQUM7QUFDSDs7O0F3QnpQTyxJQUFNLHNCQUFzQixNQUFrRDtBQUNuRixRQUFNLFVBQVU7QUFBQSxJQUNkLFdBQVcsQ0FBQyxVQUF1QjtBQUFBLE1BQ2pDO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxJQUVBLFdBQVcsQ0FBQyxZQUF5QztBQUFBLE1BQ25EO0FBQUEsTUFDQTtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUOzs7QUNqQ0EsMEJBQTJCO0FBQzNCLElBQUFDLHVCQUErQzs7O0FDRC9DO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsc0JBQStCO0FBVXhCLElBQU0sc0JBQWtCLG9DQUFlO0FBQUEsRUFDNUMsSUFBSTtBQUFBLEVBRUosYUFBYSxNQUFNLE1BQU07QUFDdkIsVUFBTSxFQUFFLGVBQWUsVUFBVSxVQUFVLElBQUk7QUFJL0MsV0FBTyxPQUFPLE1BQUssK0NBQWUsYUFBWSxZQUFZLGFBQWEsRUFBRTtBQUFBLEVBQzNFO0FBQ0YsQ0FBQzs7O0FDcEJEO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsc0JBQStCO0FBQy9CLElBQUFDLGFBQXdCO0FBR2pCLElBQU0sK0JBQTJCLG9DQUFlO0FBQUEsRUFDckQsSUFBSTtBQUFBLEVBRUosYUFBYSxDQUFDLE9BQU87QUFDbkIsVUFBTSxRQUFRLEdBQUcsT0FBTyxlQUFlO0FBRXZDLFdBQU8sTUFBTSxrQkFBa0IsTUFBTSxJQUFJLGtCQUFrQix3QkFBd0I7QUFBQSxFQUNyRjtBQUNGLENBQUM7QUFFRCxJQUFNLG9CQUNKLENBQUksT0FDSixDQUFDLE9BQStCLGFBQTRDO0FBQzFFLE1BQUksR0FBRyxLQUFLLEdBQUc7QUFDYixVQUFNLGVBQWU7QUFDckIsYUFBUyxLQUFLO0FBQUEsRUFDaEI7QUFDRjtBQUVGLElBQU0sc0JBQWtCLG9CQUFRO0FBQUEsRUFDOUIsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUNSLENBQUM7QUFFRCxJQUFNLCtCQUEyQixvQkFBUTtBQUFBLEVBQ3ZDLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULE1BQU07QUFDUixDQUFDOzs7QUNyQ0Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxJQUFBQyxzQkFBK0I7QUFFeEIsSUFBTSwwREFBc0Qsb0NBQWU7QUFBQSxFQUNoRixJQUFJO0FBQUEsRUFFSixhQUFhLE1BQU0sTUFBTSxDQUFDLGFBQXlCO0FBQ2pELGVBQVcsTUFBTTtBQUNmLGVBQVM7QUFBQSxJQUNYLEdBQUcsRUFBRTtBQUFBLEVBQ1A7QUFDRixDQUFDOzs7QUNWRDtBQUFBO0FBQUE7QUFBQTtBQUFBLElBQUFDLHNCQUErQjtBQWV4QixJQUFNLHdDQUFvQyxvQ0FBZTtBQUFBLEVBQzlELElBQUk7QUFBQSxFQUVKLGFBQWEsTUFBTTtBQUNqQixVQUFNLG1CQUFtQixvQkFBSSxJQUEyQztBQUN4RSxVQUFNLGVBQW1DLENBQUM7QUFFMUMsVUFBTSxZQUFZLENBQUMsWUFBOEI7QUFDL0MsWUFBTSxXQUFXLGlCQUFpQixJQUFJLE9BQU87QUFFN0MsVUFBSSxVQUFVO0FBQ1osZUFBTztBQUFBLE1BQ1Q7QUFFQSxZQUFNLFVBQVUsb0JBQUksSUFBb0I7QUFFeEMsdUJBQWlCLElBQUksU0FBUyxPQUFPO0FBRXJDLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxPQUFPO0FBQUEsTUFDWixpQkFBaUIsQ0FBQyxZQUNoQixDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsY0FBYyxFQUFFLFdBQVc7QUFBQSxNQUV0RSxnQkFBZ0IsTUFBTSxhQUFhLEdBQUcsRUFBRTtBQUFBLE1BRXhDLFVBQVUsQ0FBQyxTQUEyQixVQUEwQjtBQUM5RCxjQUFNLFVBQVUsVUFBVSxPQUFPO0FBRWpDLFlBQUksUUFBUSxTQUFTLEdBQUc7QUFDdEIsdUJBQWEsS0FBSyxPQUFPO0FBQUEsUUFDM0I7QUFFQSxnQkFBUSxJQUFJLEtBQUs7QUFBQSxNQUNuQjtBQUFBLE1BRUEsWUFBWSxDQUFDLFNBQTJCLFVBQTBCO0FBQ2hFLGNBQU0sVUFBVSxVQUFVLE9BQU87QUFFakMsZ0JBQVEsT0FBTyxLQUFLO0FBRXBCLFlBQUksUUFBUSxTQUFTLEdBQUc7QUFDdEIsZ0JBQU0sZUFBZSxhQUFhLFlBQVksT0FBTztBQUVyRCxjQUFJLGlCQUFpQixJQUFJO0FBQ3ZCLHlCQUFhLE9BQU8sY0FBYyxDQUFDO0FBQUEsVUFDckM7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0YsQ0FBQzs7O0FDbkVEO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFBQUMsc0JBQStCO0FBSS9CLElBQUFDLGdCQUF5QjtBQUVsQixJQUFNLHNDQUFrQyxvQ0FBZTtBQUFBLEVBQzVELElBQUk7QUFBQSxFQUNKLGNBQWMsQ0FBQyw4QkFBOEI7QUFBQSxFQUU3QyxhQUFhLENBQUMsT0FBTztBQUNuQixVQUFNLG1CQUFtQixHQUFHLE9BQU8sOEJBQThCO0FBRWpFLFdBQU8sQ0FBQyxZQUFxRDtBQUMzRCxZQUFNLGNBQWMsaUJBQWlCLEVBQUUsT0FBTztBQUU5QyxpQkFBTyx3QkFBUyxNQUFNLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQztBQUFBLElBQzNDO0FBQUEsRUFDRjtBQUNGLENBQUM7OztBQ25CRDtBQUFBO0FBQUE7QUFBQTtBQUFBLHdCQUFnRDs7O0FDRWhELElBQU0sVUFBVSxDQUFDO0FBRWpCLElBQU8sOENBQVE7OztBQ0pmO0FBQUE7QUFBQTtBQUFBO0FBSUEsSUFBTyw4RUFBUSxDQUFDLE9BQW9CO0FBQ2xDLEtBQUcsVUFBVSxxREFBcUQsTUFBTSxNQUFNLENBQUMsYUFBeUIsU0FBUyxDQUFDO0FBQ3BIOzs7QUNOQTtBQUFBO0FBQUE7QUFBQTtBQU1BLElBQU8seUNBQVEsQ0FBQyxPQUFvQjtBQUNsQyxLQUFHLFVBQVUsd0JBQXdCLE1BQU0sTUFBTSxNQUFTO0FBQzVEOzs7QUNSQTtBQUFBO0FBQUE7QUFBQTtBQUVBLElBQU8scURBQVEsTUFBTTtBQUNuQix1Q0FBcUM7QUFDdkM7OztBQ0ZBLElBQU1DLFdBQVUsQ0FBQyw2RUFBUSx3Q0FBUSxrREFBTztBQUV4QyxJQUFPLDJDQUFRQTs7O0FMQVIsSUFBTSxpQ0FBNkIsbURBQWdDO0FBQUEsRUFDeEU7QUFBQSxFQUNBO0FBQ0YsQ0FBQzs7O0FNTEQsSUFBTUMsV0FBVSxDQUFDLDJCQUFRLHFDQUFRLHVDQUFRLHVDQUFRLHVFQUFRLG1EQUFRLHlDQUFRLDhDQUFRLDZCQUFRLHVDQUFRLGlDQUFTLHVDQUFTLHVDQUFTLDZDQUFTLGtDQUFTLHFDQUFRO0FBRXRKLElBQU8sK0NBQVFBOzs7QVpBUixJQUFNLDhCQUEwQixnQ0FBVztBQUFBLEVBQ2hELElBQUk7QUFBQSxFQUNKLFVBQVUsQ0FBQyxXQUFPLHFEQUErQixJQUFJLDRDQUFzQjtBQUFBO0FBQUE7QUFBQTtBQUk3RSxDQUFDOzs7QWFnQk0sSUFBTSxtQkFBbUI7QUFHaEMsSUFBTSxrQkFBOEM7QUFBQSxFQUNsRCxNQUFNO0FBQUEsRUFDTixPQUFPLElBQUk7QUFBQSxFQUNYLE9BQU8sSUFBSTtBQUFBLEVBQ1gsS0FBSztBQUFBLEVBQ0wsSUFBSTtBQUFBLEVBQ0osR0FBRztBQUFBLEVBQ0gsR0FBRztBQUFBLEVBQ0gsR0FBRztBQUFBLEVBQ0gsSUFBSTtBQUFBLEVBQ0osS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUNWO0FBT08sSUFBTSxxQkFBcUIsQ0FBQyxTQUE2QixtQkFBbUIsZ0JBQWdCLElBQUk7OztBQ3ZEdkcsSUFBQUMsNkJBQW9DOzs7QUNEaUIsSUFBTyxzQkFBUTtBQUFBLEVBQ2xFLFFBQVE7QUFBQSxFQUNSLG9CQUFvQjtBQUFBLEVBQ3BCLDZCQUE2QjtBQUFBLEVBQzdCLHNDQUFzQztBQUFBLEVBQ3RDLCtCQUErQjtBQUFBLEVBQy9CLHdDQUF3QztBQUFBLEVBQ3hDLHNDQUFzQztBQUFBLEVBQ3RDLHFDQUFxQztBQUFBLEVBQ3JDLGdDQUFnQztBQUFBLEVBQ2hDLGlDQUFpQztBQUFBLEVBQ2pDLG1DQUFtQztBQUFBLEVBQ25DLGlDQUFpQztBQUFBLEVBQ2pDLDZCQUE2QjtBQUFBLEVBQzdCLDRCQUE0QjtBQUFBLEVBQzVCLCtCQUErQjtBQUFBLEVBQy9CLDZCQUE2QjtBQUFBLEVBQzdCLG1CQUFtQjtBQUFBLEVBQ25CLDJCQUEyQjtBQUFBLEVBQzNCLHdCQUF3QjtBQUFBLEVBQ3hCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGlCQUFpQjtBQUFBLEVBQ2pCLHlCQUF5QjtBQUFBLEVBQ3pCLHNCQUFzQjtBQUFBLEVBQ3RCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGdCQUFnQjtBQUFBLEVBQ2hCLHdCQUF3QjtBQUFBLEVBQ3hCLHFCQUFxQjtBQUFBLEVBQ3JCLGlCQUFpQjtBQUFBLEVBQ2pCLHlCQUF5QjtBQUFBLEVBQ3pCLHNCQUFzQjtBQUFBLEVBQ3RCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xCLDBCQUEwQjtBQUFBLEVBQzFCLHVCQUF1QjtBQUFBLEVBQ3ZCLGtCQUFrQjtBQUFBLEVBQ2xC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QUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsc0JBQXNCO0FBQUEsRUFDdEIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsc0JBQXNCO0FBQUEsRUFDdEIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsZ0JBQWdCO0FBQUEsRUFDaEIsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZ0JB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QVU7QUFDWixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sVUFBVSxPQUFPO0FBRXZCLGVBQWEsSUFBSSxJQUFJLE9BQU87QUFFNUIsU0FBTztBQUNUOzs7QUMzRUEsSUFBQUMsc0JBQThCO0FBRTlCLElBQUFDLGlCQUF1RDtBQUdoRCxJQUFNLG9CQUFvQixNQUFnQztBQUMvRCxRQUFNLHVCQUFtQix3QkFBUSxNQUFNLG9CQUFtRCxHQUFHLENBQUMsQ0FBQztBQUMvRixRQUFNLFVBQU0sdUJBQWEsSUFBSTtBQUM3QixRQUFNLHVCQUFtQixtQ0FBYyxpQ0FBaUMsZ0JBQWdCO0FBRXhGLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxTQUFTLGlCQUFpQixVQUFVLEdBQUc7QUFBQSxJQUN2QyxvQkFBb0I7QUFBQSxFQUN0QjtBQUNGOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJ0b0NvbnRleHRNYXAiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgInN0eWxlcyIsICJpbXBvcnRfZnAiLCAibG9kYXNoQ2FwaXRhbGl6ZSIsICJpbXBvcnRfZnAiLCAiYWxpYXNUb05vbWluYWwiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZmVhdHVyZV9jb3JlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9mcCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJtb2R1bGVzIiwgIm1vZHVsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImFsaWFzVG9Ob21pbmFsIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfbW9ieF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgInN0eWxlcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdGVzdF91dGlscyIsICJzdHlsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdF9kb20iLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0X2RvbSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJzdG9wUHJvcGFnYXRpb24iLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaXNQb3BvdmVyQ2FwYWJsZSIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiXQp9Cg==