@payloadcms/richtext-lexical 0.3.1 → 0.4.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 (194) hide show
  1. package/components.d.ts +6 -0
  2. package/components.js +34 -0
  3. package/dist/cell/index.d.ts.map +1 -1
  4. package/dist/cell/index.js +16 -14
  5. package/dist/exports/components.d.ts +6 -0
  6. package/dist/exports/components.d.ts.map +1 -0
  7. package/dist/exports/components.js +34 -0
  8. package/dist/field/Field.js +4 -3
  9. package/dist/field/features/BlockQuote/index.d.ts.map +1 -1
  10. package/dist/field/features/BlockQuote/index.js +47 -7
  11. package/dist/field/features/Blocks/drawer/index.d.ts +0 -1
  12. package/dist/field/features/Blocks/drawer/index.d.ts.map +1 -1
  13. package/dist/field/features/Blocks/drawer/index.js +4 -5
  14. package/dist/field/features/Blocks/index.d.ts +0 -1
  15. package/dist/field/features/Blocks/index.d.ts.map +1 -1
  16. package/dist/field/features/Blocks/index.js +46 -7
  17. package/dist/field/features/Blocks/nodes/BlocksNode.d.ts.map +1 -1
  18. package/dist/field/features/Blocks/nodes/BlocksNode.js +45 -3
  19. package/dist/field/features/Blocks/plugin/commands.d.ts +4 -0
  20. package/dist/field/features/Blocks/plugin/commands.d.ts.map +1 -0
  21. package/dist/field/features/Blocks/plugin/commands.js +14 -0
  22. package/dist/field/features/Blocks/plugin/index.d.ts +0 -2
  23. package/dist/field/features/Blocks/plugin/index.d.ts.map +1 -1
  24. package/dist/field/features/Blocks/plugin/index.js +6 -14
  25. package/dist/field/features/Heading/index.d.ts.map +1 -1
  26. package/dist/field/features/Heading/index.js +56 -17
  27. package/dist/field/features/Link/drawer/baseFields.d.ts +1 -1
  28. package/dist/field/features/Link/drawer/baseFields.d.ts.map +1 -1
  29. package/dist/field/features/Link/drawer/baseFields.js +43 -26
  30. package/dist/field/features/Link/index.d.ts +21 -2
  31. package/dist/field/features/Link/index.d.ts.map +1 -1
  32. package/dist/field/features/Link/index.js +58 -18
  33. package/dist/field/features/Link/nodes/AutoLinkNode.d.ts.map +1 -1
  34. package/dist/field/features/Link/nodes/AutoLinkNode.js +1 -1
  35. package/dist/field/features/Link/nodes/LinkNode.d.ts +3 -2
  36. package/dist/field/features/Link/nodes/LinkNode.d.ts.map +1 -1
  37. package/dist/field/features/Link/nodes/LinkNode.js +1 -1
  38. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts +4 -0
  39. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -0
  40. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/commands.js +14 -0
  41. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.d.ts +1 -4
  42. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  43. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.js +8 -16
  44. package/dist/field/features/Link/plugins/floatingLinkEditor/index.d.ts +1 -1
  45. package/dist/field/features/Link/plugins/floatingLinkEditor/index.d.ts.map +1 -1
  46. package/dist/field/features/Link/plugins/floatingLinkEditor/index.js +5 -4
  47. package/dist/field/features/Link/plugins/floatingLinkEditor/utilities.d.ts +1 -1
  48. package/dist/field/features/Link/plugins/floatingLinkEditor/utilities.d.ts.map +1 -1
  49. package/dist/field/features/Link/plugins/floatingLinkEditor/utilities.js +3 -3
  50. package/dist/field/features/Paragraph/index.d.ts.map +1 -1
  51. package/dist/field/features/Paragraph/index.js +48 -8
  52. package/dist/field/features/Relationship/drawer/commands.d.ts +7 -0
  53. package/dist/field/features/Relationship/drawer/commands.d.ts.map +1 -0
  54. package/dist/field/features/Relationship/drawer/commands.js +14 -0
  55. package/dist/field/features/Relationship/drawer/index.d.ts +1 -8
  56. package/dist/field/features/Relationship/drawer/index.d.ts.map +1 -1
  57. package/dist/field/features/Relationship/drawer/index.js +7 -17
  58. package/dist/field/features/Relationship/index.d.ts +16 -2
  59. package/dist/field/features/Relationship/index.d.ts.map +1 -1
  60. package/dist/field/features/Relationship/index.js +53 -14
  61. package/dist/field/features/Relationship/nodes/RelationshipNode.d.ts.map +1 -1
  62. package/dist/field/features/Relationship/nodes/RelationshipNode.js +6 -3
  63. package/dist/field/features/Relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
  64. package/dist/field/features/Relationship/nodes/components/RelationshipComponent.js +4 -5
  65. package/dist/field/features/Relationship/plugins/index.d.ts +2 -1
  66. package/dist/field/features/Relationship/plugins/index.d.ts.map +1 -1
  67. package/dist/field/features/Relationship/plugins/index.js +10 -4
  68. package/dist/field/features/Upload/component/index.js +3 -3
  69. package/dist/field/features/Upload/drawer/commands.d.ts +7 -0
  70. package/dist/field/features/Upload/drawer/commands.d.ts.map +1 -0
  71. package/dist/field/features/Upload/drawer/commands.js +14 -0
  72. package/dist/field/features/Upload/drawer/index.d.ts +0 -7
  73. package/dist/field/features/Upload/drawer/index.d.ts.map +1 -1
  74. package/dist/field/features/Upload/drawer/index.js +6 -15
  75. package/dist/field/features/Upload/index.d.ts +0 -1
  76. package/dist/field/features/Upload/index.d.ts.map +1 -1
  77. package/dist/field/features/Upload/index.js +46 -8
  78. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts +0 -1
  79. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts.map +1 -1
  80. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +42 -4
  81. package/dist/field/features/align/index.d.ts +0 -1
  82. package/dist/field/features/align/index.d.ts.map +1 -1
  83. package/dist/field/features/align/index.js +50 -11
  84. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts +0 -1
  85. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts.map +1 -1
  86. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +1 -2
  87. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts +0 -1
  88. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts.map +1 -1
  89. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +42 -4
  90. package/dist/field/features/converters/html/field/index.d.ts.map +1 -1
  91. package/dist/field/features/converters/html/field/index.js +17 -2
  92. package/dist/field/features/converters/html/index.d.ts.map +1 -1
  93. package/dist/field/features/converters/html/index.js +2 -5
  94. package/dist/field/features/debug/TestRecorder/index.d.ts.map +1 -1
  95. package/dist/field/features/debug/TestRecorder/index.js +42 -3
  96. package/dist/field/features/debug/TestRecorder/plugin/index.js +1 -1
  97. package/dist/field/features/debug/TreeView/index.d.ts +0 -1
  98. package/dist/field/features/debug/TreeView/index.d.ts.map +1 -1
  99. package/dist/field/features/debug/TreeView/index.js +43 -5
  100. package/dist/field/features/debug/TreeView/plugin.d.ts +1 -0
  101. package/dist/field/features/debug/TreeView/plugin.d.ts.map +1 -1
  102. package/dist/field/features/debug/TreeView/plugin.js +2 -1
  103. package/dist/field/features/format/Bold/index.d.ts.map +1 -1
  104. package/dist/field/features/format/Bold/index.js +43 -4
  105. package/dist/field/features/format/InlineCode/index.d.ts.map +1 -1
  106. package/dist/field/features/format/InlineCode/index.js +44 -5
  107. package/dist/field/features/format/Italic/index.d.ts.map +1 -1
  108. package/dist/field/features/format/Italic/index.js +44 -5
  109. package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts +0 -1
  110. package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts.map +1 -1
  111. package/dist/field/features/format/common/floatingSelectToolbarSection.js +1 -2
  112. package/dist/field/features/format/strikethrough/index.d.ts.map +1 -1
  113. package/dist/field/features/format/strikethrough/index.js +44 -5
  114. package/dist/field/features/format/subscript/index.d.ts.map +1 -1
  115. package/dist/field/features/format/subscript/index.js +44 -5
  116. package/dist/field/features/format/superscript/index.d.ts.map +1 -1
  117. package/dist/field/features/format/superscript/index.js +44 -5
  118. package/dist/field/features/format/underline/index.d.ts.map +1 -1
  119. package/dist/field/features/format/underline/index.js +44 -5
  120. package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts +0 -1
  121. package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts.map +1 -1
  122. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +1 -2
  123. package/dist/field/features/indent/index.d.ts +0 -1
  124. package/dist/field/features/indent/index.d.ts.map +1 -1
  125. package/dist/field/features/indent/index.js +54 -9
  126. package/dist/field/features/indent/plugin.d.ts +3 -0
  127. package/dist/field/features/indent/plugin.d.ts.map +1 -0
  128. package/dist/field/features/indent/plugin.js +17 -0
  129. package/dist/field/features/lists/CheckList/index.d.ts.map +1 -1
  130. package/dist/field/features/lists/CheckList/index.js +46 -6
  131. package/dist/field/features/lists/OrderedList/index.d.ts.map +1 -1
  132. package/dist/field/features/lists/OrderedList/index.js +46 -6
  133. package/dist/field/features/lists/UnorderedList/index.d.ts.map +1 -1
  134. package/dist/field/features/lists/UnorderedList/index.js +46 -6
  135. package/dist/field/features/migrations/LexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts +9 -0
  136. package/dist/field/features/migrations/LexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -0
  137. package/dist/field/features/migrations/LexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +23 -0
  138. package/dist/field/features/migrations/LexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +0 -1
  139. package/dist/field/features/migrations/LexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  140. package/dist/field/features/migrations/LexicalPluginToLexical/nodes/unknownConvertedNode/index.js +47 -8
  141. package/dist/field/features/migrations/SlateToLexical/nodes/unknownConvertedNode/Component.d.ts +9 -0
  142. package/dist/field/features/migrations/SlateToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -0
  143. package/dist/field/features/migrations/SlateToLexical/nodes/unknownConvertedNode/Component.js +23 -0
  144. package/dist/field/features/migrations/SlateToLexical/nodes/unknownConvertedNode/index.d.ts +0 -1
  145. package/dist/field/features/migrations/SlateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  146. package/dist/field/features/migrations/SlateToLexical/nodes/unknownConvertedNode/index.js +47 -8
  147. package/dist/field/features/types.d.ts +31 -32
  148. package/dist/field/features/types.d.ts.map +1 -1
  149. package/dist/field/index.d.ts.map +1 -1
  150. package/dist/field/index.js +4 -2
  151. package/dist/field/lexical/EditorPlugin.d.ts +7 -0
  152. package/dist/field/lexical/EditorPlugin.d.ts.map +1 -0
  153. package/dist/field/lexical/EditorPlugin.js +68 -0
  154. package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
  155. package/dist/field/lexical/LexicalEditor.js +15 -10
  156. package/dist/field/lexical/LexicalEditor.scss +18 -0
  157. package/dist/field/lexical/LexicalProvider.d.ts.map +1 -1
  158. package/dist/field/lexical/LexicalProvider.js +29 -15
  159. package/dist/field/lexical/config/default.d.ts +0 -2
  160. package/dist/field/lexical/config/default.d.ts.map +1 -1
  161. package/dist/field/lexical/config/default.js +45 -10
  162. package/dist/field/lexical/config/defaultClient.d.ts +3 -0
  163. package/dist/field/lexical/config/defaultClient.d.ts.map +1 -0
  164. package/dist/field/lexical/config/defaultClient.js +17 -0
  165. package/dist/field/lexical/config/types.d.ts +2 -2
  166. package/dist/field/lexical/config/types.d.ts.map +1 -1
  167. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts +5 -0
  168. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts.map +1 -1
  169. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +85 -21
  170. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts.map +1 -1
  171. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +66 -23
  172. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts +5 -5
  173. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts.map +1 -1
  174. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +3 -2
  175. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  176. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -1
  177. package/dist/field/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  178. package/dist/field/lexical/plugins/SlashMenu/index.js +9 -2
  179. package/dist/field/lexical/plugins/SlashMenu/index.scss +4 -1
  180. package/dist/index.d.ts +2 -8
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +67 -39
  183. package/package.json +17 -15
  184. package/dist/field/features/Blocks/drawer/index.scss +0 -1
  185. package/dist/field/features/Blocks/index.scss +0 -1
  186. package/dist/field/features/Link/index.scss +0 -1
  187. package/dist/field/features/Relationship/drawer/index.scss +0 -1
  188. package/dist/field/features/Relationship/index.scss +0 -1
  189. package/dist/field/features/Upload/drawer/index.scss +0 -1
  190. package/dist/field/features/Upload/index.scss +0 -1
  191. package/dist/field/features/align/index.scss +0 -4
  192. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.scss +0 -4
  193. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.scss +0 -4
  194. package/dist/field/features/format/common/index.scss +0 -4
@@ -3,21 +3,93 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "ToolbarDropdown", {
7
- enumerable: true,
8
- get: function() {
6
+ function _export(target, all) {
7
+ for(var name in all)Object.defineProperty(target, name, {
8
+ enumerable: true,
9
+ get: all[name]
10
+ });
11
+ }
12
+ _export(exports, {
13
+ ToolbarEntry: function() {
14
+ return ToolbarEntry;
15
+ },
16
+ ToolbarDropdown: function() {
9
17
  return ToolbarDropdown;
10
18
  }
11
19
  });
12
- const _react = /*#__PURE__*/ _interop_require_default(require("react"));
20
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
13
21
  const _DropDown = require("./DropDown");
14
22
  require("./index.scss");
15
- function _interop_require_default(obj) {
16
- return obj && obj.__esModule ? obj : {
17
- default: obj
18
- };
23
+ function _getRequireWildcardCache(nodeInterop) {
24
+ if (typeof WeakMap !== "function") return null;
25
+ var cacheBabelInterop = new WeakMap();
26
+ var cacheNodeInterop = new WeakMap();
27
+ return (_getRequireWildcardCache = function(nodeInterop) {
28
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
29
+ })(nodeInterop);
30
+ }
31
+ function _interop_require_wildcard(obj, nodeInterop) {
32
+ if (!nodeInterop && obj && obj.__esModule) {
33
+ return obj;
34
+ }
35
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
36
+ return {
37
+ default: obj
38
+ };
39
+ }
40
+ var cache = _getRequireWildcardCache(nodeInterop);
41
+ if (cache && cache.has(obj)) {
42
+ return cache.get(obj);
43
+ }
44
+ var newObj = {};
45
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
46
+ for(var key in obj){
47
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
48
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
49
+ if (desc && (desc.get || desc.set)) {
50
+ Object.defineProperty(newObj, key, desc);
51
+ } else {
52
+ newObj[key] = obj[key];
53
+ }
54
+ }
55
+ }
56
+ newObj.default = obj;
57
+ if (cache) {
58
+ cache.set(obj, newObj);
59
+ }
60
+ return newObj;
19
61
  }
20
62
  const baseClass = 'floating-select-toolbar-popup__dropdown';
63
+ const ToolbarEntry = ({ anchorElem, editor, entry })=>{
64
+ const Component = (0, _react.useMemo)(()=>{
65
+ return entry?.Component ? /*#__PURE__*/ _react.default.lazy(()=>entry.Component().then((resolvedComponent)=>({
66
+ default: resolvedComponent
67
+ }))) : null;
68
+ }, [
69
+ entry
70
+ ]);
71
+ const ChildComponent = (0, _react.useMemo)(()=>{
72
+ return entry?.ChildComponent ? /*#__PURE__*/ _react.default.lazy(()=>entry.ChildComponent().then((resolvedChildComponent)=>({
73
+ default: resolvedChildComponent
74
+ }))) : null;
75
+ }, [
76
+ entry
77
+ ]);
78
+ if (entry.Component) {
79
+ return Component && /*#__PURE__*/ _react.default.createElement(_react.default.Suspense, null, /*#__PURE__*/ _react.default.createElement(Component, {
80
+ anchorElem: anchorElem,
81
+ editor: editor,
82
+ entry: entry,
83
+ key: entry.key
84
+ }));
85
+ }
86
+ return /*#__PURE__*/ _react.default.createElement(_DropDown.DropDownItem, {
87
+ entry: entry,
88
+ key: entry.key
89
+ }, ChildComponent && /*#__PURE__*/ _react.default.createElement(_react.default.Suspense, null, /*#__PURE__*/ _react.default.createElement(ChildComponent, null)), /*#__PURE__*/ _react.default.createElement("span", {
90
+ className: "text"
91
+ }, entry.label));
92
+ };
21
93
  const ToolbarDropdown = ({ Icon, anchorElem, classNames, editor, entries })=>{
22
94
  return /*#__PURE__*/ _react.default.createElement(_DropDown.DropDown, {
23
95
  Icon: Icon,
@@ -27,21 +99,13 @@ const ToolbarDropdown = ({ Icon, anchorElem, classNames, editor, entries })=>{
27
99
  ...classNames || []
28
100
  ].filter(Boolean).join(' ')
29
101
  }, entries.length && entries.map((entry)=>{
30
- if (entry.Component) {
31
- return /*#__PURE__*/ _react.default.createElement(entry.Component, {
32
- anchorElem: anchorElem,
33
- editor: editor,
34
- entry: entry,
35
- key: entry.key
36
- });
37
- }
38
- return /*#__PURE__*/ _react.default.createElement(_DropDown.DropDownItem, {
102
+ return /*#__PURE__*/ _react.default.createElement(ToolbarEntry, {
103
+ anchorElem: anchorElem,
104
+ editor: editor,
39
105
  entry: entry,
40
106
  key: entry.key
41
- }, /*#__PURE__*/ _react.default.createElement(entry.ChildComponent, null), /*#__PURE__*/ _react.default.createElement("span", {
42
- className: "text"
43
- }, entry.label));
107
+ });
44
108
  }));
45
109
  };
46
110
 
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL1Rvb2xiYXJEcm9wZG93bi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fZHJvcGRvd24nXG5cbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5IH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IERyb3BEb3duLCBEcm9wRG93bkl0ZW0gfSBmcm9tICcuL0Ryb3BEb3duJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmV4cG9ydCBjb25zdCBUb29sYmFyRHJvcGRvd24gPSAoe1xuICBJY29uLFxuICBhbmNob3JFbGVtLFxuICBjbGFzc05hbWVzLFxuICBlZGl0b3IsXG4gIGVudHJpZXMsXG59OiB7XG4gIEljb24/OiBSZWFjdC5GQ1xuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudFxuICBjbGFzc05hbWVzPzogc3RyaW5nW11cbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGVudHJpZXM6IEZsb2F0aW5nVG9vbGJhclNlY3Rpb25FbnRyeVtdXG59KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPERyb3BEb3duXG4gICAgICBJY29uPXtJY29ufVxuICAgICAgYnV0dG9uQXJpYUxhYmVsPVwiRm9ybWF0dGluZyBvcHRpb25zXCJcbiAgICAgIGJ1dHRvbkNsYXNzTmFtZT17W2Jhc2VDbGFzcywgLi4uKGNsYXNzTmFtZXMgfHwgW10pXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpfVxuICAgID5cbiAgICAgIHtlbnRyaWVzLmxlbmd0aCAmJlxuICAgICAgICBlbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgICBpZiAoZW50cnkuQ29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZW50cnkuQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX1cbiAgICAgICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgICAgICBlbnRyeT17ZW50cnl9XG4gICAgICAgICAgICAgICAga2V5PXtlbnRyeS5rZXl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8RHJvcERvd25JdGVtIGVudHJ5PXtlbnRyeX0ga2V5PXtlbnRyeS5rZXl9PlxuICAgICAgICAgICAgICA8ZW50cnkuQ2hpbGRDb21wb25lbnQgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dFwiPntlbnRyeS5sYWJlbH08L3NwYW4+XG4gICAgICAgICAgICA8L0Ryb3BEb3duSXRlbT5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgIDwvRHJvcERvd24+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJUb29sYmFyRHJvcGRvd24iLCJiYXNlQ2xhc3MiLCJJY29uIiwiYW5jaG9yRWxlbSIsImNsYXNzTmFtZXMiLCJlZGl0b3IiLCJlbnRyaWVzIiwiRHJvcERvd24iLCJidXR0b25BcmlhTGFiZWwiLCJidXR0b25DbGFzc05hbWUiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsImxlbmd0aCIsIm1hcCIsImVudHJ5IiwiQ29tcG9uZW50Iiwia2V5IiwiRHJvcERvd25JdGVtIiwiQ2hpbGRDb21wb25lbnQiLCJzcGFuIiwiY2xhc3NOYW1lIiwibGFiZWwiXSwibWFwcGluZ3MiOiJBQUFBOzs7OzsrQkFZYUE7OztlQUFBQTs7OzhEQVhLOzBCQVFxQjtRQUNoQzs7Ozs7O0FBUFAsTUFBTUMsWUFBWTtBQVNYLE1BQU1ELGtCQUFrQixDQUFDLEVBQzlCRSxJQUFJLEVBQ0pDLFVBQVUsRUFDVkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLE9BQU8sRUFPUjtJQUNDLHFCQUNFLDZCQUFDQyxrQkFBUTtRQUNQTCxNQUFNQTtRQUNOTSxpQkFBZ0I7UUFDaEJDLGlCQUFpQjtZQUFDUjtlQUFlRyxjQUFjLEVBQUU7U0FBRSxDQUFDTSxNQUFNLENBQUNDLFNBQVNDLElBQUksQ0FBQztPQUV4RU4sUUFBUU8sTUFBTSxJQUNiUCxRQUFRUSxHQUFHLENBQUMsQ0FBQ0M7UUFDWCxJQUFJQSxNQUFNQyxTQUFTLEVBQUU7WUFDbkIscUJBQ0UsNkJBQUNELE1BQU1DLFNBQVM7Z0JBQ2RiLFlBQVlBO2dCQUNaRSxRQUFRQTtnQkFDUlUsT0FBT0E7Z0JBQ1BFLEtBQUtGLE1BQU1FLEdBQUc7O1FBR3BCO1FBQ0EscUJBQ0UsNkJBQUNDLHNCQUFZO1lBQUNILE9BQU9BO1lBQU9FLEtBQUtGLE1BQU1FLEdBQUc7eUJBQ3hDLDZCQUFDRixNQUFNSSxjQUFjLHVCQUNyQiw2QkFBQ0M7WUFBS0MsV0FBVTtXQUFRTixNQUFNTyxLQUFLO0lBR3pDO0FBR1IifQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL1Rvb2xiYXJEcm9wZG93bi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnZmxvYXRpbmctc2VsZWN0LXRvb2xiYXItcG9wdXBfX2Ryb3Bkb3duJ1xuXG5pbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgdHlwZSB7IEZsb2F0aW5nVG9vbGJhclNlY3Rpb25FbnRyeSB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBEcm9wRG93biwgRHJvcERvd25JdGVtIH0gZnJvbSAnLi9Ecm9wRG93bidcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5leHBvcnQgY29uc3QgVG9vbGJhckVudHJ5ID0gKHtcbiAgYW5jaG9yRWxlbSxcbiAgZWRpdG9yLFxuICBlbnRyeSxcbn06IHtcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGVudHJ5OiBGbG9hdGluZ1Rvb2xiYXJTZWN0aW9uRW50cnlcbn0pID0+IHtcbiAgY29uc3QgQ29tcG9uZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGVudHJ5Py5Db21wb25lbnRcbiAgICAgID8gUmVhY3QubGF6eSgoKSA9PlxuICAgICAgICAgIGVudHJ5LkNvbXBvbmVudCgpLnRoZW4oKHJlc29sdmVkQ29tcG9uZW50KSA9PiAoe1xuICAgICAgICAgICAgZGVmYXVsdDogcmVzb2x2ZWRDb21wb25lbnQsXG4gICAgICAgICAgfSkpLFxuICAgICAgICApXG4gICAgICA6IG51bGxcbiAgfSwgW2VudHJ5XSlcblxuICBjb25zdCBDaGlsZENvbXBvbmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBlbnRyeT8uQ2hpbGRDb21wb25lbnRcbiAgICAgID8gUmVhY3QubGF6eSgoKSA9PlxuICAgICAgICAgIGVudHJ5LkNoaWxkQ29tcG9uZW50KCkudGhlbigocmVzb2x2ZWRDaGlsZENvbXBvbmVudCkgPT4gKHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJlc29sdmVkQ2hpbGRDb21wb25lbnQsXG4gICAgICAgICAgfSkpLFxuICAgICAgICApXG4gICAgICA6IG51bGxcbiAgfSwgW2VudHJ5XSlcblxuICBpZiAoZW50cnkuQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIENvbXBvbmVudCAmJiAoXG4gICAgICAgIDxSZWFjdC5TdXNwZW5zZT5cbiAgICAgICAgICA8Q29tcG9uZW50IGFuY2hvckVsZW09e2FuY2hvckVsZW19IGVkaXRvcj17ZWRpdG9yfSBlbnRyeT17ZW50cnl9IGtleT17ZW50cnkua2V5fSAvPlxuICAgICAgICA8L1JlYWN0LlN1c3BlbnNlPlxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPERyb3BEb3duSXRlbSBlbnRyeT17ZW50cnl9IGtleT17ZW50cnkua2V5fT5cbiAgICAgIHtDaGlsZENvbXBvbmVudCAmJiAoXG4gICAgICAgIDxSZWFjdC5TdXNwZW5zZT5cbiAgICAgICAgICA8Q2hpbGRDb21wb25lbnQgLz5cbiAgICAgICAgPC9SZWFjdC5TdXNwZW5zZT5cbiAgICAgICl9XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0XCI+e2VudHJ5LmxhYmVsfTwvc3Bhbj5cbiAgICA8L0Ryb3BEb3duSXRlbT5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgVG9vbGJhckRyb3Bkb3duID0gKHtcbiAgSWNvbixcbiAgYW5jaG9yRWxlbSxcbiAgY2xhc3NOYW1lcyxcbiAgZWRpdG9yLFxuICBlbnRyaWVzLFxufToge1xuICBJY29uPzogUmVhY3QuRkNcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgY2xhc3NOYW1lcz86IHN0cmluZ1tdXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICBlbnRyaWVzOiBGbG9hdGluZ1Rvb2xiYXJTZWN0aW9uRW50cnlbXVxufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxEcm9wRG93blxuICAgICAgSWNvbj17SWNvbn1cbiAgICAgIGJ1dHRvbkFyaWFMYWJlbD1cIkZvcm1hdHRpbmcgb3B0aW9uc1wiXG4gICAgICBidXR0b25DbGFzc05hbWU9e1tiYXNlQ2xhc3MsIC4uLihjbGFzc05hbWVzIHx8IFtdKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKX1cbiAgICA+XG4gICAgICB7ZW50cmllcy5sZW5ndGggJiZcbiAgICAgICAgZW50cmllcy5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxUb29sYmFyRW50cnkgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX0gZWRpdG9yPXtlZGl0b3J9IGVudHJ5PXtlbnRyeX0ga2V5PXtlbnRyeS5rZXl9IC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICA8L0Ryb3BEb3duPlxuICApXG59XG4iXSwibmFtZXMiOlsiVG9vbGJhckVudHJ5IiwiVG9vbGJhckRyb3Bkb3duIiwiYmFzZUNsYXNzIiwiYW5jaG9yRWxlbSIsImVkaXRvciIsImVudHJ5IiwiQ29tcG9uZW50IiwidXNlTWVtbyIsIlJlYWN0IiwibGF6eSIsInRoZW4iLCJyZXNvbHZlZENvbXBvbmVudCIsImRlZmF1bHQiLCJDaGlsZENvbXBvbmVudCIsInJlc29sdmVkQ2hpbGRDb21wb25lbnQiLCJTdXNwZW5zZSIsImtleSIsIkRyb3BEb3duSXRlbSIsInNwYW4iLCJjbGFzc05hbWUiLCJsYWJlbCIsIkljb24iLCJjbGFzc05hbWVzIiwiZW50cmllcyIsIkRyb3BEb3duIiwiYnV0dG9uQXJpYUxhYmVsIiwiYnV0dG9uQ2xhc3NOYW1lIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJsZW5ndGgiLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7SUFZYUEsWUFBWTtlQUFaQTs7SUFtREFDLGVBQWU7ZUFBZkE7OzsrREE5RGtCOzBCQVFRO1FBQ2hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUFAsTUFBTUMsWUFBWTtBQVNYLE1BQU1GLGVBQWUsQ0FBQyxFQUMzQkcsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLEtBQUssRUFLTjtJQUNDLE1BQU1DLFlBQVlDLElBQUFBLGNBQU8sRUFBQztRQUN4QixPQUFPRixPQUFPQywwQkFDVkUsY0FBSyxDQUFDQyxJQUFJLENBQUMsSUFDVEosTUFBTUMsU0FBUyxHQUFHSSxJQUFJLENBQUMsQ0FBQ0Msb0JBQXVCLENBQUE7b0JBQzdDQyxTQUFTRDtnQkFDWCxDQUFBLE1BRUY7SUFDTixHQUFHO1FBQUNOO0tBQU07SUFFVixNQUFNUSxpQkFBaUJOLElBQUFBLGNBQU8sRUFBQztRQUM3QixPQUFPRixPQUFPUSwrQkFDVkwsY0FBSyxDQUFDQyxJQUFJLENBQUMsSUFDVEosTUFBTVEsY0FBYyxHQUFHSCxJQUFJLENBQUMsQ0FBQ0kseUJBQTRCLENBQUE7b0JBQ3ZERixTQUFTRTtnQkFDWCxDQUFBLE1BRUY7SUFDTixHQUFHO1FBQUNUO0tBQU07SUFFVixJQUFJQSxNQUFNQyxTQUFTLEVBQUU7UUFDbkIsT0FDRUEsMkJBQ0UsNkJBQUNFLGNBQUssQ0FBQ08sUUFBUSxzQkFDYiw2QkFBQ1Q7WUFBVUgsWUFBWUE7WUFBWUMsUUFBUUE7WUFBUUMsT0FBT0E7WUFBT1csS0FBS1gsTUFBTVcsR0FBRzs7SUFJdkY7SUFFQSxxQkFDRSw2QkFBQ0Msc0JBQVk7UUFBQ1osT0FBT0E7UUFBT1csS0FBS1gsTUFBTVcsR0FBRztPQUN2Q0gsZ0NBQ0MsNkJBQUNMLGNBQUssQ0FBQ08sUUFBUSxzQkFDYiw2QkFBQ0Ysc0NBR0wsNkJBQUNLO1FBQUtDLFdBQVU7T0FBUWQsTUFBTWUsS0FBSztBQUd6QztBQUVPLE1BQU1uQixrQkFBa0IsQ0FBQyxFQUM5Qm9CLElBQUksRUFDSmxCLFVBQVUsRUFDVm1CLFVBQVUsRUFDVmxCLE1BQU0sRUFDTm1CLE9BQU8sRUFPUjtJQUNDLHFCQUNFLDZCQUFDQyxrQkFBUTtRQUNQSCxNQUFNQTtRQUNOSSxpQkFBZ0I7UUFDaEJDLGlCQUFpQjtZQUFDeEI7ZUFBZW9CLGNBQWMsRUFBRTtTQUFFLENBQUNLLE1BQU0sQ0FBQ0MsU0FBU0MsSUFBSSxDQUFDO09BRXhFTixRQUFRTyxNQUFNLElBQ2JQLFFBQVFRLEdBQUcsQ0FBQyxDQUFDMUI7UUFDWCxxQkFDRSw2QkFBQ0w7WUFBYUcsWUFBWUE7WUFBWUMsUUFBUUE7WUFBUUMsT0FBT0E7WUFBT1csS0FBS1gsTUFBTVcsR0FBRzs7SUFFdEY7QUFHUiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/plugins/FloatingSelectToolbar/index.tsx"],"names":[],"mappings":";AAqBA,OAAO,cAAc,CAAA;AA4RrB,wBAAgB,2BAA2B,CAAC,EAC1C,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAGrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/plugins/FloatingSelectToolbar/index.tsx"],"names":[],"mappings":";AAuBA,OAAO,cAAc,CAAA;AA+WrB,wBAAgB,2BAA2B,CAAC,EAC1C,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAGrB"}
@@ -59,6 +59,66 @@ function _interop_require_wildcard(obj, nodeInterop) {
59
59
  }
60
60
  return newObj;
61
61
  }
62
+ function ButtonSectionEntry({ anchorElem, editor, entry }) {
63
+ const Component = (0, _react.useMemo)(()=>{
64
+ return entry?.Component ? /*#__PURE__*/ _react.lazy(()=>entry.Component().then((resolvedComponent)=>({
65
+ default: resolvedComponent
66
+ }))) : null;
67
+ }, [
68
+ entry
69
+ ]);
70
+ const ChildComponent = (0, _react.useMemo)(()=>{
71
+ return entry?.ChildComponent ? /*#__PURE__*/ _react.lazy(()=>entry.ChildComponent().then((resolvedChildComponent)=>({
72
+ default: resolvedChildComponent
73
+ }))) : null;
74
+ }, [
75
+ entry
76
+ ]);
77
+ if (entry.Component) {
78
+ return Component && /*#__PURE__*/ _react.createElement(_react.Suspense, null, /*#__PURE__*/ _react.createElement(Component, {
79
+ anchorElem: anchorElem,
80
+ editor: editor,
81
+ entry: entry,
82
+ key: entry.key
83
+ }), ' ');
84
+ }
85
+ return /*#__PURE__*/ _react.createElement(_ToolbarButton.ToolbarButton, {
86
+ entry: entry,
87
+ key: entry.key
88
+ }, ChildComponent && /*#__PURE__*/ _react.createElement(_react.Suspense, null, /*#__PURE__*/ _react.createElement(ChildComponent, null)));
89
+ }
90
+ function ToolbarSection({ anchorElem, editor, index, section }) {
91
+ const { editorConfig } = (0, _EditorConfigProvider.useEditorConfigContext)();
92
+ const Icon = (0, _react.useMemo)(()=>{
93
+ return section?.type === 'dropdown' && section.entries.length && section.ChildComponent ? /*#__PURE__*/ _react.lazy(()=>section.ChildComponent().then((resolvedComponent)=>({
94
+ default: resolvedComponent
95
+ }))) : null;
96
+ }, [
97
+ section
98
+ ]);
99
+ return /*#__PURE__*/ _react.createElement("div", {
100
+ className: `floating-select-toolbar-popup__section floating-select-toolbar-popup__section-${section.key}`,
101
+ key: section.key
102
+ }, section.type === 'dropdown' && section.entries.length && (Icon ? /*#__PURE__*/ _react.createElement(_react.Suspense, null, /*#__PURE__*/ _react.createElement(_ToolbarDropdown.ToolbarDropdown, {
103
+ Icon: Icon,
104
+ anchorElem: anchorElem,
105
+ editor: editor,
106
+ entries: section.entries
107
+ })) : /*#__PURE__*/ _react.createElement(_ToolbarDropdown.ToolbarDropdown, {
108
+ anchorElem: anchorElem,
109
+ editor: editor,
110
+ entries: section.entries
111
+ })), section.type === 'buttons' && section.entries.length && section.entries.map((entry)=>{
112
+ return /*#__PURE__*/ _react.createElement(ButtonSectionEntry, {
113
+ anchorElem: anchorElem,
114
+ editor: editor,
115
+ entry: entry,
116
+ key: entry.key
117
+ });
118
+ }), index < editorConfig.features.floatingSelectToolbar?.sections.length - 1 && /*#__PURE__*/ _react.createElement("div", {
119
+ className: "divider"
120
+ }));
121
+ }
62
122
  function FloatingSelectToolbar({ anchorElem, editor }) {
63
123
  const popupCharStylesEditorRef = (0, _react.useRef)(null);
64
124
  const caretRef = (0, _react.useRef)(null);
@@ -183,30 +243,13 @@ function FloatingSelectToolbar({ anchorElem, editor }) {
183
243
  className: "caret",
184
244
  ref: caretRef
185
245
  }), editor.isEditable() && /*#__PURE__*/ _react.createElement(_react.Fragment, null, editorConfig?.features && editorConfig.features?.floatingSelectToolbar?.sections.map((section, i)=>{
186
- return /*#__PURE__*/ _react.createElement("div", {
187
- className: `floating-select-toolbar-popup__section floating-select-toolbar-popup__section-${section.key}`,
188
- key: section.key
189
- }, section.type === 'dropdown' && section.entries.length && /*#__PURE__*/ _react.createElement(_ToolbarDropdown.ToolbarDropdown, {
190
- Icon: section.ChildComponent,
246
+ return /*#__PURE__*/ _react.createElement(ToolbarSection, {
191
247
  anchorElem: anchorElem,
192
248
  editor: editor,
193
- entries: section.entries
194
- }), section.type === 'buttons' && section.entries.length && section.entries.map((entry)=>{
195
- if (entry.Component) {
196
- return /*#__PURE__*/ _react.createElement(entry.Component, {
197
- anchorElem: anchorElem,
198
- editor: editor,
199
- entry: entry,
200
- key: entry.key
201
- });
202
- }
203
- return /*#__PURE__*/ _react.createElement(_ToolbarButton.ToolbarButton, {
204
- entry: entry,
205
- key: entry.key
206
- }, /*#__PURE__*/ _react.createElement(entry.ChildComponent, null));
207
- }), i < editorConfig.features.floatingSelectToolbar?.sections.length - 1 && /*#__PURE__*/ _react.createElement("div", {
208
- className: "divider"
209
- }));
249
+ index: i,
250
+ key: section.key,
251
+ section: section
252
+ });
210
253
  })));
211
254
  }
212
255
  function useFloatingTextFormatToolbar(editor, anchorElem) {
@@ -287,4 +330,4 @@ function FloatingSelectToolbarPlugin({ anchorElem = document.body }) {
287
330
  return useFloatingTextFormatToolbar(editor, anchorElem);
288
331
  }
289
332
 
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgbWVyZ2VSZWdpc3RlciB9IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuaW1wb3J0IHtcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzUmFuZ2VTZWxlY3Rpb24sXG4gICRpc1RleHROb2RlLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxufSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB7IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQgfSBmcm9tICcuLi8uLi9jb25maWcvRWRpdG9yQ29uZmlnUHJvdmlkZXInXG5pbXBvcnQgeyBnZXRET01SYW5nZVJlY3QgfSBmcm9tICcuLi8uLi91dGlscy9nZXRET01SYW5nZVJlY3QnXG5pbXBvcnQgeyBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3NldEZsb2F0aW5nRWxlbVBvc2l0aW9uJ1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiB9IGZyb20gJy4vVG9vbGJhckJ1dHRvbidcbmltcG9ydCB7IFRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4vVG9vbGJhckRyb3Bkb3duJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmZ1bmN0aW9uIEZsb2F0aW5nU2VsZWN0VG9vbGJhcih7XG4gIGFuY2hvckVsZW0sXG4gIGVkaXRvcixcbn06IHtcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG59KTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBjYXJldFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgeyBlZGl0b3JDb25maWcgfSA9IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQoKVxuXG4gIGNvbnN0IGNsb3NlRmxvYXRpbmdUb29sYmFyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IGlzT3BhY2l0eVplcm8gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID09PSAnMCdcbiAgICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c05vbmUgPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID09PSAnbm9uZSdcblxuICAgICAgaWYgKCFpc09wYWNpdHlaZXJvKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMCdcbiAgICAgIH1cbiAgICAgIGlmICghaXNQb2ludGVyRXZlbnRzTm9uZSkge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnXG4gICAgICB9XG4gICAgfVxuICB9LCBbcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmXSlcblxuICBjb25zdCBtb3VzZU1vdmVMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmPy5jdXJyZW50ICYmIChlLmJ1dHRvbnMgPT09IDEgfHwgZS5idXR0b25zID09PSAzKSkge1xuICAgICAgICBjb25zdCBpc09wYWNpdHlaZXJvID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9PT0gJzAnXG4gICAgICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c05vbmUgPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzID09PSAnbm9uZSdcbiAgICAgICAgaWYgKCFpc09wYWNpdHlaZXJvIHx8ICFpc1BvaW50ZXJFdmVudHNOb25lKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG1vdXNlIGlzIG5vdCBvdmVyIHRoZSBwb3B1cFxuICAgICAgICAgIGNvbnN0IHggPSBlLmNsaWVudFhcbiAgICAgICAgICBjb25zdCB5ID0gZS5jbGllbnRZXG4gICAgICAgICAgY29uc3QgZWxlbWVudFVuZGVyTW91c2UgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpXG4gICAgICAgICAgaWYgKCFwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5jb250YWlucyhlbGVtZW50VW5kZXJNb3VzZSkpIHtcbiAgICAgICAgICAgIC8vIE1vdXNlIGlzIG5vdCBvdmVyIHRoZSB0YXJnZXQgZWxlbWVudCA9PiBub3QgYSBub3JtYWwgY2xpY2ssIGJ1dCBwcm9iYWJseSBhIGRyYWdcbiAgICAgICAgICAgIGNsb3NlRmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtjbG9zZUZsb2F0aW5nVG9vbGJhcl0sXG4gIClcblxuICBjb25zdCBtb3VzZVVwTGlzdGVuZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCkge1xuICAgICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgIT09ICcxJykge1xuICAgICAgICBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID0gJzEnXG4gICAgICB9XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyAhPT0gJ2F1dG8nKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnYXV0bydcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlTGlzdGVuZXIpXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBMaXN0ZW5lcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVMaXN0ZW5lcilcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZVVwTGlzdGVuZXIpXG4gICAgfVxuICB9LCBbcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLCBtb3VzZU1vdmVMaXN0ZW5lciwgbW91c2VVcExpc3RlbmVyXSlcblxuICBjb25zdCB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9ICRnZXRTZWxlY3Rpb24oKVxuXG4gICAgY29uc3QgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50XG4gICAgY29uc3QgbmF0aXZlU2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpXG5cbiAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgIGlmIChcbiAgICAgIHNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgbmF0aXZlU2VsZWN0aW9uICE9PSBudWxsICYmXG4gICAgICAhbmF0aXZlU2VsZWN0aW9uLmlzQ29sbGFwc2VkICYmXG4gICAgICByb290RWxlbWVudCAhPT0gbnVsbCAmJlxuICAgICAgcm9vdEVsZW1lbnQuY29udGFpbnMobmF0aXZlU2VsZWN0aW9uLmFuY2hvck5vZGUpXG4gICAgKSB7XG4gICAgICBjb25zdCByYW5nZVJlY3QgPSBnZXRET01SYW5nZVJlY3QobmF0aXZlU2VsZWN0aW9uLCByb290RWxlbWVudClcblxuICAgICAgc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24ocmFuZ2VSZWN0LCBwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtLCBhbmNob3JFbGVtLCAnY2VudGVyJylcblxuICAgICAgaWYgKGNhcmV0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24oXG4gICAgICAgICAgcmFuZ2VSZWN0LCAvLyBzZWxlY3Rpb24gdG8gcG9zaXRpb24gYXJvdW5kXG4gICAgICAgICAgY2FyZXRSZWYuY3VycmVudCwgLy8gd2hhdCB0byBwb3NpdGlvblxuICAgICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0sIC8vIGFuY2hvciBlbGVtXG4gICAgICAgICAgJ2NlbnRlcicsXG4gICAgICAgICAgMTAsXG4gICAgICAgICAgNSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHNjcm9sbGVyRWxlbSA9IGFuY2hvckVsZW0ucGFyZW50RWxlbWVudFxuXG4gICAgY29uc3QgdXBkYXRlID0gKCkgPT4ge1xuICAgICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKVxuICAgIGlmIChzY3JvbGxlckVsZW0pIHtcbiAgICAgIHNjcm9sbGVyRWxlbS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgICBpZiAoc2Nyb2xsZXJFbGVtKSB7XG4gICAgICAgIHNjcm9sbGVyRWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpXG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyLCBhbmNob3JFbGVtXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGVkaXRvci5nZXRFZGl0b3JTdGF0ZSgpLnJlYWQoKCkgPT4ge1xuICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgfSlcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCh7IGVkaXRvclN0YXRlIH0pID0+IHtcbiAgICAgICAgZWRpdG9yU3RhdGUucmVhZCgoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICAgIH0pXG4gICAgICB9KSxcblxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXJdKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cFwiIHJlZj17cG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FyZXRcIiByZWY9e2NhcmV0UmVmfSAvPlxuICAgICAge2VkaXRvci5pc0VkaXRhYmxlKCkgJiYgKFxuICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAge2VkaXRvckNvbmZpZz8uZmVhdHVyZXMgJiZcbiAgICAgICAgICAgIGVkaXRvckNvbmZpZy5mZWF0dXJlcz8uZmxvYXRpbmdTZWxlY3RUb29sYmFyPy5zZWN0aW9ucy5tYXAoKHNlY3Rpb24sIGkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fc2VjdGlvbiBmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fc2VjdGlvbi0ke3NlY3Rpb24ua2V5fWB9XG4gICAgICAgICAgICAgICAgICBrZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWN0aW9uLnR5cGUgPT09ICdkcm9wZG93bicgJiYgc2VjdGlvbi5lbnRyaWVzLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sYmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgICAgICAgICBJY29uPXtzZWN0aW9uLkNoaWxkQ29tcG9uZW50fVxuICAgICAgICAgICAgICAgICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgZW50cmllcz17c2VjdGlvbi5lbnRyaWVzfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHtzZWN0aW9uLnR5cGUgPT09ICdidXR0b25zJyAmJlxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uZW50cmllcy5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGVudHJ5LkNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17ZW50cnkua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXJCdXR0b24gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxlbnRyeS5DaGlsZENvbXBvbmVudCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICB7aSA8IGVkaXRvckNvbmZpZy5mZWF0dXJlcy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLmxlbmd0aCAtIDEgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpdmlkZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApXG59XG5cbmZ1bmN0aW9uIHVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIoXG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvcixcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnQsXG4pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbaXNUZXh0LCBzZXRJc1RleHRdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgdXBkYXRlUG9wdXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICAvLyBTaG91bGQgbm90IHRvIHBvcCB1cCB0aGUgZmxvYXRpbmcgdG9vbGJhciB3aGVuIHVzaW5nIElNRSBpbnB1dFxuICAgICAgaWYgKGVkaXRvci5pc0NvbXBvc2luZygpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG4gICAgICBjb25zdCBuYXRpdmVTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcbiAgICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcblxuICAgICAgaWYgKFxuICAgICAgICBuYXRpdmVTZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgICAgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8XG4gICAgICAgICAgcm9vdEVsZW1lbnQgPT09IG51bGwgfHxcbiAgICAgICAgICAhcm9vdEVsZW1lbnQuY29udGFpbnMobmF0aXZlU2VsZWN0aW9uLmFuY2hvck5vZGUpKVxuICAgICAgKSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICghJGlzUmFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGVjdGlvbi5nZXRUZXh0Q29udGVudCgpICE9PSAnJykge1xuICAgICAgICBjb25zdCBub2RlcyA9IHNlbGVjdGlvbi5nZXROb2RlcygpXG4gICAgICAgIGxldCBmb3VuZE5vZGVXaXRoVGV4dCA9IGZhbHNlXG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAgIGlmICgkaXNUZXh0Tm9kZShub2RlKSkge1xuICAgICAgICAgICAgc2V0SXNUZXh0KHRydWUpXG4gICAgICAgICAgICBmb3VuZE5vZGVXaXRoVGV4dCA9IHRydWVcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZm91bmROb2RlV2l0aFRleHQpIHtcbiAgICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmF3VGV4dENvbnRlbnQgPSBzZWxlY3Rpb24uZ2V0VGV4dENvbnRlbnQoKS5yZXBsYWNlKC9cXG4vZywgJycpXG4gICAgICBpZiAoIXNlbGVjdGlvbi5pc0NvbGxhcHNlZCgpICYmIHJhd1RleHRDb250ZW50ID09PSAnJykge1xuICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtlZGl0b3JdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uY2hhbmdlJywgdXBkYXRlUG9wdXApXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVBvcHVwKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCB1cGRhdGVQb3B1cClcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cGRhdGVQb3B1cClcbiAgICB9XG4gIH0sIFt1cGRhdGVQb3B1cF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2VSZWdpc3RlcihcbiAgICAgIGVkaXRvci5yZWdpc3RlclVwZGF0ZUxpc3RlbmVyKCgpID0+IHtcbiAgICAgICAgdXBkYXRlUG9wdXAoKVxuICAgICAgfSksXG4gICAgICBlZGl0b3IucmVnaXN0ZXJSb290TGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICBpZiAoZWRpdG9yLmdldFJvb3RFbGVtZW50KCkgPT09IG51bGwpIHtcbiAgICAgICAgICBzZXRJc1RleHQoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlUG9wdXBdKVxuXG4gIGlmICghaXNUZXh0KSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoPEZsb2F0aW5nU2VsZWN0VG9vbGJhciBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gLz4sIGFuY2hvckVsZW0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGbG9hdGluZ1NlbGVjdFRvb2xiYXJQbHVnaW4oe1xuICBhbmNob3JFbGVtID0gZG9jdW1lbnQuYm9keSxcbn06IHtcbiAgYW5jaG9yRWxlbT86IEhUTUxFbGVtZW50XG59KTogSlNYLkVsZW1lbnQgfCBudWxsIHtcbiAgY29uc3QgW2VkaXRvcl0gPSB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0KClcbiAgcmV0dXJuIHVzZUZsb2F0aW5nVGV4dEZvcm1hdFRvb2xiYXIoZWRpdG9yLCBhbmNob3JFbGVtKVxufVxuIl0sIm5hbWVzIjpbIkZsb2F0aW5nU2VsZWN0VG9vbGJhclBsdWdpbiIsIkZsb2F0aW5nU2VsZWN0VG9vbGJhciIsImFuY2hvckVsZW0iLCJlZGl0b3IiLCJwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYiLCJ1c2VSZWYiLCJjYXJldFJlZiIsImVkaXRvckNvbmZpZyIsInVzZUVkaXRvckNvbmZpZ0NvbnRleHQiLCJjbG9zZUZsb2F0aW5nVG9vbGJhciIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsImlzT3BhY2l0eVplcm8iLCJzdHlsZSIsIm9wYWNpdHkiLCJpc1BvaW50ZXJFdmVudHNOb25lIiwicG9pbnRlckV2ZW50cyIsIm1vdXNlTW92ZUxpc3RlbmVyIiwiZSIsImJ1dHRvbnMiLCJ4IiwiY2xpZW50WCIsInkiLCJjbGllbnRZIiwiZWxlbWVudFVuZGVyTW91c2UiLCJkb2N1bWVudCIsImVsZW1lbnRGcm9tUG9pbnQiLCJjb250YWlucyIsIm1vdXNlVXBMaXN0ZW5lciIsInVzZUVmZmVjdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhciIsInNlbGVjdGlvbiIsIiRnZXRTZWxlY3Rpb24iLCJwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtIiwibmF0aXZlU2VsZWN0aW9uIiwid2luZG93IiwiZ2V0U2VsZWN0aW9uIiwicm9vdEVsZW1lbnQiLCJnZXRSb290RWxlbWVudCIsImlzQ29sbGFwc2VkIiwiYW5jaG9yTm9kZSIsInJhbmdlUmVjdCIsImdldERPTVJhbmdlUmVjdCIsInNldEZsb2F0aW5nRWxlbVBvc2l0aW9uIiwic2Nyb2xsZXJFbGVtIiwicGFyZW50RWxlbWVudCIsInVwZGF0ZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsIm1lcmdlUmVnaXN0ZXIiLCJyZWdpc3RlclVwZGF0ZUxpc3RlbmVyIiwiZWRpdG9yU3RhdGUiLCJyZWdpc3RlckNvbW1hbmQiLCJTRUxFQ1RJT05fQ0hBTkdFX0NPTU1BTkQiLCJDT01NQU5EX1BSSU9SSVRZX0xPVyIsImRpdiIsImNsYXNzTmFtZSIsInJlZiIsImlzRWRpdGFibGUiLCJSZWFjdCIsIkZyYWdtZW50IiwiZmVhdHVyZXMiLCJmbG9hdGluZ1NlbGVjdFRvb2xiYXIiLCJzZWN0aW9ucyIsIm1hcCIsInNlY3Rpb24iLCJpIiwia2V5IiwidHlwZSIsImVudHJpZXMiLCJsZW5ndGgiLCJUb29sYmFyRHJvcGRvd24iLCJJY29uIiwiQ2hpbGRDb21wb25lbnQiLCJlbnRyeSIsIkNvbXBvbmVudCIsIlRvb2xiYXJCdXR0b24iLCJ1c2VGbG9hdGluZ1RleHRGb3JtYXRUb29sYmFyIiwiaXNUZXh0Iiwic2V0SXNUZXh0IiwidXNlU3RhdGUiLCJ1cGRhdGVQb3B1cCIsImlzQ29tcG9zaW5nIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCJnZXRUZXh0Q29udGVudCIsIm5vZGVzIiwiZ2V0Tm9kZXMiLCJmb3VuZE5vZGVXaXRoVGV4dCIsIm5vZGUiLCIkaXNUZXh0Tm9kZSIsInJhd1RleHRDb250ZW50IiwicmVwbGFjZSIsInJlZ2lzdGVyUm9vdExpc3RlbmVyIiwiY3JlYXRlUG9ydGFsIiwiYm9keSIsInVzZUxleGljYWxDb21wb3NlckNvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OzsrQkFpVGdCQTs7O2VB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
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvRmxvYXRpbmdTZWxlY3RUb29sYmFyL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgTGV4aWNhbEVkaXRvciB9IGZyb20gJ2xleGljYWwnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgbWVyZ2VSZWdpc3RlciB9IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuaW1wb3J0IHtcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzUmFuZ2VTZWxlY3Rpb24sXG4gICRpc1RleHROb2RlLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgU0VMRUNUSU9OX0NIQU5HRV9DT01NQU5ELFxufSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5cbmltcG9ydCB0eXBlIHsgRmxvYXRpbmdUb29sYmFyU2VjdGlvbiwgRmxvYXRpbmdUb29sYmFyU2VjdGlvbkVudHJ5IH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgdXNlRWRpdG9yQ29uZmlnQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbmZpZy9FZGl0b3JDb25maWdQcm92aWRlcidcbmltcG9ydCB7IGdldERPTVJhbmdlUmVjdCB9IGZyb20gJy4uLy4uL3V0aWxzL2dldERPTVJhbmdlUmVjdCdcbmltcG9ydCB7IHNldEZsb2F0aW5nRWxlbVBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2V0RmxvYXRpbmdFbGVtUG9zaXRpb24nXG5pbXBvcnQgeyBUb29sYmFyQnV0dG9uIH0gZnJvbSAnLi9Ub29sYmFyQnV0dG9uJ1xuaW1wb3J0IHsgVG9vbGJhckRyb3Bkb3duIH0gZnJvbSAnLi9Ub29sYmFyRHJvcGRvd24nXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuZnVuY3Rpb24gQnV0dG9uU2VjdGlvbkVudHJ5KHtcbiAgYW5jaG9yRWxlbSxcbiAgZWRpdG9yLFxuICBlbnRyeSxcbn06IHtcbiAgYW5jaG9yRWxlbTogSFRNTEVsZW1lbnRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGVudHJ5OiBGbG9hdGluZ1Rvb2xiYXJTZWN0aW9uRW50cnlcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IENvbXBvbmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBlbnRyeT8uQ29tcG9uZW50XG4gICAgICA/IFJlYWN0LmxhenkoKCkgPT5cbiAgICAgICAgICBlbnRyeS5Db21wb25lbnQoKS50aGVuKChyZXNvbHZlZENvbXBvbmVudCkgPT4gKHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJlc29sdmVkQ29tcG9uZW50LFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgKVxuICAgICAgOiBudWxsXG4gIH0sIFtlbnRyeV0pXG5cbiAgY29uc3QgQ2hpbGRDb21wb25lbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gZW50cnk/LkNoaWxkQ29tcG9uZW50XG4gICAgICA/IFJlYWN0LmxhenkoKCkgPT5cbiAgICAgICAgICBlbnRyeS5DaGlsZENvbXBvbmVudCgpLnRoZW4oKHJlc29sdmVkQ2hpbGRDb21wb25lbnQpID0+ICh7XG4gICAgICAgICAgICBkZWZhdWx0OiByZXNvbHZlZENoaWxkQ29tcG9uZW50LFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgKVxuICAgICAgOiBudWxsXG4gIH0sIFtlbnRyeV0pXG5cbiAgaWYgKGVudHJ5LkNvbXBvbmVudCkge1xuICAgIHJldHVybiAoXG4gICAgICBDb21wb25lbnQgJiYgKFxuICAgICAgICA8UmVhY3QuU3VzcGVuc2U+XG4gICAgICAgICAgPENvbXBvbmVudCBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0gLz57JyAnfVxuICAgICAgICA8L1JlYWN0LlN1c3BlbnNlPlxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFRvb2xiYXJCdXR0b24gZW50cnk9e2VudHJ5fSBrZXk9e2VudHJ5LmtleX0+XG4gICAgICB7Q2hpbGRDb21wb25lbnQgJiYgKFxuICAgICAgICA8UmVhY3QuU3VzcGVuc2U+XG4gICAgICAgICAgPENoaWxkQ29tcG9uZW50IC8+XG4gICAgICAgIDwvUmVhY3QuU3VzcGVuc2U+XG4gICAgICApfVxuICAgIDwvVG9vbGJhckJ1dHRvbj5cbiAgKVxufVxuXG5mdW5jdGlvbiBUb29sYmFyU2VjdGlvbih7XG4gIGFuY2hvckVsZW0sXG4gIGVkaXRvcixcbiAgaW5kZXgsXG4gIHNlY3Rpb24sXG59OiB7XG4gIGFuY2hvckVsZW06IEhUTUxFbGVtZW50XG4gIGVkaXRvcjogTGV4aWNhbEVkaXRvclxuICBpbmRleDogbnVtYmVyXG4gIHNlY3Rpb246IEZsb2F0aW5nVG9vbGJhclNlY3Rpb25cbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IHsgZWRpdG9yQ29uZmlnIH0gPSB1c2VFZGl0b3JDb25maWdDb250ZXh0KClcblxuICBjb25zdCBJY29uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHNlY3Rpb24/LnR5cGUgPT09ICdkcm9wZG93bicgJiYgc2VjdGlvbi5lbnRyaWVzLmxlbmd0aCAmJiBzZWN0aW9uLkNoaWxkQ29tcG9uZW50XG4gICAgICA/IFJlYWN0LmxhenkoKCkgPT5cbiAgICAgICAgICBzZWN0aW9uLkNoaWxkQ29tcG9uZW50KCkudGhlbigocmVzb2x2ZWRDb21wb25lbnQpID0+ICh7XG4gICAgICAgICAgICBkZWZhdWx0OiByZXNvbHZlZENvbXBvbmVudCxcbiAgICAgICAgICB9KSksXG4gICAgICAgIClcbiAgICAgIDogbnVsbFxuICB9LCBbc2VjdGlvbl0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2BmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fc2VjdGlvbiBmbG9hdGluZy1zZWxlY3QtdG9vbGJhci1wb3B1cF9fc2VjdGlvbi0ke3NlY3Rpb24ua2V5fWB9XG4gICAgICBrZXk9e3NlY3Rpb24ua2V5fVxuICAgID5cbiAgICAgIHtzZWN0aW9uLnR5cGUgPT09ICdkcm9wZG93bicgJiZcbiAgICAgICAgc2VjdGlvbi5lbnRyaWVzLmxlbmd0aCAmJlxuICAgICAgICAoSWNvbiA/IChcbiAgICAgICAgICA8UmVhY3QuU3VzcGVuc2U+XG4gICAgICAgICAgICA8VG9vbGJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIEljb249e0ljb259XG4gICAgICAgICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgICBlbnRyaWVzPXtzZWN0aW9uLmVudHJpZXN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvUmVhY3QuU3VzcGVuc2U+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFRvb2xiYXJEcm9wZG93biBhbmNob3JFbGVtPXthbmNob3JFbGVtfSBlZGl0b3I9e2VkaXRvcn0gZW50cmllcz17c2VjdGlvbi5lbnRyaWVzfSAvPlxuICAgICAgICApKX1cbiAgICAgIHtzZWN0aW9uLnR5cGUgPT09ICdidXR0b25zJyAmJlxuICAgICAgICBzZWN0aW9uLmVudHJpZXMubGVuZ3RoICYmXG4gICAgICAgIHNlY3Rpb24uZW50cmllcy5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxCdXR0b25TZWN0aW9uRW50cnlcbiAgICAgICAgICAgICAgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX1cbiAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgIGVudHJ5PXtlbnRyeX1cbiAgICAgICAgICAgICAga2V5PXtlbnRyeS5rZXl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIClcbiAgICAgICAgfSl9XG4gICAgICB7aW5kZXggPCBlZGl0b3JDb25maWcuZmVhdHVyZXMuZmxvYXRpbmdTZWxlY3RUb29sYmFyPy5zZWN0aW9ucy5sZW5ndGggLSAxICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkaXZpZGVyXCIgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gRmxvYXRpbmdTZWxlY3RUb29sYmFyKHtcbiAgYW5jaG9yRWxlbSxcbiAgZWRpdG9yLFxufToge1xuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudFxuICBlZGl0b3I6IExleGljYWxFZGl0b3Jcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGNhcmV0UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbClcblxuICBjb25zdCB7IGVkaXRvckNvbmZpZyB9ID0gdXNlRWRpdG9yQ29uZmlnQ29udGV4dCgpXG5cbiAgY29uc3QgY2xvc2VGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZj8uY3VycmVudCkge1xuICAgICAgY29uc3QgaXNPcGFjaXR5WmVybyA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPT09ICcwJ1xuICAgICAgY29uc3QgaXNQb2ludGVyRXZlbnRzTm9uZSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdub25lJ1xuXG4gICAgICBpZiAoIWlzT3BhY2l0eVplcm8pIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSA9ICcwJ1xuICAgICAgfVxuICAgICAgaWYgKCFpc1BvaW50ZXJFdmVudHNOb25lKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSdcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZdKVxuXG4gIGNvbnN0IG1vdXNlTW92ZUxpc3RlbmVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWY/LmN1cnJlbnQgJiYgKGUuYnV0dG9ucyA9PT0gMSB8fCBlLmJ1dHRvbnMgPT09IDMpKSB7XG4gICAgICAgIGNvbnN0IGlzT3BhY2l0eVplcm8gPSBwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5vcGFjaXR5ID09PSAnMCdcbiAgICAgICAgY29uc3QgaXNQb2ludGVyRXZlbnRzTm9uZSA9IHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdub25lJ1xuICAgICAgICBpZiAoIWlzT3BhY2l0eVplcm8gfHwgIWlzUG9pbnRlckV2ZW50c05vbmUpIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgbW91c2UgaXMgbm90IG92ZXIgdGhlIHBvcHVwXG4gICAgICAgICAgY29uc3QgeCA9IGUuY2xpZW50WFxuICAgICAgICAgIGNvbnN0IHkgPSBlLmNsaWVudFlcbiAgICAgICAgICBjb25zdCBlbGVtZW50VW5kZXJNb3VzZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSlcbiAgICAgICAgICBpZiAoIXBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LmNvbnRhaW5zKGVsZW1lbnRVbmRlck1vdXNlKSkge1xuICAgICAgICAgICAgLy8gTW91c2UgaXMgbm90IG92ZXIgdGhlIHRhcmdldCBlbGVtZW50ID0+IG5vdCBhIG5vcm1hbCBjbGljaywgYnV0IHByb2JhYmx5IGEgZHJhZ1xuICAgICAgICAgICAgY2xvc2VGbG9hdGluZ1Rvb2xiYXIoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2Nsb3NlRmxvYXRpbmdUb29sYmFyXSxcbiAgKVxuXG4gIGNvbnN0IG1vdXNlVXBMaXN0ZW5lciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmPy5jdXJyZW50KSB7XG4gICAgICBpZiAocG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUub3BhY2l0eSAhPT0gJzEnKSB7XG4gICAgICAgIHBvcHVwQ2hhclN0eWxlc0VkaXRvclJlZi5jdXJyZW50LnN0eWxlLm9wYWNpdHkgPSAnMSdcbiAgICAgIH1cbiAgICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYuY3VycmVudC5zdHlsZS5wb2ludGVyRXZlbnRzICE9PSAnYXV0bycpIHtcbiAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdhdXRvJ1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3BvcHVwQ2hhclN0eWxlc0VkaXRvclJlZl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZU1vdmVMaXN0ZW5lcilcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcExpc3RlbmVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUxpc3RlbmVyKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWYsIG1vdXNlTW92ZUxpc3RlbmVyLCBtb3VzZVVwTGlzdGVuZXJdKVxuXG4gIGNvbnN0IHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gJGdldFNlbGVjdGlvbigpXG5cbiAgICBjb25zdCBwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID0gcG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmLmN1cnJlbnRcbiAgICBjb25zdCBuYXRpdmVTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKClcblxuICAgIGlmIChwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtID09PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgaWYgKFxuICAgICAgc2VsZWN0aW9uICE9PSBudWxsICYmXG4gICAgICBuYXRpdmVTZWxlY3Rpb24gIT09IG51bGwgJiZcbiAgICAgICFuYXRpdmVTZWxlY3Rpb24uaXNDb2xsYXBzZWQgJiZcbiAgICAgIHJvb3RFbGVtZW50ICE9PSBudWxsICYmXG4gICAgICByb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHJhbmdlUmVjdCA9IGdldERPTVJhbmdlUmVjdChuYXRpdmVTZWxlY3Rpb24sIHJvb3RFbGVtZW50KVxuXG4gICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihyYW5nZVJlY3QsIHBvcHVwQ2hhclN0eWxlc0VkaXRvckVsZW0sIGFuY2hvckVsZW0sICdjZW50ZXInKVxuXG4gICAgICBpZiAoY2FyZXRSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRGbG9hdGluZ0VsZW1Qb3NpdGlvbihcbiAgICAgICAgICByYW5nZVJlY3QsIC8vIHNlbGVjdGlvbiB0byBwb3NpdGlvbiBhcm91bmRcbiAgICAgICAgICBjYXJldFJlZi5jdXJyZW50LCAvLyB3aGF0IHRvIHBvc2l0aW9uXG4gICAgICAgICAgcG9wdXBDaGFyU3R5bGVzRWRpdG9yRWxlbSwgLy8gYW5jaG9yIGVsZW1cbiAgICAgICAgICAnY2VudGVyJyxcbiAgICAgICAgICAxMCxcbiAgICAgICAgICA1LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsZXJFbGVtID0gYW5jaG9yRWxlbS5wYXJlbnRFbGVtZW50XG5cbiAgICBjb25zdCB1cGRhdGUgPSAoKSA9PiB7XG4gICAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcigpXG4gICAgICB9KVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpXG4gICAgaWYgKHNjcm9sbGVyRWxlbSkge1xuICAgICAgc2Nyb2xsZXJFbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSlcbiAgICAgIGlmIChzY3JvbGxlckVsZW0pIHtcbiAgICAgICAgc2Nyb2xsZXJFbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIHVwZGF0ZVRleHRGb3JtYXRGbG9hdGluZ1Rvb2xiYXIsIGFuY2hvckVsZW1dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZWRpdG9yLmdldEVkaXRvclN0YXRlKCkucmVhZCgoKSA9PiB7XG4gICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICB9KVxuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKHsgZWRpdG9yU3RhdGUgfSkgPT4ge1xuICAgICAgICBlZGl0b3JTdGF0ZS5yZWFkKCgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kKFxuICAgICAgICBTRUxFQ1RJT05fQ0hBTkdFX0NPTU1BTkQsXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB1cGRhdGVUZXh0Rm9ybWF0RmxvYXRpbmdUb29sYmFyKClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhcl0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb2F0aW5nLXNlbGVjdC10b29sYmFyLXBvcHVwXCIgcmVmPXtwb3B1cENoYXJTdHlsZXNFZGl0b3JSZWZ9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYXJldFwiIHJlZj17Y2FyZXRSZWZ9IC8+XG4gICAgICB7ZWRpdG9yLmlzRWRpdGFibGUoKSAmJiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICB7ZWRpdG9yQ29uZmlnPy5mZWF0dXJlcyAmJlxuICAgICAgICAgICAgZWRpdG9yQ29uZmlnLmZlYXR1cmVzPy5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zLm1hcCgoc2VjdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUb29sYmFyU2VjdGlvblxuICAgICAgICAgICAgICAgICAgYW5jaG9yRWxlbT17YW5jaG9yRWxlbX1cbiAgICAgICAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgICAgICAgaW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICBrZXk9e3NlY3Rpb24ua2V5fVxuICAgICAgICAgICAgICAgICAgc2VjdGlvbj17c2VjdGlvbn1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yLFxuICBhbmNob3JFbGVtOiBIVE1MRWxlbWVudCxcbik6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtpc1RleHQsIHNldElzVGV4dF0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCB1cGRhdGVQb3B1cCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBlZGl0b3IuZ2V0RWRpdG9yU3RhdGUoKS5yZWFkKCgpID0+IHtcbiAgICAgIC8vIFNob3VsZCBub3QgdG8gcG9wIHVwIHRoZSBmbG9hdGluZyB0b29sYmFyIHdoZW4gdXNpbmcgSU1FIGlucHV0XG4gICAgICBpZiAoZWRpdG9yLmlzQ29tcG9zaW5nKCkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgICAgIGNvbnN0IG5hdGl2ZVNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKVxuICAgICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuXG4gICAgICBpZiAoXG4gICAgICAgIG5hdGl2ZVNlbGVjdGlvbiAhPT0gbnVsbCAmJlxuICAgICAgICAoISRpc1JhbmdlU2VsZWN0aW9uKHNlbGVjdGlvbikgfHxcbiAgICAgICAgICByb290RWxlbWVudCA9PT0gbnVsbCB8fFxuICAgICAgICAgICFyb290RWxlbWVudC5jb250YWlucyhuYXRpdmVTZWxlY3Rpb24uYW5jaG9yTm9kZSkpXG4gICAgICApIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZWN0aW9uLmdldFRleHRDb250ZW50KCkgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gc2VsZWN0aW9uLmdldE5vZGVzKClcbiAgICAgICAgbGV0IGZvdW5kTm9kZVdpdGhUZXh0ID0gZmFsc2VcbiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgaWYgKCRpc1RleHROb2RlKG5vZGUpKSB7XG4gICAgICAgICAgICBzZXRJc1RleHQodHJ1ZSlcbiAgICAgICAgICAgIGZvdW5kTm9kZVdpdGhUZXh0ID0gdHJ1ZVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmb3VuZE5vZGVXaXRoVGV4dCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SXNUZXh0KGZhbHNlKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByYXdUZXh0Q29udGVudCA9IHNlbGVjdGlvbi5nZXRUZXh0Q29udGVudCgpLnJlcGxhY2UoL1xcbi9nLCAnJylcbiAgICAgIGlmICghc2VsZWN0aW9uLmlzQ29sbGFwc2VkKCkgJiYgcmF3VGV4dENvbnRlbnQgPT09ICcnKSB7XG4gICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW2VkaXRvcl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCB1cGRhdGVQb3B1cClcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdXBkYXRlUG9wdXApXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsIHVwZGF0ZVBvcHVwKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZGF0ZVBvcHVwKVxuICAgIH1cbiAgfSwgW3VwZGF0ZVBvcHVwXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyVXBkYXRlTGlzdGVuZXIoKCkgPT4ge1xuICAgICAgICB1cGRhdGVQb3B1cCgpXG4gICAgICB9KSxcbiAgICAgIGVkaXRvci5yZWdpc3RlclJvb3RMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgIGlmIChlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKSA9PT0gbnVsbCkge1xuICAgICAgICAgIHNldElzVGV4dChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuICB9LCBbZWRpdG9yLCB1cGRhdGVQb3B1cF0pXG5cbiAgaWYgKCFpc1RleHQpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbCg8RmxvYXRpbmdTZWxlY3RUb29sYmFyIGFuY2hvckVsZW09e2FuY2hvckVsZW19IGVkaXRvcj17ZWRpdG9yfSAvPiwgYW5jaG9yRWxlbSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZsb2F0aW5nU2VsZWN0VG9vbGJhclBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICByZXR1cm4gdXNlRmxvYXRpbmdUZXh0Rm9ybWF0VG9vbGJhcihlZGl0b3IsIGFuY2hvckVsZW0pXG59XG4iXSwibmFtZXMiOlsiRmxvYXRpbmdTZWxlY3RUb29sYmFyUGx1Z2luIiwiQnV0dG9uU2VjdGlvbkVudHJ5IiwiYW5jaG9yRWxlbSIsImVkaXRvciIsImVudHJ5IiwiQ29tcG9uZW50IiwidXNlTWVtbyIsIlJlYWN0IiwibGF6eSIsInRoZW4iLCJyZXNvbHZlZENvbXBvbmVudCIsImRlZmF1bHQiLCJDaGlsZENvbXBvbmVudCIsInJlc29sdmVkQ2hpbGRDb21wb25lbnQiLCJTdXNwZW5zZSIsImtleSIsIlRvb2xiYXJCdXR0b24iLCJUb29sYmFyU2VjdGlvbiIsImluZGV4Iiwic2VjdGlvbiIsImVkaXRvckNvbmZpZyIsInVzZUVkaXRvckNvbmZpZ0NvbnRleHQiLCJJY29uIiwidHlwZSIsImVudHJpZXMiLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJUb29sYmFyRHJvcGRvd24iLCJtYXAiLCJmZWF0dXJlcyIsImZsb2F0aW5nU2VsZWN0VG9vbGJhciIsInNlY3Rpb25zIiwiRmxvYXRpbmdTZWxlY3RUb29sYmFyIiwicG9wdXBDaGFyU3R5bGVzRWRpdG9yUmVmIiwidXNlUmVmIiwiY2FyZXRSZWYiLCJjbG9zZUZsb2F0aW5nVG9vbGJhciIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsImlzT3BhY2l0eVplcm8iLCJzdHlsZSIsIm9wYWNpdHkiLCJpc1BvaW50ZXJFdmVudHNOb25lIiwicG9pbnRlckV2ZW50cyIsIm1vdXNlTW92ZUxpc3RlbmVyIiwiZSIsImJ1dHRvbnMiLCJ4IiwiY2xpZW50WCIsInkiLCJjbGllbnRZIiwiZWxlbWVudFVuZGVyTW91c2UiLCJkb2N1bWVudCIsImVsZW1lbnRGcm9tUG9pbnQiLCJjb250YWlucyIsIm1vdXNlVXBMaXN0ZW5lciIsInVzZUVmZmVjdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXBkYXRlVGV4dEZvcm1hdEZsb2F0aW5nVG9vbGJhciIsInNlbGVjdGlvbiIsIiRnZXRTZWxlY3Rpb24iLCJwb3B1cENoYXJTdHlsZXNFZGl0b3JFbGVtIiwibmF0aXZlU2VsZWN0aW9uIiwid2luZG93IiwiZ2V0U2VsZWN0aW9uIiwicm9vdEVsZW1lbnQiLCJnZXRSb290RWxlbWVudCIsImlzQ29sbGFwc2VkIiwiYW5jaG9yTm9kZSIsInJhbmdlUmVjdCIsImdldERPTVJhbmdlUmVjdCIsInNldEZsb2F0aW5nRWxlbVBvc2l0aW9uIiwic2Nyb2xsZXJFbGVtIiwicGFyZW50RWxlbWVudCIsInVwZGF0ZSIsImdldEVkaXRvclN0YXRlIiwicmVhZCIsIm1lcmdlUmVnaXN0ZXIiLCJyZWdpc3RlclVwZGF0ZUxpc3RlbmVyIiwiZWRpdG9yU3RhdGUiLCJyZWdpc3RlckNvbW1hbmQiLCJTRUxFQ1RJT05fQ0hBTkdFX0NPTU1BTkQiLCJDT01NQU5EX1BSSU9SSVRZX0xPVyIsInJlZiIsImlzRWRpdGFibGUiLCJGcmFnbWVudCIsImkiLCJ1c2VGbG9hdGluZ1RleHRGb3JtYXRUb29sYmFyIiwiaXNUZXh0Iiwic2V0SXNUZXh0IiwidXNlU3RhdGUiLCJ1cGRhdGVQb3B1cCIsImlzQ29tcG9zaW5nIiwiJGlzUmFuZ2VTZWxlY3Rpb24iLCJnZXRUZXh0Q29udGVudCIsIm5vZGVzIiwiZ2V0Tm9kZXMiLCJmb3VuZE5vZGVXaXRoVGV4dCIsIm5vZGUiLCIkaXNUZXh0Tm9kZSIsInJhd1RleHRDb250ZW50IiwicmVwbGFjZSIsInJlZ2lzdGVyUm9vdExpc3RlbmVyIiwiY3JlYXRlUG9ydGFsIiwiYm9keSIsInVzZUxleGljYWxDb21wb3NlckNvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OzsrQkFzWWdCQTs7O2VBQUFBOzs7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
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
2
1
  import type { BaseSelection, LexicalEditor } from 'lexical';
2
+ import type React from 'react';
3
3
  export type FloatingToolbarSection = {
4
- ChildComponent?: React.FC;
4
+ ChildComponent?: () => Promise<React.FC>;
5
5
  entries: Array<FloatingToolbarSectionEntry>;
6
6
  key: string;
7
7
  order?: number;
@@ -13,13 +13,13 @@ export type FloatingToolbarSection = {
13
13
  type: 'buttons';
14
14
  };
15
15
  export type FloatingToolbarSectionEntry = {
16
- ChildComponent?: React.FC;
16
+ ChildComponent?: () => Promise<React.FC>;
17
17
  /** Use component to ignore the children and onClick properties. It does not use the default, pre-defined format Button component */
18
- Component?: React.FC<{
18
+ Component?: () => Promise<React.FC<{
19
19
  anchorElem: HTMLElement;
20
20
  editor: LexicalEditor;
21
21
  entry: FloatingToolbarSectionEntry;
22
- }>;
22
+ }>>;
23
23
  isActive?: ({ editor, selection }: {
24
24
  editor: LexicalEditor;
25
25
  selection: BaseSelection;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/plugins/FloatingSelectToolbar/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE3D,MAAM,MAAM,sBAAsB,GAC9B;IACE,cAAc,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IACzB,OAAO,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,UAAU,CAAA;CACjB,GACD;IACE,OAAO,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAEL,MAAM,MAAM,2BAA2B,GAAG;IACxC,cAAc,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IACzB,oIAAoI;IACpI,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QACnB,UAAU,EAAE,WAAW,CAAA;QACvB,MAAM,EAAE,aAAa,CAAA;QACrB,KAAK,EAAE,2BAA2B,CAAA;KACnC,CAAC,CAAA;IACF,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,SAAS,EAAE,aAAa,CAAA;KAAE,KAAK,OAAO,CAAA;IAClG,SAAS,CAAC,EAAE,CAAC,EACX,MAAM,EACN,SAAS,GACV,EAAE;QACD,MAAM,EAAE,aAAa,CAAA;QACrB,SAAS,EAAE,aAAa,CAAA;KACzB,KAAK,OAAO,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACtF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/plugins/FloatingSelectToolbar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,MAAM,sBAAsB,GAC9B;IACE,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACxC,OAAO,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,UAAU,CAAA;CACjB,GACD;IACE,OAAO,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAEL,MAAM,MAAM,2BAA2B,GAAG;IACxC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACxC,oIAAoI;IACpI,SAAS,CAAC,EAAE,MAAM,OAAO,CACvB,KAAK,CAAC,EAAE,CAAC;QACP,UAAU,EAAE,WAAW,CAAA;QACvB,MAAM,EAAE,aAAa,CAAA;QACrB,KAAK,EAAE,2BAA2B,CAAA;KACnC,CAAC,CACH,CAAA;IACD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,SAAS,EAAE,aAAa,CAAA;KAAE,KAAK,OAAO,CAAA;IAClG,SAAS,CAAC,EAAE,CAAC,EACX,MAAM,EACN,SAAS,GACV,EAAE;QACD,MAAM,EAAE,aAAa,CAAA;QACrB,SAAS,EAAE,aAAa,CAAA;KACzB,KAAK,OAAO,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACtF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
@@ -1,8 +1,9 @@
1
1
  import type { i18n } from 'i18next';
2
2
  import type { LexicalEditor } from 'lexical';
3
3
  import type { MutableRefObject } from 'react';
4
+ import type React from 'react';
4
5
  export declare class SlashMenuOption {
5
- Icon: React.FC;
6
+ Icon: () => Promise<React.FC>;
6
7
  displayName?: (({ i18n }: {
7
8
  i18n: i18n;
8
9
  }) => string) | string;
@@ -15,7 +16,7 @@ export declare class SlashMenuOption {
15
16
  }) => void;
16
17
  ref?: MutableRefObject<HTMLElement | null>;
17
18
  constructor(key: string, options: {
18
- Icon: React.FC;
19
+ Icon: () => Promise<React.FC>;
19
20
  displayName?: (({ i18n }: {
20
21
  i18n: i18n;
21
22
  }) => string) | string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAE7C,qBAAa,eAAe;IAE1B,IAAI,EAAE,KAAK,CAAC,EAAE,CAAA;IAEd,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,MAAM,CAAC,GAAG,MAAM,CAAA;IAE7D,GAAG,EAAE,MAAM,CAAA;IAEX,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAEvB,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAE3F,GAAG,CAAC,EAAE,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;gBAGxC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QACP,IAAI,EAAE,KAAK,CAAC,EAAE,CAAA;QACd,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;YAAE,IAAI,EAAE,IAAI,CAAA;SAAE,KAAK,MAAM,CAAC,GAAG,MAAM,CAAA;QAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACxB,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;YAAE,MAAM,EAAE,aAAa,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAA;KAC5F;IAaH,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;CAG1C;AAED,qBAAa,cAAc;IAEzB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,MAAM,CAAC,GAAG,MAAM,CAAA;IAC7D,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;CAChC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,qBAAa,eAAe;IAE1B,IAAI,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAE7B,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,MAAM,CAAC,GAAG,MAAM,CAAA;IAE7D,GAAG,EAAE,MAAM,CAAA;IAEX,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAEvB,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAE3F,GAAG,CAAC,EAAE,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;gBAGxC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC7B,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;YAAE,IAAI,EAAE,IAAI,CAAA;SAAE,KAAK,MAAM,CAAC,GAAG,MAAM,CAAA;QAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACxB,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;YAAE,MAAM,EAAE,aAAa,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAA;KAC5F;IAaH,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;CAG1C;AAED,qBAAa,cAAc;IAEzB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,MAAM,CAAC,GAAG,MAAM,CAAA;IAC7D,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;CAChC"}
@@ -54,4 +54,4 @@ class SlashMenuGroup {
54
54
  options;
55
55
  }
56
56
 
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgaTE4biB9IGZyb20gJ2kxOG5leHQnXG5pbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBjbGFzcyBTbGFzaE1lbnVPcHRpb24ge1xuICAvLyBJY29uIGZvciBkaXNwbGF5XG4gIEljb246IFJlYWN0LkZDXG5cbiAgZGlzcGxheU5hbWU/OiAoKHsgaTE4biB9OiB7IGkxOG46IGkxOG4gfSkgPT4gc3RyaW5nKSB8IHN0cmluZ1xuICAvLyBVc2VkIGZvciBjbGFzcyBuYW1lcyBhbmQsIGlmIGRpc3BsYXlOYW1lIGlzIG5vdCBwcm92aWRlZCwgZm9yIGRpc3BsYXkuXG4gIGtleTogc3RyaW5nXG4gIC8vIFRCRFxuICBrZXlib2FyZFNob3J0Y3V0Pzogc3RyaW5nXG4gIC8vIEZvciBleHRyYSBzZWFyY2hpbmcuXG4gIGtleXdvcmRzOiBBcnJheTxzdHJpbmc+XG4gIC8vIFdoYXQgaGFwcGVucyB3aGVuIHlvdSBzZWxlY3QgdGhpcyBvcHRpb24/XG4gIG9uU2VsZWN0OiAoeyBlZGl0b3IsIHF1ZXJ5U3RyaW5nIH06IHsgZWRpdG9yOiBMZXhpY2FsRWRpdG9yOyBxdWVyeVN0cmluZzogc3RyaW5nIH0pID0+IHZvaWRcblxuICByZWY/OiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBrZXk6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBJY29uOiBSZWFjdC5GQ1xuICAgICAgZGlzcGxheU5hbWU/OiAoKHsgaTE4biB9OiB7IGkxOG46IGkxOG4gfSkgPT4gc3RyaW5nKSB8IHN0cmluZ1xuICAgICAga2V5Ym9hcmRTaG9ydGN1dD86IHN0cmluZ1xuICAgICAga2V5d29yZHM/OiBBcnJheTxzdHJpbmc+XG4gICAgICBvblNlbGVjdDogKHsgZWRpdG9yLCBxdWVyeVN0cmluZyB9OiB7IGVkaXRvcjogTGV4aWNhbEVkaXRvcjsgcXVlcnlTdHJpbmc6IHN0cmluZyB9KSA9PiB2b2lkXG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy5rZXkgPSBrZXlcbiAgICB0aGlzLnJlZiA9IHsgY3VycmVudDogbnVsbCB9XG4gICAgdGhpcy5zZXRSZWZFbGVtZW50ID0gdGhpcy5zZXRSZWZFbGVtZW50LmJpbmQodGhpcylcblxuICAgIHRoaXMuZGlzcGxheU5hbWUgPSBvcHRpb25zLmRpc3BsYXlOYW1lXG4gICAgdGhpcy5rZXl3b3JkcyA9IG9wdGlvbnMua2V5d29yZHMgfHwgW11cbiAgICB0aGlzLkljb24gPSBvcHRpb25zLkljb25cbiAgICB0aGlzLmtleWJvYXJkU2hvcnRjdXQgPSBvcHRpb25zLmtleWJvYXJkU2hvcnRjdXRcbiAgICB0aGlzLm9uU2VsZWN0ID0gb3B0aW9ucy5vblNlbGVjdC5iaW5kKHRoaXMpXG4gIH1cblxuICBzZXRSZWZFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCkge1xuICAgIHRoaXMucmVmID0geyBjdXJyZW50OiBlbGVtZW50IH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2xhc2hNZW51R3JvdXAge1xuICAvLyBVc2VkIGZvciBjbGFzcyBuYW1lcyBhbmQsIGlmIGRpc3BsYXlOYW1lIGlzIG5vdCBwcm92aWRlZCwgZm9yIGRpc3BsYXkuXG4gIGRpc3BsYXlOYW1lPzogKCh7IGkxOG4gfTogeyBpMThuOiBpMThuIH0pID0+IHN0cmluZykgfCBzdHJpbmdcbiAga2V5OiBzdHJpbmdcbiAgb3B0aW9uczogQXJyYXk8U2xhc2hNZW51T3B0aW9uPlxufVxuIl0sIm5hbWVzIjpbIlNsYXNoTWVudU9wdGlvbiIsIlNsYXNoTWVudUdyb3VwIiwiSWNvbiIsImRpc3BsYXlOYW1lIiwia2V5Iiwia2V5Ym9hcmRTaG9ydGN1dCIsImtleXdvcmRzIiwib25TZWxlY3QiLCJyZWYiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJjdXJyZW50Iiwic2V0UmVmRWxlbWVudCIsImJpbmQiLCJlbGVtZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUlhQSxlQUFlO2VBQWZBOztJQTBDQUMsY0FBYztlQUFkQTs7O0FBMUNOLE1BQU1EO0lBQ1gsbUJBQW1CO0lBQ25CRSxLQUFjO0lBRWRDLFlBQTZEO0lBQzdELHlFQUF5RTtJQUN6RUMsSUFBVztJQUNYLE1BQU07SUFDTkMsaUJBQXlCO0lBQ3pCLHVCQUF1QjtJQUN2QkMsU0FBdUI7SUFDdkIsNENBQTRDO0lBQzVDQyxTQUEyRjtJQUUzRkMsSUFBMEM7SUFFMUNDLFlBQ0VMLEdBQVcsRUFDWE0sT0FNQyxDQUNEO1FBQ0EsSUFBSSxDQUFDTixHQUFHLEdBQUdBO1FBQ1gsSUFBSSxDQUFDSSxHQUFHLEdBQUc7WUFBRUcsU0FBUztRQUFLO1FBQzNCLElBQUksQ0FBQ0MsYUFBYSxHQUFHLElBQUksQ0FBQ0EsYUFBYSxDQUFDQyxJQUFJLENBQUMsSUFBSTtRQUVqRCxJQUFJLENBQUNWLFdBQVcsR0FBR08sUUFBUVAsV0FBVztRQUN0QyxJQUFJLENBQUNHLFFBQVEsR0FBR0ksUUFBUUosUUFBUSxJQUFJLEVBQUU7UUFDdEMsSUFBSSxDQUFDSixJQUFJLEdBQUdRLFFBQVFSLElBQUk7UUFDeEIsSUFBSSxDQUFDRyxnQkFBZ0IsR0FBR0ssUUFBUUwsZ0JBQWdCO1FBQ2hELElBQUksQ0FBQ0UsUUFBUSxHQUFHRyxRQUFRSCxRQUFRLENBQUNNLElBQUksQ0FBQyxJQUFJO0lBQzVDO0lBRUFELGNBQWNFLE9BQTJCLEVBQUU7UUFDekMsSUFBSSxDQUFDTixHQUFHLEdBQUc7WUFBRUcsU0FBU0c7UUFBUTtJQUNoQztBQUNGO0FBRU8sTUFBTWI7SUFDWCx5RUFBeUU7SUFDekVFLFlBQTZEO0lBQzdEQyxJQUFXO0lBQ1hNLFFBQStCO0FBQ2pDIn0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgaTE4biB9IGZyb20gJ2kxOG5leHQnXG5pbXBvcnQgdHlwZSB7IExleGljYWxFZGl0b3IgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGNsYXNzIFNsYXNoTWVudU9wdGlvbiB7XG4gIC8vIEljb24gZm9yIGRpc3BsYXlcbiAgSWNvbjogKCkgPT4gUHJvbWlzZTxSZWFjdC5GQz5cblxuICBkaXNwbGF5TmFtZT86ICgoeyBpMThuIH06IHsgaTE4bjogaTE4biB9KSA9PiBzdHJpbmcpIHwgc3RyaW5nXG4gIC8vIFVzZWQgZm9yIGNsYXNzIG5hbWVzIGFuZCwgaWYgZGlzcGxheU5hbWUgaXMgbm90IHByb3ZpZGVkLCBmb3IgZGlzcGxheS5cbiAga2V5OiBzdHJpbmdcbiAgLy8gVEJEXG4gIGtleWJvYXJkU2hvcnRjdXQ/OiBzdHJpbmdcbiAgLy8gRm9yIGV4dHJhIHNlYXJjaGluZy5cbiAga2V5d29yZHM6IEFycmF5PHN0cmluZz5cbiAgLy8gV2hhdCBoYXBwZW5zIHdoZW4geW91IHNlbGVjdCB0aGlzIG9wdGlvbj9cbiAgb25TZWxlY3Q6ICh7IGVkaXRvciwgcXVlcnlTdHJpbmcgfTogeyBlZGl0b3I6IExleGljYWxFZGl0b3I7IHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfSkgPT4gdm9pZFxuXG4gIHJlZj86IE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCBudWxsPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGtleTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIEljb246ICgpID0+IFByb21pc2U8UmVhY3QuRkM+XG4gICAgICBkaXNwbGF5TmFtZT86ICgoeyBpMThuIH06IHsgaTE4bjogaTE4biB9KSA9PiBzdHJpbmcpIHwgc3RyaW5nXG4gICAgICBrZXlib2FyZFNob3J0Y3V0Pzogc3RyaW5nXG4gICAgICBrZXl3b3Jkcz86IEFycmF5PHN0cmluZz5cbiAgICAgIG9uU2VsZWN0OiAoeyBlZGl0b3IsIHF1ZXJ5U3RyaW5nIH06IHsgZWRpdG9yOiBMZXhpY2FsRWRpdG9yOyBxdWVyeVN0cmluZzogc3RyaW5nIH0pID0+IHZvaWRcbiAgICB9LFxuICApIHtcbiAgICB0aGlzLmtleSA9IGtleVxuICAgIHRoaXMucmVmID0geyBjdXJyZW50OiBudWxsIH1cbiAgICB0aGlzLnNldFJlZkVsZW1lbnQgPSB0aGlzLnNldFJlZkVsZW1lbnQuYmluZCh0aGlzKVxuXG4gICAgdGhpcy5kaXNwbGF5TmFtZSA9IG9wdGlvbnMuZGlzcGxheU5hbWVcbiAgICB0aGlzLmtleXdvcmRzID0gb3B0aW9ucy5rZXl3b3JkcyB8fCBbXVxuICAgIHRoaXMuSWNvbiA9IG9wdGlvbnMuSWNvblxuICAgIHRoaXMua2V5Ym9hcmRTaG9ydGN1dCA9IG9wdGlvbnMua2V5Ym9hcmRTaG9ydGN1dFxuICAgIHRoaXMub25TZWxlY3QgPSBvcHRpb25zLm9uU2VsZWN0LmJpbmQodGhpcylcbiAgfVxuXG4gIHNldFJlZkVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSB7XG4gICAgdGhpcy5yZWYgPSB7IGN1cnJlbnQ6IGVsZW1lbnQgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTbGFzaE1lbnVHcm91cCB7XG4gIC8vIFVzZWQgZm9yIGNsYXNzIG5hbWVzIGFuZCwgaWYgZGlzcGxheU5hbWUgaXMgbm90IHByb3ZpZGVkLCBmb3IgZGlzcGxheS5cbiAgZGlzcGxheU5hbWU/OiAoKHsgaTE4biB9OiB7IGkxOG46IGkxOG4gfSkgPT4gc3RyaW5nKSB8IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICBvcHRpb25zOiBBcnJheTxTbGFzaE1lbnVPcHRpb24+XG59XG4iXSwibmFtZXMiOlsiU2xhc2hNZW51T3B0aW9uIiwiU2xhc2hNZW51R3JvdXAiLCJJY29uIiwiZGlzcGxheU5hbWUiLCJrZXkiLCJrZXlib2FyZFNob3J0Y3V0Iiwia2V5d29yZHMiLCJvblNlbGVjdCIsInJlZiIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImN1cnJlbnQiLCJzZXRSZWZFbGVtZW50IiwiYmluZCIsImVsZW1lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBS2FBLGVBQWU7ZUFBZkE7O0lBMENBQyxjQUFjO2VBQWRBOzs7QUExQ04sTUFBTUQ7SUFDWCxtQkFBbUI7SUFDbkJFLEtBQTZCO0lBRTdCQyxZQUE2RDtJQUM3RCx5RUFBeUU7SUFDekVDLElBQVc7SUFDWCxNQUFNO0lBQ05DLGlCQUF5QjtJQUN6Qix1QkFBdUI7SUFDdkJDLFNBQXVCO0lBQ3ZCLDRDQUE0QztJQUM1Q0MsU0FBMkY7SUFFM0ZDLElBQTBDO0lBRTFDQyxZQUNFTCxHQUFXLEVBQ1hNLE9BTUMsQ0FDRDtRQUNBLElBQUksQ0FBQ04sR0FBRyxHQUFHQTtRQUNYLElBQUksQ0FBQ0ksR0FBRyxHQUFHO1lBQUVHLFNBQVM7UUFBSztRQUMzQixJQUFJLENBQUNDLGFBQWEsR0FBRyxJQUFJLENBQUNBLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDLElBQUk7UUFFakQsSUFBSSxDQUFDVixXQUFXLEdBQUdPLFFBQVFQLFdBQVc7UUFDdEMsSUFBSSxDQUFDRyxRQUFRLEdBQUdJLFFBQVFKLFFBQVEsSUFBSSxFQUFFO1FBQ3RDLElBQUksQ0FBQ0osSUFBSSxHQUFHUSxRQUFRUixJQUFJO1FBQ3hCLElBQUksQ0FBQ0csZ0JBQWdCLEdBQUdLLFFBQVFMLGdCQUFnQjtRQUNoRCxJQUFJLENBQUNFLFFBQVEsR0FBR0csUUFBUUgsUUFBUSxDQUFDTSxJQUFJLENBQUMsSUFBSTtJQUM1QztJQUVBRCxjQUFjRSxPQUEyQixFQUFFO1FBQ3pDLElBQUksQ0FBQ04sR0FBRyxHQUFHO1lBQUVHLFNBQVNHO1FBQVE7SUFDaEM7QUFDRjtBQUVPLE1BQU1iO0lBQ1gseUVBQXlFO0lBQ3pFRSxZQUE2RDtJQUM3REMsSUFBVztJQUNYTSxRQUErQjtBQUNqQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/plugins/SlashMenu/index.tsx"],"names":[],"mappings":";AAaA,OAAO,cAAc,CAAA;AAqDrB,wBAAgB,eAAe,CAAC,EAC9B,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,GAAG,CAAC,OAAO,CA8Jd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/lexical/plugins/SlashMenu/index.tsx"],"names":[],"mappings":";AAaA,OAAO,cAAc,CAAA;AAoErB,wBAAgB,eAAe,CAAC,EAC9B,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,GAAG,CAAC,OAAO,CA8Jd"}
@@ -73,6 +73,13 @@ function SlashMenuItem({ isSelected, onClick, onMouseEnter, option }) {
73
73
  if (title.length > 25) {
74
74
  title = title.substring(0, 25) + '...';
75
75
  }
76
+ const LazyIcon = (0, _react.useMemo)(()=>{
77
+ return option?.Icon ? /*#__PURE__*/ _react.lazy(()=>option.Icon().then((resolvedIcon)=>({
78
+ default: resolvedIcon
79
+ }))) : null;
80
+ }, [
81
+ option
82
+ ]);
76
83
  return /*#__PURE__*/ _react.createElement("button", {
77
84
  "aria-selected": isSelected,
78
85
  className: className,
@@ -84,7 +91,7 @@ function SlashMenuItem({ isSelected, onClick, onMouseEnter, option }) {
84
91
  role: "option",
85
92
  tabIndex: -1,
86
93
  type: "button"
87
- }, /*#__PURE__*/ _react.createElement(option.Icon, null), /*#__PURE__*/ _react.createElement("span", {
94
+ }, LazyIcon && /*#__PURE__*/ _react.createElement(_react.Suspense, null, /*#__PURE__*/ _react.createElement(LazyIcon, null)), /*#__PURE__*/ _react.createElement("span", {
88
95
  className: `${baseClass}__item-text`
89
96
  }, title));
90
97
  }
@@ -216,4 +223,4 @@ function SlashMenuPlugin({ anchorElem = document.body }) {
216
223
  }));
217
224
  }
218
225
 
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgVGV4dE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5cbmltcG9ydCB0eXBlIHsgU2xhc2hNZW51R3JvdXAsIFNsYXNoTWVudU9wdGlvbiB9IGZyb20gJy4vTGV4aWNhbFR5cGVhaGVhZE1lbnVQbHVnaW4vdHlwZXMnXG5cbmltcG9ydCB7IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQgfSBmcm9tICcuLi8uLi9jb25maWcvRWRpdG9yQ29uZmlnUHJvdmlkZXInXG5pbXBvcnQgeyBMZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbiB9IGZyb20gJy4vTGV4aWNhbFR5cGVhaGVhZE1lbnVQbHVnaW4nXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcbmltcG9ydCB7IHVzZU1lbnVUcmlnZ2VyTWF0Y2ggfSBmcm9tICcuL3VzZU1lbnVUcmlnZ2VyTWF0Y2gnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdzbGFzaC1tZW51LXBvcHVwJ1xuXG5mdW5jdGlvbiBTbGFzaE1lbnVJdGVtKHtcbiAgaXNTZWxlY3RlZCxcbiAgb25DbGljayxcbiAgb25Nb3VzZUVudGVyLFxuICBvcHRpb24sXG59OiB7XG4gIGluZGV4OiBudW1iZXJcbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBvbkNsaWNrOiAoKSA9PiB2b2lkXG4gIG9uTW91c2VFbnRlcjogKCkgPT4gdm9pZFxuICBvcHRpb246IFNsYXNoTWVudU9wdGlvblxufSkge1xuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKCdmaWVsZHMnKVxuXG4gIGxldCBjbGFzc05hbWUgPSBgJHtiYXNlQ2xhc3N9X19pdGVtICR7YmFzZUNsYXNzfV9faXRlbS0ke29wdGlvbi5rZXl9YFxuICBpZiAoaXNTZWxlY3RlZCkge1xuICAgIGNsYXNzTmFtZSArPSBgICR7YmFzZUNsYXNzfV9faXRlbS0tc2VsZWN0ZWRgXG4gIH1cblxuICBsZXQgdGl0bGUgPSBvcHRpb24ua2V5XG4gIGlmIChvcHRpb24uZGlzcGxheU5hbWUpIHtcbiAgICB0aXRsZSA9XG4gICAgICB0eXBlb2Ygb3B0aW9uLmRpc3BsYXlOYW1lID09PSAnZnVuY3Rpb24nID8gb3B0aW9uLmRpc3BsYXlOYW1lKHsgaTE4biB9KSA6IG9wdGlvbi5kaXNwbGF5TmFtZVxuICB9XG4gIC8vIENyb3AgdGl0bGUgdG8gbWF4LiA1MCBjaGFyYWN0ZXJzXG4gIGlmICh0aXRsZS5sZW5ndGggPiAyNSkge1xuICAgIHRpdGxlID0gdGl0bGUuc3Vic3RyaW5nKDAsIDI1KSArICcuLi4nXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIGFyaWEtc2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIGlkPXtiYXNlQ2xhc3MgKyAnX19pdGVtLScgKyBvcHRpb24ua2V5fVxuICAgICAga2V5PXtvcHRpb24ua2V5fVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIG9uTW91c2VFbnRlcj17b25Nb3VzZUVudGVyfVxuICAgICAgcmVmPXtvcHRpb24uc2V0UmVmRWxlbWVudH1cbiAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAgPG9wdGlvbi5JY29uIC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2l0ZW0tdGV4dGB9Pnt0aXRsZX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNsYXNoTWVudVBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIGNvbnN0IFtxdWVyeVN0cmluZywgc2V0UXVlcnlTdHJpbmddID0gdXNlU3RhdGU8bnVsbCB8IHN0cmluZz4obnVsbClcbiAgY29uc3QgeyBlZGl0b3JDb25maWcgfSA9IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKCdmaWVsZHMnKVxuXG4gIGNvbnN0IGNoZWNrRm9yVHJpZ2dlck1hdGNoID0gdXNlTWVudVRyaWdnZXJNYXRjaCgnLycsIHtcbiAgICBtaW5MZW5ndGg6IDAsXG4gIH0pXG5cbiAgY29uc3QgZ2V0RHluYW1pY09wdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgbGV0IGdyb3VwV2l0aE9wdGlvbnM6IEFycmF5PFNsYXNoTWVudUdyb3VwPiA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGR5bmFtaWNPcHRpb24gb2YgZWRpdG9yQ29uZmlnLmZlYXR1cmVzLnNsYXNoTWVudS5keW5hbWljT3B0aW9ucykge1xuICAgICAgY29uc3QgZHluYW1pY0dyb3VwV2l0aE9wdGlvbnMgPSBkeW5hbWljT3B0aW9uKHtcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBxdWVyeVN0cmluZyxcbiAgICAgIH0pXG4gICAgICBncm91cFdpdGhPcHRpb25zID0gZ3JvdXBXaXRoT3B0aW9ucy5jb25jYXQoZHluYW1pY0dyb3VwV2l0aE9wdGlvbnMpXG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwV2l0aE9wdGlvbnNcbiAgfSwgW2VkaXRvciwgcXVlcnlTdHJpbmcsIGVkaXRvckNvbmZpZz8uZmVhdHVyZXNdKVxuXG4gIGNvbnN0IGdyb3VwczogU2xhc2hNZW51R3JvdXBbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCBncm91cHNXaXRoT3B0aW9uczogU2xhc2hNZW51R3JvdXBbXSA9IFtdXG4gICAgZm9yIChjb25zdCBncm91cFdpdGhPcHRpb24gb2YgZWRpdG9yQ29uZmlnPy5mZWF0dXJlcy5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnMgPz8gW10pIHtcbiAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLnB1c2goZ3JvdXBXaXRoT3B0aW9uKVxuICAgIH1cblxuICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgLy8gRmlsdGVyIGN1cnJlbnQgZ3JvdXBzIGZpcnN0XG4gICAgICBncm91cHNXaXRoT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLm1hcCgoZ3JvdXApID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gZ3JvdXAub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgICAgIGxldCBvcHRpb25UaXRsZSA9IG9wdGlvbi5rZXlcbiAgICAgICAgICBpZiAob3B0aW9uLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgICBvcHRpb25UaXRsZSA9XG4gICAgICAgICAgICAgIHR5cGVvZiBvcHRpb24uZGlzcGxheU5hbWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IG9wdGlvbi5kaXNwbGF5TmFtZSh7IGkxOG4gfSlcbiAgICAgICAgICAgICAgICA6IG9wdGlvbi5kaXNwbGF5TmFtZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHF1ZXJ5U3RyaW5nLCAnZ2knKS5leGVjKG9wdGlvblRpdGxlKSB8fCBvcHRpb24ua2V5d29yZHMgIT0gbnVsbFxuICAgICAgICAgICAgPyBvcHRpb24ua2V5d29yZHMuc29tZSgoa2V5d29yZCkgPT4gbmV3IFJlZ0V4cChxdWVyeVN0cmluZywgJ2dpJykuZXhlYyhrZXl3b3JkKSlcbiAgICAgICAgICAgIDogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGZpbHRlcmVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgICAgICBvcHRpb25zOiBmaWx0ZXJlZE9wdGlvbnMsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9KVxuXG4gICAgICBncm91cHNXaXRoT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwICE9IG51bGwpXG5cbiAgICAgIC8vIE5vdyBhZGQgZHluYW1pYyBncm91cHNcbiAgICAgIGNvbnN0IGR5bmFtaWNPcHRpb25Hcm91cHMgPSBnZXREeW5hbWljT3B0aW9ucygpXG5cbiAgICAgIC8vIG1lcmdlIGR5bmFtaWMgb3B0aW9ucyBpbnRvIGdyb3Vwc1xuICAgICAgZm9yIChjb25zdCBkeW5hbWljR3JvdXAgb2YgZHluYW1pY09wdGlvbkdyb3Vwcykge1xuICAgICAgICAvLyAxLiBmaW5kIHRoZSBncm91cCB3aXRoIHRoZSBzYW1lIG5hbWUgb3IgY3JlYXRlIG5ldyBvbmVcbiAgICAgICAgbGV0IGdyb3VwID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmluZCgoZ3JvdXApID0+IGdyb3VwLmtleSA9PT0gZHluYW1pY0dyb3VwLmtleSlcbiAgICAgICAgaWYgKCFncm91cCkge1xuICAgICAgICAgIGdyb3VwID0ge1xuICAgICAgICAgICAgLi4uZHluYW1pY0dyb3VwLFxuICAgICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmlsdGVyKChncm91cCkgPT4gZ3JvdXAua2V5ICE9PSBkeW5hbWljR3JvdXAua2V5KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gQWRkIG9wdGlvbnMgdG8gZ3JvdXAgb3B0aW9ucyBhcnJheSBhbmQgYWRkIHRvIHNhbml0aXplZC5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnNcbiAgICAgICAgaWYgKGdyb3VwPy5vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICBncm91cC5vcHRpb25zID0gZ3JvdXAub3B0aW9ucy5jb25jYXQoZ3JvdXAub3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICBncm91cHNXaXRoT3B0aW9ucy5wdXNoKGdyb3VwKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBncm91cHNXaXRoT3B0aW9uc1xuICB9LCBbZ2V0RHluYW1pY09wdGlvbnMsIHF1ZXJ5U3RyaW5nLCBlZGl0b3JDb25maWc/LmZlYXR1cmVzLCBpMThuXSlcblxuICBjb25zdCBvblNlbGVjdE9wdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbGVjdGVkT3B0aW9uOiBTbGFzaE1lbnVPcHRpb24sXG4gICAgICBub2RlVG9SZW1vdmU6IFRleHROb2RlIHwgbnVsbCxcbiAgICAgIGNsb3NlTWVudTogKCkgPT4gdm9pZCxcbiAgICAgIG1hdGNoaW5nU3RyaW5nOiBzdHJpbmcsXG4gICAgKSA9PiB7XG4gICAgICBlZGl0b3IudXBkYXRlKCgpID0+IHtcbiAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkge1xuICAgICAgICAgIG5vZGVUb1JlbW92ZS5yZW1vdmUoKVxuICAgICAgICB9XG4gICAgICAgIHNlbGVjdGVkT3B0aW9uLm9uU2VsZWN0KHsgZWRpdG9yLCBxdWVyeVN0cmluZzogbWF0Y2hpbmdTdHJpbmcgfSlcbiAgICAgICAgY2xvc2VNZW51KClcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZWRpdG9yXSxcbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPExleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luXG4gICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zPXtncm91cHN9XG4gICAgICAgIG1lbnVSZW5kZXJGbj17KFxuICAgICAgICAgIGFuY2hvckVsZW1lbnRSZWYsXG4gICAgICAgICAgeyBzZWxlY3RPcHRpb25BbmRDbGVhblVwLCBzZWxlY3RlZE9wdGlvbktleSwgc2V0U2VsZWN0ZWRPcHRpb25LZXkgfSxcbiAgICAgICAgKSA9PlxuICAgICAgICAgIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCAmJiBncm91cHMubGVuZ3RoXG4gICAgICAgICAgICA/IFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YmFzZUNsYXNzfT5cbiAgICAgICAgICAgICAgICAgIHtncm91cHMubWFwKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXBUaXRsZSA9IGdyb3VwLmtleVxuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBncm91cFRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBncm91cC5kaXNwbGF5TmFtZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdyb3VwLmRpc3BsYXlOYW1lKHsgaTE4biB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdyb3VwLmRpc3BsYXlOYW1lXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZ3JvdXAgJHtiYXNlQ2xhc3N9X19ncm91cC0ke2dyb3VwLmtleX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2dyb3VwLXRpdGxlYH0+e2dyb3VwVGl0bGV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAub3B0aW9ucy5tYXAoKG9wdGlvbiwgb2k6IG51bWJlcikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U2xhc2hNZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtvaX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZE9wdGlvbktleSA9PT0gb3B0aW9uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXkob3B0aW9uLmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZE9wdGlvbktleShvcHRpb24ua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+LFxuICAgICAgICAgICAgICAgIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH1cbiAgICAgICAgb25RdWVyeUNoYW5nZT17c2V0UXVlcnlTdHJpbmd9XG4gICAgICAgIG9uU2VsZWN0T3B0aW9uPXtvblNlbGVjdE9wdGlvbn1cbiAgICAgICAgdHJpZ2dlckZuPXtjaGVja0ZvclRyaWdnZXJNYXRjaH1cbiAgICAgIC8+XG4gICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIlNsYXNoTWVudVBsdWdpbiIsImJhc2VDbGFzcyIsIlNsYXNoTWVudUl0ZW0iLCJpc1NlbGVjdGVkIiwib25DbGljayIsIm9uTW91c2VFbnRlciIsIm9wdGlvbiIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImNsYXNzTmFtZSIsImtleSIsInRpdGxlIiwiZGlzcGxheU5hbWUiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJidXR0b24iLCJhcmlhLXNlbGVjdGVkIiwiaWQiLCJyZWYiLCJzZXRSZWZFbGVtZW50Iiwicm9sZSIsInRhYkluZGV4IiwidHlwZSIsIkljb24iLCJzcGFuIiwiYW5jaG9yRWxlbSIsImRvY3VtZW50IiwiYm9keSIsImVkaXRvciIsInVzZUxleGljYWxDb21wb3NlckNvbnRleHQiLCJxdWVyeVN0cmluZyIsInNldFF1ZXJ5U3RyaW5nIiwidXNlU3RhdGUiLCJlZGl0b3JDb25maWciLCJ1c2VFZGl0b3JDb25maWdDb250ZXh0IiwiY2hlY2tGb3JUcmlnZ2VyTWF0Y2giLCJ1c2VNZW51VHJpZ2dlck1hdGNoIiwibWluTGVuZ3RoIiwiZ2V0RHluYW1pY09wdGlvbnMiLCJ1c2VDYWxsYmFjayIsImdyb3VwV2l0aE9wdGlvbnMiLCJkeW5hbWljT3B0aW9uIiwiZmVhdHVyZXMiLCJzbGFzaE1lbnUiLCJkeW5hbWljT3B0aW9ucyIsImR5bmFtaWNHcm91cFdpdGhPcHRpb25zIiwiY29uY2F0IiwiZ3JvdXBzIiwidXNlTWVtbyIsImdyb3Vwc1dpdGhPcHRpb25zIiwiZ3JvdXBXaXRoT3B0aW9uIiwicHVzaCIsIm1hcCIsImdyb3VwIiwiZmlsdGVyZWRPcHRpb25zIiwib3B0aW9ucyIsImZpbHRlciIsIm9wdGlvblRpdGxlIiwiUmVnRXhwIiwiZXhlYyIsImtleXdvcmRzIiwic29tZSIsImtleXdvcmQiLCJkeW5hbWljT3B0aW9uR3JvdXBzIiwiZHluYW1pY0dyb3VwIiwiZmluZCIsIm9uU2VsZWN0T3B0aW9uIiwic2VsZWN0ZWRPcHRpb24iLCJub2RlVG9SZW1vdmUiLCJjbG9zZU1lbnUiLCJtYXRjaGluZ1N0cmluZyIsInVwZGF0ZSIsInJlbW92ZSIsIm9uU2VsZWN0IiwiUmVhY3QiLCJGcmFnbWVudCIsIkxleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luIiwibWVudVJlbmRlckZuIiwiYW5jaG9yRWxlbWVudFJlZiIsInNlbGVjdE9wdGlvbkFuZENsZWFuVXAiLCJzZWxlY3RlZE9wdGlvbktleSIsInNldFNlbGVjdGVkT3B0aW9uS2V5IiwiY3VycmVudCIsIlJlYWN0RE9NIiwiY3JlYXRlUG9ydGFsIiwiZGl2IiwiZ3JvdXBUaXRsZSIsIm9pIiwiaW5kZXgiLCJvblF1ZXJ5Q2hhbmdlIiwidHJpZ2dlckZuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7K0JBa0VnQkE7OztlQUFBQTs7O3dDQS9EMEI7K0RBQ0s7a0VBRXJCOzhCQUNLO3NDQUlROzRDQUNJO1FBQ3BDO3FDQUM2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVwQyxNQUFNQyxZQUFZO0FBRWxCLFNBQVNDLGNBQWMsRUFDckJDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxZQUFZLEVBQ1pDLE1BQU0sRUFPUDtJQUNDLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdDLElBQUFBLDRCQUFjLEVBQUM7SUFFaEMsSUFBSUMsWUFBWSxDQUFDLEVBQUVSLFVBQVUsT0FBTyxFQUFFQSxVQUFVLE9BQU8sRUFBRUssT0FBT0ksR0FBRyxDQUFDLENBQUM7SUFDckUsSUFBSVAsWUFBWTtRQUNkTSxhQUFhLENBQUMsQ0FBQyxFQUFFUixVQUFVLGdCQUFnQixDQUFDO0lBQzlDO0lBRUEsSUFBSVUsUUFBUUwsT0FBT0ksR0FBRztJQUN0QixJQUFJSixPQUFPTSxXQUFXLEVBQUU7UUFDdEJELFFBQ0UsT0FBT0wsT0FBT00sV0FBVyxLQUFLLGFBQWFOLE9BQU9NLFdBQVcsQ0FBQztZQUFFTDtRQUFLLEtBQUtELE9BQU9NLFdBQVc7SUFDaEc7SUFDQSxtQ0FBbUM7SUFDbkMsSUFBSUQsTUFBTUUsTUFBTSxHQUFHLElBQUk7UUFDckJGLFFBQVFBLE1BQU1HLFNBQVMsQ0FBQyxHQUFHLE1BQU07SUFDbkM7SUFFQSxxQkFDRSxxQkFBQ0M7UUFDQ0MsaUJBQWViO1FBQ2ZNLFdBQVdBO1FBQ1hRLElBQUloQixZQUFZLFlBQVlLLE9BQU9JLEdBQUc7UUFDdENBLEtBQUtKLE9BQU9JLEdBQUc7UUFDZk4sU0FBU0E7UUFDVEMsY0FBY0E7UUFDZGEsS0FBS1osT0FBT2EsYUFBYTtRQUN6QkMsTUFBSztRQUNMQyxVQUFVLENBQUM7UUFDWEMsTUFBSztxQkFFTCxxQkFBQ2hCLE9BQU9pQixJQUFJLHVCQUNaLHFCQUFDQztRQUFLZixXQUFXLENBQUMsRUFBRVIsVUFBVSxXQUFXLENBQUM7T0FBR1U7QUFHbkQ7QUFFTyxTQUFTWCxnQkFBZ0IsRUFDOUJ5QixhQUFhQyxTQUFTQyxJQUFJLEVBRzNCO0lBQ0MsTUFBTSxDQUFDQyxPQUFPLEdBQUdDLElBQUFBLGlEQUF5QjtJQUMxQyxNQUFNLENBQUNDLGFBQWFDLGVBQWUsR0FBR0MsSUFBQUEsZUFBUSxFQUFnQjtJQUM5RCxNQUFNLEVBQUVDLFlBQVksRUFBRSxHQUFHQyxJQUFBQSw0Q0FBc0I7SUFDL0MsTUFBTSxFQUFFM0IsSUFBSSxFQUFFLEdBQUdDLElBQUFBLDRCQUFjLEVBQUM7SUFFaEMsTUFBTTJCLHVCQUF1QkMsSUFBQUEsd0NBQW1CLEVBQUMsS0FBSztRQUNwREMsV0FBVztJQUNiO0lBRUEsTUFBTUMsb0JBQW9CQyxJQUFBQSxrQkFBVyxFQUFDO1FBQ3BDLElBQUlDLG1CQUEwQyxFQUFFO1FBRWhELEtBQUssTUFBTUMsaUJBQWlCUixhQUFhUyxRQUFRLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFFO1lBQzFFLE1BQU1DLDBCQUEwQkosY0FBYztnQkFDNUNiO2dCQUNBRTtZQUNGO1lBQ0FVLG1CQUFtQkEsaUJBQWlCTSxNQUFNLENBQUNEO1FBQzdDO1FBRUEsT0FBT0w7SUFDVCxHQUFHO1FBQUNaO1FBQVFFO1FBQWFHLGNBQWNTO0tBQVM7SUFFaEQsTUFBTUssU0FBMkJDLElBQUFBLGNBQU8sRUFBQztRQUN2QyxJQUFJQyxvQkFBc0MsRUFBRTtRQUM1QyxLQUFLLE1BQU1DLG1CQUFtQmpCLGNBQWNTLFNBQVNDLFVBQVVNLHFCQUFxQixFQUFFLENBQUU7WUFDdEZBLGtCQUFrQkUsSUFBSSxDQUFDRDtRQUN6QjtRQUVBLElBQUlwQixhQUFhO1lBQ2YsOEJBQThCO1lBQzlCbUIsb0JBQW9CQSxrQkFBa0JHLEdBQUcsQ0FBQyxDQUFDQztnQkFDekMsTUFBTUMsa0JBQWtCRCxNQUFNRSxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDbEQ7b0JBQzVDLElBQUltRCxjQUFjbkQsT0FBT0ksR0FBRztvQkFDNUIsSUFBSUosT0FBT00sV0FBVyxFQUFFO3dCQUN0QjZDLGNBQ0UsT0FBT25ELE9BQU9NLFdBQVcsS0FBSyxhQUMxQk4sT0FBT00sV0FBVyxDQUFDOzRCQUFFTDt3QkFBSyxLQUMxQkQsT0FBT00sV0FBVztvQkFDMUI7b0JBRUEsT0FBTyxJQUFJOEMsT0FBTzVCLGFBQWEsTUFBTTZCLElBQUksQ0FBQ0YsZ0JBQWdCbkQsT0FBT3NELFFBQVEsSUFBSSxPQUN6RXRELE9BQU9zRCxRQUFRLENBQUNDLElBQUksQ0FBQyxDQUFDQyxVQUFZLElBQUlKLE9BQU81QixhQUFhLE1BQU02QixJQUFJLENBQUNHLFlBQ3JFO2dCQUNOO2dCQUNBLElBQUlSLGdCQUFnQnpDLE1BQU0sRUFBRTtvQkFDMUIsT0FBTzt3QkFDTCxHQUFHd0MsS0FBSzt3QkFDUkUsU0FBU0Q7b0JBQ1g7Z0JBQ0Y7Z0JBQ0EsT0FBTztZQUNUO1lBRUFMLG9CQUFvQkEsa0JBQWtCTyxNQUFNLENBQUMsQ0FBQ0gsUUFBVUEsU0FBUztZQUVqRSx5QkFBeUI7WUFDekIsTUFBTVUsc0JBQXNCekI7WUFFNUIsb0NBQW9DO1lBQ3BDLEtBQUssTUFBTTBCLGdCQUFnQkQsb0JBQXFCO2dCQUM5Qyx5REFBeUQ7Z0JBQ3pELElBQUlWLFFBQVFKLGtCQUFrQmdCLElBQUksQ0FBQyxDQUFDWixRQUFVQSxNQUFNM0MsR0FBRyxLQUFLc0QsYUFBYXRELEdBQUc7Z0JBQzVFLElBQUksQ0FBQzJDLE9BQU87b0JBQ1ZBLFFBQVE7d0JBQ04sR0FBR1csWUFBWTt3QkFDZlQsU0FBUyxFQUFFO29CQUNiO2dCQUNGLE9BQU87b0JBQ0xOLG9CQUFvQkEsa0JBQWtCTyxNQUFNLENBQUMsQ0FBQ0gsUUFBVUEsTUFBTTNDLEdBQUcsS0FBS3NELGFBQWF0RCxHQUFHO2dCQUN4RjtnQkFFQSx5RkFBeUY7Z0JBQ3pGLElBQUkyQyxPQUFPRSxTQUFTMUMsUUFBUTtvQkFDMUJ3QyxNQUFNRSxPQUFPLEdBQUdGLE1BQU1FLE9BQU8sQ0FBQ1QsTUFBTSxDQUFDTyxNQUFNRSxPQUFPO2dCQUNwRDtnQkFDQU4sa0JBQWtCRSxJQUFJLENBQUNFO1lBQ3pCO1FBQ0Y7UUFFQSxPQUFPSjtJQUNULEdBQUc7UUFBQ1g7UUFBbUJSO1FBQWFHLGNBQWNTO1FBQVVuQztLQUFLO0lBRWpFLE1BQU0yRCxpQkFBaUIzQixJQUFBQSxrQkFBVyxFQUNoQyxDQUNFNEIsZ0JBQ0FDLGNBQ0FDLFdBQ0FDO1FBRUExQyxPQUFPMkMsTUFBTSxDQUFDO1lBQ1osSUFBSUgsY0FBYztnQkFDaEJBLGFBQWFJLE1BQU07WUFDckI7WUFDQUwsZUFBZU0sUUFBUSxDQUFDO2dCQUFFN0M7Z0JBQVFFLGFBQWF3QztZQUFlO1lBQzlERDtRQUNGO0lBQ0YsR0FDQTtRQUFDekM7S0FBTztJQUdWLHFCQUNFLHFCQUFDOEMsT0FBTUMsUUFBUSxzQkFDYixxQkFBQ0Msc0RBQTBCO1FBQ3pCbkQsWUFBWUE7UUFDWndCLG1CQUFtQkY7UUFDbkI4QixjQUFjLENBQ1pDLGtCQUNBLEVBQUVDLHNCQUFzQixFQUFFQyxpQkFBaUIsRUFBRUMsb0JBQW9CLEVBQUUsR0FFbkVILGlCQUFpQkksT0FBTyxJQUFJbkMsT0FBT2xDLE1BQU0saUJBQ3JDc0UsVUFBU0MsWUFBWSxlQUNuQixxQkFBQ0M7Z0JBQUk1RSxXQUFXUjtlQUNiOEMsT0FBT0ssR0FBRyxDQUFDLENBQUNDO2dCQUNYLElBQUlpQyxhQUFhakMsTUFBTTNDLEdBQUc7Z0JBQzFCLElBQUkyQyxNQUFNekMsV0FBVyxFQUFFO29CQUNyQjBFLGFBQ0UsT0FBT2pDLE1BQU16QyxXQUFXLEtBQUssYUFDekJ5QyxNQUFNekMsV0FBVyxDQUFDO3dCQUFFTDtvQkFBSyxLQUN6QjhDLE1BQU16QyxXQUFXO2dCQUN6QjtnQkFFQSxxQkFDRSxxQkFBQ3lFO29CQUNDNUUsV0FBVyxDQUFDLEVBQUVSLFVBQVUsUUFBUSxFQUFFQSxVQUFVLFFBQVEsRUFBRW9ELE1BQU0zQyxHQUFHLENBQUMsQ0FBQztvQkFDakVBLEtBQUsyQyxNQUFNM0MsR0FBRztpQ0FFZCxxQkFBQzJFO29CQUFJNUUsV0FBVyxDQUFDLEVBQUVSLFVBQVUsYUFBYSxDQUFDO21CQUFHcUYsYUFDN0NqQyxNQUFNRSxPQUFPLENBQUNILEdBQUcsQ0FBQyxDQUFDOUMsUUFBUWlGLG1CQUMxQixxQkFBQ3JGO3dCQUNDc0YsT0FBT0Q7d0JBQ1BwRixZQUFZNkUsc0JBQXNCMUUsT0FBT0ksR0FBRzt3QkFDNUNBLEtBQUtKLE9BQU9JLEdBQUc7d0JBQ2ZOLFNBQVM7NEJBQ1A2RSxxQkFBcUIzRSxPQUFPSSxHQUFHOzRCQUMvQnFFLHVCQUF1QnpFO3dCQUN6Qjt3QkFDQUQsY0FBYzs0QkFDWjRFLHFCQUFxQjNFLE9BQU9JLEdBQUc7d0JBQ2pDO3dCQUNBSixRQUFRQTs7WUFLbEIsS0FFRndFLGlCQUFpQkksT0FBTyxJQUUxQjtRQUVOTyxlQUFlMUQ7UUFDZm1DLGdCQUFnQkE7UUFDaEJ3QixXQUFXdkQ7O0FBSW5CIn0=
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgVGV4dE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5cbmltcG9ydCB0eXBlIHsgU2xhc2hNZW51R3JvdXAsIFNsYXNoTWVudU9wdGlvbiB9IGZyb20gJy4vTGV4aWNhbFR5cGVhaGVhZE1lbnVQbHVnaW4vdHlwZXMnXG5cbmltcG9ydCB7IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQgfSBmcm9tICcuLi8uLi9jb25maWcvRWRpdG9yQ29uZmlnUHJvdmlkZXInXG5pbXBvcnQgeyBMZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbiB9IGZyb20gJy4vTGV4aWNhbFR5cGVhaGVhZE1lbnVQbHVnaW4nXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcbmltcG9ydCB7IHVzZU1lbnVUcmlnZ2VyTWF0Y2ggfSBmcm9tICcuL3VzZU1lbnVUcmlnZ2VyTWF0Y2gnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdzbGFzaC1tZW51LXBvcHVwJ1xuXG5mdW5jdGlvbiBTbGFzaE1lbnVJdGVtKHtcbiAgaXNTZWxlY3RlZCxcbiAgb25DbGljayxcbiAgb25Nb3VzZUVudGVyLFxuICBvcHRpb24sXG59OiB7XG4gIGluZGV4OiBudW1iZXJcbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBvbkNsaWNrOiAoKSA9PiB2b2lkXG4gIG9uTW91c2VFbnRlcjogKCkgPT4gdm9pZFxuICBvcHRpb246IFNsYXNoTWVudU9wdGlvblxufSkge1xuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKCdmaWVsZHMnKVxuXG4gIGxldCBjbGFzc05hbWUgPSBgJHtiYXNlQ2xhc3N9X19pdGVtICR7YmFzZUNsYXNzfV9faXRlbS0ke29wdGlvbi5rZXl9YFxuICBpZiAoaXNTZWxlY3RlZCkge1xuICAgIGNsYXNzTmFtZSArPSBgICR7YmFzZUNsYXNzfV9faXRlbS0tc2VsZWN0ZWRgXG4gIH1cblxuICBsZXQgdGl0bGUgPSBvcHRpb24ua2V5XG4gIGlmIChvcHRpb24uZGlzcGxheU5hbWUpIHtcbiAgICB0aXRsZSA9XG4gICAgICB0eXBlb2Ygb3B0aW9uLmRpc3BsYXlOYW1lID09PSAnZnVuY3Rpb24nID8gb3B0aW9uLmRpc3BsYXlOYW1lKHsgaTE4biB9KSA6IG9wdGlvbi5kaXNwbGF5TmFtZVxuICB9XG4gIC8vIENyb3AgdGl0bGUgdG8gbWF4LiA1MCBjaGFyYWN0ZXJzXG4gIGlmICh0aXRsZS5sZW5ndGggPiAyNSkge1xuICAgIHRpdGxlID0gdGl0bGUuc3Vic3RyaW5nKDAsIDI1KSArICcuLi4nXG4gIH1cblxuICBjb25zdCBMYXp5SWNvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBvcHRpb24/Lkljb25cbiAgICAgID8gUmVhY3QubGF6eSgoKSA9PlxuICAgICAgICAgIG9wdGlvbi5JY29uKCkudGhlbigocmVzb2x2ZWRJY29uKSA9PiAoe1xuICAgICAgICAgICAgZGVmYXVsdDogcmVzb2x2ZWRJY29uLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgKVxuICAgICAgOiBudWxsXG4gIH0sIFtvcHRpb25dKVxuXG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgYXJpYS1zZWxlY3RlZD17aXNTZWxlY3RlZH1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgaWQ9e2Jhc2VDbGFzcyArICdfX2l0ZW0tJyArIG9wdGlvbi5rZXl9XG4gICAgICBrZXk9e29wdGlvbi5rZXl9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgb25Nb3VzZUVudGVyPXtvbk1vdXNlRW50ZXJ9XG4gICAgICByZWY9e29wdGlvbi5zZXRSZWZFbGVtZW50fVxuICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICA+XG4gICAgICB7TGF6eUljb24gJiYgKFxuICAgICAgICA8UmVhY3QuU3VzcGVuc2U+XG4gICAgICAgICAgPExhenlJY29uIC8+XG4gICAgICAgIDwvUmVhY3QuU3VzcGVuc2U+XG4gICAgICApfVxuXG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2l0ZW0tdGV4dGB9Pnt0aXRsZX08L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNsYXNoTWVudVBsdWdpbih7XG4gIGFuY2hvckVsZW0gPSBkb2N1bWVudC5ib2R5LFxufToge1xuICBhbmNob3JFbGVtPzogSFRNTEVsZW1lbnRcbn0pOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IFtlZGl0b3JdID0gdXNlTGV4aWNhbENvbXBvc2VyQ29udGV4dCgpXG4gIGNvbnN0IFtxdWVyeVN0cmluZywgc2V0UXVlcnlTdHJpbmddID0gdXNlU3RhdGU8bnVsbCB8IHN0cmluZz4obnVsbClcbiAgY29uc3QgeyBlZGl0b3JDb25maWcgfSA9IHVzZUVkaXRvckNvbmZpZ0NvbnRleHQoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKCdmaWVsZHMnKVxuXG4gIGNvbnN0IGNoZWNrRm9yVHJpZ2dlck1hdGNoID0gdXNlTWVudVRyaWdnZXJNYXRjaCgnLycsIHtcbiAgICBtaW5MZW5ndGg6IDAsXG4gIH0pXG5cbiAgY29uc3QgZ2V0RHluYW1pY09wdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgbGV0IGdyb3VwV2l0aE9wdGlvbnM6IEFycmF5PFNsYXNoTWVudUdyb3VwPiA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGR5bmFtaWNPcHRpb24gb2YgZWRpdG9yQ29uZmlnLmZlYXR1cmVzLnNsYXNoTWVudS5keW5hbWljT3B0aW9ucykge1xuICAgICAgY29uc3QgZHluYW1pY0dyb3VwV2l0aE9wdGlvbnMgPSBkeW5hbWljT3B0aW9uKHtcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBxdWVyeVN0cmluZyxcbiAgICAgIH0pXG4gICAgICBncm91cFdpdGhPcHRpb25zID0gZ3JvdXBXaXRoT3B0aW9ucy5jb25jYXQoZHluYW1pY0dyb3VwV2l0aE9wdGlvbnMpXG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwV2l0aE9wdGlvbnNcbiAgfSwgW2VkaXRvciwgcXVlcnlTdHJpbmcsIGVkaXRvckNvbmZpZz8uZmVhdHVyZXNdKVxuXG4gIGNvbnN0IGdyb3VwczogU2xhc2hNZW51R3JvdXBbXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCBncm91cHNXaXRoT3B0aW9uczogU2xhc2hNZW51R3JvdXBbXSA9IFtdXG4gICAgZm9yIChjb25zdCBncm91cFdpdGhPcHRpb24gb2YgZWRpdG9yQ29uZmlnPy5mZWF0dXJlcy5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnMgPz8gW10pIHtcbiAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLnB1c2goZ3JvdXBXaXRoT3B0aW9uKVxuICAgIH1cblxuICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgLy8gRmlsdGVyIGN1cnJlbnQgZ3JvdXBzIGZpcnN0XG4gICAgICBncm91cHNXaXRoT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLm1hcCgoZ3JvdXApID0+IHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gZ3JvdXAub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgICAgIGxldCBvcHRpb25UaXRsZSA9IG9wdGlvbi5rZXlcbiAgICAgICAgICBpZiAob3B0aW9uLmRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgICBvcHRpb25UaXRsZSA9XG4gICAgICAgICAgICAgIHR5cGVvZiBvcHRpb24uZGlzcGxheU5hbWUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IG9wdGlvbi5kaXNwbGF5TmFtZSh7IGkxOG4gfSlcbiAgICAgICAgICAgICAgICA6IG9wdGlvbi5kaXNwbGF5TmFtZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHF1ZXJ5U3RyaW5nLCAnZ2knKS5leGVjKG9wdGlvblRpdGxlKSB8fCBvcHRpb24ua2V5d29yZHMgIT0gbnVsbFxuICAgICAgICAgICAgPyBvcHRpb24ua2V5d29yZHMuc29tZSgoa2V5d29yZCkgPT4gbmV3IFJlZ0V4cChxdWVyeVN0cmluZywgJ2dpJykuZXhlYyhrZXl3b3JkKSlcbiAgICAgICAgICAgIDogZmFsc2VcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGZpbHRlcmVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgICAgICBvcHRpb25zOiBmaWx0ZXJlZE9wdGlvbnMsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9KVxuXG4gICAgICBncm91cHNXaXRoT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZpbHRlcigoZ3JvdXApID0+IGdyb3VwICE9IG51bGwpXG5cbiAgICAgIC8vIE5vdyBhZGQgZHluYW1pYyBncm91cHNcbiAgICAgIGNvbnN0IGR5bmFtaWNPcHRpb25Hcm91cHMgPSBnZXREeW5hbWljT3B0aW9ucygpXG5cbiAgICAgIC8vIG1lcmdlIGR5bmFtaWMgb3B0aW9ucyBpbnRvIGdyb3Vwc1xuICAgICAgZm9yIChjb25zdCBkeW5hbWljR3JvdXAgb2YgZHluYW1pY09wdGlvbkdyb3Vwcykge1xuICAgICAgICAvLyAxLiBmaW5kIHRoZSBncm91cCB3aXRoIHRoZSBzYW1lIG5hbWUgb3IgY3JlYXRlIG5ldyBvbmVcbiAgICAgICAgbGV0IGdyb3VwID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmluZCgoZ3JvdXApID0+IGdyb3VwLmtleSA9PT0gZHluYW1pY0dyb3VwLmtleSlcbiAgICAgICAgaWYgKCFncm91cCkge1xuICAgICAgICAgIGdyb3VwID0ge1xuICAgICAgICAgICAgLi4uZHluYW1pY0dyb3VwLFxuICAgICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmlsdGVyKChncm91cCkgPT4gZ3JvdXAua2V5ICE9PSBkeW5hbWljR3JvdXAua2V5KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gQWRkIG9wdGlvbnMgdG8gZ3JvdXAgb3B0aW9ucyBhcnJheSBhbmQgYWRkIHRvIHNhbml0aXplZC5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnNcbiAgICAgICAgaWYgKGdyb3VwPy5vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICBncm91cC5vcHRpb25zID0gZ3JvdXAub3B0aW9ucy5jb25jYXQoZ3JvdXAub3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICBncm91cHNXaXRoT3B0aW9ucy5wdXNoKGdyb3VwKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBncm91cHNXaXRoT3B0aW9uc1xuICB9LCBbZ2V0RHluYW1pY09wdGlvbnMsIHF1ZXJ5U3RyaW5nLCBlZGl0b3JDb25maWc/LmZlYXR1cmVzLCBpMThuXSlcblxuICBjb25zdCBvblNlbGVjdE9wdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbGVjdGVkT3B0aW9uOiBTbGFzaE1lbnVPcHRpb24sXG4gICAgICBub2RlVG9SZW1vdmU6IFRleHROb2RlIHwgbnVsbCxcbiAgICAgIGNsb3NlTWVudTogKCkgPT4gdm9pZCxcbiAgICAgIG1hdGNoaW5nU3RyaW5nOiBzdHJpbmcsXG4gICAgKSA9PiB7XG4gICAgICBlZGl0b3IudXBkYXRlKCgpID0+IHtcbiAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkge1xuICAgICAgICAgIG5vZGVUb1JlbW92ZS5yZW1vdmUoKVxuICAgICAgICB9XG4gICAgICAgIHNlbGVjdGVkT3B0aW9uLm9uU2VsZWN0KHsgZWRpdG9yLCBxdWVyeVN0cmluZzogbWF0Y2hpbmdTdHJpbmcgfSlcbiAgICAgICAgY2xvc2VNZW51KClcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbZWRpdG9yXSxcbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgPExleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luXG4gICAgICAgIGFuY2hvckVsZW09e2FuY2hvckVsZW19XG4gICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zPXtncm91cHN9XG4gICAgICAgIG1lbnVSZW5kZXJGbj17KFxuICAgICAgICAgIGFuY2hvckVsZW1lbnRSZWYsXG4gICAgICAgICAgeyBzZWxlY3RPcHRpb25BbmRDbGVhblVwLCBzZWxlY3RlZE9wdGlvbktleSwgc2V0U2VsZWN0ZWRPcHRpb25LZXkgfSxcbiAgICAgICAgKSA9PlxuICAgICAgICAgIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCAmJiBncm91cHMubGVuZ3RoXG4gICAgICAgICAgICA/IFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YmFzZUNsYXNzfT5cbiAgICAgICAgICAgICAgICAgIHtncm91cHMubWFwKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXBUaXRsZSA9IGdyb3VwLmtleVxuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBncm91cFRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBncm91cC5kaXNwbGF5TmFtZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICA/IGdyb3VwLmRpc3BsYXlOYW1lKHsgaTE4biB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdyb3VwLmRpc3BsYXlOYW1lXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZ3JvdXAgJHtiYXNlQ2xhc3N9X19ncm91cC0ke2dyb3VwLmtleX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2dyb3VwLXRpdGxlYH0+e2dyb3VwVGl0bGV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAub3B0aW9ucy5tYXAoKG9wdGlvbiwgb2k6IG51bWJlcikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U2xhc2hNZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtvaX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZE9wdGlvbktleSA9PT0gb3B0aW9uLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXkob3B0aW9uLmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAob3B0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZE9wdGlvbktleShvcHRpb24ua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+LFxuICAgICAgICAgICAgICAgIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH1cbiAgICAgICAgb25RdWVyeUNoYW5nZT17c2V0UXVlcnlTdHJpbmd9XG4gICAgICAgIG9uU2VsZWN0T3B0aW9uPXtvblNlbGVjdE9wdGlvbn1cbiAgICAgICAgdHJpZ2dlckZuPXtjaGVja0ZvclRyaWdnZXJNYXRjaH1cbiAgICAgIC8+XG4gICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIlNsYXNoTWVudVBsdWdpbiIsImJhc2VDbGFzcyIsIlNsYXNoTWVudUl0ZW0iLCJpc1NlbGVjdGVkIiwib25DbGljayIsIm9uTW91c2VFbnRlciIsIm9wdGlvbiIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImNsYXNzTmFtZSIsImtleSIsInRpdGxlIiwiZGlzcGxheU5hbWUiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJMYXp5SWNvbiIsInVzZU1lbW8iLCJJY29uIiwiUmVhY3QiLCJsYXp5IiwidGhlbiIsInJlc29sdmVkSWNvbiIsImRlZmF1bHQiLCJidXR0b24iLCJhcmlhLXNlbGVjdGVkIiwiaWQiLCJyZWYiLCJzZXRSZWZFbGVtZW50Iiwicm9sZSIsInRhYkluZGV4IiwidHlwZSIsIlN1c3BlbnNlIiwic3BhbiIsImFuY2hvckVsZW0iLCJkb2N1bWVudCIsImJvZHkiLCJlZGl0b3IiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwicXVlcnlTdHJpbmciLCJzZXRRdWVyeVN0cmluZyIsInVzZVN0YXRlIiwiZWRpdG9yQ29uZmlnIiwidXNlRWRpdG9yQ29uZmlnQ29udGV4dCIsImNoZWNrRm9yVHJpZ2dlck1hdGNoIiwidXNlTWVudVRyaWdnZXJNYXRjaCIsIm1pbkxlbmd0aCIsImdldER5bmFtaWNPcHRpb25zIiwidXNlQ2FsbGJhY2siLCJncm91cFdpdGhPcHRpb25zIiwiZHluYW1pY09wdGlvbiIsImZlYXR1cmVzIiwic2xhc2hNZW51IiwiZHluYW1pY09wdGlvbnMiLCJkeW5hbWljR3JvdXBXaXRoT3B0aW9ucyIsImNvbmNhdCIsImdyb3VwcyIsImdyb3Vwc1dpdGhPcHRpb25zIiwiZ3JvdXBXaXRoT3B0aW9uIiwicHVzaCIsIm1hcCIsImdyb3VwIiwiZmlsdGVyZWRPcHRpb25zIiwib3B0aW9ucyIsImZpbHRlciIsIm9wdGlvblRpdGxlIiwiUmVnRXhwIiwiZXhlYyIsImtleXdvcmRzIiwic29tZSIsImtleXdvcmQiLCJkeW5hbWljT3B0aW9uR3JvdXBzIiwiZHluYW1pY0dyb3VwIiwiZmluZCIsIm9uU2VsZWN0T3B0aW9uIiwic2VsZWN0ZWRPcHRpb24iLCJub2RlVG9SZW1vdmUiLCJjbG9zZU1lbnUiLCJtYXRjaGluZ1N0cmluZyIsInVwZGF0ZSIsInJlbW92ZSIsIm9uU2VsZWN0IiwiRnJhZ21lbnQiLCJMZXhpY2FsVHlwZWFoZWFkTWVudVBsdWdpbiIsIm1lbnVSZW5kZXJGbiIsImFuY2hvckVsZW1lbnRSZWYiLCJzZWxlY3RPcHRpb25BbmRDbGVhblVwIiwic2VsZWN0ZWRPcHRpb25LZXkiLCJzZXRTZWxlY3RlZE9wdGlvbktleSIsImN1cnJlbnQiLCJSZWFjdERPTSIsImNyZWF0ZVBvcnRhbCIsImRpdiIsImdyb3VwVGl0bGUiLCJvaSIsImluZGV4Iiwib25RdWVyeUNoYW5nZSIsInRyaWdnZXJGbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OytCQWlGZ0JBOzs7ZUFBQUE7Ozt3Q0E5RTBCOytEQUNLO2tFQUVyQjs4QkFDSztzQ0FJUTs0Q0FDSTtRQUNwQztxQ0FDNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFcEMsTUFBTUMsWUFBWTtBQUVsQixTQUFTQyxjQUFjLEVBQ3JCQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsWUFBWSxFQUNaQyxNQUFNLEVBT1A7SUFDQyxNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyxJQUFBQSw0QkFBYyxFQUFDO0lBRWhDLElBQUlDLFlBQVksQ0FBQyxFQUFFUixVQUFVLE9BQU8sRUFBRUEsVUFBVSxPQUFPLEVBQUVLLE9BQU9JLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLElBQUlQLFlBQVk7UUFDZE0sYUFBYSxDQUFDLENBQUMsRUFBRVIsVUFBVSxnQkFBZ0IsQ0FBQztJQUM5QztJQUVBLElBQUlVLFFBQVFMLE9BQU9JLEdBQUc7SUFDdEIsSUFBSUosT0FBT00sV0FBVyxFQUFFO1FBQ3RCRCxRQUNFLE9BQU9MLE9BQU9NLFdBQVcsS0FBSyxhQUFhTixPQUFPTSxXQUFXLENBQUM7WUFBRUw7UUFBSyxLQUFLRCxPQUFPTSxXQUFXO0lBQ2hHO0lBQ0EsbUNBQW1DO0lBQ25DLElBQUlELE1BQU1FLE1BQU0sR0FBRyxJQUFJO1FBQ3JCRixRQUFRQSxNQUFNRyxTQUFTLENBQUMsR0FBRyxNQUFNO0lBQ25DO0lBRUEsTUFBTUMsV0FBV0MsSUFBQUEsY0FBTyxFQUFDO1FBQ3ZCLE9BQU9WLFFBQVFXLHFCQUNYQyxPQUFNQyxJQUFJLENBQUMsSUFDVGIsT0FBT1csSUFBSSxH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
@@ -48,11 +48,14 @@ html[data-theme='light'] {
48
48
 
49
49
  &-text {
50
50
  margin-left: 6px;
51
- text-wrap: nowrap;
51
+ overflow: hidden;
52
+ white-space: nowrap;
53
+ text-overflow: ellipsis;
52
54
  }
53
55
 
54
56
  .icon {
55
57
  color: var(--color-base-500);
58
+ min-width: fit-content;
56
59
  }
57
60
  }
58
61
  }