@amboss/design-system 4.2.6 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/build/cjs/components/Content/ContentBadge/ContentBadge.d.ts +12 -0
  2. package/build/cjs/components/Content/ContentBadge/ContentBadge.js +1 -0
  3. package/build/cjs/components/Form/Combobox/OptionsList.d.ts +7 -0
  4. package/build/cjs/components/Form/Combobox/OptionsList.js +1 -1
  5. package/build/cjs/components/Form/DatePicker/Calendar.js +1 -1
  6. package/build/cjs/components/Form/DatePicker/DatePickerPopover.js +1 -1
  7. package/build/cjs/components/Form/Select/Select.d.ts +1 -1
  8. package/build/cjs/components/Form/Select/Select.js +1 -1
  9. package/build/cjs/components/Form/Select/SelectWithCustomTrigger.d.ts +7 -1
  10. package/build/cjs/components/Form/Select/SelectWithCustomTrigger.js +1 -1
  11. package/build/cjs/components/Layout/-constants.d.ts +4 -0
  12. package/build/cjs/components/Layout/-constants.js +1 -1
  13. package/build/cjs/components/Layout/-types.d.ts +85 -7
  14. package/build/cjs/components/Layout/Layout.d.ts +1 -1
  15. package/build/cjs/components/Layout/Layout.js +1 -1
  16. package/build/cjs/components/Layout/LeftPanel/LeftPanel.js +1 -1
  17. package/build/cjs/components/Layout/index.d.ts +1 -0
  18. package/build/cjs/components/Layout/index.js +1 -1
  19. package/build/cjs/components/Layout/reducer.js +1 -1
  20. package/build/cjs/components/Layout/rules.d.ts +2 -0
  21. package/build/cjs/components/Layout/rules.js +1 -0
  22. package/build/cjs/components/Layout/useLayout.js +1 -1
  23. package/build/cjs/components/Layout/useLayoutRules.d.ts +26 -0
  24. package/build/cjs/components/Layout/useLayoutRules.js +1 -0
  25. package/build/cjs/components/Portal/Portal.js +1 -1
  26. package/build/cjs/components/PromptButton/PromptButton.js +1 -1
  27. package/build/cjs/components/PromptButtonGroup/PromptButtonGroup.d.ts +36 -0
  28. package/build/cjs/components/PromptButtonGroup/PromptButtonGroup.js +1 -0
  29. package/build/cjs/components/PromptButtonGroup/PromptButtonGroupOverflowButton.d.ts +6 -0
  30. package/build/cjs/components/PromptButtonGroup/PromptButtonGroupOverflowButton.js +1 -0
  31. package/build/cjs/components/PromptButtonGroup/computeVisibleCount.d.ts +30 -0
  32. package/build/cjs/components/PromptButtonGroup/computeVisibleCount.js +1 -0
  33. package/build/cjs/components/PromptButtonGroup/readMeasurement.d.ts +12 -0
  34. package/build/cjs/components/PromptButtonGroup/readMeasurement.js +1 -0
  35. package/build/cjs/components/PromptButtonGroup/useVisibleCount.d.ts +13 -0
  36. package/build/cjs/components/PromptButtonGroup/useVisibleCount.js +1 -0
  37. package/build/cjs/components/Toggletip/BasePopover.d.ts +8 -1
  38. package/build/cjs/components/Toggletip/BasePopover.js +1 -1
  39. package/build/cjs/index.d.ts +2 -0
  40. package/build/cjs/index.js +1 -1
  41. package/build/cjs/shared/intl/translations/de.json +4 -1
  42. package/build/cjs/shared/intl/translations/en.json +4 -1
  43. package/build/cjs/shared/mixins/Button/getPillStyles.d.ts +12 -0
  44. package/build/cjs/shared/mixins/Button/getPillStyles.js +1 -0
  45. package/build/cjs/shared/mixins/index.d.ts +1 -0
  46. package/build/cjs/shared/mixins/index.js +1 -1
  47. package/build/cjs/web-tokens/_colors.json +24 -0
  48. package/build/cjs/web-tokens/_sizes.json +10 -0
  49. package/build/cjs/web-tokens/assets/icons.json +1 -0
  50. package/build/cjs/web-tokens/assets/icons16.json +1 -0
  51. package/build/cjs/web-tokens/visualConfig.d.ts +32 -0
  52. package/build/cjs/web-tokens/visualConfig.js +1 -1
  53. package/build/esm/components/Content/ContentBadge/ContentBadge.d.ts +12 -0
  54. package/build/esm/components/Content/ContentBadge/ContentBadge.js +1 -0
  55. package/build/esm/components/Form/Combobox/OptionsList.d.ts +7 -0
  56. package/build/esm/components/Form/Combobox/OptionsList.js +1 -1
  57. package/build/esm/components/Form/DatePicker/Calendar.js +1 -1
  58. package/build/esm/components/Form/DatePicker/DatePickerPopover.js +1 -1
  59. package/build/esm/components/Form/Select/Select.d.ts +1 -1
  60. package/build/esm/components/Form/Select/Select.js +1 -1
  61. package/build/esm/components/Form/Select/SelectWithCustomTrigger.d.ts +7 -1
  62. package/build/esm/components/Form/Select/SelectWithCustomTrigger.js +1 -1
  63. package/build/esm/components/Layout/-constants.d.ts +4 -0
  64. package/build/esm/components/Layout/-constants.js +1 -1
  65. package/build/esm/components/Layout/-types.d.ts +85 -7
  66. package/build/esm/components/Layout/Layout.d.ts +1 -1
  67. package/build/esm/components/Layout/Layout.js +1 -1
  68. package/build/esm/components/Layout/LeftPanel/LeftPanel.js +1 -1
  69. package/build/esm/components/Layout/index.d.ts +1 -0
  70. package/build/esm/components/Layout/index.js +1 -1
  71. package/build/esm/components/Layout/reducer.js +1 -1
  72. package/build/esm/components/Layout/rules.d.ts +2 -0
  73. package/build/esm/components/Layout/rules.js +1 -0
  74. package/build/esm/components/Layout/useLayout.js +1 -1
  75. package/build/esm/components/Layout/useLayoutRules.d.ts +26 -0
  76. package/build/esm/components/Layout/useLayoutRules.js +1 -0
  77. package/build/esm/components/Portal/Portal.js +1 -1
  78. package/build/esm/components/PromptButton/PromptButton.js +1 -1
  79. package/build/esm/components/PromptButtonGroup/PromptButtonGroup.d.ts +36 -0
  80. package/build/esm/components/PromptButtonGroup/PromptButtonGroup.js +1 -0
  81. package/build/esm/components/PromptButtonGroup/PromptButtonGroupOverflowButton.d.ts +6 -0
  82. package/build/esm/components/PromptButtonGroup/PromptButtonGroupOverflowButton.js +1 -0
  83. package/build/esm/components/PromptButtonGroup/computeVisibleCount.d.ts +30 -0
  84. package/build/esm/components/PromptButtonGroup/computeVisibleCount.js +1 -0
  85. package/build/esm/components/PromptButtonGroup/readMeasurement.d.ts +12 -0
  86. package/build/esm/components/PromptButtonGroup/readMeasurement.js +1 -0
  87. package/build/esm/components/PromptButtonGroup/useVisibleCount.d.ts +13 -0
  88. package/build/esm/components/PromptButtonGroup/useVisibleCount.js +1 -0
  89. package/build/esm/components/Toggletip/BasePopover.d.ts +8 -1
  90. package/build/esm/components/Toggletip/BasePopover.js +1 -1
  91. package/build/esm/index.d.ts +2 -0
  92. package/build/esm/index.js +1 -1
  93. package/build/esm/shared/intl/translations/de.json +4 -1
  94. package/build/esm/shared/intl/translations/en.json +4 -1
  95. package/build/esm/shared/mixins/Button/getPillStyles.d.ts +12 -0
  96. package/build/esm/shared/mixins/Button/getPillStyles.js +1 -0
  97. package/build/esm/shared/mixins/index.d.ts +1 -0
  98. package/build/esm/shared/mixins/index.js +1 -1
  99. package/build/esm/web-tokens/_colors.json +24 -0
  100. package/build/esm/web-tokens/_sizes.json +10 -0
  101. package/build/esm/web-tokens/assets/icons.json +1 -0
  102. package/build/esm/web-tokens/assets/icons16.json +1 -0
  103. package/build/esm/web-tokens/visualConfig.d.ts +32 -0
  104. package/build/esm/web-tokens/visualConfig.js +1 -1
  105. package/build/scss/_dark.scss +21 -0
  106. package/build/scss/_light.scss +21 -0
  107. package/build/scss/_variables.scss +22 -0
  108. package/package.json +3 -3
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Layout",{enumerable:!0,get:function(){return Layout}});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_styled=/*#__PURE__*/_interop_require_default._(require("@emotion/styled")),_Panel=require("../Internal/Panel/Panel"),_LayoutFloat=require("../Internal/LayoutFloat/LayoutFloat"),_useBreakpoints=require("../../shared/useBreakpoints"),_constants=require("./-constants"),_context=require("./context"),_useMobileSplitStack=require("./Split/MobileSplitView/useMobileSplitStack"),_useMobileSplitView=require("./Split/MobileSplitView/useMobileSplitView"),_LayoutProvider=require("./LayoutProvider"),_Content=require("./Content/Content"),_RightPanel=require("./RightPanel/RightPanel"),_RightPanelHeader=require("./RightPanel/RightPanelHeader"),_RightPanelFooter=require("./RightPanel/RightPanelFooter"),_LeftPanel=require("./LeftPanel/LeftPanel"),_LeftPanelHeader=require("./LeftPanel/LeftPanelHeader"),_LeftPanelFooter=require("./LeftPanel/LeftPanelFooter"),_Split=require("./Split/Split"),_SplitHeader=require("./Split/SplitHeader"),_SplitFooter=require("./Split/SplitFooter"),_registry=require("./registry"),_useFloatablePortalTargets=require("./useFloatablePortalTargets"),_LayoutFloatDragProvider=require("../Internal/LayoutFloat/LayoutFloatDragProvider"),_LayoutCssVars=require("./LayoutCssVars"),_useLayout=require("./useLayout"),resizableFromState=slotState=>"sidePanel"===slotState.kind?slotState.resizable:void 0,useGlobalCssVariables=slotHosts=>{let contentWidthCssVar=(0,_LayoutCssVars.useLayoutVar)(_constants.PANEL_WIDTH_VAR.content),rightPanelWidthCssVar=(0,_LayoutCssVars.useLayoutVar)(_constants.PANEL_WIDTH_VAR.rightPanel);(0,_react.useEffect)(()=>{let targets=[[_constants.Slot.content,contentWidthCssVar],[_constants.Slot.rightPanel,rightPanelWidthCssVar]],observers=[];return targets.forEach(([slot,handle])=>{let node=slotHosts[slot]??null;if(!node)return void handle.set("0px");let publishNodeWidth=()=>handle.set(`${node.getBoundingClientRect().width}px`);if(publishNodeWidth(),"undefined"==typeof ResizeObserver)return;let observer=new ResizeObserver(publishNodeWidth);observer.observe(node),observers.push(observer)}),()=>observers.forEach(observer=>observer.disconnect())},[contentWidthCssVar,rightPanelWidthCssVar,slotHosts])},StyledLayout=(0,_styled.default)("div",{target:"e1w0fcrp0",label:"StyledLayout"})({position:"relative",height:"100%",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9MYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlLXBhbmVsc1wiO1xuaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiLi4vSW50ZXJuYWwvUGFuZWwvUGFuZWxcIjtcbmltcG9ydCB0eXBlIHsgUGFuZWxJdGVtIH0gZnJvbSBcIi4uL0ludGVybmFsL1BhbmVsL1BhbmVsXCI7XG5pbXBvcnQgeyBMYXlvdXRGbG9hdCB9IGZyb20gXCIuLi9JbnRlcm5hbC9MYXlvdXRGbG9hdC9MYXlvdXRGbG9hdFwiO1xuaW1wb3J0IHsgdXNlQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUJyZWFrcG9pbnRzXCI7XG5pbXBvcnQgeyBQQU5FTF9PUkRFUiwgUEFORUxfV0lEVEhfVkFSLCBTbG90IH0gZnJvbSBcIi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0UGFuZWxzRW5hYmxlZCwgdXNlTGF5b3V0UGVyc2lzdGVuY2UgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQge1xuICBNb2JpbGVTcGxpdFN0YWNrQ29udGV4dCxcbiAgdHlwZSBNb2JpbGVTcGxpdFN0YWNrVmFsdWUsXG59IGZyb20gXCIuL1NwbGl0L01vYmlsZVNwbGl0Vmlldy91c2VNb2JpbGVTcGxpdFN0YWNrXCI7XG5pbXBvcnQgeyB1c2VNb2JpbGVTcGxpdFZpZXdFbmFibGVkIH0gZnJvbSBcIi4vU3BsaXQvTW9iaWxlU3BsaXRWaWV3L3VzZU1vYmlsZVNwbGl0Vmlld1wiO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tIFwiLi9MYXlvdXRQcm92aWRlclwiO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gXCIuL0NvbnRlbnQvQ29udGVudFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbCB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEhlYWRlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEZvb3RlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbFwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsSGVhZGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsRm9vdGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgU3BsaXQgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdFwiO1xuaW1wb3J0IHsgU3BsaXRIZWFkZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEhlYWRlclwiO1xuaW1wb3J0IHsgU3BsaXRGb290ZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEZvb3RlclwiO1xuaW1wb3J0IHtcbiAgTGF5b3V0UG9ydGFsQ29udGV4dCxcbiAgUGFuZWxSZWdpc3RyeUNvbnRleHQsXG4gIFBhbmVsRGVjbGFyYXRpb25zQ29udGV4dCxcbiAgUGFuZWxQcmVzZW5jZUNvbnRleHQsXG4gIFBhbmVsQW5pbWF0aW9uQ29udGV4dCxcbiAgdHlwZSBQb3J0YWxUYXJnZXRzLFxuICB0eXBlIFBhbmVsUmVnLFxuICB0eXBlIFBhbmVsUmVnaXN0cnksXG4gIHR5cGUgUGFuZWxQcmVzZW5jZSxcbiAgdHlwZSBQYW5lbEFuaW1hdGlvbkNvbnRyb2wsXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzIH0gZnJvbSBcIi4vdXNlRmxvYXRhYmxlUG9ydGFsVGFyZ2V0c1wiO1xuaW1wb3J0IHsgTGF5b3V0RmxvYXREcmFnUHJvdmlkZXIgfSBmcm9tIFwiLi4vSW50ZXJuYWwvTGF5b3V0RmxvYXQvTGF5b3V0RmxvYXREcmFnUHJvdmlkZXJcIjtcbmltcG9ydCB7IHVzZUxheW91dFZhciwgdHlwZSBMYXlvdXRWYXJIYW5kbGUgfSBmcm9tIFwiLi9MYXlvdXRDc3NWYXJzXCI7XG5pbXBvcnQgeyB1c2VMYXlvdXQgfSBmcm9tIFwiLi91c2VMYXlvdXRcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0UHJvcHMsIExheW91dFN0YXRlLCBTaXplLCBTbG90S2V5IH0gZnJvbSBcIi4vLXR5cGVzXCI7XG5cbi8vIE9ubHkgdGhlIHNpZGUgcGFuZWxzIGNhcnJ5IGByZXNpemFibGVgIGluIHN0YXRlIChpdCBjb21lcyBmcm9tIHRoZSBwcm92aWRlclxuLy8gY29uZmlnKTsgdGhlIGNvbnRlbnQvc3BsaXR2aWV3IHNsb3RzIHRha2UgaXQgZnJvbSB0aGVpciBkZWNsYXJhdGlvbiBhbG9uZS5cbmNvbnN0IHJlc2l6YWJsZUZyb21TdGF0ZSA9IChcbiAgc2xvdFN0YXRlOiBMYXlvdXRTdGF0ZVtTbG90S2V5XVxuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9PlxuICBzbG90U3RhdGUua2luZCA9PT0gXCJzaWRlUGFuZWxcIiA/IHNsb3RTdGF0ZS5yZXNpemFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogUHVibGlzaGVzIGVhY2ggcGFuZWwncyBsaXZlIHBpeGVsIHdpZHRoIGFzIGEgbGF5b3V0IENTUyB2YXIgKGUuZy5cbiAqIGAtLWRzLWxheW91dC1yaWdodFBhbmVsLXdpZHRoYCksIHRyYWNraW5nIGRyYWctIGFuZCB3aW5kb3ctcmVzaXplcy4gQSBoaWRkZW5cbiAqIHBhcnQgKG5vIGhvc3Qgbm9kZSkgcmVhZHMgYDBweGAsIHNvIHRoZSB2YXIgaXMgYWx3YXlzIGRlZmluZWQuIE9uZVxuICogYHVzZUxheW91dFZhcmAgcGVyIHNsb3QgaW4gYFBBTkVMX1dJRFRIX1ZBUmAuXG4gKi9cbmNvbnN0IHVzZUdsb2JhbENzc1ZhcmlhYmxlcyA9IChzbG90SG9zdHM6IFBvcnRhbFRhcmdldHMpOiB2b2lkID0+IHtcbiAgY29uc3QgY29udGVudFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5jb250ZW50KTtcbiAgY29uc3QgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5yaWdodFBhbmVsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldHM6IFtTbG90S2V5LCBMYXlvdXRWYXJIYW5kbGVdW10gPSBbXG4gICAgICBbU2xvdC5jb250ZW50LCBjb250ZW50V2lkdGhDc3NWYXJdLFxuICAgICAgW1Nsb3QucmlnaHRQYW5lbCwgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyXSxcbiAgICBdO1xuICAgIGNvbnN0IG9ic2VydmVyczogUmVzaXplT2JzZXJ2ZXJbXSA9IFtdO1xuXG4gICAgdGFyZ2V0cy5mb3JFYWNoKChbc2xvdCwgaGFuZGxlXSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IHNsb3RIb3N0c1tzbG90XSA/PyBudWxsO1xuICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgIGhhbmRsZS5zZXQoXCIwcHhcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHB1Ymxpc2hOb2RlV2lkdGggPSAoKTogdm9pZCA9PlxuICAgICAgICBoYW5kbGUuc2V0KGAke25vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHhgKTtcbiAgICAgIHB1Ymxpc2hOb2RlV2lkdGgoKTtcbiAgICAgIC8vIGpzZG9tIChhbmQgb2xkIGJyb3dzZXJzKSBsYWNrIFJlc2l6ZU9ic2VydmVyIOKAlCBza2lwIGxpdmUgdHJhY2tpbmcgdGhlcmUuXG4gICAgICBpZiAodHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihwdWJsaXNoTm9kZVdpZHRoKTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSk7XG4gICAgICBvYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXJzLmZvckVhY2goKG9ic2VydmVyKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuICB9LCBbY29udGVudFdpZHRoQ3NzVmFyLCByaWdodFBhbmVsV2lkdGhDc3NWYXIsIHNsb3RIb3N0c10pO1xufTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIExheW91dCAtIHJlZ2lzdHJ5ICsgaG9zdHM7IG1hcmtlcnMgZGVjbGFyZS9wb3J0YWw7IHRoZSByZXNpemFibGUgcGFuZWwgcm93ICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8vIGBwb3NpdGlvbjogcmVsYXRpdmVgIGFuY2hvcnMgdGhlIGFic29sdXRlbHktcG9zaXRpb25lZCBzcGxpdCBzdGFjayBob3N0IGFuZFxuLy8gdGhlIGZsb2F0aW5nIHdpbmRvdy4gT3ZlcmZsb3cgaXMgbGVmdCB1bnRvdWNoZWQgKHZpc2libGUpIHNvIGEgcGFnZSByZWx5aW5nXG4vLyBvbiBkb2N1bWVudC9hbmNlc3RvciBzY3JvbGxpbmcgaXMgdW5hZmZlY3RlZCAtIHRoZSBvZmZzY3JlZW4gc3BsaXQgbGF5ZXJzIGFyZVxuLy8gY2xpcHBlZCBieSB0aGVpciBvd24gaG9zdCBiZWxvdywgbm90IGhlcmUuXG5jb25zdCBTdHlsZWRMYXlvdXQgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbi8vIFNvbG8tbW9kZSBob3N0OiBhIGxvbmUgcGFuZWwgKG5vIHJlc2l6YWJsZSBzaWJsaW5nKSBpcyBob3N0ZWQgaGVyZSBpbnN0ZWFkIG9mXG4vLyBpbnNpZGUgcmVhY3QtcmVzaXphYmxlLXBhbmVscy4gTWF0Y2hlcyB0aGUgcGVyLXBhbmVsIGhvc3QgdGhlIEdyb3VwIHJlbmRlcnNcbi8vIChgcmVsYXRpdmVgICsgZnVsbC1ibGVlZCkgc28gY29udGVudCByZWZsb3dzL3Njcm9sbHMgaWRlbnRpY2FsbHkgZWl0aGVyIHdheS5cbmNvbnN0IFN0eWxlZFNvbG9Ib3N0ID0gc3R5bGVkLmRpdih7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbn0pO1xuXG4vLyBGdWxsLWFyZWEgb3ZlcmxheSBhdCB0aGUgbGF5b3V0IHJvb3QgdGhhdCBob3N0cyB0aGUgbW9iaWxlIHNwbGl0IHN0YWNrLiBUaGVcbi8vIGxhc3QgY2hpbGQgb2YgYFN0eWxlZExheW91dGAsIHNvIGl0IHN0YWNrcyBhYm92ZSB0aGUgcGFuZWwgcm93OyBgY29udGVudGAgYW5kXG4vLyB0aGUgc3BsaXQgdmlld3MgcG9ydGFsIHRoZWlyIHNsaWRpbmcgbGF5ZXJzIGluIGhlcmUuIGBwb2ludGVyLWV2ZW50czogbm9uZWBcbi8vIHNvIGl0IG5ldmVyIGJsb2NrcyB0aGUgbGF5b3V0IGJlbmVhdGggLSBlYWNoIGxheWVyIHJlLWVuYWJsZXMgZXZlbnRzIHdoZW5cbi8vIGl0J3MgdGhlIGFjdGl2ZSAoZnJvbnQpIHZpZXcuIGBvdmVyZmxvdzogaGlkZGVuYCBjbGlwcyB0aGUgaW5hY3RpdmUgbGF5ZXJzJ1xuLy8gb2Zmc2NyZWVuIHJlc3RpbmcgcG9zaXRpb24gKHRyYW5zbGF0ZVggcGFzdCB0aGUgZWRnZSkgc28gdGhleSBkb24ndCB3aWRlblxuLy8gdGhlIHBhZ2UgLSBzY29wZWQgaGVyZSwgbm90IG9uIHRoZSByb290LCBzbyBpdCBuZXZlciBhZmZlY3RzIHBhZ2Ugc2Nyb2xsaW5nLlxuY29uc3QgU3R5bGVkTW9iaWxlU3BsaXRTdGFja0hvc3QgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgaW5zZXQ6IDAsXG4gIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIixcbn0pO1xuXG5mdW5jdGlvbiBMYXlvdXRCYXNlKHtcbiAgY2hpbGRyZW4sXG4gIHBlcnNpc3RlbmNlS2V5LFxuICBzdG9yYWdlLFxufTogTGF5b3V0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBbZGVjbGFyZWQsIHNldERlY2xhcmVkXSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsUmVnPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IHsgc3RhdGU6IGxheW91dFN0YXRlLCAuLi5wYW5lbENhbGxiYWNrcyB9ID0gdXNlTGF5b3V0KCk7XG4gIGNvbnN0IHBlcnNpc3RlbmNlID0gdXNlTGF5b3V0UGVyc2lzdGVuY2UoKTtcbiAgY29uc3QgcmVzb2x2ZWRLZXkgPSBwZXJzaXN0ZW5jZUtleSA/PyBwZXJzaXN0ZW5jZS5wZXJzaXN0ZW5jZUtleTtcbiAgY29uc3QgcmVzb2x2ZWRTdG9yYWdlID0gc3RvcmFnZSA/PyBwZXJzaXN0ZW5jZS5zdG9yYWdlO1xuXG4gIC8vIEJlbG93IHRoZSBtb2JpbGUgYnJlYWtwb2ludCB0aGUgcmlnaHRQYW5lbCByZW5kZXJzIGFzIGEgYm90dG9tIHNoZWV0IChpdHNcbiAgLy8gbWFya2VyIHJlbmRlcnMgdGhlIFNoZWV0IGl0c2VsZikgLSBhbiBhdXRvbWF0aWMsIHJlbmRlci1sZXZlbCBhZGFwdGF0aW9uLlxuICAvLyBUaGUgc3RvcmVkIHZhcmlhbnQgaXMgdW50b3VjaGVkLCBzbyByZXNpemluZyBiYWNrIHRvIGRlc2t0b3AgcmVzdG9yZXMgdGhlXG4gIC8vIGV4YWN0IHByZXNlbnRhdGlvbiAoZG9ja2VkIG9yIGZsb2F0aW5nKSB0aGUgdXNlciBsZWZ0LlxuICBjb25zdCB7IGlzTW9iaWxlIH0gPSB1c2VCcmVha3BvaW50cygpO1xuICBjb25zdCBpc1JpZ2h0UGFuZWxTaGVldCA9IGlzTW9iaWxlO1xuXG4gIC8vIFRoZSBtb2JpbGUgc3BsaXQgc3RhY2sncyBzaGFyZWQgc3RhdGUsIHNjb3BlZCB0byB0aGlzIExheW91dDogdGhlIGhvc3RcbiAgLy8gZWxlbWVudCBtYXJrZXJzIHBvcnRhbCBpbnRvIChvbmx5IHJlbmRlcmVkIHdoaWxlIHRoZSBzdGFjayBhcHBsaWVzIHRvIHRoZVxuICAvLyB2aWV3cG9ydCkgYW5kIGhvdyBtYW55IHNwbGl0IHZpZXdzIGFyZSBtb3VudGVkIChhIGNvdW50IHRvbGVyYXRlcyB0cmFuc2llbnRcbiAgLy8gZG91YmxlLW1vdW50cykuIGBjb250ZW50YCByZWFkcyBwcmVzZW5jZSB0byBkZWNpZGUgd2hldGhlciB0byBqb2luIHRoZVxuICAvLyBzdGFjazsgYm90aCBhcmUgcHVibGlzaGVkIHRvZ2V0aGVyIHZpYSBNb2JpbGVTcGxpdFN0YWNrQ29udGV4dC5cbiAgY29uc3Qgc2hvd01vYmlsZVNwbGl0U3RhY2sgPSB1c2VNb2JpbGVTcGxpdFZpZXdFbmFibGVkKCk7XG4gIGNvbnN0IFttb2JpbGVTcGxpdFN0YWNrSG9zdCwgc2V0TW9iaWxlU3BsaXRTdGFja0hvc3RdID1cbiAgICB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbc3BsaXRDb3VudCwgc2V0U3BsaXRDb3VudF0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgcmVnaXN0ZXJTcGxpdCA9IHVzZUNhbGxiYWNrPFxuICAgIE1vYmlsZVNwbGl0U3RhY2tWYWx1ZVtcInJlZ2lzdGVyU3BsaXRcIl1cbiAgPigoKSA9PiB7XG4gICAgc2V0U3BsaXRDb3VudCgoY291bnQpID0+IGNvdW50ICsgMSk7XG4gICAgcmV0dXJuICgpID0+IHNldFNwbGl0Q291bnQoKGNvdW50KSA9PiBjb3VudCAtIDEpO1xuICB9LCBbXSk7XG4gIGNvbnN0IG1vYmlsZVNwbGl0U3RhY2sgPSB1c2VNZW1vPE1vYmlsZVNwbGl0U3RhY2tWYWx1ZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIGhvc3Q6IG1vYmlsZVNwbGl0U3RhY2tIb3N0LFxuICAgICAgaXNTcGxpdFByZXNlbnQ6IHNwbGl0Q291bnQgPiAwLFxuICAgICAgcmVnaXN0ZXJTcGxpdCxcbiAgICB9KSxcbiAgICBbbW9iaWxlU3BsaXRTdGFja0hvc3QsIHNwbGl0Q291bnQsIHJlZ2lzdGVyU3BsaXRdXG4gICk7XG5cbiAgLy8gQSBmbG9hdGluZyByaWdodFBhbmVsIHN0YXlzIHZpc2libGUgKGl0cyBtYXJrZXIga2VlcHMgcmVuZGVyaW5nIGNvbnRlbnQpXG4gIC8vIGJ1dCBsZWF2ZXMgdGhlIHJlc2l6YWJsZSByb3cgLSBleGFjdGx5IGxpa2UgYSBoaWRkZW4gcGFuZWwgZG9lcy4gVGhlXG4gIC8vIG1vYmlsZSBzaGVldCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIGZsb2F0LiBGbG9hdCBpcyBhXG4gIC8vIGRlc2t0b3AgcHJlc2VudGF0aW9uLCBzbyBvbmx5IG1vZGUgYHRydWVgIGVuYWJsZXMgaXQuIFRoZSBzdG9yZSdzIHZhcmlhbnRcbiAgLy8gc3RhcnRzIHVuc2V0OyB0aGUgbWFya2VyJ3MgZGVjbGFyZWQgYHZhcmlhbnRgIHByb3AgaXMgdGhlIGluaXRpYWxcbiAgLy8gcHJlc2VudGF0aW9uIHVudGlsIHRoZSBmaXJzdCBgc2V0VmFyaWFudGAgd3JpdGVzIHRvIHRoZSBzdG9yZS5cbiAgY29uc3QgcGFuZWxzRW5hYmxlZCA9IHVzZUxheW91dFBhbmVsc0VuYWJsZWQoKTtcbiAgY29uc3QgcmlnaHRQYW5lbFZhcmlhbnQgPVxuICAgIGxheW91dFN0YXRlW1Nsb3QucmlnaHRQYW5lbF0udmFyaWFudCA/P1xuICAgIGRlY2xhcmVkW1Nsb3QucmlnaHRQYW5lbF0/LnZhcmlhbnQgPz9cbiAgICBcInNpZGViYXJcIjtcbiAgY29uc3QgaXNSaWdodFBhbmVsRmxvYXRpbmcgPVxuICAgIHBhbmVsc0VuYWJsZWQgPT09IHRydWUgJiZcbiAgICAhaXNSaWdodFBhbmVsU2hlZXQgJiZcbiAgICByaWdodFBhbmVsVmFyaWFudCA9PT0gXCJmbG9hdFwiO1xuXG4gIGNvbnN0IGlzU2hvd24gPSAoc2xvdDogU2xvdEtleSk6IGJvb2xlYW4gPT5cbiAgICBsYXlvdXRTdGF0ZVtzbG90XS52aXNpYmxlICYmXG4gICAgIShzbG90ID09PSBTbG90LnJpZ2h0UGFuZWwgJiYgKGlzUmlnaHRQYW5lbEZsb2F0aW5nIHx8IGlzUmlnaHRQYW5lbFNoZWV0KSk7XG5cbiAgLy8gU2xvdHMga2VwdCBtb3VudGVkIHRocm91Z2ggdGhlaXIgZXhpdCBhbmltYXRpb24gKHJlcG9ydGVkIHZpYVxuICAvLyBgdXNlUGFuZWxQcmVzZW5jZWApLiBBIHByZXNlbnQtYnV0LWhpZGRlbiBzbG90IHN0YXlzIGluIHRoZSByb3cgc28gaXRzXG4gIC8vIGNsb3NlIGFuaW1hdGlvbiBjYW4gcGxheTsgaXQncyByZW1vdmVkIG9uY2UgcHJlc2VuY2UgZmxpcHMgZmFsc2UuXG4gIGNvbnN0IFtwcmVzZW50LCBzZXRQcmVzZW50XSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIGJvb2xlYW4+Pj4oe30pO1xuICBjb25zdCBwcmVzZW5jZSA9IHVzZU1lbW88UGFuZWxQcmVzZW5jZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHNldFByZXNlbnQ6IChzbG90LCBpc1ByZXNlbnQpID0+XG4gICAgICAgIHNldFByZXNlbnQoKHByZXYpID0+XG4gICAgICAgICAgcHJldltzbG90XSA9PT0gaXNQcmVzZW50ID8gcHJldiA6IHsgLi4ucHJldiwgW3Nsb3RdOiBpc1ByZXNlbnQgfVxuICAgICAgICApLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgLy8gQW5pbWF0aW9uIGNvbnRyb2wgZm9yIHRoZSBkb2NrZWQgc2lkZSBwYW5lbHMnIG9wZW4vY2xvc2Ugd2lkdGggc2xpZGUuIEFsbFxuICAvLyByZWYtYmFzZWQgb24gcHVycG9zZTogcmVnaXN0ZXJpbmcgaGFuZGxlcy9lbGVtZW50cyBhbmQgdG9nZ2xpbmcgc3VwcHJlc3Npb25cbiAgLy8gaGFwcGVuIGR1cmluZyBjb21taXRzIGFuZCBwZXItZnJhbWUgLSBub25lIG9mIGl0IG1heSByZS1yZW5kZXIgdGhlIExheW91dC5cbiAgY29uc3QgcGFuZWxIYW5kbGVzID0gdXNlUmVmPFxuICAgIFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsSW1wZXJhdGl2ZUhhbmRsZSB8IG51bGw+PlxuICA+KHt9KTtcbiAgY29uc3QgcGFuZWxFbGVtZW50cyA9IHVzZVJlZjxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBIVE1MRWxlbWVudCB8IG51bGw+Pj4oXG4gICAge31cbiAgKTtcbiAgY29uc3QgcmVzaXplU3VwcHJlc3NlZCA9IHVzZVJlZjxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBib29sZWFuPj4+KHt9KTtcbiAgY29uc3QgYW5pbWF0aW9uQ29udHJvbCA9IHVzZU1lbW88UGFuZWxBbmltYXRpb25Db250cm9sPihcbiAgICAoKSA9PiAoe1xuICAgICAgc2V0SGFuZGxlOiAoc2xvdCwgaGFuZGxlKSA9PiB7XG4gICAgICAgIHBhbmVsSGFuZGxlcy5jdXJyZW50W3Nsb3RdID0gaGFuZGxlO1xuICAgICAgfSxcbiAgICAgIGdldEhhbmRsZTogKHNsb3QpID0+IHBhbmVsSGFuZGxlcy5jdXJyZW50W3Nsb3RdID8/IG51bGwsXG4gICAgICBzZXRFbGVtZW50OiAoc2xvdCwgZWxlbWVudCkgPT4ge1xuICAgICAgICBwYW5lbEVsZW1lbnRzLmN1cnJlbnRbc2xvdF0gPSBlbGVtZW50O1xuICAgICAgfSxcbiAgICAgIGdldEVsZW1lbnQ6IChzbG90KSA9PiBwYW5lbEVsZW1lbnRzLmN1cnJlbnRbc2xvdF0gPz8gbnVsbCxcbiAgICAgIHNldFJlc2l6ZVN1cHByZXNzZWQ6IChzbG90LCBzdXBwcmVzc2VkKSA9PiB7XG4gICAgICAgIHJlc2l6ZVN1cHByZXNzZWQuY3VycmVudFtzbG90XSA9IHN1cHByZXNzZWQ7XG4gICAgICB9LFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG4gIC8vIFN0YWJsZSBwZXItc2xvdCByZWYgY2FsbGJhY2tzIC0gYSBmcmVzaCBjYWxsYmFjayBpZGVudGl0eSBwZXIgcmVuZGVyIHdvdWxkXG4gIC8vIG1ha2UgUmVhY3QgZGV0YWNoL3JlYXR0YWNoIHRoZSByZWZzIG9uIGV2ZXJ5IExheW91dCByZS1yZW5kZXIuXG4gIGNvbnN0IHBhbmVsUmVmQ2FsbGJhY2tzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2FsbGJhY2tzID0gbmV3IE1hcDxcbiAgICAgIHN0cmluZyxcbiAgICAgIChoYW5kbGU6IFBhbmVsSW1wZXJhdGl2ZUhhbmRsZSB8IG51bGwpID0+IHZvaWRcbiAgICA+KCk7XG4gICAgY29uc3QgZWxlbWVudENhbGxiYWNrcyA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICAoZWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB2b2lkXG4gICAgPigpO1xuICAgIHJldHVybiB7XG4gICAgICBoYW5kbGVGb3I6IChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBjYWxsYmFjayA9IGhhbmRsZUNhbGxiYWNrcy5nZXQoaWQpO1xuICAgICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgICAgY2FsbGJhY2sgPSAoaGFuZGxlKSA9PlxuICAgICAgICAgICAgYW5pbWF0aW9uQ29udHJvbC5zZXRIYW5kbGUoaWQgYXMgU2xvdEtleSwgaGFuZGxlKTtcbiAgICAgICAgICBoYW5kbGVDYWxsYmFja3Muc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICAgIGVsZW1lbnRGb3I6IChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBjYWxsYmFjayA9IGVsZW1lbnRDYWxsYmFja3MuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrID0gKGVsZW1lbnQpID0+XG4gICAgICAgICAgICBhbmltYXRpb25Db250cm9sLnNldEVsZW1lbnQoaWQgYXMgU2xvdEtleSwgZWxlbWVudCk7XG4gICAgICAgICAgZWxlbWVudENhbGxiYWNrcy5zZXQoaWQsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FsbGJhY2s7XG4gICAgICB9LFxuICAgIH07XG4gIH0sIFthbmltYXRpb25Db250cm9sXSk7XG4gIGNvbnN0IHNob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiBPYmplY3QudmFsdWVzKHJlc2l6ZVN1cHByZXNzZWQuY3VycmVudCkuc29tZShCb29sZWFuKSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IHJlZ2lzdHJ5ID0gdXNlTWVtbzxQYW5lbFJlZ2lzdHJ5PihcbiAgICAoKSA9PiAoe1xuICAgICAgcmVnaXN0ZXI6IChzbG90LCByZWcpID0+XG4gICAgICAgIHNldERlY2xhcmVkKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBbc2xvdF06IHJlZyB9KSksXG4gICAgICB1bnJlZ2lzdGVyOiAoc2xvdCkgPT5cbiAgICAgICAgc2V0RGVjbGFyZWQoKHByZXYpID0+IHtcbiAgICAgICAgICBpZiAoIShzbG90IGluIHByZXYpKSByZXR1cm4gcHJldjtcbiAgICAgICAgICBjb25zdCBuZXh0ID0geyAuLi5wcmV2IH07XG4gICAgICAgICAgZGVsZXRlIG5leHRbc2xvdF07XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH0pLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgY29uc3QgeyBwb3J0YWxUYXJnZXRzLCBzbG90SG9zdHMsIHNsb3RIb3N0UmVmcywgZmxvYXRIb3N0UmVmIH0gPVxuICAgIHVzZUZsb2F0YWJsZVBvcnRhbFRhcmdldHMoe1xuICAgICAgc2xvdHM6IFBBTkVMX09SREVSLFxuICAgICAgZmxvYXRhYmxlU2xvdDogU2xvdC5yaWdodFBhbmVsLFxuICAgICAgaXNGbG9hdGluZzogaXNSaWdodFBhbmVsRmxvYXRpbmcsXG4gICAgfSk7XG5cbiAgdXNlR2xvYmFsQ3NzVmFyaWFibGVzKHNsb3RIb3N0cyk7XG5cbiAgLy8gUGFuZWxzIHRoYXQgZXhpc3QgaW4gdGhlIGxheW91dCwgcmVnYXJkbGVzcyBvZiB2aXNpYmlsaXR5LiBEcml2ZXMgdGhlXG4gIC8vIHNvbG8tdnMtcmVzaXphYmxlIGRlY2lzaW9uIGJlbG93IC0ga2V5ZWQgb24gREVDTEFSRUQgKG5vdCBzaG93bikgc28gdGhhdFxuICAvLyBzaG93aW5nL2hpZGluZyBhIHBhbmVsIG5ldmVyIGZsaXBzIHRoZSBtb2RlLlxuICBjb25zdCBkZWNsYXJlZFNsb3RzID0gUEFORUxfT1JERVIuZmlsdGVyKChzbG90KSA9PiBkZWNsYXJlZFtzbG90XSk7XG5cbiAgLy8gU29sbyBtb2RlOiBhIHNpbmdsZSBwYW5lbCBpcyBkZWNsYXJlZCAoZS5nLiBqdXN0IGBDb250ZW50YCwgd2l0aCBub1xuICAvLyBSaWdodFBhbmVsL0xlZnRQYW5lbC9TcGxpdCBpbiB0aGUgdHJlZSkgLSBub3RoaW5nIHRvIHJlc2l6ZSBhZ2FpbnN0LCBzbyBob3N0XG4gIC8vIGl0IGluIGEgcGxhaW4gZGl2IGFuZCBza2lwIHJlYWN0LXJlc2l6YWJsZS1wYW5lbHMgZW50aXJlbHkuIEJlY2F1c2UgdGhlXG4gIC8vIGNoZWNrIGlzIG9uIERFQ0xBUkVEIHBhbmVscywgdG9nZ2xpbmcgYSAqZGVjbGFyZWQqIHBhbmVsJ3MgdmlzaWJpbGl0eSBrZWVwc1xuICAvLyB0aGUgbW9kZSBzdGFibGUsIHNvIGBDb250ZW50YCBpcyBuZXZlciByZW1vdW50ZWQgYnkgYSBzaG93L2hpZGUuIFRoZSBtb2RlXG4gIC8vIG9ubHkgZmxpcHMgd2hlbiBhIHBhbmVsIG1hcmtlciBpcyBhZGRlZCB0byAvIHJlbW92ZWQgZnJvbSB0aGUgdHJlZSAoYVxuICAvLyBzdHJ1Y3R1cmFsIGNoYW5nZSksIHdoZXJlIGEgb25lLXRpbWUgcmVtb3VudCBpcyBhY2NlcHRhYmxlLlxuICBjb25zdCBpc1NvbG8gPSBkZWNsYXJlZFNsb3RzLmxlbmd0aCA8PSAxO1xuICBjb25zdCBzb2xvU2xvdCA9IGRlY2xhcmVkU2xvdHNbMF07XG5cbiAgLy8gY29udGVudCBmbGV4ZXMgKG5vIGZpeGVkIHNpemUpOyBvdGhlcnMgdXNlIHRoZSBkZWNsYXJlZCBkZWZhdWx0LCBmYWxsaW5nXG4gIC8vIGJhY2sgdG8gdGhlIHBlcnNpc3RlZC9jb25maWcgc2l6ZS5cbiAgY29uc3QgZGVmYXVsdFNpemVGb3IgPSAoc2xvdDogU2xvdEtleSk6IFNpemUgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChzbG90ID09PSBTbG90LmNvbnRlbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGRlY2xhcmVkW3Nsb3RdPy5kZWZhdWx0U2l6ZSA/PyBsYXlvdXRTdGF0ZVtzbG90XS5zaXplO1xuICB9O1xuXG4gIC8vIE9ubHkgdGhlIHBhbmVscyB0aGF0IGFyZSBkZWNsYXJlZCBBTkQgKGN1cnJlbnRseSBzaG93biBPUiBtaWQtZXhpdCkuIEFcbiAgLy8gaGlkZGVuLWJ1dC1wcmVzZW50IHNsb3QgbGluZ2VycyBzbyBpdHMgY2xvc2UgYW5pbWF0aW9uIGNhbiBwbGF5OyBvdGhlcndpc2VcbiAgLy8gY2xvc2VkIHBhbmVscyByZXNlcnZlIG5vIHNwYWNlLlxuICBjb25zdCBwYW5lbEl0ZW1zOiBQYW5lbEl0ZW1bXSA9IFBBTkVMX09SREVSLmZpbHRlcihcbiAgICAoc2xvdCkgPT4gZGVjbGFyZWRbc2xvdF0gJiYgKGlzU2hvd24oc2xvdCkgfHwgcHJlc2VudFtzbG90XSlcbiAgKS5tYXAoKHNsb3QpID0+ICh7XG4gICAgaWQ6IHNsb3QsXG4gICAgZGVmYXVsdFNpemU6IGRlZmF1bHRTaXplRm9yKHNsb3QpLFxuICAgIG1pblNpemU6IGRlY2xhcmVkW3Nsb3RdPy5taW5TaXplID8/IGxheW91dFN0YXRlW3Nsb3RdLm1pblNpemUsXG4gICAgbWF4U2l6ZTogZGVjbGFyZWRbc2xvdF0/Lm1heFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0ubWF4U2l6ZSxcbiAgICBjb2xsYXBzaWJsZTogc2xvdCAhPT0gU2xvdC5jb250ZW50ICYmIChkZWNsYXJlZFtzbG90XT8uY29sbGFwc2libGUgPz8gdHJ1ZSksXG4gICAgcmVzaXphYmxlOlxuICAgICAgZGVjbGFyZWRbc2xvdF0/LnJlc2l6YWJsZSA/PyByZXNpemFibGVGcm9tU3RhdGUobGF5b3V0U3RhdGVbc2xvdF0pLFxuICB9KSk7XG5cbiAgLy8gU29sbyBtb2RlIGhvc3RzIHRoZSBsb25lIHBhbmVsIGluIGEgcGxhaW4gZGl2LCBubyByZXNpemFibGUgR3JvdXAuIEEgaGlkZGVuXG4gIC8vIGxvbmUgcGFuZWwgcmVuZGVycyBub3RoaW5nIChDb250ZW50IGlzIGFsd2F5cyBzaG93bikuXG4gIGNvbnN0IHNvbG9Ib3N0ID1cbiAgICBzb2xvU2xvdCAmJiBpc1Nob3duKHNvbG9TbG90KSA/IChcbiAgICAgIDxTdHlsZWRTb2xvSG9zdCByZWY9e3Nsb3RIb3N0UmVmc1tzb2xvU2xvdF19IC8+XG4gICAgKSA6IG51bGw7XG5cbiAgLy8gVGhlIHJlc2l6YWJsZSBHcm91cC4gYGtleWAgPSB0aGUgcGVyc2lzdGVuY2UgbmFtZXNwYWNlOiByZWFjdC1yZXNpemFibGUtcGFuZWxzXG4gIC8vIHJlYWRzIHN0b3JlZCBzaXplcyBvbmx5IG9uIG1vdW50LCBzbyByZW1vdW50IHdoZW4gdGhlIGtleSBjaGFuZ2VzIHRvIGxvYWRcbiAgLy8gdGhhdCBpbnN0YW5jZSdzIHNpemVzIChwZXItcm91dGUgc2l6ZSBtZW1vcnkpLiBUaGUga2V5IG5ldmVyIGNoYW5nZXMgb25cbiAgLy8gcGFuZWwgb3Blbi9jbG9zZSwgc28gbm9ybWFsIHRvZ2dsaW5nIHN0YXlzIHJlbW91bnQtZnJlZS5cbiAgY29uc3QgcGFuZWxHcm91cCA9XG4gICAgcGFuZWxJdGVtcy5sZW5ndGggPiAwID8gKFxuICAgICAgPFBhbmVsXG4gICAgICAgIGtleT17cmVzb2x2ZWRLZXl9XG4gICAgICAgIHBhbmVscz17cGFuZWxJdGVtc31cbiAgICAgICAgcGVyc2lzdGVuY2VLZXk9e3Jlc29sdmVkS2V5fVxuICAgICAgICBzdG9yYWdlPXtyZXNvbHZlZFN0b3JhZ2V9XG4gICAgICAgIGhvc3RGb3I9eyhpZCkgPT4gc2xvdEhvc3RSZWZzW2lkIGFzIFNsb3RLZXldfVxuICAgICAgICBvblJlc2l6ZT17KGlkLCBzaXplKSA9PiBwYW5lbENhbGxiYWNrc1tpZCBhcyBTbG90S2V5XS5yZXNpemUoc2l6ZSl9XG4gICAgICAgIG9uQ29sbGFwc2U9eyhpZCkgPT4gcGFuZWxDYWxsYmFja3NbaWQgYXMgU2xvdEtleV0uaGlkZSgpfVxuICAgICAgICBwYW5lbEhhbmRsZUZvcj17cGFuZWxSZWZDYWxsYmFja3MuaGFuZGxlRm9yfVxuICAgICAgICBwYW5lbEVsZW1lbnRGb3I9e3BhbmVsUmVmQ2FsbGJhY2tzLmVsZW1lbnRGb3J9XG4gICAgICAgIHNob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2s9e3Nob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2t9XG4gICAgICAvPlxuICAgICkgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsUmVnaXN0cnlDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtyZWdpc3RyeX0+XG4gICAgICA8UGFuZWxEZWNsYXJhdGlvbnNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtkZWNsYXJlZH0+XG4gICAgICAgIDxQYW5lbFByZXNlbmNlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17cHJlc2VuY2V9PlxuICAgICAgICAgIDxQYW5lbEFuaW1hdGlvbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2FuaW1hdGlvbkNvbnRyb2x9PlxuICAgICAgICAgICAgPExheW91dFBvcnRhbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3BvcnRhbFRhcmdldHN9PlxuICAgICAgICAgICAgICA8TGF5b3V0RmxvYXREcmFnUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPE1vYmlsZVNwbGl0U3RhY2tDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXttb2JpbGVTcGxpdFN0YWNrfT5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRMYXlvdXQgZGF0YS1kcy1pZD1cIkxheW91dFwiPlxuICAgICAgICAgICAgICAgICAgICB7aXNTb2xvID8gc29sb0hvc3QgOiBwYW5lbEdyb3VwfVxuICAgICAgICAgICAgICAgICAgICB7aXNSaWdodFBhbmVsRmxvYXRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRTdGF0ZVtTbG90LnJpZ2h0UGFuZWxdLnZpc2libGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPExheW91dEZsb2F0IGhvc3RSZWY9e2Zsb2F0SG9zdFJlZn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgIHtzaG93TW9iaWxlU3BsaXRTdGFjayAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1vYmlsZVNwbGl0U3RhY2tIb3N0XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY9e3NldE1vYmlsZVNwbGl0U3RhY2tIb3N0fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZExheW91dD5cbiAgICAgICAgICAgICAgICA8L01vYmlsZVNwbGl0U3RhY2tDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgICA8L0xheW91dEZsb2F0RHJhZ1Byb3ZpZGVyPlxuICAgICAgICAgICAgPC9MYXlvdXRQb3J0YWxDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgIDwvUGFuZWxBbmltYXRpb25Db250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L1BhbmVsUHJlc2VuY2VDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9QYW5lbERlY2xhcmF0aW9uc0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9QYW5lbFJlZ2lzdHJ5Q29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIFB1YmxpYyBMYXlvdXQgLSB0aGUgcmVzaXphYmxlIHBhbmVsIHJvdyArIGNvbXBvdW5kIHBhcnRzIGFzIHN0YXRpY3MgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxudHlwZSBMYXlvdXRDb21wb25lbnQgPSB0eXBlb2YgTGF5b3V0QmFzZSAmIHtcbiAgUHJvdmlkZXI6IHR5cGVvZiBMYXlvdXRQcm92aWRlcjtcbiAgTGVmdFBhbmVsOiB0eXBlb2YgTGVmdFBhbmVsO1xuICBMZWZ0UGFuZWxIZWFkZXI6IHR5cGVvZiBMZWZ0UGFuZWxIZWFkZXI7XG4gIExlZnRQYW5lbEZvb3RlcjogdHlwZW9mIExlZnRQYW5lbEZvb3RlcjtcbiAgUmlnaHRQYW5lbDogdHlwZW9mIFJpZ2h0UGFuZWw7XG4gIFJpZ2h0UGFuZWxIZWFkZXI6IHR5cGVvZiBSaWdodFBhbmVsSGVhZGVyO1xuICBSaWdodFBhbmVsRm9vdGVyOiB0eXBlb2YgUmlnaHRQYW5lbEZvb3RlcjtcbiAgQ29udGVudDogdHlwZW9mIENvbnRlbnQ7XG4gIFNwbGl0OiB0eXBlb2YgU3BsaXQ7XG4gIFNwbGl0SGVhZGVyOiB0eXBlb2YgU3BsaXRIZWFkZXI7XG4gIFNwbGl0Rm9vdGVyOiB0eXBlb2YgU3BsaXRGb290ZXI7XG59O1xuXG5leHBvcnQgY29uc3QgTGF5b3V0ID0gTGF5b3V0QmFzZSBhcyBMYXlvdXRDb21wb25lbnQ7XG5cbkxheW91dC5Qcm92aWRlciA9IExheW91dFByb3ZpZGVyO1xuTGF5b3V0LkxlZnRQYW5lbCA9IExlZnRQYW5lbDtcbkxheW91dC5MZWZ0UGFuZWxIZWFkZXIgPSBMZWZ0UGFuZWxIZWFkZXI7XG5MYXlvdXQuTGVmdFBhbmVsRm9vdGVyID0gTGVmdFBhbmVsRm9vdGVyO1xuTGF5b3V0LlJpZ2h0UGFuZWwgPSBSaWdodFBhbmVsO1xuTGF5b3V0LlJpZ2h0UGFuZWxIZWFkZXIgPSBSaWdodFBhbmVsSGVhZGVyO1xuTGF5b3V0LlJpZ2h0UGFuZWxGb290ZXIgPSBSaWdodFBhbmVsRm9vdGVyO1xuTGF5b3V0LkNvbnRlbnQgPSBDb250ZW50O1xuTGF5b3V0LlNwbGl0ID0gU3BsaXQ7XG5MYXlvdXQuU3BsaXRIZWFkZXIgPSBTcGxpdEhlYWRlcjtcbkxheW91dC5TcGxpdEZvb3RlciA9IFNwbGl0Rm9vdGVyO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFHcUIifQ== */"),StyledSoloHost=(0,_styled.default)("div",{target:"e1w0fcrp1",label:"StyledSoloHost"})({position:"relative",height:"100%",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9MYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlLXBhbmVsc1wiO1xuaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiLi4vSW50ZXJuYWwvUGFuZWwvUGFuZWxcIjtcbmltcG9ydCB0eXBlIHsgUGFuZWxJdGVtIH0gZnJvbSBcIi4uL0ludGVybmFsL1BhbmVsL1BhbmVsXCI7XG5pbXBvcnQgeyBMYXlvdXRGbG9hdCB9IGZyb20gXCIuLi9JbnRlcm5hbC9MYXlvdXRGbG9hdC9MYXlvdXRGbG9hdFwiO1xuaW1wb3J0IHsgdXNlQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUJyZWFrcG9pbnRzXCI7XG5pbXBvcnQgeyBQQU5FTF9PUkRFUiwgUEFORUxfV0lEVEhfVkFSLCBTbG90IH0gZnJvbSBcIi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0UGFuZWxzRW5hYmxlZCwgdXNlTGF5b3V0UGVyc2lzdGVuY2UgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQge1xuICBNb2JpbGVTcGxpdFN0YWNrQ29udGV4dCxcbiAgdHlwZSBNb2JpbGVTcGxpdFN0YWNrVmFsdWUsXG59IGZyb20gXCIuL1NwbGl0L01vYmlsZVNwbGl0Vmlldy91c2VNb2JpbGVTcGxpdFN0YWNrXCI7XG5pbXBvcnQgeyB1c2VNb2JpbGVTcGxpdFZpZXdFbmFibGVkIH0gZnJvbSBcIi4vU3BsaXQvTW9iaWxlU3BsaXRWaWV3L3VzZU1vYmlsZVNwbGl0Vmlld1wiO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tIFwiLi9MYXlvdXRQcm92aWRlclwiO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gXCIuL0NvbnRlbnQvQ29udGVudFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbCB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEhlYWRlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEZvb3RlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbFwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsSGVhZGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsRm9vdGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgU3BsaXQgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdFwiO1xuaW1wb3J0IHsgU3BsaXRIZWFkZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEhlYWRlclwiO1xuaW1wb3J0IHsgU3BsaXRGb290ZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEZvb3RlclwiO1xuaW1wb3J0IHtcbiAgTGF5b3V0UG9ydGFsQ29udGV4dCxcbiAgUGFuZWxSZWdpc3RyeUNvbnRleHQsXG4gIFBhbmVsRGVjbGFyYXRpb25zQ29udGV4dCxcbiAgUGFuZWxQcmVzZW5jZUNvbnRleHQsXG4gIFBhbmVsQW5pbWF0aW9uQ29udGV4dCxcbiAgdHlwZSBQb3J0YWxUYXJnZXRzLFxuICB0eXBlIFBhbmVsUmVnLFxuICB0eXBlIFBhbmVsUmVnaXN0cnksXG4gIHR5cGUgUGFuZWxQcmVzZW5jZSxcbiAgdHlwZSBQYW5lbEFuaW1hdGlvbkNvbnRyb2wsXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzIH0gZnJvbSBcIi4vdXNlRmxvYXRhYmxlUG9ydGFsVGFyZ2V0c1wiO1xuaW1wb3J0IHsgTGF5b3V0RmxvYXREcmFnUHJvdmlkZXIgfSBmcm9tIFwiLi4vSW50ZXJuYWwvTGF5b3V0RmxvYXQvTGF5b3V0RmxvYXREcmFnUHJvdmlkZXJcIjtcbmltcG9ydCB7IHVzZUxheW91dFZhciwgdHlwZSBMYXlvdXRWYXJIYW5kbGUgfSBmcm9tIFwiLi9MYXlvdXRDc3NWYXJzXCI7XG5pbXBvcnQgeyB1c2VMYXlvdXQgfSBmcm9tIFwiLi91c2VMYXlvdXRcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0UHJvcHMsIExheW91dFN0YXRlLCBTaXplLCBTbG90S2V5IH0gZnJvbSBcIi4vLXR5cGVzXCI7XG5cbi8vIE9ubHkgdGhlIHNpZGUgcGFuZWxzIGNhcnJ5IGByZXNpemFibGVgIGluIHN0YXRlIChpdCBjb21lcyBmcm9tIHRoZSBwcm92aWRlclxuLy8gY29uZmlnKTsgdGhlIGNvbnRlbnQvc3BsaXR2aWV3IHNsb3RzIHRha2UgaXQgZnJvbSB0aGVpciBkZWNsYXJhdGlvbiBhbG9uZS5cbmNvbnN0IHJlc2l6YWJsZUZyb21TdGF0ZSA9IChcbiAgc2xvdFN0YXRlOiBMYXlvdXRTdGF0ZVtTbG90S2V5XVxuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9PlxuICBzbG90U3RhdGUua2luZCA9PT0gXCJzaWRlUGFuZWxcIiA/IHNsb3RTdGF0ZS5yZXNpemFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogUHVibGlzaGVzIGVhY2ggcGFuZWwncyBsaXZlIHBpeGVsIHdpZHRoIGFzIGEgbGF5b3V0IENTUyB2YXIgKGUuZy5cbiAqIGAtLWRzLWxheW91dC1yaWdodFBhbmVsLXdpZHRoYCksIHRyYWNraW5nIGRyYWctIGFuZCB3aW5kb3ctcmVzaXplcy4gQSBoaWRkZW5cbiAqIHBhcnQgKG5vIGhvc3Qgbm9kZSkgcmVhZHMgYDBweGAsIHNvIHRoZSB2YXIgaXMgYWx3YXlzIGRlZmluZWQuIE9uZVxuICogYHVzZUxheW91dFZhcmAgcGVyIHNsb3QgaW4gYFBBTkVMX1dJRFRIX1ZBUmAuXG4gKi9cbmNvbnN0IHVzZUdsb2JhbENzc1ZhcmlhYmxlcyA9IChzbG90SG9zdHM6IFBvcnRhbFRhcmdldHMpOiB2b2lkID0+IHtcbiAgY29uc3QgY29udGVudFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5jb250ZW50KTtcbiAgY29uc3QgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5yaWdodFBhbmVsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldHM6IFtTbG90S2V5LCBMYXlvdXRWYXJIYW5kbGVdW10gPSBbXG4gICAgICBbU2xvdC5jb250ZW50LCBjb250ZW50V2lkdGhDc3NWYXJdLFxuICAgICAgW1Nsb3QucmlnaHRQYW5lbCwgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyXSxcbiAgICBdO1xuICAgIGNvbnN0IG9ic2VydmVyczogUmVzaXplT2JzZXJ2ZXJbXSA9IFtdO1xuXG4gICAgdGFyZ2V0cy5mb3JFYWNoKChbc2xvdCwgaGFuZGxlXSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IHNsb3RIb3N0c1tzbG90XSA/PyBudWxsO1xuICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgIGhhbmRsZS5zZXQoXCIwcHhcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHB1Ymxpc2hOb2RlV2lkdGggPSAoKTogdm9pZCA9PlxuICAgICAgICBoYW5kbGUuc2V0KGAke25vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHhgKTtcbiAgICAgIHB1Ymxpc2hOb2RlV2lkdGgoKTtcbiAgICAgIC8vIGpzZG9tIChhbmQgb2xkIGJyb3dzZXJzKSBsYWNrIFJlc2l6ZU9ic2VydmVyIOKAlCBza2lwIGxpdmUgdHJhY2tpbmcgdGhlcmUuXG4gICAgICBpZiAodHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihwdWJsaXNoTm9kZVdpZHRoKTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSk7XG4gICAgICBvYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXJzLmZvckVhY2goKG9ic2VydmVyKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuICB9LCBbY29udGVudFdpZHRoQ3NzVmFyLCByaWdodFBhbmVsV2lkdGhDc3NWYXIsIHNsb3RIb3N0c10pO1xufTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIExheW91dCAtIHJlZ2lzdHJ5ICsgaG9zdHM7IG1hcmtlcnMgZGVjbGFyZS9wb3J0YWw7IHRoZSByZXNpemFibGUgcGFuZWwgcm93ICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8vIGBwb3NpdGlvbjogcmVsYXRpdmVgIGFuY2hvcnMgdGhlIGFic29sdXRlbHktcG9zaXRpb25lZCBzcGxpdCBzdGFjayBob3N0IGFuZFxuLy8gdGhlIGZsb2F0aW5nIHdpbmRvdy4gT3ZlcmZsb3cgaXMgbGVmdCB1bnRvdWNoZWQgKHZpc2libGUpIHNvIGEgcGFnZSByZWx5aW5nXG4vLyBvbiBkb2N1bWVudC9hbmNlc3RvciBzY3JvbGxpbmcgaXMgdW5hZmZlY3RlZCAtIHRoZSBvZmZzY3JlZW4gc3BsaXQgbGF5ZXJzIGFyZVxuLy8gY2xpcHBlZCBieSB0aGVpciBvd24gaG9zdCBiZWxvdywgbm90IGhlcmUuXG5jb25zdCBTdHlsZWRMYXlvdXQgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbi8vIFNvbG8tbW9kZSBob3N0OiBhIGxvbmUgcGFuZWwgKG5vIHJlc2l6YWJsZSBzaWJsaW5nKSBpcyBob3N0ZWQgaGVyZSBpbnN0ZWFkIG9mXG4vLyBpbnNpZGUgcmVhY3QtcmVzaXphYmxlLXBhbmVscy4gTWF0Y2hlcyB0aGUgcGVyLXBhbmVsIGhvc3QgdGhlIEdyb3VwIHJlbmRlcnNcbi8vIChgcmVsYXRpdmVgICsgZnVsbC1ibGVlZCkgc28gY29udGVudCByZWZsb3dzL3Njcm9sbHMgaWRlbnRpY2FsbHkgZWl0aGVyIHdheS5cbmNvbnN0IFN0eWxlZFNvbG9Ib3N0ID0gc3R5bGVkLmRpdih7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbn0pO1xuXG4vLyBGdWxsLWFyZWEgb3ZlcmxheSBhdCB0aGUgbGF5b3V0IHJvb3QgdGhhdCBob3N0cyB0aGUgbW9iaWxlIHNwbGl0IHN0YWNrLiBUaGVcbi8vIGxhc3QgY2hpbGQgb2YgYFN0eWxlZExheW91dGAsIHNvIGl0IHN0YWNrcyBhYm92ZSB0aGUgcGFuZWwgcm93OyBgY29udGVudGAgYW5kXG4vLyB0aGUgc3BsaXQgdmlld3MgcG9ydGFsIHRoZWlyIHNsaWRpbmcgbGF5ZXJzIGluIGhlcmUuIGBwb2ludGVyLWV2ZW50czogbm9uZWBcbi8vIHNvIGl0IG5ldmVyIGJsb2NrcyB0aGUgbGF5b3V0IGJlbmVhdGggLSBlYWNoIGxheWVyIHJlLWVuYWJsZXMgZXZlbnRzIHdoZW5cbi8vIGl0J3MgdGhlIGFjdGl2ZSAoZnJvbnQpIHZpZXcuIGBvdmVyZmxvdzogaGlkZGVuYCBjbGlwcyB0aGUgaW5hY3RpdmUgbGF5ZXJzJ1xuLy8gb2Zmc2NyZWVuIHJlc3RpbmcgcG9zaXRpb24gKHRyYW5zbGF0ZVggcGFzdCB0aGUgZWRnZSkgc28gdGhleSBkb24ndCB3aWRlblxuLy8gdGhlIHBhZ2UgLSBzY29wZWQgaGVyZSwgbm90IG9uIHRoZSByb290LCBzbyBpdCBuZXZlciBhZmZlY3RzIHBhZ2Ugc2Nyb2xsaW5nLlxuY29uc3QgU3R5bGVkTW9iaWxlU3BsaXRTdGFja0hvc3QgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgaW5zZXQ6IDAsXG4gIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIixcbn0pO1xuXG5mdW5jdGlvbiBMYXlvdXRCYXNlKHtcbiAgY2hpbGRyZW4sXG4gIHBlcnNpc3RlbmNlS2V5LFxuICBzdG9yYWdlLFxufTogTGF5b3V0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBbZGVjbGFyZWQsIHNldERlY2xhcmVkXSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsUmVnPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IHsgc3RhdGU6IGxheW91dFN0YXRlLCAuLi5wYW5lbENhbGxiYWNrcyB9ID0gdXNlTGF5b3V0KCk7XG4gIGNvbnN0IHBlcnNpc3RlbmNlID0gdXNlTGF5b3V0UGVyc2lzdGVuY2UoKTtcbiAgY29uc3QgcmVzb2x2ZWRLZXkgPSBwZXJzaXN0ZW5jZUtleSA/PyBwZXJzaXN0ZW5jZS5wZXJzaXN0ZW5jZUtleTtcbiAgY29uc3QgcmVzb2x2ZWRTdG9yYWdlID0gc3RvcmFnZSA/PyBwZXJzaXN0ZW5jZS5zdG9yYWdlO1xuXG4gIC8vIEJlbG93IHRoZSBtb2JpbGUgYnJlYWtwb2ludCB0aGUgcmlnaHRQYW5lbCByZW5kZXJzIGFzIGEgYm90dG9tIHNoZWV0IChpdHNcbiAgLy8gbWFya2VyIHJlbmRlcnMgdGhlIFNoZWV0IGl0c2VsZikgLSBhbiBhdXRvbWF0aWMsIHJlbmRlci1sZXZlbCBhZGFwdGF0aW9uLlxuICAvLyBUaGUgc3RvcmVkIHZhcmlhbnQgaXMgdW50b3VjaGVkLCBzbyByZXNpemluZyBiYWNrIHRvIGRlc2t0b3AgcmVzdG9yZXMgdGhlXG4gIC8vIGV4YWN0IHByZXNlbnRhdGlvbiAoZG9ja2VkIG9yIGZsb2F0aW5nKSB0aGUgdXNlciBsZWZ0LlxuICBjb25zdCB7IGlzTW9iaWxlIH0gPSB1c2VCcmVha3BvaW50cygpO1xuICBjb25zdCBpc1JpZ2h0UGFuZWxTaGVldCA9IGlzTW9iaWxlO1xuXG4gIC8vIFRoZSBtb2JpbGUgc3BsaXQgc3RhY2sncyBzaGFyZWQgc3RhdGUsIHNjb3BlZCB0byB0aGlzIExheW91dDogdGhlIGhvc3RcbiAgLy8gZWxlbWVudCBtYXJrZXJzIHBvcnRhbCBpbnRvIChvbmx5IHJlbmRlcmVkIHdoaWxlIHRoZSBzdGFjayBhcHBsaWVzIHRvIHRoZVxuICAvLyB2aWV3cG9ydCkgYW5kIGhvdyBtYW55IHNwbGl0IHZpZXdzIGFyZSBtb3VudGVkIChhIGNvdW50IHRvbGVyYXRlcyB0cmFuc2llbnRcbiAgLy8gZG91YmxlLW1vdW50cykuIGBjb250ZW50YCByZWFkcyBwcmVzZW5jZSB0byBkZWNpZGUgd2hldGhlciB0byBqb2luIHRoZVxuICAvLyBzdGFjazsgYm90aCBhcmUgcHVibGlzaGVkIHRvZ2V0aGVyIHZpYSBNb2JpbGVTcGxpdFN0YWNrQ29udGV4dC5cbiAgY29uc3Qgc2hvd01vYmlsZVNwbGl0U3RhY2sgPSB1c2VNb2JpbGVTcGxpdFZpZXdFbmFibGVkKCk7XG4gIGNvbnN0IFttb2JpbGVTcGxpdFN0YWNrSG9zdCwgc2V0TW9iaWxlU3BsaXRTdGFja0hvc3RdID1cbiAgICB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbc3BsaXRDb3VudCwgc2V0U3BsaXRDb3VudF0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgcmVnaXN0ZXJTcGxpdCA9IHVzZUNhbGxiYWNrPFxuICAgIE1vYmlsZVNwbGl0U3RhY2tWYWx1ZVtcInJlZ2lzdGVyU3BsaXRcIl1cbiAgPigoKSA9PiB7XG4gICAgc2V0U3BsaXRDb3VudCgoY291bnQpID0+IGNvdW50ICsgMSk7XG4gICAgcmV0dXJuICgpID0+IHNldFNwbGl0Q291bnQoKGNvdW50KSA9PiBjb3VudCAtIDEpO1xuICB9LCBbXSk7XG4gIGNvbnN0IG1vYmlsZVNwbGl0U3RhY2sgPSB1c2VNZW1vPE1vYmlsZVNwbGl0U3RhY2tWYWx1ZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIGhvc3Q6IG1vYmlsZVNwbGl0U3RhY2tIb3N0LFxuICAgICAgaXNTcGxpdFByZXNlbnQ6IHNwbGl0Q291bnQgPiAwLFxuICAgICAgcmVnaXN0ZXJTcGxpdCxcbiAgICB9KSxcbiAgICBbbW9iaWxlU3BsaXRTdGFja0hvc3QsIHNwbGl0Q291bnQsIHJlZ2lzdGVyU3BsaXRdXG4gICk7XG5cbiAgLy8gQSBmbG9hdGluZyByaWdodFBhbmVsIHN0YXlzIHZpc2libGUgKGl0cyBtYXJrZXIga2VlcHMgcmVuZGVyaW5nIGNvbnRlbnQpXG4gIC8vIGJ1dCBsZWF2ZXMgdGhlIHJlc2l6YWJsZSByb3cgLSBleGFjdGx5IGxpa2UgYSBoaWRkZW4gcGFuZWwgZG9lcy4gVGhlXG4gIC8vIG1vYmlsZSBzaGVldCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIGZsb2F0LiBGbG9hdCBpcyBhXG4gIC8vIGRlc2t0b3AgcHJlc2VudGF0aW9uLCBzbyBvbmx5IG1vZGUgYHRydWVgIGVuYWJsZXMgaXQuIFRoZSBzdG9yZSdzIHZhcmlhbnRcbiAgLy8gc3RhcnRzIHVuc2V0OyB0aGUgbWFya2VyJ3MgZGVjbGFyZWQgYHZhcmlhbnRgIHByb3AgaXMgdGhlIGluaXRpYWxcbiAgLy8gcHJlc2VudGF0aW9uIHVudGlsIHRoZSBmaXJzdCBgc2V0VmFyaWFudGAgd3JpdGVzIHRvIHRoZSBzdG9yZS5cbiAgY29uc3QgcGFuZWxzRW5hYmxlZCA9IHVzZUxheW91dFBhbmVsc0VuYWJsZWQoKTtcbiAgY29uc3QgcmlnaHRQYW5lbFZhcmlhbnQgPVxuICAgIGxheW91dFN0YXRlW1Nsb3QucmlnaHRQYW5lbF0udmFyaWFudCA/P1xuICAgIGRlY2xhcmVkW1Nsb3QucmlnaHRQYW5lbF0/LnZhcmlhbnQgPz9cbiAgICBcInNpZGViYXJcIjtcbiAgY29uc3QgaXNSaWdodFBhbmVsRmxvYXRpbmcgPVxuICAgIHBhbmVsc0VuYWJsZWQgPT09IHRydWUgJiZcbiAgICAhaXNSaWdodFBhbmVsU2hlZXQgJiZcbiAgICByaWdodFBhbmVsVmFyaWFudCA9PT0gXCJmbG9hdFwiO1xuXG4gIGNvbnN0IGlzU2hvd24gPSAoc2xvdDogU2xvdEtleSk6IGJvb2xlYW4gPT5cbiAgICBsYXlvdXRTdGF0ZVtzbG90XS52aXNpYmxlICYmXG4gICAgIShzbG90ID09PSBTbG90LnJpZ2h0UGFuZWwgJiYgKGlzUmlnaHRQYW5lbEZsb2F0aW5nIHx8IGlzUmlnaHRQYW5lbFNoZWV0KSk7XG5cbiAgLy8gU2xvdHMga2VwdCBtb3VudGVkIHRocm91Z2ggdGhlaXIgZXhpdCBhbmltYXRpb24gKHJlcG9ydGVkIHZpYVxuICAvLyBgdXNlUGFuZWxQcmVzZW5jZWApLiBBIHByZXNlbnQtYnV0LWhpZGRlbiBzbG90IHN0YXlzIGluIHRoZSByb3cgc28gaXRzXG4gIC8vIGNsb3NlIGFuaW1hdGlvbiBjYW4gcGxheTsgaXQncyByZW1vdmVkIG9uY2UgcHJlc2VuY2UgZmxpcHMgZmFsc2UuXG4gIGNvbnN0IFtwcmVzZW50LCBzZXRQcmVzZW50XSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIGJvb2xlYW4+Pj4oe30pO1xuICBjb25zdCBwcmVzZW5jZSA9IHVzZU1lbW88UGFuZWxQcmVzZW5jZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHNldFByZXNlbnQ6IChzbG90LCBpc1ByZXNlbnQpID0+XG4gICAgICAgIHNldFByZXNlbnQoKHByZXYpID0+XG4gICAgICAgICAgcHJldltzbG90XSA9PT0gaXNQcmVzZW50ID8gcHJldiA6IHsgLi4ucHJldiwgW3Nsb3RdOiBpc1ByZXNlbnQgfVxuICAgICAgICApLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgLy8gQW5pbWF0aW9uIGNvbnRyb2wgZm9yIHRoZSBkb2NrZWQgc2lkZSBwYW5lbHMnIG9wZW4vY2xvc2Ugd2lkdGggc2xpZGUuIEFsbFxuICAvLyByZWYtYmFzZWQgb24gcHVycG9zZTogcmVnaXN0ZXJpbmcgaGFuZGxlcy9lbGVtZW50cyBhbmQgdG9nZ2xpbmcgc3VwcHJlc3Npb25cbiAgLy8gaGFwcGVuIGR1cmluZyBjb21taXRzIGFuZCBwZXItZnJhbWUgLSBub25lIG9mIGl0IG1heSByZS1yZW5kZXIgdGhlIExheW91dC5cbiAgY29uc3QgcGFuZWxIYW5kbGVzID0gdXNlUmVmPFxuICAgIFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsSW1wZXJhdGl2ZUhhbmRsZSB8IG51bGw+PlxuICA+KHt9KTtcbiAgY29uc3QgcGFuZWxFbGVtZW50cyA9IHVzZVJlZjxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBIVE1MRWxlbWVudCB8IG51bGw+Pj4oXG4gICAge31cbiAgKTtcbiAgY29uc3QgcmVzaXplU3VwcHJlc3NlZCA9IHVzZVJlZjxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBib29sZWFuPj4+KHt9KTtcbiAgY29uc3QgYW5pbWF0aW9uQ29udHJvbCA9IHVzZU1lbW88UGFuZWxBbmltYXRpb25Db250cm9sPihcbiAgICAoKSA9PiAoe1xuICAgICAgc2V0SGFuZGxlOiAoc2xvdCwgaGFuZGxlKSA9PiB7XG4gICAgICAgIHBhbmVsSGFuZGxlcy5jdXJyZW50W3Nsb3RdID0gaGFuZGxlO1xuICAgICAgfSxcbiAgICAgIGdldEhhbmRsZTogKHNsb3QpID0+IHBhbmVsSGFuZGxlcy5jdXJyZW50W3Nsb3RdID8/IG51bGwsXG4gICAgICBzZXRFbGVtZW50OiAoc2xvdCwgZWxlbWVudCkgPT4ge1xuICAgICAgICBwYW5lbEVsZW1lbnRzLmN1cnJlbnRbc2xvdF0gPSBlbGVtZW50O1xuICAgICAgfSxcbiAgICAgIGdldEVsZW1lbnQ6IChzbG90KSA9PiBwYW5lbEVsZW1lbnRzLmN1cnJlbnRbc2xvdF0gPz8gbnVsbCxcbiAgICAgIHNldFJlc2l6ZVN1cHByZXNzZWQ6IChzbG90LCBzdXBwcmVzc2VkKSA9PiB7XG4gICAgICAgIHJlc2l6ZVN1cHByZXNzZWQuY3VycmVudFtzbG90XSA9IHN1cHByZXNzZWQ7XG4gICAgICB9LFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG4gIC8vIFN0YWJsZSBwZXItc2xvdCByZWYgY2FsbGJhY2tzIC0gYSBmcmVzaCBjYWxsYmFjayBpZGVudGl0eSBwZXIgcmVuZGVyIHdvdWxkXG4gIC8vIG1ha2UgUmVhY3QgZGV0YWNoL3JlYXR0YWNoIHRoZSByZWZzIG9uIGV2ZXJ5IExheW91dCByZS1yZW5kZXIuXG4gIGNvbnN0IHBhbmVsUmVmQ2FsbGJhY2tzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2FsbGJhY2tzID0gbmV3IE1hcDxcbiAgICAgIHN0cmluZyxcbiAgICAgIChoYW5kbGU6IFBhbmVsSW1wZXJhdGl2ZUhhbmRsZSB8IG51bGwpID0+IHZvaWRcbiAgICA+KCk7XG4gICAgY29uc3QgZWxlbWVudENhbGxiYWNrcyA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICAoZWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB2b2lkXG4gICAgPigpO1xuICAgIHJldHVybiB7XG4gICAgICBoYW5kbGVGb3I6IChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBjYWxsYmFjayA9IGhhbmRsZUNhbGxiYWNrcy5nZXQoaWQpO1xuICAgICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgICAgY2FsbGJhY2sgPSAoaGFuZGxlKSA9PlxuICAgICAgICAgICAgYW5pbWF0aW9uQ29udHJvbC5zZXRIYW5kbGUoaWQgYXMgU2xvdEtleSwgaGFuZGxlKTtcbiAgICAgICAgICBoYW5kbGVDYWxsYmFja3Muc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICAgIGVsZW1lbnRGb3I6IChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBjYWxsYmFjayA9IGVsZW1lbnRDYWxsYmFja3MuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrID0gKGVsZW1lbnQpID0+XG4gICAgICAgICAgICBhbmltYXRpb25Db250cm9sLnNldEVsZW1lbnQoaWQgYXMgU2xvdEtleSwgZWxlbWVudCk7XG4gICAgICAgICAgZWxlbWVudENhbGxiYWNrcy5zZXQoaWQsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FsbGJhY2s7XG4gICAgICB9LFxuICAgIH07XG4gIH0sIFthbmltYXRpb25Db250cm9sXSk7XG4gIGNvbnN0IHNob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiBPYmplY3QudmFsdWVzKHJlc2l6ZVN1cHByZXNzZWQuY3VycmVudCkuc29tZShCb29sZWFuKSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IHJlZ2lzdHJ5ID0gdXNlTWVtbzxQYW5lbFJlZ2lzdHJ5PihcbiAgICAoKSA9PiAoe1xuICAgICAgcmVnaXN0ZXI6IChzbG90LCByZWcpID0+XG4gICAgICAgIHNldERlY2xhcmVkKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBbc2xvdF06IHJlZyB9KSksXG4gICAgICB1bnJlZ2lzdGVyOiAoc2xvdCkgPT5cbiAgICAgICAgc2V0RGVjbGFyZWQoKHByZXYpID0+IHtcbiAgICAgICAgICBpZiAoIShzbG90IGluIHByZXYpKSByZXR1cm4gcHJldjtcbiAgICAgICAgICBjb25zdCBuZXh0ID0geyAuLi5wcmV2IH07XG4gICAgICAgICAgZGVsZXRlIG5leHRbc2xvdF07XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH0pLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgY29uc3QgeyBwb3J0YWxUYXJnZXRzLCBzbG90SG9zdHMsIHNsb3RIb3N0UmVmcywgZmxvYXRIb3N0UmVmIH0gPVxuICAgIHVzZUZsb2F0YWJsZVBvcnRhbFRhcmdldHMoe1xuICAgICAgc2xvdHM6IFBBTkVMX09SREVSLFxuICAgICAgZmxvYXRhYmxlU2xvdDogU2xvdC5yaWdodFBhbmVsLFxuICAgICAgaXNGbG9hdGluZzogaXNSaWdodFBhbmVsRmxvYXRpbmcsXG4gICAgfSk7XG5cbiAgdXNlR2xvYmFsQ3NzVmFyaWFibGVzKHNsb3RIb3N0cyk7XG5cbiAgLy8gUGFuZWxzIHRoYXQgZXhpc3QgaW4gdGhlIGxheW91dCwgcmVnYXJkbGVzcyBvZiB2aXNpYmlsaXR5LiBEcml2ZXMgdGhlXG4gIC8vIHNvbG8tdnMtcmVzaXphYmxlIGRlY2lzaW9uIGJlbG93IC0ga2V5ZWQgb24gREVDTEFSRUQgKG5vdCBzaG93bikgc28gdGhhdFxuICAvLyBzaG93aW5nL2hpZGluZyBhIHBhbmVsIG5ldmVyIGZsaXBzIHRoZSBtb2RlLlxuICBjb25zdCBkZWNsYXJlZFNsb3RzID0gUEFORUxfT1JERVIuZmlsdGVyKChzbG90KSA9PiBkZWNsYXJlZFtzbG90XSk7XG5cbiAgLy8gU29sbyBtb2RlOiBhIHNpbmdsZSBwYW5lbCBpcyBkZWNsYXJlZCAoZS5nLiBqdXN0IGBDb250ZW50YCwgd2l0aCBub1xuICAvLyBSaWdodFBhbmVsL0xlZnRQYW5lbC9TcGxpdCBpbiB0aGUgdHJlZSkgLSBub3RoaW5nIHRvIHJlc2l6ZSBhZ2FpbnN0LCBzbyBob3N0XG4gIC8vIGl0IGluIGEgcGxhaW4gZGl2IGFuZCBza2lwIHJlYWN0LXJlc2l6YWJsZS1wYW5lbHMgZW50aXJlbHkuIEJlY2F1c2UgdGhlXG4gIC8vIGNoZWNrIGlzIG9uIERFQ0xBUkVEIHBhbmVscywgdG9nZ2xpbmcgYSAqZGVjbGFyZWQqIHBhbmVsJ3MgdmlzaWJpbGl0eSBrZWVwc1xuICAvLyB0aGUgbW9kZSBzdGFibGUsIHNvIGBDb250ZW50YCBpcyBuZXZlciByZW1vdW50ZWQgYnkgYSBzaG93L2hpZGUuIFRoZSBtb2RlXG4gIC8vIG9ubHkgZmxpcHMgd2hlbiBhIHBhbmVsIG1hcmtlciBpcyBhZGRlZCB0byAvIHJlbW92ZWQgZnJvbSB0aGUgdHJlZSAoYVxuICAvLyBzdHJ1Y3R1cmFsIGNoYW5nZSksIHdoZXJlIGEgb25lLXRpbWUgcmVtb3VudCBpcyBhY2NlcHRhYmxlLlxuICBjb25zdCBpc1NvbG8gPSBkZWNsYXJlZFNsb3RzLmxlbmd0aCA8PSAxO1xuICBjb25zdCBzb2xvU2xvdCA9IGRlY2xhcmVkU2xvdHNbMF07XG5cbiAgLy8gY29udGVudCBmbGV4ZXMgKG5vIGZpeGVkIHNpemUpOyBvdGhlcnMgdXNlIHRoZSBkZWNsYXJlZCBkZWZhdWx0LCBmYWxsaW5nXG4gIC8vIGJhY2sgdG8gdGhlIHBlcnNpc3RlZC9jb25maWcgc2l6ZS5cbiAgY29uc3QgZGVmYXVsdFNpemVGb3IgPSAoc2xvdDogU2xvdEtleSk6IFNpemUgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChzbG90ID09PSBTbG90LmNvbnRlbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGRlY2xhcmVkW3Nsb3RdPy5kZWZhdWx0U2l6ZSA/PyBsYXlvdXRTdGF0ZVtzbG90XS5zaXplO1xuICB9O1xuXG4gIC8vIE9ubHkgdGhlIHBhbmVscyB0aGF0IGFyZSBkZWNsYXJlZCBBTkQgKGN1cnJlbnRseSBzaG93biBPUiBtaWQtZXhpdCkuIEFcbiAgLy8gaGlkZGVuLWJ1dC1wcmVzZW50IHNsb3QgbGluZ2VycyBzbyBpdHMgY2xvc2UgYW5pbWF0aW9uIGNhbiBwbGF5OyBvdGhlcndpc2VcbiAgLy8gY2xvc2VkIHBhbmVscyByZXNlcnZlIG5vIHNwYWNlLlxuICBjb25zdCBwYW5lbEl0ZW1zOiBQYW5lbEl0ZW1bXSA9IFBBTkVMX09SREVSLmZpbHRlcihcbiAgICAoc2xvdCkgPT4gZGVjbGFyZWRbc2xvdF0gJiYgKGlzU2hvd24oc2xvdCkgfHwgcHJlc2VudFtzbG90XSlcbiAgKS5tYXAoKHNsb3QpID0+ICh7XG4gICAgaWQ6IHNsb3QsXG4gICAgZGVmYXVsdFNpemU6IGRlZmF1bHRTaXplRm9yKHNsb3QpLFxuICAgIG1pblNpemU6IGRlY2xhcmVkW3Nsb3RdPy5taW5TaXplID8/IGxheW91dFN0YXRlW3Nsb3RdLm1pblNpemUsXG4gICAgbWF4U2l6ZTogZGVjbGFyZWRbc2xvdF0/Lm1heFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0ubWF4U2l6ZSxcbiAgICBjb2xsYXBzaWJsZTogc2xvdCAhPT0gU2xvdC5jb250ZW50ICYmIChkZWNsYXJlZFtzbG90XT8uY29sbGFwc2libGUgPz8gdHJ1ZSksXG4gICAgcmVzaXphYmxlOlxuICAgICAgZGVjbGFyZWRbc2xvdF0/LnJlc2l6YWJsZSA/PyByZXNpemFibGVGcm9tU3RhdGUobGF5b3V0U3RhdGVbc2xvdF0pLFxuICB9KSk7XG5cbiAgLy8gU29sbyBtb2RlIGhvc3RzIHRoZSBsb25lIHBhbmVsIGluIGEgcGxhaW4gZGl2LCBubyByZXNpemFibGUgR3JvdXAuIEEgaGlkZGVuXG4gIC8vIGxvbmUgcGFuZWwgcmVuZGVycyBub3RoaW5nIChDb250ZW50IGlzIGFsd2F5cyBzaG93bikuXG4gIGNvbnN0IHNvbG9Ib3N0ID1cbiAgICBzb2xvU2xvdCAmJiBpc1Nob3duKHNvbG9TbG90KSA/IChcbiAgICAgIDxTdHlsZWRTb2xvSG9zdCByZWY9e3Nsb3RIb3N0UmVmc1tzb2xvU2xvdF19IC8+XG4gICAgKSA6IG51bGw7XG5cbiAgLy8gVGhlIHJlc2l6YWJsZSBHcm91cC4gYGtleWAgPSB0aGUgcGVyc2lzdGVuY2UgbmFtZXNwYWNlOiByZWFjdC1yZXNpemFibGUtcGFuZWxzXG4gIC8vIHJlYWRzIHN0b3JlZCBzaXplcyBvbmx5IG9uIG1vdW50LCBzbyByZW1vdW50IHdoZW4gdGhlIGtleSBjaGFuZ2VzIHRvIGxvYWRcbiAgLy8gdGhhdCBpbnN0YW5jZSdzIHNpemVzIChwZXItcm91dGUgc2l6ZSBtZW1vcnkpLiBUaGUga2V5IG5ldmVyIGNoYW5nZXMgb25cbiAgLy8gcGFuZWwgb3Blbi9jbG9zZSwgc28gbm9ybWFsIHRvZ2dsaW5nIHN0YXlzIHJlbW91bnQtZnJlZS5cbiAgY29uc3QgcGFuZWxHcm91cCA9XG4gICAgcGFuZWxJdGVtcy5sZW5ndGggPiAwID8gKFxuICAgICAgPFBhbmVsXG4gICAgICAgIGtleT17cmVzb2x2ZWRLZXl9XG4gICAgICAgIHBhbmVscz17cGFuZWxJdGVtc31cbiAgICAgICAgcGVyc2lzdGVuY2VLZXk9e3Jlc29sdmVkS2V5fVxuICAgICAgICBzdG9yYWdlPXtyZXNvbHZlZFN0b3JhZ2V9XG4gICAgICAgIGhvc3RGb3I9eyhpZCkgPT4gc2xvdEhvc3RSZWZzW2lkIGFzIFNsb3RLZXldfVxuICAgICAgICBvblJlc2l6ZT17KGlkLCBzaXplKSA9PiBwYW5lbENhbGxiYWNrc1tpZCBhcyBTbG90S2V5XS5yZXNpemUoc2l6ZSl9XG4gICAgICAgIG9uQ29sbGFwc2U9eyhpZCkgPT4gcGFuZWxDYWxsYmFja3NbaWQgYXMgU2xvdEtleV0uaGlkZSgpfVxuICAgICAgICBwYW5lbEhhbmRsZUZvcj17cGFuZWxSZWZDYWxsYmFja3MuaGFuZGxlRm9yfVxuICAgICAgICBwYW5lbEVsZW1lbnRGb3I9e3BhbmVsUmVmQ2FsbGJhY2tzLmVsZW1lbnRGb3J9XG4gICAgICAgIHNob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2s9e3Nob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2t9XG4gICAgICAvPlxuICAgICkgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsUmVnaXN0cnlDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtyZWdpc3RyeX0+XG4gICAgICA8UGFuZWxEZWNsYXJhdGlvbnNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtkZWNsYXJlZH0+XG4gICAgICAgIDxQYW5lbFByZXNlbmNlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17cHJlc2VuY2V9PlxuICAgICAgICAgIDxQYW5lbEFuaW1hdGlvbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2FuaW1hdGlvbkNvbnRyb2x9PlxuICAgICAgICAgICAgPExheW91dFBvcnRhbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3BvcnRhbFRhcmdldHN9PlxuICAgICAgICAgICAgICA8TGF5b3V0RmxvYXREcmFnUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPE1vYmlsZVNwbGl0U3RhY2tDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXttb2JpbGVTcGxpdFN0YWNrfT5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRMYXlvdXQgZGF0YS1kcy1pZD1cIkxheW91dFwiPlxuICAgICAgICAgICAgICAgICAgICB7aXNTb2xvID8gc29sb0hvc3QgOiBwYW5lbEdyb3VwfVxuICAgICAgICAgICAgICAgICAgICB7aXNSaWdodFBhbmVsRmxvYXRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRTdGF0ZVtTbG90LnJpZ2h0UGFuZWxdLnZpc2libGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPExheW91dEZsb2F0IGhvc3RSZWY9e2Zsb2F0SG9zdFJlZn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgIHtzaG93TW9iaWxlU3BsaXRTdGFjayAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1vYmlsZVNwbGl0U3RhY2tIb3N0XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY9e3NldE1vYmlsZVNwbGl0U3RhY2tIb3N0fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZExheW91dD5cbiAgICAgICAgICAgICAgICA8L01vYmlsZVNwbGl0U3RhY2tDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgICA8L0xheW91dEZsb2F0RHJhZ1Byb3ZpZGVyPlxuICAgICAgICAgICAgPC9MYXlvdXRQb3J0YWxDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgIDwvUGFuZWxBbmltYXRpb25Db250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L1BhbmVsUHJlc2VuY2VDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9QYW5lbERlY2xhcmF0aW9uc0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9QYW5lbFJlZ2lzdHJ5Q29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIFB1YmxpYyBMYXlvdXQgLSB0aGUgcmVzaXphYmxlIHBhbmVsIHJvdyArIGNvbXBvdW5kIHBhcnRzIGFzIHN0YXRpY3MgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxudHlwZSBMYXlvdXRDb21wb25lbnQgPSB0eXBlb2YgTGF5b3V0QmFzZSAmIHtcbiAgUHJvdmlkZXI6IHR5cGVvZiBMYXlvdXRQcm92aWRlcjtcbiAgTGVmdFBhbmVsOiB0eXBlb2YgTGVmdFBhbmVsO1xuICBMZWZ0UGFuZWxIZWFkZXI6IHR5cGVvZiBMZWZ0UGFuZWxIZWFkZXI7XG4gIExlZnRQYW5lbEZvb3RlcjogdHlwZW9mIExlZnRQYW5lbEZvb3RlcjtcbiAgUmlnaHRQYW5lbDogdHlwZW9mIFJpZ2h0UGFuZWw7XG4gIFJpZ2h0UGFuZWxIZWFkZXI6IHR5cGVvZiBSaWdodFBhbmVsSGVhZGVyO1xuICBSaWdodFBhbmVsRm9vdGVyOiB0eXBlb2YgUmlnaHRQYW5lbEZvb3RlcjtcbiAgQ29udGVudDogdHlwZW9mIENvbnRlbnQ7XG4gIFNwbGl0OiB0eXBlb2YgU3BsaXQ7XG4gIFNwbGl0SGVhZGVyOiB0eXBlb2YgU3BsaXRIZWFkZXI7XG4gIFNwbGl0Rm9vdGVyOiB0eXBlb2YgU3BsaXRGb290ZXI7XG59O1xuXG5leHBvcnQgY29uc3QgTGF5b3V0ID0gTGF5b3V0QmFzZSBhcyBMYXlvdXRDb21wb25lbnQ7XG5cbkxheW91dC5Qcm92aWRlciA9IExheW91dFByb3ZpZGVyO1xuTGF5b3V0LkxlZnRQYW5lbCA9IExlZnRQYW5lbDtcbkxheW91dC5MZWZ0UGFuZWxIZWFkZXIgPSBMZWZ0UGFuZWxIZWFkZXI7XG5MYXlvdXQuTGVmdFBhbmVsRm9vdGVyID0gTGVmdFBhbmVsRm9vdGVyO1xuTGF5b3V0LlJpZ2h0UGFuZWwgPSBSaWdodFBhbmVsO1xuTGF5b3V0LlJpZ2h0UGFuZWxIZWFkZXIgPSBSaWdodFBhbmVsSGVhZGVyO1xuTGF5b3V0LlJpZ2h0UGFuZWxGb290ZXIgPSBSaWdodFBhbmVsRm9vdGVyO1xuTGF5b3V0LkNvbnRlbnQgPSBDb250ZW50O1xuTGF5b3V0LlNwbGl0ID0gU3BsaXQ7XG5MYXlvdXQuU3BsaXRIZWFkZXIgPSBTcGxpdEhlYWRlcjtcbkxheW91dC5TcGxpdEZvb3RlciA9IFNwbGl0Rm9vdGVyO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThHdUIifQ== */"),StyledMobileSplitStackHost=(0,_styled.default)("div",{target:"e1w0fcrp2",label:"StyledMobileSplitStackHost"})({position:"absolute",inset:0,overflow:"hidden",pointerEvents:"none"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9MYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlLXBhbmVsc1wiO1xuaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiLi4vSW50ZXJuYWwvUGFuZWwvUGFuZWxcIjtcbmltcG9ydCB0eXBlIHsgUGFuZWxJdGVtIH0gZnJvbSBcIi4uL0ludGVybmFsL1BhbmVsL1BhbmVsXCI7XG5pbXBvcnQgeyBMYXlvdXRGbG9hdCB9IGZyb20gXCIuLi9JbnRlcm5hbC9MYXlvdXRGbG9hdC9MYXlvdXRGbG9hdFwiO1xuaW1wb3J0IHsgdXNlQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUJyZWFrcG9pbnRzXCI7XG5pbXBvcnQgeyBQQU5FTF9PUkRFUiwgUEFORUxfV0lEVEhfVkFSLCBTbG90IH0gZnJvbSBcIi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0UGFuZWxzRW5hYmxlZCwgdXNlTGF5b3V0UGVyc2lzdGVuY2UgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQge1xuICBNb2JpbGVTcGxpdFN0YWNrQ29udGV4dCxcbiAgdHlwZSBNb2JpbGVTcGxpdFN0YWNrVmFsdWUsXG59IGZyb20gXCIuL1NwbGl0L01vYmlsZVNwbGl0Vmlldy91c2VNb2JpbGVTcGxpdFN0YWNrXCI7XG5pbXBvcnQgeyB1c2VNb2JpbGVTcGxpdFZpZXdFbmFibGVkIH0gZnJvbSBcIi4vU3BsaXQvTW9iaWxlU3BsaXRWaWV3L3VzZU1vYmlsZVNwbGl0Vmlld1wiO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tIFwiLi9MYXlvdXRQcm92aWRlclwiO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gXCIuL0NvbnRlbnQvQ29udGVudFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbCB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEhlYWRlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEZvb3RlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbFwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsSGVhZGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsRm9vdGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgU3BsaXQgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdFwiO1xuaW1wb3J0IHsgU3BsaXRIZWFkZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEhlYWRlclwiO1xuaW1wb3J0IHsgU3BsaXRGb290ZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEZvb3RlclwiO1xuaW1wb3J0IHtcbiAgTGF5b3V0UG9ydGFsQ29udGV4dCxcbiAgUGFuZWxSZWdpc3RyeUNvbnRleHQsXG4gIFBhbmVsRGVjbGFyYXRpb25zQ29udGV4dCxcbiAgUGFuZWxQcmVzZW5jZUNvbnRleHQsXG4gIFBhbmVsQW5pbWF0aW9uQ29udGV4dCxcbiAgdHlwZSBQb3J0YWxUYXJnZXRzLFxuICB0eXBlIFBhbmVsUmVnLFxuICB0eXBlIFBhbmVsUmVnaXN0cnksXG4gIHR5cGUgUGFuZWxQcmVzZW5jZSxcbiAgdHlwZSBQYW5lbEFuaW1hdGlvbkNvbnRyb2wsXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzIH0gZnJvbSBcIi4vdXNlRmxvYXRhYmxlUG9ydGFsVGFyZ2V0c1wiO1xuaW1wb3J0IHsgTGF5b3V0RmxvYXREcmFnUHJvdmlkZXIgfSBmcm9tIFwiLi4vSW50ZXJuYWwvTGF5b3V0RmxvYXQvTGF5b3V0RmxvYXREcmFnUHJvdmlkZXJcIjtcbmltcG9ydCB7IHVzZUxheW91dFZhciwgdHlwZSBMYXlvdXRWYXJIYW5kbGUgfSBmcm9tIFwiLi9MYXlvdXRDc3NWYXJzXCI7XG5pbXBvcnQgeyB1c2VMYXlvdXQgfSBmcm9tIFwiLi91c2VMYXlvdXRcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0UHJvcHMsIExheW91dFN0YXRlLCBTaXplLCBTbG90S2V5IH0gZnJvbSBcIi4vLXR5cGVzXCI7XG5cbi8vIE9ubHkgdGhlIHNpZGUgcGFuZWxzIGNhcnJ5IGByZXNpemFibGVgIGluIHN0YXRlIChpdCBjb21lcyBmcm9tIHRoZSBwcm92aWRlclxuLy8gY29uZmlnKTsgdGhlIGNvbnRlbnQvc3BsaXR2aWV3IHNsb3RzIHRha2UgaXQgZnJvbSB0aGVpciBkZWNsYXJhdGlvbiBhbG9uZS5cbmNvbnN0IHJlc2l6YWJsZUZyb21TdGF0ZSA9IChcbiAgc2xvdFN0YXRlOiBMYXlvdXRTdGF0ZVtTbG90S2V5XVxuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9PlxuICBzbG90U3RhdGUua2luZCA9PT0gXCJzaWRlUGFuZWxcIiA/IHNsb3RTdGF0ZS5yZXNpemFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogUHVibGlzaGVzIGVhY2ggcGFuZWwncyBsaXZlIHBpeGVsIHdpZHRoIGFzIGEgbGF5b3V0IENTUyB2YXIgKGUuZy5cbiAqIGAtLWRzLWxheW91dC1yaWdodFBhbmVsLXdpZHRoYCksIHRyYWNraW5nIGRyYWctIGFuZCB3aW5kb3ctcmVzaXplcy4gQSBoaWRkZW5cbiAqIHBhcnQgKG5vIGhvc3Qgbm9kZSkgcmVhZHMgYDBweGAsIHNvIHRoZSB2YXIgaXMgYWx3YXlzIGRlZmluZWQuIE9uZVxuICogYHVzZUxheW91dFZhcmAgcGVyIHNsb3QgaW4gYFBBTkVMX1dJRFRIX1ZBUmAuXG4gKi9cbmNvbnN0IHVzZUdsb2JhbENzc1ZhcmlhYmxlcyA9IChzbG90SG9zdHM6IFBvcnRhbFRhcmdldHMpOiB2b2lkID0+IHtcbiAgY29uc3QgY29udGVudFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5jb250ZW50KTtcbiAgY29uc3QgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5yaWdodFBhbmVsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldHM6IFtTbG90S2V5LCBMYXlvdXRWYXJIYW5kbGVdW10gPSBbXG4gICAgICBbU2xvdC5jb250ZW50LCBjb250ZW50V2lkdGhDc3NWYXJdLFxuICAgICAgW1Nsb3QucmlnaHRQYW5lbCwgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyXSxcbiAgICBdO1xuICAgIGNvbnN0IG9ic2VydmVyczogUmVzaXplT2JzZXJ2ZXJbXSA9IFtdO1xuXG4gICAgdGFyZ2V0cy5mb3JFYWNoKChbc2xvdCwgaGFuZGxlXSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IHNsb3RIb3N0c1tzbG90XSA/PyBudWxsO1xuICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgIGhhbmRsZS5zZXQoXCIwcHhcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHB1Ymxpc2hOb2RlV2lkdGggPSAoKTogdm9pZCA9PlxuICAgICAgICBoYW5kbGUuc2V0KGAke25vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHhgKTtcbiAgICAgIHB1Ymxpc2hOb2RlV2lkdGgoKTtcbiAgICAgIC8vIGpzZG9tIChhbmQgb2xkIGJyb3dzZXJzKSBsYWNrIFJlc2l6ZU9ic2VydmVyIOKAlCBza2lwIGxpdmUgdHJhY2tpbmcgdGhlcmUuXG4gICAgICBpZiAodHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihwdWJsaXNoTm9kZVdpZHRoKTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSk7XG4gICAgICBvYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXJzLmZvckVhY2goKG9ic2VydmVyKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuICB9LCBbY29udGVudFdpZHRoQ3NzVmFyLCByaWdodFBhbmVsV2lkdGhDc3NWYXIsIHNsb3RIb3N0c10pO1xufTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIExheW91dCAtIHJlZ2lzdHJ5ICsgaG9zdHM7IG1hcmtlcnMgZGVjbGFyZS9wb3J0YWw7IHRoZSByZXNpemFibGUgcGFuZWwgcm93ICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8vIGBwb3NpdGlvbjogcmVsYXRpdmVgIGFuY2hvcnMgdGhlIGFic29sdXRlbHktcG9zaXRpb25lZCBzcGxpdCBzdGFjayBob3N0IGFuZFxuLy8gdGhlIGZsb2F0aW5nIHdpbmRvdy4gT3ZlcmZsb3cgaXMgbGVmdCB1bnRvdWNoZWQgKHZpc2libGUpIHNvIGEgcGFnZSByZWx5aW5nXG4vLyBvbiBkb2N1bWVudC9hbmNlc3RvciBzY3JvbGxpbmcgaXMgdW5hZmZlY3RlZCAtIHRoZSBvZmZzY3JlZW4gc3BsaXQgbGF5ZXJzIGFyZVxuLy8gY2xpcHBlZCBieSB0aGVpciBvd24gaG9zdCBiZWxvdywgbm90IGhlcmUuXG5jb25zdCBTdHlsZWRMYXlvdXQgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbi8vIFNvbG8tbW9kZSBob3N0OiBhIGxvbmUgcGFuZWwgKG5vIHJlc2l6YWJsZSBzaWJsaW5nKSBpcyBob3N0ZWQgaGVyZSBpbnN0ZWFkIG9mXG4vLyBpbnNpZGUgcmVhY3QtcmVzaXphYmxlLXBhbmVscy4gTWF0Y2hlcyB0aGUgcGVyLXBhbmVsIGhvc3QgdGhlIEdyb3VwIHJlbmRlcnNcbi8vIChgcmVsYXRpdmVgICsgZnVsbC1ibGVlZCkgc28gY29udGVudCByZWZsb3dzL3Njcm9sbHMgaWRlbnRpY2FsbHkgZWl0aGVyIHdheS5cbmNvbnN0IFN0eWxlZFNvbG9Ib3N0ID0gc3R5bGVkLmRpdih7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbn0pO1xuXG4vLyBGdWxsLWFyZWEgb3ZlcmxheSBhdCB0aGUgbGF5b3V0IHJvb3QgdGhhdCBob3N0cyB0aGUgbW9iaWxlIHNwbGl0IHN0YWNrLiBUaGVcbi8vIGxhc3QgY2hpbGQgb2YgYFN0eWxlZExheW91dGAsIHNvIGl0IHN0YWNrcyBhYm92ZSB0aGUgcGFuZWwgcm93OyBgY29udGVudGAgYW5kXG4vLyB0aGUgc3BsaXQgdmlld3MgcG9ydGFsIHRoZWlyIHNsaWRpbmcgbGF5ZXJzIGluIGhlcmUuIGBwb2ludGVyLWV2ZW50czogbm9uZWBcbi8vIHNvIGl0IG5ldmVyIGJsb2NrcyB0aGUgbGF5b3V0IGJlbmVhdGggLSBlYWNoIGxheWVyIHJlLWVuYWJsZXMgZXZlbnRzIHdoZW5cbi8vIGl0J3MgdGhlIGFjdGl2ZSAoZnJvbnQpIHZpZXcuIGBvdmVyZmxvdzogaGlkZGVuYCBjbGlwcyB0aGUgaW5hY3RpdmUgbGF5ZXJzJ1xuLy8gb2Zmc2NyZWVuIHJlc3RpbmcgcG9zaXRpb24gKHRyYW5zbGF0ZVggcGFzdCB0aGUgZWRnZSkgc28gdGhleSBkb24ndCB3aWRlblxuLy8gdGhlIHBhZ2UgLSBzY29wZWQgaGVyZSwgbm90IG9uIHRoZSByb290LCBzbyBpdCBuZXZlciBhZmZlY3RzIHBhZ2Ugc2Nyb2xsaW5nLlxuY29uc3QgU3R5bGVkTW9iaWxlU3BsaXRTdGFja0hvc3QgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgaW5zZXQ6IDAsXG4gIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIixcbn0pO1xuXG5mdW5jdGlvbiBMYXlvdXRCYXNlKHtcbiAgY2hpbGRyZW4sXG4gIHBlcnNpc3RlbmNlS2V5LFxuICBzdG9yYWdlLFxufTogTGF5b3V0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBbZGVjbGFyZWQsIHNldERlY2xhcmVkXSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsUmVnPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IHsgc3RhdGU6IGxheW91dFN0YXRlLCAuLi5wYW5lbENhbGxiYWNrcyB9ID0gdXNlTGF5b3V0KCk7XG4gIGNvbnN0IHBlcnNpc3RlbmNlID0gdXNlTGF5b3V0UGVyc2lzdGVuY2UoKTtcbiAgY29uc3QgcmVzb2x2ZWRLZXkgPSBwZXJzaXN0ZW5jZUtleSA/PyBwZXJzaXN0ZW5jZS5wZXJzaXN0ZW5jZUtleTtcbiAgY29uc3QgcmVzb2x2ZWRTdG9yYWdlID0gc3RvcmFnZSA/PyBwZXJzaXN0ZW5jZS5zdG9yYWdlO1xuXG4gIC8vIEJlbG93IHRoZSBtb2JpbGUgYnJlYWtwb2ludCB0aGUgcmlnaHRQYW5lbCByZW5kZXJzIGFzIGEgYm90dG9tIHNoZWV0IChpdHNcbiAgLy8gbWFya2VyIHJlbmRlcnMgdGhlIFNoZWV0IGl0c2VsZikgLSBhbiBhdXRvbWF0aWMsIHJlbmRlci1sZXZlbCBhZGFwdGF0aW9uLlxuICAvLyBUaGUgc3RvcmVkIHZhcmlhbnQgaXMgdW50b3VjaGVkLCBzbyByZXNpemluZyBiYWNrIHRvIGRlc2t0b3AgcmVzdG9yZXMgdGhlXG4gIC8vIGV4YWN0IHByZXNlbnRhdGlvbiAoZG9ja2VkIG9yIGZsb2F0aW5nKSB0aGUgdXNlciBsZWZ0LlxuICBjb25zdCB7IGlzTW9iaWxlIH0gPSB1c2VCcmVha3BvaW50cygpO1xuICBjb25zdCBpc1JpZ2h0UGFuZWxTaGVldCA9IGlzTW9iaWxlO1xuXG4gIC8vIFRoZSBtb2JpbGUgc3BsaXQgc3RhY2sncyBzaGFyZWQgc3RhdGUsIHNjb3BlZCB0byB0aGlzIExheW91dDogdGhlIGhvc3RcbiAgLy8gZWxlbWVudCBtYXJrZXJzIHBvcnRhbCBpbnRvIChvbmx5IHJlbmRlcmVkIHdoaWxlIHRoZSBzdGFjayBhcHBsaWVzIHRvIHRoZVxuICAvLyB2aWV3cG9ydCkgYW5kIGhvdyBtYW55IHNwbGl0IHZpZXdzIGFyZSBtb3VudGVkIChhIGNvdW50IHRvbGVyYXRlcyB0cmFuc2llbnRcbiAgLy8gZG91YmxlLW1vdW50cykuIGBjb250ZW50YCByZWFkcyBwcmVzZW5jZSB0byBkZWNpZGUgd2hldGhlciB0byBqb2luIHRoZVxuICAvLyBzdGFjazsgYm90aCBhcmUgcHVibGlzaGVkIHRvZ2V0aGVyIHZpYSBNb2JpbGVTcGxpdFN0YWNrQ29udGV4dC5cbiAgY29uc3Qgc2hvd01vYmlsZVNwbGl0U3RhY2sgPSB1c2VNb2JpbGVTcGxpdFZpZXdFbmFibGVkKCk7XG4gIGNvbnN0IFttb2JpbGVTcGxpdFN0YWNrSG9zdCwgc2V0TW9iaWxlU3BsaXRTdGFja0hvc3RdID1cbiAgICB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbc3BsaXRDb3VudCwgc2V0U3BsaXRDb3VudF0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgcmVnaXN0ZXJTcGxpdCA9IHVzZUNhbGxiYWNrPFxuICAgIE1vYmlsZVNwbGl0U3RhY2tWYWx1ZVtcInJlZ2lzdGVyU3BsaXRcIl1cbiAgPigoKSA9PiB7XG4gICAgc2V0U3BsaXRDb3VudCgoY291bnQpID0+IGNvdW50ICsgMSk7XG4gICAgcmV0dXJuICgpID0+IHNldFNwbGl0Q291bnQoKGNvdW50KSA9PiBjb3VudCAtIDEpO1xuICB9LCBbXSk7XG4gIGNvbnN0IG1vYmlsZVNwbGl0U3RhY2sgPSB1c2VNZW1vPE1vYmlsZVNwbGl0U3RhY2tWYWx1ZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIGhvc3Q6IG1vYmlsZVNwbGl0U3RhY2tIb3N0LFxuICAgICAgaXNTcGxpdFByZXNlbnQ6IHNwbGl0Q291bnQgPiAwLFxuICAgICAgcmVnaXN0ZXJTcGxpdCxcbiAgICB9KSxcbiAgICBbbW9iaWxlU3BsaXRTdGFja0hvc3QsIHNwbGl0Q291bnQsIHJlZ2lzdGVyU3BsaXRdXG4gICk7XG5cbiAgLy8gQSBmbG9hdGluZyByaWdodFBhbmVsIHN0YXlzIHZpc2libGUgKGl0cyBtYXJrZXIga2VlcHMgcmVuZGVyaW5nIGNvbnRlbnQpXG4gIC8vIGJ1dCBsZWF2ZXMgdGhlIHJlc2l6YWJsZSByb3cgLSBleGFjdGx5IGxpa2UgYSBoaWRkZW4gcGFuZWwgZG9lcy4gVGhlXG4gIC8vIG1vYmlsZSBzaGVldCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIGZsb2F0LiBGbG9hdCBpcyBhXG4gIC8vIGRlc2t0b3AgcHJlc2VudGF0aW9uLCBzbyBvbmx5IG1vZGUgYHRydWVgIGVuYWJsZXMgaXQuIFRoZSBzdG9yZSdzIHZhcmlhbnRcbiAgLy8gc3RhcnRzIHVuc2V0OyB0aGUgbWFya2VyJ3MgZGVjbGFyZWQgYHZhcmlhbnRgIHByb3AgaXMgdGhlIGluaXRpYWxcbiAgLy8gcHJlc2VudGF0aW9uIHVudGlsIHRoZSBmaXJzdCBgc2V0VmFyaWFudGAgd3JpdGVzIHRvIHRoZSBzdG9yZS5cbiAgY29uc3QgcGFuZWxzRW5hYmxlZCA9IHVzZUxheW91dFBhbmVsc0VuYWJsZWQoKTtcbiAgY29uc3QgcmlnaHRQYW5lbFZhcmlhbnQgPVxuICAgIGxheW91dFN0YXRlW1Nsb3QucmlnaHRQYW5lbF0udmFyaWFudCA/P1xuICAgIGRlY2xhcmVkW1Nsb3QucmlnaHRQYW5lbF0/LnZhcmlhbnQgPz9cbiAgICBcInNpZGViYXJcIjtcbiAgY29uc3QgaXNSaWdodFBhbmVsRmxvYXRpbmcgPVxuICAgIHBhbmVsc0VuYWJsZWQgPT09IHRydWUgJiZcbiAgICAhaXNSaWdodFBhbmVsU2hlZXQgJiZcbiAgICByaWdodFBhbmVsVmFyaWFudCA9PT0gXCJmbG9hdFwiO1xuXG4gIGNvbnN0IGlzU2hvd24gPSAoc2xvdDogU2xvdEtleSk6IGJvb2xlYW4gPT5cbiAgICBsYXlvdXRTdGF0ZVtzbG90XS52aXNpYmxlICYmXG4gICAgIShzbG90ID09PSBTbG90LnJpZ2h0UGFuZWwgJiYgKGlzUmlnaHRQYW5lbEZsb2F0aW5nIHx8IGlzUmlnaHRQYW5lbFNoZWV0KSk7XG5cbiAgLy8gU2xvdHMga2VwdCBtb3VudGVkIHRocm91Z2ggdGhlaXIgZXhpdCBhbmltYXRpb24gKHJlcG9ydGVkIHZpYVxuICAvLyBgdXNlUGFuZWxQcmVzZW5jZWApLiBBIHByZXNlbnQtYnV0LWhpZGRlbiBzbG90IHN0YXlzIGluIHRoZSByb3cgc28gaXRzXG4gIC8vIGNsb3NlIGFuaW1hdGlvbiBjYW4gcGxheTsgaXQncyByZW1vdmVkIG9uY2UgcHJlc2VuY2UgZmxpcHMgZmFsc2UuXG4gIGNvbnN0IFtwcmVzZW50LCBzZXRQcmVzZW50XSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIGJvb2xlYW4+Pj4oe30pO1xuICBjb25zdCBwcmVzZW5jZSA9IHVzZU1lbW88UGFuZWxQcmVzZW5jZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHNldFByZXNlbnQ6IChzbG90LCBpc1ByZXNlbnQpID0+XG4gICAgICAgIHNldFByZXNlbnQoKHByZXYpID0+XG4gICAgICAgICAgcHJldltzbG90XSA9PT0gaXNQcmVzZW50ID8gcHJldiA6IHsgLi4ucHJldiwgW3Nsb3RdOiBpc1ByZXNlbnQgfVxuICAgICAgICApLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgLy8gQW5pbWF0aW9uIGNvbnRyb2wgZm9yIHRoZSBkb2NrZWQgc2lkZSBwYW5lbHMnIG9wZW4vY2xvc2Ugd2lkdGggc2xpZGUuIEFsbFxuICAvLyByZWYtYmFzZWQgb24gcHVycG9zZTogcmVnaXN0ZXJpbmcgaGFuZGxlcy9lbGVtZW50cyBhbmQgdG9nZ2xpbmcgc3VwcHJlc3Npb25cbiAgLy8gaGFwcGVuIGR1cmluZyBjb21taXRzIGFuZCBwZXItZnJhbWUgLSBub25lIG9mIGl0IG1heSByZS1yZW5kZXIgdGhlIExheW91dC5cbiAgY29uc3QgcGFuZWxIYW5kbGVzID0gdXNlUmVmPFxuICAgIFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsSW1wZXJhdGl2ZUhhbmRsZSB8IG51bGw+PlxuICA+KHt9KTtcbiAgY29uc3QgcGFuZWxFbGVtZW50cyA9IHVzZVJlZjxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBIVE1MRWxlbWVudCB8IG51bGw+Pj4oXG4gICAge31cbiAgKTtcbiAgY29uc3QgcmVzaXplU3VwcHJlc3NlZCA9IHVzZVJlZjxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBib29sZWFuPj4+KHt9KTtcbiAgY29uc3QgYW5pbWF0aW9uQ29udHJvbCA9IHVzZU1lbW88UGFuZWxBbmltYXRpb25Db250cm9sPihcbiAgICAoKSA9PiAoe1xuICAgICAgc2V0SGFuZGxlOiAoc2xvdCwgaGFuZGxlKSA9PiB7XG4gICAgICAgIHBhbmVsSGFuZGxlcy5jdXJyZW50W3Nsb3RdID0gaGFuZGxlO1xuICAgICAgfSxcbiAgICAgIGdldEhhbmRsZTogKHNsb3QpID0+IHBhbmVsSGFuZGxlcy5jdXJyZW50W3Nsb3RdID8/IG51bGwsXG4gICAgICBzZXRFbGVtZW50OiAoc2xvdCwgZWxlbWVudCkgPT4ge1xuICAgICAgICBwYW5lbEVsZW1lbnRzLmN1cnJlbnRbc2xvdF0gPSBlbGVtZW50O1xuICAgICAgfSxcbiAgICAgIGdldEVsZW1lbnQ6IChzbG90KSA9PiBwYW5lbEVsZW1lbnRzLmN1cnJlbnRbc2xvdF0gPz8gbnVsbCxcbiAgICAgIHNldFJlc2l6ZVN1cHByZXNzZWQ6IChzbG90LCBzdXBwcmVzc2VkKSA9PiB7XG4gICAgICAgIHJlc2l6ZVN1cHByZXNzZWQuY3VycmVudFtzbG90XSA9IHN1cHByZXNzZWQ7XG4gICAgICB9LFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG4gIC8vIFN0YWJsZSBwZXItc2xvdCByZWYgY2FsbGJhY2tzIC0gYSBmcmVzaCBjYWxsYmFjayBpZGVudGl0eSBwZXIgcmVuZGVyIHdvdWxkXG4gIC8vIG1ha2UgUmVhY3QgZGV0YWNoL3JlYXR0YWNoIHRoZSByZWZzIG9uIGV2ZXJ5IExheW91dCByZS1yZW5kZXIuXG4gIGNvbnN0IHBhbmVsUmVmQ2FsbGJhY2tzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2FsbGJhY2tzID0gbmV3IE1hcDxcbiAgICAgIHN0cmluZyxcbiAgICAgIChoYW5kbGU6IFBhbmVsSW1wZXJhdGl2ZUhhbmRsZSB8IG51bGwpID0+IHZvaWRcbiAgICA+KCk7XG4gICAgY29uc3QgZWxlbWVudENhbGxiYWNrcyA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICAoZWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsKSA9PiB2b2lkXG4gICAgPigpO1xuICAgIHJldHVybiB7XG4gICAgICBoYW5kbGVGb3I6IChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBjYWxsYmFjayA9IGhhbmRsZUNhbGxiYWNrcy5nZXQoaWQpO1xuICAgICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgICAgY2FsbGJhY2sgPSAoaGFuZGxlKSA9PlxuICAgICAgICAgICAgYW5pbWF0aW9uQ29udHJvbC5zZXRIYW5kbGUoaWQgYXMgU2xvdEtleSwgaGFuZGxlKTtcbiAgICAgICAgICBoYW5kbGVDYWxsYmFja3Muc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICAgIGVsZW1lbnRGb3I6IChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBjYWxsYmFjayA9IGVsZW1lbnRDYWxsYmFja3MuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrID0gKGVsZW1lbnQpID0+XG4gICAgICAgICAgICBhbmltYXRpb25Db250cm9sLnNldEVsZW1lbnQoaWQgYXMgU2xvdEtleSwgZWxlbWVudCk7XG4gICAgICAgICAgZWxlbWVudENhbGxiYWNrcy5zZXQoaWQsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FsbGJhY2s7XG4gICAgICB9LFxuICAgIH07XG4gIH0sIFthbmltYXRpb25Db250cm9sXSk7XG4gIGNvbnN0IHNob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoKSA9PiBPYmplY3QudmFsdWVzKHJlc2l6ZVN1cHByZXNzZWQuY3VycmVudCkuc29tZShCb29sZWFuKSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IHJlZ2lzdHJ5ID0gdXNlTWVtbzxQYW5lbFJlZ2lzdHJ5PihcbiAgICAoKSA9PiAoe1xuICAgICAgcmVnaXN0ZXI6IChzbG90LCByZWcpID0+XG4gICAgICAgIHNldERlY2xhcmVkKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBbc2xvdF06IHJlZyB9KSksXG4gICAgICB1bnJlZ2lzdGVyOiAoc2xvdCkgPT5cbiAgICAgICAgc2V0RGVjbGFyZWQoKHByZXYpID0+IHtcbiAgICAgICAgICBpZiAoIShzbG90IGluIHByZXYpKSByZXR1cm4gcHJldjtcbiAgICAgICAgICBjb25zdCBuZXh0ID0geyAuLi5wcmV2IH07XG4gICAgICAgICAgZGVsZXRlIG5leHRbc2xvdF07XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH0pLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgY29uc3QgeyBwb3J0YWxUYXJnZXRzLCBzbG90SG9zdHMsIHNsb3RIb3N0UmVmcywgZmxvYXRIb3N0UmVmIH0gPVxuICAgIHVzZUZsb2F0YWJsZVBvcnRhbFRhcmdldHMoe1xuICAgICAgc2xvdHM6IFBBTkVMX09SREVSLFxuICAgICAgZmxvYXRhYmxlU2xvdDogU2xvdC5yaWdodFBhbmVsLFxuICAgICAgaXNGbG9hdGluZzogaXNSaWdodFBhbmVsRmxvYXRpbmcsXG4gICAgfSk7XG5cbiAgdXNlR2xvYmFsQ3NzVmFyaWFibGVzKHNsb3RIb3N0cyk7XG5cbiAgLy8gUGFuZWxzIHRoYXQgZXhpc3QgaW4gdGhlIGxheW91dCwgcmVnYXJkbGVzcyBvZiB2aXNpYmlsaXR5LiBEcml2ZXMgdGhlXG4gIC8vIHNvbG8tdnMtcmVzaXphYmxlIGRlY2lzaW9uIGJlbG93IC0ga2V5ZWQgb24gREVDTEFSRUQgKG5vdCBzaG93bikgc28gdGhhdFxuICAvLyBzaG93aW5nL2hpZGluZyBhIHBhbmVsIG5ldmVyIGZsaXBzIHRoZSBtb2RlLlxuICBjb25zdCBkZWNsYXJlZFNsb3RzID0gUEFORUxfT1JERVIuZmlsdGVyKChzbG90KSA9PiBkZWNsYXJlZFtzbG90XSk7XG5cbiAgLy8gU29sbyBtb2RlOiBhIHNpbmdsZSBwYW5lbCBpcyBkZWNsYXJlZCAoZS5nLiBqdXN0IGBDb250ZW50YCwgd2l0aCBub1xuICAvLyBSaWdodFBhbmVsL0xlZnRQYW5lbC9TcGxpdCBpbiB0aGUgdHJlZSkgLSBub3RoaW5nIHRvIHJlc2l6ZSBhZ2FpbnN0LCBzbyBob3N0XG4gIC8vIGl0IGluIGEgcGxhaW4gZGl2IGFuZCBza2lwIHJlYWN0LXJlc2l6YWJsZS1wYW5lbHMgZW50aXJlbHkuIEJlY2F1c2UgdGhlXG4gIC8vIGNoZWNrIGlzIG9uIERFQ0xBUkVEIHBhbmVscywgdG9nZ2xpbmcgYSAqZGVjbGFyZWQqIHBhbmVsJ3MgdmlzaWJpbGl0eSBrZWVwc1xuICAvLyB0aGUgbW9kZSBzdGFibGUsIHNvIGBDb250ZW50YCBpcyBuZXZlciByZW1vdW50ZWQgYnkgYSBzaG93L2hpZGUuIFRoZSBtb2RlXG4gIC8vIG9ubHkgZmxpcHMgd2hlbiBhIHBhbmVsIG1hcmtlciBpcyBhZGRlZCB0byAvIHJlbW92ZWQgZnJvbSB0aGUgdHJlZSAoYVxuICAvLyBzdHJ1Y3R1cmFsIGNoYW5nZSksIHdoZXJlIGEgb25lLXRpbWUgcmVtb3VudCBpcyBhY2NlcHRhYmxlLlxuICBjb25zdCBpc1NvbG8gPSBkZWNsYXJlZFNsb3RzLmxlbmd0aCA8PSAxO1xuICBjb25zdCBzb2xvU2xvdCA9IGRlY2xhcmVkU2xvdHNbMF07XG5cbiAgLy8gY29udGVudCBmbGV4ZXMgKG5vIGZpeGVkIHNpemUpOyBvdGhlcnMgdXNlIHRoZSBkZWNsYXJlZCBkZWZhdWx0LCBmYWxsaW5nXG4gIC8vIGJhY2sgdG8gdGhlIHBlcnNpc3RlZC9jb25maWcgc2l6ZS5cbiAgY29uc3QgZGVmYXVsdFNpemVGb3IgPSAoc2xvdDogU2xvdEtleSk6IFNpemUgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChzbG90ID09PSBTbG90LmNvbnRlbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGRlY2xhcmVkW3Nsb3RdPy5kZWZhdWx0U2l6ZSA/PyBsYXlvdXRTdGF0ZVtzbG90XS5zaXplO1xuICB9O1xuXG4gIC8vIE9ubHkgdGhlIHBhbmVscyB0aGF0IGFyZSBkZWNsYXJlZCBBTkQgKGN1cnJlbnRseSBzaG93biBPUiBtaWQtZXhpdCkuIEFcbiAgLy8gaGlkZGVuLWJ1dC1wcmVzZW50IHNsb3QgbGluZ2VycyBzbyBpdHMgY2xvc2UgYW5pbWF0aW9uIGNhbiBwbGF5OyBvdGhlcndpc2VcbiAgLy8gY2xvc2VkIHBhbmVscyByZXNlcnZlIG5vIHNwYWNlLlxuICBjb25zdCBwYW5lbEl0ZW1zOiBQYW5lbEl0ZW1bXSA9IFBBTkVMX09SREVSLmZpbHRlcihcbiAgICAoc2xvdCkgPT4gZGVjbGFyZWRbc2xvdF0gJiYgKGlzU2hvd24oc2xvdCkgfHwgcHJlc2VudFtzbG90XSlcbiAgKS5tYXAoKHNsb3QpID0+ICh7XG4gICAgaWQ6IHNsb3QsXG4gICAgZGVmYXVsdFNpemU6IGRlZmF1bHRTaXplRm9yKHNsb3QpLFxuICAgIG1pblNpemU6IGRlY2xhcmVkW3Nsb3RdPy5taW5TaXplID8/IGxheW91dFN0YXRlW3Nsb3RdLm1pblNpemUsXG4gICAgbWF4U2l6ZTogZGVjbGFyZWRbc2xvdF0/Lm1heFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0ubWF4U2l6ZSxcbiAgICBjb2xsYXBzaWJsZTogc2xvdCAhPT0gU2xvdC5jb250ZW50ICYmIChkZWNsYXJlZFtzbG90XT8uY29sbGFwc2libGUgPz8gdHJ1ZSksXG4gICAgcmVzaXphYmxlOlxuICAgICAgZGVjbGFyZWRbc2xvdF0/LnJlc2l6YWJsZSA/PyByZXNpemFibGVGcm9tU3RhdGUobGF5b3V0U3RhdGVbc2xvdF0pLFxuICB9KSk7XG5cbiAgLy8gU29sbyBtb2RlIGhvc3RzIHRoZSBsb25lIHBhbmVsIGluIGEgcGxhaW4gZGl2LCBubyByZXNpemFibGUgR3JvdXAuIEEgaGlkZGVuXG4gIC8vIGxvbmUgcGFuZWwgcmVuZGVycyBub3RoaW5nIChDb250ZW50IGlzIGFsd2F5cyBzaG93bikuXG4gIGNvbnN0IHNvbG9Ib3N0ID1cbiAgICBzb2xvU2xvdCAmJiBpc1Nob3duKHNvbG9TbG90KSA/IChcbiAgICAgIDxTdHlsZWRTb2xvSG9zdCByZWY9e3Nsb3RIb3N0UmVmc1tzb2xvU2xvdF19IC8+XG4gICAgKSA6IG51bGw7XG5cbiAgLy8gVGhlIHJlc2l6YWJsZSBHcm91cC4gYGtleWAgPSB0aGUgcGVyc2lzdGVuY2UgbmFtZXNwYWNlOiByZWFjdC1yZXNpemFibGUtcGFuZWxzXG4gIC8vIHJlYWRzIHN0b3JlZCBzaXplcyBvbmx5IG9uIG1vdW50LCBzbyByZW1vdW50IHdoZW4gdGhlIGtleSBjaGFuZ2VzIHRvIGxvYWRcbiAgLy8gdGhhdCBpbnN0YW5jZSdzIHNpemVzIChwZXItcm91dGUgc2l6ZSBtZW1vcnkpLiBUaGUga2V5IG5ldmVyIGNoYW5nZXMgb25cbiAgLy8gcGFuZWwgb3Blbi9jbG9zZSwgc28gbm9ybWFsIHRvZ2dsaW5nIHN0YXlzIHJlbW91bnQtZnJlZS5cbiAgY29uc3QgcGFuZWxHcm91cCA9XG4gICAgcGFuZWxJdGVtcy5sZW5ndGggPiAwID8gKFxuICAgICAgPFBhbmVsXG4gICAgICAgIGtleT17cmVzb2x2ZWRLZXl9XG4gICAgICAgIHBhbmVscz17cGFuZWxJdGVtc31cbiAgICAgICAgcGVyc2lzdGVuY2VLZXk9e3Jlc29sdmVkS2V5fVxuICAgICAgICBzdG9yYWdlPXtyZXNvbHZlZFN0b3JhZ2V9XG4gICAgICAgIGhvc3RGb3I9eyhpZCkgPT4gc2xvdEhvc3RSZWZzW2lkIGFzIFNsb3RLZXldfVxuICAgICAgICBvblJlc2l6ZT17KGlkLCBzaXplKSA9PiBwYW5lbENhbGxiYWNrc1tpZCBhcyBTbG90S2V5XS5yZXNpemUoc2l6ZSl9XG4gICAgICAgIG9uQ29sbGFwc2U9eyhpZCkgPT4gcGFuZWxDYWxsYmFja3NbaWQgYXMgU2xvdEtleV0uaGlkZSgpfVxuICAgICAgICBwYW5lbEhhbmRsZUZvcj17cGFuZWxSZWZDYWxsYmFja3MuaGFuZGxlRm9yfVxuICAgICAgICBwYW5lbEVsZW1lbnRGb3I9e3BhbmVsUmVmQ2FsbGJhY2tzLmVsZW1lbnRGb3J9XG4gICAgICAgIHNob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2s9e3Nob3VsZFN1cHByZXNzTGF5b3V0Q2FsbGJhY2t9XG4gICAgICAvPlxuICAgICkgOiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsUmVnaXN0cnlDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtyZWdpc3RyeX0+XG4gICAgICA8UGFuZWxEZWNsYXJhdGlvbnNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtkZWNsYXJlZH0+XG4gICAgICAgIDxQYW5lbFByZXNlbmNlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17cHJlc2VuY2V9PlxuICAgICAgICAgIDxQYW5lbEFuaW1hdGlvbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2FuaW1hdGlvbkNvbnRyb2x9PlxuICAgICAgICAgICAgPExheW91dFBvcnRhbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3BvcnRhbFRhcmdldHN9PlxuICAgICAgICAgICAgICA8TGF5b3V0RmxvYXREcmFnUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPE1vYmlsZVNwbGl0U3RhY2tDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXttb2JpbGVTcGxpdFN0YWNrfT5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRMYXlvdXQgZGF0YS1kcy1pZD1cIkxheW91dFwiPlxuICAgICAgICAgICAgICAgICAgICB7aXNTb2xvID8gc29sb0hvc3QgOiBwYW5lbEdyb3VwfVxuICAgICAgICAgICAgICAgICAgICB7aXNSaWdodFBhbmVsRmxvYXRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRTdGF0ZVtTbG90LnJpZ2h0UGFuZWxdLnZpc2libGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPExheW91dEZsb2F0IGhvc3RSZWY9e2Zsb2F0SG9zdFJlZn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICAgIHtzaG93TW9iaWxlU3BsaXRTdGFjayAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1vYmlsZVNwbGl0U3RhY2tIb3N0XG4gICAgICAgICAgICAgICAgICAgICAgICByZWY9e3NldE1vYmlsZVNwbGl0U3RhY2tIb3N0fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZExheW91dD5cbiAgICAgICAgICAgICAgICA8L01vYmlsZVNwbGl0U3RhY2tDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgICA8L0xheW91dEZsb2F0RHJhZ1Byb3ZpZGVyPlxuICAgICAgICAgICAgPC9MYXlvdXRQb3J0YWxDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgIDwvUGFuZWxBbmltYXRpb25Db250ZXh0LlByb3ZpZGVyPlxuICAgICAgICA8L1BhbmVsUHJlc2VuY2VDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9QYW5lbERlY2xhcmF0aW9uc0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9QYW5lbFJlZ2lzdHJ5Q29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIFB1YmxpYyBMYXlvdXQgLSB0aGUgcmVzaXphYmxlIHBhbmVsIHJvdyArIGNvbXBvdW5kIHBhcnRzIGFzIHN0YXRpY3MgICAgICAgICAqL1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxudHlwZSBMYXlvdXRDb21wb25lbnQgPSB0eXBlb2YgTGF5b3V0QmFzZSAmIHtcbiAgUHJvdmlkZXI6IHR5cGVvZiBMYXlvdXRQcm92aWRlcjtcbiAgTGVmdFBhbmVsOiB0eXBlb2YgTGVmdFBhbmVsO1xuICBMZWZ0UGFuZWxIZWFkZXI6IHR5cGVvZiBMZWZ0UGFuZWxIZWFkZXI7XG4gIExlZnRQYW5lbEZvb3RlcjogdHlwZW9mIExlZnRQYW5lbEZvb3RlcjtcbiAgUmlnaHRQYW5lbDogdHlwZW9mIFJpZ2h0UGFuZWw7XG4gIFJpZ2h0UGFuZWxIZWFkZXI6IHR5cGVvZiBSaWdodFBhbmVsSGVhZGVyO1xuICBSaWdodFBhbmVsRm9vdGVyOiB0eXBlb2YgUmlnaHRQYW5lbEZvb3RlcjtcbiAgQ29udGVudDogdHlwZW9mIENvbnRlbnQ7XG4gIFNwbGl0OiB0eXBlb2YgU3BsaXQ7XG4gIFNwbGl0SGVhZGVyOiB0eXBlb2YgU3BsaXRIZWFkZXI7XG4gIFNwbGl0Rm9vdGVyOiB0eXBlb2YgU3BsaXRGb290ZXI7XG59O1xuXG5leHBvcnQgY29uc3QgTGF5b3V0ID0gTGF5b3V0QmFzZSBhcyBMYXlvdXRDb21wb25lbnQ7XG5cbkxheW91dC5Qcm92aWRlciA9IExheW91dFByb3ZpZGVyO1xuTGF5b3V0LkxlZnRQYW5lbCA9IExlZnRQYW5lbDtcbkxheW91dC5MZWZ0UGFuZWxIZWFkZXIgPSBMZWZ0UGFuZWxIZWFkZXI7XG5MYXlvdXQuTGVmdFBhbmVsRm9vdGVyID0gTGVmdFBhbmVsRm9vdGVyO1xuTGF5b3V0LlJpZ2h0UGFuZWwgPSBSaWdodFBhbmVsO1xuTGF5b3V0LlJpZ2h0UGFuZWxIZWFkZXIgPSBSaWdodFBhbmVsSGVhZGVyO1xuTGF5b3V0LlJpZ2h0UGFuZWxGb290ZXIgPSBSaWdodFBhbmVsRm9vdGVyO1xuTGF5b3V0LkNvbnRlbnQgPSBDb250ZW50O1xuTGF5b3V0LlNwbGl0ID0gU3BsaXQ7XG5MYXlvdXQuU3BsaXRIZWFkZXIgPSBTcGxpdEhlYWRlcjtcbkxheW91dC5TcGxpdEZvb3RlciA9IFNwbGl0Rm9vdGVyO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJIbUMifQ== */"),Layout=function({children,persistenceKey,storage}){let[declared,setDeclared]=(0,_react.useState)({}),{state:layoutState,...panelCallbacks}=(0,_useLayout.useLayout)(),persistence=(0,_context.useLayoutPersistence)(),resolvedKey=persistenceKey??persistence.persistenceKey,resolvedStorage=storage??persistence.storage,{isMobile}=(0,_useBreakpoints.useBreakpoints)(),showMobileSplitStack=(0,_useMobileSplitView.useMobileSplitViewEnabled)(),[mobileSplitStackHost,setMobileSplitStackHost]=(0,_react.useState)(null),[splitCount,setSplitCount]=(0,_react.useState)(0),registerSplit=(0,_react.useCallback)(()=>(setSplitCount(count=>count+1),()=>setSplitCount(count=>count-1)),[]),mobileSplitStack=(0,_react.useMemo)(()=>({host:mobileSplitStackHost,isSplitPresent:splitCount>0,registerSplit}),[mobileSplitStackHost,splitCount,registerSplit]),panelsEnabled=(0,_context.useLayoutPanelsEnabled)(),rightPanelVariant=layoutState[_constants.Slot.rightPanel].variant??declared[_constants.Slot.rightPanel]?.variant??"sidebar",isRightPanelFloating=!0===panelsEnabled&&!isMobile&&"float"===rightPanelVariant,isShown=slot=>layoutState[slot].visible&&!(slot===_constants.Slot.rightPanel&&(isRightPanelFloating||isMobile)),[present,setPresent]=(0,_react.useState)({}),presence=(0,_react.useMemo)(()=>({setPresent:(slot,isPresent)=>setPresent(prev=>prev[slot]===isPresent?prev:{...prev,[slot]:isPresent})}),[]),panelHandles=(0,_react.useRef)({}),panelElements=(0,_react.useRef)({}),resizeSuppressed=(0,_react.useRef)({}),animationControl=(0,_react.useMemo)(()=>({setHandle:(slot,handle)=>{panelHandles.current[slot]=handle},getHandle:slot=>panelHandles.current[slot]??null,setElement:(slot,element)=>{panelElements.current[slot]=element},getElement:slot=>panelElements.current[slot]??null,setResizeSuppressed:(slot,suppressed)=>{resizeSuppressed.current[slot]=suppressed}}),[]),panelRefCallbacks=(0,_react.useMemo)(()=>{let handleCallbacks=new Map,elementCallbacks=new Map;return{handleFor:id=>{let callback=handleCallbacks.get(id);return callback||(callback=handle=>animationControl.setHandle(id,handle),handleCallbacks.set(id,callback)),callback},elementFor:id=>{let callback=elementCallbacks.get(id);return callback||(callback=element=>animationControl.setElement(id,element),elementCallbacks.set(id,callback)),callback}}},[animationControl]),shouldSuppressLayoutCallback=(0,_react.useCallback)(()=>Object.values(resizeSuppressed.current).some(Boolean),[]),registry=(0,_react.useMemo)(()=>({register:(slot,reg)=>setDeclared(prev=>({...prev,[slot]:reg})),unregister:slot=>setDeclared(prev=>{if(!(slot in prev))return prev;let next={...prev};return delete next[slot],next})}),[]),{portalTargets,slotHosts,slotHostRefs,floatHostRef}=(0,_useFloatablePortalTargets.useFloatablePortalTargets)({slots:_constants.PANEL_ORDER,floatableSlot:_constants.Slot.rightPanel,isFloating:isRightPanelFloating});useGlobalCssVariables(slotHosts);let declaredSlots=_constants.PANEL_ORDER.filter(slot=>declared[slot]),isSolo=declaredSlots.length<=1,soloSlot=declaredSlots[0],defaultSizeFor=slot=>{if(slot!==_constants.Slot.content)return declared[slot]?.defaultSize??layoutState[slot].size},panelItems=_constants.PANEL_ORDER.filter(slot=>declared[slot]&&(isShown(slot)||present[slot])).map(slot=>({id:slot,defaultSize:defaultSizeFor(slot),minSize:declared[slot]?.minSize??layoutState[slot].minSize,maxSize:declared[slot]?.maxSize??layoutState[slot].maxSize,collapsible:slot!==_constants.Slot.content&&(declared[slot]?.collapsible??!0),resizable:declared[slot]?.resizable??resizableFromState(layoutState[slot])})),soloHost=soloSlot&&isShown(soloSlot)?_react.default.createElement(StyledSoloHost,{ref:slotHostRefs[soloSlot]}):null,panelGroup=panelItems.length>0?_react.default.createElement(_Panel.Panel,{key:resolvedKey,panels:panelItems,persistenceKey:resolvedKey,storage:resolvedStorage,hostFor:id=>slotHostRefs[id],onResize:(id,size)=>panelCallbacks[id].resize(size),onCollapse:id=>panelCallbacks[id].hide(),panelHandleFor:panelRefCallbacks.handleFor,panelElementFor:panelRefCallbacks.elementFor,shouldSuppressLayoutCallback:shouldSuppressLayoutCallback}):null;return _react.default.createElement(_registry.PanelRegistryContext.Provider,{value:registry},_react.default.createElement(_registry.PanelDeclarationsContext.Provider,{value:declared},_react.default.createElement(_registry.PanelPresenceContext.Provider,{value:presence},_react.default.createElement(_registry.PanelAnimationContext.Provider,{value:animationControl},_react.default.createElement(_registry.LayoutPortalContext.Provider,{value:portalTargets},_react.default.createElement(_LayoutFloatDragProvider.LayoutFloatDragProvider,null,_react.default.createElement(_useMobileSplitStack.MobileSplitStackContext.Provider,{value:mobileSplitStack},_react.default.createElement(StyledLayout,{"data-ds-id":"Layout"},isSolo?soloHost:panelGroup,isRightPanelFloating&&layoutState[_constants.Slot.rightPanel].visible&&_react.default.createElement(_LayoutFloat.LayoutFloat,{hostRef:floatHostRef}),children,showMobileSplitStack&&_react.default.createElement(StyledMobileSplitStackHost,{ref:setMobileSplitStackHost})))))))))};Layout.Provider=_LayoutProvider.LayoutProvider,Layout.LeftPanel=_LeftPanel.LeftPanel,Layout.LeftPanelHeader=_LeftPanelHeader.LeftPanelHeader,Layout.LeftPanelFooter=_LeftPanelFooter.LeftPanelFooter,Layout.RightPanel=_RightPanel.RightPanel,Layout.RightPanelHeader=_RightPanelHeader.RightPanelHeader,Layout.RightPanelFooter=_RightPanelFooter.RightPanelFooter,Layout.Content=_Content.Content,Layout.Split=_Split.Split,Layout.SplitHeader=_SplitHeader.SplitHeader,Layout.SplitFooter=_SplitFooter.SplitFooter;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Layout",{enumerable:!0,get:function(){return Layout}});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_styled=/*#__PURE__*/_interop_require_default._(require("@emotion/styled")),_Panel=require("../Internal/Panel/Panel"),_LayoutFloat=require("../Internal/LayoutFloat/LayoutFloat"),_useBreakpoints=require("../../shared/useBreakpoints"),_constants=require("./-constants"),_context=require("./context"),_useMobileSplitStack=require("./Split/MobileSplitView/useMobileSplitStack"),_useMobileSplitView=require("./Split/MobileSplitView/useMobileSplitView"),_LayoutProvider=require("./LayoutProvider"),_Content=require("./Content/Content"),_RightPanel=require("./RightPanel/RightPanel"),_RightPanelHeader=require("./RightPanel/RightPanelHeader"),_RightPanelFooter=require("./RightPanel/RightPanelFooter"),_LeftPanel=require("./LeftPanel/LeftPanel"),_LeftPanelHeader=require("./LeftPanel/LeftPanelHeader"),_LeftPanelFooter=require("./LeftPanel/LeftPanelFooter"),_Split=require("./Split/Split"),_SplitHeader=require("./Split/SplitHeader"),_SplitFooter=require("./Split/SplitFooter"),_registry=require("./registry"),_useFloatablePortalTargets=require("./useFloatablePortalTargets"),_LayoutFloatDragProvider=require("../Internal/LayoutFloat/LayoutFloatDragProvider"),_LayoutCssVars=require("./LayoutCssVars"),_useLayout=require("./useLayout"),_useLayoutRules=require("./useLayoutRules"),_rules=require("./rules"),resizableFromState=slotState=>"sidePanel"===slotState.kind?slotState.resizable:void 0,useGlobalCssVariables=slotHosts=>{let contentWidthCssVar=(0,_LayoutCssVars.useLayoutVar)(_constants.PANEL_WIDTH_VAR.content),rightPanelWidthCssVar=(0,_LayoutCssVars.useLayoutVar)(_constants.PANEL_WIDTH_VAR.rightPanel);(0,_react.useEffect)(()=>{let targets=[[_constants.Slot.content,contentWidthCssVar],[_constants.Slot.rightPanel,rightPanelWidthCssVar]],observers=[];return targets.forEach(([slot,handle])=>{let node=slotHosts[slot]??null;if(!node)return void handle.set("0px");let publishNodeWidth=()=>handle.set(`${node.getBoundingClientRect().width}px`);if(publishNodeWidth(),"undefined"==typeof ResizeObserver)return;let observer=new ResizeObserver(publishNodeWidth);observer.observe(node),observers.push(observer)}),()=>observers.forEach(observer=>observer.disconnect())},[contentWidthCssVar,rightPanelWidthCssVar,slotHosts])},StyledLayout=(0,_styled.default)("div",{target:"elbydir0",label:"StyledLayout"})({position:"relative",height:"100%",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9MYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlLXBhbmVsc1wiO1xuaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiLi4vSW50ZXJuYWwvUGFuZWwvUGFuZWxcIjtcbmltcG9ydCB0eXBlIHsgUGFuZWxJdGVtIH0gZnJvbSBcIi4uL0ludGVybmFsL1BhbmVsL1BhbmVsXCI7XG5pbXBvcnQgeyBMYXlvdXRGbG9hdCB9IGZyb20gXCIuLi9JbnRlcm5hbC9MYXlvdXRGbG9hdC9MYXlvdXRGbG9hdFwiO1xuaW1wb3J0IHsgdXNlQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUJyZWFrcG9pbnRzXCI7XG5pbXBvcnQgeyBQQU5FTF9PUkRFUiwgUEFORUxfV0lEVEhfVkFSLCBTbG90IH0gZnJvbSBcIi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0UGFuZWxzRW5hYmxlZCwgdXNlTGF5b3V0UGVyc2lzdGVuY2UgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQge1xuICBNb2JpbGVTcGxpdFN0YWNrQ29udGV4dCxcbiAgdHlwZSBNb2JpbGVTcGxpdFN0YWNrVmFsdWUsXG59IGZyb20gXCIuL1NwbGl0L01vYmlsZVNwbGl0Vmlldy91c2VNb2JpbGVTcGxpdFN0YWNrXCI7XG5pbXBvcnQgeyB1c2VNb2JpbGVTcGxpdFZpZXdFbmFibGVkIH0gZnJvbSBcIi4vU3BsaXQvTW9iaWxlU3BsaXRWaWV3L3VzZU1vYmlsZVNwbGl0Vmlld1wiO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tIFwiLi9MYXlvdXRQcm92aWRlclwiO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gXCIuL0NvbnRlbnQvQ29udGVudFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbCB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEhlYWRlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEZvb3RlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbFwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsSGVhZGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsRm9vdGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgU3BsaXQgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdFwiO1xuaW1wb3J0IHsgU3BsaXRIZWFkZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEhlYWRlclwiO1xuaW1wb3J0IHsgU3BsaXRGb290ZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEZvb3RlclwiO1xuaW1wb3J0IHtcbiAgTGF5b3V0UG9ydGFsQ29udGV4dCxcbiAgUGFuZWxSZWdpc3RyeUNvbnRleHQsXG4gIFBhbmVsRGVjbGFyYXRpb25zQ29udGV4dCxcbiAgUGFuZWxQcmVzZW5jZUNvbnRleHQsXG4gIFBhbmVsQW5pbWF0aW9uQ29udGV4dCxcbiAgdHlwZSBQb3J0YWxUYXJnZXRzLFxuICB0eXBlIFBhbmVsUmVnLFxuICB0eXBlIFBhbmVsUmVnaXN0cnksXG4gIHR5cGUgUGFuZWxQcmVzZW5jZSxcbiAgdHlwZSBQYW5lbEFuaW1hdGlvbkNvbnRyb2wsXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzIH0gZnJvbSBcIi4vdXNlRmxvYXRhYmxlUG9ydGFsVGFyZ2V0c1wiO1xuaW1wb3J0IHsgTGF5b3V0RmxvYXREcmFnUHJvdmlkZXIgfSBmcm9tIFwiLi4vSW50ZXJuYWwvTGF5b3V0RmxvYXQvTGF5b3V0RmxvYXREcmFnUHJvdmlkZXJcIjtcbmltcG9ydCB7IHVzZUxheW91dFZhciwgdHlwZSBMYXlvdXRWYXJIYW5kbGUgfSBmcm9tIFwiLi9MYXlvdXRDc3NWYXJzXCI7XG5pbXBvcnQgeyB1c2VMYXlvdXQgfSBmcm9tIFwiLi91c2VMYXlvdXRcIjtcbmltcG9ydCB7IHVzZUxheW91dFJ1bGVzIH0gZnJvbSBcIi4vdXNlTGF5b3V0UnVsZXNcIjtcbmltcG9ydCB7IERFRkFVTFRfTEFZT1VUX1JVTEVTIH0gZnJvbSBcIi4vcnVsZXNcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0UHJvcHMsIExheW91dFN0YXRlLCBTaXplLCBTbG90S2V5IH0gZnJvbSBcIi4vLXR5cGVzXCI7XG5cbi8vIE9ubHkgdGhlIHNpZGUgcGFuZWxzIGNhcnJ5IGByZXNpemFibGVgIGluIHN0YXRlIChpdCBjb21lcyBmcm9tIHRoZSBwcm92aWRlclxuLy8gY29uZmlnKTsgdGhlIGNvbnRlbnQvc3BsaXR2aWV3IHNsb3RzIHRha2UgaXQgZnJvbSB0aGVpciBkZWNsYXJhdGlvbiBhbG9uZS5cbmNvbnN0IHJlc2l6YWJsZUZyb21TdGF0ZSA9IChcbiAgc2xvdFN0YXRlOiBMYXlvdXRTdGF0ZVtTbG90S2V5XVxuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9PlxuICBzbG90U3RhdGUua2luZCA9PT0gXCJzaWRlUGFuZWxcIiA/IHNsb3RTdGF0ZS5yZXNpemFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogUHVibGlzaGVzIGVhY2ggcGFuZWwncyBsaXZlIHBpeGVsIHdpZHRoIGFzIGEgbGF5b3V0IENTUyB2YXIgKGUuZy5cbiAqIGAtLWRzLWxheW91dC1yaWdodFBhbmVsLXdpZHRoYCksIHRyYWNraW5nIGRyYWctIGFuZCB3aW5kb3ctcmVzaXplcy4gQSBoaWRkZW5cbiAqIHBhcnQgKG5vIGhvc3Qgbm9kZSkgcmVhZHMgYDBweGAsIHNvIHRoZSB2YXIgaXMgYWx3YXlzIGRlZmluZWQuIE9uZVxuICogYHVzZUxheW91dFZhcmAgcGVyIHNsb3QgaW4gYFBBTkVMX1dJRFRIX1ZBUmAuXG4gKi9cbmNvbnN0IHVzZUdsb2JhbENzc1ZhcmlhYmxlcyA9IChzbG90SG9zdHM6IFBvcnRhbFRhcmdldHMpOiB2b2lkID0+IHtcbiAgY29uc3QgY29udGVudFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5jb250ZW50KTtcbiAgY29uc3QgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5yaWdodFBhbmVsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldHM6IFtTbG90S2V5LCBMYXlvdXRWYXJIYW5kbGVdW10gPSBbXG4gICAgICBbU2xvdC5jb250ZW50LCBjb250ZW50V2lkdGhDc3NWYXJdLFxuICAgICAgW1Nsb3QucmlnaHRQYW5lbCwgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyXSxcbiAgICBdO1xuICAgIGNvbnN0IG9ic2VydmVyczogUmVzaXplT2JzZXJ2ZXJbXSA9IFtdO1xuXG4gICAgdGFyZ2V0cy5mb3JFYWNoKChbc2xvdCwgaGFuZGxlXSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IHNsb3RIb3N0c1tzbG90XSA/PyBudWxsO1xuICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgIGhhbmRsZS5zZXQoXCIwcHhcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHB1Ymxpc2hOb2RlV2lkdGggPSAoKTogdm9pZCA9PlxuICAgICAgICBoYW5kbGUuc2V0KGAke25vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHhgKTtcbiAgICAgIHB1Ymxpc2hOb2RlV2lkdGgoKTtcbiAgICAgIC8vIGpzZG9tIChhbmQgb2xkIGJyb3dzZXJzKSBsYWNrIFJlc2l6ZU9ic2VydmVyIOKAlCBza2lwIGxpdmUgdHJhY2tpbmcgdGhlcmUuXG4gICAgICBpZiAodHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihwdWJsaXNoTm9kZVdpZHRoKTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSk7XG4gICAgICBvYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXJzLmZvckVhY2goKG9ic2VydmVyKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuICB9LCBbY29udGVudFdpZHRoQ3NzVmFyLCByaWdodFBhbmVsV2lkdGhDc3NWYXIsIHNsb3RIb3N0c10pO1xufTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIExheW91dCAtIHJlZ2lzdHJ5ICsgaG9zdHM7IG1hcmtlcnMgZGVjbGFyZS9wb3J0YWw7IHRoZSByZXNpemFibGUgcGFuZWwgcm93ICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8vIGBwb3NpdGlvbjogcmVsYXRpdmVgIGFuY2hvcnMgdGhlIGFic29sdXRlbHktcG9zaXRpb25lZCBzcGxpdCBzdGFjayBob3N0IGFuZFxuLy8gdGhlIGZsb2F0aW5nIHdpbmRvdy4gT3ZlcmZsb3cgaXMgbGVmdCB1bnRvdWNoZWQgKHZpc2libGUpIHNvIGEgcGFnZSByZWx5aW5nXG4vLyBvbiBkb2N1bWVudC9hbmNlc3RvciBzY3JvbGxpbmcgaXMgdW5hZmZlY3RlZCAtIHRoZSBvZmZzY3JlZW4gc3BsaXQgbGF5ZXJzIGFyZVxuLy8gY2xpcHBlZCBieSB0aGVpciBvd24gaG9zdCBiZWxvdywgbm90IGhlcmUuXG5jb25zdCBTdHlsZWRMYXlvdXQgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbi8vIFNvbG8tbW9kZSBob3N0OiBhIGxvbmUgcGFuZWwgKG5vIHJlc2l6YWJsZSBzaWJsaW5nKSBpcyBob3N0ZWQgaGVyZSBpbnN0ZWFkIG9mXG4vLyBpbnNpZGUgcmVhY3QtcmVzaXphYmxlLXBhbmVscy4gTWF0Y2hlcyB0aGUgcGVyLXBhbmVsIGhvc3QgdGhlIEdyb3VwIHJlbmRlcnNcbi8vIChgcmVsYXRpdmVgICsgZnVsbC1ibGVlZCkgc28gY29udGVudCByZWZsb3dzL3Njcm9sbHMgaWRlbnRpY2FsbHkgZWl0aGVyIHdheS5cbmNvbnN0IFN0eWxlZFNvbG9Ib3N0ID0gc3R5bGVkLmRpdih7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbn0pO1xuXG4vLyBGdWxsLWFyZWEgb3ZlcmxheSBhdCB0aGUgbGF5b3V0IHJvb3QgdGhhdCBob3N0cyB0aGUgbW9iaWxlIHNwbGl0IHN0YWNrLiBUaGVcbi8vIGxhc3QgY2hpbGQgb2YgYFN0eWxlZExheW91dGAsIHNvIGl0IHN0YWNrcyBhYm92ZSB0aGUgcGFuZWwgcm93OyBgY29udGVudGAgYW5kXG4vLyB0aGUgc3BsaXQgdmlld3MgcG9ydGFsIHRoZWlyIHNsaWRpbmcgbGF5ZXJzIGluIGhlcmUuIGBwb2ludGVyLWV2ZW50czogbm9uZWBcbi8vIHNvIGl0IG5ldmVyIGJsb2NrcyB0aGUgbGF5b3V0IGJlbmVhdGggLSBlYWNoIGxheWVyIHJlLWVuYWJsZXMgZXZlbnRzIHdoZW5cbi8vIGl0J3MgdGhlIGFjdGl2ZSAoZnJvbnQpIHZpZXcuIGBvdmVyZmxvdzogaGlkZGVuYCBjbGlwcyB0aGUgaW5hY3RpdmUgbGF5ZXJzJ1xuLy8gb2Zmc2NyZWVuIHJlc3RpbmcgcG9zaXRpb24gKHRyYW5zbGF0ZVggcGFzdCB0aGUgZWRnZSkgc28gdGhleSBkb24ndCB3aWRlblxuLy8gdGhlIHBhZ2UgLSBzY29wZWQgaGVyZSwgbm90IG9uIHRoZSByb290LCBzbyBpdCBuZXZlciBhZmZlY3RzIHBhZ2Ugc2Nyb2xsaW5nLlxuY29uc3QgU3R5bGVkTW9iaWxlU3BsaXRTdGFja0hvc3QgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgaW5zZXQ6IDAsXG4gIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIixcbn0pO1xuXG5mdW5jdGlvbiBMYXlvdXRCYXNlKHtcbiAgY2hpbGRyZW4sXG4gIHBlcnNpc3RlbmNlS2V5LFxuICBzdG9yYWdlLFxuICBydWxlcyA9IERFRkFVTFRfTEFZT1VUX1JVTEVTLFxuICBhZGRpdGlvbmFsUnVsZXNEYXRhLFxufTogTGF5b3V0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBbZGVjbGFyZWQsIHNldERlY2xhcmVkXSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsUmVnPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IGxheW91dCA9IHVzZUxheW91dCgpO1xuICBjb25zdCB7IHN0YXRlOiBsYXlvdXRTdGF0ZSwgLi4ucGFuZWxDYWxsYmFja3MgfSA9IGxheW91dDtcbiAgLy8gQWN0cyB0aHJvdWdoIHRoZSBvcmRpbmFyeSBwYW5lbCBhY3Rpb25zIC0gbm90aGluZyBiZWxvdyBrbm93cyBpdCByYW4uXG4gIHVzZUxheW91dFJ1bGVzKHtcbiAgICBsYXlvdXQsXG4gICAgZGVjbGFyZWQsXG4gICAgcnVsZXMsXG4gICAgYWRkaXRpb25hbERhdGE6IGFkZGl0aW9uYWxSdWxlc0RhdGEsXG4gIH0pO1xuICBjb25zdCBwZXJzaXN0ZW5jZSA9IHVzZUxheW91dFBlcnNpc3RlbmNlKCk7XG4gIGNvbnN0IHJlc29sdmVkS2V5ID0gcGVyc2lzdGVuY2VLZXkgPz8gcGVyc2lzdGVuY2UucGVyc2lzdGVuY2VLZXk7XG4gIGNvbnN0IHJlc29sdmVkU3RvcmFnZSA9IHN0b3JhZ2UgPz8gcGVyc2lzdGVuY2Uuc3RvcmFnZTtcblxuICAvLyBCZWxvdyB0aGUgbW9iaWxlIGJyZWFrcG9pbnQgdGhlIHJpZ2h0UGFuZWwgcmVuZGVycyBhcyBhIGJvdHRvbSBzaGVldCAoaXRzXG4gIC8vIG1hcmtlciByZW5kZXJzIHRoZSBTaGVldCBpdHNlbGYpIC0gYW4gYXV0b21hdGljLCByZW5kZXItbGV2ZWwgYWRhcHRhdGlvbi5cbiAgLy8gVGhlIHN0b3JlZCB2YXJpYW50IGlzIHVudG91Y2hlZCwgc28gcmVzaXppbmcgYmFjayB0byBkZXNrdG9wIHJlc3RvcmVzIHRoZVxuICAvLyBleGFjdCBwcmVzZW50YXRpb24gKGRvY2tlZCBvciBmbG9hdGluZykgdGhlIHVzZXIgbGVmdC5cbiAgY29uc3QgeyBpc01vYmlsZSB9ID0gdXNlQnJlYWtwb2ludHMoKTtcbiAgY29uc3QgaXNSaWdodFBhbmVsU2hlZXQgPSBpc01vYmlsZTtcblxuICAvLyBUaGUgbW9iaWxlIHNwbGl0IHN0YWNrJ3Mgc2hhcmVkIHN0YXRlLCBzY29wZWQgdG8gdGhpcyBMYXlvdXQ6IHRoZSBob3N0XG4gIC8vIGVsZW1lbnQgbWFya2VycyBwb3J0YWwgaW50byAob25seSByZW5kZXJlZCB3aGlsZSB0aGUgc3RhY2sgYXBwbGllcyB0byB0aGVcbiAgLy8gdmlld3BvcnQpIGFuZCBob3cgbWFueSBzcGxpdCB2aWV3cyBhcmUgbW91bnRlZCAoYSBjb3VudCB0b2xlcmF0ZXMgdHJhbnNpZW50XG4gIC8vIGRvdWJsZS1tb3VudHMpLiBgY29udGVudGAgcmVhZHMgcHJlc2VuY2UgdG8gZGVjaWRlIHdoZXRoZXIgdG8gam9pbiB0aGVcbiAgLy8gc3RhY2s7IGJvdGggYXJlIHB1Ymxpc2hlZCB0b2dldGhlciB2aWEgTW9iaWxlU3BsaXRTdGFja0NvbnRleHQuXG4gIGNvbnN0IHNob3dNb2JpbGVTcGxpdFN0YWNrID0gdXNlTW9iaWxlU3BsaXRWaWV3RW5hYmxlZCgpO1xuICBjb25zdCBbbW9iaWxlU3BsaXRTdGFja0hvc3QsIHNldE1vYmlsZVNwbGl0U3RhY2tIb3N0XSA9XG4gICAgdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3NwbGl0Q291bnQsIHNldFNwbGl0Q291bnRdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IHJlZ2lzdGVyU3BsaXQgPSB1c2VDYWxsYmFjazxcbiAgICBNb2JpbGVTcGxpdFN0YWNrVmFsdWVbXCJyZWdpc3RlclNwbGl0XCJdXG4gID4oKCkgPT4ge1xuICAgIHNldFNwbGl0Q291bnQoKGNvdW50KSA9PiBjb3VudCArIDEpO1xuICAgIHJldHVybiAoKSA9PiBzZXRTcGxpdENvdW50KChjb3VudCkgPT4gY291bnQgLSAxKTtcbiAgfSwgW10pO1xuICBjb25zdCBtb2JpbGVTcGxpdFN0YWNrID0gdXNlTWVtbzxNb2JpbGVTcGxpdFN0YWNrVmFsdWU+KFxuICAgICgpID0+ICh7XG4gICAgICBob3N0OiBtb2JpbGVTcGxpdFN0YWNrSG9zdCxcbiAgICAgIGlzU3BsaXRQcmVzZW50OiBzcGxpdENvdW50ID4gMCxcbiAgICAgIHJlZ2lzdGVyU3BsaXQsXG4gICAgfSksXG4gICAgW21vYmlsZVNwbGl0U3RhY2tIb3N0LCBzcGxpdENvdW50LCByZWdpc3RlclNwbGl0XVxuICApO1xuXG4gIC8vIEEgZmxvYXRpbmcgcmlnaHRQYW5lbCBzdGF5cyB2aXNpYmxlIChpdHMgbWFya2VyIGtlZXBzIHJlbmRlcmluZyBjb250ZW50KVxuICAvLyBidXQgbGVhdmVzIHRoZSByZXNpemFibGUgcm93IC0gZXhhY3RseSBsaWtlIGEgaGlkZGVuIHBhbmVsIGRvZXMuIFRoZVxuICAvLyBtb2JpbGUgc2hlZXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBmbG9hdC4gRmxvYXQgaXMgYVxuICAvLyBkZXNrdG9wIHByZXNlbnRhdGlvbiwgc28gb25seSBtb2RlIGB0cnVlYCBlbmFibGVzIGl0LiBUaGUgc3RvcmUncyB2YXJpYW50XG4gIC8vIHN0YXJ0cyB1bnNldDsgdGhlIG1hcmtlcidzIGRlY2xhcmVkIGB2YXJpYW50YCBwcm9wIGlzIHRoZSBpbml0aWFsXG4gIC8vIHByZXNlbnRhdGlvbiB1bnRpbCB0aGUgZmlyc3QgYHNldFZhcmlhbnRgIHdyaXRlcyB0byB0aGUgc3RvcmUuXG4gIGNvbnN0IHBhbmVsc0VuYWJsZWQgPSB1c2VMYXlvdXRQYW5lbHNFbmFibGVkKCk7XG4gIGNvbnN0IHJpZ2h0UGFuZWxWYXJpYW50ID1cbiAgICBsYXlvdXRTdGF0ZVtTbG90LnJpZ2h0UGFuZWxdLnZhcmlhbnQgPz9cbiAgICBkZWNsYXJlZFtTbG90LnJpZ2h0UGFuZWxdPy52YXJpYW50ID8/XG4gICAgXCJzaWRlYmFyXCI7XG4gIGNvbnN0IGlzUmlnaHRQYW5lbEZsb2F0aW5nID1cbiAgICBwYW5lbHNFbmFibGVkID09PSB0cnVlICYmXG4gICAgIWlzUmlnaHRQYW5lbFNoZWV0ICYmXG4gICAgcmlnaHRQYW5lbFZhcmlhbnQgPT09IFwiZmxvYXRcIjtcblxuICBjb25zdCBpc1Nob3duID0gKHNsb3Q6IFNsb3RLZXkpOiBib29sZWFuID0+XG4gICAgbGF5b3V0U3RhdGVbc2xvdF0udmlzaWJsZSAmJlxuICAgICEoc2xvdCA9PT0gU2xvdC5yaWdodFBhbmVsICYmIChpc1JpZ2h0UGFuZWxGbG9hdGluZyB8fCBpc1JpZ2h0UGFuZWxTaGVldCkpO1xuXG4gIC8vIFNsb3RzIGtlcHQgbW91bnRlZCB0aHJvdWdoIHRoZWlyIGV4aXQgYW5pbWF0aW9uIChyZXBvcnRlZCB2aWFcbiAgLy8gYHVzZVBhbmVsUHJlc2VuY2VgKS4gQSBwcmVzZW50LWJ1dC1oaWRkZW4gc2xvdCBzdGF5cyBpbiB0aGUgcm93IHNvIGl0c1xuICAvLyBjbG9zZSBhbmltYXRpb24gY2FuIHBsYXk7IGl0J3MgcmVtb3ZlZCBvbmNlIHByZXNlbmNlIGZsaXBzIGZhbHNlLlxuICBjb25zdCBbcHJlc2VudCwgc2V0UHJlc2VudF0gPSB1c2VTdGF0ZTxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBib29sZWFuPj4+KHt9KTtcbiAgY29uc3QgcHJlc2VuY2UgPSB1c2VNZW1vPFBhbmVsUHJlc2VuY2U+KFxuICAgICgpID0+ICh7XG4gICAgICBzZXRQcmVzZW50OiAoc2xvdCwgaXNQcmVzZW50KSA9PlxuICAgICAgICBzZXRQcmVzZW50KChwcmV2KSA9PlxuICAgICAgICAgIHByZXZbc2xvdF0gPT09IGlzUHJlc2VudCA/IHByZXYgOiB7IC4uLnByZXYsIFtzbG90XTogaXNQcmVzZW50IH1cbiAgICAgICAgKSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIC8vIEFuaW1hdGlvbiBjb250cm9sIGZvciB0aGUgZG9ja2VkIHNpZGUgcGFuZWxzJyBvcGVuL2Nsb3NlIHdpZHRoIHNsaWRlLiBBbGxcbiAgLy8gcmVmLWJhc2VkIG9uIHB1cnBvc2U6IHJlZ2lzdGVyaW5nIGhhbmRsZXMvZWxlbWVudHMgYW5kIHRvZ2dsaW5nIHN1cHByZXNzaW9uXG4gIC8vIGhhcHBlbiBkdXJpbmcgY29tbWl0cyBhbmQgcGVyLWZyYW1lIC0gbm9uZSBvZiBpdCBtYXkgcmUtcmVuZGVyIHRoZSBMYXlvdXQuXG4gIGNvbnN0IHBhbmVsSGFuZGxlcyA9IHVzZVJlZjxcbiAgICBQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfCBudWxsPj5cbiAgPih7fSk7XG4gIGNvbnN0IHBhbmVsRWxlbWVudHMgPSB1c2VSZWY8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgSFRNTEVsZW1lbnQgfCBudWxsPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IHJlc2l6ZVN1cHByZXNzZWQgPSB1c2VSZWY8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgYm9vbGVhbj4+Pih7fSk7XG4gIGNvbnN0IGFuaW1hdGlvbkNvbnRyb2wgPSB1c2VNZW1vPFBhbmVsQW5pbWF0aW9uQ29udHJvbD4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHNldEhhbmRsZTogKHNsb3QsIGhhbmRsZSkgPT4ge1xuICAgICAgICBwYW5lbEhhbmRsZXMuY3VycmVudFtzbG90XSA9IGhhbmRsZTtcbiAgICAgIH0sXG4gICAgICBnZXRIYW5kbGU6IChzbG90KSA9PiBwYW5lbEhhbmRsZXMuY3VycmVudFtzbG90XSA/PyBudWxsLFxuICAgICAgc2V0RWxlbWVudDogKHNsb3QsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgcGFuZWxFbGVtZW50cy5jdXJyZW50W3Nsb3RdID0gZWxlbWVudDtcbiAgICAgIH0sXG4gICAgICBnZXRFbGVtZW50OiAoc2xvdCkgPT4gcGFuZWxFbGVtZW50cy5jdXJyZW50W3Nsb3RdID8/IG51bGwsXG4gICAgICBzZXRSZXNpemVTdXBwcmVzc2VkOiAoc2xvdCwgc3VwcHJlc3NlZCkgPT4ge1xuICAgICAgICByZXNpemVTdXBwcmVzc2VkLmN1cnJlbnRbc2xvdF0gPSBzdXBwcmVzc2VkO1xuICAgICAgfSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuICAvLyBTdGFibGUgcGVyLXNsb3QgcmVmIGNhbGxiYWNrcyAtIGEgZnJlc2ggY2FsbGJhY2sgaWRlbnRpdHkgcGVyIHJlbmRlciB3b3VsZFxuICAvLyBtYWtlIFJlYWN0IGRldGFjaC9yZWF0dGFjaCB0aGUgcmVmcyBvbiBldmVyeSBMYXlvdXQgcmUtcmVuZGVyLlxuICBjb25zdCBwYW5lbFJlZkNhbGxiYWNrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNhbGxiYWNrcyA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICAoaGFuZGxlOiBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfCBudWxsKSA9PiB2b2lkXG4gICAgPigpO1xuICAgIGNvbnN0IGVsZW1lbnRDYWxsYmFja3MgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgKGVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZFxuICAgID4oKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFuZGxlRm9yOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBoYW5kbGVDYWxsYmFja3MuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrID0gKGhhbmRsZSkgPT5cbiAgICAgICAgICAgIGFuaW1hdGlvbkNvbnRyb2wuc2V0SGFuZGxlKGlkIGFzIFNsb3RLZXksIGhhbmRsZSk7XG4gICAgICAgICAgaGFuZGxlQ2FsbGJhY2tzLnNldChpZCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWxsYmFjaztcbiAgICAgIH0sXG4gICAgICBlbGVtZW50Rm9yOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBlbGVtZW50Q2FsbGJhY2tzLmdldChpZCk7XG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayA9IChlbGVtZW50KSA9PlxuICAgICAgICAgICAgYW5pbWF0aW9uQ29udHJvbC5zZXRFbGVtZW50KGlkIGFzIFNsb3RLZXksIGVsZW1lbnQpO1xuICAgICAgICAgIGVsZW1lbnRDYWxsYmFja3Muc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICB9O1xuICB9LCBbYW5pbWF0aW9uQ29udHJvbF0pO1xuICBjb25zdCBzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gT2JqZWN0LnZhbHVlcyhyZXNpemVTdXBwcmVzc2VkLmN1cnJlbnQpLnNvbWUoQm9vbGVhbiksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCByZWdpc3RyeSA9IHVzZU1lbW88UGFuZWxSZWdpc3RyeT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZ2lzdGVyOiAoc2xvdCwgcmVnKSA9PlxuICAgICAgICBzZXREZWNsYXJlZCgocHJldikgPT4gKHsgLi4ucHJldiwgW3Nsb3RdOiByZWcgfSkpLFxuICAgICAgdW5yZWdpc3RlcjogKHNsb3QpID0+XG4gICAgICAgIHNldERlY2xhcmVkKChwcmV2KSA9PiB7XG4gICAgICAgICAgaWYgKCEoc2xvdCBpbiBwcmV2KSkgcmV0dXJuIHByZXY7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IHsgLi4ucHJldiB9O1xuICAgICAgICAgIGRlbGV0ZSBuZXh0W3Nsb3RdO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9KSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IHsgcG9ydGFsVGFyZ2V0cywgc2xvdEhvc3RzLCBzbG90SG9zdFJlZnMsIGZsb2F0SG9zdFJlZiB9ID1cbiAgICB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzKHtcbiAgICAgIHNsb3RzOiBQQU5FTF9PUkRFUixcbiAgICAgIGZsb2F0YWJsZVNsb3Q6IFNsb3QucmlnaHRQYW5lbCxcbiAgICAgIGlzRmxvYXRpbmc6IGlzUmlnaHRQYW5lbEZsb2F0aW5nLFxuICAgIH0pO1xuXG4gIHVzZUdsb2JhbENzc1ZhcmlhYmxlcyhzbG90SG9zdHMpO1xuXG4gIC8vIFBhbmVscyB0aGF0IGV4aXN0IGluIHRoZSBsYXlvdXQsIHJlZ2FyZGxlc3Mgb2YgdmlzaWJpbGl0eS4gRHJpdmVzIHRoZVxuICAvLyBzb2xvLXZzLXJlc2l6YWJsZSBkZWNpc2lvbiBiZWxvdyAtIGtleWVkIG9uIERFQ0xBUkVEIChub3Qgc2hvd24pIHNvIHRoYXRcbiAgLy8gc2hvd2luZy9oaWRpbmcgYSBwYW5lbCBuZXZlciBmbGlwcyB0aGUgbW9kZS5cbiAgY29uc3QgZGVjbGFyZWRTbG90cyA9IFBBTkVMX09SREVSLmZpbHRlcigoc2xvdCkgPT4gZGVjbGFyZWRbc2xvdF0pO1xuXG4gIC8vIFNvbG8gbW9kZTogYSBzaW5nbGUgcGFuZWwgaXMgZGVjbGFyZWQgKGUuZy4ganVzdCBgQ29udGVudGAsIHdpdGggbm9cbiAgLy8gUmlnaHRQYW5lbC9MZWZ0UGFuZWwvU3BsaXQgaW4gdGhlIHRyZWUpIC0gbm90aGluZyB0byByZXNpemUgYWdhaW5zdCwgc28gaG9zdFxuICAvLyBpdCBpbiBhIHBsYWluIGRpdiBhbmQgc2tpcCByZWFjdC1yZXNpemFibGUtcGFuZWxzIGVudGlyZWx5LiBCZWNhdXNlIHRoZVxuICAvLyBjaGVjayBpcyBvbiBERUNMQVJFRCBwYW5lbHMsIHRvZ2dsaW5nIGEgKmRlY2xhcmVkKiBwYW5lbCdzIHZpc2liaWxpdHkga2VlcHNcbiAgLy8gdGhlIG1vZGUgc3RhYmxlLCBzbyBgQ29udGVudGAgaXMgbmV2ZXIgcmVtb3VudGVkIGJ5IGEgc2hvdy9oaWRlLiBUaGUgbW9kZVxuICAvLyBvbmx5IGZsaXBzIHdoZW4gYSBwYW5lbCBtYXJrZXIgaXMgYWRkZWQgdG8gLyByZW1vdmVkIGZyb20gdGhlIHRyZWUgKGFcbiAgLy8gc3RydWN0dXJhbCBjaGFuZ2UpLCB3aGVyZSBhIG9uZS10aW1lIHJlbW91bnQgaXMgYWNjZXB0YWJsZS5cbiAgY29uc3QgaXNTb2xvID0gZGVjbGFyZWRTbG90cy5sZW5ndGggPD0gMTtcbiAgY29uc3Qgc29sb1Nsb3QgPSBkZWNsYXJlZFNsb3RzWzBdO1xuXG4gIC8vIGNvbnRlbnQgZmxleGVzIChubyBmaXhlZCBzaXplKTsgb3RoZXJzIHVzZSB0aGUgZGVjbGFyZWQgZGVmYXVsdCwgZmFsbGluZ1xuICAvLyBiYWNrIHRvIHRoZSBwZXJzaXN0ZWQvY29uZmlnIHNpemUuXG4gIGNvbnN0IGRlZmF1bHRTaXplRm9yID0gKHNsb3Q6IFNsb3RLZXkpOiBTaXplIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoc2xvdCA9PT0gU2xvdC5jb250ZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBkZWNsYXJlZFtzbG90XT8uZGVmYXVsdFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0uc2l6ZTtcbiAgfTtcblxuICAvLyBPbmx5IHRoZSBwYW5lbHMgdGhhdCBhcmUgZGVjbGFyZWQgQU5EIChjdXJyZW50bHkgc2hvd24gT1IgbWlkLWV4aXQpLiBBXG4gIC8vIGhpZGRlbi1idXQtcHJlc2VudCBzbG90IGxpbmdlcnMgc28gaXRzIGNsb3NlIGFuaW1hdGlvbiBjYW4gcGxheTsgb3RoZXJ3aXNlXG4gIC8vIGNsb3NlZCBwYW5lbHMgcmVzZXJ2ZSBubyBzcGFjZS5cbiAgY29uc3QgcGFuZWxJdGVtczogUGFuZWxJdGVtW10gPSBQQU5FTF9PUkRFUi5maWx0ZXIoXG4gICAgKHNsb3QpID0+IGRlY2xhcmVkW3Nsb3RdICYmIChpc1Nob3duKHNsb3QpIHx8IHByZXNlbnRbc2xvdF0pXG4gICkubWFwKChzbG90KSA9PiAoe1xuICAgIGlkOiBzbG90LFxuICAgIGRlZmF1bHRTaXplOiBkZWZhdWx0U2l6ZUZvcihzbG90KSxcbiAgICBtaW5TaXplOiBkZWNsYXJlZFtzbG90XT8ubWluU2l6ZSA/PyBsYXlvdXRTdGF0ZVtzbG90XS5taW5TaXplLFxuICAgIG1heFNpemU6IGRlY2xhcmVkW3Nsb3RdPy5tYXhTaXplID8/IGxheW91dFN0YXRlW3Nsb3RdLm1heFNpemUsXG4gICAgY29sbGFwc2libGU6IHNsb3QgIT09IFNsb3QuY29udGVudCAmJiAoZGVjbGFyZWRbc2xvdF0/LmNvbGxhcHNpYmxlID8/IHRydWUpLFxuICAgIHJlc2l6YWJsZTpcbiAgICAgIGRlY2xhcmVkW3Nsb3RdPy5yZXNpemFibGUgPz8gcmVzaXphYmxlRnJvbVN0YXRlKGxheW91dFN0YXRlW3Nsb3RdKSxcbiAgfSkpO1xuXG4gIC8vIFNvbG8gbW9kZSBob3N0cyB0aGUgbG9uZSBwYW5lbCBpbiBhIHBsYWluIGRpdiwgbm8gcmVzaXphYmxlIEdyb3VwLiBBIGhpZGRlblxuICAvLyBsb25lIHBhbmVsIHJlbmRlcnMgbm90aGluZyAoQ29udGVudCBpcyBhbHdheXMgc2hvd24pLlxuICBjb25zdCBzb2xvSG9zdCA9XG4gICAgc29sb1Nsb3QgJiYgaXNTaG93bihzb2xvU2xvdCkgPyAoXG4gICAgICA8U3R5bGVkU29sb0hvc3QgcmVmPXtzbG90SG9zdFJlZnNbc29sb1Nsb3RdfSAvPlxuICAgICkgOiBudWxsO1xuXG4gIC8vIFRoZSByZXNpemFibGUgR3JvdXAuIGBrZXlgID0gdGhlIHBlcnNpc3RlbmNlIG5hbWVzcGFjZTogcmVhY3QtcmVzaXphYmxlLXBhbmVsc1xuICAvLyByZWFkcyBzdG9yZWQgc2l6ZXMgb25seSBvbiBtb3VudCwgc28gcmVtb3VudCB3aGVuIHRoZSBrZXkgY2hhbmdlcyB0byBsb2FkXG4gIC8vIHRoYXQgaW5zdGFuY2UncyBzaXplcyAocGVyLXJvdXRlIHNpemUgbWVtb3J5KS4gVGhlIGtleSBuZXZlciBjaGFuZ2VzIG9uXG4gIC8vIHBhbmVsIG9wZW4vY2xvc2UsIHNvIG5vcm1hbCB0b2dnbGluZyBzdGF5cyByZW1vdW50LWZyZWUuXG4gIGNvbnN0IHBhbmVsR3JvdXAgPVxuICAgIHBhbmVsSXRlbXMubGVuZ3RoID4gMCA/IChcbiAgICAgIDxQYW5lbFxuICAgICAgICBrZXk9e3Jlc29sdmVkS2V5fVxuICAgICAgICBwYW5lbHM9e3BhbmVsSXRlbXN9XG4gICAgICAgIHBlcnNpc3RlbmNlS2V5PXtyZXNvbHZlZEtleX1cbiAgICAgICAgc3RvcmFnZT17cmVzb2x2ZWRTdG9yYWdlfVxuICAgICAgICBob3N0Rm9yPXsoaWQpID0+IHNsb3RIb3N0UmVmc1tpZCBhcyBTbG90S2V5XX1cbiAgICAgICAgb25SZXNpemU9eyhpZCwgc2l6ZSkgPT4gcGFuZWxDYWxsYmFja3NbaWQgYXMgU2xvdEtleV0ucmVzaXplKHNpemUpfVxuICAgICAgICBvbkNvbGxhcHNlPXsoaWQpID0+IHBhbmVsQ2FsbGJhY2tzW2lkIGFzIFNsb3RLZXldLmhpZGUoKX1cbiAgICAgICAgcGFuZWxIYW5kbGVGb3I9e3BhbmVsUmVmQ2FsbGJhY2tzLmhhbmRsZUZvcn1cbiAgICAgICAgcGFuZWxFbGVtZW50Rm9yPXtwYW5lbFJlZkNhbGxiYWNrcy5lbGVtZW50Rm9yfVxuICAgICAgICBzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrPXtzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrfVxuICAgICAgLz5cbiAgICApIDogbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbFJlZ2lzdHJ5Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17cmVnaXN0cnl9PlxuICAgICAgPFBhbmVsRGVjbGFyYXRpb25zQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZGVjbGFyZWR9PlxuICAgICAgICA8UGFuZWxQcmVzZW5jZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ByZXNlbmNlfT5cbiAgICAgICAgICA8UGFuZWxBbmltYXRpb25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXthbmltYXRpb25Db250cm9sfT5cbiAgICAgICAgICAgIDxMYXlvdXRQb3J0YWxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwb3J0YWxUYXJnZXRzfT5cbiAgICAgICAgICAgICAgPExheW91dEZsb2F0RHJhZ1Byb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDxNb2JpbGVTcGxpdFN0YWNrQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bW9iaWxlU3BsaXRTdGFja30+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTGF5b3V0IGRhdGEtZHMtaWQ9XCJMYXlvdXRcIj5cbiAgICAgICAgICAgICAgICAgICAge2lzU29sbyA/IHNvbG9Ib3N0IDogcGFuZWxHcm91cH1cbiAgICAgICAgICAgICAgICAgICAge2lzUmlnaHRQYW5lbEZsb2F0aW5nICYmXG4gICAgICAgICAgICAgICAgICAgICAgbGF5b3V0U3RhdGVbU2xvdC5yaWdodFBhbmVsXS52aXNpYmxlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMYXlvdXRGbG9hdCBob3N0UmVmPXtmbG9hdEhvc3RSZWZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICB7c2hvd01vYmlsZVNwbGl0U3RhY2sgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRNb2JpbGVTcGxpdFN0YWNrSG9zdFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtzZXRNb2JpbGVTcGxpdFN0YWNrSG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRMYXlvdXQ+XG4gICAgICAgICAgICAgICAgPC9Nb2JpbGVTcGxpdFN0YWNrQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9MYXlvdXRGbG9hdERyYWdQcm92aWRlcj5cbiAgICAgICAgICAgIDwvTGF5b3V0UG9ydGFsQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICA8L1BhbmVsQW5pbWF0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9QYW5lbFByZXNlbmNlQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvUGFuZWxEZWNsYXJhdGlvbnNDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvUGFuZWxSZWdpc3RyeUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiBQdWJsaWMgTGF5b3V0IC0gdGhlIHJlc2l6YWJsZSBwYW5lbCByb3cgKyBjb21wb3VuZCBwYXJ0cyBhcyBzdGF0aWNzICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbnR5cGUgTGF5b3V0Q29tcG9uZW50ID0gdHlwZW9mIExheW91dEJhc2UgJiB7XG4gIFByb3ZpZGVyOiB0eXBlb2YgTGF5b3V0UHJvdmlkZXI7XG4gIExlZnRQYW5lbDogdHlwZW9mIExlZnRQYW5lbDtcbiAgTGVmdFBhbmVsSGVhZGVyOiB0eXBlb2YgTGVmdFBhbmVsSGVhZGVyO1xuICBMZWZ0UGFuZWxGb290ZXI6IHR5cGVvZiBMZWZ0UGFuZWxGb290ZXI7XG4gIFJpZ2h0UGFuZWw6IHR5cGVvZiBSaWdodFBhbmVsO1xuICBSaWdodFBhbmVsSGVhZGVyOiB0eXBlb2YgUmlnaHRQYW5lbEhlYWRlcjtcbiAgUmlnaHRQYW5lbEZvb3RlcjogdHlwZW9mIFJpZ2h0UGFuZWxGb290ZXI7XG4gIENvbnRlbnQ6IHR5cGVvZiBDb250ZW50O1xuICBTcGxpdDogdHlwZW9mIFNwbGl0O1xuICBTcGxpdEhlYWRlcjogdHlwZW9mIFNwbGl0SGVhZGVyO1xuICBTcGxpdEZvb3RlcjogdHlwZW9mIFNwbGl0Rm9vdGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IExheW91dCA9IExheW91dEJhc2UgYXMgTGF5b3V0Q29tcG9uZW50O1xuXG5MYXlvdXQuUHJvdmlkZXIgPSBMYXlvdXRQcm92aWRlcjtcbkxheW91dC5MZWZ0UGFuZWwgPSBMZWZ0UGFuZWw7XG5MYXlvdXQuTGVmdFBhbmVsSGVhZGVyID0gTGVmdFBhbmVsSGVhZGVyO1xuTGF5b3V0LkxlZnRQYW5lbEZvb3RlciA9IExlZnRQYW5lbEZvb3RlcjtcbkxheW91dC5SaWdodFBhbmVsID0gUmlnaHRQYW5lbDtcbkxheW91dC5SaWdodFBhbmVsSGVhZGVyID0gUmlnaHRQYW5lbEhlYWRlcjtcbkxheW91dC5SaWdodFBhbmVsRm9vdGVyID0gUmlnaHRQYW5lbEZvb3RlcjtcbkxheW91dC5Db250ZW50ID0gQ29udGVudDtcbkxheW91dC5TcGxpdCA9IFNwbGl0O1xuTGF5b3V0LlNwbGl0SGVhZGVyID0gU3BsaXRIZWFkZXI7XG5MYXlvdXQuU3BsaXRGb290ZXIgPSBTcGxpdEZvb3RlcjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1R3FCIn0= */"),StyledSoloHost=(0,_styled.default)("div",{target:"elbydir1",label:"StyledSoloHost"})({position:"relative",height:"100%",width:"100%"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9MYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlLXBhbmVsc1wiO1xuaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiLi4vSW50ZXJuYWwvUGFuZWwvUGFuZWxcIjtcbmltcG9ydCB0eXBlIHsgUGFuZWxJdGVtIH0gZnJvbSBcIi4uL0ludGVybmFsL1BhbmVsL1BhbmVsXCI7XG5pbXBvcnQgeyBMYXlvdXRGbG9hdCB9IGZyb20gXCIuLi9JbnRlcm5hbC9MYXlvdXRGbG9hdC9MYXlvdXRGbG9hdFwiO1xuaW1wb3J0IHsgdXNlQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUJyZWFrcG9pbnRzXCI7XG5pbXBvcnQgeyBQQU5FTF9PUkRFUiwgUEFORUxfV0lEVEhfVkFSLCBTbG90IH0gZnJvbSBcIi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0UGFuZWxzRW5hYmxlZCwgdXNlTGF5b3V0UGVyc2lzdGVuY2UgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQge1xuICBNb2JpbGVTcGxpdFN0YWNrQ29udGV4dCxcbiAgdHlwZSBNb2JpbGVTcGxpdFN0YWNrVmFsdWUsXG59IGZyb20gXCIuL1NwbGl0L01vYmlsZVNwbGl0Vmlldy91c2VNb2JpbGVTcGxpdFN0YWNrXCI7XG5pbXBvcnQgeyB1c2VNb2JpbGVTcGxpdFZpZXdFbmFibGVkIH0gZnJvbSBcIi4vU3BsaXQvTW9iaWxlU3BsaXRWaWV3L3VzZU1vYmlsZVNwbGl0Vmlld1wiO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tIFwiLi9MYXlvdXRQcm92aWRlclwiO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gXCIuL0NvbnRlbnQvQ29udGVudFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbCB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEhlYWRlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEZvb3RlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbFwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsSGVhZGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsRm9vdGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgU3BsaXQgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdFwiO1xuaW1wb3J0IHsgU3BsaXRIZWFkZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEhlYWRlclwiO1xuaW1wb3J0IHsgU3BsaXRGb290ZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEZvb3RlclwiO1xuaW1wb3J0IHtcbiAgTGF5b3V0UG9ydGFsQ29udGV4dCxcbiAgUGFuZWxSZWdpc3RyeUNvbnRleHQsXG4gIFBhbmVsRGVjbGFyYXRpb25zQ29udGV4dCxcbiAgUGFuZWxQcmVzZW5jZUNvbnRleHQsXG4gIFBhbmVsQW5pbWF0aW9uQ29udGV4dCxcbiAgdHlwZSBQb3J0YWxUYXJnZXRzLFxuICB0eXBlIFBhbmVsUmVnLFxuICB0eXBlIFBhbmVsUmVnaXN0cnksXG4gIHR5cGUgUGFuZWxQcmVzZW5jZSxcbiAgdHlwZSBQYW5lbEFuaW1hdGlvbkNvbnRyb2wsXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzIH0gZnJvbSBcIi4vdXNlRmxvYXRhYmxlUG9ydGFsVGFyZ2V0c1wiO1xuaW1wb3J0IHsgTGF5b3V0RmxvYXREcmFnUHJvdmlkZXIgfSBmcm9tIFwiLi4vSW50ZXJuYWwvTGF5b3V0RmxvYXQvTGF5b3V0RmxvYXREcmFnUHJvdmlkZXJcIjtcbmltcG9ydCB7IHVzZUxheW91dFZhciwgdHlwZSBMYXlvdXRWYXJIYW5kbGUgfSBmcm9tIFwiLi9MYXlvdXRDc3NWYXJzXCI7XG5pbXBvcnQgeyB1c2VMYXlvdXQgfSBmcm9tIFwiLi91c2VMYXlvdXRcIjtcbmltcG9ydCB7IHVzZUxheW91dFJ1bGVzIH0gZnJvbSBcIi4vdXNlTGF5b3V0UnVsZXNcIjtcbmltcG9ydCB7IERFRkFVTFRfTEFZT1VUX1JVTEVTIH0gZnJvbSBcIi4vcnVsZXNcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0UHJvcHMsIExheW91dFN0YXRlLCBTaXplLCBTbG90S2V5IH0gZnJvbSBcIi4vLXR5cGVzXCI7XG5cbi8vIE9ubHkgdGhlIHNpZGUgcGFuZWxzIGNhcnJ5IGByZXNpemFibGVgIGluIHN0YXRlIChpdCBjb21lcyBmcm9tIHRoZSBwcm92aWRlclxuLy8gY29uZmlnKTsgdGhlIGNvbnRlbnQvc3BsaXR2aWV3IHNsb3RzIHRha2UgaXQgZnJvbSB0aGVpciBkZWNsYXJhdGlvbiBhbG9uZS5cbmNvbnN0IHJlc2l6YWJsZUZyb21TdGF0ZSA9IChcbiAgc2xvdFN0YXRlOiBMYXlvdXRTdGF0ZVtTbG90S2V5XVxuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9PlxuICBzbG90U3RhdGUua2luZCA9PT0gXCJzaWRlUGFuZWxcIiA/IHNsb3RTdGF0ZS5yZXNpemFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogUHVibGlzaGVzIGVhY2ggcGFuZWwncyBsaXZlIHBpeGVsIHdpZHRoIGFzIGEgbGF5b3V0IENTUyB2YXIgKGUuZy5cbiAqIGAtLWRzLWxheW91dC1yaWdodFBhbmVsLXdpZHRoYCksIHRyYWNraW5nIGRyYWctIGFuZCB3aW5kb3ctcmVzaXplcy4gQSBoaWRkZW5cbiAqIHBhcnQgKG5vIGhvc3Qgbm9kZSkgcmVhZHMgYDBweGAsIHNvIHRoZSB2YXIgaXMgYWx3YXlzIGRlZmluZWQuIE9uZVxuICogYHVzZUxheW91dFZhcmAgcGVyIHNsb3QgaW4gYFBBTkVMX1dJRFRIX1ZBUmAuXG4gKi9cbmNvbnN0IHVzZUdsb2JhbENzc1ZhcmlhYmxlcyA9IChzbG90SG9zdHM6IFBvcnRhbFRhcmdldHMpOiB2b2lkID0+IHtcbiAgY29uc3QgY29udGVudFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5jb250ZW50KTtcbiAgY29uc3QgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5yaWdodFBhbmVsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldHM6IFtTbG90S2V5LCBMYXlvdXRWYXJIYW5kbGVdW10gPSBbXG4gICAgICBbU2xvdC5jb250ZW50LCBjb250ZW50V2lkdGhDc3NWYXJdLFxuICAgICAgW1Nsb3QucmlnaHRQYW5lbCwgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyXSxcbiAgICBdO1xuICAgIGNvbnN0IG9ic2VydmVyczogUmVzaXplT2JzZXJ2ZXJbXSA9IFtdO1xuXG4gICAgdGFyZ2V0cy5mb3JFYWNoKChbc2xvdCwgaGFuZGxlXSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IHNsb3RIb3N0c1tzbG90XSA/PyBudWxsO1xuICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgIGhhbmRsZS5zZXQoXCIwcHhcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHB1Ymxpc2hOb2RlV2lkdGggPSAoKTogdm9pZCA9PlxuICAgICAgICBoYW5kbGUuc2V0KGAke25vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHhgKTtcbiAgICAgIHB1Ymxpc2hOb2RlV2lkdGgoKTtcbiAgICAgIC8vIGpzZG9tIChhbmQgb2xkIGJyb3dzZXJzKSBsYWNrIFJlc2l6ZU9ic2VydmVyIOKAlCBza2lwIGxpdmUgdHJhY2tpbmcgdGhlcmUuXG4gICAgICBpZiAodHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihwdWJsaXNoTm9kZVdpZHRoKTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSk7XG4gICAgICBvYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXJzLmZvckVhY2goKG9ic2VydmVyKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuICB9LCBbY29udGVudFdpZHRoQ3NzVmFyLCByaWdodFBhbmVsV2lkdGhDc3NWYXIsIHNsb3RIb3N0c10pO1xufTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIExheW91dCAtIHJlZ2lzdHJ5ICsgaG9zdHM7IG1hcmtlcnMgZGVjbGFyZS9wb3J0YWw7IHRoZSByZXNpemFibGUgcGFuZWwgcm93ICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8vIGBwb3NpdGlvbjogcmVsYXRpdmVgIGFuY2hvcnMgdGhlIGFic29sdXRlbHktcG9zaXRpb25lZCBzcGxpdCBzdGFjayBob3N0IGFuZFxuLy8gdGhlIGZsb2F0aW5nIHdpbmRvdy4gT3ZlcmZsb3cgaXMgbGVmdCB1bnRvdWNoZWQgKHZpc2libGUpIHNvIGEgcGFnZSByZWx5aW5nXG4vLyBvbiBkb2N1bWVudC9hbmNlc3RvciBzY3JvbGxpbmcgaXMgdW5hZmZlY3RlZCAtIHRoZSBvZmZzY3JlZW4gc3BsaXQgbGF5ZXJzIGFyZVxuLy8gY2xpcHBlZCBieSB0aGVpciBvd24gaG9zdCBiZWxvdywgbm90IGhlcmUuXG5jb25zdCBTdHlsZWRMYXlvdXQgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbi8vIFNvbG8tbW9kZSBob3N0OiBhIGxvbmUgcGFuZWwgKG5vIHJlc2l6YWJsZSBzaWJsaW5nKSBpcyBob3N0ZWQgaGVyZSBpbnN0ZWFkIG9mXG4vLyBpbnNpZGUgcmVhY3QtcmVzaXphYmxlLXBhbmVscy4gTWF0Y2hlcyB0aGUgcGVyLXBhbmVsIGhvc3QgdGhlIEdyb3VwIHJlbmRlcnNcbi8vIChgcmVsYXRpdmVgICsgZnVsbC1ibGVlZCkgc28gY29udGVudCByZWZsb3dzL3Njcm9sbHMgaWRlbnRpY2FsbHkgZWl0aGVyIHdheS5cbmNvbnN0IFN0eWxlZFNvbG9Ib3N0ID0gc3R5bGVkLmRpdih7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbn0pO1xuXG4vLyBGdWxsLWFyZWEgb3ZlcmxheSBhdCB0aGUgbGF5b3V0IHJvb3QgdGhhdCBob3N0cyB0aGUgbW9iaWxlIHNwbGl0IHN0YWNrLiBUaGVcbi8vIGxhc3QgY2hpbGQgb2YgYFN0eWxlZExheW91dGAsIHNvIGl0IHN0YWNrcyBhYm92ZSB0aGUgcGFuZWwgcm93OyBgY29udGVudGAgYW5kXG4vLyB0aGUgc3BsaXQgdmlld3MgcG9ydGFsIHRoZWlyIHNsaWRpbmcgbGF5ZXJzIGluIGhlcmUuIGBwb2ludGVyLWV2ZW50czogbm9uZWBcbi8vIHNvIGl0IG5ldmVyIGJsb2NrcyB0aGUgbGF5b3V0IGJlbmVhdGggLSBlYWNoIGxheWVyIHJlLWVuYWJsZXMgZXZlbnRzIHdoZW5cbi8vIGl0J3MgdGhlIGFjdGl2ZSAoZnJvbnQpIHZpZXcuIGBvdmVyZmxvdzogaGlkZGVuYCBjbGlwcyB0aGUgaW5hY3RpdmUgbGF5ZXJzJ1xuLy8gb2Zmc2NyZWVuIHJlc3RpbmcgcG9zaXRpb24gKHRyYW5zbGF0ZVggcGFzdCB0aGUgZWRnZSkgc28gdGhleSBkb24ndCB3aWRlblxuLy8gdGhlIHBhZ2UgLSBzY29wZWQgaGVyZSwgbm90IG9uIHRoZSByb290LCBzbyBpdCBuZXZlciBhZmZlY3RzIHBhZ2Ugc2Nyb2xsaW5nLlxuY29uc3QgU3R5bGVkTW9iaWxlU3BsaXRTdGFja0hvc3QgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgaW5zZXQ6IDAsXG4gIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIixcbn0pO1xuXG5mdW5jdGlvbiBMYXlvdXRCYXNlKHtcbiAgY2hpbGRyZW4sXG4gIHBlcnNpc3RlbmNlS2V5LFxuICBzdG9yYWdlLFxuICBydWxlcyA9IERFRkFVTFRfTEFZT1VUX1JVTEVTLFxuICBhZGRpdGlvbmFsUnVsZXNEYXRhLFxufTogTGF5b3V0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBbZGVjbGFyZWQsIHNldERlY2xhcmVkXSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsUmVnPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IGxheW91dCA9IHVzZUxheW91dCgpO1xuICBjb25zdCB7IHN0YXRlOiBsYXlvdXRTdGF0ZSwgLi4ucGFuZWxDYWxsYmFja3MgfSA9IGxheW91dDtcbiAgLy8gQWN0cyB0aHJvdWdoIHRoZSBvcmRpbmFyeSBwYW5lbCBhY3Rpb25zIC0gbm90aGluZyBiZWxvdyBrbm93cyBpdCByYW4uXG4gIHVzZUxheW91dFJ1bGVzKHtcbiAgICBsYXlvdXQsXG4gICAgZGVjbGFyZWQsXG4gICAgcnVsZXMsXG4gICAgYWRkaXRpb25hbERhdGE6IGFkZGl0aW9uYWxSdWxlc0RhdGEsXG4gIH0pO1xuICBjb25zdCBwZXJzaXN0ZW5jZSA9IHVzZUxheW91dFBlcnNpc3RlbmNlKCk7XG4gIGNvbnN0IHJlc29sdmVkS2V5ID0gcGVyc2lzdGVuY2VLZXkgPz8gcGVyc2lzdGVuY2UucGVyc2lzdGVuY2VLZXk7XG4gIGNvbnN0IHJlc29sdmVkU3RvcmFnZSA9IHN0b3JhZ2UgPz8gcGVyc2lzdGVuY2Uuc3RvcmFnZTtcblxuICAvLyBCZWxvdyB0aGUgbW9iaWxlIGJyZWFrcG9pbnQgdGhlIHJpZ2h0UGFuZWwgcmVuZGVycyBhcyBhIGJvdHRvbSBzaGVldCAoaXRzXG4gIC8vIG1hcmtlciByZW5kZXJzIHRoZSBTaGVldCBpdHNlbGYpIC0gYW4gYXV0b21hdGljLCByZW5kZXItbGV2ZWwgYWRhcHRhdGlvbi5cbiAgLy8gVGhlIHN0b3JlZCB2YXJpYW50IGlzIHVudG91Y2hlZCwgc28gcmVzaXppbmcgYmFjayB0byBkZXNrdG9wIHJlc3RvcmVzIHRoZVxuICAvLyBleGFjdCBwcmVzZW50YXRpb24gKGRvY2tlZCBvciBmbG9hdGluZykgdGhlIHVzZXIgbGVmdC5cbiAgY29uc3QgeyBpc01vYmlsZSB9ID0gdXNlQnJlYWtwb2ludHMoKTtcbiAgY29uc3QgaXNSaWdodFBhbmVsU2hlZXQgPSBpc01vYmlsZTtcblxuICAvLyBUaGUgbW9iaWxlIHNwbGl0IHN0YWNrJ3Mgc2hhcmVkIHN0YXRlLCBzY29wZWQgdG8gdGhpcyBMYXlvdXQ6IHRoZSBob3N0XG4gIC8vIGVsZW1lbnQgbWFya2VycyBwb3J0YWwgaW50byAob25seSByZW5kZXJlZCB3aGlsZSB0aGUgc3RhY2sgYXBwbGllcyB0byB0aGVcbiAgLy8gdmlld3BvcnQpIGFuZCBob3cgbWFueSBzcGxpdCB2aWV3cyBhcmUgbW91bnRlZCAoYSBjb3VudCB0b2xlcmF0ZXMgdHJhbnNpZW50XG4gIC8vIGRvdWJsZS1tb3VudHMpLiBgY29udGVudGAgcmVhZHMgcHJlc2VuY2UgdG8gZGVjaWRlIHdoZXRoZXIgdG8gam9pbiB0aGVcbiAgLy8gc3RhY2s7IGJvdGggYXJlIHB1Ymxpc2hlZCB0b2dldGhlciB2aWEgTW9iaWxlU3BsaXRTdGFja0NvbnRleHQuXG4gIGNvbnN0IHNob3dNb2JpbGVTcGxpdFN0YWNrID0gdXNlTW9iaWxlU3BsaXRWaWV3RW5hYmxlZCgpO1xuICBjb25zdCBbbW9iaWxlU3BsaXRTdGFja0hvc3QsIHNldE1vYmlsZVNwbGl0U3RhY2tIb3N0XSA9XG4gICAgdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3NwbGl0Q291bnQsIHNldFNwbGl0Q291bnRdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IHJlZ2lzdGVyU3BsaXQgPSB1c2VDYWxsYmFjazxcbiAgICBNb2JpbGVTcGxpdFN0YWNrVmFsdWVbXCJyZWdpc3RlclNwbGl0XCJdXG4gID4oKCkgPT4ge1xuICAgIHNldFNwbGl0Q291bnQoKGNvdW50KSA9PiBjb3VudCArIDEpO1xuICAgIHJldHVybiAoKSA9PiBzZXRTcGxpdENvdW50KChjb3VudCkgPT4gY291bnQgLSAxKTtcbiAgfSwgW10pO1xuICBjb25zdCBtb2JpbGVTcGxpdFN0YWNrID0gdXNlTWVtbzxNb2JpbGVTcGxpdFN0YWNrVmFsdWU+KFxuICAgICgpID0+ICh7XG4gICAgICBob3N0OiBtb2JpbGVTcGxpdFN0YWNrSG9zdCxcbiAgICAgIGlzU3BsaXRQcmVzZW50OiBzcGxpdENvdW50ID4gMCxcbiAgICAgIHJlZ2lzdGVyU3BsaXQsXG4gICAgfSksXG4gICAgW21vYmlsZVNwbGl0U3RhY2tIb3N0LCBzcGxpdENvdW50LCByZWdpc3RlclNwbGl0XVxuICApO1xuXG4gIC8vIEEgZmxvYXRpbmcgcmlnaHRQYW5lbCBzdGF5cyB2aXNpYmxlIChpdHMgbWFya2VyIGtlZXBzIHJlbmRlcmluZyBjb250ZW50KVxuICAvLyBidXQgbGVhdmVzIHRoZSByZXNpemFibGUgcm93IC0gZXhhY3RseSBsaWtlIGEgaGlkZGVuIHBhbmVsIGRvZXMuIFRoZVxuICAvLyBtb2JpbGUgc2hlZXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBmbG9hdC4gRmxvYXQgaXMgYVxuICAvLyBkZXNrdG9wIHByZXNlbnRhdGlvbiwgc28gb25seSBtb2RlIGB0cnVlYCBlbmFibGVzIGl0LiBUaGUgc3RvcmUncyB2YXJpYW50XG4gIC8vIHN0YXJ0cyB1bnNldDsgdGhlIG1hcmtlcidzIGRlY2xhcmVkIGB2YXJpYW50YCBwcm9wIGlzIHRoZSBpbml0aWFsXG4gIC8vIHByZXNlbnRhdGlvbiB1bnRpbCB0aGUgZmlyc3QgYHNldFZhcmlhbnRgIHdyaXRlcyB0byB0aGUgc3RvcmUuXG4gIGNvbnN0IHBhbmVsc0VuYWJsZWQgPSB1c2VMYXlvdXRQYW5lbHNFbmFibGVkKCk7XG4gIGNvbnN0IHJpZ2h0UGFuZWxWYXJpYW50ID1cbiAgICBsYXlvdXRTdGF0ZVtTbG90LnJpZ2h0UGFuZWxdLnZhcmlhbnQgPz9cbiAgICBkZWNsYXJlZFtTbG90LnJpZ2h0UGFuZWxdPy52YXJpYW50ID8/XG4gICAgXCJzaWRlYmFyXCI7XG4gIGNvbnN0IGlzUmlnaHRQYW5lbEZsb2F0aW5nID1cbiAgICBwYW5lbHNFbmFibGVkID09PSB0cnVlICYmXG4gICAgIWlzUmlnaHRQYW5lbFNoZWV0ICYmXG4gICAgcmlnaHRQYW5lbFZhcmlhbnQgPT09IFwiZmxvYXRcIjtcblxuICBjb25zdCBpc1Nob3duID0gKHNsb3Q6IFNsb3RLZXkpOiBib29sZWFuID0+XG4gICAgbGF5b3V0U3RhdGVbc2xvdF0udmlzaWJsZSAmJlxuICAgICEoc2xvdCA9PT0gU2xvdC5yaWdodFBhbmVsICYmIChpc1JpZ2h0UGFuZWxGbG9hdGluZyB8fCBpc1JpZ2h0UGFuZWxTaGVldCkpO1xuXG4gIC8vIFNsb3RzIGtlcHQgbW91bnRlZCB0aHJvdWdoIHRoZWlyIGV4aXQgYW5pbWF0aW9uIChyZXBvcnRlZCB2aWFcbiAgLy8gYHVzZVBhbmVsUHJlc2VuY2VgKS4gQSBwcmVzZW50LWJ1dC1oaWRkZW4gc2xvdCBzdGF5cyBpbiB0aGUgcm93IHNvIGl0c1xuICAvLyBjbG9zZSBhbmltYXRpb24gY2FuIHBsYXk7IGl0J3MgcmVtb3ZlZCBvbmNlIHByZXNlbmNlIGZsaXBzIGZhbHNlLlxuICBjb25zdCBbcHJlc2VudCwgc2V0UHJlc2VudF0gPSB1c2VTdGF0ZTxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBib29sZWFuPj4+KHt9KTtcbiAgY29uc3QgcHJlc2VuY2UgPSB1c2VNZW1vPFBhbmVsUHJlc2VuY2U+KFxuICAgICgpID0+ICh7XG4gICAgICBzZXRQcmVzZW50OiAoc2xvdCwgaXNQcmVzZW50KSA9PlxuICAgICAgICBzZXRQcmVzZW50KChwcmV2KSA9PlxuICAgICAgICAgIHByZXZbc2xvdF0gPT09IGlzUHJlc2VudCA/IHByZXYgOiB7IC4uLnByZXYsIFtzbG90XTogaXNQcmVzZW50IH1cbiAgICAgICAgKSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIC8vIEFuaW1hdGlvbiBjb250cm9sIGZvciB0aGUgZG9ja2VkIHNpZGUgcGFuZWxzJyBvcGVuL2Nsb3NlIHdpZHRoIHNsaWRlLiBBbGxcbiAgLy8gcmVmLWJhc2VkIG9uIHB1cnBvc2U6IHJlZ2lzdGVyaW5nIGhhbmRsZXMvZWxlbWVudHMgYW5kIHRvZ2dsaW5nIHN1cHByZXNzaW9uXG4gIC8vIGhhcHBlbiBkdXJpbmcgY29tbWl0cyBhbmQgcGVyLWZyYW1lIC0gbm9uZSBvZiBpdCBtYXkgcmUtcmVuZGVyIHRoZSBMYXlvdXQuXG4gIGNvbnN0IHBhbmVsSGFuZGxlcyA9IHVzZVJlZjxcbiAgICBQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfCBudWxsPj5cbiAgPih7fSk7XG4gIGNvbnN0IHBhbmVsRWxlbWVudHMgPSB1c2VSZWY8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgSFRNTEVsZW1lbnQgfCBudWxsPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IHJlc2l6ZVN1cHByZXNzZWQgPSB1c2VSZWY8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgYm9vbGVhbj4+Pih7fSk7XG4gIGNvbnN0IGFuaW1hdGlvbkNvbnRyb2wgPSB1c2VNZW1vPFBhbmVsQW5pbWF0aW9uQ29udHJvbD4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHNldEhhbmRsZTogKHNsb3QsIGhhbmRsZSkgPT4ge1xuICAgICAgICBwYW5lbEhhbmRsZXMuY3VycmVudFtzbG90XSA9IGhhbmRsZTtcbiAgICAgIH0sXG4gICAgICBnZXRIYW5kbGU6IChzbG90KSA9PiBwYW5lbEhhbmRsZXMuY3VycmVudFtzbG90XSA/PyBudWxsLFxuICAgICAgc2V0RWxlbWVudDogKHNsb3QsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgcGFuZWxFbGVtZW50cy5jdXJyZW50W3Nsb3RdID0gZWxlbWVudDtcbiAgICAgIH0sXG4gICAgICBnZXRFbGVtZW50OiAoc2xvdCkgPT4gcGFuZWxFbGVtZW50cy5jdXJyZW50W3Nsb3RdID8/IG51bGwsXG4gICAgICBzZXRSZXNpemVTdXBwcmVzc2VkOiAoc2xvdCwgc3VwcHJlc3NlZCkgPT4ge1xuICAgICAgICByZXNpemVTdXBwcmVzc2VkLmN1cnJlbnRbc2xvdF0gPSBzdXBwcmVzc2VkO1xuICAgICAgfSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuICAvLyBTdGFibGUgcGVyLXNsb3QgcmVmIGNhbGxiYWNrcyAtIGEgZnJlc2ggY2FsbGJhY2sgaWRlbnRpdHkgcGVyIHJlbmRlciB3b3VsZFxuICAvLyBtYWtlIFJlYWN0IGRldGFjaC9yZWF0dGFjaCB0aGUgcmVmcyBvbiBldmVyeSBMYXlvdXQgcmUtcmVuZGVyLlxuICBjb25zdCBwYW5lbFJlZkNhbGxiYWNrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNhbGxiYWNrcyA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICAoaGFuZGxlOiBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfCBudWxsKSA9PiB2b2lkXG4gICAgPigpO1xuICAgIGNvbnN0IGVsZW1lbnRDYWxsYmFja3MgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgKGVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZFxuICAgID4oKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFuZGxlRm9yOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBoYW5kbGVDYWxsYmFja3MuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrID0gKGhhbmRsZSkgPT5cbiAgICAgICAgICAgIGFuaW1hdGlvbkNvbnRyb2wuc2V0SGFuZGxlKGlkIGFzIFNsb3RLZXksIGhhbmRsZSk7XG4gICAgICAgICAgaGFuZGxlQ2FsbGJhY2tzLnNldChpZCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWxsYmFjaztcbiAgICAgIH0sXG4gICAgICBlbGVtZW50Rm9yOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBlbGVtZW50Q2FsbGJhY2tzLmdldChpZCk7XG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayA9IChlbGVtZW50KSA9PlxuICAgICAgICAgICAgYW5pbWF0aW9uQ29udHJvbC5zZXRFbGVtZW50KGlkIGFzIFNsb3RLZXksIGVsZW1lbnQpO1xuICAgICAgICAgIGVsZW1lbnRDYWxsYmFja3Muc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICB9O1xuICB9LCBbYW5pbWF0aW9uQ29udHJvbF0pO1xuICBjb25zdCBzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gT2JqZWN0LnZhbHVlcyhyZXNpemVTdXBwcmVzc2VkLmN1cnJlbnQpLnNvbWUoQm9vbGVhbiksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCByZWdpc3RyeSA9IHVzZU1lbW88UGFuZWxSZWdpc3RyeT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZ2lzdGVyOiAoc2xvdCwgcmVnKSA9PlxuICAgICAgICBzZXREZWNsYXJlZCgocHJldikgPT4gKHsgLi4ucHJldiwgW3Nsb3RdOiByZWcgfSkpLFxuICAgICAgdW5yZWdpc3RlcjogKHNsb3QpID0+XG4gICAgICAgIHNldERlY2xhcmVkKChwcmV2KSA9PiB7XG4gICAgICAgICAgaWYgKCEoc2xvdCBpbiBwcmV2KSkgcmV0dXJuIHByZXY7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IHsgLi4ucHJldiB9O1xuICAgICAgICAgIGRlbGV0ZSBuZXh0W3Nsb3RdO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9KSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IHsgcG9ydGFsVGFyZ2V0cywgc2xvdEhvc3RzLCBzbG90SG9zdFJlZnMsIGZsb2F0SG9zdFJlZiB9ID1cbiAgICB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzKHtcbiAgICAgIHNsb3RzOiBQQU5FTF9PUkRFUixcbiAgICAgIGZsb2F0YWJsZVNsb3Q6IFNsb3QucmlnaHRQYW5lbCxcbiAgICAgIGlzRmxvYXRpbmc6IGlzUmlnaHRQYW5lbEZsb2F0aW5nLFxuICAgIH0pO1xuXG4gIHVzZUdsb2JhbENzc1ZhcmlhYmxlcyhzbG90SG9zdHMpO1xuXG4gIC8vIFBhbmVscyB0aGF0IGV4aXN0IGluIHRoZSBsYXlvdXQsIHJlZ2FyZGxlc3Mgb2YgdmlzaWJpbGl0eS4gRHJpdmVzIHRoZVxuICAvLyBzb2xvLXZzLXJlc2l6YWJsZSBkZWNpc2lvbiBiZWxvdyAtIGtleWVkIG9uIERFQ0xBUkVEIChub3Qgc2hvd24pIHNvIHRoYXRcbiAgLy8gc2hvd2luZy9oaWRpbmcgYSBwYW5lbCBuZXZlciBmbGlwcyB0aGUgbW9kZS5cbiAgY29uc3QgZGVjbGFyZWRTbG90cyA9IFBBTkVMX09SREVSLmZpbHRlcigoc2xvdCkgPT4gZGVjbGFyZWRbc2xvdF0pO1xuXG4gIC8vIFNvbG8gbW9kZTogYSBzaW5nbGUgcGFuZWwgaXMgZGVjbGFyZWQgKGUuZy4ganVzdCBgQ29udGVudGAsIHdpdGggbm9cbiAgLy8gUmlnaHRQYW5lbC9MZWZ0UGFuZWwvU3BsaXQgaW4gdGhlIHRyZWUpIC0gbm90aGluZyB0byByZXNpemUgYWdhaW5zdCwgc28gaG9zdFxuICAvLyBpdCBpbiBhIHBsYWluIGRpdiBhbmQgc2tpcCByZWFjdC1yZXNpemFibGUtcGFuZWxzIGVudGlyZWx5LiBCZWNhdXNlIHRoZVxuICAvLyBjaGVjayBpcyBvbiBERUNMQVJFRCBwYW5lbHMsIHRvZ2dsaW5nIGEgKmRlY2xhcmVkKiBwYW5lbCdzIHZpc2liaWxpdHkga2VlcHNcbiAgLy8gdGhlIG1vZGUgc3RhYmxlLCBzbyBgQ29udGVudGAgaXMgbmV2ZXIgcmVtb3VudGVkIGJ5IGEgc2hvdy9oaWRlLiBUaGUgbW9kZVxuICAvLyBvbmx5IGZsaXBzIHdoZW4gYSBwYW5lbCBtYXJrZXIgaXMgYWRkZWQgdG8gLyByZW1vdmVkIGZyb20gdGhlIHRyZWUgKGFcbiAgLy8gc3RydWN0dXJhbCBjaGFuZ2UpLCB3aGVyZSBhIG9uZS10aW1lIHJlbW91bnQgaXMgYWNjZXB0YWJsZS5cbiAgY29uc3QgaXNTb2xvID0gZGVjbGFyZWRTbG90cy5sZW5ndGggPD0gMTtcbiAgY29uc3Qgc29sb1Nsb3QgPSBkZWNsYXJlZFNsb3RzWzBdO1xuXG4gIC8vIGNvbnRlbnQgZmxleGVzIChubyBmaXhlZCBzaXplKTsgb3RoZXJzIHVzZSB0aGUgZGVjbGFyZWQgZGVmYXVsdCwgZmFsbGluZ1xuICAvLyBiYWNrIHRvIHRoZSBwZXJzaXN0ZWQvY29uZmlnIHNpemUuXG4gIGNvbnN0IGRlZmF1bHRTaXplRm9yID0gKHNsb3Q6IFNsb3RLZXkpOiBTaXplIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoc2xvdCA9PT0gU2xvdC5jb250ZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBkZWNsYXJlZFtzbG90XT8uZGVmYXVsdFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0uc2l6ZTtcbiAgfTtcblxuICAvLyBPbmx5IHRoZSBwYW5lbHMgdGhhdCBhcmUgZGVjbGFyZWQgQU5EIChjdXJyZW50bHkgc2hvd24gT1IgbWlkLWV4aXQpLiBBXG4gIC8vIGhpZGRlbi1idXQtcHJlc2VudCBzbG90IGxpbmdlcnMgc28gaXRzIGNsb3NlIGFuaW1hdGlvbiBjYW4gcGxheTsgb3RoZXJ3aXNlXG4gIC8vIGNsb3NlZCBwYW5lbHMgcmVzZXJ2ZSBubyBzcGFjZS5cbiAgY29uc3QgcGFuZWxJdGVtczogUGFuZWxJdGVtW10gPSBQQU5FTF9PUkRFUi5maWx0ZXIoXG4gICAgKHNsb3QpID0+IGRlY2xhcmVkW3Nsb3RdICYmIChpc1Nob3duKHNsb3QpIHx8IHByZXNlbnRbc2xvdF0pXG4gICkubWFwKChzbG90KSA9PiAoe1xuICAgIGlkOiBzbG90LFxuICAgIGRlZmF1bHRTaXplOiBkZWZhdWx0U2l6ZUZvcihzbG90KSxcbiAgICBtaW5TaXplOiBkZWNsYXJlZFtzbG90XT8ubWluU2l6ZSA/PyBsYXlvdXRTdGF0ZVtzbG90XS5taW5TaXplLFxuICAgIG1heFNpemU6IGRlY2xhcmVkW3Nsb3RdPy5tYXhTaXplID8/IGxheW91dFN0YXRlW3Nsb3RdLm1heFNpemUsXG4gICAgY29sbGFwc2libGU6IHNsb3QgIT09IFNsb3QuY29udGVudCAmJiAoZGVjbGFyZWRbc2xvdF0/LmNvbGxhcHNpYmxlID8/IHRydWUpLFxuICAgIHJlc2l6YWJsZTpcbiAgICAgIGRlY2xhcmVkW3Nsb3RdPy5yZXNpemFibGUgPz8gcmVzaXphYmxlRnJvbVN0YXRlKGxheW91dFN0YXRlW3Nsb3RdKSxcbiAgfSkpO1xuXG4gIC8vIFNvbG8gbW9kZSBob3N0cyB0aGUgbG9uZSBwYW5lbCBpbiBhIHBsYWluIGRpdiwgbm8gcmVzaXphYmxlIEdyb3VwLiBBIGhpZGRlblxuICAvLyBsb25lIHBhbmVsIHJlbmRlcnMgbm90aGluZyAoQ29udGVudCBpcyBhbHdheXMgc2hvd24pLlxuICBjb25zdCBzb2xvSG9zdCA9XG4gICAgc29sb1Nsb3QgJiYgaXNTaG93bihzb2xvU2xvdCkgPyAoXG4gICAgICA8U3R5bGVkU29sb0hvc3QgcmVmPXtzbG90SG9zdFJlZnNbc29sb1Nsb3RdfSAvPlxuICAgICkgOiBudWxsO1xuXG4gIC8vIFRoZSByZXNpemFibGUgR3JvdXAuIGBrZXlgID0gdGhlIHBlcnNpc3RlbmNlIG5hbWVzcGFjZTogcmVhY3QtcmVzaXphYmxlLXBhbmVsc1xuICAvLyByZWFkcyBzdG9yZWQgc2l6ZXMgb25seSBvbiBtb3VudCwgc28gcmVtb3VudCB3aGVuIHRoZSBrZXkgY2hhbmdlcyB0byBsb2FkXG4gIC8vIHRoYXQgaW5zdGFuY2UncyBzaXplcyAocGVyLXJvdXRlIHNpemUgbWVtb3J5KS4gVGhlIGtleSBuZXZlciBjaGFuZ2VzIG9uXG4gIC8vIHBhbmVsIG9wZW4vY2xvc2UsIHNvIG5vcm1hbCB0b2dnbGluZyBzdGF5cyByZW1vdW50LWZyZWUuXG4gIGNvbnN0IHBhbmVsR3JvdXAgPVxuICAgIHBhbmVsSXRlbXMubGVuZ3RoID4gMCA/IChcbiAgICAgIDxQYW5lbFxuICAgICAgICBrZXk9e3Jlc29sdmVkS2V5fVxuICAgICAgICBwYW5lbHM9e3BhbmVsSXRlbXN9XG4gICAgICAgIHBlcnNpc3RlbmNlS2V5PXtyZXNvbHZlZEtleX1cbiAgICAgICAgc3RvcmFnZT17cmVzb2x2ZWRTdG9yYWdlfVxuICAgICAgICBob3N0Rm9yPXsoaWQpID0+IHNsb3RIb3N0UmVmc1tpZCBhcyBTbG90S2V5XX1cbiAgICAgICAgb25SZXNpemU9eyhpZCwgc2l6ZSkgPT4gcGFuZWxDYWxsYmFja3NbaWQgYXMgU2xvdEtleV0ucmVzaXplKHNpemUpfVxuICAgICAgICBvbkNvbGxhcHNlPXsoaWQpID0+IHBhbmVsQ2FsbGJhY2tzW2lkIGFzIFNsb3RLZXldLmhpZGUoKX1cbiAgICAgICAgcGFuZWxIYW5kbGVGb3I9e3BhbmVsUmVmQ2FsbGJhY2tzLmhhbmRsZUZvcn1cbiAgICAgICAgcGFuZWxFbGVtZW50Rm9yPXtwYW5lbFJlZkNhbGxiYWNrcy5lbGVtZW50Rm9yfVxuICAgICAgICBzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrPXtzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrfVxuICAgICAgLz5cbiAgICApIDogbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbFJlZ2lzdHJ5Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17cmVnaXN0cnl9PlxuICAgICAgPFBhbmVsRGVjbGFyYXRpb25zQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZGVjbGFyZWR9PlxuICAgICAgICA8UGFuZWxQcmVzZW5jZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ByZXNlbmNlfT5cbiAgICAgICAgICA8UGFuZWxBbmltYXRpb25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXthbmltYXRpb25Db250cm9sfT5cbiAgICAgICAgICAgIDxMYXlvdXRQb3J0YWxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwb3J0YWxUYXJnZXRzfT5cbiAgICAgICAgICAgICAgPExheW91dEZsb2F0RHJhZ1Byb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDxNb2JpbGVTcGxpdFN0YWNrQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bW9iaWxlU3BsaXRTdGFja30+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTGF5b3V0IGRhdGEtZHMtaWQ9XCJMYXlvdXRcIj5cbiAgICAgICAgICAgICAgICAgICAge2lzU29sbyA/IHNvbG9Ib3N0IDogcGFuZWxHcm91cH1cbiAgICAgICAgICAgICAgICAgICAge2lzUmlnaHRQYW5lbEZsb2F0aW5nICYmXG4gICAgICAgICAgICAgICAgICAgICAgbGF5b3V0U3RhdGVbU2xvdC5yaWdodFBhbmVsXS52aXNpYmxlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMYXlvdXRGbG9hdCBob3N0UmVmPXtmbG9hdEhvc3RSZWZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICB7c2hvd01vYmlsZVNwbGl0U3RhY2sgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRNb2JpbGVTcGxpdFN0YWNrSG9zdFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtzZXRNb2JpbGVTcGxpdFN0YWNrSG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRMYXlvdXQ+XG4gICAgICAgICAgICAgICAgPC9Nb2JpbGVTcGxpdFN0YWNrQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9MYXlvdXRGbG9hdERyYWdQcm92aWRlcj5cbiAgICAgICAgICAgIDwvTGF5b3V0UG9ydGFsQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICA8L1BhbmVsQW5pbWF0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9QYW5lbFByZXNlbmNlQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvUGFuZWxEZWNsYXJhdGlvbnNDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvUGFuZWxSZWdpc3RyeUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiBQdWJsaWMgTGF5b3V0IC0gdGhlIHJlc2l6YWJsZSBwYW5lbCByb3cgKyBjb21wb3VuZCBwYXJ0cyBhcyBzdGF0aWNzICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbnR5cGUgTGF5b3V0Q29tcG9uZW50ID0gdHlwZW9mIExheW91dEJhc2UgJiB7XG4gIFByb3ZpZGVyOiB0eXBlb2YgTGF5b3V0UHJvdmlkZXI7XG4gIExlZnRQYW5lbDogdHlwZW9mIExlZnRQYW5lbDtcbiAgTGVmdFBhbmVsSGVhZGVyOiB0eXBlb2YgTGVmdFBhbmVsSGVhZGVyO1xuICBMZWZ0UGFuZWxGb290ZXI6IHR5cGVvZiBMZWZ0UGFuZWxGb290ZXI7XG4gIFJpZ2h0UGFuZWw6IHR5cGVvZiBSaWdodFBhbmVsO1xuICBSaWdodFBhbmVsSGVhZGVyOiB0eXBlb2YgUmlnaHRQYW5lbEhlYWRlcjtcbiAgUmlnaHRQYW5lbEZvb3RlcjogdHlwZW9mIFJpZ2h0UGFuZWxGb290ZXI7XG4gIENvbnRlbnQ6IHR5cGVvZiBDb250ZW50O1xuICBTcGxpdDogdHlwZW9mIFNwbGl0O1xuICBTcGxpdEhlYWRlcjogdHlwZW9mIFNwbGl0SGVhZGVyO1xuICBTcGxpdEZvb3RlcjogdHlwZW9mIFNwbGl0Rm9vdGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IExheW91dCA9IExheW91dEJhc2UgYXMgTGF5b3V0Q29tcG9uZW50O1xuXG5MYXlvdXQuUHJvdmlkZXIgPSBMYXlvdXRQcm92aWRlcjtcbkxheW91dC5MZWZ0UGFuZWwgPSBMZWZ0UGFuZWw7XG5MYXlvdXQuTGVmdFBhbmVsSGVhZGVyID0gTGVmdFBhbmVsSGVhZGVyO1xuTGF5b3V0LkxlZnRQYW5lbEZvb3RlciA9IExlZnRQYW5lbEZvb3RlcjtcbkxheW91dC5SaWdodFBhbmVsID0gUmlnaHRQYW5lbDtcbkxheW91dC5SaWdodFBhbmVsSGVhZGVyID0gUmlnaHRQYW5lbEhlYWRlcjtcbkxheW91dC5SaWdodFBhbmVsRm9vdGVyID0gUmlnaHRQYW5lbEZvb3RlcjtcbkxheW91dC5Db250ZW50ID0gQ29udGVudDtcbkxheW91dC5TcGxpdCA9IFNwbGl0O1xuTGF5b3V0LlNwbGl0SGVhZGVyID0gU3BsaXRIZWFkZXI7XG5MYXlvdXQuU3BsaXRGb290ZXIgPSBTcGxpdEZvb3RlcjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnSHVCIn0= */"),StyledMobileSplitStackHost=(0,_styled.default)("div",{target:"elbydir2",label:"StyledMobileSplitStackHost"})({position:"absolute",inset:0,overflow:"hidden",pointerEvents:"none"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvTGF5b3V0L0xheW91dC50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL0xheW91dC9MYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHR5cGUgeyBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlLXBhbmVsc1wiO1xuaW1wb3J0IHsgUGFuZWwgfSBmcm9tIFwiLi4vSW50ZXJuYWwvUGFuZWwvUGFuZWxcIjtcbmltcG9ydCB0eXBlIHsgUGFuZWxJdGVtIH0gZnJvbSBcIi4uL0ludGVybmFsL1BhbmVsL1BhbmVsXCI7XG5pbXBvcnQgeyBMYXlvdXRGbG9hdCB9IGZyb20gXCIuLi9JbnRlcm5hbC9MYXlvdXRGbG9hdC9MYXlvdXRGbG9hdFwiO1xuaW1wb3J0IHsgdXNlQnJlYWtwb2ludHMgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3VzZUJyZWFrcG9pbnRzXCI7XG5pbXBvcnQgeyBQQU5FTF9PUkRFUiwgUEFORUxfV0lEVEhfVkFSLCBTbG90IH0gZnJvbSBcIi4vLWNvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTGF5b3V0UGFuZWxzRW5hYmxlZCwgdXNlTGF5b3V0UGVyc2lzdGVuY2UgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQge1xuICBNb2JpbGVTcGxpdFN0YWNrQ29udGV4dCxcbiAgdHlwZSBNb2JpbGVTcGxpdFN0YWNrVmFsdWUsXG59IGZyb20gXCIuL1NwbGl0L01vYmlsZVNwbGl0Vmlldy91c2VNb2JpbGVTcGxpdFN0YWNrXCI7XG5pbXBvcnQgeyB1c2VNb2JpbGVTcGxpdFZpZXdFbmFibGVkIH0gZnJvbSBcIi4vU3BsaXQvTW9iaWxlU3BsaXRWaWV3L3VzZU1vYmlsZVNwbGl0Vmlld1wiO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tIFwiLi9MYXlvdXRQcm92aWRlclwiO1xuaW1wb3J0IHsgQ29udGVudCB9IGZyb20gXCIuL0NvbnRlbnQvQ29udGVudFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbCB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbFwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEhlYWRlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgUmlnaHRQYW5lbEZvb3RlciB9IGZyb20gXCIuL1JpZ2h0UGFuZWwvUmlnaHRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbFwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsSGVhZGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEhlYWRlclwiO1xuaW1wb3J0IHsgTGVmdFBhbmVsRm9vdGVyIH0gZnJvbSBcIi4vTGVmdFBhbmVsL0xlZnRQYW5lbEZvb3RlclwiO1xuaW1wb3J0IHsgU3BsaXQgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdFwiO1xuaW1wb3J0IHsgU3BsaXRIZWFkZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEhlYWRlclwiO1xuaW1wb3J0IHsgU3BsaXRGb290ZXIgfSBmcm9tIFwiLi9TcGxpdC9TcGxpdEZvb3RlclwiO1xuaW1wb3J0IHtcbiAgTGF5b3V0UG9ydGFsQ29udGV4dCxcbiAgUGFuZWxSZWdpc3RyeUNvbnRleHQsXG4gIFBhbmVsRGVjbGFyYXRpb25zQ29udGV4dCxcbiAgUGFuZWxQcmVzZW5jZUNvbnRleHQsXG4gIFBhbmVsQW5pbWF0aW9uQ29udGV4dCxcbiAgdHlwZSBQb3J0YWxUYXJnZXRzLFxuICB0eXBlIFBhbmVsUmVnLFxuICB0eXBlIFBhbmVsUmVnaXN0cnksXG4gIHR5cGUgUGFuZWxQcmVzZW5jZSxcbiAgdHlwZSBQYW5lbEFuaW1hdGlvbkNvbnRyb2wsXG59IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5pbXBvcnQgeyB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzIH0gZnJvbSBcIi4vdXNlRmxvYXRhYmxlUG9ydGFsVGFyZ2V0c1wiO1xuaW1wb3J0IHsgTGF5b3V0RmxvYXREcmFnUHJvdmlkZXIgfSBmcm9tIFwiLi4vSW50ZXJuYWwvTGF5b3V0RmxvYXQvTGF5b3V0RmxvYXREcmFnUHJvdmlkZXJcIjtcbmltcG9ydCB7IHVzZUxheW91dFZhciwgdHlwZSBMYXlvdXRWYXJIYW5kbGUgfSBmcm9tIFwiLi9MYXlvdXRDc3NWYXJzXCI7XG5pbXBvcnQgeyB1c2VMYXlvdXQgfSBmcm9tIFwiLi91c2VMYXlvdXRcIjtcbmltcG9ydCB7IHVzZUxheW91dFJ1bGVzIH0gZnJvbSBcIi4vdXNlTGF5b3V0UnVsZXNcIjtcbmltcG9ydCB7IERFRkFVTFRfTEFZT1VUX1JVTEVTIH0gZnJvbSBcIi4vcnVsZXNcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0UHJvcHMsIExheW91dFN0YXRlLCBTaXplLCBTbG90S2V5IH0gZnJvbSBcIi4vLXR5cGVzXCI7XG5cbi8vIE9ubHkgdGhlIHNpZGUgcGFuZWxzIGNhcnJ5IGByZXNpemFibGVgIGluIHN0YXRlIChpdCBjb21lcyBmcm9tIHRoZSBwcm92aWRlclxuLy8gY29uZmlnKTsgdGhlIGNvbnRlbnQvc3BsaXR2aWV3IHNsb3RzIHRha2UgaXQgZnJvbSB0aGVpciBkZWNsYXJhdGlvbiBhbG9uZS5cbmNvbnN0IHJlc2l6YWJsZUZyb21TdGF0ZSA9IChcbiAgc2xvdFN0YXRlOiBMYXlvdXRTdGF0ZVtTbG90S2V5XVxuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9PlxuICBzbG90U3RhdGUua2luZCA9PT0gXCJzaWRlUGFuZWxcIiA/IHNsb3RTdGF0ZS5yZXNpemFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogUHVibGlzaGVzIGVhY2ggcGFuZWwncyBsaXZlIHBpeGVsIHdpZHRoIGFzIGEgbGF5b3V0IENTUyB2YXIgKGUuZy5cbiAqIGAtLWRzLWxheW91dC1yaWdodFBhbmVsLXdpZHRoYCksIHRyYWNraW5nIGRyYWctIGFuZCB3aW5kb3ctcmVzaXplcy4gQSBoaWRkZW5cbiAqIHBhcnQgKG5vIGhvc3Qgbm9kZSkgcmVhZHMgYDBweGAsIHNvIHRoZSB2YXIgaXMgYWx3YXlzIGRlZmluZWQuIE9uZVxuICogYHVzZUxheW91dFZhcmAgcGVyIHNsb3QgaW4gYFBBTkVMX1dJRFRIX1ZBUmAuXG4gKi9cbmNvbnN0IHVzZUdsb2JhbENzc1ZhcmlhYmxlcyA9IChzbG90SG9zdHM6IFBvcnRhbFRhcmdldHMpOiB2b2lkID0+IHtcbiAgY29uc3QgY29udGVudFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5jb250ZW50KTtcbiAgY29uc3QgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyID0gdXNlTGF5b3V0VmFyKFBBTkVMX1dJRFRIX1ZBUi5yaWdodFBhbmVsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldHM6IFtTbG90S2V5LCBMYXlvdXRWYXJIYW5kbGVdW10gPSBbXG4gICAgICBbU2xvdC5jb250ZW50LCBjb250ZW50V2lkdGhDc3NWYXJdLFxuICAgICAgW1Nsb3QucmlnaHRQYW5lbCwgcmlnaHRQYW5lbFdpZHRoQ3NzVmFyXSxcbiAgICBdO1xuICAgIGNvbnN0IG9ic2VydmVyczogUmVzaXplT2JzZXJ2ZXJbXSA9IFtdO1xuXG4gICAgdGFyZ2V0cy5mb3JFYWNoKChbc2xvdCwgaGFuZGxlXSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IHNsb3RIb3N0c1tzbG90XSA/PyBudWxsO1xuICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgIGhhbmRsZS5zZXQoXCIwcHhcIik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHB1Ymxpc2hOb2RlV2lkdGggPSAoKTogdm9pZCA9PlxuICAgICAgICBoYW5kbGUuc2V0KGAke25vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHhgKTtcbiAgICAgIHB1Ymxpc2hOb2RlV2lkdGgoKTtcbiAgICAgIC8vIGpzZG9tIChhbmQgb2xkIGJyb3dzZXJzKSBsYWNrIFJlc2l6ZU9ic2VydmVyIOKAlCBza2lwIGxpdmUgdHJhY2tpbmcgdGhlcmUuXG4gICAgICBpZiAodHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihwdWJsaXNoTm9kZVdpZHRoKTtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUobm9kZSk7XG4gICAgICBvYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXJzLmZvckVhY2goKG9ic2VydmVyKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCkpO1xuICB9LCBbY29udGVudFdpZHRoQ3NzVmFyLCByaWdodFBhbmVsV2lkdGhDc3NWYXIsIHNsb3RIb3N0c10pO1xufTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8qIExheW91dCAtIHJlZ2lzdHJ5ICsgaG9zdHM7IG1hcmtlcnMgZGVjbGFyZS9wb3J0YWw7IHRoZSByZXNpemFibGUgcGFuZWwgcm93ICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8vIGBwb3NpdGlvbjogcmVsYXRpdmVgIGFuY2hvcnMgdGhlIGFic29sdXRlbHktcG9zaXRpb25lZCBzcGxpdCBzdGFjayBob3N0IGFuZFxuLy8gdGhlIGZsb2F0aW5nIHdpbmRvdy4gT3ZlcmZsb3cgaXMgbGVmdCB1bnRvdWNoZWQgKHZpc2libGUpIHNvIGEgcGFnZSByZWx5aW5nXG4vLyBvbiBkb2N1bWVudC9hbmNlc3RvciBzY3JvbGxpbmcgaXMgdW5hZmZlY3RlZCAtIHRoZSBvZmZzY3JlZW4gc3BsaXQgbGF5ZXJzIGFyZVxuLy8gY2xpcHBlZCBieSB0aGVpciBvd24gaG9zdCBiZWxvdywgbm90IGhlcmUuXG5jb25zdCBTdHlsZWRMYXlvdXQgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxufSk7XG5cbi8vIFNvbG8tbW9kZSBob3N0OiBhIGxvbmUgcGFuZWwgKG5vIHJlc2l6YWJsZSBzaWJsaW5nKSBpcyBob3N0ZWQgaGVyZSBpbnN0ZWFkIG9mXG4vLyBpbnNpZGUgcmVhY3QtcmVzaXphYmxlLXBhbmVscy4gTWF0Y2hlcyB0aGUgcGVyLXBhbmVsIGhvc3QgdGhlIEdyb3VwIHJlbmRlcnNcbi8vIChgcmVsYXRpdmVgICsgZnVsbC1ibGVlZCkgc28gY29udGVudCByZWZsb3dzL3Njcm9sbHMgaWRlbnRpY2FsbHkgZWl0aGVyIHdheS5cbmNvbnN0IFN0eWxlZFNvbG9Ib3N0ID0gc3R5bGVkLmRpdih7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbn0pO1xuXG4vLyBGdWxsLWFyZWEgb3ZlcmxheSBhdCB0aGUgbGF5b3V0IHJvb3QgdGhhdCBob3N0cyB0aGUgbW9iaWxlIHNwbGl0IHN0YWNrLiBUaGVcbi8vIGxhc3QgY2hpbGQgb2YgYFN0eWxlZExheW91dGAsIHNvIGl0IHN0YWNrcyBhYm92ZSB0aGUgcGFuZWwgcm93OyBgY29udGVudGAgYW5kXG4vLyB0aGUgc3BsaXQgdmlld3MgcG9ydGFsIHRoZWlyIHNsaWRpbmcgbGF5ZXJzIGluIGhlcmUuIGBwb2ludGVyLWV2ZW50czogbm9uZWBcbi8vIHNvIGl0IG5ldmVyIGJsb2NrcyB0aGUgbGF5b3V0IGJlbmVhdGggLSBlYWNoIGxheWVyIHJlLWVuYWJsZXMgZXZlbnRzIHdoZW5cbi8vIGl0J3MgdGhlIGFjdGl2ZSAoZnJvbnQpIHZpZXcuIGBvdmVyZmxvdzogaGlkZGVuYCBjbGlwcyB0aGUgaW5hY3RpdmUgbGF5ZXJzJ1xuLy8gb2Zmc2NyZWVuIHJlc3RpbmcgcG9zaXRpb24gKHRyYW5zbGF0ZVggcGFzdCB0aGUgZWRnZSkgc28gdGhleSBkb24ndCB3aWRlblxuLy8gdGhlIHBhZ2UgLSBzY29wZWQgaGVyZSwgbm90IG9uIHRoZSByb290LCBzbyBpdCBuZXZlciBhZmZlY3RzIHBhZ2Ugc2Nyb2xsaW5nLlxuY29uc3QgU3R5bGVkTW9iaWxlU3BsaXRTdGFja0hvc3QgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgaW5zZXQ6IDAsXG4gIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICBwb2ludGVyRXZlbnRzOiBcIm5vbmVcIixcbn0pO1xuXG5mdW5jdGlvbiBMYXlvdXRCYXNlKHtcbiAgY2hpbGRyZW4sXG4gIHBlcnNpc3RlbmNlS2V5LFxuICBzdG9yYWdlLFxuICBydWxlcyA9IERFRkFVTFRfTEFZT1VUX1JVTEVTLFxuICBhZGRpdGlvbmFsUnVsZXNEYXRhLFxufTogTGF5b3V0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBbZGVjbGFyZWQsIHNldERlY2xhcmVkXSA9IHVzZVN0YXRlPFBhcnRpYWw8UmVjb3JkPFNsb3RLZXksIFBhbmVsUmVnPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IGxheW91dCA9IHVzZUxheW91dCgpO1xuICBjb25zdCB7IHN0YXRlOiBsYXlvdXRTdGF0ZSwgLi4ucGFuZWxDYWxsYmFja3MgfSA9IGxheW91dDtcbiAgLy8gQWN0cyB0aHJvdWdoIHRoZSBvcmRpbmFyeSBwYW5lbCBhY3Rpb25zIC0gbm90aGluZyBiZWxvdyBrbm93cyBpdCByYW4uXG4gIHVzZUxheW91dFJ1bGVzKHtcbiAgICBsYXlvdXQsXG4gICAgZGVjbGFyZWQsXG4gICAgcnVsZXMsXG4gICAgYWRkaXRpb25hbERhdGE6IGFkZGl0aW9uYWxSdWxlc0RhdGEsXG4gIH0pO1xuICBjb25zdCBwZXJzaXN0ZW5jZSA9IHVzZUxheW91dFBlcnNpc3RlbmNlKCk7XG4gIGNvbnN0IHJlc29sdmVkS2V5ID0gcGVyc2lzdGVuY2VLZXkgPz8gcGVyc2lzdGVuY2UucGVyc2lzdGVuY2VLZXk7XG4gIGNvbnN0IHJlc29sdmVkU3RvcmFnZSA9IHN0b3JhZ2UgPz8gcGVyc2lzdGVuY2Uuc3RvcmFnZTtcblxuICAvLyBCZWxvdyB0aGUgbW9iaWxlIGJyZWFrcG9pbnQgdGhlIHJpZ2h0UGFuZWwgcmVuZGVycyBhcyBhIGJvdHRvbSBzaGVldCAoaXRzXG4gIC8vIG1hcmtlciByZW5kZXJzIHRoZSBTaGVldCBpdHNlbGYpIC0gYW4gYXV0b21hdGljLCByZW5kZXItbGV2ZWwgYWRhcHRhdGlvbi5cbiAgLy8gVGhlIHN0b3JlZCB2YXJpYW50IGlzIHVudG91Y2hlZCwgc28gcmVzaXppbmcgYmFjayB0byBkZXNrdG9wIHJlc3RvcmVzIHRoZVxuICAvLyBleGFjdCBwcmVzZW50YXRpb24gKGRvY2tlZCBvciBmbG9hdGluZykgdGhlIHVzZXIgbGVmdC5cbiAgY29uc3QgeyBpc01vYmlsZSB9ID0gdXNlQnJlYWtwb2ludHMoKTtcbiAgY29uc3QgaXNSaWdodFBhbmVsU2hlZXQgPSBpc01vYmlsZTtcblxuICAvLyBUaGUgbW9iaWxlIHNwbGl0IHN0YWNrJ3Mgc2hhcmVkIHN0YXRlLCBzY29wZWQgdG8gdGhpcyBMYXlvdXQ6IHRoZSBob3N0XG4gIC8vIGVsZW1lbnQgbWFya2VycyBwb3J0YWwgaW50byAob25seSByZW5kZXJlZCB3aGlsZSB0aGUgc3RhY2sgYXBwbGllcyB0byB0aGVcbiAgLy8gdmlld3BvcnQpIGFuZCBob3cgbWFueSBzcGxpdCB2aWV3cyBhcmUgbW91bnRlZCAoYSBjb3VudCB0b2xlcmF0ZXMgdHJhbnNpZW50XG4gIC8vIGRvdWJsZS1tb3VudHMpLiBgY29udGVudGAgcmVhZHMgcHJlc2VuY2UgdG8gZGVjaWRlIHdoZXRoZXIgdG8gam9pbiB0aGVcbiAgLy8gc3RhY2s7IGJvdGggYXJlIHB1Ymxpc2hlZCB0b2dldGhlciB2aWEgTW9iaWxlU3BsaXRTdGFja0NvbnRleHQuXG4gIGNvbnN0IHNob3dNb2JpbGVTcGxpdFN0YWNrID0gdXNlTW9iaWxlU3BsaXRWaWV3RW5hYmxlZCgpO1xuICBjb25zdCBbbW9iaWxlU3BsaXRTdGFja0hvc3QsIHNldE1vYmlsZVNwbGl0U3RhY2tIb3N0XSA9XG4gICAgdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3NwbGl0Q291bnQsIHNldFNwbGl0Q291bnRdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IHJlZ2lzdGVyU3BsaXQgPSB1c2VDYWxsYmFjazxcbiAgICBNb2JpbGVTcGxpdFN0YWNrVmFsdWVbXCJyZWdpc3RlclNwbGl0XCJdXG4gID4oKCkgPT4ge1xuICAgIHNldFNwbGl0Q291bnQoKGNvdW50KSA9PiBjb3VudCArIDEpO1xuICAgIHJldHVybiAoKSA9PiBzZXRTcGxpdENvdW50KChjb3VudCkgPT4gY291bnQgLSAxKTtcbiAgfSwgW10pO1xuICBjb25zdCBtb2JpbGVTcGxpdFN0YWNrID0gdXNlTWVtbzxNb2JpbGVTcGxpdFN0YWNrVmFsdWU+KFxuICAgICgpID0+ICh7XG4gICAgICBob3N0OiBtb2JpbGVTcGxpdFN0YWNrSG9zdCxcbiAgICAgIGlzU3BsaXRQcmVzZW50OiBzcGxpdENvdW50ID4gMCxcbiAgICAgIHJlZ2lzdGVyU3BsaXQsXG4gICAgfSksXG4gICAgW21vYmlsZVNwbGl0U3RhY2tIb3N0LCBzcGxpdENvdW50LCByZWdpc3RlclNwbGl0XVxuICApO1xuXG4gIC8vIEEgZmxvYXRpbmcgcmlnaHRQYW5lbCBzdGF5cyB2aXNpYmxlIChpdHMgbWFya2VyIGtlZXBzIHJlbmRlcmluZyBjb250ZW50KVxuICAvLyBidXQgbGVhdmVzIHRoZSByZXNpemFibGUgcm93IC0gZXhhY3RseSBsaWtlIGEgaGlkZGVuIHBhbmVsIGRvZXMuIFRoZVxuICAvLyBtb2JpbGUgc2hlZXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBmbG9hdC4gRmxvYXQgaXMgYVxuICAvLyBkZXNrdG9wIHByZXNlbnRhdGlvbiwgc28gb25seSBtb2RlIGB0cnVlYCBlbmFibGVzIGl0LiBUaGUgc3RvcmUncyB2YXJpYW50XG4gIC8vIHN0YXJ0cyB1bnNldDsgdGhlIG1hcmtlcidzIGRlY2xhcmVkIGB2YXJpYW50YCBwcm9wIGlzIHRoZSBpbml0aWFsXG4gIC8vIHByZXNlbnRhdGlvbiB1bnRpbCB0aGUgZmlyc3QgYHNldFZhcmlhbnRgIHdyaXRlcyB0byB0aGUgc3RvcmUuXG4gIGNvbnN0IHBhbmVsc0VuYWJsZWQgPSB1c2VMYXlvdXRQYW5lbHNFbmFibGVkKCk7XG4gIGNvbnN0IHJpZ2h0UGFuZWxWYXJpYW50ID1cbiAgICBsYXlvdXRTdGF0ZVtTbG90LnJpZ2h0UGFuZWxdLnZhcmlhbnQgPz9cbiAgICBkZWNsYXJlZFtTbG90LnJpZ2h0UGFuZWxdPy52YXJpYW50ID8/XG4gICAgXCJzaWRlYmFyXCI7XG4gIGNvbnN0IGlzUmlnaHRQYW5lbEZsb2F0aW5nID1cbiAgICBwYW5lbHNFbmFibGVkID09PSB0cnVlICYmXG4gICAgIWlzUmlnaHRQYW5lbFNoZWV0ICYmXG4gICAgcmlnaHRQYW5lbFZhcmlhbnQgPT09IFwiZmxvYXRcIjtcblxuICBjb25zdCBpc1Nob3duID0gKHNsb3Q6IFNsb3RLZXkpOiBib29sZWFuID0+XG4gICAgbGF5b3V0U3RhdGVbc2xvdF0udmlzaWJsZSAmJlxuICAgICEoc2xvdCA9PT0gU2xvdC5yaWdodFBhbmVsICYmIChpc1JpZ2h0UGFuZWxGbG9hdGluZyB8fCBpc1JpZ2h0UGFuZWxTaGVldCkpO1xuXG4gIC8vIFNsb3RzIGtlcHQgbW91bnRlZCB0aHJvdWdoIHRoZWlyIGV4aXQgYW5pbWF0aW9uIChyZXBvcnRlZCB2aWFcbiAgLy8gYHVzZVBhbmVsUHJlc2VuY2VgKS4gQSBwcmVzZW50LWJ1dC1oaWRkZW4gc2xvdCBzdGF5cyBpbiB0aGUgcm93IHNvIGl0c1xuICAvLyBjbG9zZSBhbmltYXRpb24gY2FuIHBsYXk7IGl0J3MgcmVtb3ZlZCBvbmNlIHByZXNlbmNlIGZsaXBzIGZhbHNlLlxuICBjb25zdCBbcHJlc2VudCwgc2V0UHJlc2VudF0gPSB1c2VTdGF0ZTxQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBib29sZWFuPj4+KHt9KTtcbiAgY29uc3QgcHJlc2VuY2UgPSB1c2VNZW1vPFBhbmVsUHJlc2VuY2U+KFxuICAgICgpID0+ICh7XG4gICAgICBzZXRQcmVzZW50OiAoc2xvdCwgaXNQcmVzZW50KSA9PlxuICAgICAgICBzZXRQcmVzZW50KChwcmV2KSA9PlxuICAgICAgICAgIHByZXZbc2xvdF0gPT09IGlzUHJlc2VudCA/IHByZXYgOiB7IC4uLnByZXYsIFtzbG90XTogaXNQcmVzZW50IH1cbiAgICAgICAgKSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIC8vIEFuaW1hdGlvbiBjb250cm9sIGZvciB0aGUgZG9ja2VkIHNpZGUgcGFuZWxzJyBvcGVuL2Nsb3NlIHdpZHRoIHNsaWRlLiBBbGxcbiAgLy8gcmVmLWJhc2VkIG9uIHB1cnBvc2U6IHJlZ2lzdGVyaW5nIGhhbmRsZXMvZWxlbWVudHMgYW5kIHRvZ2dsaW5nIHN1cHByZXNzaW9uXG4gIC8vIGhhcHBlbiBkdXJpbmcgY29tbWl0cyBhbmQgcGVyLWZyYW1lIC0gbm9uZSBvZiBpdCBtYXkgcmUtcmVuZGVyIHRoZSBMYXlvdXQuXG4gIGNvbnN0IHBhbmVsSGFuZGxlcyA9IHVzZVJlZjxcbiAgICBQYXJ0aWFsPFJlY29yZDxTbG90S2V5LCBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfCBudWxsPj5cbiAgPih7fSk7XG4gIGNvbnN0IHBhbmVsRWxlbWVudHMgPSB1c2VSZWY8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgSFRNTEVsZW1lbnQgfCBudWxsPj4+KFxuICAgIHt9XG4gICk7XG4gIGNvbnN0IHJlc2l6ZVN1cHByZXNzZWQgPSB1c2VSZWY8UGFydGlhbDxSZWNvcmQ8U2xvdEtleSwgYm9vbGVhbj4+Pih7fSk7XG4gIGNvbnN0IGFuaW1hdGlvbkNvbnRyb2wgPSB1c2VNZW1vPFBhbmVsQW5pbWF0aW9uQ29udHJvbD4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHNldEhhbmRsZTogKHNsb3QsIGhhbmRsZSkgPT4ge1xuICAgICAgICBwYW5lbEhhbmRsZXMuY3VycmVudFtzbG90XSA9IGhhbmRsZTtcbiAgICAgIH0sXG4gICAgICBnZXRIYW5kbGU6IChzbG90KSA9PiBwYW5lbEhhbmRsZXMuY3VycmVudFtzbG90XSA/PyBudWxsLFxuICAgICAgc2V0RWxlbWVudDogKHNsb3QsIGVsZW1lbnQpID0+IHtcbiAgICAgICAgcGFuZWxFbGVtZW50cy5jdXJyZW50W3Nsb3RdID0gZWxlbWVudDtcbiAgICAgIH0sXG4gICAgICBnZXRFbGVtZW50OiAoc2xvdCkgPT4gcGFuZWxFbGVtZW50cy5jdXJyZW50W3Nsb3RdID8/IG51bGwsXG4gICAgICBzZXRSZXNpemVTdXBwcmVzc2VkOiAoc2xvdCwgc3VwcHJlc3NlZCkgPT4ge1xuICAgICAgICByZXNpemVTdXBwcmVzc2VkLmN1cnJlbnRbc2xvdF0gPSBzdXBwcmVzc2VkO1xuICAgICAgfSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuICAvLyBTdGFibGUgcGVyLXNsb3QgcmVmIGNhbGxiYWNrcyAtIGEgZnJlc2ggY2FsbGJhY2sgaWRlbnRpdHkgcGVyIHJlbmRlciB3b3VsZFxuICAvLyBtYWtlIFJlYWN0IGRldGFjaC9yZWF0dGFjaCB0aGUgcmVmcyBvbiBldmVyeSBMYXlvdXQgcmUtcmVuZGVyLlxuICBjb25zdCBwYW5lbFJlZkNhbGxiYWNrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNhbGxiYWNrcyA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICAoaGFuZGxlOiBQYW5lbEltcGVyYXRpdmVIYW5kbGUgfCBudWxsKSA9PiB2b2lkXG4gICAgPigpO1xuICAgIGNvbnN0IGVsZW1lbnRDYWxsYmFja3MgPSBuZXcgTWFwPFxuICAgICAgc3RyaW5nLFxuICAgICAgKGVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4gdm9pZFxuICAgID4oKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFuZGxlRm9yOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBoYW5kbGVDYWxsYmFja3MuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICAgIGNhbGxiYWNrID0gKGhhbmRsZSkgPT5cbiAgICAgICAgICAgIGFuaW1hdGlvbkNvbnRyb2wuc2V0SGFuZGxlKGlkIGFzIFNsb3RLZXksIGhhbmRsZSk7XG4gICAgICAgICAgaGFuZGxlQ2FsbGJhY2tzLnNldChpZCwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWxsYmFjaztcbiAgICAgIH0sXG4gICAgICBlbGVtZW50Rm9yOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgY2FsbGJhY2sgPSBlbGVtZW50Q2FsbGJhY2tzLmdldChpZCk7XG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICBjYWxsYmFjayA9IChlbGVtZW50KSA9PlxuICAgICAgICAgICAgYW5pbWF0aW9uQ29udHJvbC5zZXRFbGVtZW50KGlkIGFzIFNsb3RLZXksIGVsZW1lbnQpO1xuICAgICAgICAgIGVsZW1lbnRDYWxsYmFja3Muc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICB9O1xuICB9LCBbYW5pbWF0aW9uQ29udHJvbF0pO1xuICBjb25zdCBzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKCkgPT4gT2JqZWN0LnZhbHVlcyhyZXNpemVTdXBwcmVzc2VkLmN1cnJlbnQpLnNvbWUoQm9vbGVhbiksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCByZWdpc3RyeSA9IHVzZU1lbW88UGFuZWxSZWdpc3RyeT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZ2lzdGVyOiAoc2xvdCwgcmVnKSA9PlxuICAgICAgICBzZXREZWNsYXJlZCgocHJldikgPT4gKHsgLi4ucHJldiwgW3Nsb3RdOiByZWcgfSkpLFxuICAgICAgdW5yZWdpc3RlcjogKHNsb3QpID0+XG4gICAgICAgIHNldERlY2xhcmVkKChwcmV2KSA9PiB7XG4gICAgICAgICAgaWYgKCEoc2xvdCBpbiBwcmV2KSkgcmV0dXJuIHByZXY7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IHsgLi4ucHJldiB9O1xuICAgICAgICAgIGRlbGV0ZSBuZXh0W3Nsb3RdO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9KSxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IHsgcG9ydGFsVGFyZ2V0cywgc2xvdEhvc3RzLCBzbG90SG9zdFJlZnMsIGZsb2F0SG9zdFJlZiB9ID1cbiAgICB1c2VGbG9hdGFibGVQb3J0YWxUYXJnZXRzKHtcbiAgICAgIHNsb3RzOiBQQU5FTF9PUkRFUixcbiAgICAgIGZsb2F0YWJsZVNsb3Q6IFNsb3QucmlnaHRQYW5lbCxcbiAgICAgIGlzRmxvYXRpbmc6IGlzUmlnaHRQYW5lbEZsb2F0aW5nLFxuICAgIH0pO1xuXG4gIHVzZUdsb2JhbENzc1ZhcmlhYmxlcyhzbG90SG9zdHMpO1xuXG4gIC8vIFBhbmVscyB0aGF0IGV4aXN0IGluIHRoZSBsYXlvdXQsIHJlZ2FyZGxlc3Mgb2YgdmlzaWJpbGl0eS4gRHJpdmVzIHRoZVxuICAvLyBzb2xvLXZzLXJlc2l6YWJsZSBkZWNpc2lvbiBiZWxvdyAtIGtleWVkIG9uIERFQ0xBUkVEIChub3Qgc2hvd24pIHNvIHRoYXRcbiAgLy8gc2hvd2luZy9oaWRpbmcgYSBwYW5lbCBuZXZlciBmbGlwcyB0aGUgbW9kZS5cbiAgY29uc3QgZGVjbGFyZWRTbG90cyA9IFBBTkVMX09SREVSLmZpbHRlcigoc2xvdCkgPT4gZGVjbGFyZWRbc2xvdF0pO1xuXG4gIC8vIFNvbG8gbW9kZTogYSBzaW5nbGUgcGFuZWwgaXMgZGVjbGFyZWQgKGUuZy4ganVzdCBgQ29udGVudGAsIHdpdGggbm9cbiAgLy8gUmlnaHRQYW5lbC9MZWZ0UGFuZWwvU3BsaXQgaW4gdGhlIHRyZWUpIC0gbm90aGluZyB0byByZXNpemUgYWdhaW5zdCwgc28gaG9zdFxuICAvLyBpdCBpbiBhIHBsYWluIGRpdiBhbmQgc2tpcCByZWFjdC1yZXNpemFibGUtcGFuZWxzIGVudGlyZWx5LiBCZWNhdXNlIHRoZVxuICAvLyBjaGVjayBpcyBvbiBERUNMQVJFRCBwYW5lbHMsIHRvZ2dsaW5nIGEgKmRlY2xhcmVkKiBwYW5lbCdzIHZpc2liaWxpdHkga2VlcHNcbiAgLy8gdGhlIG1vZGUgc3RhYmxlLCBzbyBgQ29udGVudGAgaXMgbmV2ZXIgcmVtb3VudGVkIGJ5IGEgc2hvdy9oaWRlLiBUaGUgbW9kZVxuICAvLyBvbmx5IGZsaXBzIHdoZW4gYSBwYW5lbCBtYXJrZXIgaXMgYWRkZWQgdG8gLyByZW1vdmVkIGZyb20gdGhlIHRyZWUgKGFcbiAgLy8gc3RydWN0dXJhbCBjaGFuZ2UpLCB3aGVyZSBhIG9uZS10aW1lIHJlbW91bnQgaXMgYWNjZXB0YWJsZS5cbiAgY29uc3QgaXNTb2xvID0gZGVjbGFyZWRTbG90cy5sZW5ndGggPD0gMTtcbiAgY29uc3Qgc29sb1Nsb3QgPSBkZWNsYXJlZFNsb3RzWzBdO1xuXG4gIC8vIGNvbnRlbnQgZmxleGVzIChubyBmaXhlZCBzaXplKTsgb3RoZXJzIHVzZSB0aGUgZGVjbGFyZWQgZGVmYXVsdCwgZmFsbGluZ1xuICAvLyBiYWNrIHRvIHRoZSBwZXJzaXN0ZWQvY29uZmlnIHNpemUuXG4gIGNvbnN0IGRlZmF1bHRTaXplRm9yID0gKHNsb3Q6IFNsb3RLZXkpOiBTaXplIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoc2xvdCA9PT0gU2xvdC5jb250ZW50KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBkZWNsYXJlZFtzbG90XT8uZGVmYXVsdFNpemUgPz8gbGF5b3V0U3RhdGVbc2xvdF0uc2l6ZTtcbiAgfTtcblxuICAvLyBPbmx5IHRoZSBwYW5lbHMgdGhhdCBhcmUgZGVjbGFyZWQgQU5EIChjdXJyZW50bHkgc2hvd24gT1IgbWlkLWV4aXQpLiBBXG4gIC8vIGhpZGRlbi1idXQtcHJlc2VudCBzbG90IGxpbmdlcnMgc28gaXRzIGNsb3NlIGFuaW1hdGlvbiBjYW4gcGxheTsgb3RoZXJ3aXNlXG4gIC8vIGNsb3NlZCBwYW5lbHMgcmVzZXJ2ZSBubyBzcGFjZS5cbiAgY29uc3QgcGFuZWxJdGVtczogUGFuZWxJdGVtW10gPSBQQU5FTF9PUkRFUi5maWx0ZXIoXG4gICAgKHNsb3QpID0+IGRlY2xhcmVkW3Nsb3RdICYmIChpc1Nob3duKHNsb3QpIHx8IHByZXNlbnRbc2xvdF0pXG4gICkubWFwKChzbG90KSA9PiAoe1xuICAgIGlkOiBzbG90LFxuICAgIGRlZmF1bHRTaXplOiBkZWZhdWx0U2l6ZUZvcihzbG90KSxcbiAgICBtaW5TaXplOiBkZWNsYXJlZFtzbG90XT8ubWluU2l6ZSA/PyBsYXlvdXRTdGF0ZVtzbG90XS5taW5TaXplLFxuICAgIG1heFNpemU6IGRlY2xhcmVkW3Nsb3RdPy5tYXhTaXplID8/IGxheW91dFN0YXRlW3Nsb3RdLm1heFNpemUsXG4gICAgY29sbGFwc2libGU6IHNsb3QgIT09IFNsb3QuY29udGVudCAmJiAoZGVjbGFyZWRbc2xvdF0/LmNvbGxhcHNpYmxlID8/IHRydWUpLFxuICAgIHJlc2l6YWJsZTpcbiAgICAgIGRlY2xhcmVkW3Nsb3RdPy5yZXNpemFibGUgPz8gcmVzaXphYmxlRnJvbVN0YXRlKGxheW91dFN0YXRlW3Nsb3RdKSxcbiAgfSkpO1xuXG4gIC8vIFNvbG8gbW9kZSBob3N0cyB0aGUgbG9uZSBwYW5lbCBpbiBhIHBsYWluIGRpdiwgbm8gcmVzaXphYmxlIEdyb3VwLiBBIGhpZGRlblxuICAvLyBsb25lIHBhbmVsIHJlbmRlcnMgbm90aGluZyAoQ29udGVudCBpcyBhbHdheXMgc2hvd24pLlxuICBjb25zdCBzb2xvSG9zdCA9XG4gICAgc29sb1Nsb3QgJiYgaXNTaG93bihzb2xvU2xvdCkgPyAoXG4gICAgICA8U3R5bGVkU29sb0hvc3QgcmVmPXtzbG90SG9zdFJlZnNbc29sb1Nsb3RdfSAvPlxuICAgICkgOiBudWxsO1xuXG4gIC8vIFRoZSByZXNpemFibGUgR3JvdXAuIGBrZXlgID0gdGhlIHBlcnNpc3RlbmNlIG5hbWVzcGFjZTogcmVhY3QtcmVzaXphYmxlLXBhbmVsc1xuICAvLyByZWFkcyBzdG9yZWQgc2l6ZXMgb25seSBvbiBtb3VudCwgc28gcmVtb3VudCB3aGVuIHRoZSBrZXkgY2hhbmdlcyB0byBsb2FkXG4gIC8vIHRoYXQgaW5zdGFuY2UncyBzaXplcyAocGVyLXJvdXRlIHNpemUgbWVtb3J5KS4gVGhlIGtleSBuZXZlciBjaGFuZ2VzIG9uXG4gIC8vIHBhbmVsIG9wZW4vY2xvc2UsIHNvIG5vcm1hbCB0b2dnbGluZyBzdGF5cyByZW1vdW50LWZyZWUuXG4gIGNvbnN0IHBhbmVsR3JvdXAgPVxuICAgIHBhbmVsSXRlbXMubGVuZ3RoID4gMCA/IChcbiAgICAgIDxQYW5lbFxuICAgICAgICBrZXk9e3Jlc29sdmVkS2V5fVxuICAgICAgICBwYW5lbHM9e3BhbmVsSXRlbXN9XG4gICAgICAgIHBlcnNpc3RlbmNlS2V5PXtyZXNvbHZlZEtleX1cbiAgICAgICAgc3RvcmFnZT17cmVzb2x2ZWRTdG9yYWdlfVxuICAgICAgICBob3N0Rm9yPXsoaWQpID0+IHNsb3RIb3N0UmVmc1tpZCBhcyBTbG90S2V5XX1cbiAgICAgICAgb25SZXNpemU9eyhpZCwgc2l6ZSkgPT4gcGFuZWxDYWxsYmFja3NbaWQgYXMgU2xvdEtleV0ucmVzaXplKHNpemUpfVxuICAgICAgICBvbkNvbGxhcHNlPXsoaWQpID0+IHBhbmVsQ2FsbGJhY2tzW2lkIGFzIFNsb3RLZXldLmhpZGUoKX1cbiAgICAgICAgcGFuZWxIYW5kbGVGb3I9e3BhbmVsUmVmQ2FsbGJhY2tzLmhhbmRsZUZvcn1cbiAgICAgICAgcGFuZWxFbGVtZW50Rm9yPXtwYW5lbFJlZkNhbGxiYWNrcy5lbGVtZW50Rm9yfVxuICAgICAgICBzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrPXtzaG91bGRTdXBwcmVzc0xheW91dENhbGxiYWNrfVxuICAgICAgLz5cbiAgICApIDogbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbFJlZ2lzdHJ5Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17cmVnaXN0cnl9PlxuICAgICAgPFBhbmVsRGVjbGFyYXRpb25zQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZGVjbGFyZWR9PlxuICAgICAgICA8UGFuZWxQcmVzZW5jZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ByZXNlbmNlfT5cbiAgICAgICAgICA8UGFuZWxBbmltYXRpb25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXthbmltYXRpb25Db250cm9sfT5cbiAgICAgICAgICAgIDxMYXlvdXRQb3J0YWxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwb3J0YWxUYXJnZXRzfT5cbiAgICAgICAgICAgICAgPExheW91dEZsb2F0RHJhZ1Byb3ZpZGVyPlxuICAgICAgICAgICAgICAgIDxNb2JpbGVTcGxpdFN0YWNrQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bW9iaWxlU3BsaXRTdGFja30+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTGF5b3V0IGRhdGEtZHMtaWQ9XCJMYXlvdXRcIj5cbiAgICAgICAgICAgICAgICAgICAge2lzU29sbyA/IHNvbG9Ib3N0IDogcGFuZWxHcm91cH1cbiAgICAgICAgICAgICAgICAgICAge2lzUmlnaHRQYW5lbEZsb2F0aW5nICYmXG4gICAgICAgICAgICAgICAgICAgICAgbGF5b3V0U3RhdGVbU2xvdC5yaWdodFBhbmVsXS52aXNpYmxlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMYXlvdXRGbG9hdCBob3N0UmVmPXtmbG9hdEhvc3RSZWZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICB7c2hvd01vYmlsZVNwbGl0U3RhY2sgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRNb2JpbGVTcGxpdFN0YWNrSG9zdFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtzZXRNb2JpbGVTcGxpdFN0YWNrSG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRMYXlvdXQ+XG4gICAgICAgICAgICAgICAgPC9Nb2JpbGVTcGxpdFN0YWNrQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9MYXlvdXRGbG9hdERyYWdQcm92aWRlcj5cbiAgICAgICAgICAgIDwvTGF5b3V0UG9ydGFsQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICA8L1BhbmVsQW5pbWF0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9QYW5lbFByZXNlbmNlQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvUGFuZWxEZWNsYXJhdGlvbnNDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvUGFuZWxSZWdpc3RyeUNvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiBQdWJsaWMgTGF5b3V0IC0gdGhlIHJlc2l6YWJsZSBwYW5lbCByb3cgKyBjb21wb3VuZCBwYXJ0cyBhcyBzdGF0aWNzICAgICAgICAgKi9cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbnR5cGUgTGF5b3V0Q29tcG9uZW50ID0gdHlwZW9mIExheW91dEJhc2UgJiB7XG4gIFByb3ZpZGVyOiB0eXBlb2YgTGF5b3V0UHJvdmlkZXI7XG4gIExlZnRQYW5lbDogdHlwZW9mIExlZnRQYW5lbDtcbiAgTGVmdFBhbmVsSGVhZGVyOiB0eXBlb2YgTGVmdFBhbmVsSGVhZGVyO1xuICBMZWZ0UGFuZWxGb290ZXI6IHR5cGVvZiBMZWZ0UGFuZWxGb290ZXI7XG4gIFJpZ2h0UGFuZWw6IHR5cGVvZiBSaWdodFBhbmVsO1xuICBSaWdodFBhbmVsSGVhZGVyOiB0eXBlb2YgUmlnaHRQYW5lbEhlYWRlcjtcbiAgUmlnaHRQYW5lbEZvb3RlcjogdHlwZW9mIFJpZ2h0UGFuZWxGb290ZXI7XG4gIENvbnRlbnQ6IHR5cGVvZiBDb250ZW50O1xuICBTcGxpdDogdHlwZW9mIFNwbGl0O1xuICBTcGxpdEhlYWRlcjogdHlwZW9mIFNwbGl0SGVhZGVyO1xuICBTcGxpdEZvb3RlcjogdHlwZW9mIFNwbGl0Rm9vdGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IExheW91dCA9IExheW91dEJhc2UgYXMgTGF5b3V0Q29tcG9uZW50O1xuXG5MYXlvdXQuUHJvdmlkZXIgPSBMYXlvdXRQcm92aWRlcjtcbkxheW91dC5MZWZ0UGFuZWwgPSBMZWZ0UGFuZWw7XG5MYXlvdXQuTGVmdFBhbmVsSGVhZGVyID0gTGVmdFBhbmVsSGVhZGVyO1xuTGF5b3V0LkxlZnRQYW5lbEZvb3RlciA9IExlZnRQYW5lbEZvb3RlcjtcbkxheW91dC5SaWdodFBhbmVsID0gUmlnaHRQYW5lbDtcbkxheW91dC5SaWdodFBhbmVsSGVhZGVyID0gUmlnaHRQYW5lbEhlYWRlcjtcbkxheW91dC5SaWdodFBhbmVsRm9vdGVyID0gUmlnaHRQYW5lbEZvb3RlcjtcbkxheW91dC5Db250ZW50ID0gQ29udGVudDtcbkxheW91dC5TcGxpdCA9IFNwbGl0O1xuTGF5b3V0LlNwbGl0SGVhZGVyID0gU3BsaXRIZWFkZXI7XG5MYXlvdXQuU3BsaXRGb290ZXIgPSBTcGxpdEZvb3RlcjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2SG1DIn0= */"),Layout=function({children,persistenceKey,storage,rules=_rules.DEFAULT_LAYOUT_RULES,additionalRulesData}){let[declared,setDeclared]=(0,_react.useState)({}),layout=(0,_useLayout.useLayout)(),{state:layoutState,...panelCallbacks}=layout;(0,_useLayoutRules.useLayoutRules)({layout,declared,rules,additionalData:additionalRulesData});let persistence=(0,_context.useLayoutPersistence)(),resolvedKey=persistenceKey??persistence.persistenceKey,resolvedStorage=storage??persistence.storage,{isMobile}=(0,_useBreakpoints.useBreakpoints)(),showMobileSplitStack=(0,_useMobileSplitView.useMobileSplitViewEnabled)(),[mobileSplitStackHost,setMobileSplitStackHost]=(0,_react.useState)(null),[splitCount,setSplitCount]=(0,_react.useState)(0),registerSplit=(0,_react.useCallback)(()=>(setSplitCount(count=>count+1),()=>setSplitCount(count=>count-1)),[]),mobileSplitStack=(0,_react.useMemo)(()=>({host:mobileSplitStackHost,isSplitPresent:splitCount>0,registerSplit}),[mobileSplitStackHost,splitCount,registerSplit]),panelsEnabled=(0,_context.useLayoutPanelsEnabled)(),rightPanelVariant=layoutState[_constants.Slot.rightPanel].variant??declared[_constants.Slot.rightPanel]?.variant??"sidebar",isRightPanelFloating=!0===panelsEnabled&&!isMobile&&"float"===rightPanelVariant,isShown=slot=>layoutState[slot].visible&&!(slot===_constants.Slot.rightPanel&&(isRightPanelFloating||isMobile)),[present,setPresent]=(0,_react.useState)({}),presence=(0,_react.useMemo)(()=>({setPresent:(slot,isPresent)=>setPresent(prev=>prev[slot]===isPresent?prev:{...prev,[slot]:isPresent})}),[]),panelHandles=(0,_react.useRef)({}),panelElements=(0,_react.useRef)({}),resizeSuppressed=(0,_react.useRef)({}),animationControl=(0,_react.useMemo)(()=>({setHandle:(slot,handle)=>{panelHandles.current[slot]=handle},getHandle:slot=>panelHandles.current[slot]??null,setElement:(slot,element)=>{panelElements.current[slot]=element},getElement:slot=>panelElements.current[slot]??null,setResizeSuppressed:(slot,suppressed)=>{resizeSuppressed.current[slot]=suppressed}}),[]),panelRefCallbacks=(0,_react.useMemo)(()=>{let handleCallbacks=new Map,elementCallbacks=new Map;return{handleFor:id=>{let callback=handleCallbacks.get(id);return callback||(callback=handle=>animationControl.setHandle(id,handle),handleCallbacks.set(id,callback)),callback},elementFor:id=>{let callback=elementCallbacks.get(id);return callback||(callback=element=>animationControl.setElement(id,element),elementCallbacks.set(id,callback)),callback}}},[animationControl]),shouldSuppressLayoutCallback=(0,_react.useCallback)(()=>Object.values(resizeSuppressed.current).some(Boolean),[]),registry=(0,_react.useMemo)(()=>({register:(slot,reg)=>setDeclared(prev=>({...prev,[slot]:reg})),unregister:slot=>setDeclared(prev=>{if(!(slot in prev))return prev;let next={...prev};return delete next[slot],next})}),[]),{portalTargets,slotHosts,slotHostRefs,floatHostRef}=(0,_useFloatablePortalTargets.useFloatablePortalTargets)({slots:_constants.PANEL_ORDER,floatableSlot:_constants.Slot.rightPanel,isFloating:isRightPanelFloating});useGlobalCssVariables(slotHosts);let declaredSlots=_constants.PANEL_ORDER.filter(slot=>declared[slot]),isSolo=declaredSlots.length<=1,soloSlot=declaredSlots[0],defaultSizeFor=slot=>{if(slot!==_constants.Slot.content)return declared[slot]?.defaultSize??layoutState[slot].size},panelItems=_constants.PANEL_ORDER.filter(slot=>declared[slot]&&(isShown(slot)||present[slot])).map(slot=>({id:slot,defaultSize:defaultSizeFor(slot),minSize:declared[slot]?.minSize??layoutState[slot].minSize,maxSize:declared[slot]?.maxSize??layoutState[slot].maxSize,collapsible:slot!==_constants.Slot.content&&(declared[slot]?.collapsible??!0),resizable:declared[slot]?.resizable??resizableFromState(layoutState[slot])})),soloHost=soloSlot&&isShown(soloSlot)?_react.default.createElement(StyledSoloHost,{ref:slotHostRefs[soloSlot]}):null,panelGroup=panelItems.length>0?_react.default.createElement(_Panel.Panel,{key:resolvedKey,panels:panelItems,persistenceKey:resolvedKey,storage:resolvedStorage,hostFor:id=>slotHostRefs[id],onResize:(id,size)=>panelCallbacks[id].resize(size),onCollapse:id=>panelCallbacks[id].hide(),panelHandleFor:panelRefCallbacks.handleFor,panelElementFor:panelRefCallbacks.elementFor,shouldSuppressLayoutCallback:shouldSuppressLayoutCallback}):null;return _react.default.createElement(_registry.PanelRegistryContext.Provider,{value:registry},_react.default.createElement(_registry.PanelDeclarationsContext.Provider,{value:declared},_react.default.createElement(_registry.PanelPresenceContext.Provider,{value:presence},_react.default.createElement(_registry.PanelAnimationContext.Provider,{value:animationControl},_react.default.createElement(_registry.LayoutPortalContext.Provider,{value:portalTargets},_react.default.createElement(_LayoutFloatDragProvider.LayoutFloatDragProvider,null,_react.default.createElement(_useMobileSplitStack.MobileSplitStackContext.Provider,{value:mobileSplitStack},_react.default.createElement(StyledLayout,{"data-ds-id":"Layout"},isSolo?soloHost:panelGroup,isRightPanelFloating&&layoutState[_constants.Slot.rightPanel].visible&&_react.default.createElement(_LayoutFloat.LayoutFloat,{hostRef:floatHostRef}),children,showMobileSplitStack&&_react.default.createElement(StyledMobileSplitStackHost,{ref:setMobileSplitStackHost})))))))))};Layout.Provider=_LayoutProvider.LayoutProvider,Layout.LeftPanel=_LeftPanel.LeftPanel,Layout.LeftPanelHeader=_LeftPanelHeader.LeftPanelHeader,Layout.LeftPanelFooter=_LeftPanelFooter.LeftPanelFooter,Layout.RightPanel=_RightPanel.RightPanel,Layout.RightPanelHeader=_RightPanelHeader.RightPanelHeader,Layout.RightPanelFooter=_RightPanelFooter.RightPanelFooter,Layout.Content=_Content.Content,Layout.Split=_Split.Split,Layout.SplitHeader=_SplitHeader.SplitHeader,Layout.SplitFooter=_SplitFooter.SplitFooter;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"LeftPanel",{enumerable:!0,get:function(){return LeftPanel}});const _react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_default")._(require("react")),_useBreakpoints=require("../../../shared/useBreakpoints"),_constants=require("../-constants"),_registry=require("../registry"),_useLayout=require("../useLayout"),_context=require("../context"),_LeftPanelDocked=require("./LeftPanelDocked"),_LeftPanelDrawer=require("./LeftPanelDrawer"),LeftPanel=({children,defaultSize,minSize,maxSize,collapsible=!0,resizable,onVisibleChange,"aria-label":ariaLabel})=>{let{isMobile}=(0,_useBreakpoints.useBreakpoints)(),{isVisible,hide}=(0,_useLayout.useLayout)()[_constants.Slot.leftPanel],canRender=(0,_context.useCanRenderPanel)();return((0,_registry.useVisibleChange)(isVisible,onVisibleChange),canRender)?isMobile?_react.default.createElement(_LeftPanelDrawer.LeftPanelDrawer,{isVisible:isVisible,hide:hide,"aria-label":ariaLabel},children):_react.default.createElement(_LeftPanelDocked.LeftPanelDocked,{"aria-label":ariaLabel,defaultSize:defaultSize,minSize:minSize,maxSize:maxSize,collapsible:collapsible,resizable:resizable},children):null};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"LeftPanel",{enumerable:!0,get:function(){return LeftPanel}});const _react=/*#__PURE__*/require("@swc/helpers/_/_interop_require_default")._(require("react")),_constants=require("../-constants"),_registry=require("../registry"),_useLayout=require("../useLayout"),_context=require("../context"),_LeftPanelDocked=require("./LeftPanelDocked"),_LeftPanelDrawer=require("./LeftPanelDrawer"),LeftPanel=({children,defaultSize,minSize,maxSize,collapsible=!0,resizable,onVisibleChange,"aria-label":ariaLabel})=>{let{isVisible,hide,state}=(0,_useLayout.useLayout)()[_constants.Slot.leftPanel],canRender=(0,_context.useCanRenderPanel)();(0,_registry.useVisibleChange)(isVisible,onVisibleChange);let isDrawer="drawer"===state.variant;return canRender?isDrawer?_react.default.createElement(_LeftPanelDrawer.LeftPanelDrawer,{isVisible:isVisible,hide:hide,"aria-label":ariaLabel},children):_react.default.createElement(_LeftPanelDocked.LeftPanelDocked,{"aria-label":ariaLabel,defaultSize:defaultSize,minSize:minSize,maxSize:maxSize,collapsible:collapsible,resizable:resizable},children):null};
@@ -3,6 +3,7 @@ export { Layout } from "./Layout";
3
3
  export { LayoutProvider } from "./LayoutProvider";
4
4
  export { useLayoutVar } from "./LayoutCssVars";
5
5
  export { useLayout } from "./useLayout";
6
+ export { DEFAULT_LAYOUT_RULES } from "./rules";
6
7
  export { useMobileSplitView, type MobileSplitViewValue, } from "./Split/MobileSplitView/useMobileSplitView";
7
8
  export { useAutoScrollToBottom } from "./useAutoScrollToBottom";
8
9
  export { createLayoutStore } from "./store";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get Layout(){return _Layout.Layout},get LayoutProvider(){return _LayoutProvider.LayoutProvider},get PANEL_WIDTH_VAR(){return _constants.PANEL_WIDTH_VAR},get SUBNAV_OFFSET_VAR(){return _constants.SUBNAV_OFFSET_VAR},get createInitialState(){return _reducer.createInitialState},get createLayoutStore(){return _store.createLayoutStore},get layoutReducer(){return _reducer.layoutReducer},get useAutoScrollToBottom(){return _useAutoScrollToBottom.useAutoScrollToBottom},get useLayout(){return _useLayout.useLayout},get useLayoutVar(){return _LayoutCssVars.useLayoutVar},get useMobileSplitView(){return _useMobileSplitView.useMobileSplitView}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});const _export_star=require("@swc/helpers/_/_export_star"),_constants=require("./-constants"),_Layout=require("./Layout"),_LayoutProvider=require("./LayoutProvider"),_LayoutCssVars=require("./LayoutCssVars"),_useLayout=require("./useLayout"),_useMobileSplitView=require("./Split/MobileSplitView/useMobileSplitView"),_useAutoScrollToBottom=require("./useAutoScrollToBottom"),_store=require("./store"),_reducer=require("./reducer");_export_star._(require("./-types"),exports);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get DEFAULT_LAYOUT_RULES(){return _rules.DEFAULT_LAYOUT_RULES},get Layout(){return _Layout.Layout},get LayoutProvider(){return _LayoutProvider.LayoutProvider},get PANEL_WIDTH_VAR(){return _constants.PANEL_WIDTH_VAR},get SUBNAV_OFFSET_VAR(){return _constants.SUBNAV_OFFSET_VAR},get createInitialState(){return _reducer.createInitialState},get createLayoutStore(){return _store.createLayoutStore},get layoutReducer(){return _reducer.layoutReducer},get useAutoScrollToBottom(){return _useAutoScrollToBottom.useAutoScrollToBottom},get useLayout(){return _useLayout.useLayout},get useLayoutVar(){return _LayoutCssVars.useLayoutVar},get useMobileSplitView(){return _useMobileSplitView.useMobileSplitView}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});const _export_star=require("@swc/helpers/_/_export_star"),_constants=require("./-constants"),_Layout=require("./Layout"),_LayoutProvider=require("./LayoutProvider"),_LayoutCssVars=require("./LayoutCssVars"),_useLayout=require("./useLayout"),_rules=require("./rules"),_useMobileSplitView=require("./Split/MobileSplitView/useMobileSplitView"),_useAutoScrollToBottom=require("./useAutoScrollToBottom"),_store=require("./store"),_reducer=require("./reducer");_export_star._(require("./-types"),exports);
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get createInitialState(){return createInitialState},get layoutReducer(){return layoutReducer}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});function sidePanelFields(config={}){return{kind:"sidePanel",visible:config.defaultVisible??!0,collapsible:config.collapsible??!0,resizable:config.resizable??!0,size:config.defaultSize,minSize:config.minSize,maxSize:config.maxSize}}function panelState(config={}){return{kind:"panel",visible:config.defaultVisible??!0,size:config.defaultSize,minSize:config.minSize,maxSize:config.maxSize}}function createInitialState(config={}){return{leftPanel:sidePanelFields({resizable:!1,...config.leftPanel}),rightPanel:{...sidePanelFields({defaultVisible:!1,...config.rightPanel}),variant:config.rightPanel?.variant},content:panelState(config.content),splitview:panelState({defaultVisible:!1,...config.splitview})}}const layoutReducer=(state,action,initial)=>{switch(action.type){case"setVisible":{let slot=state[action.slot];if(slot.visible===action.visible)return state;return{...state,[action.slot]:{...slot,visible:action.visible}}}case"setVariant":{let panel=state[action.panel];if(panel.variant===action.variant)return state;return{...state,[action.panel]:{...panel,variant:action.variant}}}case"resize":{let slot=state[action.slot];if(slot.size===action.size)return state;return{...state,[action.slot]:{...slot,size:action.size}}}case"reset":if(!initial)return state;if(!action.slot)return initial;if(state[action.slot]===initial[action.slot])return state;return{...state,[action.slot]:initial[action.slot]};default:return state}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get createInitialState(){return createInitialState},get layoutReducer(){return layoutReducer}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});function sidePanelFields(config={}){return{kind:"sidePanel",visible:config.defaultVisible??!0,collapsible:config.collapsible??!0,resizable:config.resizable??!0,size:config.defaultSize,minSize:config.minSize,maxSize:config.maxSize}}function panelState(config={}){return{kind:"panel",visible:config.defaultVisible??!0,size:config.defaultSize,minSize:config.minSize,maxSize:config.maxSize}}function createInitialState(config={}){return{leftPanel:{...sidePanelFields({resizable:!1,...config.leftPanel}),variant:config.leftPanel?.variant},rightPanel:{...sidePanelFields({defaultVisible:!1,...config.rightPanel}),variant:config.rightPanel?.variant},content:panelState(config.content),splitview:panelState({defaultVisible:!1,...config.splitview})}}const layoutReducer=(state,action,initial)=>{switch(action.type){case"setVisible":{let slot=state[action.slot];if(slot.visible===action.visible)return state;return{...state,[action.slot]:{...slot,visible:action.visible}}}case"setVariant":{let panel=state[action.panel];if(panel.variant===action.variant)return state;return{...state,[action.panel]:{...panel,variant:action.variant}}}case"resize":{let slot=state[action.slot];if(slot.size===action.size)return state;return{...state,[action.slot]:{...slot,size:action.size}}}case"reset":if(!initial)return state;if(!action.slot)return initial;if(state[action.slot]===initial[action.slot])return state;return{...state,[action.slot]:initial[action.slot]};default:return state}};
@@ -0,0 +1,2 @@
1
+ import type { LayoutRulesConfig } from "./-types";
2
+ export declare const DEFAULT_LAYOUT_RULES: LayoutRulesConfig;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DEFAULT_LAYOUT_RULES",{enumerable:!0,get:function(){return DEFAULT_LAYOUT_RULES}});const DEFAULT_LAYOUT_RULES={maxDockedPanels:{xs:1,m:2,l:3},rightPanel:{priority:1,condition:({isLowPrio,isMobile,layout})=>{isLowPrio&&!isMobile&&layout.rightPanel.setVariant("float")}},splitview:{priority:2,condition:({isLowPrio,isMobile,layout})=>{isLowPrio&&!isMobile&&layout.splitview.hide()}},leftPanel:{priority:3,condition:({isLowPrio,isMobile,layout})=>{let variant=isMobile||isLowPrio?"drawer":"sidebar";variant!==layout.leftPanel.state.variant&&(layout.leftPanel.setVariant(variant),"drawer"!==variant||isMobile||layout.leftPanel.hide())}}};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"useLayout",{enumerable:!0,get:function(){return useLayout}});const _react=require("react"),_context=require("./context"),_registry=require("./registry"),selectAll=state=>state;function panelHandleActions({slot,visible,dispatch}){return{isVisible:visible,show:()=>dispatch({type:"setVisible",slot,visible:!0}),hide:()=>dispatch({type:"setVisible",slot,visible:!1}),resize:size=>dispatch({type:"resize",slot,size}),reset:()=>dispatch({type:"reset",slot})}}function useLayout(){let store=(0,_context.useLayoutStore)(),state=(0,_context.useLayoutSelector)(selectAll),declared=(0,_react.useContext)(_registry.PanelDeclarationsContext),{dispatch}=store;return{state,leftPanel:{state:state.leftPanel,...panelHandleActions({slot:"leftPanel",visible:state.leftPanel.visible,dispatch})},rightPanel:{state:{...state.rightPanel,variant:state.rightPanel.variant??declared.rightPanel?.variant??"sidebar"},setVariant:variant=>dispatch({type:"setVariant",panel:"rightPanel",variant}),...panelHandleActions({slot:"rightPanel",visible:state.rightPanel.visible,dispatch})},content:{state:state.content,...panelHandleActions({slot:"content",visible:state.content.visible,dispatch})},splitview:{state:state.splitview,...panelHandleActions({slot:"splitview",visible:state.splitview.visible,dispatch})}}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"useLayout",{enumerable:!0,get:function(){return useLayout}});const _react=require("react"),_context=require("./context"),_registry=require("./registry"),selectAll=state=>state;function panelHandleActions({slot,visible,dispatch}){return{isVisible:visible,show:()=>dispatch({type:"setVisible",slot,visible:!0}),hide:()=>dispatch({type:"setVisible",slot,visible:!1}),resize:size=>dispatch({type:"resize",slot,size}),reset:()=>dispatch({type:"reset",slot})}}function useLayout(){let store=(0,_context.useLayoutStore)(),state=(0,_context.useLayoutSelector)(selectAll),declared=(0,_react.useContext)(_registry.PanelDeclarationsContext),{dispatch}=store;return{state,leftPanel:{state:{...state.leftPanel,variant:state.leftPanel.variant??"sidebar"},setVariant:variant=>dispatch({type:"setVariant",panel:"leftPanel",variant}),...panelHandleActions({slot:"leftPanel",visible:state.leftPanel.visible,dispatch})},rightPanel:{state:{...state.rightPanel,variant:state.rightPanel.variant??declared.rightPanel?.variant??"sidebar"},setVariant:variant=>dispatch({type:"setVariant",panel:"rightPanel",variant}),...panelHandleActions({slot:"rightPanel",visible:state.rightPanel.visible,dispatch})},content:{state:state.content,...panelHandleActions({slot:"content",visible:state.content.visible,dispatch})},splitview:{state:state.splitview,...panelHandleActions({slot:"splitview",visible:state.splitview.visible,dispatch})}}}
@@ -0,0 +1,26 @@
1
+ import type { PanelDeclarations } from "./registry";
2
+ import type { LayoutRulesConfig, LayoutRulesData, LayoutValue } from "./-types";
3
+ type LayoutRulesOptions = {
4
+ /** Caller's live value - reused for state, handed to conditions, so the store
5
+ * is never subscribed twice. */
6
+ layout: LayoutValue;
7
+ /** Slots whose marker is mounted, from the Layout's panel registry. */
8
+ declared: PanelDeclarations;
9
+ /** `false` (or omitted) runs nothing. */
10
+ rules?: LayoutRulesConfig | false;
11
+ /** App context, spread into every condition. */
12
+ additionalData?: LayoutRulesData;
13
+ };
14
+ /**
15
+ * Applies the rules over the store: finds the panels past the docked budget,
16
+ * then lets each `condition` act through the ordinary `useLayout()` actions.
17
+ *
18
+ * Rendering is untouched - panels still pick their presentation from state and
19
+ * breakpoint.
20
+ *
21
+ * Conditions run for closed panels too, so a panel the budget cannot fit is
22
+ * already on its overlay presentation before it opens - it never mounts a docked
23
+ * column it would have to give straight back.
24
+ */
25
+ export declare function useLayoutRules({ layout, declared, rules, additionalData, }: LayoutRulesOptions): void;
26
+ export {};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"useLayoutRules",{enumerable:!0,get:function(){return useLayoutRules}});const _react=require("react"),_useBreakpoints=require("../../shared/useBreakpoints"),_constants=require("./-constants"),DEFAULT_PRIORITY={[_constants.Slot.rightPanel]:1,[_constants.Slot.splitview]:2,[_constants.Slot.leftPanel]:3},maxDockedFor=(maxDockedPanels,breakpoints)=>{let{xs,m=xs,l=m}=maxDockedPanels;return breakpoints.isMobile?xs:breakpoints.isTablet?m:l},isDockedPanel=({state,declared,slot})=>!!declared[slot]&&!!state[slot].visible&&(slot===_constants.Slot.rightPanel?"float"!==state.rightPanel.variant:slot!==_constants.Slot.leftPanel||"drawer"!==state.leftPanel.variant),resolveLowPrioSlots=({rules,state,declared,breakpoints})=>{let freeSlots=Math.max(0,maxDockedFor(rules.maxDockedPanels,breakpoints)-1),priorityFor=slot=>rules[slot]?.priority??DEFAULT_PRIORITY[slot],outranks=(slot,other)=>{let byPriority=priorityFor(slot)-priorityFor(other);return 0!==byPriority?byPriority<0:_constants.PANEL_ORDER.indexOf(slot)<_constants.PANEL_ORDER.indexOf(other)},countStrongerDocked=slot=>_constants.TOGGLABLE_SLOTS.filter(other=>other!==slot&&isDockedPanel({state,declared,slot:other})&&outranks(other,slot)).length;return _constants.TOGGLABLE_SLOTS.filter(slot=>countStrongerDocked(slot)>=freeSlots)};function useLayoutRules({layout,declared,rules,additionalData}){let layoutRef=(0,_react.useRef)(layout);layoutRef.current=layout;let{isMobile,isTablet,isDesktop}=(0,_useBreakpoints.useBreakpoints)(),{state}=layout;(0,_react.useEffect)(()=>{if(!rules)return;let lowPrioSlots=resolveLowPrioSlots({rules,state,declared,breakpoints:{isMobile,isTablet,isDesktop}});_constants.TOGGLABLE_SLOTS.forEach(slot=>{let condition=rules[slot]?.condition;condition&&condition({...additionalData,isLowPrio:lowPrioSlots.includes(slot),isMobile,isTablet,isDesktop,layout:layoutRef.current})})},[rules,additionalData,state,declared,isMobile,isTablet,isDesktop])}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get AMBOSS_DS_FLOAT_PORTAL(){return AMBOSS_DS_FLOAT_PORTAL},get AMBOSS_DS_PORTAL(){return AMBOSS_DS_PORTAL},get Portal(){return Portal},get usePortalChildZIndex(){return usePortalChildZIndex},get usePortalContainerElement(){return usePortalContainerElement}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=require("react"),_reactdom=/*#__PURE__*/_interop_require_default._(require("react-dom")),_react1=require("@emotion/react"),_useDocument=require("../../shared/useDocument"),_DialogContext=require("../Patterns/Dialog/DialogContext"),_PopoverContext=require("../Patterns/Popover/PopoverContext"),AMBOSS_DS_PORTAL="amboss-ds-portal",AMBOSS_DS_FLOAT_PORTAL="amboss-ds-float-portal";function usePortalChildZIndex(zIndex){let theme=(0,_react1.useTheme)();return(0,_react.useContext)(_DialogContext.DialogContext)?theme.variables.zIndex.modal+zIndex:zIndex}function usePortalContainerElement(portalContainer){let isWithinModal=(0,_react.useContext)(_DialogContext.DialogContext),{isWithinPopover,portalContainer:popoverContainer}=(0,_react.useContext)(_PopoverContext.PopoverContext),document=(0,_useDocument.useDocument)(),defaultContainer=(0,_react.useMemo)(()=>void 0===document?null:isWithinModal?document.querySelector(`.${AMBOSS_DS_PORTAL}`)||document.body:isWithinPopover&&popoverContainer||document.body,[isWithinModal,isWithinPopover,popoverContainer,document]);return portalContainer||defaultContainer}function Portal({children,portalContainer}){let container=usePortalContainerElement(portalContainer);return container&&_reactdom.default.createPortal(children,container)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var target=exports,all={get AMBOSS_DS_FLOAT_PORTAL(){return AMBOSS_DS_FLOAT_PORTAL},get AMBOSS_DS_PORTAL(){return AMBOSS_DS_PORTAL},get Portal(){return Portal},get usePortalChildZIndex(){return usePortalChildZIndex},get usePortalContainerElement(){return usePortalContainerElement}};for(var name in all)Object.defineProperty(target,name,{enumerable:!0,get:Object.getOwnPropertyDescriptor(all,name).get});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=require("react"),_reactdom=/*#__PURE__*/_interop_require_default._(require("react-dom")),_react1=require("@emotion/react"),_useDocument=require("../../shared/useDocument"),_DialogContext=require("../Patterns/Dialog/DialogContext"),_PopoverContext=require("../Patterns/Popover/PopoverContext"),AMBOSS_DS_PORTAL="amboss-ds-portal",AMBOSS_DS_FLOAT_PORTAL="amboss-ds-float-portal";function usePortalChildZIndex(zIndex){let theme=(0,_react1.useTheme)(),isWithinModal=(0,_react.useContext)(_DialogContext.DialogContext),{isWithinPopover}=(0,_react.useContext)(_PopoverContext.PopoverContext),base=0;return isWithinModal&&(base+=theme.variables.zIndex.modal),isWithinPopover&&(base+=theme.variables.zIndex.tooltip),base+zIndex}function usePortalContainerElement(portalContainer){let isWithinModal=(0,_react.useContext)(_DialogContext.DialogContext),{isWithinPopover,portalContainer:popoverContainer}=(0,_react.useContext)(_PopoverContext.PopoverContext),document=(0,_useDocument.useDocument)(),defaultContainer=(0,_react.useMemo)(()=>void 0===document?null:isWithinModal?document.querySelector(`.${AMBOSS_DS_PORTAL}`)||document.body:isWithinPopover&&popoverContainer||document.body,[isWithinModal,isWithinPopover,popoverContainer,document]);return portalContainer||defaultContainer}function Portal({children,portalContainer}){let container=usePortalContainerElement(portalContainer);return container&&_reactdom.default.createPortal(children,container)}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"PromptButton",{enumerable:!0,get:function(){return PromptButton}});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=/*#__PURE__*/_interop_require_default._(require("react")),_styled=/*#__PURE__*/_interop_require_default._(require("@emotion/styled")),_ispropvalid=/*#__PURE__*/_interop_require_default._(require("@emotion/is-prop-valid")),_Icon=require("../Icon/Icon"),_mixins=require("../../shared/mixins"),_Inline=require("../Inline/Inline"),_TextClamped=require("../Typography/TextClamped/TextClamped"),StyledPromptButton=(0,_styled.default)("button",{shouldForwardProp:prop=>(0,_ispropvalid.default)(prop),target:"e1g9rg4j0",label:"StyledPromptButton"})(({theme,disabled,leftIcon,variant})=>{let verticalPadding=theme.variables.size.spacing.xs;return{...(0,_mixins.getButtonAppearanceReset)(),borderRadius:theme.variables.size.borderRadius.full,fontFamily:theme.variables.fontFamily.lato,fontSize:theme.variables.size.font.s,lineHeight:theme.variables.size.lineHeight.xs,fontWeight:theme.variables.weight.bold,cursor:"pointer",userSelect:"none",color:theme.values.color.text.secondary.default,backgroundColor:theme.values.color.background.primary.default,border:`2px solid ${theme.values.color.border.secondary.default}`,padding:`${verticalPadding} ${theme.variables.size.spacing.m}`,...leftIcon&&{padding:`${verticalPadding} ${theme.variables.size.spacing.m} ${verticalPadding} ${theme.variables.size.spacing.s}`},..."standalone"===variant&&{color:theme.values.color.text.ai.default},...!disabled&&{"&:hover, &:active":{backgroundColor:theme.values.color.background.transparent.hover,borderColor:theme.values.color.border.secondary.hover}},...disabled&&{...(0,_mixins.getDisabledStyles)({theme})}}},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0QnV0dG9uL1Byb21wdEJ1dHRvbi50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL1Byb21wdEJ1dHRvbi9Qcm9tcHRCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IGlzUHJvcFZhbGlkIGZyb20gXCJAZW1vdGlvbi9pcy1wcm9wLXZhbGlkXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB0eXBlIHtcbiAgUG9seW1vcnBoaWNSZWYsXG4gIFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0QnV0dG9uQXBwZWFyYW5jZVJlc2V0LFxuICBnZXREaXNhYmxlZFN0eWxlcyxcbn0gZnJvbSBcIi4uLy4uL3NoYXJlZC9taXhpbnNcIjtcbmltcG9ydCB7IElubGluZSB9IGZyb20gXCIuLi9JbmxpbmUvSW5saW5lXCI7XG5pbXBvcnQgeyBUZXh0Q2xhbXBlZCB9IGZyb20gXCIuLi9UeXBvZ3JhcGh5L1RleHRDbGFtcGVkL1RleHRDbGFtcGVkXCI7XG5cbmV4cG9ydCB0eXBlIFByb21wdEJ1dHRvblByb3BzID0ge1xuICBsZWZ0SWNvbj86IEljb25OYW1lO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKiBJZ25vcmVkIHdoZW4gYGFzYCBpcyBub3QgXCJidXR0b25cIi4gKi9cbiAgdHlwZT86IFwic3VibWl0XCIgfCBcImJ1dHRvblwiIHwgXCJyZXNldFwiO1xuICB2YXJpYW50PzogXCJzdGFuZGFsb25lXCI7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xufTtcblxuY29uc3QgQk9SREVSX1dJRFRIID0gMjtcbmNvbnN0IFN0eWxlZFByb21wdEJ1dHRvbiA9IHN0eWxlZChcImJ1dHRvblwiLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiAocHJvcCkgPT4gaXNQcm9wVmFsaWQocHJvcCksXG59KTxQYXJ0aWFsPFByb21wdEJ1dHRvblByb3BzPj4oKHsgdGhlbWUsIGRpc2FibGVkLCBsZWZ0SWNvbiwgdmFyaWFudCB9KSA9PiB7XG4gIGNvbnN0IHZlcnRpY2FsUGFkZGluZyA9IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHM7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5nZXRCdXR0b25BcHBlYXJhbmNlUmVzZXQoKSxcblxuICAgIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLmZ1bGwsXG4gICAgZm9udEZhbWlseTogdGhlbWUudmFyaWFibGVzLmZvbnRGYW1pbHkubGF0byxcbiAgICBmb250U2l6ZTogdGhlbWUudmFyaWFibGVzLnNpemUuZm9udC5zLFxuICAgIGxpbmVIZWlnaHQ6IHRoZW1lLnZhcmlhYmxlcy5zaXplLmxpbmVIZWlnaHQueHMsXG4gICAgZm9udFdlaWdodDogdGhlbWUudmFyaWFibGVzLndlaWdodC5ib2xkLFxuICAgIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gICAgdXNlclNlbGVjdDogXCJub25lXCIsXG4gICAgY29sb3I6IHRoZW1lLnZhbHVlcy5jb2xvci50ZXh0LnNlY29uZGFyeS5kZWZhdWx0LFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQucHJpbWFyeS5kZWZhdWx0LFxuICAgIGJvcmRlcjogYCR7Qk9SREVSX1dJRFRIfXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5zZWNvbmRhcnkuZGVmYXVsdH1gLFxuICAgIHBhZGRpbmc6IGAke3ZlcnRpY2FsUGFkZGluZ30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLm19YCxcblxuICAgIC4uLihsZWZ0SWNvbiAmJiB7XG4gICAgICBwYWRkaW5nOiBgJHt2ZXJ0aWNhbFBhZGRpbmd9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5tfSAke3ZlcnRpY2FsUGFkZGluZ30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9YCxcbiAgICB9KSxcblxuICAgIC4uLih2YXJpYW50ID09PSBcInN0YW5kYWxvbmVcIiAmJiB7XG4gICAgICBjb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLnRleHQuYWkuZGVmYXVsdCxcbiAgICB9KSxcblxuICAgIC4uLighZGlzYWJsZWQgJiYge1xuICAgICAgXCImOmhvdmVyLCAmOmFjdGl2ZVwiOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQudHJhbnNwYXJlbnQuaG92ZXIsXG4gICAgICAgIGJvcmRlckNvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLnNlY29uZGFyeS5ob3ZlcixcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICAuLi4oZGlzYWJsZWQgJiYge1xuICAgICAgLi4uZ2V0RGlzYWJsZWRTdHlsZXMoeyB0aGVtZSB9KSxcbiAgICB9KSxcbiAgfTtcbn0pO1xuXG4vLyBJbmhlcml0IHRoZSBidXR0b24ncyBzdHlsZXMgZm9yIHRoZSBsYWJlbFxuY29uc3QgQ3VzdG9tVGV4dENsYW1wZWQgPSBzdHlsZWQoVGV4dENsYW1wZWQpKHtcbiAgZm9udFNpemU6IFwiaW5oZXJpdFwiLFxuICBsaW5lSGVpZ2h0OiBcImluaGVyaXRcIixcbiAgZm9udFdlaWdodDogXCJpbmhlcml0XCIsXG4gIGNvbG9yOiBcImluaGVyaXRcIixcbn0pO1xuXG50eXBlIFByb21wdEJ1dHRvbkNvbXBvbmVudCA9IDxDIGV4dGVuZHMgUmVhY3QuRWxlbWVudFR5cGUgPSBcImJ1dHRvblwiPihcbiAgcHJvcHM6IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPEMsIFByb21wdEJ1dHRvblByb3BzPlxuKSA9PiBSZWFjdC5SZWFjdE5vZGUgfCBudWxsO1xuXG5leHBvcnQgY29uc3QgUHJvbXB0QnV0dG9uOiBQcm9tcHRCdXR0b25Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKFxuICA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gICAge1xuICAgICAgYXMsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBsZWZ0SWNvbixcbiAgICAgIHR5cGUgPSBcImJ1dHRvblwiLFxuICAgICAgXCJkYXRhLWUyZS10ZXN0LWlkXCI6IGRhdGFFMmVUZXN0SWQsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWY8QywgUHJvbXB0QnV0dG9uUHJvcHM+LFxuICAgIHJlZj86IFBvbHltb3JwaGljUmVmPEM+XG4gICkgPT4gKFxuICAgIDxTdHlsZWRQcm9tcHRCdXR0b25cbiAgICAgIHJlZj17cmVmfVxuICAgICAgZGF0YS1lMmUtdGVzdC1pZD17ZGF0YUUyZVRlc3RJZH1cbiAgICAgIGRhdGEtZHMtaWQ9XCJQcm9tcHRCdXR0b25cIlxuICAgICAgYXM9e2FzfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgdHlwZT17YXMgJiYgYXMgIT09IFwiYnV0dG9uXCIgPyB1bmRlZmluZWQgOiB0eXBlfVxuICAgICAgbGVmdEljb249e2xlZnRJY29ufVxuICAgICAgdGFiSW5kZXg9ezB9IC8vIEZvciBTYWZhcmksIGJlY2F1c2UgYnV0dG9ucyBhcmUgbm90IGZvY3VzYWJsZSBieSBkZWZhdWx0IG9uIGl0XG4gICAgICB7Li4ucmVzdH1cbiAgICA+XG4gICAgICA8SW5saW5lIGFsaWduSXRlbXM9XCJjZW50ZXJcIiB2QWxpZ25JdGVtcz1cImNlbnRlclwiIHNwYWNlPVwieHhzXCIgbm9XcmFwPlxuICAgICAgICB7bGVmdEljb24gJiYgKFxuICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgbmFtZT17bGVmdEljb259XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD17bGVmdEljb259XG4gICAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtsZWZ0SWNvbn1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8Q3VzdG9tVGV4dENsYW1wZWQgYXM9XCJzcGFuXCI+e2NoaWxkcmVufTwvQ3VzdG9tVGV4dENsYW1wZWQ+XG4gICAgICA8L0lubGluZT5cbiAgICA8L1N0eWxlZFByb21wdEJ1dHRvbj5cbiAgKVxuKTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2QjJCIn0= */"),CustomTextClamped=(0,_styled.default)(_TextClamped.TextClamped,{target:"e1g9rg4j1",label:"CustomTextClamped"})({fontSize:"inherit",lineHeight:"inherit",fontWeight:"inherit",color:"inherit"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0QnV0dG9uL1Byb21wdEJ1dHRvbi50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL1Byb21wdEJ1dHRvbi9Qcm9tcHRCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IGlzUHJvcFZhbGlkIGZyb20gXCJAZW1vdGlvbi9pcy1wcm9wLXZhbGlkXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB0eXBlIHtcbiAgUG9seW1vcnBoaWNSZWYsXG4gIFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0QnV0dG9uQXBwZWFyYW5jZVJlc2V0LFxuICBnZXREaXNhYmxlZFN0eWxlcyxcbn0gZnJvbSBcIi4uLy4uL3NoYXJlZC9taXhpbnNcIjtcbmltcG9ydCB7IElubGluZSB9IGZyb20gXCIuLi9JbmxpbmUvSW5saW5lXCI7XG5pbXBvcnQgeyBUZXh0Q2xhbXBlZCB9IGZyb20gXCIuLi9UeXBvZ3JhcGh5L1RleHRDbGFtcGVkL1RleHRDbGFtcGVkXCI7XG5cbmV4cG9ydCB0eXBlIFByb21wdEJ1dHRvblByb3BzID0ge1xuICBsZWZ0SWNvbj86IEljb25OYW1lO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKiBJZ25vcmVkIHdoZW4gYGFzYCBpcyBub3QgXCJidXR0b25cIi4gKi9cbiAgdHlwZT86IFwic3VibWl0XCIgfCBcImJ1dHRvblwiIHwgXCJyZXNldFwiO1xuICB2YXJpYW50PzogXCJzdGFuZGFsb25lXCI7XG4gIFwiZGF0YS1lMmUtdGVzdC1pZFwiPzogc3RyaW5nO1xufTtcblxuY29uc3QgQk9SREVSX1dJRFRIID0gMjtcbmNvbnN0IFN0eWxlZFByb21wdEJ1dHRvbiA9IHN0eWxlZChcImJ1dHRvblwiLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiAocHJvcCkgPT4gaXNQcm9wVmFsaWQocHJvcCksXG59KTxQYXJ0aWFsPFByb21wdEJ1dHRvblByb3BzPj4oKHsgdGhlbWUsIGRpc2FibGVkLCBsZWZ0SWNvbiwgdmFyaWFudCB9KSA9PiB7XG4gIGNvbnN0IHZlcnRpY2FsUGFkZGluZyA9IHRoZW1lLnZhcmlhYmxlcy5zaXplLnNwYWNpbmcueHM7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5nZXRCdXR0b25BcHBlYXJhbmNlUmVzZXQoKSxcblxuICAgIGJvcmRlclJhZGl1czogdGhlbWUudmFyaWFibGVzLnNpemUuYm9yZGVyUmFkaXVzLmZ1bGwsXG4gICAgZm9udEZhbWlseTogdGhlbWUudmFyaWFibGVzLmZvbnRGYW1pbHkubGF0byxcbiAgICBmb250U2l6ZTogdGhlbWUudmFyaWFibGVzLnNpemUuZm9udC5zLFxuICAgIGxpbmVIZWlnaHQ6IHRoZW1lLnZhcmlhYmxlcy5zaXplLmxpbmVIZWlnaHQueHMsXG4gICAgZm9udFdlaWdodDogdGhlbWUudmFyaWFibGVzLndlaWdodC5ib2xkLFxuICAgIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gICAgdXNlclNlbGVjdDogXCJub25lXCIsXG4gICAgY29sb3I6IHRoZW1lLnZhbHVlcy5jb2xvci50ZXh0LnNlY29uZGFyeS5kZWZhdWx0LFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQucHJpbWFyeS5kZWZhdWx0LFxuICAgIGJvcmRlcjogYCR7Qk9SREVSX1dJRFRIfXB4IHNvbGlkICR7dGhlbWUudmFsdWVzLmNvbG9yLmJvcmRlci5zZWNvbmRhcnkuZGVmYXVsdH1gLFxuICAgIHBhZGRpbmc6IGAke3ZlcnRpY2FsUGFkZGluZ30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLm19YCxcblxuICAgIC4uLihsZWZ0SWNvbiAmJiB7XG4gICAgICBwYWRkaW5nOiBgJHt2ZXJ0aWNhbFBhZGRpbmd9ICR7dGhlbWUudmFyaWFibGVzLnNpemUuc3BhY2luZy5tfSAke3ZlcnRpY2FsUGFkZGluZ30gJHt0aGVtZS52YXJpYWJsZXMuc2l6ZS5zcGFjaW5nLnN9YCxcbiAgICB9KSxcblxuICAgIC4uLih2YXJpYW50ID09PSBcInN0YW5kYWxvbmVcIiAmJiB7XG4gICAgICBjb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLnRleHQuYWkuZGVmYXVsdCxcbiAgICB9KSxcblxuICAgIC4uLighZGlzYWJsZWQgJiYge1xuICAgICAgXCImOmhvdmVyLCAmOmFjdGl2ZVwiOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFsdWVzLmNvbG9yLmJhY2tncm91bmQudHJhbnNwYXJlbnQuaG92ZXIsXG4gICAgICAgIGJvcmRlckNvbG9yOiB0aGVtZS52YWx1ZXMuY29sb3IuYm9yZGVyLnNlY29uZGFyeS5ob3ZlcixcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICAuLi4oZGlzYWJsZWQgJiYge1xuICAgICAgLi4uZ2V0RGlzYWJsZWRTdHlsZXMoeyB0aGVtZSB9KSxcbiAgICB9KSxcbiAgfTtcbn0pO1xuXG4vLyBJbmhlcml0IHRoZSBidXR0b24ncyBzdHlsZXMgZm9yIHRoZSBsYWJlbFxuY29uc3QgQ3VzdG9tVGV4dENsYW1wZWQgPSBzdHlsZWQoVGV4dENsYW1wZWQpKHtcbiAgZm9udFNpemU6IFwiaW5oZXJpdFwiLFxuICBsaW5lSGVpZ2h0OiBcImluaGVyaXRcIixcbiAgZm9udFdlaWdodDogXCJpbmhlcml0XCIsXG4gIGNvbG9yOiBcImluaGVyaXRcIixcbn0pO1xuXG50eXBlIFByb21wdEJ1dHRvbkNvbXBvbmVudCA9IDxDIGV4dGVuZHMgUmVhY3QuRWxlbWVudFR5cGUgPSBcImJ1dHRvblwiPihcbiAgcHJvcHM6IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPEMsIFByb21wdEJ1dHRvblByb3BzPlxuKSA9PiBSZWFjdC5SZWFjdE5vZGUgfCBudWxsO1xuXG5leHBvcnQgY29uc3QgUHJvbXB0QnV0dG9uOiBQcm9tcHRCdXR0b25Db21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKFxuICA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gICAge1xuICAgICAgYXMsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBsZWZ0SWNvbixcbiAgICAgIHR5cGUgPSBcImJ1dHRvblwiLFxuICAgICAgXCJkYXRhLWUyZS10ZXN0LWlkXCI6IGRhdGFFMmVUZXN0SWQsXG4gICAgICAuLi5yZXN0XG4gICAgfTogUG9seW1vcnBoaWNDb21wb25lbnRQcm9wc1dpdGhSZWY8QywgUHJvbXB0QnV0dG9uUHJvcHM+LFxuICAgIHJlZj86IFBvbHltb3JwaGljUmVmPEM+XG4gICkgPT4gKFxuICAgIDxTdHlsZWRQcm9tcHRCdXR0b25cbiAgICAgIHJlZj17cmVmfVxuICAgICAgZGF0YS1lMmUtdGVzdC1pZD17ZGF0YUUyZVRlc3RJZH1cbiAgICAgIGRhdGEtZHMtaWQ9XCJQcm9tcHRCdXR0b25cIlxuICAgICAgYXM9e2FzfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgdHlwZT17YXMgJiYgYXMgIT09IFwiYnV0dG9uXCIgPyB1bmRlZmluZWQgOiB0eXBlfVxuICAgICAgbGVmdEljb249e2xlZnRJY29ufVxuICAgICAgdGFiSW5kZXg9ezB9IC8vIEZvciBTYWZhcmksIGJlY2F1c2UgYnV0dG9ucyBhcmUgbm90IGZvY3VzYWJsZSBieSBkZWZhdWx0IG9uIGl0XG4gICAgICB7Li4ucmVzdH1cbiAgICA+XG4gICAgICA8SW5saW5lIGFsaWduSXRlbXM9XCJjZW50ZXJcIiB2QWxpZ25JdGVtcz1cImNlbnRlclwiIHNwYWNlPVwieHhzXCIgbm9XcmFwPlxuICAgICAgICB7bGVmdEljb24gJiYgKFxuICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgbmFtZT17bGVmdEljb259XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD17bGVmdEljb259XG4gICAgICAgICAgICBkYXRhLWUyZS10ZXN0LWlkPXtsZWZ0SWNvbn1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8Q3VzdG9tVGV4dENsYW1wZWQgYXM9XCJzcGFuXCI+e2NoaWxkcmVufTwvQ3VzdG9tVGV4dENsYW1wZWQ+XG4gICAgICA8L0lubGluZT5cbiAgICA8L1N0eWxlZFByb21wdEJ1dHRvbj5cbiAgKVxuKTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1RTBCIn0= */"),PromptButton=_react.default.forwardRef(({as,children,disabled=!1,leftIcon,type="button","data-e2e-test-id":dataE2eTestId,...rest},ref)=>_react.default.createElement(StyledPromptButton,{ref:ref,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"PromptButton",as:as,disabled:disabled,type:as&&"button"!==as?void 0:type,leftIcon:leftIcon,tabIndex:0,...rest},_react.default.createElement(_Inline.Inline,{alignItems:"center",vAlignItems:"center",space:"xxs",noWrap:!0},leftIcon&&_react.default.createElement(_Icon.Icon,{"aria-hidden":!0,size:"s",name:leftIcon,"data-testid":leftIcon,"data-e2e-test-id":leftIcon}),_react.default.createElement(CustomTextClamped,{as:"span"},children))));
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"PromptButton",{enumerable:!0,get:function(){return PromptButton}});const _interop_require_default=require("@swc/helpers/_/_interop_require_default"),_react=/*#__PURE__*/_interop_require_default._(require("react")),_styled=/*#__PURE__*/_interop_require_default._(require("@emotion/styled")),_ispropvalid=/*#__PURE__*/_interop_require_default._(require("@emotion/is-prop-valid")),_Icon=require("../Icon/Icon"),_mixins=require("../../shared/mixins"),_Inline=require("../Inline/Inline"),_TextClamped=require("../Typography/TextClamped/TextClamped"),StyledPromptButton=(0,_styled.default)("button",{shouldForwardProp:prop=>(0,_ispropvalid.default)(prop),target:"e80vbpr0",label:"StyledPromptButton"})(({theme,disabled,leftIcon,variant})=>(0,_mixins.getPillStyles)({theme,disabled,leftIcon,variant}),"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0QnV0dG9uL1Byb21wdEJ1dHRvbi50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL1Byb21wdEJ1dHRvbi9Qcm9tcHRCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IGlzUHJvcFZhbGlkIGZyb20gXCJAZW1vdGlvbi9pcy1wcm9wLXZhbGlkXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB0eXBlIHtcbiAgUG9seW1vcnBoaWNSZWYsXG4gIFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgZ2V0UGlsbFN0eWxlcyB9IGZyb20gXCIuLi8uLi9zaGFyZWQvbWl4aW5zXCI7XG5pbXBvcnQgeyBJbmxpbmUgfSBmcm9tIFwiLi4vSW5saW5lL0lubGluZVwiO1xuaW1wb3J0IHsgVGV4dENsYW1wZWQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0Q2xhbXBlZC9UZXh0Q2xhbXBlZFwiO1xuXG5leHBvcnQgdHlwZSBQcm9tcHRCdXR0b25Qcm9wcyA9IHtcbiAgbGVmdEljb24/OiBJY29uTmFtZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICAvKiogSWdub3JlZCB3aGVuIGBhc2AgaXMgbm90IFwiYnV0dG9uXCIuICovXG4gIHR5cGU/OiBcInN1Ym1pdFwiIHwgXCJidXR0b25cIiB8IFwicmVzZXRcIjtcbiAgdmFyaWFudD86IFwic3RhbmRhbG9uZVwiO1xuICBcImRhdGEtZTJlLXRlc3QtaWRcIj86IHN0cmluZztcbn07XG5cbmNvbnN0IFN0eWxlZFByb21wdEJ1dHRvbiA9IHN0eWxlZChcImJ1dHRvblwiLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiAocHJvcCkgPT4gaXNQcm9wVmFsaWQocHJvcCksXG59KTxQYXJ0aWFsPFByb21wdEJ1dHRvblByb3BzPj4oKHsgdGhlbWUsIGRpc2FibGVkLCBsZWZ0SWNvbiwgdmFyaWFudCB9KSA9PlxuICBnZXRQaWxsU3R5bGVzKHtcbiAgICB0aGVtZSxcbiAgICBkaXNhYmxlZCxcbiAgICBsZWZ0SWNvbixcbiAgICB2YXJpYW50LFxuICB9KVxuKTtcblxuLy8gSW5oZXJpdCB0aGUgYnV0dG9uJ3Mgc3R5bGVzIGZvciB0aGUgbGFiZWxcbmNvbnN0IEN1c3RvbVRleHRDbGFtcGVkID0gc3R5bGVkKFRleHRDbGFtcGVkKSh7XG4gIGZvbnRTaXplOiBcImluaGVyaXRcIixcbiAgbGluZUhlaWdodDogXCJpbmhlcml0XCIsXG4gIGZvbnRXZWlnaHQ6IFwiaW5oZXJpdFwiLFxuICBjb2xvcjogXCJpbmhlcml0XCIsXG59KTtcblxudHlwZSBQcm9tcHRCdXR0b25Db21wb25lbnQgPSA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gIHByb3BzOiBQb2x5bW9ycGhpY0NvbXBvbmVudFByb3BzV2l0aFJlZjxDLCBQcm9tcHRCdXR0b25Qcm9wcz5cbikgPT4gUmVhY3QuUmVhY3ROb2RlIHwgbnVsbDtcblxuZXhwb3J0IGNvbnN0IFByb21wdEJ1dHRvbjogUHJvbXB0QnV0dG9uQ29tcG9uZW50ID0gUmVhY3QuZm9yd2FyZFJlZihcbiAgPEMgZXh0ZW5kcyBSZWFjdC5FbGVtZW50VHlwZSA9IFwiYnV0dG9uXCI+KFxuICAgIHtcbiAgICAgIGFzLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgbGVmdEljb24sXG4gICAgICB0eXBlID0gXCJidXR0b25cIixcbiAgICAgIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAgICAgLi4ucmVzdFxuICAgIH06IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPEMsIFByb21wdEJ1dHRvblByb3BzPixcbiAgICByZWY/OiBQb2x5bW9ycGhpY1JlZjxDPlxuICApID0+IChcbiAgICA8U3R5bGVkUHJvbXB0QnV0dG9uXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICBkYXRhLWRzLWlkPVwiUHJvbXB0QnV0dG9uXCJcbiAgICAgIGFzPXthc31cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHR5cGU9e2FzICYmIGFzICE9PSBcImJ1dHRvblwiID8gdW5kZWZpbmVkIDogdHlwZX1cbiAgICAgIGxlZnRJY29uPXtsZWZ0SWNvbn1cbiAgICAgIHRhYkluZGV4PXswfSAvLyBGb3IgU2FmYXJpLCBiZWNhdXNlIGJ1dHRvbnMgYXJlIG5vdCBmb2N1c2FibGUgYnkgZGVmYXVsdCBvbiBpdFxuICAgICAgey4uLnJlc3R9XG4gICAgPlxuICAgICAgPElubGluZSBhbGlnbkl0ZW1zPVwiY2VudGVyXCIgdkFsaWduSXRlbXM9XCJjZW50ZXJcIiBzcGFjZT1cInh4c1wiIG5vV3JhcD5cbiAgICAgICAge2xlZnRJY29uICYmIChcbiAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgIG5hbWU9e2xlZnRJY29ufVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2xlZnRJY29ufVxuICAgICAgICAgICAgZGF0YS1lMmUtdGVzdC1pZD17bGVmdEljb259XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPEN1c3RvbVRleHRDbGFtcGVkIGFzPVwic3BhblwiPntjaGlsZHJlbn08L0N1c3RvbVRleHRDbGFtcGVkPlxuICAgICAgPC9JbmxpbmU+XG4gICAgPC9TdHlsZWRQcm9tcHRCdXR0b24+XG4gIClcbik7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUIyQiJ9 */"),CustomTextClamped=(0,_styled.default)(_TextClamped.TextClamped,{target:"e80vbpr1",label:"CustomTextClamped"})({fontSize:"inherit",lineHeight:"inherit",fontWeight:"inherit",color:"inherit"},"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjL2NvbXBvbmVudHMvUHJvbXB0QnV0dG9uL1Byb21wdEJ1dHRvbi50c3giLCJzb3VyY2VzIjpbInNyYy9jb21wb25lbnRzL1Byb21wdEJ1dHRvbi9Qcm9tcHRCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IGlzUHJvcFZhbGlkIGZyb20gXCJAZW1vdGlvbi9pcy1wcm9wLXZhbGlkXCI7XG5pbXBvcnQgdHlwZSB7IEljb25OYW1lIH0gZnJvbSBcIi4uL0ljb24vSWNvblwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCIuLi9JY29uL0ljb25cIjtcbmltcG9ydCB0eXBlIHtcbiAgUG9seW1vcnBoaWNSZWYsXG4gIFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgZ2V0UGlsbFN0eWxlcyB9IGZyb20gXCIuLi8uLi9zaGFyZWQvbWl4aW5zXCI7XG5pbXBvcnQgeyBJbmxpbmUgfSBmcm9tIFwiLi4vSW5saW5lL0lubGluZVwiO1xuaW1wb3J0IHsgVGV4dENsYW1wZWQgfSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UZXh0Q2xhbXBlZC9UZXh0Q2xhbXBlZFwiO1xuXG5leHBvcnQgdHlwZSBQcm9tcHRCdXR0b25Qcm9wcyA9IHtcbiAgbGVmdEljb24/OiBJY29uTmFtZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICAvKiogSWdub3JlZCB3aGVuIGBhc2AgaXMgbm90IFwiYnV0dG9uXCIuICovXG4gIHR5cGU/OiBcInN1Ym1pdFwiIHwgXCJidXR0b25cIiB8IFwicmVzZXRcIjtcbiAgdmFyaWFudD86IFwic3RhbmRhbG9uZVwiO1xuICBcImRhdGEtZTJlLXRlc3QtaWRcIj86IHN0cmluZztcbn07XG5cbmNvbnN0IFN0eWxlZFByb21wdEJ1dHRvbiA9IHN0eWxlZChcImJ1dHRvblwiLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiAocHJvcCkgPT4gaXNQcm9wVmFsaWQocHJvcCksXG59KTxQYXJ0aWFsPFByb21wdEJ1dHRvblByb3BzPj4oKHsgdGhlbWUsIGRpc2FibGVkLCBsZWZ0SWNvbiwgdmFyaWFudCB9KSA9PlxuICBnZXRQaWxsU3R5bGVzKHtcbiAgICB0aGVtZSxcbiAgICBkaXNhYmxlZCxcbiAgICBsZWZ0SWNvbixcbiAgICB2YXJpYW50LFxuICB9KVxuKTtcblxuLy8gSW5oZXJpdCB0aGUgYnV0dG9uJ3Mgc3R5bGVzIGZvciB0aGUgbGFiZWxcbmNvbnN0IEN1c3RvbVRleHRDbGFtcGVkID0gc3R5bGVkKFRleHRDbGFtcGVkKSh7XG4gIGZvbnRTaXplOiBcImluaGVyaXRcIixcbiAgbGluZUhlaWdodDogXCJpbmhlcml0XCIsXG4gIGZvbnRXZWlnaHQ6IFwiaW5oZXJpdFwiLFxuICBjb2xvcjogXCJpbmhlcml0XCIsXG59KTtcblxudHlwZSBQcm9tcHRCdXR0b25Db21wb25lbnQgPSA8QyBleHRlbmRzIFJlYWN0LkVsZW1lbnRUeXBlID0gXCJidXR0b25cIj4oXG4gIHByb3BzOiBQb2x5bW9ycGhpY0NvbXBvbmVudFByb3BzV2l0aFJlZjxDLCBQcm9tcHRCdXR0b25Qcm9wcz5cbikgPT4gUmVhY3QuUmVhY3ROb2RlIHwgbnVsbDtcblxuZXhwb3J0IGNvbnN0IFByb21wdEJ1dHRvbjogUHJvbXB0QnV0dG9uQ29tcG9uZW50ID0gUmVhY3QuZm9yd2FyZFJlZihcbiAgPEMgZXh0ZW5kcyBSZWFjdC5FbGVtZW50VHlwZSA9IFwiYnV0dG9uXCI+KFxuICAgIHtcbiAgICAgIGFzLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgbGVmdEljb24sXG4gICAgICB0eXBlID0gXCJidXR0b25cIixcbiAgICAgIFwiZGF0YS1lMmUtdGVzdC1pZFwiOiBkYXRhRTJlVGVzdElkLFxuICAgICAgLi4ucmVzdFxuICAgIH06IFBvbHltb3JwaGljQ29tcG9uZW50UHJvcHNXaXRoUmVmPEMsIFByb21wdEJ1dHRvblByb3BzPixcbiAgICByZWY/OiBQb2x5bW9ycGhpY1JlZjxDPlxuICApID0+IChcbiAgICA8U3R5bGVkUHJvbXB0QnV0dG9uXG4gICAgICByZWY9e3JlZn1cbiAgICAgIGRhdGEtZTJlLXRlc3QtaWQ9e2RhdGFFMmVUZXN0SWR9XG4gICAgICBkYXRhLWRzLWlkPVwiUHJvbXB0QnV0dG9uXCJcbiAgICAgIGFzPXthc31cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHR5cGU9e2FzICYmIGFzICE9PSBcImJ1dHRvblwiID8gdW5kZWZpbmVkIDogdHlwZX1cbiAgICAgIGxlZnRJY29uPXtsZWZ0SWNvbn1cbiAgICAgIHRhYkluZGV4PXswfSAvLyBGb3IgU2FmYXJpLCBiZWNhdXNlIGJ1dHRvbnMgYXJlIG5vdCBmb2N1c2FibGUgYnkgZGVmYXVsdCBvbiBpdFxuICAgICAgey4uLnJlc3R9XG4gICAgPlxuICAgICAgPElubGluZSBhbGlnbkl0ZW1zPVwiY2VudGVyXCIgdkFsaWduSXRlbXM9XCJjZW50ZXJcIiBzcGFjZT1cInh4c1wiIG5vV3JhcD5cbiAgICAgICAge2xlZnRJY29uICYmIChcbiAgICAgICAgICA8SWNvblxuICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgIG5hbWU9e2xlZnRJY29ufVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2xlZnRJY29ufVxuICAgICAgICAgICAgZGF0YS1lMmUtdGVzdC1pZD17bGVmdEljb259XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPEN1c3RvbVRleHRDbGFtcGVkIGFzPVwic3BhblwiPntjaGlsZHJlbn08L0N1c3RvbVRleHRDbGFtcGVkPlxuICAgICAgPC9JbmxpbmU+XG4gICAgPC9TdHlsZWRQcm9tcHRCdXR0b24+XG4gIClcbik7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUMwQiJ9 */"),PromptButton=_react.default.forwardRef(({as,children,disabled=!1,leftIcon,type="button","data-e2e-test-id":dataE2eTestId,...rest},ref)=>_react.default.createElement(StyledPromptButton,{ref:ref,"data-e2e-test-id":dataE2eTestId,"data-ds-id":"PromptButton",as:as,disabled:disabled,type:as&&"button"!==as?void 0:type,leftIcon:leftIcon,tabIndex:0,...rest},_react.default.createElement(_Inline.Inline,{alignItems:"center",vAlignItems:"center",space:"xxs",noWrap:!0},leftIcon&&_react.default.createElement(_Icon.Icon,{"aria-hidden":!0,size:"s",name:leftIcon,"data-testid":leftIcon,"data-e2e-test-id":leftIcon}),_react.default.createElement(CustomTextClamped,{as:"span"},children))));
@@ -0,0 +1,36 @@
1
+ import React from "react";
2
+ import type { PromptButtonProps } from "../PromptButton/PromptButton";
3
+ import type { PromptInputProps } from "../PromptInput/PromptInput";
4
+ export type PromptButtonGroupItem = Omit<PromptButtonProps, "variant" | "children" | "type"> & {
5
+ key: string;
6
+ label: string;
7
+ onClick: () => void;
8
+ /** Polymorphic tag override, forwarded to the rendered PromptButton. */
9
+ as?: React.ElementType;
10
+ };
11
+ export type PromptButtonGroupSlotProps = {
12
+ /** Props forwarded to the overflow trigger button. */
13
+ overflowButton?: {
14
+ label?: string;
15
+ "aria-label"?: string;
16
+ };
17
+ /**
18
+ * Renders a `PromptInput` below the overflow list. The slot exposes an
19
+ * explicit whitelist of `PromptInput` props — layout- and context-shaping
20
+ * props (`size`, `variant`, `header`, `bottomToolbar`, autocomplete, …)
21
+ * are intentionally not passed through.
22
+ */
23
+ promptInput?: Pick<PromptInputProps, "label" | "name" | "value" | "placeholder" | "disabled" | "isProcessing" | "rows" | "sendButtonProps" | "clearButtonAriaLabel" | "onChange" | "onClear" | "onEnterKey" | "data-e2e-test-id">;
24
+ };
25
+ export type PromptButtonGroupProps = Pick<PromptButtonProps, "variant"> & {
26
+ items: PromptButtonGroupItem[];
27
+ slotProps?: PromptButtonGroupSlotProps;
28
+ "data-e2e-test-id"?: string;
29
+ };
30
+ /**
31
+ * Row of PromptButtons that collapses overflow into a popover when the
32
+ * container is too narrow to fit them all on one line. At container widths
33
+ * that cannot fit a single pill next to the overflow trigger, the group
34
+ * falls back to a vertical stack of full-width buttons.
35
+ */
36
+ export declare function PromptButtonGroup({ items, variant, slotProps, "data-e2e-test-id": dataE2eTestId, }: PromptButtonGroupProps): React.ReactElement | null;