td-stylekit 26.24.2 → 27.0.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.
Files changed (30) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/es/ChartPrimitives/Tooltip.d.ts +1 -1
  3. package/dist/es/CollapsibleToggle/CollapsibleToggle.d.ts +3 -1
  4. package/dist/es/CollapsibleToggle/CollapsibleToggle.js +28 -11
  5. package/dist/es/DataGrid/DataGrid.d.ts +14 -4
  6. package/dist/es/DataGrid/DataGrid.js +97 -30
  7. package/dist/es/DataGrid/components/BasicColumn.d.ts +2 -1
  8. package/dist/es/DataGrid/components/BasicColumn.js +5 -1
  9. package/dist/es/DataGrid/components/CollapsibleCell.js +4 -3
  10. package/dist/es/DataGrid/components/ColumnHeader.d.ts +3 -1
  11. package/dist/es/DataGrid/components/ColumnHeader.js +9 -1
  12. package/dist/es/DataGrid/components/ColumnHeaderDragHandle.d.ts +5 -0
  13. package/dist/es/DataGrid/components/ColumnHeaderDragHandle.js +104 -0
  14. package/dist/es/DataGrid/components/ScrollableTable.d.ts +1 -1
  15. package/dist/es/DataGrid/elements.d.ts +7 -3
  16. package/dist/es/DataGrid/elements.js +118 -104
  17. package/dist/es/DataGrid/types.d.ts +3 -0
  18. package/dist/es/DataGrid/utils.d.ts +6 -1
  19. package/dist/es/DistributionChart/utils.d.ts +1 -1
  20. package/dist/es/Drawer/Drawer.d.ts +2 -0
  21. package/dist/es/Drawer/Drawer.js +6 -2
  22. package/dist/es/FormControl/elements.d.ts +10 -6
  23. package/dist/es/Modal/components/ModalMessage.d.ts +20 -12
  24. package/dist/es/MultiSelect/elements.d.ts +5 -3
  25. package/dist/es/Overlay/OverlayHeader.d.ts +5 -3
  26. package/dist/es/PieChart/PieChart.js +3 -5
  27. package/dist/es/ThemeProvider/v4/DataGrid.d.ts +8 -3
  28. package/dist/es/ThemeProvider/v4/DataGrid.js +47 -35
  29. package/dist/es/Toast/elements.d.ts +25 -15
  30. package/package.json +4 -3
package/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ # [27.0.0](https://github.com/treasure-data/td-stylekit/compare/v26.25.1...v27.0.0) (2022-09-02)
2
+
3
+
4
+ ### Features
5
+
6
+ * **DataGrid:** Resizable columns ([#1323](https://github.com/treasure-data/td-stylekit/issues/1323)) ([ce69139](https://github.com/treasure-data/td-stylekit/commit/ce69139))
7
+
8
+
9
+ ### BREAKING CHANGES
10
+
11
+ * **DataGrid:** for v5 theme, add `isFirst` prop to any custom cell renderer in the first column to maintain padding.
12
+
13
+ ## [26.25.1](https://github.com/treasure-data/td-stylekit/compare/v26.25.0...v26.25.1) (2022-09-01)
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **CollapsibleToggle:** Don't pass through props that aren't attributes ([#1324](https://github.com/treasure-data/td-stylekit/issues/1324)) ([23fe480](https://github.com/treasure-data/td-stylekit/commit/23fe480))
19
+
20
+ # [26.25.0](https://github.com/treasure-data/td-stylekit/compare/v26.24.2...v26.25.0) (2022-08-31)
21
+
22
+
23
+ ### Features
24
+
25
+ * **CON-10500:** Drawer toggling updates and alterations ([#1322](https://github.com/treasure-data/td-stylekit/issues/1322)) ([0b852af](https://github.com/treasure-data/td-stylekit/commit/0b852af))
26
+
1
27
  ## [26.24.2](https://github.com/treasure-data/td-stylekit/compare/v26.24.1...v26.24.2) (2022-08-26)
2
28
 
3
29
 
@@ -35,7 +35,7 @@ declare class Tooltip extends PureComponent<TooltipProps, TooltipState> {
35
35
  };
36
36
  componentDidMount(): void;
37
37
  componentDidUpdate(prevProps: TooltipProps): void;
38
- getLabel: (props?: TooltipProps | undefined) => any;
38
+ getLabel: (props?: TooltipProps) => any;
39
39
  updateLabelSize: () => void;
40
40
  render(): import("@emotion/react/jsx-runtime").JSX.Element | null;
41
41
  }
@@ -5,9 +5,11 @@ export declare type CollapsibleToggleProps = {
5
5
  'data-instrumentation'?: string;
6
6
  onClick: (event: SyntheticEvent<HTMLDivElement> | SyntheticEvent<HTMLButtonElement>) => void;
7
7
  openLeft?: boolean;
8
+ openRight?: boolean;
9
+ topToggle?: boolean;
8
10
  hiddenLabel?: string;
9
11
  };
10
- declare function CollapsibleToggle({ id, 'data-instrumentation': dataInstrumentation, isClosed, hiddenLabel, onClick, openLeft }: CollapsibleToggleProps): import("@emotion/react/jsx-runtime").JSX.Element;
12
+ declare function CollapsibleToggle({ id, 'data-instrumentation': dataInstrumentation, isClosed, hiddenLabel, onClick, openLeft, topToggle, openRight }: CollapsibleToggleProps): import("@emotion/react/jsx-runtime").JSX.Element;
11
13
  declare namespace CollapsibleToggle {
12
14
  var defaultProps: {
13
15
  'data-instrumentation': string;
@@ -25,6 +25,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
25
25
 
26
26
  if (typeof window !== "undefined" && !window.gs) window.gs = function () {};
27
27
  if (typeof window !== "undefined" && !window.gsC) window.gsC = function () {};
28
+ // openLeft is used for v4
28
29
  var Highlight = ( /*#__PURE__*/0, _base["default"])('div', process.env.NODE_ENV === "production" ? {
29
30
  target: "ezxmtq91"
30
31
  } : {
@@ -32,12 +33,13 @@ var Highlight = ( /*#__PURE__*/0, _base["default"])('div', process.env.NODE_ENV
32
33
  label: "Highlight"
33
34
  })(function (_ref) {
34
35
  var theme = _ref.theme,
35
- openLeft = _ref.openLeft;
36
+ openLeft = _ref.openLeft,
37
+ openRight = _ref.openRight;
36
38
  return {
37
39
  width: 1,
38
40
  minWidth: 1,
39
41
  minHeight: '100%',
40
- position: 'relative',
42
+ position: openRight ? 'absolute' : 'relative',
41
43
  top: 0,
42
44
  bottom: 0,
43
45
  left: openLeft ? 1 : -1,
@@ -51,21 +53,22 @@ var Highlight = ( /*#__PURE__*/0, _base["default"])('div', process.env.NODE_ENV
51
53
  color: theme.palette.primary[4]
52
54
  })
53
55
  };
54
- }, (0, _ThemeProvider.getOverrides)(_ThemeProvider.Overridable.CollapsibleToggle.Root), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9Db2xsYXBzaWJsZVRvZ2dsZS9Db2xsYXBzaWJsZVRvZ2dsZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUWtCIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9Db2xsYXBzaWJsZVRvZ2dsZS9Db2xsYXBzaWJsZVRvZ2dsZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN5bnRoZXRpY0V2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vQnV0dG9uJ1xuaW1wb3J0IEljb24gZnJvbSAnLi4vSWNvbidcbmltcG9ydCB7IGdldE92ZXJyaWRlcywgT3ZlcnJpZGFibGUgfSBmcm9tICcuLi9UaGVtZVByb3ZpZGVyJ1xuaW1wb3J0IHsgSElHSExJR0hUX0NMQVNTTkFNRSB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IFZpc3VhbGx5SGlkZGVuIGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJ1xuXG5jb25zdCBIaWdobGlnaHQgPSBzdHlsZWQoJ2RpdicpPHsgb3BlbkxlZnQ/OiBib29sZWFuIH0+KFxuICAoeyB0aGVtZSwgb3BlbkxlZnQgfSkgPT4gKHtcbiAgICB3aWR0aDogMSxcbiAgICBtaW5XaWR0aDogMSxcbiAgICBtaW5IZWlnaHQ6ICcxMDAlJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0b3A6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IG9wZW5MZWZ0ID8gMSA6IC0xLFxuICAgIHpJbmRleDogdGhlbWUuekluZGV4LlNlY29uZGFyeU5hdkFjdGl2ZUl0ZW0sXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICBiYWNrZ3JvdW5kOiAnbm9uZScsXG4gICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgIFtgJiAgLiR7SElHSExJR0hUX0NMQVNTTkFNRX1gXToge1xuICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUucHJpbWFyeVsxXSxcbiAgICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUucHJpbWFyeVs0XVxuICAgICAgfVxuICAgIH1cbiAgfSksXG4gIGdldE92ZXJyaWRlcyhPdmVycmlkYWJsZS5Db2xsYXBzaWJsZVRvZ2dsZS5Sb290KVxuKVxuXG5jb25zdCBUb2dnbGVCdXR0b24gPSBzdHlsZWQoQnV0dG9uLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+IHByb3AgIT09ICdpc0Nsb3NlZCdcbn0pPHsgaXNDbG9zZWQ/OiBib29sZWFuIH0+KFxuICAoeyBpc0Nsb3NlZCwgdGhlbWUgfSkgPT4gKHtcbiAgICBib3hTaGFkb3c6ICc2cHggMHB4IDhweCAtNnB4IHJnYmEoMTU5LCAxNzMsIDE4NSwgMC43KScsXG4gICAgaGVpZ2h0OiAyMCxcbiAgICB3aWR0aDogMjAsXG4gICAgbWluSGVpZ2h0OiAyMCxcbiAgICBtaW5XaWR0aDogMjAsXG4gICAgbWFyZ2luUmlnaHQ6IC0xNixcbiAgICBjb2xvcjogaXNDbG9zZWQgPyB0aGVtZS5wYWxldHRlLnByaW1hcnlbNF0gOiB0aGVtZS5wYWxldHRlLm5ldXRyYWxbOF0sXG4gICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5uZXV0cmFsWzBdLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogJzUwJScsXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtNTAlKScsXG4gICAgJyY6Zm9jdXMnOiB7XG4gICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MCUpJ1xuICAgIH0sXG4gICAgJyY6YWN0aXZlLCAmOmhvdmVyJzoge1xuICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5wcmltYXJ5WzFdLFxuICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUucHJpbWFyeVs0XSxcbiAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwJSknXG4gICAgfVxuICB9KSxcbiAgZ2V0T3ZlcnJpZGVzKE92ZXJyaWRhYmxlLkNvbGxhcHNpYmxlVG9nZ2xlLlRvZ2dsZUJ1dHRvbilcbilcblxuZXhwb3J0IHR5cGUgQ29sbGFwc2libGVUb2dnbGVQcm9wcyA9IHtcbiAgaWQ6IHN0cmluZ1xuICBpc0Nsb3NlZD86IGJvb2xlYW5cbiAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJz86IHN0cmluZ1xuICBvbkNsaWNrOiAoXG4gICAgZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxEaXZFbGVtZW50PiB8IFN5bnRoZXRpY0V2ZW50PEhUTUxCdXR0b25FbGVtZW50PlxuICApID0+IHZvaWRcbiAgb3BlbkxlZnQ/OiBib29sZWFuXG4gIGhpZGRlbkxhYmVsPzogc3RyaW5nXG59XG5cbkNvbGxhcHNpYmxlVG9nZ2xlLmRlZmF1bHRQcm9wcyA9IHtcbiAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJzogJ2NvbGxhcHNpYmxldG9nZ2xlJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2xsYXBzaWJsZVRvZ2dsZSh7XG4gIGlkLFxuICAnZGF0YS1pbnN0cnVtZW50YXRpb24nOiBkYXRhSW5zdHJ1bWVudGF0aW9uLFxuICBpc0Nsb3NlZCxcbiAgaGlkZGVuTGFiZWwsXG4gIG9uQ2xpY2ssXG4gIG9wZW5MZWZ0XG59OiBDb2xsYXBzaWJsZVRvZ2dsZVByb3BzKSB7XG4gIGNvbnN0IGFycm93SWNvbiA9IGlzQ2xvc2VkID8gKFxuICAgIG9wZW5MZWZ0ID8gKFxuICAgICAgPEljb24uU21hbGwuQXJyb3dMZWZ0IC8+XG4gICAgKSA6IChcbiAgICAgIDxJY29uLlNtYWxsLkFycm93UmlnaHQgLz5cbiAgICApXG4gICkgOiBvcGVuTGVmdCA/IChcbiAgICA8SWNvbi5TbWFsbC5BcnJvd1JpZ2h0IC8+XG4gICkgOiAoXG4gICAgPEljb24uU21hbGwuQXJyb3dMZWZ0IC8+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxIaWdobGlnaHRcbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBvcGVuTGVmdD17b3BlbkxlZnR9XG4gICAgICBkYXRhLWluc3RydW1lbnRhdGlvbj17YCR7ZGF0YUluc3RydW1lbnRhdGlvbn0taGlnaGxpZ2h0YH1cbiAgICA+XG4gICAgICA8VG9nZ2xlQnV0dG9uXG4gICAgICAgIGljb25cbiAgICAgICAgZGF0YS1pbnN0cnVtZW50YXRpb249e2RhdGFJbnN0cnVtZW50YXRpb259XG4gICAgICAgIGlzQ2xvc2VkPXtpc0Nsb3NlZH1cbiAgICAgICAgY2lyY2xlXG4gICAgICAgIHNtYWxsXG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIGNsYXNzTmFtZT17SElHSExJR0hUX0NMQVNTTkFNRX1cbiAgICAgICAgaWQ9e2lkfVxuICAgICAgPlxuICAgICAgICB7YXJyb3dJY29ufVxuICAgICAgICB7aGlkZGVuTGFiZWwgJiYgPFZpc3VhbGx5SGlkZGVuPntoaWRkZW5MYWJlbH08L1Zpc3VhbGx5SGlkZGVuPn1cbiAgICAgIDwvVG9nZ2xlQnV0dG9uPlxuICAgIDwvSGlnaGxpZ2h0PlxuICApXG59XG4iXX0= */");
56
+ }, (0, _ThemeProvider.getOverrides)(_ThemeProvider.Overridable.CollapsibleToggle.Root), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9Db2xsYXBzaWJsZVRvZ2dsZS9Db2xsYXBzaWJsZVRvZ2dsZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU2tCIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9Db2xsYXBzaWJsZVRvZ2dsZS9Db2xsYXBzaWJsZVRvZ2dsZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN5bnRoZXRpY0V2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vQnV0dG9uJ1xuaW1wb3J0IEljb24gZnJvbSAnLi4vSWNvbidcbmltcG9ydCB7IGdldE92ZXJyaWRlcywgT3ZlcnJpZGFibGUgfSBmcm9tICcuLi9UaGVtZVByb3ZpZGVyJ1xuaW1wb3J0IHsgSElHSExJR0hUX0NMQVNTTkFNRSB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IFZpc3VhbGx5SGlkZGVuIGZyb20gJy4uL1Zpc3VhbGx5SGlkZGVuJ1xuXG4vLyBvcGVuTGVmdCBpcyB1c2VkIGZvciB2NFxuY29uc3QgSGlnaGxpZ2h0ID0gc3R5bGVkKCdkaXYnKTx7IG9wZW5MZWZ0PzogYm9vbGVhbjsgb3BlblJpZ2h0PzogYm9vbGVhbiB9PihcbiAgKHsgdGhlbWUsIG9wZW5MZWZ0LCBvcGVuUmlnaHQgfSkgPT4gKHtcbiAgICB3aWR0aDogMSxcbiAgICBtaW5XaWR0aDogMSxcbiAgICBtaW5IZWlnaHQ6ICcxMDAlJyxcbiAgICBwb3NpdGlvbjogb3BlblJpZ2h0ID8gJ2Fic29sdXRlJyA6ICdyZWxhdGl2ZScsXG4gICAgdG9wOiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiBvcGVuTGVmdCA/IDEgOiAtMSxcbiAgICB6SW5kZXg6IHRoZW1lLnpJbmRleC5TZWNvbmRhcnlOYXZBY3RpdmVJdGVtLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYmFja2dyb3VuZDogJ25vbmUnLFxuICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICBbYCYgIC4ke0hJR0hMSUdIVF9DTEFTU05BTUV9YF06IHtcbiAgICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLnByaW1hcnlbMV0sXG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLnByaW1hcnlbNF1cbiAgICAgIH1cbiAgICB9XG4gIH0pLFxuICBnZXRPdmVycmlkZXMoT3ZlcnJpZGFibGUuQ29sbGFwc2libGVUb2dnbGUuUm9vdClcbilcblxuY29uc3QgVG9nZ2xlQnV0dG9uID0gc3R5bGVkKEJ1dHRvbiwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiAhWydpc0Nsb3NlZCcsICd0b3BUb2dnbGUnXS5pbmNsdWRlcyhTdHJpbmcocHJvcCkpXG59KTx7XG4gIGlzQ2xvc2VkPzogYm9vbGVhblxuICB0b3BUb2dnbGU/OiBib29sZWFuXG59PihcbiAgKHsgaXNDbG9zZWQsIHRoZW1lLCB0b3BUb2dnbGUgfSkgPT4gKHtcbiAgICBib3hTaGFkb3c6ICc2cHggMHB4IDhweCAtNnB4IHJnYmEoMTU5LCAxNzMsIDE4NSwgMC43KScsXG4gICAgaGVpZ2h0OiAyMCxcbiAgICB3aWR0aDogMjAsXG4gICAgbWluSGVpZ2h0OiAyMCxcbiAgICBtaW5XaWR0aDogMjAsXG4gICAgbWFyZ2luUmlnaHQ6IC0xNixcbiAgICBjb2xvcjogaXNDbG9zZWQgPyB0aGVtZS5wYWxldHRlLnByaW1hcnlbNF0gOiB0aGVtZS5wYWxldHRlLm5ldXRyYWxbOF0sXG4gICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5uZXV0cmFsWzBdLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogdG9wVG9nZ2xlID8gJzIwcHgnIDogJzUwJScsXG4gICAgekluZGV4OiB0aGVtZS56SW5kZXguU2Vjb25kYXJ5TmF2QWN0aXZlSXRlbSxcbiAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MCUpJyxcbiAgICAnJjpmb2N1cyc6IHtcbiAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwJSknXG4gICAgfSxcbiAgICAnJjphY3RpdmUsICY6aG92ZXInOiB7XG4gICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLnByaW1hcnlbMV0sXG4gICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5wcmltYXJ5WzRdLFxuICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtNTAlKSdcbiAgICB9XG4gIH0pLFxuICBnZXRPdmVycmlkZXMoT3ZlcnJpZGFibGUuQ29sbGFwc2libGVUb2dnbGUuVG9nZ2xlQnV0dG9uKVxuKVxuXG5leHBvcnQgdHlwZSBDb2xsYXBzaWJsZVRvZ2dsZVByb3BzID0ge1xuICBpZDogc3RyaW5nXG4gIGlzQ2xvc2VkPzogYm9vbGVhblxuICAnZGF0YS1pbnN0cnVtZW50YXRpb24nPzogc3RyaW5nXG4gIG9uQ2xpY2s6IChcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTERpdkVsZW1lbnQ+IHwgU3ludGhldGljRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+XG4gICkgPT4gdm9pZFxuICBvcGVuTGVmdD86IGJvb2xlYW5cbiAgb3BlblJpZ2h0PzogYm9vbGVhblxuICB0b3BUb2dnbGU/OiBib29sZWFuXG4gIGhpZGRlbkxhYmVsPzogc3RyaW5nXG59XG5cbkNvbGxhcHNpYmxlVG9nZ2xlLmRlZmF1bHRQcm9wcyA9IHtcbiAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJzogJ2NvbGxhcHNpYmxldG9nZ2xlJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2xsYXBzaWJsZVRvZ2dsZSh7XG4gIGlkLFxuICAnZGF0YS1pbnN0cnVtZW50YXRpb24nOiBkYXRhSW5zdHJ1bWVudGF0aW9uLFxuICBpc0Nsb3NlZCxcbiAgaGlkZGVuTGFiZWwsXG4gIG9uQ2xpY2ssXG4gIG9wZW5MZWZ0LFxuICB0b3BUb2dnbGUsXG4gIG9wZW5SaWdodFxufTogQ29sbGFwc2libGVUb2dnbGVQcm9wcykge1xuICBjb25zdCBhcnJvd0ljb252NSA9IGlzQ2xvc2VkID8gKFxuICAgIG9wZW5SaWdodCA/IChcbiAgICAgIDxJY29uLlNtYWxsLkFycm93TGVmdCAvPlxuICAgICkgOiAoXG4gICAgICA8SWNvbi5TbWFsbC5BcnJvd1JpZ2h0IC8+XG4gICAgKVxuICApIDogb3BlblJpZ2h0ID8gKFxuICAgIDxJY29uLlNtYWxsLkFycm93UmlnaHQgLz5cbiAgKSA6IChcbiAgICA8SWNvbi5TbWFsbC5BcnJvd0xlZnQgLz5cbiAgKVxuXG4gIGNvbnN0IGFycm93SWNvbnY0ID0gaXNDbG9zZWQgPyAoXG4gICAgb3BlbkxlZnQgPyAoXG4gICAgICA8SWNvbi5TbWFsbC5BcnJvd0xlZnQgLz5cbiAgICApIDogKFxuICAgICAgPEljb24uU21hbGwuQXJyb3dSaWdodCAvPlxuICAgIClcbiAgKSA6IG9wZW5MZWZ0ID8gKFxuICAgIDxJY29uLlNtYWxsLkFycm93UmlnaHQgLz5cbiAgKSA6IChcbiAgICA8SWNvbi5TbWFsbC5BcnJvd0xlZnQgLz5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPEhpZ2hsaWdodFxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIG9wZW5MZWZ0PXtvcGVuTGVmdH1cbiAgICAgIG9wZW5SaWdodD17b3BlblJpZ2h0fVxuICAgICAgZGF0YS1pbnN0cnVtZW50YXRpb249e2Ake2RhdGFJbnN0cnVtZW50YXRpb259LWhpZ2hsaWdodGB9XG4gICAgPlxuICAgICAgPFRvZ2dsZUJ1dHRvblxuICAgICAgICBpY29uXG4gICAgICAgIGRhdGEtaW5zdHJ1bWVudGF0aW9uPXtkYXRhSW5zdHJ1bWVudGF0aW9ufVxuICAgICAgICBpc0Nsb3NlZD17aXNDbG9zZWR9XG4gICAgICAgIGNpcmNsZVxuICAgICAgICBzbWFsbFxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBjbGFzc05hbWU9e0hJR0hMSUdIVF9DTEFTU05BTUV9XG4gICAgICAgIGlkPXtpZH1cbiAgICAgICAgdG9wVG9nZ2xlPXt0b3BUb2dnbGV9XG4gICAgICA+XG4gICAgICAgIHtvcGVuTGVmdCA/IGFycm93SWNvbnY0IDogYXJyb3dJY29udjV9XG4gICAgICAgIHtoaWRkZW5MYWJlbCAmJiA8VmlzdWFsbHlIaWRkZW4+e2hpZGRlbkxhYmVsfTwvVmlzdWFsbHlIaWRkZW4+fVxuICAgICAgPC9Ub2dnbGVCdXR0b24+XG4gICAgPC9IaWdobGlnaHQ+XG4gIClcbn1cbiJdfQ== */");
55
57
  var ToggleButton = ( /*#__PURE__*/0, _base["default"])(_Button["default"], process.env.NODE_ENV === "production" ? {
56
58
  shouldForwardProp: function shouldForwardProp(prop) {
57
- return prop !== 'isClosed';
59
+ return !['isClosed', 'topToggle'].includes(String(prop));
58
60
  },
59
61
  target: "ezxmtq90"
60
62
  } : {
61
63
  shouldForwardProp: function shouldForwardProp(prop) {
62
- return prop !== 'isClosed';
64
+ return !['isClosed', 'topToggle'].includes(String(prop));
63
65
  },
64
66
  target: "ezxmtq90",
65
67
  label: "ToggleButton"
66
68
  })(function (_ref2) {
67
69
  var isClosed = _ref2.isClosed,
68
- theme = _ref2.theme;
70
+ theme = _ref2.theme,
71
+ topToggle = _ref2.topToggle;
69
72
  return {
70
73
  boxShadow: '6px 0px 8px -6px rgba(159, 173, 185, 0.7)',
71
74
  height: 20,
@@ -76,7 +79,8 @@ var ToggleButton = ( /*#__PURE__*/0, _base["default"])(_Button["default"], proce
76
79
  color: isClosed ? theme.palette.primary[4] : theme.palette.neutral[8],
77
80
  background: theme.palette.neutral[0],
78
81
  position: 'absolute',
79
- top: '50%',
82
+ top: topToggle ? '20px' : '50%',
83
+ zIndex: theme.zIndex.SecondaryNavActiveItem,
80
84
  transform: 'translateX(-50%)',
81
85
  '&:focus': {
82
86
  outline: 'none',
@@ -89,7 +93,7 @@ var ToggleButton = ( /*#__PURE__*/0, _base["default"])(_Button["default"], proce
89
93
  transform: 'translateX(-50%)'
90
94
  }
91
95
  };
92
- }, (0, _ThemeProvider.getOverrides)(_ThemeProvider.Overridable.CollapsibleToggle.ToggleButton), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9Db2xsYXBzaWJsZVRvZ2dsZS9Db2xsYXBzaWJsZVRvZ2dsZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0JxQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvQ29sbGFwc2libGVUb2dnbGUvQ29sbGFwc2libGVUb2dnbGUudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTeW50aGV0aWNFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL0J1dHRvbidcbmltcG9ydCBJY29uIGZyb20gJy4uL0ljb24nXG5pbXBvcnQgeyBnZXRPdmVycmlkZXMsIE92ZXJyaWRhYmxlIH0gZnJvbSAnLi4vVGhlbWVQcm92aWRlcidcbmltcG9ydCB7IEhJR0hMSUdIVF9DTEFTU05BTUUgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCBWaXN1YWxseUhpZGRlbiBmcm9tICcuLi9WaXN1YWxseUhpZGRlbidcblxuY29uc3QgSGlnaGxpZ2h0ID0gc3R5bGVkKCdkaXYnKTx7IG9wZW5MZWZ0PzogYm9vbGVhbiB9PihcbiAgKHsgdGhlbWUsIG9wZW5MZWZ0IH0pID0+ICh7XG4gICAgd2lkdGg6IDEsXG4gICAgbWluV2lkdGg6IDEsXG4gICAgbWluSGVpZ2h0OiAnMTAwJScsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgdG9wOiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiBvcGVuTGVmdCA/IDEgOiAtMSxcbiAgICB6SW5kZXg6IHRoZW1lLnpJbmRleC5TZWNvbmRhcnlOYXZBY3RpdmVJdGVtLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYmFja2dyb3VuZDogJ25vbmUnLFxuICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICBbYCYgIC4ke0hJR0hMSUdIVF9DTEFTU05BTUV9YF06IHtcbiAgICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLnByaW1hcnlbMV0sXG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLnByaW1hcnlbNF1cbiAgICAgIH1cbiAgICB9XG4gIH0pLFxuICBnZXRPdmVycmlkZXMoT3ZlcnJpZGFibGUuQ29sbGFwc2libGVUb2dnbGUuUm9vdClcbilcblxuY29uc3QgVG9nZ2xlQnV0dG9uID0gc3R5bGVkKEJ1dHRvbiwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiBwcm9wICE9PSAnaXNDbG9zZWQnXG59KTx7IGlzQ2xvc2VkPzogYm9vbGVhbiB9PihcbiAgKHsgaXNDbG9zZWQsIHRoZW1lIH0pID0+ICh7XG4gICAgYm94U2hhZG93OiAnNnB4IDBweCA4cHggLTZweCByZ2JhKDE1OSwgMTczLCAxODUsIDAuNyknLFxuICAgIGhlaWdodDogMjAsXG4gICAgd2lkdGg6IDIwLFxuICAgIG1pbkhlaWdodDogMjAsXG4gICAgbWluV2lkdGg6IDIwLFxuICAgIG1hcmdpblJpZ2h0OiAtMTYsXG4gICAgY29sb3I6IGlzQ2xvc2VkID8gdGhlbWUucGFsZXR0ZS5wcmltYXJ5WzRdIDogdGhlbWUucGFsZXR0ZS5uZXV0cmFsWzhdLFxuICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUubmV1dHJhbFswXSxcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6ICc1MCUnLFxuICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwJSknLFxuICAgICcmOmZvY3VzJzoge1xuICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtNTAlKSdcbiAgICB9LFxuICAgICcmOmFjdGl2ZSwgJjpob3Zlcic6IHtcbiAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUucHJpbWFyeVsxXSxcbiAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLnByaW1hcnlbNF0sXG4gICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MCUpJ1xuICAgIH1cbiAgfSksXG4gIGdldE92ZXJyaWRlcyhPdmVycmlkYWJsZS5Db2xsYXBzaWJsZVRvZ2dsZS5Ub2dnbGVCdXR0b24pXG4pXG5cbmV4cG9ydCB0eXBlIENvbGxhcHNpYmxlVG9nZ2xlUHJvcHMgPSB7XG4gIGlkOiBzdHJpbmdcbiAgaXNDbG9zZWQ/OiBib29sZWFuXG4gICdkYXRhLWluc3RydW1lbnRhdGlvbic/OiBzdHJpbmdcbiAgb25DbGljazogKFxuICAgIGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MRGl2RWxlbWVudD4gfCBTeW50aGV0aWNFdmVudDxIVE1MQnV0dG9uRWxlbWVudD5cbiAgKSA9PiB2b2lkXG4gIG9wZW5MZWZ0PzogYm9vbGVhblxuICBoaWRkZW5MYWJlbD86IHN0cmluZ1xufVxuXG5Db2xsYXBzaWJsZVRvZ2dsZS5kZWZhdWx0UHJvcHMgPSB7XG4gICdkYXRhLWluc3RydW1lbnRhdGlvbic6ICdjb2xsYXBzaWJsZXRvZ2dsZSdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29sbGFwc2libGVUb2dnbGUoe1xuICBpZCxcbiAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJzogZGF0YUluc3RydW1lbnRhdGlvbixcbiAgaXNDbG9zZWQsXG4gIGhpZGRlbkxhYmVsLFxuICBvbkNsaWNrLFxuICBvcGVuTGVmdFxufTogQ29sbGFwc2libGVUb2dnbGVQcm9wcykge1xuICBjb25zdCBhcnJvd0ljb24gPSBpc0Nsb3NlZCA/IChcbiAgICBvcGVuTGVmdCA/IChcbiAgICAgIDxJY29uLlNtYWxsLkFycm93TGVmdCAvPlxuICAgICkgOiAoXG4gICAgICA8SWNvbi5TbWFsbC5BcnJvd1JpZ2h0IC8+XG4gICAgKVxuICApIDogb3BlbkxlZnQgPyAoXG4gICAgPEljb24uU21hbGwuQXJyb3dSaWdodCAvPlxuICApIDogKFxuICAgIDxJY29uLlNtYWxsLkFycm93TGVmdCAvPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8SGlnaGxpZ2h0XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgb3BlbkxlZnQ9e29wZW5MZWZ0fVxuICAgICAgZGF0YS1pbnN0cnVtZW50YXRpb249e2Ake2RhdGFJbnN0cnVtZW50YXRpb259LWhpZ2hsaWdodGB9XG4gICAgPlxuICAgICAgPFRvZ2dsZUJ1dHRvblxuICAgICAgICBpY29uXG4gICAgICAgIGRhdGEtaW5zdHJ1bWVudGF0aW9uPXtkYXRhSW5zdHJ1bWVudGF0aW9ufVxuICAgICAgICBpc0Nsb3NlZD17aXNDbG9zZWR9XG4gICAgICAgIGNpcmNsZVxuICAgICAgICBzbWFsbFxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBjbGFzc05hbWU9e0hJR0hMSUdIVF9DTEFTU05BTUV9XG4gICAgICAgIGlkPXtpZH1cbiAgICAgID5cbiAgICAgICAge2Fycm93SWNvbn1cbiAgICAgICAge2hpZGRlbkxhYmVsICYmIDxWaXN1YWxseUhpZGRlbj57aGlkZGVuTGFiZWx9PC9WaXN1YWxseUhpZGRlbj59XG4gICAgICA8L1RvZ2dsZUJ1dHRvbj5cbiAgICA8L0hpZ2hsaWdodD5cbiAgKVxufVxuIl19 */");
96
+ }, (0, _ThemeProvider.getOverrides)(_ThemeProvider.Overridable.CollapsibleToggle.ToggleButton), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9Db2xsYXBzaWJsZVRvZ2dsZS9Db2xsYXBzaWJsZVRvZ2dsZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0NxQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvQ29sbGFwc2libGVUb2dnbGUvQ29sbGFwc2libGVUb2dnbGUudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTeW50aGV0aWNFdmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uL0J1dHRvbidcbmltcG9ydCBJY29uIGZyb20gJy4uL0ljb24nXG5pbXBvcnQgeyBnZXRPdmVycmlkZXMsIE92ZXJyaWRhYmxlIH0gZnJvbSAnLi4vVGhlbWVQcm92aWRlcidcbmltcG9ydCB7IEhJR0hMSUdIVF9DTEFTU05BTUUgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCBWaXN1YWxseUhpZGRlbiBmcm9tICcuLi9WaXN1YWxseUhpZGRlbidcblxuLy8gb3BlbkxlZnQgaXMgdXNlZCBmb3IgdjRcbmNvbnN0IEhpZ2hsaWdodCA9IHN0eWxlZCgnZGl2Jyk8eyBvcGVuTGVmdD86IGJvb2xlYW47IG9wZW5SaWdodD86IGJvb2xlYW4gfT4oXG4gICh7IHRoZW1lLCBvcGVuTGVmdCwgb3BlblJpZ2h0IH0pID0+ICh7XG4gICAgd2lkdGg6IDEsXG4gICAgbWluV2lkdGg6IDEsXG4gICAgbWluSGVpZ2h0OiAnMTAwJScsXG4gICAgcG9zaXRpb246IG9wZW5SaWdodCA/ICdhYnNvbHV0ZScgOiAncmVsYXRpdmUnLFxuICAgIHRvcDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogb3BlbkxlZnQgPyAxIDogLTEsXG4gICAgekluZGV4OiB0aGVtZS56SW5kZXguU2Vjb25kYXJ5TmF2QWN0aXZlSXRlbSxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgW2AmICAuJHtISUdITElHSFRfQ0xBU1NOQU1FfWBdOiB7XG4gICAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5wcmltYXJ5WzFdLFxuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5wcmltYXJ5WzRdXG4gICAgICB9XG4gICAgfVxuICB9KSxcbiAgZ2V0T3ZlcnJpZGVzKE92ZXJyaWRhYmxlLkNvbGxhcHNpYmxlVG9nZ2xlLlJvb3QpXG4pXG5cbmNvbnN0IFRvZ2dsZUJ1dHRvbiA9IHN0eWxlZChCdXR0b24sIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT4gIVsnaXNDbG9zZWQnLCAndG9wVG9nZ2xlJ10uaW5jbHVkZXMoU3RyaW5nKHByb3ApKVxufSk8e1xuICBpc0Nsb3NlZD86IGJvb2xlYW5cbiAgdG9wVG9nZ2xlPzogYm9vbGVhblxufT4oXG4gICh7IGlzQ2xvc2VkLCB0aGVtZSwgdG9wVG9nZ2xlIH0pID0+ICh7XG4gICAgYm94U2hhZG93OiAnNnB4IDBweCA4cHggLTZweCByZ2JhKDE1OSwgMTczLCAxODUsIDAuNyknLFxuICAgIGhlaWdodDogMjAsXG4gICAgd2lkdGg6IDIwLFxuICAgIG1pbkhlaWdodDogMjAsXG4gICAgbWluV2lkdGg6IDIwLFxuICAgIG1hcmdpblJpZ2h0OiAtMTYsXG4gICAgY29sb3I6IGlzQ2xvc2VkID8gdGhlbWUucGFsZXR0ZS5wcmltYXJ5WzRdIDogdGhlbWUucGFsZXR0ZS5uZXV0cmFsWzhdLFxuICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUubmV1dHJhbFswXSxcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6IHRvcFRvZ2dsZSA/ICcyMHB4JyA6ICc1MCUnLFxuICAgIHpJbmRleDogdGhlbWUuekluZGV4LlNlY29uZGFyeU5hdkFjdGl2ZUl0ZW0sXG4gICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtNTAlKScsXG4gICAgJyY6Zm9jdXMnOiB7XG4gICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MCUpJ1xuICAgIH0sXG4gICAgJyY6YWN0aXZlLCAmOmhvdmVyJzoge1xuICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5wcmltYXJ5WzFdLFxuICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUucHJpbWFyeVs0XSxcbiAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwJSknXG4gICAgfVxuICB9KSxcbiAgZ2V0T3ZlcnJpZGVzKE92ZXJyaWRhYmxlLkNvbGxhcHNpYmxlVG9nZ2xlLlRvZ2dsZUJ1dHRvbilcbilcblxuZXhwb3J0IHR5cGUgQ29sbGFwc2libGVUb2dnbGVQcm9wcyA9IHtcbiAgaWQ6IHN0cmluZ1xuICBpc0Nsb3NlZD86IGJvb2xlYW5cbiAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJz86IHN0cmluZ1xuICBvbkNsaWNrOiAoXG4gICAgZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxEaXZFbGVtZW50PiB8IFN5bnRoZXRpY0V2ZW50PEhUTUxCdXR0b25FbGVtZW50PlxuICApID0+IHZvaWRcbiAgb3BlbkxlZnQ/OiBib29sZWFuXG4gIG9wZW5SaWdodD86IGJvb2xlYW5cbiAgdG9wVG9nZ2xlPzogYm9vbGVhblxuICBoaWRkZW5MYWJlbD86IHN0cmluZ1xufVxuXG5Db2xsYXBzaWJsZVRvZ2dsZS5kZWZhdWx0UHJvcHMgPSB7XG4gICdkYXRhLWluc3RydW1lbnRhdGlvbic6ICdjb2xsYXBzaWJsZXRvZ2dsZSdcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQ29sbGFwc2libGVUb2dnbGUoe1xuICBpZCxcbiAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJzogZGF0YUluc3RydW1lbnRhdGlvbixcbiAgaXNDbG9zZWQsXG4gIGhpZGRlbkxhYmVsLFxuICBvbkNsaWNrLFxuICBvcGVuTGVmdCxcbiAgdG9wVG9nZ2xlLFxuICBvcGVuUmlnaHRcbn06IENvbGxhcHNpYmxlVG9nZ2xlUHJvcHMpIHtcbiAgY29uc3QgYXJyb3dJY29udjUgPSBpc0Nsb3NlZCA/IChcbiAgICBvcGVuUmlnaHQgPyAoXG4gICAgICA8SWNvbi5TbWFsbC5BcnJvd0xlZnQgLz5cbiAgICApIDogKFxuICAgICAgPEljb24uU21hbGwuQXJyb3dSaWdodCAvPlxuICAgIClcbiAgKSA6IG9wZW5SaWdodCA/IChcbiAgICA8SWNvbi5TbWFsbC5BcnJvd1JpZ2h0IC8+XG4gICkgOiAoXG4gICAgPEljb24uU21hbGwuQXJyb3dMZWZ0IC8+XG4gIClcblxuICBjb25zdCBhcnJvd0ljb252NCA9IGlzQ2xvc2VkID8gKFxuICAgIG9wZW5MZWZ0ID8gKFxuICAgICAgPEljb24uU21hbGwuQXJyb3dMZWZ0IC8+XG4gICAgKSA6IChcbiAgICAgIDxJY29uLlNtYWxsLkFycm93UmlnaHQgLz5cbiAgICApXG4gICkgOiBvcGVuTGVmdCA/IChcbiAgICA8SWNvbi5TbWFsbC5BcnJvd1JpZ2h0IC8+XG4gICkgOiAoXG4gICAgPEljb24uU21hbGwuQXJyb3dMZWZ0IC8+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxIaWdobGlnaHRcbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBvcGVuTGVmdD17b3BlbkxlZnR9XG4gICAgICBvcGVuUmlnaHQ9e29wZW5SaWdodH1cbiAgICAgIGRhdGEtaW5zdHJ1bWVudGF0aW9uPXtgJHtkYXRhSW5zdHJ1bWVudGF0aW9ufS1oaWdobGlnaHRgfVxuICAgID5cbiAgICAgIDxUb2dnbGVCdXR0b25cbiAgICAgICAgaWNvblxuICAgICAgICBkYXRhLWluc3RydW1lbnRhdGlvbj17ZGF0YUluc3RydW1lbnRhdGlvbn1cbiAgICAgICAgaXNDbG9zZWQ9e2lzQ2xvc2VkfVxuICAgICAgICBjaXJjbGVcbiAgICAgICAgc21hbGxcbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgY2xhc3NOYW1lPXtISUdITElHSFRfQ0xBU1NOQU1FfVxuICAgICAgICBpZD17aWR9XG4gICAgICAgIHRvcFRvZ2dsZT17dG9wVG9nZ2xlfVxuICAgICAgPlxuICAgICAgICB7b3BlbkxlZnQgPyBhcnJvd0ljb252NCA6IGFycm93SWNvbnY1fVxuICAgICAgICB7aGlkZGVuTGFiZWwgJiYgPFZpc3VhbGx5SGlkZGVuPntoaWRkZW5MYWJlbH08L1Zpc3VhbGx5SGlkZGVuPn1cbiAgICAgIDwvVG9nZ2xlQnV0dG9uPlxuICAgIDwvSGlnaGxpZ2h0PlxuICApXG59XG4iXX0= */");
93
97
  CollapsibleToggle.defaultProps = {
94
98
  'data-instrumentation': 'collapsibletoggle'
95
99
  };
@@ -100,8 +104,19 @@ function CollapsibleToggle(_ref3) {
100
104
  isClosed = _ref3.isClosed,
101
105
  hiddenLabel = _ref3.hiddenLabel,
102
106
  onClick = _ref3.onClick,
103
- openLeft = _ref3.openLeft;
104
- var arrowIcon = isClosed ? openLeft ? (0, _jsxRuntime.jsx)(_Icon["default"].Small.ArrowLeft, {
107
+ openLeft = _ref3.openLeft,
108
+ topToggle = _ref3.topToggle,
109
+ openRight = _ref3.openRight;
110
+ var arrowIconv5 = isClosed ? openRight ? (0, _jsxRuntime.jsx)(_Icon["default"].Small.ArrowLeft, {
111
+ "data-gs": gs("src", "collapsibletoggle", "collapsibletoggle.tsx", "collapsible-toggle", "icon-small-arrow-left")
112
+ }) : (0, _jsxRuntime.jsx)(_Icon["default"].Small.ArrowRight, {
113
+ "data-gs": gs("src", "collapsibletoggle", "collapsibletoggle.tsx", "collapsible-toggle", "icon-small-arrow-right")
114
+ }) : openRight ? (0, _jsxRuntime.jsx)(_Icon["default"].Small.ArrowRight, {
115
+ "data-gs": gs("src", "collapsibletoggle", "collapsibletoggle.tsx", "collapsible-toggle", "icon-small-arrow-right")
116
+ }) : (0, _jsxRuntime.jsx)(_Icon["default"].Small.ArrowLeft, {
117
+ "data-gs": gs("src", "collapsibletoggle", "collapsibletoggle.tsx", "collapsible-toggle", "icon-small-arrow-left")
118
+ });
119
+ var arrowIconv4 = isClosed ? openLeft ? (0, _jsxRuntime.jsx)(_Icon["default"].Small.ArrowLeft, {
105
120
  "data-gs": gs("src", "collapsibletoggle", "collapsibletoggle.tsx", "collapsible-toggle", "icon-small-arrow-left")
106
121
  }) : (0, _jsxRuntime.jsx)(_Icon["default"].Small.ArrowRight, {
107
122
  "data-gs": gs("src", "collapsibletoggle", "collapsibletoggle.tsx", "collapsible-toggle", "icon-small-arrow-right")
@@ -114,6 +129,7 @@ function CollapsibleToggle(_ref3) {
114
129
  "data-gs": gs("src", "collapsibletoggle", "collapsibletoggle.tsx", "collapsible-toggle", "highlight"),
115
130
  onClick: onClick,
116
131
  openLeft: openLeft,
132
+ openRight: openRight,
117
133
  "data-instrumentation": "".concat(dataInstrumentation, "-highlight"),
118
134
  children: (0, _jsxRuntime.jsxs)(ToggleButton, {
119
135
  "data-gs": gs("src", "collapsibletoggle", "collapsibletoggle.tsx", "collapsible-toggle", "highlight", "toggle-button"),
@@ -125,7 +141,8 @@ function CollapsibleToggle(_ref3) {
125
141
  onClick: onClick,
126
142
  className: _constants.HIGHLIGHT_CLASSNAME,
127
143
  id: id,
128
- children: [arrowIcon, hiddenLabel && (0, _jsxRuntime.jsx)(_VisuallyHidden["default"], {
144
+ topToggle: topToggle,
145
+ children: [openLeft ? arrowIconv4 : arrowIconv5, hiddenLabel && (0, _jsxRuntime.jsx)(_VisuallyHidden["default"], {
129
146
  "data-gs-c": gsC(hiddenLabel),
130
147
  "data-gs": gs("src", "collapsibletoggle", "collapsibletoggle.tsx", "collapsible-toggle", "highlight", "toggle-button", "visually-hidden"),
131
148
  children: hiddenLabel
@@ -6,7 +6,7 @@ import * as Elements from './elements';
6
6
  import * as Renderers from './renderers';
7
7
  import { CollapsibleCell } from './components';
8
8
  import * as dataGridUtils from './utils';
9
- import type { BasicColumnMappedProps } from './components/BasicColumn';
9
+ import type { BasicColumnMappedProps, BasicColumnProps } from './components/BasicColumn';
10
10
  import type { LocaleStrings } from './constants';
11
11
  export declare type onFilterArguments = {
12
12
  filters: {
@@ -40,6 +40,9 @@ export declare type DataGridProps = {
40
40
  contextMenuRenderer?: (contextMenuRendererArguments: contextMenuRendererArguments) => React.ReactNode;
41
41
  /** Called when a column is filtered or sorted. */
42
42
  onFilter: (onFilterArguments: onFilterArguments) => void;
43
+ /** Called when a column is resized by the user. Passing this in enables
44
+ * resize handles on the right edge of the header cells. */
45
+ onResize?: (newSizes: number[]) => void;
43
46
  /** Called when the row selection changes. Receives array of indices. */
44
47
  onSelect: (indexes: number[]) => void;
45
48
  /** Called when the row is double clicked. Receives index. */
@@ -51,8 +54,8 @@ export declare type DataGridProps = {
51
54
  /** Count of rows that have already been loaded. */
52
55
  rowCount: number;
53
56
  /** Required by react-virtualized table. */
54
- rowGetter: ({ index: number }: {
55
- index: any;
57
+ rowGetter: (props: {
58
+ index: number;
56
59
  }) => any;
57
60
  /** Whether rows can be selected (and how many). */
58
61
  selectable?: SelectableType | false;
@@ -99,7 +102,7 @@ declare type HandleFilterArguments = {
99
102
  *
100
103
  */
101
104
  declare class DataGrid extends Component<DataGridProps, DataGridState> {
102
- static Column: import("lodash").CurriedFunction2<import("./components/BasicColumn").BasicColumnProps, BasicColumnMappedProps, import("@emotion/react/jsx-runtime").JSX.Element | null>;
105
+ static Column: import("lodash").CurriedFunction2<BasicColumnProps, BasicColumnMappedProps, import("@emotion/react/jsx-runtime").JSX.Element | null>;
103
106
  static SortDirection: import("react-virtualized/dist/es/Table").SortDirectionStatic;
104
107
  static Elements: typeof Elements;
105
108
  static InputCell: any;
@@ -107,6 +110,7 @@ declare class DataGrid extends Component<DataGridProps, DataGridState> {
107
110
  static Renderers: typeof Renderers;
108
111
  static SINGLE_SELECT: SelectableType;
109
112
  static MULTI_SELECT: SelectableType;
113
+ static MIN_COL_WIDTH: number;
110
114
  static utils: typeof dataGridUtils;
111
115
  static defaultProps: {
112
116
  loadMoreRows: (...args: any[]) => void;
@@ -122,6 +126,8 @@ declare class DataGrid extends Component<DataGridProps, DataGridState> {
122
126
  static displayName: string;
123
127
  state: DataGridState;
124
128
  infiniteTable: React.RefObject<InfiniteLoader>;
129
+ totalWidth: number;
130
+ columnWidthPercents: number[];
125
131
  columnTransformer: (columns: React.ReactElement<any>[], rowData: any, rowIndex: number) => React.ReactNode[] | null | undefined;
126
132
  select: ({ index, contiguous }: {
127
133
  index: number;
@@ -145,6 +151,10 @@ declare class DataGrid extends Component<DataGridProps, DataGridState> {
145
151
  event: React.MouseEvent<any>;
146
152
  index: number;
147
153
  }) => void>;
154
+ handleResize: ({ x, index }: {
155
+ x: number;
156
+ index: number;
157
+ }) => void;
148
158
  mapChildren: () => React.ReactNode[];
149
159
  isRowLoaded: ({ index }: Index) => boolean;
150
160
  isContextMenuVisible: (index: number) => boolean | null;
@@ -127,6 +127,10 @@ var DataGrid = /*#__PURE__*/function (_Component) {
127
127
 
128
128
  _defineProperty(_assertThisInitialized(_this), "infiniteTable", /*#__PURE__*/_react2["default"].createRef());
129
129
 
130
+ _defineProperty(_assertThisInitialized(_this), "totalWidth", 0);
131
+
132
+ _defineProperty(_assertThisInitialized(_this), "columnWidthPercents", []);
133
+
130
134
  _defineProperty(_assertThisInitialized(_this), "columnTransformer", void 0);
131
135
 
132
136
  _defineProperty(_assertThisInitialized(_this), "select", function (_ref) {
@@ -348,6 +352,45 @@ var DataGrid = /*#__PURE__*/function (_Component) {
348
352
  trailing: false
349
353
  }));
350
354
 
355
+ _defineProperty(_assertThisInitialized(_this), "handleResize", function (_ref6) {
356
+ var x = _ref6.x,
357
+ index = _ref6.index;
358
+
359
+ if (_this.columnWidthPercents.length > 0 && _this.totalWidth) {
360
+ var _this$props$scrollWid;
361
+
362
+ var prevWidths = _this.columnWidthPercents;
363
+
364
+ var newWidths = _toConsumableArray(prevWidths);
365
+
366
+ var parentWidth = (_this$props$scrollWid = _this.props.scrollWidth) !== null && _this$props$scrollWid !== void 0 ? _this$props$scrollWid : _this.props.width; // limit next index from going beyond bounds
367
+
368
+ var nextIndex = Math.min(index + 1, prevWidths.length - 1);
369
+ var percentChange = x / _this.totalWidth;
370
+
371
+ if (_this.props.scrollWidth) {
372
+ // if table is scrollable, we can grow the column without
373
+ // shrinking the others
374
+ var safePercentChange = (prevWidths[index] + percentChange) * parentWidth < DataGrid.MIN_COL_WIDTH ? 0 : percentChange;
375
+ newWidths[index] = prevWidths[index] + safePercentChange;
376
+ } else {
377
+ // if the table is not scrollable, ensure all columns fit by
378
+ // adjusting the current column and the one after it
379
+ var _safePercentChange = (prevWidths[index] + percentChange) * parentWidth < DataGrid.MIN_COL_WIDTH || (prevWidths[nextIndex] - percentChange) * parentWidth < DataGrid.MIN_COL_WIDTH ? 0 : percentChange;
380
+
381
+ newWidths[index] = prevWidths[index] + _safePercentChange;
382
+ newWidths[nextIndex] = prevWidths[nextIndex] - _safePercentChange;
383
+ }
384
+
385
+ if (_this.props.onResize) {
386
+ _this.props.onResize( // multiply by width prop to get correct percentage
387
+ newWidths.map(function (width) {
388
+ return Math.round(width * parentWidth);
389
+ }));
390
+ }
391
+ }
392
+ });
393
+
351
394
  _defineProperty(_assertThisInitialized(_this), "mapChildren", function () {
352
395
  var IsArray = function IsArray(children) {
353
396
  return Array.isArray(children);
@@ -376,10 +419,10 @@ var DataGrid = /*#__PURE__*/function (_Component) {
376
419
 
377
420
  _this.handleFilter(_objectSpread({}, sortArgs));
378
421
  },
379
- onFilter: function onFilter(_ref6) {
380
- var dataKey = _ref6.dataKey,
381
- value = _ref6.value,
382
- operator = _ref6.operator;
422
+ onFilter: function onFilter(_ref7) {
423
+ var dataKey = _ref7.dataKey,
424
+ value = _ref7.value,
425
+ operator = _ref7.operator;
383
426
 
384
427
  _this.setSelectedRows([]);
385
428
 
@@ -389,13 +432,24 @@ var DataGrid = /*#__PURE__*/function (_Component) {
389
432
  operator: operator
390
433
  } : value)
391
434
  });
392
- }
435
+ },
436
+ onResize: // the presence of `onResize` will show drag handles so don't set it
437
+ // if no prop is passed in or for the last column if the table isn't
438
+ // scrollable
439
+ _this.props.onResize && (!_this.props.scrollWidth && index !== validChildren.length - 1 || _this.props.scrollWidth) ? function (_ref8) {
440
+ var x = _ref8.x;
441
+
442
+ _this.handleResize({
443
+ x: x,
444
+ index: index
445
+ });
446
+ } : undefined
393
447
  });
394
448
  });
395
449
  });
396
450
 
397
- _defineProperty(_assertThisInitialized(_this), "isRowLoaded", function (_ref7) {
398
- var index = _ref7.index;
451
+ _defineProperty(_assertThisInitialized(_this), "isRowLoaded", function (_ref9) {
452
+ var index = _ref9.index;
399
453
  var _this$props2 = _this.props,
400
454
  hasMoreRows = _this$props2.hasMoreRows,
401
455
  rowCount = _this$props2.rowCount;
@@ -432,9 +486,9 @@ var DataGrid = /*#__PURE__*/function (_Component) {
432
486
  return null;
433
487
  });
434
488
 
435
- _defineProperty(_assertThisInitialized(_this), "headerRowRenderer", function (_ref8) {
436
- var columns = _ref8.columns,
437
- style = _ref8.style;
489
+ _defineProperty(_assertThisInitialized(_this), "headerRowRenderer", function (_ref10) {
490
+ var columns = _ref10.columns,
491
+ style = _ref10.style;
438
492
  return (0, _jsxRuntime.jsx)(Elements.Row, {
439
493
  "data-gs-c": gsC(columns),
440
494
  "data-gs": gs("src", "datagrid", "datagrid.tsx", "data-grid", "elements-row"),
@@ -446,15 +500,15 @@ var DataGrid = /*#__PURE__*/function (_Component) {
446
500
  });
447
501
  });
448
502
 
449
- _defineProperty(_assertThisInitialized(_this), "rowRenderer", function (_ref9) {
450
- var key = _ref9.key,
451
- style = _ref9.style,
452
- index = _ref9.index,
453
- rowData = _ref9.rowData,
454
- columns = _ref9.columns,
455
- className = _ref9.className,
456
- onRowMouseOver = _ref9.onRowMouseOver,
457
- onRowMouseOut = _ref9.onRowMouseOut;
503
+ _defineProperty(_assertThisInitialized(_this), "rowRenderer", function (_ref11) {
504
+ var key = _ref11.key,
505
+ style = _ref11.style,
506
+ index = _ref11.index,
507
+ rowData = _ref11.rowData,
508
+ columns = _ref11.columns,
509
+ className = _ref11.className,
510
+ onRowMouseOver = _ref11.onRowMouseOver,
511
+ onRowMouseOut = _ref11.onRowMouseOut;
458
512
  return (0, _jsxRuntime.jsxs)(_components.FocusableRow, {
459
513
  "data-gs": gs("src", "datagrid", "datagrid.tsx", "data-grid", "focusable-row"),
460
514
  className: className,
@@ -562,6 +616,17 @@ var DataGrid = /*#__PURE__*/function (_Component) {
562
616
  width: child.props.width,
563
617
  flexGrow: child.props.flexGrow
564
618
  };
619
+ }); // Get the actual width of all the columns. This is independent from the
620
+ // width prop.
621
+
622
+ this.totalWidth = mappedChildren.reduce(function (total, child) {
623
+ return total + child.props.width;
624
+ }, 0); // Convert the widths to percents so we can map them back to the real table
625
+ // width later.
626
+
627
+ this.columnWidthPercents = mappedChildren.map(function (_ref12) {
628
+ var props = _ref12.props;
629
+ return props.width / _this2.totalWidth;
565
630
  });
566
631
 
567
632
  this.columnTransformer = function (columns, rowData, rowIndex) {
@@ -578,13 +643,13 @@ var DataGrid = /*#__PURE__*/function (_Component) {
578
643
  if (span > 1) {
579
644
  var followingColumns = spanData.slice(index, span); // find new width by adding current column width plus columns that are spanned over
580
645
 
581
- var _width = followingColumns.reduce(function (accumulator, _ref10) {
582
- var width = _ref10.width;
646
+ var _width = followingColumns.reduce(function (accumulator, _ref13) {
647
+ var width = _ref13.width;
583
648
  return accumulator + width;
584
649
  }, 0);
585
650
 
586
- var flexGrow = followingColumns.reduce(function (accumulator, _ref11) {
587
- var flexGrow = _ref11.flexGrow;
651
+ var flexGrow = followingColumns.reduce(function (accumulator, _ref14) {
652
+ var flexGrow = _ref14.flexGrow;
588
653
  return accumulator + flexGrow;
589
654
  }, 0);
590
655
  spannedColumns.push( /*#__PURE__*/_react2["default"].cloneElement(column, {
@@ -612,14 +677,14 @@ var DataGrid = /*#__PURE__*/function (_Component) {
612
677
  css: /*#__PURE__*/(0, _react.css)({
613
678
  width: width,
614
679
  height: height
615
- }, process.env.NODE_ENV === "production" ? "" : ";label:render;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRhR3JpZC9EYXRhR3JpZC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeWxCUSIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0YUdyaWQvRGF0YUdyaWQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7XG4gIEluZmluaXRlTG9hZGVyLFxuICBUYWJsZSxcbiAgU29ydERpcmVjdGlvbixcbiAgVGFibGVSb3dQcm9wc1xufSBmcm9tICdyZWFjdC12aXJ0dWFsaXplZCdcbmltcG9ydCB0eXBlIHtcbiAgU29ydERpcmVjdGlvblR5cGUsXG4gIFRhYmxlUHJvcHMsXG4gIEluZGV4UmFuZ2UsXG4gIEluZGV4LFxuICBSb3dNb3VzZUV2ZW50SGFuZGxlclBhcmFtc1xufSBmcm9tICdyZWFjdC12aXJ0dWFsaXplZCdcbmltcG9ydCAqIGFzIEVsZW1lbnRzIGZyb20gJy4vZWxlbWVudHMnXG5pbXBvcnQgKiBhcyBSZW5kZXJlcnMgZnJvbSAnLi9yZW5kZXJlcnMnXG5pbXBvcnQge1xuICBCYXNpY0NvbHVtbixcbiAgRm9jdXNhYmxlUm93LFxuICBJbnB1dENlbGwsXG4gIENvbGxhcHNpYmxlQ2VsbCxcbiAgU2Nyb2xsYWJsZVRhYmxlXG59IGZyb20gJy4vY29tcG9uZW50cydcbmltcG9ydCB7IENsb3NlV3JhcHBlciB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IGN1cnJ5IGZyb20gJ2xvZGFzaC5jdXJyeSdcbmltcG9ydCBpbmNsdWRlcyBmcm9tICdsb2Rhc2guaW5jbHVkZXMnXG5pbXBvcnQgbm9vcCBmcm9tICdsb2Rhc2gubm9vcCdcbmltcG9ydCByYW5nZSBmcm9tICdsb2Rhc2gucmFuZ2UnXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoLnRocm90dGxlJ1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnXG5pbXBvcnQgKiBhcyBkYXRhR3JpZFV0aWxzIGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEJhc2ljQ29sdW1uTWFwcGVkUHJvcHMgfSBmcm9tICcuL2NvbXBvbmVudHMvQmFzaWNDb2x1bW4nXG5pbXBvcnQgdHlwZSB7IExvY2FsZVN0cmluZ3MgfSBmcm9tICcuL2NvbnN0YW50cydcblxuZXhwb3J0IHR5cGUgb25GaWx0ZXJBcmd1bWVudHMgPSB7XG4gIGZpbHRlcnM6IHsgW2RhdGFLZXk6IHN0cmluZ106IGFueSB9XG4gIHNvcnRCeT86IHN0cmluZ1xuICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvblR5cGVcbn1cblxudHlwZSBhY3RpdmVDb250ZXh0TWVudVN0YXRlID0ge1xuICB0b3A6IG51bWJlclxuICBsZWZ0OiBudW1iZXJcbiAgaW5kZXg6IG51bWJlclxuICByb3dEYXRhOiBhbnlcbn1cblxudHlwZSBjb250ZXh0TWVudVJlbmRlcmVyQXJndW1lbnRzID0ge1xuICB0b3A/OiBudW1iZXJcbiAgbGVmdD86IG51bWJlclxuICBpbmRleD86IG51bWJlclxuICByb3dEYXRhPzogYW55XG4gIHNlbGVjdGVkUm93czogQXJyYXk8bnVtYmVyPlxuICBvbkNsb3NlOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFNlbGVjdGFibGVUeXBlID0gJ3NpbmdsZScgfCAnbXVsdGknXG5cbnR5cGUgQ29sdW1uRnVuY3Rpb24gPSAoYXJnczogQmFzaWNDb2x1bW5NYXBwZWRQcm9wcykgPT4gUmVhY3QuUmVhY3ROb2RlXG5cbmV4cG9ydCB0eXBlIERhdGFHcmlkUHJvcHMgPSB7XG4gIC8qKiBGdW5jdGlvbnMgdGhhdCBjcmVhdGUgcmVhY3QgdmlydHVhbGl6ZWQgQ29sdW1ucy4gRGVmYXVsdCBjb2x1bW4gaXMgZXhwb3NlZCBhcyBEYXRhR3JpZC5Db2x1bW4uICovXG4gIC8vIENhbiB0YWtlIGEgc2luZ2xlIGNvbHVtbiBvciBhbiBhcnJheSBvZiBjb2x1bW5zXG4gIGNoaWxkcmVuOiBDb2x1bW5GdW5jdGlvbiB8IEFycmF5PENvbHVtbkZ1bmN0aW9uPlxuICAvKiogSW5zdHJ1bWVudGF0aW9uICovXG4gICdkYXRhLWluc3RydW1lbnRhdGlvbic/OiBzdHJpbmdcbiAgLyoqIENhbGxlZCBkdXJpbmcgdGhlIG9uQ29udGV4dE1lbnUgZXZlbnQgb2YgZWFjaCByb3cuICovXG4gIGNvbnRleHRNZW51UmVuZGVyZXI/OiAoXG4gICAgY29udGV4dE1lbnVSZW5kZXJlckFyZ3VtZW50czogY29udGV4dE1lbnVSZW5kZXJlckFyZ3VtZW50c1xuICApID0+IFJlYWN0LlJlYWN0Tm9kZVxuICAvKiogQ2FsbGVkIHdoZW4gYSBjb2x1bW4gaXMgZmlsdGVyZWQgb3Igc29ydGVkLiAqL1xuICBvbkZpbHRlcjogKG9uRmlsdGVyQXJndW1lbnRzOiBvbkZpbHRlckFyZ3VtZW50cykgPT4gdm9pZFxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHJvdyBzZWxlY3Rpb24gY2hhbmdlcy4gUmVjZWl2ZXMgYXJyYXkgb2YgaW5kaWNlcy4gKi9cbiAgb25TZWxlY3Q6IChpbmRleGVzOiBudW1iZXJbXSkgPT4gdm9pZFxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHJvdyBpcyBkb3VibGUgY2xpY2tlZC4gUmVjZWl2ZXMgaW5kZXguICovXG4gIG9uUm93RG91YmxlQ2xpY2s/OiAoaW5mbzogUm93TW91c2VFdmVudEhhbmRsZXJQYXJhbXMpID0+IHZvaWRcbiAgLyoqIEluZmluaXRlIGxvYWRpbmc6IEluZGljYXRlcyBtb3JlIHJvd3MgbmVlZCB0byBiZSBsb2FkZWQuICovXG4gIGhhc01vcmVSb3dzPzogYm9vbGVhblxuICAvKiogSW5maW5pdGUgbG9hZGluZzogQ2FsbGVkIHdoZW4gbW9yZSByb3dzIG5lZWQgdG8gYmUgbG9hZGVkLiAqL1xuICBsb2FkTW9yZVJvd3M/OiAocHJvcHM6IEluZGV4UmFuZ2UpID0+IFByb21pc2U8YW55PlxuICAvKiogQ291bnQgb2Ygcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGxvYWRlZC4gKi9cbiAgcm93Q291bnQ6IG51bWJlclxuICAvKiogUmVxdWlyZWQgYnkgcmVhY3QtdmlydHVhbGl6ZWQgdGFibGUuICovXG4gIHJvd0dldHRlcjogKHsgaW5kZXg6IG51bWJlciB9KSA9PiBhbnlcbiAgLyoqIFdoZXRoZXIgcm93cyBjYW4gYmUgc2VsZWN0ZWQgKGFuZCBob3cgbWFueSkuICovXG4gIHNlbGVjdGFibGU/OiBTZWxlY3RhYmxlVHlwZSB8IGZhbHNlXG4gIC8qKiBBcnJheSBvZiBpbmRpY2VzIHRoYXQgc2hvdWxkIGJlIHNlbGVjdGVkLiBPbmx5IHVzZWQgaWYgYHNlbGVjdGFibGVgIGlzIHNldC4gKi9cbiAgc2VsZWN0ZWRSb3dzOiBBcnJheTxudW1iZXI+XG4gIC8qKiBUaGUgY29sdW1uIHlvdSB3YW50IHRvIHNvcnQgKi9cbiAgc29ydEJ5Pzogc3RyaW5nXG4gIC8qKiBUaGUgZGlyZWN0aW9uIHNvcnRpbmcgc2hvdWxkIGJlIGRvbmUgKi9cbiAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb25UeXBlXG4gIC8qKiBBIG1hcCBvZiBjb2x1bW5zIHRvIGZpbHRlciBkYXRhICovXG4gIGZpbHRlcnM/OiB7IFtkYXRhS2V5OiBzdHJpbmddOiBhbnkgfVxuICAvKiogU2V0IHRoZSB3aWR0aCBvZiBzY3JvbGxhYmxlIGNvbnRlbnQgKi9cbiAgc2Nyb2xsV2lkdGg/OiBudW1iZXJcbiAgd2lkdGg6IG51bWJlclxuICBoZWlnaHQ6IG51bWJlclxuICAvKiogTG9jYWxlIHN0cmluZzogamEsIGRlLCBlcywga28sIGVuLCBldGMuICovXG4gIGxvY2FsZT86IHN0cmluZ1xuICAvKiogTG9jYWxlIHN0cmluZ3MgdG8gb3ZlcnJpZGUgZW4gZm9yIGxhbmd1YWdlIGluIGxvY2FsZSAqL1xuICBsb2NhbGVTdHJpbmdzPzogTG9jYWxlU3RyaW5nc1xuICAvKiogYWxsb3cgZXZlbnRzIHRvIHByb3BhZ2F0ZSB0byBhIGNlbGwgb24gcm93IHNlbGVjdCAqL1xuICBhbGxvd1Jvd0V2ZW50UGFzc3Rocm91Z2g/OiBib29sZWFuXG59ICYgUGFydGlhbDxUYWJsZVByb3BzPlxuXG50eXBlIERhdGFHcmlkU3RhdGUgPSB7XG4gIGFjdGl2ZUNvbnRleHRNZW51OiBhY3RpdmVDb250ZXh0TWVudVN0YXRlIHwgbnVsbFxuICBkaXNhYmxlS2V5Ym9hcmRTaG9ydGN1dHM6IGJvb2xlYW5cbiAgZm9jdXNlZFJvdzogbnVtYmVyIHwgbnVsbFxuICBzZWxlY3Rpbmc6IGJvb2xlYW5cbiAgbGFzdFNlbGVjdGVkUm93OiBudW1iZXIgfCBudWxsXG59XG5cbnR5cGUgSGFuZGxlRmlsdGVyQXJndW1lbnRzID0ge1xuICBzb3J0Qnk/OiBzdHJpbmdcbiAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb25UeXBlXG4gIGZpbHRlcnM/OiBhbnlcbn1cblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgZGF0YSBpbiBhIGdyaWQgd2l0aCBzdXBwb3J0IGZvciB0aGluZ3MgbGlrZVxuICogZmlsdGVyaW5nLCBzb3J0aW5nLCBhbmQgY29udGV4dCBtZW51cy5cbiAqXG4gKiBEZXBlbmRzIG9uIHJlYWN0LXZpcnR1YWxpemVkL3N0eWxlcy5jc3MuXG4gKlxuICogRm9yIHJlYWN0LXZpcnR1YWxpemVkIFRhYmxlIGRvY3Mgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYnZhdWdobi9yZWFjdC12aXJ0dWFsaXplZC9ibG9iL21hc3Rlci9kb2NzL1RhYmxlLm1kXG4gKlxuICovXG5jbGFzcyBEYXRhR3JpZCBleHRlbmRzIENvbXBvbmVudDxEYXRhR3JpZFByb3BzLCBEYXRhR3JpZFN0YXRlPiB7XG4gIC8vIGV4cG9zZSBzdWItY29tcG9uZW50c1xuICBzdGF0aWMgQ29sdW1uID0gY3VycnkoQmFzaWNDb2x1bW4pXG4gIHN0YXRpYyBTb3J0RGlyZWN0aW9uID0gU29ydERpcmVjdGlvblxuICBzdGF0aWMgRWxlbWVudHMgPSBFbGVtZW50c1xuICBzdGF0aWMgSW5wdXRDZWxsID0gSW5wdXRDZWxsXG4gIHN0YXRpYyBDb2xsYXBzaWJsZUNlbGwgPSBDb2xsYXBzaWJsZUNlbGxcbiAgc3RhdGljIFJlbmRlcmVycyA9IFJlbmRlcmVyc1xuXG4gIHN0YXRpYyBTSU5HTEVfU0VMRUNUOiBTZWxlY3RhYmxlVHlwZSA9ICdzaW5nbGUnXG4gIHN0YXRpYyBNVUxUSV9TRUxFQ1Q6IFNlbGVjdGFibGVUeXBlID0gJ211bHRpJ1xuXG4gIHN0YXRpYyB1dGlscyA9IGRhdGFHcmlkVXRpbHNcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGxvYWRNb3JlUm93czogbm9vcCxcbiAgICBvblNlbGVjdDogbm9vcCxcbiAgICBvbkZpbHRlcjogbm9vcCxcbiAgICAnZGF0YS1pbnN0cnVtZW50YXRpb24nOiAnZGF0YWdyaWQnLFxuICAgIHNvcnRCeTogJycsXG4gICAgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbi5BU0MsXG4gICAgZmlsdGVyczoge30sXG4gICAgc2VsZWN0ZWRSb3dzOiBbXSxcbiAgICBhbGxvd1Jvd0V2ZW50UGFzc3Rocm91Z2g6IGZhbHNlXG4gIH1cblxuICBzdGF0aWMgZGlzcGxheU5hbWUgPSAnRGF0YUdyaWQnXG5cbiAgc3RhdGU6IERhdGFHcmlkU3RhdGUgPSB7XG4gICAgYWN0aXZlQ29udGV4dE1lbnU6IG51bGwsXG4gICAgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBmYWxzZSxcbiAgICBmb2N1c2VkUm93OiBudWxsLFxuICAgIGxhc3RTZWxlY3RlZFJvdzogbnVsbCxcbiAgICBzZWxlY3Rpbmc6IGZhbHNlXG4gIH1cblxuICBpbmZpbml0ZVRhYmxlID0gUmVhY3QuY3JlYXRlUmVmPEluZmluaXRlTG9hZGVyPigpXG5cbiAgY29sdW1uVHJhbnNmb3JtZXI6IChcbiAgICBjb2x1bW5zOiBSZWFjdC5SZWFjdEVsZW1lbnQ8YW55PltdLFxuICAgIHJvd0RhdGE6IGFueSxcbiAgICByb3dJbmRleDogbnVtYmVyXG4gICkgPT4gUmVhY3QuUmVhY3ROb2RlW10gfCBudWxsIHwgdW5kZWZpbmVkXG5cbiAgc2VsZWN0ID0gKHtcbiAgICBpbmRleCxcbiAgICBjb250aWd1b3VzID0gZmFsc2VcbiAgfToge1xuICAgIGluZGV4OiBudW1iZXJcbiAgICBjb250aWd1b3VzOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoaW5kZXggPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IHsgbGFzdFNlbGVjdGVkUm93IH0gPSBzdGF0ZVxuICAgICAgY29uc3QgeyBzZWxlY3RlZFJvd3MgfSA9IHRoaXMucHJvcHNcbiAgICAgIGxldCBzZWxlY3RlZCA9IFsuLi5zZWxlY3RlZFJvd3MsIGluZGV4XVxuICAgICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0YWJsZSA9PT0gRGF0YUdyaWQuU0lOR0xFX1NFTEVDVCkge1xuICAgICAgICBzZWxlY3RlZCA9IFtpbmRleF1cbiAgICAgIH0gZWxzZSBpZiAoY29udGlndW91cyAmJiB0eXBlb2YgbGFzdFNlbGVjdGVkUm93ID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKGxhc3RTZWxlY3RlZFJvdywgaW5kZXgpXG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KGxhc3RTZWxlY3RlZFJvdywgaW5kZXgpXG4gICAgICAgIHNlbGVjdGVkID0gdW5pcShbLi4uc2VsZWN0ZWRSb3dzLCAuLi5yYW5nZShzdGFydCwgZW5kICsgMSldKVxuICAgICAgfVxuICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChzZWxlY3RlZClcbiAgICAgIHJldHVybiB7IGxhc3RTZWxlY3RlZFJvdzogaW5kZXggfVxuICAgIH0pXG4gIH1cblxuICBzZWxlY3RBbGwgPSAoKSA9PiB7XG4gICAgY29uc3QgeyByb3dDb3VudCB9ID0gdGhpcy5wcm9wc1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRSb3dzKEFycmF5LmZyb20oeyBsZW5ndGg6IHJvd0NvdW50IH0pLm1hcCgoXywgaWR4KSA9PiBpZHgpKVxuICB9XG5cbiAgZGVzZWxlY3QgPSAoe1xuICAgIGluZGV4LFxuICAgIGNvbnRpZ3VvdXMgPSBmYWxzZVxuICB9OiB7XG4gICAgaW5kZXg6IG51bWJlclxuICAgIGNvbnRpZ3VvdXM6IGJvb2xlYW5cbiAgfSkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUgPT4ge1xuICAgICAgY29uc3QgeyBsYXN0U2VsZWN0ZWRSb3cgfSA9IHN0YXRlXG4gICAgICBjb25zdCB7IHNlbGVjdGVkUm93cyB9ID0gdGhpcy5wcm9wc1xuICAgICAgbGV0IHNlbGVjdGVkID0gc2VsZWN0ZWRSb3dzLmZpbHRlcihpZHggPT4gaWR4ICE9PSBpbmRleClcbiAgICAgIGlmIChjb250aWd1b3VzICYmIHR5cGVvZiBsYXN0U2VsZWN0ZWRSb3cgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5taW4obGFzdFNlbGVjdGVkUm93LCBpbmRleClcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5tYXgobGFzdFNlbGVjdGVkUm93LCBpbmRleClcbiAgICAgICAgY29uc3QgdG9EZXNlbGVjdCA9IHJhbmdlKHN0YXJ0LCBlbmQgKyAxKVxuICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkUm93cy5maWx0ZXIoaWR4ID0+ICFpbmNsdWRlcyh0b0Rlc2VsZWN0LCBpZHgpKVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnByb3BzLnNlbGVjdGFibGUgPT09IERhdGFHcmlkLlNJTkdMRV9TRUxFQ1QgJiZcbiAgICAgICAgIXNlbGVjdGVkLmxlbmd0aFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KHNlbGVjdGVkKVxuICAgICAgcmV0dXJuIHsgbGFzdFNlbGVjdGVkUm93OiBpbmRleCB9XG4gICAgfSlcbiAgfVxuXG4gIGRlc2VsZWN0QWxsID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRSb3dzKFtdKVxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbGFzdFNlbGVjdGVkUm93OiBudWxsXG4gICAgfSlcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdCA9ICh7XG4gICAgaW5kZXgsXG4gICAgY29udGlndW91c1xuICB9OiB7XG4gICAgaW5kZXg6IG51bWJlclxuICAgIGNvbnRpZ3VvdXM6IGJvb2xlYW5cbiAgfSkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICghdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MuaW5jbHVkZXMoaW5kZXgpKSB7XG4gICAgICB0aGlzLnNlbGVjdCh7IGluZGV4LCBjb250aWd1b3VzIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVzZWxlY3QoeyBpbmRleCwgY29udGlndW91cyB9KVxuICAgIH1cbiAgfVxuXG4gIHNldFNlbGVjdGVkUm93cyA9IChyb3dzOiBBcnJheTxudW1iZXI+KSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vblNlbGVjdChyb3dzKVxuICB9XG5cbiAgaGFuZGxlRmlsdGVyID0gKHtcbiAgICBzb3J0QnksXG4gICAgc29ydERpcmVjdGlvbixcbiAgICBmaWx0ZXJzXG4gIH06IEhhbmRsZUZpbHRlckFyZ3VtZW50cykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHNvcnRCeTogb2xkU29ydEJ5LFxuICAgICAgc29ydERpcmVjdGlvbjogb2xkU29ydERpcmVjdGlvbixcbiAgICAgIGZpbHRlcnM6IG9sZEZpbHRlcnNcbiAgICB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IG5ld0RhdGEgPSB7XG4gICAgICBzb3J0Qnk6IHNvcnRCeSB8fCBvbGRTb3J0QnksXG4gICAgICBzb3J0RGlyZWN0aW9uOiBzb3J0RGlyZWN0aW9uIHx8IG9sZFNvcnREaXJlY3Rpb24sXG4gICAgICBmaWx0ZXJzOiB7XG4gICAgICAgIC4uLm9sZEZpbHRlcnMsXG4gICAgICAgIC4uLmZpbHRlcnNcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wcm9wcy5vbkZpbHRlcihuZXdEYXRhKVxuICB9XG5cbiAgaGFuZGxlS2V5RG93biA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZS5kaXNhYmxlS2V5Ym9hcmRTaG9ydGN1dHMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnYSc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5KSAmJlxuICAgICAgICAgIHRoaXMucHJvcHMuc2VsZWN0YWJsZSA9PT0gRGF0YUdyaWQuTVVMVElfU0VMRUNUXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5yb3dDb3VudCA9PT0gdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0QWxsKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGwoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGUgPT4gKHtcbiAgICAgICAgICBmb2N1c2VkUm93OiBNYXRoLm1heCgoc3RhdGUuZm9jdXNlZFJvdyB8fCAwKSAtIDEsIDApXG4gICAgICAgIH0pKVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgZm9jdXNlZFJvdzpcbiAgICAgICAgICAgIHN0YXRlLmZvY3VzZWRSb3cgIT0gbnVsbFxuICAgICAgICAgICAgICA/IE1hdGgubWluKHN0YXRlLmZvY3VzZWRSb3cgKyAxLCB0aGlzLnByb3BzLnJvd0NvdW50IC0gMSlcbiAgICAgICAgICAgICAgOiAwXG4gICAgICAgIH0pKVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0YWJsZSkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0KHtcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLnN0YXRlLmZvY3VzZWRSb3cgfHwgMCxcbiAgICAgICAgICAgIGNvbnRpZ3VvdXM6IGV2ZW50LnNoaWZ0S2V5XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdTaGlmdCc6XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGluZzogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUtleVVwID0gKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICh0aGlzLnN0YXRlLmRpc2FibGVLZXlib2FyZFNob3J0Y3V0cykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdTaGlmdCc6XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIHNlbGVjdGluZzogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICAvLyB0aHJvdHRsaW5nIHRoaXMgc28gYSBkb3VibGUgY2xpY2sgYmVoYXZlcyBsaWtlIGEgc2luZ2xlIGNsaWNrXG4gIGhhbmRsZVJvd0NsaWNrID0gdGhyb3R0bGUoXG4gICAgKHsgZXZlbnQsIGluZGV4IH06IHsgZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8YW55PjsgaW5kZXg6IG51bWJlciB9KSA9PiB7XG4gICAgICBpZiAoIXRoaXMucHJvcHMuYWxsb3dSb3dFdmVudFBhc3N0aHJvdWdoKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICB9XG5cbiAgICAgIHRoaXMudG9nZ2xlU2VsZWN0KHsgaW5kZXgsIGNvbnRpZ3VvdXM6IGV2ZW50LnNoaWZ0S2V5IH0pXG4gICAgfSxcbiAgICAyNTAsXG4gICAgeyBsZWFkaW5nOiB0cnVlLCB0cmFpbGluZzogZmFsc2UgfVxuICApXG5cbiAgbWFwQ2hpbGRyZW4gPSAoKSA9PiB7XG4gICAgY29uc3QgSXNBcnJheSA9IChjaGlsZHJlbik6IGNoaWxkcmVuIGlzIEFycmF5PENvbHVtbkZ1bmN0aW9uPiA9PlxuICAgICAgQXJyYXkuaXNBcnJheShjaGlsZHJlbilcblxuICAgIGNvbnN0IGNoaWxkcmVuOiBBcnJheTxDb2x1bW5GdW5jdGlvbj4gPSBJc0FycmF5KHRoaXMucHJvcHMuY2hpbGRyZW4pXG4gICAgICA/IHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICAgIDogW3RoaXMucHJvcHMuY2hpbGRyZW5dXG5cbiAgICBjb25zdCB2YWxpZENoaWxkcmVuID0gY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IHR5cGVvZiBjaGlsZCA9PT0gJ2Z1bmN0aW9uJylcblxuICAgIHJldHVybiB2YWxpZENoaWxkcmVuLm1hcCgoY2hpbGQsIGluZGV4KSA9PlxuICAgICAgY2hpbGQoe1xuICAgICAgICBsb2NhbGU6IHRoaXMucHJvcHMubG9jYWxlIHx8ICdlbicsXG4gICAgICAgIGxvY2FsZVN0cmluZ3M6IHRoaXMucHJvcHMubG9jYWxlU3RyaW5ncyB8fCB7fSxcbiAgICAgICAgY29sdW1uSW5kZXg6IGluZGV4LFxuICAgICAgICBjb2x1bW5Db3VudDogdmFsaWRDaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgIGdldEZpbHRlclZhbHVlOiBkYXRhS2V5ID0+XG4gICAgICAgICAgdGhpcy5wcm9wcy5maWx0ZXJzICYmIHRoaXMucHJvcHMuZmlsdGVyc1tkYXRhS2V5XSxcbiAgICAgICAgb25IZWFkZXJQb3BvdmVyT3Blbjogb3BlbiA9PlxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkaXNhYmxlS2V5Ym9hcmRTaG9ydGN1dHM6IG9wZW4gfSksXG4gICAgICAgIG9uU29ydDogc29ydEFyZ3MgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRSb3dzKFtdKVxuICAgICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKHsgLi4uc29ydEFyZ3MgfSlcbiAgICAgICAgfSxcbiAgICAgICAgb25GaWx0ZXI6ICh7IGRhdGFLZXksIHZhbHVlLCBvcGVyYXRvciB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFJvd3MoW10pXG4gICAgICAgICAgdGhpcy5oYW5kbGVGaWx0ZXIoe1xuICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICBbZGF0YUtleV06IG9wZXJhdG9yXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRvclxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGlzUm93TG9hZGVkID0gKHsgaW5kZXggfTogSW5kZXgpID0+IHtcbiAgICBjb25zdCB7IGhhc01vcmVSb3dzLCByb3dDb3VudCB9ID0gdGhpcy5wcm9wc1xuICAgIHJldHVybiAhaGFzTW9yZVJvd3MgfHwgaW5kZXggPCByb3dDb3VudFxuICB9XG5cbiAgaXNDb250ZXh0TWVudVZpc2libGUgPSAoaW5kZXg6IG51bWJlcikgPT5cbiAgICB0aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51ICYmIHRoaXMuc3RhdGUuYWN0aXZlQ29udGV4dE1lbnUuaW5kZXggPT09IGluZGV4XG5cbiAgY2xvc2VDb250ZXh0TWVudSA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGFjdGl2ZUNvbnRleHRNZW51OiBudWxsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnRleHRNZW51UmVuZGVyZXIgPSAoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMucHJvcHMuY29udGV4dE1lbnVSZW5kZXJlciAmJlxuICAgICAgdGhpcy5pc0NvbnRleHRNZW51VmlzaWJsZShpbmRleCkgJiZcbiAgICAgIGRvY3VtZW50LmJvZHkgIT09IG51bGxcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvbnRleHRNZW51Q2xvc2VXcmFwcGVyID0gKFxuICAgICAgICA8Q2xvc2VXcmFwcGVyIG9uQ2xvc2U9e3RoaXMuY2xvc2VDb250ZXh0TWVudX0+XG4gICAgICAgICAge3RoaXMucHJvcHMuY29udGV4dE1lbnVSZW5kZXJlcih7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51LFxuICAgICAgICAgICAgc2VsZWN0ZWRSb3dzOiB0aGlzLnByb3BzLnNlbGVjdGVkUm93cyxcbiAgICAgICAgICAgIG9uQ2xvc2U6IHRoaXMuY2xvc2VDb250ZXh0TWVudVxuICAgICAgICAgIH0pfVxuICAgICAgICA8L0Nsb3NlV3JhcHBlcj5cbiAgICAgIClcbiAgICAgIHJldHVybiBSZWFjdERPTS5jcmVhdGVQb3J0YWwoY29udGV4dE1lbnVDbG9zZVdyYXBwZXIsIGRvY3VtZW50LmJvZHkpXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBoZWFkZXJSb3dSZW5kZXJlciA9ICh7XG4gICAgY29sdW1ucyxcbiAgICBzdHlsZVxuICB9OiB7XG4gICAgY29sdW1uczogUmVhY3QuUmVhY3ROb2RlW11cbiAgICBzdHlsZToge31cbiAgfSkgPT4gKFxuICAgIDxFbGVtZW50cy5Sb3cgcm9sZT1cInJvd1wiIGhlYWRlciB6ZWJyYSBzdHlsZT17c3R5bGV9PlxuICAgICAge2NvbHVtbnN9XG4gICAgPC9FbGVtZW50cy5Sb3c+XG4gIClcblxuICByb3dSZW5kZXJlciA9ICh7XG4gICAga2V5LFxuICAgIHN0eWxlLFxuICAgIGluZGV4LFxuICAgIHJvd0RhdGEsXG4gICAgY29sdW1ucyxcbiAgICBjbGFzc05hbWUsXG4gICAgb25Sb3dNb3VzZU92ZXIsXG4gICAgb25Sb3dNb3VzZU91dFxuICB9OiBUYWJsZVJvd1Byb3BzKSA9PiAoXG4gICAgPEZvY3VzYWJsZVJvd1xuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBhcmlhLXJvd2luZGV4PXtpbmRleCArIDF9XG4gICAgICB6ZWJyYT17aW5kZXggJSAyID09PSAxfVxuICAgICAgc2VsZWN0ZWQ9e3RoaXMucHJvcHMuc2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGluZGV4KX1cbiAgICAgIHNlbGVjdGluZz17dGhpcy5zdGF0ZS5zZWxlY3Rpbmd9XG4gICAgICBmb2N1c2VkPXtpbmRleCA9PT0gdGhpcy5zdGF0ZS5mb2N1c2VkUm93fVxuICAgICAga2V5PXtrZXl9XG4gICAgICBzdHlsZT17c3R5bGV9XG4gICAgICBvbk1vdXNlTGVhdmU9e2V2ZW50ID0+IHtcbiAgICAgICAgb25Sb3dNb3VzZU91dCAmJiBvblJvd01vdXNlT3V0KHsgcm93RGF0YSwgaW5kZXgsIGV2ZW50IH0pXG4gICAgICB9fVxuICAgICAgb25Nb3VzZUVudGVyPXtldmVudCA9PiB7XG4gICAgICAgIG9uUm93TW91c2VPdmVyICYmIG9uUm93TW91c2VPdmVyKHsgcm93RGF0YSwgaW5kZXgsIGV2ZW50IH0pXG4gICAgICB9fVxuICAgICAgb25Gb2N1cz17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7IGZvY3VzZWRSb3c6IGluZGV4IH0pfVxuICAgICAgZGF0YS1pbnN0cnVtZW50YXRpb249e2Ake3RoaXMucHJvcHNbJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJ119LXJvdyR7XG4gICAgICAgIGluZGV4ICsgMVxuICAgICAgfWB9XG4gICAgICBvbkNsaWNrPXtcbiAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3RhYmxlICYmICF0aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51XG4gICAgICAgICAgPyBldmVudCA9PiB0aGlzLmhhbmRsZVJvd0NsaWNrKHsgZXZlbnQsIGluZGV4OiBpbmRleCB9KVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBvbkNvbnRleHRNZW51PXtcbiAgICAgICAgdGhpcy5wcm9wcy5jb250ZXh0TWVudVJlbmRlcmVyXG4gICAgICAgICAgPyBldmVudCA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIGFjdGl2ZUNvbnRleHRNZW51OiB7XG4gICAgICAgICAgICAgICAgICBsZWZ0OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgdG9wOiBldmVudC5jbGllbnRZLFxuICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgcm93RGF0YTogcm93RGF0YVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICF0aGlzLnByb3BzLnNlbGVjdGVkUm93cy5pbmNsdWRlcyhpbmRleCkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnNlbGVjdGFibGVcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSb3dDbGljayh7IGV2ZW50LCBpbmRleDogaW5kZXggfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIG9uRG91YmxlQ2xpY2s9e2V2ZW50ID0+XG4gICAgICAgIHRoaXMucHJvcHMub25Sb3dEb3VibGVDbGljayAmJlxuICAgICAgICB0aGlzLnByb3BzLm9uUm93RG91YmxlQ2xpY2soeyBpbmRleCwgZXZlbnQsIHJvd0RhdGEgfSlcbiAgICAgIH1cbiAgICA+XG4gICAgICB7dGhpcy5jb2x1bW5UcmFuc2Zvcm1lclxuICAgICAgICA/IHRoaXMuY29sdW1uVHJhbnNmb3JtZXIoY29sdW1ucywgcm93RGF0YSwgaW5kZXgpXG4gICAgICAgIDogY29sdW1uc31cbiAgICAgIHt0aGlzLmNvbnRleHRNZW51UmVuZGVyZXIoaW5kZXgpfVxuICAgIDwvRm9jdXNhYmxlUm93PlxuICApXG5cbiAgLyoqXG4gICAqICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgaXMgYWRkZWQgYmVjYXVzZSBldmVuIHRob3VnaCB0aGUgcHJvcHMgYXJlIG5vdCB1c2VkIGluIHRoaXMgY29tcG9uZW50XG4gICAqIHRoZXkgYXJlIGdldHRpbmcgZGVzdHJ1Y3R1cmVkIGludG8gLi4ucHJvcHMgYW5kIHBhc3NlZCBmdXJ0aGVyIGRvd24gdGhlIHRyZWVcbiAgICovXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGhhc01vcmVSb3dzLFxuICAgICAgaGVpZ2h0LFxuICAgICAgbG9hZE1vcmVSb3dzLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgb25GaWx0ZXIsXG4gICAgICByb3dDb3VudCxcbiAgICAgIHNvcnRCeSA9ICcnLFxuICAgICAgc29ydERpcmVjdGlvbixcbiAgICAgIHdpZHRoLFxuICAgICAgLi4ucHJvcHNcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgLy8gVGhpcyBmaXhlcyBhbiBpc3N1ZSB3aGVyZSB0aGUgaGVhZGVyIG9mIHRoZSBEYXRhR3JpZCBkb2Vzbid0IHJlbmRlciBvbiBwYWdlIGxvYWQgaW4gU2FmYXJpXG4gICAgY29uc3Qgc2FmYXJpU3R5bGUgPSB7XG4gICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVaKDApYFxuICAgIH1cblxuICAgIGNvbnN0IG1hcHBlZENoaWxkcmVuID0gdGhpcy5tYXBDaGlsZHJlbigpLmZpbHRlcihjaGlsZCA9PiBjaGlsZCAhPT0gbnVsbClcbiAgICAvLyBUT0RPOiBCZXR0ZXIgdHlwZSBzaWduYXR1cmUgd2hlbiBhY2Nlc3NpbmcgY2hpbGRyZW4gcHJvcHM/XG4gICAgY29uc3Qgc3BhbkRhdGEgPSBtYXBwZWRDaGlsZHJlbi5tYXAoKGNoaWxkOiBSZWFjdC5SZWFjdEVsZW1lbnQpID0+ICh7XG4gICAgICBjb2xzcGFuOiBjaGlsZC5wcm9wcy5jb2xzcGFuID8gY2hpbGQucHJvcHMuY29sc3BhbiA6ICgpID0+IDEsXG4gICAgICB3aWR0aDogY2hpbGQucHJvcHMud2lkdGgsXG4gICAgICBmbGV4R3JvdzogY2hpbGQucHJvcHMuZmxleEdyb3dcbiAgICB9KSlcbiAgICB0aGlzLmNvbHVtblRyYW5zZm9ybWVyID0gKFxuICAgICAgY29sdW1uczogUmVhY3QuUmVhY3RFbGVtZW50PGFueT5bXSxcbiAgICAgIHJvd0RhdGEsXG4gICAgICByb3dJbmRleFxuICAgICkgPT4ge1xuICAgICAgY29uc3Qgc3BhbnMgPSBzcGFuRGF0YS5tYXAoaXRlbSA9PiBpdGVtLmNvbHNwYW4ocm93RGF0YSkpXG4gICAgICBjb25zdCBzcGFubmVkQ29sdW1uczogUmVhY3QuUmVhY3RFbGVtZW50W10gPSBbXVxuICAgICAgbGV0IGluZGV4ID0gMFxuICAgICAgd2hpbGUgKGluZGV4IDwgY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgc3BhbiA9IHNwYW5zW2luZGV4XVxuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2luZGV4XVxuICAgICAgICBpZiAoc3BhbiA+IDEpIHtcbiAgICAgICAgICBjb25zdCBmb2xsb3dpbmdDb2x1bW5zID0gc3BhbkRhdGEuc2xpY2UoaW5kZXgsIHNwYW4pXG4gICAgICAgICAgLy8gZmluZCBuZXcgd2lkdGggYnkgYWRkaW5nIGN1cnJlbnQgY29sdW1uIHdpZHRoIHBsdXMgY29sdW1ucyB0aGF0IGFyZSBzcGFubmVkIG92ZXJcblxuICAgICAgICAgIGNvbnN0IHdpZHRoID0gZm9sbG93aW5nQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdW11bGF0b3IsIHsgd2lkdGggfTogeyB3aWR0aDogbnVtYmVyIH0pID0+IGFjY3VtdWxhdG9yICsgd2lkdGgsXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgY29uc3QgZmxleEdyb3cgPSBmb2xsb3dpbmdDb2x1bW5zLnJlZHVjZShcbiAgICAgICAgICAgIChhY2N1bXVsYXRvciwgeyBmbGV4R3JvdyB9OiB7IGZsZXhHcm93OiBudW1iZXIgfSkgPT5cbiAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKyBmbGV4R3JvdyxcbiAgICAgICAgICAgIDBcbiAgICAgICAgICApXG4gICAgICAgICAgc3Bhbm5lZENvbHVtbnMucHVzaChcbiAgICAgICAgICAgIFJlYWN0LmNsb25lRWxlbWVudChjb2x1bW4sIHtcbiAgICAgICAgICAgICAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJzogYCR7dGhpcy5wcm9wc1snZGF0YS1pbnN0cnVtZW50YXRpb24nXX0tcm93JHtyb3dJbmRleH0tY29sJHtpbmRleH1gLFxuICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIC4uLkVsZW1lbnRzLmNlbGxSZXNldFN0eWxlLFxuICAgICAgICAgICAgICAgIGZsZXg6IGAwIDEgJHt3aWR0aH1weGAsXG4gICAgICAgICAgICAgICAgZmxleEdyb3dcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgaW5kZXggKz0gc3BhbiAvLyBza2lwIGNvbHVtbnMgdGhhdCBoYXZlIGJlZW4gc3Bhbm5lZCBvdmVyXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3Bhbm5lZENvbHVtbnMucHVzaChcbiAgICAgICAgICAgIFJlYWN0LmNsb25lRWxlbWVudChjb2x1bW4sIHtcbiAgICAgICAgICAgICAgJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJzogYCR7dGhpcy5wcm9wc1snZGF0YS1pbnN0cnVtZW50YXRpb24nXX0tcm93JHtyb3dJbmRleH0tY29sJHtpbmRleH1gXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzcGFubmVkQ29sdW1uc1xuICAgIH1cblxuICAgIGNvbnN0IFRhYmxlQ29tcG9uZW50ID1cbiAgICAgIHRoaXMucHJvcHMuc2Nyb2xsV2lkdGggIT09IHVuZGVmaW5lZCA/IFNjcm9sbGFibGVUYWJsZSA6IFRhYmxlXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEVsZW1lbnRzLlRhYmxlQ29udGFpbmVyXG4gICAgICAgIGNzcz17eyB3aWR0aCwgaGVpZ2h0IH19XG4gICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVLZXlEb3dufVxuICAgICAgICBvbktleVVwPXt0aGlzLmhhbmRsZUtleVVwfVxuICAgICAgICBkYXRhLWluc3RydW1lbnRhdGlvbj17YCR7dGhpcy5wcm9wc1snZGF0YS1pbnN0cnVtZW50YXRpb24nXX0tZ3JpZGB9XG4gICAgICA+XG4gICAgICAgIDxJbmZpbml0ZUxvYWRlclxuICAgICAgICAgIGlzUm93TG9hZGVkPXt0aGlzLmlzUm93TG9hZGVkfVxuICAgICAgICAgIGxvYWRNb3JlUm93cz17bG9hZE1vcmVSb3dzIHx8ICgoKSA9PiBQcm9taXNlLnJlc29sdmUoZmFsc2UpKX1cbiAgICAgICAgICByb3dDb3VudD17aGFzTW9yZVJvd3MgPyByb3dDb3VudCArIDEgOiByb3dDb3VudH1cbiAgICAgICAgICB0aHJlc2hvbGQ9ezV9XG4gICAgICAgICAgcmVmPXt0aGlzLmluZmluaXRlVGFibGV9XG4gICAgICAgID5cbiAgICAgICAgICB7KHsgb25Sb3dzUmVuZGVyZWQsIHJlZ2lzdGVyQ2hpbGQgfSkgPT4gKFxuICAgICAgICAgICAgPFRhYmxlQ29tcG9uZW50XG4gICAgICAgICAgICAgIHN0eWxlPXtzYWZhcmlTdHlsZX1cbiAgICAgICAgICAgICAgZ3JpZFN0eWxlPXt7IG91dGxpbmU6ICdub25lJyB9fVxuICAgICAgICAgICAgICBoZWFkZXJIZWlnaHQ9ezM2fVxuICAgICAgICAgICAgICByb3dIZWlnaHQ9ezMwfVxuICAgICAgICAgICAgICBzb3J0Qnk9e3NvcnRCeX1cbiAgICAgICAgICAgICAgc29ydERpcmVjdGlvbj17c29ydERpcmVjdGlvbn1cbiAgICAgICAgICAgICAgcmVmPXtyZWdpc3RlckNoaWxkfVxuICAgICAgICAgICAgICBub1Jvd3NSZW5kZXJlZD17KCkgPT4gPGRpdj5ObyByZXN1bHRzPC9kaXY+fVxuICAgICAgICAgICAgICBvblJvd3NSZW5kZXJlZD17b25Sb3dzUmVuZGVyZWR9XG4gICAgICAgICAgICAgIG9uU2Nyb2xsPXtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51XG4gICAgICAgICAgICAgICAgICA/ICgpID0+IHRoaXMuY2xvc2VDb250ZXh0TWVudSgpXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJvd0NvdW50PXtoYXNNb3JlUm93cyA/IHJvd0NvdW50ICsgMSA6IHJvd0NvdW50fVxuICAgICAgICAgICAgICBoZWFkZXJSb3dSZW5kZXJlcj17dGhpcy5oZWFkZXJSb3dSZW5kZXJlcn1cbiAgICAgICAgICAgICAgcm93UmVuZGVyZXI9e3RoaXMucm93UmVuZGVyZXJ9XG4gICAgICAgICAgICAgIC8vIGFjY291bnQgZm9yIGJvcmRlciB3aWR0aCBvZiBjb250YWluZXJcbiAgICAgICAgICAgICAgd2lkdGg9e3dpZHRoIC0gMn1cbiAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHQgLSAyfVxuICAgICAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttYXBwZWRDaGlsZHJlbn1cbiAgICAgICAgICAgIDwvVGFibGVDb21wb25lbnQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9JbmZpbml0ZUxvYWRlcj5cbiAgICAgIDwvRWxlbWVudHMuVGFibGVDb250YWluZXI+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERhdGFHcmlkXG4iXX0= */"),
680
+ }, process.env.NODE_ENV === "production" ? "" : ";label:render;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRhR3JpZC9EYXRhR3JpZC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb3FCUSIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0YUdyaWQvRGF0YUdyaWQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7XG4gIEluZmluaXRlTG9hZGVyLFxuICBUYWJsZSxcbiAgU29ydERpcmVjdGlvbixcbiAgVGFibGVSb3dQcm9wc1xufSBmcm9tICdyZWFjdC12aXJ0dWFsaXplZCdcbmltcG9ydCB0eXBlIHtcbiAgU29ydERpcmVjdGlvblR5cGUsXG4gIFRhYmxlUHJvcHMsXG4gIEluZGV4UmFuZ2UsXG4gIEluZGV4LFxuICBSb3dNb3VzZUV2ZW50SGFuZGxlclBhcmFtc1xufSBmcm9tICdyZWFjdC12aXJ0dWFsaXplZCdcbmltcG9ydCAqIGFzIEVsZW1lbnRzIGZyb20gJy4vZWxlbWVudHMnXG5pbXBvcnQgKiBhcyBSZW5kZXJlcnMgZnJvbSAnLi9yZW5kZXJlcnMnXG5pbXBvcnQge1xuICBCYXNpY0NvbHVtbixcbiAgRm9jdXNhYmxlUm93LFxuICBJbnB1dENlbGwsXG4gIENvbGxhcHNpYmxlQ2VsbCxcbiAgU2Nyb2xsYWJsZVRhYmxlXG59IGZyb20gJy4vY29tcG9uZW50cydcbmltcG9ydCB7IENsb3NlV3JhcHBlciB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IGN1cnJ5IGZyb20gJ2xvZGFzaC5jdXJyeSdcbmltcG9ydCBpbmNsdWRlcyBmcm9tICdsb2Rhc2guaW5jbHVkZXMnXG5pbXBvcnQgbm9vcCBmcm9tICdsb2Rhc2gubm9vcCdcbmltcG9ydCByYW5nZSBmcm9tICdsb2Rhc2gucmFuZ2UnXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoLnRocm90dGxlJ1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnXG5pbXBvcnQgKiBhcyBkYXRhR3JpZFV0aWxzIGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIEJhc2ljQ29sdW1uTWFwcGVkUHJvcHMsXG4gIEJhc2ljQ29sdW1uUHJvcHNcbn0gZnJvbSAnLi9jb21wb25lbnRzL0Jhc2ljQ29sdW1uJ1xuaW1wb3J0IHR5cGUgeyBMb2NhbGVTdHJpbmdzIH0gZnJvbSAnLi9jb25zdGFudHMnXG5cbmV4cG9ydCB0eXBlIG9uRmlsdGVyQXJndW1lbnRzID0ge1xuICBmaWx0ZXJzOiB7IFtkYXRhS2V5OiBzdHJpbmddOiBhbnkgfVxuICBzb3J0Qnk/OiBzdHJpbmdcbiAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb25UeXBlXG59XG5cbnR5cGUgYWN0aXZlQ29udGV4dE1lbnVTdGF0ZSA9IHtcbiAgdG9wOiBudW1iZXJcbiAgbGVmdDogbnVtYmVyXG4gIGluZGV4OiBudW1iZXJcbiAgcm93RGF0YTogYW55XG59XG5cbnR5cGUgY29udGV4dE1lbnVSZW5kZXJlckFyZ3VtZW50cyA9IHtcbiAgdG9wPzogbnVtYmVyXG4gIGxlZnQ/OiBudW1iZXJcbiAgaW5kZXg/OiBudW1iZXJcbiAgcm93RGF0YT86IGFueVxuICBzZWxlY3RlZFJvd3M6IEFycmF5PG51bWJlcj5cbiAgb25DbG9zZTogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBTZWxlY3RhYmxlVHlwZSA9ICdzaW5nbGUnIHwgJ211bHRpJ1xuXG50eXBlIENvbHVtbkZ1bmN0aW9uID0gKGFyZ3M6IEJhc2ljQ29sdW1uTWFwcGVkUHJvcHMpID0+IFJlYWN0LlJlYWN0Tm9kZVxuXG5leHBvcnQgdHlwZSBEYXRhR3JpZFByb3BzID0ge1xuICAvKiogRnVuY3Rpb25zIHRoYXQgY3JlYXRlIHJlYWN0IHZpcnR1YWxpemVkIENvbHVtbnMuIERlZmF1bHQgY29sdW1uIGlzIGV4cG9zZWQgYXMgRGF0YUdyaWQuQ29sdW1uLiAqL1xuICAvLyBDYW4gdGFrZSBhIHNpbmdsZSBjb2x1bW4gb3IgYW4gYXJyYXkgb2YgY29sdW1uc1xuICBjaGlsZHJlbjogQ29sdW1uRnVuY3Rpb24gfCBBcnJheTxDb2x1bW5GdW5jdGlvbj5cbiAgLyoqIEluc3RydW1lbnRhdGlvbiAqL1xuICAnZGF0YS1pbnN0cnVtZW50YXRpb24nPzogc3RyaW5nXG4gIC8qKiBDYWxsZWQgZHVyaW5nIHRoZSBvbkNvbnRleHRNZW51IGV2ZW50IG9mIGVhY2ggcm93LiAqL1xuICBjb250ZXh0TWVudVJlbmRlcmVyPzogKFxuICAgIGNvbnRleHRNZW51UmVuZGVyZXJBcmd1bWVudHM6IGNvbnRleHRNZW51UmVuZGVyZXJBcmd1bWVudHNcbiAgKSA9PiBSZWFjdC5SZWFjdE5vZGVcbiAgLyoqIENhbGxlZCB3aGVuIGEgY29sdW1uIGlzIGZpbHRlcmVkIG9yIHNvcnRlZC4gKi9cbiAgb25GaWx0ZXI6IChvbkZpbHRlckFyZ3VtZW50czogb25GaWx0ZXJBcmd1bWVudHMpID0+IHZvaWRcbiAgLyoqIENhbGxlZCB3aGVuIGEgY29sdW1uIGlzIHJlc2l6ZWQgYnkgdGhlIHVzZXIuIFBhc3NpbmcgdGhpcyBpbiBlbmFibGVzXG4gICAqIHJlc2l6ZSBoYW5kbGVzIG9uIHRoZSByaWdodCBlZGdlIG9mIHRoZSBoZWFkZXIgY2VsbHMuICovXG4gIG9uUmVzaXplPzogKG5ld1NpemVzOiBudW1iZXJbXSkgPT4gdm9pZFxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHJvdyBzZWxlY3Rpb24gY2hhbmdlcy4gUmVjZWl2ZXMgYXJyYXkgb2YgaW5kaWNlcy4gKi9cbiAgb25TZWxlY3Q6IChpbmRleGVzOiBudW1iZXJbXSkgPT4gdm9pZFxuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHJvdyBpcyBkb3VibGUgY2xpY2tlZC4gUmVjZWl2ZXMgaW5kZXguICovXG4gIG9uUm93RG91YmxlQ2xpY2s/OiAoaW5mbzogUm93TW91c2VFdmVudEhhbmRsZXJQYXJhbXMpID0+IHZvaWRcbiAgLyoqIEluZmluaXRlIGxvYWRpbmc6IEluZGljYXRlcyBtb3JlIHJvd3MgbmVlZCB0byBiZSBsb2FkZWQuICovXG4gIGhhc01vcmVSb3dzPzogYm9vbGVhblxuICAvKiogSW5maW5pdGUgbG9hZGluZzogQ2FsbGVkIHdoZW4gbW9yZSByb3dzIG5lZWQgdG8gYmUgbG9hZGVkLiAqL1xuICBsb2FkTW9yZVJvd3M/OiAocHJvcHM6IEluZGV4UmFuZ2UpID0+IFByb21pc2U8YW55PlxuICAvKiogQ291bnQgb2Ygcm93cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGxvYWRlZC4gKi9cbiAgcm93Q291bnQ6IG51bWJlclxuICAvKiogUmVxdWlyZWQgYnkgcmVhY3QtdmlydHVhbGl6ZWQgdGFibGUuICovXG4gIHJvd0dldHRlcjogKHByb3BzOiB7IGluZGV4OiBudW1iZXIgfSkgPT4gYW55XG4gIC8qKiBXaGV0aGVyIHJvd3MgY2FuIGJlIHNlbGVjdGVkIChhbmQgaG93IG1hbnkpLiAqL1xuICBzZWxlY3RhYmxlPzogU2VsZWN0YWJsZVR5cGUgfCBmYWxzZVxuICAvKiogQXJyYXkgb2YgaW5kaWNlcyB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZC4gT25seSB1c2VkIGlmIGBzZWxlY3RhYmxlYCBpcyBzZXQuICovXG4gIHNlbGVjdGVkUm93czogQXJyYXk8bnVtYmVyPlxuICAvKiogVGhlIGNvbHVtbiB5b3Ugd2FudCB0byBzb3J0ICovXG4gIHNvcnRCeT86IHN0cmluZ1xuICAvKiogVGhlIGRpcmVjdGlvbiBzb3J0aW5nIHNob3VsZCBiZSBkb25lICovXG4gIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uVHlwZVxuICAvKiogQSBtYXAgb2YgY29sdW1ucyB0byBmaWx0ZXIgZGF0YSAqL1xuICBmaWx0ZXJzPzogeyBbZGF0YUtleTogc3RyaW5nXTogYW55IH1cbiAgLyoqIFNldCB0aGUgd2lkdGggb2Ygc2Nyb2xsYWJsZSBjb250ZW50ICovXG4gIHNjcm9sbFdpZHRoPzogbnVtYmVyXG4gIHdpZHRoOiBudW1iZXJcbiAgaGVpZ2h0OiBudW1iZXJcbiAgLyoqIExvY2FsZSBzdHJpbmc6IGphLCBkZSwgZXMsIGtvLCBlbiwgZXRjLiAqL1xuICBsb2NhbGU/OiBzdHJpbmdcbiAgLyoqIExvY2FsZSBzdHJpbmdzIHRvIG92ZXJyaWRlIGVuIGZvciBsYW5ndWFnZSBpbiBsb2NhbGUgKi9cbiAgbG9jYWxlU3RyaW5ncz86IExvY2FsZVN0cmluZ3NcbiAgLyoqIGFsbG93IGV2ZW50cyB0byBwcm9wYWdhdGUgdG8gYSBjZWxsIG9uIHJvdyBzZWxlY3QgKi9cbiAgYWxsb3dSb3dFdmVudFBhc3N0aHJvdWdoPzogYm9vbGVhblxufSAmIFBhcnRpYWw8VGFibGVQcm9wcz5cblxudHlwZSBEYXRhR3JpZFN0YXRlID0ge1xuICBhY3RpdmVDb250ZXh0TWVudTogYWN0aXZlQ29udGV4dE1lbnVTdGF0ZSB8IG51bGxcbiAgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBib29sZWFuXG4gIGZvY3VzZWRSb3c6IG51bWJlciB8IG51bGxcbiAgc2VsZWN0aW5nOiBib29sZWFuXG4gIGxhc3RTZWxlY3RlZFJvdzogbnVtYmVyIHwgbnVsbFxufVxuXG50eXBlIEhhbmRsZUZpbHRlckFyZ3VtZW50cyA9IHtcbiAgc29ydEJ5Pzogc3RyaW5nXG4gIHNvcnREaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9uVHlwZVxuICBmaWx0ZXJzPzogYW55XG59XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBkaXNwbGF5aW5nIGRhdGEgaW4gYSBncmlkIHdpdGggc3VwcG9ydCBmb3IgdGhpbmdzIGxpa2VcbiAqIGZpbHRlcmluZywgc29ydGluZywgYW5kIGNvbnRleHQgbWVudXMuXG4gKlxuICogRGVwZW5kcyBvbiByZWFjdC12aXJ0dWFsaXplZC9zdHlsZXMuY3NzLlxuICpcbiAqIEZvciByZWFjdC12aXJ0dWFsaXplZCBUYWJsZSBkb2NzIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2J2YXVnaG4vcmVhY3QtdmlydHVhbGl6ZWQvYmxvYi9tYXN0ZXIvZG9jcy9UYWJsZS5tZFxuICpcbiAqL1xuY2xhc3MgRGF0YUdyaWQgZXh0ZW5kcyBDb21wb25lbnQ8RGF0YUdyaWRQcm9wcywgRGF0YUdyaWRTdGF0ZT4ge1xuICAvLyBleHBvc2Ugc3ViLWNvbXBvbmVudHNcbiAgc3RhdGljIENvbHVtbiA9IGN1cnJ5KEJhc2ljQ29sdW1uKVxuICBzdGF0aWMgU29ydERpcmVjdGlvbiA9IFNvcnREaXJlY3Rpb25cbiAgc3RhdGljIEVsZW1lbnRzID0gRWxlbWVudHNcbiAgc3RhdGljIElucHV0Q2VsbCA9IElucHV0Q2VsbFxuICBzdGF0aWMgQ29sbGFwc2libGVDZWxsID0gQ29sbGFwc2libGVDZWxsXG4gIHN0YXRpYyBSZW5kZXJlcnMgPSBSZW5kZXJlcnNcblxuICBzdGF0aWMgU0lOR0xFX1NFTEVDVDogU2VsZWN0YWJsZVR5cGUgPSAnc2luZ2xlJ1xuICBzdGF0aWMgTVVMVElfU0VMRUNUOiBTZWxlY3RhYmxlVHlwZSA9ICdtdWx0aSdcbiAgc3RhdGljIE1JTl9DT0xfV0lEVEggPSA1MFxuXG4gIHN0YXRpYyB1dGlscyA9IGRhdGFHcmlkVXRpbHNcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGxvYWRNb3JlUm93czogbm9vcCxcbiAgICBvblNlbGVjdDogbm9vcCxcbiAgICBvbkZpbHRlcjogbm9vcCxcbiAgICAnZGF0YS1pbnN0cnVtZW50YXRpb24nOiAnZGF0YWdyaWQnLFxuICAgIHNvcnRCeTogJycsXG4gICAgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbi5BU0MsXG4gICAgZmlsdGVyczoge30sXG4gICAgc2VsZWN0ZWRSb3dzOiBbXSxcbiAgICBhbGxvd1Jvd0V2ZW50UGFzc3Rocm91Z2g6IGZhbHNlXG4gIH1cblxuICBzdGF0aWMgZGlzcGxheU5hbWUgPSAnRGF0YUdyaWQnXG5cbiAgc3RhdGU6IERhdGFHcmlkU3RhdGUgPSB7XG4gICAgYWN0aXZlQ29udGV4dE1lbnU6IG51bGwsXG4gICAgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBmYWxzZSxcbiAgICBmb2N1c2VkUm93OiBudWxsLFxuICAgIGxhc3RTZWxlY3RlZFJvdzogbnVsbCxcbiAgICBzZWxlY3Rpbmc6IGZhbHNlXG4gIH1cblxuICBpbmZpbml0ZVRhYmxlID0gUmVhY3QuY3JlYXRlUmVmPEluZmluaXRlTG9hZGVyPigpXG5cbiAgdG90YWxXaWR0aCA9IDBcbiAgY29sdW1uV2lkdGhQZXJjZW50czogbnVtYmVyW10gPSBbXVxuXG4gIGNvbHVtblRyYW5zZm9ybWVyOiAoXG4gICAgY29sdW1uczogUmVhY3QuUmVhY3RFbGVtZW50PGFueT5bXSxcbiAgICByb3dEYXRhOiBhbnksXG4gICAgcm93SW5kZXg6IG51bWJlclxuICApID0+IFJlYWN0LlJlYWN0Tm9kZVtdIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG4gIHNlbGVjdCA9ICh7XG4gICAgaW5kZXgsXG4gICAgY29udGlndW91cyA9IGZhbHNlXG4gIH06IHtcbiAgICBpbmRleDogbnVtYmVyXG4gICAgY29udGlndW91czogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSA9PiB7XG4gICAgICBjb25zdCB7IGxhc3RTZWxlY3RlZFJvdyB9ID0gc3RhdGVcbiAgICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dzIH0gPSB0aGlzLnByb3BzXG4gICAgICBsZXQgc2VsZWN0ZWQgPSBbLi4uc2VsZWN0ZWRSb3dzLCBpbmRleF1cbiAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGFibGUgPT09IERhdGFHcmlkLlNJTkdMRV9TRUxFQ1QpIHtcbiAgICAgICAgc2VsZWN0ZWQgPSBbaW5kZXhdXG4gICAgICB9IGVsc2UgaWYgKGNvbnRpZ3VvdXMgJiYgdHlwZW9mIGxhc3RTZWxlY3RlZFJvdyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihsYXN0U2VsZWN0ZWRSb3csIGluZGV4KVxuICAgICAgICBjb25zdCBlbmQgPSBNYXRoLm1heChsYXN0U2VsZWN0ZWRSb3csIGluZGV4KVxuICAgICAgICBzZWxlY3RlZCA9IHVuaXEoWy4uLnNlbGVjdGVkUm93cywgLi4ucmFuZ2Uoc3RhcnQsIGVuZCArIDEpXSlcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvcHMub25TZWxlY3Qoc2VsZWN0ZWQpXG4gICAgICByZXR1cm4geyBsYXN0U2VsZWN0ZWRSb3c6IGluZGV4IH1cbiAgICB9KVxuICB9XG5cbiAgc2VsZWN0QWxsID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgcm93Q291bnQgfSA9IHRoaXMucHJvcHNcbiAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhBcnJheS5mcm9tKHsgbGVuZ3RoOiByb3dDb3VudCB9KS5tYXAoKF8sIGlkeCkgPT4gaWR4KSlcbiAgfVxuXG4gIGRlc2VsZWN0ID0gKHtcbiAgICBpbmRleCxcbiAgICBjb250aWd1b3VzID0gZmFsc2VcbiAgfToge1xuICAgIGluZGV4OiBudW1iZXJcbiAgICBjb250aWd1b3VzOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoaW5kZXggPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IHsgbGFzdFNlbGVjdGVkUm93IH0gPSBzdGF0ZVxuICAgICAgY29uc3QgeyBzZWxlY3RlZFJvd3MgfSA9IHRoaXMucHJvcHNcbiAgICAgIGxldCBzZWxlY3RlZCA9IHNlbGVjdGVkUm93cy5maWx0ZXIoaWR4ID0+IGlkeCAhPT0gaW5kZXgpXG4gICAgICBpZiAoY29udGlndW91cyAmJiB0eXBlb2YgbGFzdFNlbGVjdGVkUm93ID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKGxhc3RTZWxlY3RlZFJvdywgaW5kZXgpXG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KGxhc3RTZWxlY3RlZFJvdywgaW5kZXgpXG4gICAgICAgIGNvbnN0IHRvRGVzZWxlY3QgPSByYW5nZShzdGFydCwgZW5kICsgMSlcbiAgICAgICAgc2VsZWN0ZWQgPSBzZWxlY3RlZFJvd3MuZmlsdGVyKGlkeCA9PiAhaW5jbHVkZXModG9EZXNlbGVjdCwgaWR4KSlcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3RhYmxlID09PSBEYXRhR3JpZC5TSU5HTEVfU0VMRUNUICYmXG4gICAgICAgICFzZWxlY3RlZC5sZW5ndGhcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChzZWxlY3RlZClcbiAgICAgIHJldHVybiB7IGxhc3RTZWxlY3RlZFJvdzogaW5kZXggfVxuICAgIH0pXG4gIH1cblxuICBkZXNlbGVjdEFsbCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhbXSlcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGxhc3RTZWxlY3RlZFJvdzogbnVsbFxuICAgIH0pXG4gIH1cblxuICB0b2dnbGVTZWxlY3QgPSAoe1xuICAgIGluZGV4LFxuICAgIGNvbnRpZ3VvdXNcbiAgfToge1xuICAgIGluZGV4OiBudW1iZXJcbiAgICBjb250aWd1b3VzOiBib29sZWFuXG4gIH0pID0+IHtcbiAgICBpZiAoaW5kZXggPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIXRoaXMucHJvcHMuc2VsZWN0ZWRSb3dzLmluY2x1ZGVzKGluZGV4KSkge1xuICAgICAgdGhpcy5zZWxlY3QoeyBpbmRleCwgY29udGlndW91cyB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc2VsZWN0KHsgaW5kZXgsIGNvbnRpZ3VvdXMgfSlcbiAgICB9XG4gIH1cblxuICBzZXRTZWxlY3RlZFJvd3MgPSAocm93czogQXJyYXk8bnVtYmVyPikgPT4ge1xuICAgIHRoaXMucHJvcHMub25TZWxlY3Qocm93cylcbiAgfVxuXG4gIGhhbmRsZUZpbHRlciA9ICh7XG4gICAgc29ydEJ5LFxuICAgIHNvcnREaXJlY3Rpb24sXG4gICAgZmlsdGVyc1xuICB9OiBIYW5kbGVGaWx0ZXJBcmd1bWVudHMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBzb3J0Qnk6IG9sZFNvcnRCeSxcbiAgICAgIHNvcnREaXJlY3Rpb246IG9sZFNvcnREaXJlY3Rpb24sXG4gICAgICBmaWx0ZXJzOiBvbGRGaWx0ZXJzXG4gICAgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBuZXdEYXRhID0ge1xuICAgICAgc29ydEJ5OiBzb3J0QnkgfHwgb2xkU29ydEJ5LFxuICAgICAgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiB8fCBvbGRTb3J0RGlyZWN0aW9uLFxuICAgICAgZmlsdGVyczoge1xuICAgICAgICAuLi5vbGRGaWx0ZXJzLFxuICAgICAgICAuLi5maWx0ZXJzXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucHJvcHMub25GaWx0ZXIobmV3RGF0YSlcbiAgfVxuXG4gIGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ2EnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkgJiZcbiAgICAgICAgICB0aGlzLnByb3BzLnNlbGVjdGFibGUgPT09IERhdGFHcmlkLk1VTFRJX1NFTEVDVFxuICAgICAgICApIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgaWYgKHRoaXMucHJvcHMucm93Q291bnQgPT09IHRoaXMucHJvcHMuc2VsZWN0ZWRSb3dzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kZXNlbGVjdEFsbCgpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgZm9jdXNlZFJvdzogTWF0aC5tYXgoKHN0YXRlLmZvY3VzZWRSb3cgfHwgMCkgLSAxLCAwKVxuICAgICAgICB9KSlcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgIGZvY3VzZWRSb3c6XG4gICAgICAgICAgICBzdGF0ZS5mb2N1c2VkUm93ICE9IG51bGxcbiAgICAgICAgICAgICAgPyBNYXRoLm1pbihzdGF0ZS5mb2N1c2VkUm93ICsgMSwgdGhpcy5wcm9wcy5yb3dDb3VudCAtIDEpXG4gICAgICAgICAgICAgIDogMFxuICAgICAgICB9KSlcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgY2FzZSAnICc6XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdCh7XG4gICAgICAgICAgICBpbmRleDogdGhpcy5zdGF0ZS5mb2N1c2VkUm93IHx8IDAsXG4gICAgICAgICAgICBjb250aWd1b3VzOiBldmVudC5zaGlmdEtleVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnU2hpZnQnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3Rpbmc6IHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlVcCA9IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZS5kaXNhYmxlS2V5Ym9hcmRTaG9ydGN1dHMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnU2hpZnQnOlxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzZWxlY3Rpbmc6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gdGhyb3R0bGluZyB0aGlzIHNvIGEgZG91YmxlIGNsaWNrIGJlaGF2ZXMgbGlrZSBhIHNpbmdsZSBjbGlja1xuICBoYW5kbGVSb3dDbGljayA9IHRocm90dGxlKFxuICAgICh7IGV2ZW50LCBpbmRleCB9OiB7IGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PGFueT47IGluZGV4OiBudW1iZXIgfSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnByb3BzLmFsbG93Um93RXZlbnRQYXNzdGhyb3VnaCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgfVxuXG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdCh7IGluZGV4LCBjb250aWd1b3VzOiBldmVudC5zaGlmdEtleSB9KVxuICAgIH0sXG4gICAgMjUwLFxuICAgIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IGZhbHNlIH1cbiAgKVxuXG4gIGhhbmRsZVJlc2l6ZSA9ICh7IHgsIGluZGV4IH06IHsgeDogbnVtYmVyOyBpbmRleDogbnVtYmVyIH0pID0+IHtcbiAgICBpZiAodGhpcy5jb2x1bW5XaWR0aFBlcmNlbnRzLmxlbmd0aCA+IDAgJiYgdGhpcy50b3RhbFdpZHRoKSB7XG4gICAgICBjb25zdCBwcmV2V2lkdGhzID0gdGhpcy5jb2x1bW5XaWR0aFBlcmNlbnRzXG4gICAgICBjb25zdCBuZXdXaWR0aHMgPSBbLi4ucHJldldpZHRoc11cbiAgICAgIGNvbnN0IHBhcmVudFdpZHRoID0gdGhpcy5wcm9wcy5zY3JvbGxXaWR0aCA/PyB0aGlzLnByb3BzLndpZHRoXG4gICAgICAvLyBsaW1pdCBuZXh0IGluZGV4IGZyb20gZ29pbmcgYmV5b25kIGJvdW5kc1xuICAgICAgY29uc3QgbmV4dEluZGV4ID0gTWF0aC5taW4oaW5kZXggKyAxLCBwcmV2V2lkdGhzLmxlbmd0aCAtIDEpXG4gICAgICBjb25zdCBwZXJjZW50Q2hhbmdlID0geCAvIHRoaXMudG90YWxXaWR0aFxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5zY3JvbGxXaWR0aCkge1xuICAgICAgICAvLyBpZiB0YWJsZSBpcyBzY3JvbGxhYmxlLCB3ZSBjYW4gZ3JvdyB0aGUgY29sdW1uIHdpdGhvdXRcbiAgICAgICAgLy8gc2hyaW5raW5nIHRoZSBvdGhlcnNcbiAgICAgICAgY29uc3Qgc2FmZVBlcmNlbnRDaGFuZ2UgPVxuICAgICAgICAgIChwcmV2V2lkdGhzW2luZGV4XSArIHBlcmNlbnRDaGFuZ2UpICogcGFyZW50V2lkdGggPFxuICAgICAgICAgIERhdGFHcmlkLk1JTl9DT0xfV0lEVEhcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBwZXJjZW50Q2hhbmdlXG4gICAgICAgIG5ld1dpZHRoc1tpbmRleF0gPSBwcmV2V2lkdGhzW2luZGV4XSArIHNhZmVQZXJjZW50Q2hhbmdlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpZiB0aGUgdGFibGUgaXMgbm90IHNjcm9sbGFibGUsIGVuc3VyZSBhbGwgY29sdW1ucyBmaXQgYnlcbiAgICAgICAgLy8gYWRqdXN0aW5nIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlIG9uZSBhZnRlciBpdFxuICAgICAgICBjb25zdCBzYWZlUGVyY2VudENoYW5nZSA9XG4gICAgICAgICAgKHByZXZXaWR0aHNbaW5kZXhdICsgcGVyY2VudENoYW5nZSkgKiBwYXJlbnRXaWR0aCA8XG4gICAgICAgICAgICBEYXRhR3JpZC5NSU5fQ09MX1dJRFRIIHx8XG4gICAgICAgICAgKHByZXZXaWR0aHNbbmV4dEluZGV4XSAtIHBlcmNlbnRDaGFuZ2UpICogcGFyZW50V2lkdGggPFxuICAgICAgICAgICAgRGF0YUdyaWQuTUlOX0NPTF9XSURUSFxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHBlcmNlbnRDaGFuZ2VcbiAgICAgICAgbmV3V2lkdGhzW2luZGV4XSA9IHByZXZXaWR0aHNbaW5kZXhdICsgc2FmZVBlcmNlbnRDaGFuZ2VcbiAgICAgICAgbmV3V2lkdGhzW25leHRJbmRleF0gPSBwcmV2V2lkdGhzW25leHRJbmRleF0gLSBzYWZlUGVyY2VudENoYW5nZVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2l6ZSkge1xuICAgICAgICB0aGlzLnByb3BzLm9uUmVzaXplKFxuICAgICAgICAgIC8vIG11bHRpcGx5IGJ5IHdpZHRoIHByb3AgdG8gZ2V0IGNvcnJlY3QgcGVyY2VudGFnZVxuICAgICAgICAgIG5ld1dpZHRocy5tYXAod2lkdGggPT4gTWF0aC5yb3VuZCh3aWR0aCAqIHBhcmVudFdpZHRoKSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1hcENoaWxkcmVuID0gKCkgPT4ge1xuICAgIGNvbnN0IElzQXJyYXkgPSAoY2hpbGRyZW4pOiBjaGlsZHJlbiBpcyBBcnJheTxDb2x1bW5GdW5jdGlvbj4gPT5cbiAgICAgIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pXG5cbiAgICBjb25zdCBjaGlsZHJlbjogQXJyYXk8Q29sdW1uRnVuY3Rpb24+ID0gSXNBcnJheSh0aGlzLnByb3BzLmNoaWxkcmVuKVxuICAgICAgPyB0aGlzLnByb3BzLmNoaWxkcmVuXG4gICAgICA6IFt0aGlzLnByb3BzLmNoaWxkcmVuXVxuXG4gICAgY29uc3QgdmFsaWRDaGlsZHJlbiA9IGNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbicpXG5cbiAgICByZXR1cm4gdmFsaWRDaGlsZHJlbi5tYXAoKGNoaWxkLCBpbmRleCkgPT5cbiAgICAgIGNoaWxkKHtcbiAgICAgICAgbG9jYWxlOiB0aGlzLnByb3BzLmxvY2FsZSB8fCAnZW4nLFxuICAgICAgICBsb2NhbGVTdHJpbmdzOiB0aGlzLnByb3BzLmxvY2FsZVN0cmluZ3MgfHwge30sXG4gICAgICAgIGNvbHVtbkluZGV4OiBpbmRleCxcbiAgICAgICAgY29sdW1uQ291bnQ6IHZhbGlkQ2hpbGRyZW4ubGVuZ3RoLFxuICAgICAgICBnZXRGaWx0ZXJWYWx1ZTogZGF0YUtleSA9PlxuICAgICAgICAgIHRoaXMucHJvcHMuZmlsdGVycyAmJiB0aGlzLnByb3BzLmZpbHRlcnNbZGF0YUtleV0sXG4gICAgICAgIG9uSGVhZGVyUG9wb3Zlck9wZW46IG9wZW4gPT5cbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGlzYWJsZUtleWJvYXJkU2hvcnRjdXRzOiBvcGVuIH0pLFxuICAgICAgICBvblNvcnQ6IHNvcnRBcmdzID0+IHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkUm93cyhbXSlcbiAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlcih7IC4uLnNvcnRBcmdzIH0pXG4gICAgICAgIH0sXG4gICAgICAgIG9uRmlsdGVyOiAoeyBkYXRhS2V5LCB2YWx1ZSwgb3BlcmF0b3IgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRSb3dzKFtdKVxuICAgICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgW2RhdGFLZXldOiBvcGVyYXRvclxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3JcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgb25SZXNpemU6XG4gICAgICAgICAgLy8gdGhlIHByZXNlbmNlIG9mIGBvblJlc2l6ZWAgd2lsbCBzaG93IGRyYWcgaGFuZGxlcyBzbyBkb24ndCBzZXQgaXRcbiAgICAgICAgICAvLyBpZiBubyBwcm9wIGlzIHBhc3NlZCBpbiBvciBmb3IgdGhlIGxhc3QgY29sdW1uIGlmIHRoZSB0YWJsZSBpc24ndFxuICAgICAgICAgIC8vIHNjcm9sbGFibGVcbiAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzaXplICYmXG4gICAgICAgICAgKCghdGhpcy5wcm9wcy5zY3JvbGxXaWR0aCAmJiBpbmRleCAhPT0gdmFsaWRDaGlsZHJlbi5sZW5ndGggLSAxKSB8fFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5zY3JvbGxXaWR0aClcbiAgICAgICAgICAgID8gKHsgeCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZXNpemUoeyB4LCBpbmRleCB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBpc1Jvd0xvYWRlZCA9ICh7IGluZGV4IH06IEluZGV4KSA9PiB7XG4gICAgY29uc3QgeyBoYXNNb3JlUm93cywgcm93Q291bnQgfSA9IHRoaXMucHJvcHNcbiAgICByZXR1cm4gIWhhc01vcmVSb3dzIHx8IGluZGV4IDwgcm93Q291bnRcbiAgfVxuXG4gIGlzQ29udGV4dE1lbnVWaXNpYmxlID0gKGluZGV4OiBudW1iZXIpID0+XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudSAmJiB0aGlzLnN0YXRlLmFjdGl2ZUNvbnRleHRNZW51LmluZGV4ID09PSBpbmRleFxuXG4gIGNsb3NlQ29udGV4dE1lbnUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVDb250ZXh0TWVudTogbnVsbFxuICAgIH0pXG4gIH1cblxuICBjb250ZXh0TWVudVJlbmRlcmVyID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnByb3BzLmNvbnRleHRNZW51UmVuZGVyZXIgJiZcbiAgICAgIHRoaXMuaXNDb250ZXh0TWVudVZpc2libGUoaW5kZXgpICYmXG4gICAgICBkb2N1bWVudC5ib2R5ICE9PSBudWxsXG4gICAgKSB7XG4gICAgICBjb25zdCBjb250ZXh0TWVudUNsb3NlV3JhcHBlciA9IChcbiAgICAgICAgPENsb3NlV3JhcHBlciBvbkNsb3NlPXt0aGlzLmNsb3NlQ29udGV4dE1lbnV9PlxuICAgICAgICAgIHt0aGlzLnByb3BzLmNvbnRleHRNZW51UmVuZGVyZXIoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudSxcbiAgICAgICAgICAgIHNlbGVjdGVkUm93czogdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MsXG4gICAgICAgICAgICBvbkNsb3NlOiB0aGlzLmNsb3NlQ29udGV4dE1lbnVcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9DbG9zZVdyYXBwZXI+XG4gICAgICApXG4gICAgICByZXR1cm4gUmVhY3RET00uY3JlYXRlUG9ydGFsKGNvbnRleHRNZW51Q2xvc2VXcmFwcGVyLCBkb2N1bWVudC5ib2R5KVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgaGVhZGVyUm93UmVuZGVyZXIgPSAoe1xuICAgIGNvbHVtbnMsXG4gICAgc3R5bGVcbiAgfToge1xuICAgIGNvbHVtbnM6IFJlYWN0LlJlYWN0Tm9kZVtdXG4gICAgc3R5bGU6IHt9XG4gIH0pID0+IChcbiAgICA8RWxlbWVudHMuUm93IHJvbGU9XCJyb3dcIiBoZWFkZXIgemVicmEgc3R5bGU9e3N0eWxlfT5cbiAgICAgIHtjb2x1bW5zfVxuICAgIDwvRWxlbWVudHMuUm93PlxuICApXG5cbiAgcm93UmVuZGVyZXIgPSAoe1xuICAgIGtleSxcbiAgICBzdHlsZSxcbiAgICBpbmRleCxcbiAgICByb3dEYXRhLFxuICAgIGNvbHVtbnMsXG4gICAgY2xhc3NOYW1lLFxuICAgIG9uUm93TW91c2VPdmVyLFxuICAgIG9uUm93TW91c2VPdXRcbiAgfTogVGFibGVSb3dQcm9wcykgPT4gKFxuICAgIDxGb2N1c2FibGVSb3dcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgYXJpYS1yb3dpbmRleD17aW5kZXggKyAxfVxuICAgICAgemVicmE9e2luZGV4ICUgMiA9PT0gMX1cbiAgICAgIHNlbGVjdGVkPXt0aGlzLnByb3BzLnNlbGVjdGVkUm93cy5pbmNsdWRlcyhpbmRleCl9XG4gICAgICBzZWxlY3Rpbmc9e3RoaXMuc3RhdGUuc2VsZWN0aW5nfVxuICAgICAgZm9jdXNlZD17aW5kZXggPT09IHRoaXMuc3RhdGUuZm9jdXNlZFJvd31cbiAgICAgIGtleT17a2V5fVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgb25Nb3VzZUxlYXZlPXtldmVudCA9PiB7XG4gICAgICAgIG9uUm93TW91c2VPdXQgJiYgb25Sb3dNb3VzZU91dCh7IHJvd0RhdGEsIGluZGV4LCBldmVudCB9KVxuICAgICAgfX1cbiAgICAgIG9uTW91c2VFbnRlcj17ZXZlbnQgPT4ge1xuICAgICAgICBvblJvd01vdXNlT3ZlciAmJiBvblJvd01vdXNlT3Zlcih7IHJvd0RhdGEsIGluZGV4LCBldmVudCB9KVxuICAgICAgfX1cbiAgICAgIG9uRm9jdXM9eygpID0+IHRoaXMuc2V0U3RhdGUoeyBmb2N1c2VkUm93OiBpbmRleCB9KX1cbiAgICAgIGRhdGEtaW5zdHJ1bWVudGF0aW9uPXtgJHt0aGlzLnByb3BzWydkYXRhLWluc3RydW1lbnRhdGlvbiddfS1yb3cke1xuICAgICAgICBpbmRleCArIDFcbiAgICAgIH1gfVxuICAgICAgb25DbGljaz17XG4gICAgICAgIHRoaXMucHJvcHMuc2VsZWN0YWJsZSAmJiAhdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudVxuICAgICAgICAgID8gZXZlbnQgPT4gdGhpcy5oYW5kbGVSb3dDbGljayh7IGV2ZW50LCBpbmRleDogaW5kZXggfSlcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgb25Db250ZXh0TWVudT17XG4gICAgICAgIHRoaXMucHJvcHMuY29udGV4dE1lbnVSZW5kZXJlclxuICAgICAgICAgID8gZXZlbnQgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBhY3RpdmVDb250ZXh0TWVudToge1xuICAgICAgICAgICAgICAgICAgbGVmdDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgICAgIHRvcDogZXZlbnQuY2xpZW50WSxcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgIHJvd0RhdGE6IHJvd0RhdGFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5wcm9wcy5zZWxlY3RlZFJvd3MuaW5jbHVkZXMoaW5kZXgpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3RhYmxlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUm93Q2xpY2soeyBldmVudCwgaW5kZXg6IGluZGV4IH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBvbkRvdWJsZUNsaWNrPXtldmVudCA9PlxuICAgICAgICB0aGlzLnByb3BzLm9uUm93RG91YmxlQ2xpY2sgJiZcbiAgICAgICAgdGhpcy5wcm9wcy5vblJvd0RvdWJsZUNsaWNrKHsgaW5kZXgsIGV2ZW50LCByb3dEYXRhIH0pXG4gICAgICB9XG4gICAgPlxuICAgICAge3RoaXMuY29sdW1uVHJhbnNmb3JtZXJcbiAgICAgICAgPyB0aGlzLmNvbHVtblRyYW5zZm9ybWVyKGNvbHVtbnMsIHJvd0RhdGEsIGluZGV4KVxuICAgICAgICA6IGNvbHVtbnN9XG4gICAgICB7dGhpcy5jb250ZXh0TWVudVJlbmRlcmVyKGluZGV4KX1cbiAgICA8L0ZvY3VzYWJsZVJvdz5cbiAgKVxuXG4gIC8qKlxuICAgKiAgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIGlzIGFkZGVkIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlIHByb3BzIGFyZSBub3QgdXNlZCBpbiB0aGlzIGNvbXBvbmVudFxuICAgKiB0aGV5IGFyZSBnZXR0aW5nIGRlc3RydWN0dXJlZCBpbnRvIC4uLnByb3BzIGFuZCBwYXNzZWQgZnVydGhlciBkb3duIHRoZSB0cmVlXG4gICAqL1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBoYXNNb3JlUm93cyxcbiAgICAgIGhlaWdodCxcbiAgICAgIGxvYWRNb3JlUm93cyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIG9uRmlsdGVyLFxuICAgICAgcm93Q291bnQsXG4gICAgICBzb3J0QnkgPSAnJyxcbiAgICAgIHNvcnREaXJlY3Rpb24sXG4gICAgICB3aWR0aCxcbiAgICAgIC4uLnByb3BzXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIC8vIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2hlcmUgdGhlIGhlYWRlciBvZiB0aGUgRGF0YUdyaWQgZG9lc24ndCByZW5kZXIgb24gcGFnZSBsb2FkIGluIFNhZmFyaVxuICAgIGNvbnN0IHNhZmFyaVN0eWxlID0ge1xuICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWigwKWBcbiAgICB9XG5cbiAgICBjb25zdCBtYXBwZWRDaGlsZHJlbiA9IHRoaXMubWFwQ2hpbGRyZW4oKS5maWx0ZXIoY2hpbGQgPT4gY2hpbGQgIT09IG51bGwpXG4gICAgLy8gVE9ETzogQmV0dGVyIHR5cGUgc2lnbmF0dXJlIHdoZW4gYWNjZXNzaW5nIGNoaWxkcmVuIHByb3BzP1xuICAgIGNvbnN0IHNwYW5EYXRhID0gbWFwcGVkQ2hpbGRyZW4ubWFwKChjaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50KSA9PiAoe1xuICAgICAgY29sc3BhbjogY2hpbGQucHJvcHMuY29sc3BhbiA/IGNoaWxkLnByb3BzLmNvbHNwYW4gOiAoKSA9PiAxLFxuICAgICAgd2lkdGg6IGNoaWxkLnByb3BzLndpZHRoLFxuICAgICAgZmxleEdyb3c6IGNoaWxkLnByb3BzLmZsZXhHcm93XG4gICAgfSkpXG4gICAgLy8gR2V0IHRoZSBhY3R1YWwgd2lkdGggb2YgYWxsIHRoZSBjb2x1bW5zLiBUaGlzIGlzIGluZGVwZW5kZW50IGZyb20gdGhlXG4gICAgLy8gd2lkdGggcHJvcC5cbiAgICB0aGlzLnRvdGFsV2lkdGggPSBtYXBwZWRDaGlsZHJlbi5yZWR1Y2U8bnVtYmVyPihcbiAgICAgICh0b3RhbDogbnVtYmVyLCBjaGlsZDogUmVhY3QuUmVhY3RFbGVtZW50PEJhc2ljQ29sdW1uUHJvcHM+KSA9PlxuICAgICAgICB0b3RhbCArIGNoaWxkLnByb3BzLndpZHRoLFxuICAgICAgMFxuICAgIClcbiAgICAvLyBDb252ZXJ0IHRoZSB3aWR0aHMgdG8gcGVyY2VudHMgc28gd2UgY2FuIG1hcCB0aGVtIGJhY2sgdG8gdGhlIHJlYWwgdGFibGVcbiAgICAvLyB3aWR0aCBsYXRlci5cbiAgICB0aGlzLmNvbHVtbldpZHRoUGVyY2VudHMgPSBtYXBwZWRDaGlsZHJlbi5tYXAoXG4gICAgICAoeyBwcm9wcyB9OiBSZWFjdC5SZWFjdEVsZW1lbnQpID0+IHByb3BzLndpZHRoIC8gdGhpcy50b3RhbFdpZHRoXG4gICAgKVxuXG4gICAgdGhpcy5jb2x1bW5UcmFuc2Zvcm1lciA9IChcbiAgICAgIGNvbHVtbnM6IFJlYWN0LlJlYWN0RWxlbWVudDxhbnk+W10sXG4gICAgICByb3dEYXRhLFxuICAgICAgcm93SW5kZXhcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHNwYW5zID0gc3BhbkRhdGEubWFwKGl0ZW0gPT4gaXRlbS5jb2xzcGFuKHJvd0RhdGEpKVxuICAgICAgY29uc3Qgc3Bhbm5lZENvbHVtbnM6IFJlYWN0LlJlYWN0RWxlbWVudFtdID0gW11cbiAgICAgIGxldCBpbmRleCA9IDBcbiAgICAgIHdoaWxlIChpbmRleCA8IGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHNwYW4gPSBzcGFuc1tpbmRleF1cbiAgICAgICAgY29uc3QgY29sdW1uID0gY29sdW1uc1tpbmRleF1cbiAgICAgICAgaWYgKHNwYW4gPiAxKSB7XG4gICAgICAgICAgY29uc3QgZm9sbG93aW5nQ29sdW1ucyA9IHNwYW5EYXRhLnNsaWNlKGluZGV4LCBzcGFuKVxuICAgICAgICAgIC8vIGZpbmQgbmV3IHdpZHRoIGJ5IGFkZGluZyBjdXJyZW50IGNvbHVtbiB3aWR0aCBwbHVzIGNvbHVtbnMgdGhhdCBhcmUgc3Bhbm5lZCBvdmVyXG5cbiAgICAgICAgICBjb25zdCB3aWR0aCA9IGZvbGxvd2luZ0NvbHVtbnMucmVkdWNlKFxuICAgICAgICAgICAgKGFjY3VtdWxhdG9yLCB7IHdpZHRoIH06IHsgd2lkdGg6IG51bWJlciB9KSA9PiBhY2N1bXVsYXRvciArIHdpZHRoLFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IGZsZXhHcm93ID0gZm9sbG93aW5nQ29sdW1ucy5yZWR1Y2UoXG4gICAgICAgICAgICAoYWNjdW11bGF0b3IsIHsgZmxleEdyb3cgfTogeyBmbGV4R3JvdzogbnVtYmVyIH0pID0+XG4gICAgICAgICAgICAgIGFjY3VtdWxhdG9yICsgZmxleEdyb3csXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIHNwYW5uZWRDb2x1bW5zLnB1c2goXG4gICAgICAgICAgICBSZWFjdC5jbG9uZUVsZW1lbnQoY29sdW1uLCB7XG4gICAgICAgICAgICAgICdkYXRhLWluc3RydW1lbnRhdGlvbic6IGAke3RoaXMucHJvcHNbJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJ119LXJvdyR7cm93SW5kZXh9LWNvbCR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi5FbGVtZW50cy5jZWxsUmVzZXRTdHlsZSxcbiAgICAgICAgICAgICAgICBmbGV4OiBgMCAxICR7d2lkdGh9cHhgLFxuICAgICAgICAgICAgICAgIGZsZXhHcm93XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICAgIGluZGV4ICs9IHNwYW4gLy8gc2tpcCBjb2x1bW5zIHRoYXQgaGF2ZSBiZWVuIHNwYW5uZWQgb3ZlclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNwYW5uZWRDb2x1bW5zLnB1c2goXG4gICAgICAgICAgICBSZWFjdC5jbG9uZUVsZW1lbnQoY29sdW1uLCB7XG4gICAgICAgICAgICAgICdkYXRhLWluc3RydW1lbnRhdGlvbic6IGAke3RoaXMucHJvcHNbJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJ119LXJvdyR7cm93SW5kZXh9LWNvbCR7aW5kZXh9YFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3Bhbm5lZENvbHVtbnNcbiAgICB9XG5cbiAgICBjb25zdCBUYWJsZUNvbXBvbmVudCA9XG4gICAgICB0aGlzLnByb3BzLnNjcm9sbFdpZHRoICE9PSB1bmRlZmluZWQgPyBTY3JvbGxhYmxlVGFibGUgOiBUYWJsZVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFbGVtZW50cy5UYWJsZUNvbnRhaW5lclxuICAgICAgICBjc3M9e3sgd2lkdGgsIGhlaWdodCB9fVxuICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlS2V5RG93bn1cbiAgICAgICAgb25LZXlVcD17dGhpcy5oYW5kbGVLZXlVcH1cbiAgICAgICAgZGF0YS1pbnN0cnVtZW50YXRpb249e2Ake3RoaXMucHJvcHNbJ2RhdGEtaW5zdHJ1bWVudGF0aW9uJ119LWdyaWRgfVxuICAgICAgPlxuICAgICAgICA8SW5maW5pdGVMb2FkZXJcbiAgICAgICAgICBpc1Jvd0xvYWRlZD17dGhpcy5pc1Jvd0xvYWRlZH1cbiAgICAgICAgICBsb2FkTW9yZVJvd3M9e2xvYWRNb3JlUm93cyB8fCAoKCkgPT4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKSl9XG4gICAgICAgICAgcm93Q291bnQ9e2hhc01vcmVSb3dzID8gcm93Q291bnQgKyAxIDogcm93Q291bnR9XG4gICAgICAgICAgdGhyZXNob2xkPXs1fVxuICAgICAgICAgIHJlZj17dGhpcy5pbmZpbml0ZVRhYmxlfVxuICAgICAgICA+XG4gICAgICAgICAgeyh7IG9uUm93c1JlbmRlcmVkLCByZWdpc3RlckNoaWxkIH0pID0+IChcbiAgICAgICAgICAgIDxUYWJsZUNvbXBvbmVudFxuICAgICAgICAgICAgICBzdHlsZT17c2FmYXJpU3R5bGV9XG4gICAgICAgICAgICAgIGdyaWRTdHlsZT17eyBvdXRsaW5lOiAnbm9uZScgfX1cbiAgICAgICAgICAgICAgaGVhZGVySGVpZ2h0PXszNn1cbiAgICAgICAgICAgICAgcm93SGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgc29ydEJ5PXtzb3J0Qnl9XG4gICAgICAgICAgICAgIHNvcnREaXJlY3Rpb249e3NvcnREaXJlY3Rpb259XG4gICAgICAgICAgICAgIHJlZj17cmVnaXN0ZXJDaGlsZH1cbiAgICAgICAgICAgICAgbm9Sb3dzUmVuZGVyZWQ9eygpID0+IDxkaXY+Tm8gcmVzdWx0czwvZGl2Pn1cbiAgICAgICAgICAgICAgb25Sb3dzUmVuZGVyZWQ9e29uUm93c1JlbmRlcmVkfVxuICAgICAgICAgICAgICBvblNjcm9sbD17XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVDb250ZXh0TWVudVxuICAgICAgICAgICAgICAgICAgPyAoKSA9PiB0aGlzLmNsb3NlQ29udGV4dE1lbnUoKVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByb3dDb3VudD17aGFzTW9yZVJvd3MgPyByb3dDb3VudCArIDEgOiByb3dDb3VudH1cbiAgICAgICAgICAgICAgaGVhZGVyUm93UmVuZGVyZXI9e3RoaXMuaGVhZGVyUm93UmVuZGVyZXJ9XG4gICAgICAgICAgICAgIHJvd1JlbmRlcmVyPXt0aGlzLnJvd1JlbmRlcmVyfVxuICAgICAgICAgICAgICAvLyBhY2NvdW50IGZvciBib3JkZXIgd2lkdGggb2YgY29udGFpbmVyXG4gICAgICAgICAgICAgIHdpZHRoPXt3aWR0aCAtIDJ9XG4gICAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0IC0gMn1cbiAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWFwcGVkQ2hpbGRyZW59XG4gICAgICAgICAgICA8L1RhYmxlQ29tcG9uZW50PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvSW5maW5pdGVMb2FkZXI+XG4gICAgICA8L0VsZW1lbnRzLlRhYmxlQ29udGFpbmVyPlxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEYXRhR3JpZFxuIl19 */"),
616
681
  onKeyDown: this.handleKeyDown,
617
682
  onKeyUp: this.handleKeyUp,
618
683
  "data-instrumentation": "".concat(this.props['data-instrumentation'], "-grid"),
619
684
  children: (0, _jsxRuntime.jsx)(_reactVirtualized.InfiniteLoader, {
620
- "data-gs-c": gsC(function children(_ref12) {
621
- var onRowsRendered = _ref12.onRowsRendered,
622
- registerChild = _ref12.registerChild;
685
+ "data-gs-c": gsC(function children(_ref15) {
686
+ var onRowsRendered = _ref15.onRowsRendered,
687
+ registerChild = _ref15.registerChild;
623
688
  return (0, _jsxRuntime.jsx)(TableComponent, _objectSpread(_objectSpread({
624
689
  "data-gs-c": gsC(mappedChildren),
625
690
  "data-gs": gs("src", "datagrid", "datagrid.tsx", "elements-tablecontainer", "infinite-loader", "table-component"),
@@ -661,9 +726,9 @@ var DataGrid = /*#__PURE__*/function (_Component) {
661
726
  rowCount: hasMoreRows ? rowCount + 1 : rowCount,
662
727
  threshold: 5,
663
728
  ref: this.infiniteTable,
664
- children: function children(_ref12) {
665
- var onRowsRendered = _ref12.onRowsRendered,
666
- registerChild = _ref12.registerChild;
729
+ children: function children(_ref15) {
730
+ var onRowsRendered = _ref15.onRowsRendered,
731
+ registerChild = _ref15.registerChild;
667
732
  return (0, _jsxRuntime.jsx)(TableComponent, _objectSpread(_objectSpread({
668
733
  "data-gs-c": gsC(mappedChildren),
669
734
  "data-gs": gs("src", "datagrid", "datagrid.tsx", "elements-tablecontainer", "infinite-loader", "table-component"),
@@ -720,6 +785,8 @@ _defineProperty(DataGrid, "SINGLE_SELECT", 'single');
720
785
 
721
786
  _defineProperty(DataGrid, "MULTI_SELECT", 'multi');
722
787
 
788
+ _defineProperty(DataGrid, "MIN_COL_WIDTH", 50);
789
+
723
790
  _defineProperty(DataGrid, "utils", dataGridUtils);
724
791
 
725
792
  _defineProperty(DataGrid, "defaultProps", {
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { ColumnProps, SortDirection } from 'react-virtualized';
3
- import type { filterRendererArguments, sortRendererArguments } from '../types';
3
+ import type { filterRendererArguments, sortRendererArguments, InternalResizeHandler } from '../types';
4
4
  import type { LocaleStrings } from '../constants';
5
5
  import type { Theme } from '@theme';
6
6
  import type { Interpolation } from '@emotion/react';
@@ -32,6 +32,7 @@ export declare type BasicColumnMappedProps = {
32
32
  sortBy: string;
33
33
  sortDirection: keyof typeof SortDirection;
34
34
  }) => void;
35
+ onResize?: InternalResizeHandler;
35
36
  };
36
37
  /**
37
38
  * Function that accepts two object arguments and returns a react-virtualized Column.