@payloadcms/richtext-lexical 0.1.0-beta.1 → 0.1.0-beta.3

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 (74) hide show
  1. package/dist/field/Field.d.ts.map +1 -1
  2. package/dist/field/Field.js +19 -4
  3. package/dist/field/features/Blocks/afterReadPromise.d.ts +5 -0
  4. package/dist/field/features/Blocks/afterReadPromise.d.ts.map +1 -0
  5. package/dist/field/features/Blocks/afterReadPromise.js +52 -0
  6. package/dist/field/features/Blocks/component/BlockContent.d.ts +14 -0
  7. package/dist/field/features/Blocks/component/BlockContent.d.ts.map +1 -0
  8. package/dist/field/features/Blocks/component/BlockContent.js +189 -0
  9. package/dist/field/features/Blocks/component/FormSavePlugin.d.ts +3 -2
  10. package/dist/field/features/Blocks/component/FormSavePlugin.d.ts.map +1 -1
  11. package/dist/field/features/Blocks/component/FormSavePlugin.js +4 -2
  12. package/dist/field/features/Blocks/component/index.d.ts.map +1 -1
  13. package/dist/field/features/Blocks/component/index.js +25 -105
  14. package/dist/field/features/Blocks/component/index.scss +24 -1
  15. package/dist/field/features/Blocks/drawer/index.js +9 -9
  16. package/dist/field/features/Blocks/index.d.ts.map +1 -1
  17. package/dist/field/features/Blocks/index.js +40 -19
  18. package/dist/field/features/Blocks/nodes/BlocksNode.d.ts +7 -6
  19. package/dist/field/features/Blocks/nodes/BlocksNode.d.ts.map +1 -1
  20. package/dist/field/features/Blocks/nodes/BlocksNode.js +9 -2
  21. package/dist/field/features/Blocks/plugin/index.js +3 -3
  22. package/dist/field/features/Blocks/validate.d.ts +5 -0
  23. package/dist/field/features/Blocks/validate.d.ts.map +1 -0
  24. package/dist/field/features/Blocks/validate.js +53 -0
  25. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  26. package/dist/field/features/Link/plugins/floatingLinkEditor/LinkEditor/index.js +18 -4
  27. package/dist/field/features/Link/plugins/floatingLinkEditor/index.scss +2 -2
  28. package/dist/field/features/Relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
  29. package/dist/field/features/Relationship/nodes/components/RelationshipComponent.js +2 -1
  30. package/dist/field/features/Relationship/nodes/components/index.scss +8 -0
  31. package/dist/field/features/Upload/component/ExtraFieldsDrawer/index.d.ts.map +1 -1
  32. package/dist/field/features/Upload/component/ExtraFieldsDrawer/index.js +20 -3
  33. package/dist/field/features/Upload/component/index.scss +1 -0
  34. package/dist/field/features/Upload/nodes/UploadNode.d.ts.map +1 -1
  35. package/dist/field/features/Upload/nodes/UploadNode.js +1 -1
  36. package/dist/field/features/types.d.ts +15 -2
  37. package/dist/field/features/types.d.ts.map +1 -1
  38. package/dist/field/index.scss +38 -0
  39. package/dist/field/lexical/LexicalEditor.scss +28 -26
  40. package/dist/field/lexical/config/sanitize.d.ts.map +1 -1
  41. package/dist/field/lexical/config/sanitize.js +6 -2
  42. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.scss +1 -1
  43. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.scss +1 -1
  44. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +7 -0
  45. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  46. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +8 -3
  47. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +2 -2
  48. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  49. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +19 -11
  50. package/dist/field/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  51. package/dist/field/lexical/plugins/SlashMenu/index.js +14 -2
  52. package/dist/field/lexical/plugins/SlashMenu/index.scss +9 -2
  53. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +4 -3
  54. package/dist/field/lexical/theme/EditorTheme.scss +3 -2
  55. package/dist/index.d.ts +1 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +9 -5
  58. package/dist/populate/defaultValue.d.ts +17 -0
  59. package/dist/populate/defaultValue.d.ts.map +1 -1
  60. package/dist/populate/defaultValue.js +31 -4
  61. package/dist/populate/recurseNestedFields.d.ts.map +1 -1
  62. package/dist/populate/recurseNestedFields.js +3 -1
  63. package/dist/validate/index.d.ts +7 -0
  64. package/dist/validate/index.d.ts.map +1 -0
  65. package/dist/validate/index.js +40 -0
  66. package/dist/validate/validateNodes.d.ts +14 -0
  67. package/dist/validate/validateNodes.d.ts.map +1 -0
  68. package/dist/validate/validateNodes.js +44 -0
  69. package/package.json +4 -3
  70. package/src/index.ts +5 -1
  71. package/dist/field/features/Upload/nodes/UploadNode.scss +0 -4
  72. package/dist/populate/validation.d.ts +0 -4
  73. package/dist/populate/validation.d.ts.map +0 -1
  74. package/dist/populate/validation.js +0 -21
@@ -1,34 +1,36 @@
1
1
  @import 'payload/scss';
2
2
 
3
- .editor-shell {
4
- position: relative;
3
+ .rich-text-lexical {
4
+ .editor-shell {
5
+ position: relative;
5
6
 
6
- font-family: var(--font-serif);
7
- font-size: base(0.625);
7
+ font-family: var(--font-serif);
8
+ font-size: base(0.625);
8
9
 
9
- h1,
10
- h2,
11
- h3,
12
- h4,
13
- h5,
14
- h6 {
15
- font-family: var(--font-body);
16
- line-height: 1.125;
10
+ h1,
11
+ h2,
12
+ h3,
13
+ h4,
14
+ h5,
15
+ h6 {
16
+ font-family: var(--font-body);
17
+ line-height: 1.125;
18
+ }
17
19
  }
18
- }
19
20
 
20
- .editor-placeholder {
21
- position: absolute;
22
- top: 8px;
23
- left: 0px;
24
- font-size: 15px;
25
- color: var(--theme-elevation-500);
26
- /* Prevent text selection */
27
- user-select: none;
28
- -webkit-user-select: none;
29
- -moz-user-select: none;
30
- -ms-user-select: none;
21
+ .editor-placeholder {
22
+ position: absolute;
23
+ top: 8px;
24
+ left: 0px;
25
+ font-size: 15px;
26
+ color: var(--theme-elevation-500);
27
+ /* Prevent text selection */
28
+ user-select: none;
29
+ -webkit-user-select: none;
30
+ -moz-user-select: none;
31
+ -ms-user-select: none;
31
32
 
32
- /* Make it behave more like a background element (no interaction) */
33
- pointer-events: none;
33
+ /* Make it behave more like a background element (no interaction) */
34
+ pointer-events: none;
35
+ }
34
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../../src/field/lexical/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAIlE,eAAO,MAAM,gBAAgB,oCAAmC,iBAiI/D,CAAA;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,YAAY,GAAG,qBAAqB,CAUtF"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../../src/field/lexical/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAIlE,eAAO,MAAM,gBAAgB,oCAAmC,iBAqI/D,CAAA;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,YAAY,GAAG,qBAAqB,CAUtF"}
@@ -30,7 +30,8 @@ const sanitizeFeatures = (features)=>{
30
30
  slashMenu: {
31
31
  dynamicOptions: [],
32
32
  groupsWithOptions: []
33
- }
33
+ },
34
+ validations: new Map()
34
35
  };
35
36
  features.forEach((feature)=>{
36
37
  if (feature.nodes?.length) {
@@ -39,6 +40,9 @@ const sanitizeFeatures = (features)=>{
39
40
  if (node?.afterReadPromises?.length) {
40
41
  sanitized.afterReadPromises.set(node.type, node.afterReadPromises);
41
42
  }
43
+ if (node?.validations?.length) {
44
+ sanitized.validations.set(node.type, node.validations);
45
+ }
42
46
  });
43
47
  }
44
48
  if (feature.plugins?.length) {
@@ -135,4 +139,4 @@ function sanitizeEditorConfig(editorConfig) {
135
139
  };
136
140
  }
137
141
 
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL2NvbmZpZy9zYW5pdGl6ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc29sdmVkRmVhdHVyZU1hcCwgU2FuaXRpemVkRmVhdHVyZXMgfSBmcm9tICcuLi8uLi9mZWF0dXJlcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRWRpdG9yQ29uZmlnLCBTYW5pdGl6ZWRFZGl0b3JDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBsb2FkRmVhdHVyZXMgfSBmcm9tICcuL2xvYWRlcidcblxuZXhwb3J0IGNvbnN0IHNhbml0aXplRmVhdHVyZXMgPSAoZmVhdHVyZXM6IFJlc29sdmVkRmVhdHVyZU1hcCk6IFNhbml0aXplZEZlYXR1cmVzID0+IHtcbiAgY29uc3Qgc2FuaXRpemVkOiBTYW5pdGl6ZWRGZWF0dXJlcyA9IHtcbiAgICBhZnRlclJlYWRQcm9taXNlczogbmV3IE1hcCgpLFxuICAgIGVuYWJsZWRGZWF0dXJlczogW10sXG4gICAgZmxvYXRpbmdTZWxlY3RUb29sYmFyOiB7XG4gICAgICBzZWN0aW9uczogW10sXG4gICAgfSxcbiAgICBtYXJrZG93blRyYW5zZm9ybWVyczogW10sXG4gICAgbm9kZXM6IFtdLFxuICAgIHBsdWdpbnM6IFtdLFxuICAgIHNsYXNoTWVudToge1xuICAgICAgZHluYW1pY09wdGlvbnM6IFtdLFxuICAgICAgZ3JvdXBzV2l0aE9wdGlvbnM6IFtdLFxuICAgIH0sXG4gIH1cblxuICBmZWF0dXJlcy5mb3JFYWNoKChmZWF0dXJlKSA9PiB7XG4gICAgaWYgKGZlYXR1cmUubm9kZXM/Lmxlbmd0aCkge1xuICAgICAgc2FuaXRpemVkLm5vZGVzID0gc2FuaXRpemVkLm5vZGVzLmNvbmNhdChmZWF0dXJlLm5vZGVzKVxuICAgICAgZmVhdHVyZS5ub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGlmIChub2RlPy5hZnRlclJlYWRQcm9taXNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgc2FuaXRpemVkLmFmdGVyUmVhZFByb21pc2VzLnNldChub2RlLnR5cGUsIG5vZGUuYWZ0ZXJSZWFkUHJvbWlzZXMpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChmZWF0dXJlLnBsdWdpbnM/Lmxlbmd0aCkge1xuICAgICAgZmVhdHVyZS5wbHVnaW5zLmZvckVhY2goKHBsdWdpbiwgaSkgPT4ge1xuICAgICAgICBzYW5pdGl6ZWQucGx1Z2lucy5wdXNoKHtcbiAgICAgICAgICBDb21wb25lbnQ6IHBsdWdpbi5Db21wb25lbnQsXG4gICAgICAgICAga2V5OiBmZWF0dXJlLmtleSArIGksXG4gICAgICAgICAgcG9zaXRpb246IHBsdWdpbi5wb3NpdGlvbixcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChmZWF0dXJlLm1hcmtkb3duVHJhbnNmb3JtZXJzPy5sZW5ndGgpIHtcbiAgICAgIHNhbml0aXplZC5tYXJrZG93blRyYW5zZm9ybWVycyA9IHNhbml0aXplZC5tYXJrZG93blRyYW5zZm9ybWVycy5jb25jYXQoXG4gICAgICAgIGZlYXR1cmUubWFya2Rvd25UcmFuc2Zvcm1lcnMsXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKGZlYXR1cmUuZmxvYXRpbmdTZWxlY3RUb29sYmFyPy5zZWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgZmVhdHVyZS5mbG9hdGluZ1NlbGVjdFRvb2xiYXI/LnNlY3Rpb25zKSB7XG4gICAgICAgIC8vIDEuIGZpbmQgdGhlIHNlY3Rpb24gd2l0aCB0aGUgc2FtZSBrZXkgb3IgY3JlYXRlIG5ldyBvbmVcbiAgICAgICAgbGV0IGZvdW5kU2VjdGlvbiA9IHNhbml0aXplZC5mbG9hdGluZ1NlbGVjdFRvb2xiYXIuc2VjdGlvbnMuZmluZChcbiAgICAgICAgICAoc2FuaXRpemVkU2VjdGlvbikgPT4gc2FuaXRpemVkU2VjdGlvbi5rZXkgPT09IHNlY3Rpb24ua2V5LFxuICAgICAgICApXG4gICAgICAgIGlmICghZm91bmRTZWN0aW9uKSB7XG4gICAgICAgICAgZm91bmRTZWN0aW9uID0ge1xuICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgIGVudHJpZXM6IFtdLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzYW5pdGl6ZWQuZmxvYXRpbmdTZWxlY3RUb29sYmFyLnNlY3Rpb25zID1cbiAgICAgICAgICAgIHNhbml0aXplZC5mbG9hdGluZ1NlbGVjdFRvb2xiYXIuc2VjdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAoc2FuaXRpemVkU2VjdGlvbikgPT4gc2FuaXRpemVkU2VjdGlvbi5rZXkgIT09IHNlY3Rpb24ua2V5LFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gQWRkIG9wdGlvbnMgdG8gZ3JvdXAgb3B0aW9ucyBhcnJheSBhbmQgYWRkIHRvIHNhbml0aXplZC5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnNcbiAgICAgICAgaWYgKHNlY3Rpb24/LmVudHJpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIGZvdW5kU2VjdGlvbi5lbnRyaWVzID0gZm91bmRTZWN0aW9uLmVudHJpZXMuY29uY2F0KHNlY3Rpb24uZW50cmllcylcbiAgICAgICAgfVxuICAgICAgICBzYW5pdGl6ZWQuZmxvYXRpbmdTZWxlY3RUb29sYmFyPy5zZWN0aW9ucy5wdXNoKGZvdW5kU2VjdGlvbilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZmVhdHVyZS5zbGFzaE1lbnU/Lm9wdGlvbnMpIHtcbiAgICAgIGlmIChmZWF0dXJlLnNsYXNoTWVudS5keW5hbWljT3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgIHNhbml0aXplZC5zbGFzaE1lbnUuZHluYW1pY09wdGlvbnMgPSBzYW5pdGl6ZWQuc2xhc2hNZW51LmR5bmFtaWNPcHRpb25zLmNvbmNhdChcbiAgICAgICAgICBmZWF0dXJlLnNsYXNoTWVudS5keW5hbWljT3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbkdyb3VwIG9mIGZlYXR1cmUuc2xhc2hNZW51Lm9wdGlvbnMpIHtcbiAgICAgICAgLy8gMS4gZmluZCB0aGUgZ3JvdXAgd2l0aCB0aGUgc2FtZSBuYW1lIG9yIGNyZWF0ZSBuZXcgb25lXG4gICAgICAgIGxldCBncm91cCA9IHNhbml0aXplZC5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnMuZmluZChcbiAgICAgICAgICAoZ3JvdXApID0+IGdyb3VwLnRpdGxlID09PSBvcHRpb25Hcm91cC50aXRsZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIWdyb3VwKSB7XG4gICAgICAgICAgZ3JvdXAgPSB7XG4gICAgICAgICAgICAuLi5vcHRpb25Hcm91cCxcbiAgICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzYW5pdGl6ZWQuc2xhc2hNZW51Lmdyb3Vwc1dpdGhPcHRpb25zID0gc2FuaXRpemVkLnNsYXNoTWVudS5ncm91cHNXaXRoT3B0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAoZ3JvdXApID0+IGdyb3VwLnRpdGxlICE9PSBvcHRpb25Hcm91cC50aXRsZSxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBBZGQgb3B0aW9ucyB0byBncm91cCBvcHRpb25zIGFycmF5IGFuZCBhZGQgdG8gc2FuaXRpemVkLnNsYXNoTWVudS5ncm91cHNXaXRoT3B0aW9uc1xuICAgICAgICBpZiAob3B0aW9uR3JvdXA/Lm9wdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgIGdyb3VwLm9wdGlvbnMgPSBncm91cC5vcHRpb25zLmNvbmNhdChvcHRpb25Hcm91cC5vcHRpb25zKVxuICAgICAgICB9XG4gICAgICAgIHNhbml0aXplZC5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnMucHVzaChncm91cClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzYW5pdGl6ZWQuZW5hYmxlZEZlYXR1cmVzLnB1c2goZmVhdHVyZS5rZXkpXG4gIH0pXG5cbiAgLy8gU29ydCBzYW5pdGl6ZWQuZmxvYXRpbmdTZWxlY3RUb29sYmFyLnNlY3Rpb25zIGJ5IG9yZGVyIHByb3BlcnR5XG4gIHNhbml0aXplZC5mbG9hdGluZ1NlbGVjdFRvb2xiYXIuc2VjdGlvbnMuc29ydCgoYSwgYikgPT4ge1xuICAgIGlmIChhLm9yZGVyICYmIGIub3JkZXIpIHtcbiAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlclxuICAgIH0gZWxzZSBpZiAoYS5vcmRlcikge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfSBlbHNlIGlmIChiLm9yZGVyKSB7XG4gICAgICByZXR1cm4gMVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cbiAgfSlcblxuICAvLyBTb3J0IHNhbml0aXplZC5mbG9hdGluZ1NlbGVjdFRvb2xiYXIuc2VjdGlvbnMuW3NlY3Rpb25dLmVudHJpZXMgYnkgb3JkZXIgcHJvcGVydHlcbiAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHNhbml0aXplZC5mbG9hdGluZ1NlbGVjdFRvb2xiYXIuc2VjdGlvbnMpIHtcbiAgICBzZWN0aW9uLmVudHJpZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKGEub3JkZXIgJiYgYi5vcmRlcikge1xuICAgICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXJcbiAgICAgIH0gZWxzZSBpZiAoYS5vcmRlcikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH0gZWxzZSBpZiAoYi5vcmRlcikge1xuICAgICAgICByZXR1cm4gMVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHNhbml0aXplZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVFZGl0b3JDb25maWcoZWRpdG9yQ29uZmlnOiBFZGl0b3JDb25maWcpOiBTYW5pdGl6ZWRFZGl0b3JDb25maWcge1xuICBjb25zdCByZXNvbHZlZEZlYXR1cmVNYXAgPSBsb2FkRmVhdHVyZXMoe1xuICAgIHVuc2FuaXRpemVkRWRpdG9yQ29uZmlnOiBlZGl0b3JDb25maWcsXG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBmZWF0dXJlczogc2FuaXRpemVGZWF0dXJlcyhyZXNvbHZlZEZlYXR1cmVNYXApLFxuICAgIGxleGljYWw6IGVkaXRvckNvbmZpZy5sZXhpY2FsLFxuICAgIHJlc29sdmVkRmVhdHVyZU1hcDogcmVzb2x2ZWRGZWF0dXJlTWFwLFxuICB9XG59XG4iXSwibmFtZXMiOlsic2FuaXRpemVGZWF0dXJlcyIsInNhbml0aXplRWRpdG9yQ29uZmlnIiwiZmVhdHVyZXMiLCJzYW5pdGl6ZWQiLCJhZnRlclJlYWRQcm9taXNlcyIsIk1hcCIsImVuYWJsZWRGZWF0dXJlcyIsImZsb2F0aW5nU2VsZWN0VG9vbGJhciIsInNlY3Rpb25zIiwibWFya2Rvd25UcmFuc2Zvcm1lcnMiLCJub2RlcyIsInBsdWdpbnMiLCJzbGFzaE1lbnUiLCJkeW5hbWljT3B0aW9ucyIsImdyb3Vwc1dpdGhPcHRpb25zIiwiZm9yRWFjaCIsImZlYXR1cmUiLCJsZW5ndGgiLCJjb25jYXQiLCJub2RlIiwic2V0IiwidHlwZSIsInBsdWdpbiIsImkiLCJwdXNoIiwiQ29tcG9uZW50Iiwia2V5IiwicG9zaXRpb24iLCJzZWN0aW9uIiwiZm91bmRTZWN0aW9uIiwiZmluZCIsInNhbml0aXplZFNlY3Rpb24iLCJlbnRyaWVzIiwiZmlsdGVyIiwib3B0aW9ucyIsIm9wdGlvbkdyb3VwIiwiZ3JvdXAiLCJ0aXRsZSIsInNvcnQiLCJhIiwiYiIsIm9yZGVyIiwiZWRpdG9yQ29uZmlnIiwicmVzb2x2ZWRGZWF0dXJlTWFwIiwibG9hZEZlYXR1cmVzIiwidW5zYW5pdGl6ZWRFZGl0b3JDb25maWciLCJsZXhpY2FsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUthQSxnQkFBZ0I7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
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL2NvbmZpZy9zYW5pdGl6ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc29sdmVkRmVhdHVyZU1hcCwgU2FuaXRpemVkRmVhdHVyZXMgfSBmcm9tICcuLi8uLi9mZWF0dXJlcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRWRpdG9yQ29uZmlnLCBTYW5pdGl6ZWRFZGl0b3JDb25maWcgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBsb2FkRmVhdHVyZXMgfSBmcm9tICcuL2xvYWRlcidcblxuZXhwb3J0IGNvbnN0IHNhbml0aXplRmVhdHVyZXMgPSAoZmVhdHVyZXM6IFJlc29sdmVkRmVhdHVyZU1hcCk6IFNhbml0aXplZEZlYXR1cmVzID0+IHtcbiAgY29uc3Qgc2FuaXRpemVkOiBTYW5pdGl6ZWRGZWF0dXJlcyA9IHtcbiAgICBhZnRlclJlYWRQcm9taXNlczogbmV3IE1hcCgpLFxuICAgIGVuYWJsZWRGZWF0dXJlczogW10sXG4gICAgZmxvYXRpbmdTZWxlY3RUb29sYmFyOiB7XG4gICAgICBzZWN0aW9uczogW10sXG4gICAgfSxcbiAgICBtYXJrZG93blRyYW5zZm9ybWVyczogW10sXG4gICAgbm9kZXM6IFtdLFxuICAgIHBsdWdpbnM6IFtdLFxuICAgIHNsYXNoTWVudToge1xuICAgICAgZHluYW1pY09wdGlvbnM6IFtdLFxuICAgICAgZ3JvdXBzV2l0aE9wdGlvbnM6IFtdLFxuICAgIH0sXG4gICAgdmFsaWRhdGlvbnM6IG5ldyBNYXAoKSxcbiAgfVxuXG4gIGZlYXR1cmVzLmZvckVhY2goKGZlYXR1cmUpID0+IHtcbiAgICBpZiAoZmVhdHVyZS5ub2Rlcz8ubGVuZ3RoKSB7XG4gICAgICBzYW5pdGl6ZWQubm9kZXMgPSBzYW5pdGl6ZWQubm9kZXMuY29uY2F0KGZlYXR1cmUubm9kZXMpXG4gICAgICBmZWF0dXJlLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKG5vZGU/LmFmdGVyUmVhZFByb21pc2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICBzYW5pdGl6ZWQuYWZ0ZXJSZWFkUHJvbWlzZXMuc2V0KG5vZGUudHlwZSwgbm9kZS5hZnRlclJlYWRQcm9taXNlcylcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZT8udmFsaWRhdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgIHNhbml0aXplZC52YWxpZGF0aW9ucy5zZXQobm9kZS50eXBlLCBub2RlLnZhbGlkYXRpb25zKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoZmVhdHVyZS5wbHVnaW5zPy5sZW5ndGgpIHtcbiAgICAgIGZlYXR1cmUucGx1Z2lucy5mb3JFYWNoKChwbHVnaW4sIGkpID0+IHtcbiAgICAgICAgc2FuaXRpemVkLnBsdWdpbnMucHVzaCh7XG4gICAgICAgICAgQ29tcG9uZW50OiBwbHVnaW4uQ29tcG9uZW50LFxuICAgICAgICAgIGtleTogZmVhdHVyZS5rZXkgKyBpLFxuICAgICAgICAgIHBvc2l0aW9uOiBwbHVnaW4ucG9zaXRpb24sXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoZmVhdHVyZS5tYXJrZG93blRyYW5zZm9ybWVycz8ubGVuZ3RoKSB7XG4gICAgICBzYW5pdGl6ZWQubWFya2Rvd25UcmFuc2Zvcm1lcnMgPSBzYW5pdGl6ZWQubWFya2Rvd25UcmFuc2Zvcm1lcnMuY29uY2F0KFxuICAgICAgICBmZWF0dXJlLm1hcmtkb3duVHJhbnNmb3JtZXJzLFxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChmZWF0dXJlLmZsb2F0aW5nU2VsZWN0VG9vbGJhcj8uc2VjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIGZlYXR1cmUuZmxvYXRpbmdTZWxlY3RUb29sYmFyPy5zZWN0aW9ucykge1xuICAgICAgICAvLyAxLiBmaW5kIHRoZSBzZWN0aW9uIHdpdGggdGhlIHNhbWUga2V5IG9yIGNyZWF0ZSBuZXcgb25lXG4gICAgICAgIGxldCBmb3VuZFNlY3Rpb24gPSBzYW5pdGl6ZWQuZmxvYXRpbmdTZWxlY3RUb29sYmFyLnNlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgKHNhbml0aXplZFNlY3Rpb24pID0+IHNhbml0aXplZFNlY3Rpb24ua2V5ID09PSBzZWN0aW9uLmtleSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIWZvdW5kU2VjdGlvbikge1xuICAgICAgICAgIGZvdW5kU2VjdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICBlbnRyaWVzOiBbXSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2FuaXRpemVkLmZsb2F0aW5nU2VsZWN0VG9vbGJhci5zZWN0aW9ucyA9XG4gICAgICAgICAgICBzYW5pdGl6ZWQuZmxvYXRpbmdTZWxlY3RUb29sYmFyLnNlY3Rpb25zLmZpbHRlcihcbiAgICAgICAgICAgICAgKHNhbml0aXplZFNlY3Rpb24pID0+IHNhbml0aXplZFNlY3Rpb24ua2V5ICE9PSBzZWN0aW9uLmtleSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIEFkZCBvcHRpb25zIHRvIGdyb3VwIG9wdGlvbnMgYXJyYXkgYW5kIGFkZCB0byBzYW5pdGl6ZWQuc2xhc2hNZW51Lmdyb3Vwc1dpdGhPcHRpb25zXG4gICAgICAgIGlmIChzZWN0aW9uPy5lbnRyaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3VuZFNlY3Rpb24uZW50cmllcyA9IGZvdW5kU2VjdGlvbi5lbnRyaWVzLmNvbmNhdChzZWN0aW9uLmVudHJpZXMpXG4gICAgICAgIH1cbiAgICAgICAgc2FuaXRpemVkLmZsb2F0aW5nU2VsZWN0VG9vbGJhcj8uc2VjdGlvbnMucHVzaChmb3VuZFNlY3Rpb24pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZlYXR1cmUuc2xhc2hNZW51Py5vcHRpb25zKSB7XG4gICAgICBpZiAoZmVhdHVyZS5zbGFzaE1lbnUuZHluYW1pY09wdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICBzYW5pdGl6ZWQuc2xhc2hNZW51LmR5bmFtaWNPcHRpb25zID0gc2FuaXRpemVkLnNsYXNoTWVudS5keW5hbWljT3B0aW9ucy5jb25jYXQoXG4gICAgICAgICAgZmVhdHVyZS5zbGFzaE1lbnUuZHluYW1pY09wdGlvbnMsXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBvcHRpb25Hcm91cCBvZiBmZWF0dXJlLnNsYXNoTWVudS5vcHRpb25zKSB7XG4gICAgICAgIC8vIDEuIGZpbmQgdGhlIGdyb3VwIHdpdGggdGhlIHNhbWUgbmFtZSBvciBjcmVhdGUgbmV3IG9uZVxuICAgICAgICBsZXQgZ3JvdXAgPSBzYW5pdGl6ZWQuc2xhc2hNZW51Lmdyb3Vwc1dpdGhPcHRpb25zLmZpbmQoXG4gICAgICAgICAgKGdyb3VwKSA9PiBncm91cC50aXRsZSA9PT0gb3B0aW9uR3JvdXAudGl0bGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKCFncm91cCkge1xuICAgICAgICAgIGdyb3VwID0ge1xuICAgICAgICAgICAgLi4ub3B0aW9uR3JvdXAsXG4gICAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2FuaXRpemVkLnNsYXNoTWVudS5ncm91cHNXaXRoT3B0aW9ucyA9IHNhbml0aXplZC5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgKGdyb3VwKSA9PiBncm91cC50aXRsZSAhPT0gb3B0aW9uR3JvdXAudGl0bGUsXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gQWRkIG9wdGlvbnMgdG8gZ3JvdXAgb3B0aW9ucyBhcnJheSBhbmQgYWRkIHRvIHNhbml0aXplZC5zbGFzaE1lbnUuZ3JvdXBzV2l0aE9wdGlvbnNcbiAgICAgICAgaWYgKG9wdGlvbkdyb3VwPy5vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgICBncm91cC5vcHRpb25zID0gZ3JvdXAub3B0aW9ucy5jb25jYXQob3B0aW9uR3JvdXAub3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgICBzYW5pdGl6ZWQuc2xhc2hNZW51Lmdyb3Vwc1dpdGhPcHRpb25zLnB1c2goZ3JvdXApXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2FuaXRpemVkLmVuYWJsZWRGZWF0dXJlcy5wdXNoKGZlYXR1cmUua2V5KVxuICB9KVxuXG4gIC8vIFNvcnQgc2FuaXRpemVkLmZsb2F0aW5nU2VsZWN0VG9vbGJhci5zZWN0aW9ucyBieSBvcmRlciBwcm9wZXJ0eVxuICBzYW5pdGl6ZWQuZmxvYXRpbmdTZWxlY3RUb29sYmFyLnNlY3Rpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICBpZiAoYS5vcmRlciAmJiBiLm9yZGVyKSB7XG4gICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXJcbiAgICB9IGVsc2UgaWYgKGEub3JkZXIpIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH0gZWxzZSBpZiAoYi5vcmRlcikge1xuICAgICAgcmV0dXJuIDFcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDBcbiAgICB9XG4gIH0pXG5cbiAgLy8gU29ydCBzYW5pdGl6ZWQuZmxvYXRpbmdTZWxlY3RUb29sYmFyLnNlY3Rpb25zLltzZWN0aW9uXS5lbnRyaWVzIGJ5IG9yZGVyIHByb3BlcnR5XG4gIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzYW5pdGl6ZWQuZmxvYXRpbmdTZWxlY3RUb29sYmFyLnNlY3Rpb25zKSB7XG4gICAgc2VjdGlvbi5lbnRyaWVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLm9yZGVyICYmIGIub3JkZXIpIHtcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyXG4gICAgICB9IGVsc2UgaWYgKGEub3JkZXIpIHtcbiAgICAgICAgcmV0dXJuIC0xXG4gICAgICB9IGVsc2UgaWYgKGIub3JkZXIpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBzYW5pdGl6ZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplRWRpdG9yQ29uZmlnKGVkaXRvckNvbmZpZzogRWRpdG9yQ29uZmlnKTogU2FuaXRpemVkRWRpdG9yQ29uZmlnIHtcbiAgY29uc3QgcmVzb2x2ZWRGZWF0dXJlTWFwID0gbG9hZEZlYXR1cmVzKHtcbiAgICB1bnNhbml0aXplZEVkaXRvckNvbmZpZzogZWRpdG9yQ29uZmlnLFxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgZmVhdHVyZXM6IHNhbml0aXplRmVhdHVyZXMocmVzb2x2ZWRGZWF0dXJlTWFwKSxcbiAgICBsZXhpY2FsOiBlZGl0b3JDb25maWcubGV4aWNhbCxcbiAgICByZXNvbHZlZEZlYXR1cmVNYXA6IHJlc29sdmVkRmVhdHVyZU1hcCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInNhbml0aXplRmVhdHVyZXMiLCJzYW5pdGl6ZUVkaXRvckNvbmZpZyIsImZlYXR1cmVzIiwic2FuaXRpemVkIiwiYWZ0ZXJSZWFkUHJvbWlzZXMiLCJNYXAiLCJlbmFibGVkRmVhdHVyZXMiLCJmbG9hdGluZ1NlbGVjdFRvb2xiYXIiLCJzZWN0aW9ucyIsIm1hcmtkb3duVHJhbnNmb3JtZXJzIiwibm9kZXMiLCJwbHVnaW5zIiwic2xhc2hNZW51IiwiZHluYW1pY09wdGlvbnMiLCJncm91cHNXaXRoT3B0aW9ucyIsInZhbGlkYXRpb25zIiwiZm9yRWFjaCIsImZlYXR1cmUiLCJsZW5ndGgiLCJjb25jYXQiLCJub2RlIiwic2V0IiwidHlwZSIsInBsdWdpbiIsImkiLCJwdXNoIiwiQ29tcG9uZW50Iiwia2V5IiwicG9zaXRpb24iLCJzZWN0aW9uIiwiZm91bmRTZWN0aW9uIiwiZmluZCIsInNhbml0aXplZFNlY3Rpb24iLCJlbnRyaWVzIiwiZmlsdGVyIiwib3B0aW9ucyIsIm9wdGlvbkdyb3VwIiwiZ3JvdXAiLCJ0aXRsZSIsInNvcnQiLCJhIiwiYiIsIm9yZGVyIiwiZWRpdG9yQ29uZmlnIiwicmVzb2x2ZWRGZWF0dXJlTWFwIiwibG9hZEZlYXR1cmVzIiwidW5zYW5pdGl6ZWRFZGl0b3JDb25maWciLCJsZXhpY2FsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUthQSxnQkFBZ0I7ZUFBaEJBOztJQXVJR0Msb0JBQW9CO2VBQXBCQTs7O3dCQXpJYTtBQUV0QixNQUFNRCxtQkFBbUIsQ0FBQ0U7SUFDL0IsTUFBTUMsWUFBK0I7UUFDbkNDLG1CQUFtQixJQUFJQztRQUN2QkMsaUJBQWlCLEVBQUU7UUFDbkJDLHVCQUF1QjtZQUNyQkMsVUFBVSxFQUFFO1FBQ2Q7UUFDQUMsc0JBQXNCLEVBQUU7UUFDeEJDLE9BQU8sRUFBRTtRQUNUQyxTQUFTLEVBQUU7UUFDWEMsV0FBVztZQUNUQyxnQkFBZ0IsRUFBRTtZQUNsQkMsbUJBQW1CLEVBQUU7UUFDdkI7UUFDQUMsYUFBYSxJQUFJVjtJQUNuQjtJQUVBSCxTQUFTYyxPQUFPLENBQUMsQ0FBQ0M7UUFDaEIsSUFBSUEsUUFBUVAsS0FBSyxFQUFFUSxRQUFRO1lBQ3pCZixVQUFVTyxLQUFLLEdBQUdQLFVBQVVPLEtBQUssQ0FBQ1MsTUFBTSxDQUFDRixRQUFRUCxLQUFLO1lBQ3RETyxRQUFRUCxLQUFLLENBQUNNLE9BQU8sQ0FBQyxDQUFDSTtnQkFDckIsSUFBSUEsTUFBTWhCLG1CQUFtQmMsUUFBUTtvQkFDbkNmLFVBQVVDLGlCQUFpQixDQUFDaUIsR0FBRyxDQUFDRCxLQUFLRSxJQUFJLEVBQUVGLEtBQUtoQixpQkFBaUI7Z0JBQ25FO2dCQUNBLElBQUlnQixNQUFNTCxhQUFhRyxRQUFRO29CQUM3QmYsVUFBVVksV0FBVyxDQUFDTSxHQUFHLENBQUNELEtBQUtFLElBQUksRUFBRUYsS0FBS0wsV0FBVztnQkFDdkQ7WUFDRjtRQUNGO1FBQ0EsSUFBSUUsUUFBUU4sT0FBTyxFQUFFTyxRQUFRO1lBQzNCRCxRQUFRTixPQUFPLENBQUNLLE9BQU8sQ0FBQyxD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
@@ -94,7 +94,7 @@ html[data-theme='light'] {
94
94
  .floating-select-toolbar-popup__dropdown {
95
95
  &--items {
96
96
  position: absolute;
97
- box-shadow: 0px 6px 20px 0px rgba(0, 0, 0, 0.2);
97
+ @include shadow-m;
98
98
  }
99
99
  }
100
100
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  html[data-theme='light'] {
4
4
  .floating-select-toolbar-popup {
5
- box-shadow: 0px 6px 20px 0px rgba(0, 0, 0, 0.2);
5
+ @include shadow-m;
6
6
  }
7
7
  }
8
8
 
@@ -1,3 +1,4 @@
1
+ import type { i18n } from 'i18next';
1
2
  import type { LexicalCommand, LexicalEditor, TextNode } from 'lexical';
2
3
  import type { MutableRefObject, ReactPortal } from 'react';
3
4
  export type MenuTextMatch = {
@@ -16,6 +17,9 @@ export declare class SlashMenuGroup {
16
17
  }
17
18
  export declare class SlashMenuOption {
18
19
  Icon: React.FC;
20
+ displayName?: ({ i18n }: {
21
+ i18n: i18n;
22
+ }) => string;
19
23
  key: string;
20
24
  keyboardShortcut?: string;
21
25
  keywords: Array<string>;
@@ -27,6 +31,9 @@ export declare class SlashMenuOption {
27
31
  title: string;
28
32
  constructor(title: string, options: {
29
33
  Icon: React.FC;
34
+ displayName?: ({ i18n }: {
35
+ i18n: i18n;
36
+ }) => string;
30
37
  keyboardShortcut?: string;
31
38
  keywords?: Array<string>;
32
39
  onSelect: ({ editor, queryString }: {
@@ -1 +1 @@
1
- {"version":3,"file":"LexicalMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LexicalMenu.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"names":[],"mappings":"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"}
@@ -45,6 +45,7 @@ class SlashMenuGroup {
45
45
  }
46
46
  class SlashMenuOption {
47
47
  Icon;
48
+ displayName;
48
49
  // Icon for display
49
50
  key;
50
51
  // TBD
@@ -63,6 +64,7 @@ class SlashMenuOption {
63
64
  };
64
65
  this.setRefElement = this.setRefElement.bind(this);
65
66
  this.title = title;
67
+ this.displayName = options.displayName;
66
68
  this.keywords = options.keywords || [];
67
69
  this.Icon = options.Icon;
68
70
  this.keyboardShortcut = options.keyboardShortcut;
@@ -397,8 +399,11 @@ function useMenuAnchorRef(resolution, setResolution, className) {
397
399
  if (left + menuWidth > rootElementRect.right) {
398
400
  containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`;
399
401
  }
400
- const margin = 10;
401
- if ((top + menuHeight > window.innerHeight || top + menuHeight > rootElementRect.bottom) && top - rootElementRect.top > menuHeight) {
402
+ const wouldGoOffTopOfScreen = top < menuHeight;
403
+ const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom;
404
+ // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.
405
+ if ((top + menuHeight > window.innerHeight || wouldGoOffBottomOfContainer && !wouldGoOffTopOfScreen) && top - rootElementRect.top > menuHeight) {
406
+ const margin = 24;
402
407
  containerDiv.style.top = `${top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)}px`;
403
408
  }
404
409
  }
@@ -454,4 +459,4 @@ function useMenuAnchorRef(resolution, setResolution, className) {
454
459
  return anchorElementRef;
455
460
  }
456
461
 
457
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL0xleGljYWxNZW51LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExleGljYWxDb21tYW5kLCBMZXhpY2FsRWRpdG9yLCBUZXh0Tm9kZSB9IGZyb20gJ2xleGljYWwnXG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QsIFJlYWN0UG9ydGFsIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQgfSBmcm9tICdAbGV4aWNhbC9yZWFjdC9MZXhpY2FsQ29tcG9zZXJDb250ZXh0J1xuaW1wb3J0IHsgbWVyZ2VSZWdpc3RlciB9IGZyb20gJ0BsZXhpY2FsL3V0aWxzJ1xuaW1wb3J0IHtcbiAgJGdldFNlbGVjdGlvbixcbiAgJGlzUmFuZ2VTZWxlY3Rpb24sXG4gIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICBLRVlfQVJST1dfRE9XTl9DT01NQU5ELFxuICBLRVlfQVJST1dfVVBfQ09NTUFORCxcbiAgS0VZX0VOVEVSX0NPTU1BTkQsXG4gIEtFWV9FU0NBUEVfQ09NTUFORCxcbiAgS0VZX1RBQl9DT01NQU5ELFxuICBjcmVhdGVDb21tYW5kLFxufSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmV4cG9ydCB0eXBlIE1lbnVUZXh0TWF0Y2ggPSB7XG4gIGxlYWRPZmZzZXQ6IG51bWJlclxuICBtYXRjaGluZ1N0cmluZzogc3RyaW5nXG4gIHJlcGxhY2VhYmxlU3RyaW5nOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTWVudVJlc29sdXRpb24gPSB7XG4gIGdldFJlY3Q6ICgpID0+IERPTVJlY3RcbiAgbWF0Y2g/OiBNZW51VGV4dE1hdGNoXG59XG5cbmV4cG9ydCBjb25zdCBQVU5DVFVBVElPTiA9ICdcXFxcLixcXFxcK1xcXFwqXFxcXD9cXFxcJFxcXFxAXFxcXHwje31cXFxcKFxcXFwpXFxcXF5cXFxcLVxcXFxbXFxcXF1cXFxcXFxcXC8hJVxcJ1wifj08Pl86OydcblxuZXhwb3J0IGNsYXNzIFNsYXNoTWVudUdyb3VwIHtcbiAgb3B0aW9uczogQXJyYXk8U2xhc2hNZW51T3B0aW9uPlxuICB0aXRsZTogc3RyaW5nXG59XG5cbmV4cG9ydCBjbGFzcyBTbGFzaE1lbnVPcHRpb24ge1xuICBJY29uOiBSZWFjdC5GQ1xuXG4gIC8vIEljb24gZm9yIGRpc3BsYXlcbiAga2V5OiBzdHJpbmdcbiAgLy8gVEJEXG4gIGtleWJvYXJkU2hvcnRjdXQ/OiBzdHJpbmdcbiAgLy8gRm9yIGV4dHJhIHNlYXJjaGluZy5cbiAga2V5d29yZHM6IEFycmF5PHN0cmluZz5cbiAgLy8gV2hhdCBoYXBwZW5zIHdoZW4geW91IHNlbGVjdCB0aGlzIG9wdGlvbj9cbiAgb25TZWxlY3Q6ICh7IGVkaXRvciwgcXVlcnlTdHJpbmcgfTogeyBlZGl0b3I6IExleGljYWxFZGl0b3I7IHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfSkgPT4gdm9pZFxuICByZWY/OiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cblxuICAvLyBXaGF0IHNob3dzIHVwIGluIHRoZSBlZGl0b3JcbiAgdGl0bGU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgSWNvbjogUmVhY3QuRkNcbiAgICAgIGtleWJvYXJkU2hvcnRjdXQ/OiBzdHJpbmdcbiAgICAgIGtleXdvcmRzPzogQXJyYXk8c3RyaW5nPlxuICAgICAgb25TZWxlY3Q6ICh7IGVkaXRvciwgcXVlcnlTdHJpbmcgfTogeyBlZGl0b3I6IExleGljYWxFZGl0b3I7IHF1ZXJ5U3RyaW5nOiBzdHJpbmcgfSkgPT4gdm9pZFxuICAgIH0sXG4gICkge1xuICAgIHRoaXMua2V5ID0gdGl0bGVcbiAgICB0aGlzLnJlZiA9IHsgY3VycmVudDogbnVsbCB9XG4gICAgdGhpcy5zZXRSZWZFbGVtZW50ID0gdGhpcy5zZXRSZWZFbGVtZW50LmJpbmQodGhpcylcblxuICAgIHRoaXMudGl0bGUgPSB0aXRsZVxuICAgIHRoaXMua2V5d29yZHMgPSBvcHRpb25zLmtleXdvcmRzIHx8IFtdXG4gICAgdGhpcy5JY29uID0gb3B0aW9ucy5JY29uXG4gICAgdGhpcy5rZXlib2FyZFNob3J0Y3V0ID0gb3B0aW9ucy5rZXlib2FyZFNob3J0Y3V0XG4gICAgdGhpcy5vblNlbGVjdCA9IG9wdGlvbnMub25TZWxlY3QuYmluZCh0aGlzKVxuICB9XG5cbiAgc2V0UmVmRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgICB0aGlzLnJlZiA9IHsgY3VycmVudDogZWxlbWVudCB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTWVudVJlbmRlckZuID0gKFxuICBhbmNob3JFbGVtZW50UmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD4sXG4gIGl0ZW1Qcm9wczoge1xuICAgIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwOiAoc2VsZWN0ZWRPcHRpb246IFNsYXNoTWVudU9wdGlvbikgPT4gdm9pZFxuICAgIHNlbGVjdGVkT3B0aW9uS2V5OiBudWxsIHwgc3RyaW5nXG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXk6IChvcHRpb25LZXk6IHN0cmluZykgPT4gdm9pZFxuICB9LFxuICBtYXRjaGluZ1N0cmluZzogbnVsbCB8IHN0cmluZyxcbikgPT4gSlNYLkVsZW1lbnQgfCBSZWFjdFBvcnRhbCB8IG51bGxcblxuY29uc3Qgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHR5cGVhaGVhZENvbnRhaW5lck5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHlwZWFoZWFkLW1lbnUnKVxuICBpZiAoIXR5cGVhaGVhZENvbnRhaW5lck5vZGUpIHJldHVyblxuXG4gIGNvbnN0IHR5cGVhaGVhZFJlY3QgPSB0eXBlYWhlYWRDb250YWluZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wICsgdHlwZWFoZWFkUmVjdC5oZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICB0eXBlYWhlYWRDb250YWluZXJOb2RlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICB9KVxuICB9XG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wIDwgMCkge1xuICAgIHR5cGVhaGVhZENvbnRhaW5lck5vZGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmxvY2s6ICdjZW50ZXInLFxuICAgIH0pXG4gIH1cblxuICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pXG59XG5cbi8qKlxuICogV2FsayBiYWNrd2FyZHMgYWxvbmcgdXNlciBpbnB1dCBhbmQgZm9yd2FyZCB0aHJvdWdoIGVudGl0eSB0aXRsZSB0byB0cnlcbiAqIGFuZCByZXBsYWNlIG1vcmUgb2YgdGhlIHVzZXIncyB0ZXh0IHdpdGggZW50aXR5LlxuICovXG5mdW5jdGlvbiBnZXRGdWxsTWF0Y2hPZmZzZXQoZG9jdW1lbnRUZXh0OiBzdHJpbmcsIGVudHJ5VGV4dDogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIGxldCB0cmlnZ2VyT2Zmc2V0ID0gb2Zmc2V0XG4gIGZvciAobGV0IGkgPSB0cmlnZ2VyT2Zmc2V0OyBpIDw9IGVudHJ5VGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2N1bWVudFRleHQuc3Vic3RyKC1pKSA9PT0gZW50cnlUZXh0LnN1YnN0cigwLCBpKSkge1xuICAgICAgdHJpZ2dlck9mZnNldCA9IGlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRyaWdnZXJPZmZzZXRcbn1cblxuLyoqXG4gKiBTcGxpdCBMZXhpY2FsIFRleHROb2RlIGFuZCByZXR1cm4gYSBuZXcgVGV4dE5vZGUgb25seSBjb250YWluaW5nIG1hdGNoZWQgdGV4dC5cbiAqIENvbW1vbiB1c2UgY2FzZXMgaW5jbHVkZTogcmVtb3ZpbmcgdGhlIG5vZGUsIHJlcGxhY2luZyB3aXRoIGEgbmV3IG5vZGUuXG4gKi9cbmZ1bmN0aW9uICRzcGxpdE5vZGVDb250YWluaW5nUXVlcnkobWF0Y2g6IE1lbnVUZXh0TWF0Y2gpOiBUZXh0Tm9kZSB8IG51bGwge1xuICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8ICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvclxuICBpZiAoYW5jaG9yLnR5cGUgIT09ICd0ZXh0Jykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yTm9kZSA9IGFuY2hvci5nZXROb2RlKClcbiAgaWYgKCFhbmNob3JOb2RlLmlzU2ltcGxlVGV4dCgpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBzZWxlY3Rpb25PZmZzZXQgPSBhbmNob3Iub2Zmc2V0XG4gIGNvbnN0IHRleHRDb250ZW50ID0gYW5jaG9yTm9kZS5nZXRUZXh0Q29udGVudCgpLnNsaWNlKDAsIHNlbGVjdGlvbk9mZnNldClcbiAgY29uc3QgY2hhcmFjdGVyT2Zmc2V0ID0gbWF0Y2gucmVwbGFjZWFibGVTdHJpbmcubGVuZ3RoXG4gIGNvbnN0IHF1ZXJ5T2Zmc2V0ID0gZ2V0RnVsbE1hdGNoT2Zmc2V0KHRleHRDb250ZW50LCBtYXRjaC5tYXRjaGluZ1N0cmluZywgY2hhcmFjdGVyT2Zmc2V0KVxuICBjb25zdCBzdGFydE9mZnNldCA9IHNlbGVjdGlvbk9mZnNldCAtIHF1ZXJ5T2Zmc2V0XG4gIGlmIChzdGFydE9mZnNldCA8IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGxldCBuZXdOb2RlXG4gIGlmIChzdGFydE9mZnNldCA9PT0gMCkge1xuICAgIDtbbmV3Tm9kZV0gPSBhbmNob3JOb2RlLnNwbGl0VGV4dChzZWxlY3Rpb25PZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgO1ssIG5ld05vZGVdID0gYW5jaG9yTm9kZS5zcGxpdFRleHQoc3RhcnRPZmZzZXQsIHNlbGVjdGlvbk9mZnNldClcbiAgfVxuXG4gIHJldHVybiBuZXdOb2RlXG59XG5cbi8vIEdvdCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MjU0MzkwOC8yMDEzNTgwXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgaW5jbHVkZUhpZGRlbjogYm9vbGVhbixcbik6IEhUTUxCb2R5RWxlbWVudCB8IEhUTUxFbGVtZW50IHtcbiAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxuICBjb25zdCBleGNsdWRlU3RhdGljUGFyZW50ID0gc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZSdcbiAgY29uc3Qgb3ZlcmZsb3dSZWdleCA9IGluY2x1ZGVIaWRkZW4gPyAvKGF1dG98c2Nyb2xsfGhpZGRlbikvIDogLyhhdXRvfHNjcm9sbCkvXG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5XG4gIH1cbiAgZm9yIChsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50OyAocGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQpOyApIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KVxuICAgIGlmIChleGNsdWRlU3RhdGljUGFyZW50ICYmIHN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbn1cblxuZnVuY3Rpb24gaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lcihcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBjUmVjdCA9IGNvbnRhaW5lckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIHRSZWN0LnRvcCA+IGNSZWN0LnRvcCAmJiB0UmVjdC50b3AgPCBjUmVjdC5ib3R0b21cbn1cblxuLy8gUmVwb3NpdGlvbiB0aGUgbWVudSBvbiBzY3JvbGwsIHdpbmRvdyByZXNpemUsIGFuZCBlbGVtZW50IHJlc2l6ZS5cbmV4cG9ydCBmdW5jdGlvbiB1c2VEeW5hbWljUG9zaXRpb25pbmcoXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLFxuICBvblJlcG9zaXRpb246ICgpID0+IHZvaWQsXG4gIG9uVmlzaWJpbGl0eUNoYW5nZT86IChpc0luVmlldzogYm9vbGVhbikgPT4gdm9pZCxcbikge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0YXJnZXRFbGVtZW50ICE9IG51bGwgJiYgcmVzb2x1dGlvbiAhPSBudWxsKSB7XG4gICAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgICBjb25zdCByb290U2Nyb2xsUGFyZW50ID1cbiAgICAgICAgcm9vdEVsZW1lbnQgIT0gbnVsbCA/IGdldFNjcm9sbFBhcmVudChyb290RWxlbWVudCwgZmFsc2UpIDogZG9jdW1lbnQuYm9keVxuICAgICAgbGV0IHRpY2tpbmcgPSBmYWxzZVxuICAgICAgbGV0IHByZXZpb3VzSXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKFxuICAgICAgICB0YXJnZXRFbGVtZW50LFxuICAgICAgICByb290U2Nyb2xsUGFyZW50LFxuICAgICAgKVxuICAgICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRpY2tpbmcpIHtcbiAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG9uUmVwb3NpdGlvbigpXG4gICAgICAgICAgICB0aWNraW5nID0gZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICAgIHRpY2tpbmcgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKHRhcmdldEVsZW1lbnQsIHJvb3RTY3JvbGxQYXJlbnQpXG4gICAgICAgIGlmIChpc0luVmlldyAhPT0gcHJldmlvdXNJc0luVmlldykge1xuICAgICAgICAgIHByZXZpb3VzSXNJblZpZXcgPSBpc0luVmlld1xuICAgICAgICAgIGlmIChvblZpc2liaWxpdHlDaGFuZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlKGlzSW5WaWV3KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXBvc2l0aW9uKVxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVwb3NpdGlvbilcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFyZ2V0RWxlbWVudClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0YXJnZXRFbGVtZW50KVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXBvc2l0aW9uKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHRydWUpXG4gICAgICB9XG4gICAgfVxuICB9LCBbdGFyZ2V0RWxlbWVudCwgZWRpdG9yLCBvblZpc2liaWxpdHlDaGFuZ2UsIG9uUmVwb3NpdGlvbiwgcmVzb2x1dGlvbl0pXG59XG5cbmV4cG9ydCBjb25zdCBTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORDogTGV4aWNhbENvbW1hbmQ8e1xuICBpbmRleDogbnVtYmVyXG4gIG9wdGlvbjogU2xhc2hNZW51T3B0aW9uXG59PiA9IGNyZWF0ZUNvbW1hbmQoJ1NDUk9MTF9UWVBFQUhFQURfT1BUSU9OX0lOVE9fVklFV19DT01NQU5EJylcblxuZXhwb3J0IGZ1bmN0aW9uIExleGljYWxNZW51KHtcbiAgYW5jaG9yRWxlbWVudFJlZixcbiAgY2xvc2UsXG4gIGVkaXRvcixcbiAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gIGdyb3Vwc1dpdGhPcHRpb25zLFxuICBtZW51UmVuZGVyRm4sXG4gIG9uU2VsZWN0T3B0aW9uLFxuICByZXNvbHV0aW9uLFxuICBzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkgPSBmYWxzZSxcbn06IHtcbiAgYW5jaG9yRWxlbWVudFJlZjogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD5cbiAgY2xvc2U6ICgpID0+IHZvaWRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgbWVudVJlbmRlckZuOiBNZW51UmVuZGVyRm5cbiAgb25TZWxlY3RPcHRpb246IChcbiAgICBvcHRpb246IFNsYXNoTWVudU9wdGlvbixcbiAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeTogVGV4dE5vZGUgfCBudWxsLFxuICAgIGNsb3NlTWVudTogKCkgPT4gdm9pZCxcbiAgICBtYXRjaGluZ1N0cmluZzogc3RyaW5nLFxuICApID0+IHZvaWRcbiAgcmVzb2x1dGlvbjogTWVudVJlc29sdXRpb25cbiAgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5PzogYm9vbGVhblxufSk6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbktleSwgc2V0U2VsZWN0ZWRPcHRpb25LZXldID0gdXNlU3RhdGU8bnVsbCB8IHN0cmluZz4obnVsbClcblxuICBjb25zdCBtYXRjaGluZ1N0cmluZyA9IChyZXNvbHV0aW9uLm1hdGNoICYmIHJlc29sdXRpb24ubWF0Y2gubWF0Y2hpbmdTdHJpbmcpIHx8ICcnXG5cbiAgY29uc3QgdXBkYXRlU2VsZWN0ZWRPcHRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IHJvb3RFbGVtID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICAgIGlmIChyb290RWxlbSAhPT0gbnVsbCkge1xuICAgICAgICByb290RWxlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsICd0eXBlYWhlYWQtaXRlbS0nICsgb3B0aW9uLmtleSlcbiAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXkob3B0aW9uLmtleSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtlZGl0b3JdLFxuICApXG5cbiAgY29uc3Qgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gc2V0IHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZmlyc3Qgb2YgdGhlIG1hdGNoaW5nIG9uZXNcbiAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiYgbWF0Y2hpbmdTdHJpbmcgIT0gbnVsbCkge1xuICAgICAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG5cbiAgICAgIGlmIChhbGxPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaXJzdE1hdGNoaW5nT3B0aW9uID0gYWxsT3B0aW9uc1swXVxuICAgICAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbihmaXJzdE1hdGNoaW5nT3B0aW9uKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2dyb3Vwc1dpdGhPcHRpb25zLCB1cGRhdGVTZWxlY3RlZE9wdGlvbiwgbWF0Y2hpbmdTdHJpbmddKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24oKVxuICB9LCBbbWF0Y2hpbmdTdHJpbmcsIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uXSlcblxuICBjb25zdCBzZWxlY3RPcHRpb25BbmRDbGVhblVwID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlbGVjdGVkT3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSA9XG4gICAgICAgICAgcmVzb2x1dGlvbi5tYXRjaCAhPSBudWxsICYmIHNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeVxuICAgICAgICAgICAgPyAkc3BsaXROb2RlQ29udGFpbmluZ1F1ZXJ5KHJlc29sdXRpb24ubWF0Y2gpXG4gICAgICAgICAgICA6IG51bGxcblxuICAgICAgICBvblNlbGVjdE9wdGlvbihcbiAgICAgICAgICBzZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSxcbiAgICAgICAgICBjbG9zZSxcbiAgICAgICAgICByZXNvbHV0aW9uLm1hdGNoID8gcmVzb2x1dGlvbi5tYXRjaC5tYXRjaGluZ1N0cmluZyA6ICcnLFxuICAgICAgICApXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2VkaXRvciwgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5LCByZXNvbHV0aW9uLm1hdGNoLCBvblNlbGVjdE9wdGlvbiwgY2xvc2VdLFxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdEVsZW0gPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgICAgaWYgKHJvb3RFbGVtICE9PSBudWxsKSB7XG4gICAgICAgIHJvb3RFbGVtLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3JdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsKSB7XG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleShudWxsKVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uKClcbiAgICB9XG4gIH0sIFtcbiAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbixcbiAgICBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbixcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQsXG4gICAgICAgICh7IG9wdGlvbiB9KSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbi5yZWYgJiYgb3B0aW9uLnJlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNjcm9sbEludG9WaWV3SWZOZWVkZWQob3B0aW9uLnJlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlU2VsZWN0ZWRPcHRpb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kPEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICBLRVlfQVJST1dfRE9XTl9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zICE9PSBudWxsICYmXG4gICAgICAgICAgICBncm91cHNXaXRoT3B0aW9ucy5sZW5ndGggJiZcbiAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uS2V5ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gYWxsT3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4ICE9PSBhbGxPcHRpb25zLmxlbmd0aCAtIDEgPyBzZWxlY3RlZEluZGV4ICsgMSA6IDBcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zW25ld1NlbGVjdGVkSW5kZXhdXG5cbiAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKG5ld1NlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGVkT3B0aW9uLnJlZiAhPSBudWxsICYmIG5ld1NlbGVjdGVkT3B0aW9uLnJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQsIHtcbiAgICAgICAgICAgICAgICBpbmRleDogbmV3U2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICBvcHRpb246IG5ld1NlbGVjdGVkT3B0aW9uLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX0FSUk9XX1VQX0NPTU1BTkQsXG4gICAgICAgIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSBwYXlsb2FkXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25LZXkgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBhbGxPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBzZWxlY3RlZE9wdGlvbktleSlcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXggIT09IDAgPyBzZWxlY3RlZEluZGV4IC0gMSA6IGFsbE9wdGlvbnMubGVuZ3RoIC0gMVxuXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbiA9IGFsbE9wdGlvbnNbbmV3U2VsZWN0ZWRJbmRleF1cblxuICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRPcHRpb24obmV3U2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRPcHRpb24ucmVmICE9IG51bGwgJiYgbmV3U2VsZWN0ZWRPcHRpb24ucmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChuZXdTZWxlY3RlZE9wdGlvbi5yZWYuY3VycmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIEtFWV9FU0NBUEVfQ09NTUFORCxcbiAgICAgICAgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICBjb25zdCBldmVudCA9IHBheWxvYWRcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjbG9zZSgpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX1RBQl9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuXG4gICAgICAgICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsIHx8IHNlbGVjdGVkT3B0aW9uS2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYWxsT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZsYXRNYXAoKGdyb3VwKSA9PiBncm91cC5vcHRpb25zKVxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHNlbGVjdGVkT3B0aW9uS2V5KVxuICAgICAgICAgIGlmICghc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAoc2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgS0VZX0VOVEVSX0NPTU1BTkQsXG4gICAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgPT09IG51bGwgfHwgc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG4gICAgICAgICAgaWYgKCFzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwKHNlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtcbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwLFxuICAgIGNsb3NlLFxuICAgIGVkaXRvcixcbiAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbixcbiAgXSlcblxuICBjb25zdCBsaXN0SXRlbVByb3BzID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMsXG4gICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwLFxuICAgICAgc2VsZWN0ZWRPcHRpb25LZXksXG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleSxcbiAgICB9KSxcbiAgICBbc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCwgc2VsZWN0ZWRPcHRpb25LZXksIGdyb3Vwc1dpdGhPcHRpb25zXSxcbiAgKVxuXG4gIHJldHVybiBtZW51UmVuZGVyRm4oXG4gICAgYW5jaG9yRWxlbWVudFJlZixcbiAgICBsaXN0SXRlbVByb3BzLFxuICAgIHJlc29sdXRpb24ubWF0Y2ggPyByZXNvbHV0aW9uLm1hdGNoLm1hdGNoaW5nU3RyaW5nIDogJycsXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbnVBbmNob3JSZWYoXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgc2V0UmVzb2x1dGlvbjogKHI6IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCkgPT4gdm9pZCxcbiAgY2xhc3NOYW1lPzogc3RyaW5nLFxuKTogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD4ge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICBjb25zdCBhbmNob3JFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50Pihkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSlcbiAgY29uc3QgcG9zaXRpb25NZW51ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBjb25zdCBjb250YWluZXJEaXYgPSBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnRcblxuICAgIGNvbnN0IFZFUlRJQ0FMX09GRlNFVCA9IDMyIGFzIGNvbnN0XG5cbiAgICBjb25zdCBtZW51RWxlID0gY29udGFpbmVyRGl2LmZpcnN0Q2hpbGQgYXMgRWxlbWVudFxuICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCAmJiByZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IGhlaWdodCwgbGVmdCwgdG9wLCB3aWR0aCB9ID0gcmVzb2x1dGlvbi5nZXRSZWN0KClcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHt0b3AgKyB3aW5kb3cuc2Nyb2xsWSArIFZFUlRJQ0FMX09GRlNFVH1weGBcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5sZWZ0ID0gYCR7bGVmdCArIHdpbmRvdy5zY3JvbGxYfXB4YFxuICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGBcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YFxuICAgICAgaWYgKG1lbnVFbGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWVudVJlY3QgPSBtZW51RWxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51UmVjdC5oZWlnaHRcbiAgICAgICAgY29uc3QgbWVudVdpZHRoID0gbWVudVJlY3Qud2lkdGhcblxuICAgICAgICBjb25zdCByb290RWxlbWVudFJlY3QgPSByb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGlmIChsZWZ0ICsgbWVudVdpZHRoID4gcm9vdEVsZW1lbnRSZWN0LnJpZ2h0KSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmxlZnQgPSBgJHtyb290RWxlbWVudFJlY3QucmlnaHQgLSBtZW51V2lkdGggKyB3aW5kb3cuc2Nyb2xsWH1weGBcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXJnaW4gPSAxMFxuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRvcCArIG1lbnVIZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgdG9wICsgbWVudUhlaWdodCA+IHJvb3RFbGVtZW50UmVjdC5ib3R0b20pICYmXG4gICAgICAgICAgdG9wIC0gcm9vdEVsZW1lbnRSZWN0LnRvcCA+IG1lbnVIZWlnaHRcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLnRvcCA9IGAke1xuICAgICAgICAgICAgdG9wICsgVkVSVElDQUxfT0ZGU0VUIC0gbWVudUhlaWdodCArIHdpbmRvdy5zY3JvbGxZIC0gKGhlaWdodCArIG1hcmdpbilcbiAgICAgICAgICB9cHhgXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFjb250YWluZXJEaXYuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgaWYgKGNsYXNzTmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LmNsYXNzTmFtZSA9IGNsYXNzTmFtZVxuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lckRpdi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnVHlwZWFoZWFkIG1lbnUnKVxuICAgICAgICBjb250YWluZXJEaXYuc2V0QXR0cmlidXRlKCdpZCcsICd0eXBlYWhlYWQtbWVudScpXG4gICAgICAgIGNvbnRhaW5lckRpdi5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnbGlzdGJveCcpXG4gICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xuICAgICAgICBjb250YWluZXJEaXYuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGNvbnRhaW5lckRpdilcbiAgICAgIH1cbiAgICAgIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCA9IGNvbnRhaW5lckRpdlxuICAgICAgcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJywgJ3R5cGVhaGVhZC1tZW51JylcbiAgICB9XG4gIH0sIFtlZGl0b3IsIHJlc29sdXRpb24sIGNsYXNzTmFtZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgaWYgKHJlc29sdXRpb24gIT09IG51bGwpIHtcbiAgICAgIHBvc2l0aW9uTWVudSgpXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAocm9vdEVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICByb290RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udGFpbmVyRGl2ID0gYW5jaG9yRWxlbWVudFJlZi5jdXJyZW50XG4gICAgICAgIGlmIChjb250YWluZXJEaXYgIT09IG51bGwgJiYgY29udGFpbmVyRGl2LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LnJlbW92ZSgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3IsIHBvc2l0aW9uTWVudSwgcmVzb2x1dGlvbl0pXG5cbiAgY29uc3Qgb25WaXNpYmlsaXR5Q2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGlzSW5WaWV3OiBib29sZWFuKSA9PiB7XG4gICAgICBpZiAocmVzb2x1dGlvbiAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoIWlzSW5WaWV3KSB7XG4gICAgICAgICAgc2V0UmVzb2x1dGlvbihudWxsKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbcmVzb2x1dGlvbiwgc2V0UmVzb2x1dGlvbl0sXG4gIClcblxuICB1c2VEeW5hbWljUG9zaXRpb25pbmcocmVzb2x1dGlvbiwgYW5jaG9yRWxlbWVudFJlZi5jdXJyZW50LCBwb3NpdGlvbk1lbnUsIG9uVmlzaWJpbGl0eUNoYW5nZSlcblxuICByZXR1cm4gYW5jaG9yRWxlbWVudFJlZlxufVxuXG5leHBvcnQgdHlwZSBUcmlnZ2VyRm4gPSAodGV4dDogc3RyaW5nLCBlZGl0b3I6IExleGljYWxFZGl0b3IpID0+IE1lbnVUZXh0TWF0Y2ggfCBudWxsXG4iXSwibmFtZXMiOlsiUFVOQ1RVQVRJT04iLCJTbGFzaE1lbnVHcm91cCIsIlNsYXNoTWVudU9wdGlvbiIsImdldFNjcm9sbFBhcmVudCIsInVzZUR5bmFtaWNQb3NpdGlvbmluZyIsIlNDUk9MTF9UWVBFQUhFQURfT1BUSU9OX0lOVE9fVklFV19DT01NQU5EIiwiTGV4aWNhbE1lbnUiLCJ1c2VNZW51QW5jaG9yUmVmIiwib3B0aW9ucyIsInRpdGxlIiwiSWNvbiIsImtleSIsImtleWJvYXJkU2hvcnRjdXQiLCJrZXl3b3JkcyIsIm9uU2VsZWN0IiwicmVmIiwiY29uc3RydWN0b3IiLCJjdXJyZW50Iiwic2V0UmVmRWxlbWVudCIsImJpbmQiLCJlbGVtZW50Iiwic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCIsInRhcmdldCIsInR5cGVhaGVhZENvbnRhaW5lck5vZGUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidHlwZWFoZWFkUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcCIsImhlaWdodCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwic2Nyb2xsSW50b1ZpZXciLCJibG9jayIsImdldEZ1bGxNYXRjaE9mZnNldCIsImRvY3VtZW50VGV4dCIsImVudHJ5VGV4dCIsIm9mZnNldCIsInRyaWdnZXJPZmZzZXQiLCJpIiwibGVuZ3RoIiwic3Vic3RyIiwiJHNwbGl0Tm9kZUNvbnRhaW5pbmdRdWVyeSIsIm1hdGNoIiwic2VsZWN0aW9uIiwiJGdldFNlbGVjdGlvbiIsIiRpc1JhbmdlU2VsZWN0aW9uIiwiaXNDb2xsYXBzZWQiLCJhbmNob3IiLCJ0eXBlIiwiYW5jaG9yTm9kZSIsImdldE5vZGUiLCJpc1NpbXBsZVRleHQiLCJzZWxlY3Rpb25PZmZzZXQiLCJ0ZXh0Q29udGVudCIsImdldFRleHRDb250ZW50Iiwic2xpY2UiLCJjaGFyYWN0ZXJPZmZzZXQiLCJyZXBsYWNlYWJsZVN0cmluZyIsInF1ZXJ5T2Zmc2V0IiwibWF0Y2hpbmdTdHJpbmciLCJzdGFydE9mZnNldCIsIm5ld05vZGUiLCJzcGxpdFRleHQiLCJpbmNsdWRlSGlkZGVuIiwic3R5bGUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZXhjbHVkZVN0YXRpY1BhcmVudCIsInBvc2l0aW9uIiwib3ZlcmZsb3dSZWdleCIsImJvZHkiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwidGVzdCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwib3ZlcmZsb3dYIiwiaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lciIsInRhcmdldEVsZW1lbnQiLCJjb250YWluZXJFbGVtZW50IiwidFJlY3QiLCJjUmVjdCIsImJvdHRvbSIsInJlc29sdXRpb24iLCJvblJlcG9zaXRpb24iLCJvblZpc2liaWxpdHlDaGFuZ2UiLCJlZGl0b3IiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwidXNlRWZmZWN0Iiwicm9vdEVsZW1lbnQiLCJnZXRSb290RWxlbWVudCIsInJvb3RTY3JvbGxQYXJlbnQiLCJ0aWNraW5nIiwicHJldmlvdXNJc0luVmlldyIsImhhbmRsZVNjcm9sbCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzSW5WaWV3IiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0dXJlIiwicGFzc2l2ZSIsIm9ic2VydmUiLCJ1bm9ic2VydmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3JlYXRlQ29tbWFuZCIsImFuY2hvckVsZW1lbnRSZWYiLCJjbG9zZSIsImdyb3Vwc1dpdGhPcHRpb25zIiwibWVudVJlbmRlckZuIiwib25TZWxlY3RPcHRpb24iLCJzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkiLCJzZWxlY3RlZE9wdGlvbktleSIsInNldFNlbGVjdGVkT3B0aW9uS2V5IiwidXNlU3RhdGUiLCJ1cGRhdGVTZWxlY3RlZE9wdGlvbiIsInVzZUNhbGxiYWNrIiwib3B0aW9uIiwicm9vdEVsZW0iLCJzZXRBdHRyaWJ1dGUiLCJzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbiIsImFsbE9wdGlvbnMiLCJmbGF0TWFwIiwiZ3JvdXAiLCJmaXJzdE1hdGNoaW5nT3B0aW9uIiwic2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCIsInNlbGVjdGVkT3B0aW9uIiwidXBkYXRlIiwidGV4dE5vZGVDb250YWluaW5nUXVlcnkiLCJyZW1vdmVBdHRyaWJ1dGUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJtZXJnZVJlZ2lzdGVyIiwicmVnaXN0ZXJDb21tYW5kIiwiQ09NTUFORF9QUklPUklUWV9MT1ciLCJLRVlfQVJST1dfRE9XTl9DT01NQU5EIiwicGF5bG9hZCIsImV2ZW50Iiwic2VsZWN0ZWRJbmRleCIsImZpbmRJbmRleCIsIm5ld1NlbGVjdGVkSW5kZXgiLCJuZXdTZWxlY3RlZE9wdGlvbiIsImRpc3BhdGNoQ29tbWFuZCIsImluZGV4IiwicHJldmVudERlZmF1bHQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJLRVlfQVJST1dfVVBfQ09NTUFORCIsIktFWV9FU0NBUEVfQ09NTUFORCIsIktFWV9UQUJfQ09NTUFORCIsImZpbmQiLCJLRVlfRU5URVJfQ09NTUFORCIsImxpc3RJdGVtUHJvcHMiLCJ1c2VNZW1vIiwic2V0UmVzb2x1dGlvbiIsImNsYXNzTmFtZSIsInVzZVJlZiIsImNyZWF0ZUVsZW1lbnQiLCJwb3NpdGlvbk1lbnUiLCJjb250YWluZXJEaXYiLCJWRVJUSUNBTF9PRkZTRVQiLCJtZW51RWxlIiwiZmlyc3RDaGlsZCIsImxlZnQiLCJ3aWR0aCIsImdldFJlY3QiLCJzY3JvbGxZIiwic2Nyb2xsWCIsIm1lbnVSZWN0IiwibWVudUhlaWdodCIsIm1lbnVXaWR0aCIsInJvb3RFbGVtZW50UmVjdCIsInJpZ2h0IiwibWFyZ2luIiwiaXNDb25uZWN0ZWQiLCJkaXNwbGF5IiwiYXBwZW5kIiwicmVtb3ZlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQTZCYUEsV0FBVztlQUFYQTs7SUFFQUMsY0FBYztlQUFkQTs7SUFLQUMsZUFBZTtlQUFmQTs7SUEySEdDLGVBQWU7ZUFBZkE7O0lBZ0NBQyxxQkFBcUI7ZUFBckJBOztJQWlESEMseUNBQXlDO2VBQXpDQTs7SUFLR0MsV0FBVztlQUFYQTs7SUE4UEFDLGdCQUFnQjtlQUFoQkE7Ozt3Q0FoZjBCO3VCQUNaO3lCQVd2Qjt1QkFDNEU7QUFhNUUsTUFBTVAsY0FBYztBQUVwQixNQUFNQztJQUNYTyxRQUErQjtJQUMvQkMsTUFBYTtBQUNmO0FBRU8sTUFBTVA7SUFDWFEsS0FBYztJQUVkLG1CQUFtQjtJQUNuQkMsSUFBVztJQUNYLE1BQU07SUFDTkMsaUJBQXlCO0lBQ3pCLHVCQUF1QjtJQUN2QkMsU0FBdUI7SUFDdkIsNENBQTRDO0lBQzVDQyxTQUEyRjtJQUMzRkMsSUFBMEM7SUFFMUMsOEJBQThCO0lBQzlCTixNQUFhO0lBRWJPLFlBQ0VQLEtBQWEsRUFDYkQsT0FLQyxDQUNEO1FBQ0EsSUFBSSxDQUFDRyxHQUFHLEdBQUdGO1FBQ1gsSUFBSSxDQUFDTSxHQUFHLEdBQUc7WUFBRUUsU0FBUztRQUFLO1FBQzNCLElBQUksQ0FBQ0MsYUFBYSxHQUFHLElB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
462
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9maWVsZC9sZXhpY2FsL3BsdWdpbnMvU2xhc2hNZW51L0xleGljYWxUeXBlYWhlYWRNZW51UGx1Z2luL0xleGljYWxNZW51LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IGkxOG4gfSBmcm9tICdpMThuZXh0J1xuaW1wb3J0IHR5cGUgeyBMZXhpY2FsQ29tbWFuZCwgTGV4aWNhbEVkaXRvciwgVGV4dE5vZGUgfSBmcm9tICdsZXhpY2FsJ1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0LCBSZWFjdFBvcnRhbCB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyB1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IH0gZnJvbSAnQGxleGljYWwvcmVhY3QvTGV4aWNhbENvbXBvc2VyQ29udGV4dCdcbmltcG9ydCB7IG1lcmdlUmVnaXN0ZXIgfSBmcm9tICdAbGV4aWNhbC91dGlscydcbmltcG9ydCB7XG4gICRnZXRTZWxlY3Rpb24sXG4gICRpc1JhbmdlU2VsZWN0aW9uLFxuICBDT01NQU5EX1BSSU9SSVRZX0xPVyxcbiAgS0VZX0FSUk9XX0RPV05fQ09NTUFORCxcbiAgS0VZX0FSUk9XX1VQX0NPTU1BTkQsXG4gIEtFWV9FTlRFUl9DT01NQU5ELFxuICBLRVlfRVNDQVBFX0NPTU1BTkQsXG4gIEtFWV9UQUJfQ09NTUFORCxcbiAgY3JlYXRlQ29tbWFuZCxcbn0gZnJvbSAnbGV4aWNhbCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG5leHBvcnQgdHlwZSBNZW51VGV4dE1hdGNoID0ge1xuICBsZWFkT2Zmc2V0OiBudW1iZXJcbiAgbWF0Y2hpbmdTdHJpbmc6IHN0cmluZ1xuICByZXBsYWNlYWJsZVN0cmluZzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIE1lbnVSZXNvbHV0aW9uID0ge1xuICBnZXRSZWN0OiAoKSA9PiBET01SZWN0XG4gIG1hdGNoPzogTWVudVRleHRNYXRjaFxufVxuXG5leHBvcnQgY29uc3QgUFVOQ1RVQVRJT04gPSAnXFxcXC4sXFxcXCtcXFxcKlxcXFw/XFxcXCRcXFxcQFxcXFx8I3t9XFxcXChcXFxcKVxcXFxeXFxcXC1cXFxcW1xcXFxdXFxcXFxcXFwvISVcXCdcIn49PD5fOjsnXG5cbmV4cG9ydCBjbGFzcyBTbGFzaE1lbnVHcm91cCB7XG4gIG9wdGlvbnM6IEFycmF5PFNsYXNoTWVudU9wdGlvbj5cbiAgdGl0bGU6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgU2xhc2hNZW51T3B0aW9uIHtcbiAgSWNvbjogUmVhY3QuRkNcblxuICBkaXNwbGF5TmFtZT86ICh7IGkxOG4gfTogeyBpMThuOiBpMThuIH0pID0+IHN0cmluZ1xuICAvLyBJY29uIGZvciBkaXNwbGF5XG4gIGtleTogc3RyaW5nXG4gIC8vIFRCRFxuICBrZXlib2FyZFNob3J0Y3V0Pzogc3RyaW5nXG4gIC8vIEZvciBleHRyYSBzZWFyY2hpbmcuXG4gIGtleXdvcmRzOiBBcnJheTxzdHJpbmc+XG4gIC8vIFdoYXQgaGFwcGVucyB3aGVuIHlvdSBzZWxlY3QgdGhpcyBvcHRpb24/XG4gIG9uU2VsZWN0OiAoeyBlZGl0b3IsIHF1ZXJ5U3RyaW5nIH06IHsgZWRpdG9yOiBMZXhpY2FsRWRpdG9yOyBxdWVyeVN0cmluZzogc3RyaW5nIH0pID0+IHZvaWRcblxuICByZWY/OiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD5cblxuICAvLyBXaGF0IHNob3dzIHVwIGluIHRoZSBlZGl0b3JcbiAgdGl0bGU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgSWNvbjogUmVhY3QuRkNcbiAgICAgIGRpc3BsYXlOYW1lPzogKHsgaTE4biB9OiB7IGkxOG46IGkxOG4gfSkgPT4gc3RyaW5nXG4gICAgICBrZXlib2FyZFNob3J0Y3V0Pzogc3RyaW5nXG4gICAgICBrZXl3b3Jkcz86IEFycmF5PHN0cmluZz5cbiAgICAgIG9uU2VsZWN0OiAoeyBlZGl0b3IsIHF1ZXJ5U3RyaW5nIH06IHsgZWRpdG9yOiBMZXhpY2FsRWRpdG9yOyBxdWVyeVN0cmluZzogc3RyaW5nIH0pID0+IHZvaWRcbiAgICB9LFxuICApIHtcbiAgICB0aGlzLmtleSA9IHRpdGxlXG4gICAgdGhpcy5yZWYgPSB7IGN1cnJlbnQ6IG51bGwgfVxuICAgIHRoaXMuc2V0UmVmRWxlbWVudCA9IHRoaXMuc2V0UmVmRWxlbWVudC5iaW5kKHRoaXMpXG5cbiAgICB0aGlzLnRpdGxlID0gdGl0bGVcbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gb3B0aW9ucy5kaXNwbGF5TmFtZVxuICAgIHRoaXMua2V5d29yZHMgPSBvcHRpb25zLmtleXdvcmRzIHx8IFtdXG4gICAgdGhpcy5JY29uID0gb3B0aW9ucy5JY29uXG4gICAgdGhpcy5rZXlib2FyZFNob3J0Y3V0ID0gb3B0aW9ucy5rZXlib2FyZFNob3J0Y3V0XG4gICAgdGhpcy5vblNlbGVjdCA9IG9wdGlvbnMub25TZWxlY3QuYmluZCh0aGlzKVxuICB9XG5cbiAgc2V0UmVmRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgICB0aGlzLnJlZiA9IHsgY3VycmVudDogZWxlbWVudCB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTWVudVJlbmRlckZuID0gKFxuICBhbmNob3JFbGVtZW50UmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD4sXG4gIGl0ZW1Qcm9wczoge1xuICAgIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwOiAoc2VsZWN0ZWRPcHRpb246IFNsYXNoTWVudU9wdGlvbikgPT4gdm9pZFxuICAgIHNlbGVjdGVkT3B0aW9uS2V5OiBudWxsIHwgc3RyaW5nXG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXk6IChvcHRpb25LZXk6IHN0cmluZykgPT4gdm9pZFxuICB9LFxuICBtYXRjaGluZ1N0cmluZzogbnVsbCB8IHN0cmluZyxcbikgPT4gSlNYLkVsZW1lbnQgfCBSZWFjdFBvcnRhbCB8IG51bGxcblxuY29uc3Qgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHR5cGVhaGVhZENvbnRhaW5lck5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHlwZWFoZWFkLW1lbnUnKVxuICBpZiAoIXR5cGVhaGVhZENvbnRhaW5lck5vZGUpIHJldHVyblxuXG4gIGNvbnN0IHR5cGVhaGVhZFJlY3QgPSB0eXBlYWhlYWRDb250YWluZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wICsgdHlwZWFoZWFkUmVjdC5oZWlnaHQgPiB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICB0eXBlYWhlYWRDb250YWluZXJOb2RlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICB9KVxuICB9XG5cbiAgaWYgKHR5cGVhaGVhZFJlY3QudG9wIDwgMCkge1xuICAgIHR5cGVhaGVhZENvbnRhaW5lck5vZGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmxvY2s6ICdjZW50ZXInLFxuICAgIH0pXG4gIH1cblxuICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pXG59XG5cbi8qKlxuICogV2FsayBiYWNrd2FyZHMgYWxvbmcgdXNlciBpbnB1dCBhbmQgZm9yd2FyZCB0aHJvdWdoIGVudGl0eSB0aXRsZSB0byB0cnlcbiAqIGFuZCByZXBsYWNlIG1vcmUgb2YgdGhlIHVzZXIncyB0ZXh0IHdpdGggZW50aXR5LlxuICovXG5mdW5jdGlvbiBnZXRGdWxsTWF0Y2hPZmZzZXQoZG9jdW1lbnRUZXh0OiBzdHJpbmcsIGVudHJ5VGV4dDogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIGxldCB0cmlnZ2VyT2Zmc2V0ID0gb2Zmc2V0XG4gIGZvciAobGV0IGkgPSB0cmlnZ2VyT2Zmc2V0OyBpIDw9IGVudHJ5VGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2N1bWVudFRleHQuc3Vic3RyKC1pKSA9PT0gZW50cnlUZXh0LnN1YnN0cigwLCBpKSkge1xuICAgICAgdHJpZ2dlck9mZnNldCA9IGlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRyaWdnZXJPZmZzZXRcbn1cblxuLyoqXG4gKiBTcGxpdCBMZXhpY2FsIFRleHROb2RlIGFuZCByZXR1cm4gYSBuZXcgVGV4dE5vZGUgb25seSBjb250YWluaW5nIG1hdGNoZWQgdGV4dC5cbiAqIENvbW1vbiB1c2UgY2FzZXMgaW5jbHVkZTogcmVtb3ZpbmcgdGhlIG5vZGUsIHJlcGxhY2luZyB3aXRoIGEgbmV3IG5vZGUuXG4gKi9cbmZ1bmN0aW9uICRzcGxpdE5vZGVDb250YWluaW5nUXVlcnkobWF0Y2g6IE1lbnVUZXh0TWF0Y2gpOiBUZXh0Tm9kZSB8IG51bGwge1xuICBjb25zdCBzZWxlY3Rpb24gPSAkZ2V0U2VsZWN0aW9uKClcbiAgaWYgKCEkaXNSYW5nZVNlbGVjdGlvbihzZWxlY3Rpb24pIHx8ICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQoKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvclxuICBpZiAoYW5jaG9yLnR5cGUgIT09ICd0ZXh0Jykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgYW5jaG9yTm9kZSA9IGFuY2hvci5nZXROb2RlKClcbiAgaWYgKCFhbmNob3JOb2RlLmlzU2ltcGxlVGV4dCgpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBzZWxlY3Rpb25PZmZzZXQgPSBhbmNob3Iub2Zmc2V0XG4gIGNvbnN0IHRleHRDb250ZW50ID0gYW5jaG9yTm9kZS5nZXRUZXh0Q29udGVudCgpLnNsaWNlKDAsIHNlbGVjdGlvbk9mZnNldClcbiAgY29uc3QgY2hhcmFjdGVyT2Zmc2V0ID0gbWF0Y2gucmVwbGFjZWFibGVTdHJpbmcubGVuZ3RoXG4gIGNvbnN0IHF1ZXJ5T2Zmc2V0ID0gZ2V0RnVsbE1hdGNoT2Zmc2V0KHRleHRDb250ZW50LCBtYXRjaC5tYXRjaGluZ1N0cmluZywgY2hhcmFjdGVyT2Zmc2V0KVxuICBjb25zdCBzdGFydE9mZnNldCA9IHNlbGVjdGlvbk9mZnNldCAtIHF1ZXJ5T2Zmc2V0XG4gIGlmIChzdGFydE9mZnNldCA8IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGxldCBuZXdOb2RlXG4gIGlmIChzdGFydE9mZnNldCA9PT0gMCkge1xuICAgIDtbbmV3Tm9kZV0gPSBhbmNob3JOb2RlLnNwbGl0VGV4dChzZWxlY3Rpb25PZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgO1ssIG5ld05vZGVdID0gYW5jaG9yTm9kZS5zcGxpdFRleHQoc3RhcnRPZmZzZXQsIHNlbGVjdGlvbk9mZnNldClcbiAgfVxuXG4gIHJldHVybiBuZXdOb2RlXG59XG5cbi8vIEdvdCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MjU0MzkwOC8yMDEzNTgwXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgaW5jbHVkZUhpZGRlbjogYm9vbGVhbixcbik6IEhUTUxCb2R5RWxlbWVudCB8IEhUTUxFbGVtZW50IHtcbiAgbGV0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxuICBjb25zdCBleGNsdWRlU3RhdGljUGFyZW50ID0gc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZSdcbiAgY29uc3Qgb3ZlcmZsb3dSZWdleCA9IGluY2x1ZGVIaWRkZW4gPyAvKGF1dG98c2Nyb2xsfGhpZGRlbikvIDogLyhhdXRvfHNjcm9sbCkvXG4gIGlmIChzdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5XG4gIH1cbiAgZm9yIChsZXQgcGFyZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50OyAocGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQpOyApIHtcbiAgICBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocGFyZW50KVxuICAgIGlmIChleGNsdWRlU3RhdGljUGFyZW50ICYmIHN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG92ZXJmbG93UmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSArIHN0eWxlLm92ZXJmbG93WCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50LmJvZHlcbn1cblxuZnVuY3Rpb24gaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lcihcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRSZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBjUmVjdCA9IGNvbnRhaW5lckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgcmV0dXJuIHRSZWN0LnRvcCA+IGNSZWN0LnRvcCAmJiB0UmVjdC50b3AgPCBjUmVjdC5ib3R0b21cbn1cblxuLy8gUmVwb3NpdGlvbiB0aGUgbWVudSBvbiBzY3JvbGwsIHdpbmRvdyByZXNpemUsIGFuZCBlbGVtZW50IHJlc2l6ZS5cbmV4cG9ydCBmdW5jdGlvbiB1c2VEeW5hbWljUG9zaXRpb25pbmcoXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLFxuICBvblJlcG9zaXRpb246ICgpID0+IHZvaWQsXG4gIG9uVmlzaWJpbGl0eUNoYW5nZT86IChpc0luVmlldzogYm9vbGVhbikgPT4gdm9pZCxcbikge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0YXJnZXRFbGVtZW50ICE9IG51bGwgJiYgcmVzb2x1dGlvbiAhPSBudWxsKSB7XG4gICAgICBjb25zdCByb290RWxlbWVudCA9IGVkaXRvci5nZXRSb290RWxlbWVudCgpXG4gICAgICBjb25zdCByb290U2Nyb2xsUGFyZW50ID1cbiAgICAgICAgcm9vdEVsZW1lbnQgIT0gbnVsbCA/IGdldFNjcm9sbFBhcmVudChyb290RWxlbWVudCwgZmFsc2UpIDogZG9jdW1lbnQuYm9keVxuICAgICAgbGV0IHRpY2tpbmcgPSBmYWxzZVxuICAgICAgbGV0IHByZXZpb3VzSXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKFxuICAgICAgICB0YXJnZXRFbGVtZW50LFxuICAgICAgICByb290U2Nyb2xsUGFyZW50LFxuICAgICAgKVxuICAgICAgY29uc3QgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRpY2tpbmcpIHtcbiAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG9uUmVwb3NpdGlvbigpXG4gICAgICAgICAgICB0aWNraW5nID0gZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICAgIHRpY2tpbmcgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNJblZpZXcgPSBpc1RyaWdnZXJWaXNpYmxlSW5OZWFyZXN0U2Nyb2xsQ29udGFpbmVyKHRhcmdldEVsZW1lbnQsIHJvb3RTY3JvbGxQYXJlbnQpXG4gICAgICAgIGlmIChpc0luVmlldyAhPT0gcHJldmlvdXNJc0luVmlldykge1xuICAgICAgICAgIHByZXZpb3VzSXNJblZpZXcgPSBpc0luVmlld1xuICAgICAgICAgIGlmIChvblZpc2liaWxpdHlDaGFuZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgb25WaXNpYmlsaXR5Q2hhbmdlKGlzSW5WaWV3KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXBvc2l0aW9uKVxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVwb3NpdGlvbilcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGFyZ2V0RWxlbWVudClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZSh0YXJnZXRFbGVtZW50KVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXBvc2l0aW9uKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHRydWUpXG4gICAgICB9XG4gICAgfVxuICB9LCBbdGFyZ2V0RWxlbWVudCwgZWRpdG9yLCBvblZpc2liaWxpdHlDaGFuZ2UsIG9uUmVwb3NpdGlvbiwgcmVzb2x1dGlvbl0pXG59XG5cbmV4cG9ydCBjb25zdCBTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORDogTGV4aWNhbENvbW1hbmQ8e1xuICBpbmRleDogbnVtYmVyXG4gIG9wdGlvbjogU2xhc2hNZW51T3B0aW9uXG59PiA9IGNyZWF0ZUNvbW1hbmQoJ1NDUk9MTF9UWVBFQUhFQURfT1BUSU9OX0lOVE9fVklFV19DT01NQU5EJylcblxuZXhwb3J0IGZ1bmN0aW9uIExleGljYWxNZW51KHtcbiAgYW5jaG9yRWxlbWVudFJlZixcbiAgY2xvc2UsXG4gIGVkaXRvcixcbiAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gIGdyb3Vwc1dpdGhPcHRpb25zLFxuICBtZW51UmVuZGVyRm4sXG4gIG9uU2VsZWN0T3B0aW9uLFxuICByZXNvbHV0aW9uLFxuICBzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkgPSBmYWxzZSxcbn06IHtcbiAgYW5jaG9yRWxlbWVudFJlZjogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD5cbiAgY2xvc2U6ICgpID0+IHZvaWRcbiAgZWRpdG9yOiBMZXhpY2FsRWRpdG9yXG4gIGdyb3Vwc1dpdGhPcHRpb25zOiBBcnJheTxTbGFzaE1lbnVHcm91cD5cbiAgbWVudVJlbmRlckZuOiBNZW51UmVuZGVyRm5cbiAgb25TZWxlY3RPcHRpb246IChcbiAgICBvcHRpb246IFNsYXNoTWVudU9wdGlvbixcbiAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeTogVGV4dE5vZGUgfCBudWxsLFxuICAgIGNsb3NlTWVudTogKCkgPT4gdm9pZCxcbiAgICBtYXRjaGluZ1N0cmluZzogc3RyaW5nLFxuICApID0+IHZvaWRcbiAgcmVzb2x1dGlvbjogTWVudVJlc29sdXRpb25cbiAgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5PzogYm9vbGVhblxufSk6IEpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbktleSwgc2V0U2VsZWN0ZWRPcHRpb25LZXldID0gdXNlU3RhdGU8bnVsbCB8IHN0cmluZz4obnVsbClcblxuICBjb25zdCBtYXRjaGluZ1N0cmluZyA9IChyZXNvbHV0aW9uLm1hdGNoICYmIHJlc29sdXRpb24ubWF0Y2gubWF0Y2hpbmdTdHJpbmcpIHx8ICcnXG5cbiAgY29uc3QgdXBkYXRlU2VsZWN0ZWRPcHRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IHJvb3RFbGVtID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICAgIGlmIChyb290RWxlbSAhPT0gbnVsbCkge1xuICAgICAgICByb290RWxlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsICd0eXBlYWhlYWQtaXRlbS0nICsgb3B0aW9uLmtleSlcbiAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25LZXkob3B0aW9uLmtleSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtlZGl0b3JdLFxuICApXG5cbiAgY29uc3Qgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gc2V0IHNlbGVjdGVkIG9wdGlvbiB0byB0aGUgZmlyc3Qgb2YgdGhlIG1hdGNoaW5nIG9uZXNcbiAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiYgbWF0Y2hpbmdTdHJpbmcgIT0gbnVsbCkge1xuICAgICAgLy8gZ3JvdXBzV2l0aE9wdGlvbnMgZmlsdGVyaW5nIGlzIGFscmVhZHkgaGFuZGxlZCBpbiBTbGFzaE1lbnUvaW5kZXgudHN4LiBUaHVzLCBncm91cHNXaXRoT3B0aW9ucyBhbHdheXMgY29udGFpbnMgdGhlIG1hdGNoaW5nIG9wdGlvbnMuXG4gICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG5cbiAgICAgIGlmIChhbGxPcHRpb25zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaXJzdE1hdGNoaW5nT3B0aW9uID0gYWxsT3B0aW9uc1swXVxuICAgICAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbihmaXJzdE1hdGNoaW5nT3B0aW9uKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2dyb3Vwc1dpdGhPcHRpb25zLCB1cGRhdGVTZWxlY3RlZE9wdGlvbiwgbWF0Y2hpbmdTdHJpbmddKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWRPcHRpb25LZXlUb0ZpcnN0TWF0Y2hpbmdPcHRpb24oKVxuICB9LCBbbWF0Y2hpbmdTdHJpbmcsIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uXSlcblxuICBjb25zdCBzZWxlY3RPcHRpb25BbmRDbGVhblVwID0gdXNlQ2FsbGJhY2soXG4gICAgKHNlbGVjdGVkT3B0aW9uOiBTbGFzaE1lbnVPcHRpb24pID0+IHtcbiAgICAgIGVkaXRvci51cGRhdGUoKCkgPT4ge1xuICAgICAgICBjb25zdCB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSA9XG4gICAgICAgICAgcmVzb2x1dGlvbi5tYXRjaCAhPSBudWxsICYmIHNob3VsZFNwbGl0Tm9kZVdpdGhRdWVyeVxuICAgICAgICAgICAgPyAkc3BsaXROb2RlQ29udGFpbmluZ1F1ZXJ5KHJlc29sdXRpb24ubWF0Y2gpXG4gICAgICAgICAgICA6IG51bGxcblxuICAgICAgICBvblNlbGVjdE9wdGlvbihcbiAgICAgICAgICBzZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICB0ZXh0Tm9kZUNvbnRhaW5pbmdRdWVyeSxcbiAgICAgICAgICBjbG9zZSxcbiAgICAgICAgICByZXNvbHV0aW9uLm1hdGNoID8gcmVzb2x1dGlvbi5tYXRjaC5tYXRjaGluZ1N0cmluZyA6ICcnLFxuICAgICAgICApXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2VkaXRvciwgc2hvdWxkU3BsaXROb2RlV2l0aFF1ZXJ5LCByZXNvbHV0aW9uLm1hdGNoLCBvblNlbGVjdE9wdGlvbiwgY2xvc2VdLFxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdEVsZW0gPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgICAgaWYgKHJvb3RFbGVtICE9PSBudWxsKSB7XG4gICAgICAgIHJvb3RFbGVtLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1hY3RpdmVkZXNjZW5kYW50JylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtlZGl0b3JdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsKSB7XG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleShudWxsKVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkT3B0aW9uS2V5VG9GaXJzdE1hdGNoaW5nT3B0aW9uKClcbiAgICB9XG4gIH0sIFtcbiAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbixcbiAgICBzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbixcbiAgXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZVJlZ2lzdGVyKFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQsXG4gICAgICAgICh7IG9wdGlvbiB9KSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbi5yZWYgJiYgb3B0aW9uLnJlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNjcm9sbEludG9WaWV3SWZOZWVkZWQob3B0aW9uLnJlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgIClcbiAgfSwgW2VkaXRvciwgdXBkYXRlU2VsZWN0ZWRPcHRpb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlUmVnaXN0ZXIoXG4gICAgICBlZGl0b3IucmVnaXN0ZXJDb21tYW5kPEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICBLRVlfQVJST1dfRE9XTl9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zICE9PSBudWxsICYmXG4gICAgICAgICAgICBncm91cHNXaXRoT3B0aW9ucy5sZW5ndGggJiZcbiAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uS2V5ICE9PSBudWxsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gYWxsT3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4ICE9PSBhbGxPcHRpb25zLmxlbmd0aCAtIDEgPyBzZWxlY3RlZEluZGV4ICsgMSA6IDBcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zW25ld1NlbGVjdGVkSW5kZXhdXG5cbiAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKG5ld1NlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGVkT3B0aW9uLnJlZiAhPSBudWxsICYmIG5ld1NlbGVjdGVkT3B0aW9uLnJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgIGVkaXRvci5kaXNwYXRjaENvbW1hbmQoU0NST0xMX1RZUEVBSEVBRF9PUFRJT05fSU5UT19WSUVXX0NPTU1BTkQsIHtcbiAgICAgICAgICAgICAgICBpbmRleDogbmV3U2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICBvcHRpb246IG5ld1NlbGVjdGVkT3B0aW9uLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX0FSUk9XX1VQX0NPTU1BTkQsXG4gICAgICAgIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgY29uc3QgZXZlbnQgPSBwYXlsb2FkXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGdyb3Vwc1dpdGhPcHRpb25zLmxlbmd0aCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25LZXkgIT09IG51bGxcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGFsbE9wdGlvbnMgPSBncm91cHNXaXRoT3B0aW9ucy5mbGF0TWFwKChncm91cCkgPT4gZ3JvdXAub3B0aW9ucylcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSBhbGxPcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24ua2V5ID09PSBzZWxlY3RlZE9wdGlvbktleSlcblxuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXggIT09IDAgPyBzZWxlY3RlZEluZGV4IC0gMSA6IGFsbE9wdGlvbnMubGVuZ3RoIC0gMVxuXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbiA9IGFsbE9wdGlvbnNbbmV3U2VsZWN0ZWRJbmRleF1cblxuICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRPcHRpb24obmV3U2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRPcHRpb24ucmVmICE9IG51bGwgJiYgbmV3U2VsZWN0ZWRPcHRpb24ucmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChuZXdTZWxlY3RlZE9wdGlvbi5yZWYuY3VycmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICAgIGVkaXRvci5yZWdpc3RlckNvbW1hbmQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIEtFWV9FU0NBUEVfQ09NTUFORCxcbiAgICAgICAgKHBheWxvYWQpID0+IHtcbiAgICAgICAgICBjb25zdCBldmVudCA9IHBheWxvYWRcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcbiAgICAgICAgICBjbG9zZSgpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZDxLZXlib2FyZEV2ZW50PihcbiAgICAgICAgS0VZX1RBQl9DT01NQU5ELFxuICAgICAgICAocGF5bG9hZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0gcGF5bG9hZFxuXG4gICAgICAgICAgaWYgKGdyb3Vwc1dpdGhPcHRpb25zID09PSBudWxsIHx8IHNlbGVjdGVkT3B0aW9uS2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYWxsT3B0aW9ucyA9IGdyb3Vwc1dpdGhPcHRpb25zLmZsYXRNYXAoKGdyb3VwKSA9PiBncm91cC5vcHRpb25zKVxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi5rZXkgPT09IHNlbGVjdGVkT3B0aW9uS2V5KVxuICAgICAgICAgIGlmICghc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIHNlbGVjdE9wdGlvbkFuZENsZWFuVXAoc2VsZWN0ZWRPcHRpb24pXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQ09NTUFORF9QUklPUklUWV9MT1csXG4gICAgICApLFxuICAgICAgZWRpdG9yLnJlZ2lzdGVyQ29tbWFuZChcbiAgICAgICAgS0VZX0VOVEVSX0NPTU1BTkQsXG4gICAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZ3JvdXBzV2l0aE9wdGlvbnMgPT09IG51bGwgfHwgc2VsZWN0ZWRPcHRpb25LZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbGxPcHRpb25zID0gZ3JvdXBzV2l0aE9wdGlvbnMuZmxhdE1hcCgoZ3JvdXApID0+IGdyb3VwLm9wdGlvbnMpXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSBhbGxPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmtleSA9PT0gc2VsZWN0ZWRPcHRpb25LZXkpXG4gICAgICAgICAgaWYgKCFzZWxlY3RlZE9wdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwKHNlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENPTU1BTkRfUFJJT1JJVFlfTE9XLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtcbiAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwLFxuICAgIGNsb3NlLFxuICAgIGVkaXRvcixcbiAgICBncm91cHNXaXRoT3B0aW9ucyxcbiAgICBzZWxlY3RlZE9wdGlvbktleSxcbiAgICB1cGRhdGVTZWxlY3RlZE9wdGlvbixcbiAgXSlcblxuICBjb25zdCBsaXN0SXRlbVByb3BzID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZ3JvdXBzV2l0aE9wdGlvbnMsXG4gICAgICBzZWxlY3RPcHRpb25BbmRDbGVhblVwLFxuICAgICAgc2VsZWN0ZWRPcHRpb25LZXksXG4gICAgICBzZXRTZWxlY3RlZE9wdGlvbktleSxcbiAgICB9KSxcbiAgICBbc2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCwgc2VsZWN0ZWRPcHRpb25LZXksIGdyb3Vwc1dpdGhPcHRpb25zXSxcbiAgKVxuXG4gIHJldHVybiBtZW51UmVuZGVyRm4oXG4gICAgYW5jaG9yRWxlbWVudFJlZixcbiAgICBsaXN0SXRlbVByb3BzLFxuICAgIHJlc29sdXRpb24ubWF0Y2ggPyByZXNvbHV0aW9uLm1hdGNoLm1hdGNoaW5nU3RyaW5nIDogJycsXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lbnVBbmNob3JSZWYoXG4gIHJlc29sdXRpb246IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCxcbiAgc2V0UmVzb2x1dGlvbjogKHI6IE1lbnVSZXNvbHV0aW9uIHwgbnVsbCkgPT4gdm9pZCxcbiAgY2xhc3NOYW1lPzogc3RyaW5nLFxuKTogTXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudD4ge1xuICBjb25zdCBbZWRpdG9yXSA9IHVzZUxleGljYWxDb21wb3NlckNvbnRleHQoKVxuICBjb25zdCBhbmNob3JFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50Pihkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSlcbiAgY29uc3QgcG9zaXRpb25NZW51ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gZWRpdG9yLmdldFJvb3RFbGVtZW50KClcbiAgICBjb25zdCBjb250YWluZXJEaXYgPSBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnRcblxuICAgIGNvbnN0IFZFUlRJQ0FMX09GRlNFVCA9IDMyIGFzIGNvbnN0XG5cbiAgICBjb25zdCBtZW51RWxlID0gY29udGFpbmVyRGl2LmZpcnN0Q2hpbGQgYXMgRWxlbWVudFxuICAgIGlmIChyb290RWxlbWVudCAhPT0gbnVsbCAmJiByZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB7IGhlaWdodCwgbGVmdCwgdG9wLCB3aWR0aCB9ID0gcmVzb2x1dGlvbi5nZXRSZWN0KClcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHt0b3AgKyB3aW5kb3cuc2Nyb2xsWSArIFZFUlRJQ0FMX09GRlNFVH1weGBcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS5sZWZ0ID0gYCR7bGVmdCArIHdpbmRvdy5zY3JvbGxYfXB4YFxuICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGBcbiAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YFxuICAgICAgaWYgKG1lbnVFbGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWVudVJlY3QgPSBtZW51RWxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51UmVjdC5oZWlnaHRcbiAgICAgICAgY29uc3QgbWVudVdpZHRoID0gbWVudVJlY3Qud2lkdGhcblxuICAgICAgICBjb25zdCByb290RWxlbWVudFJlY3QgPSByb290RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgICAgIGlmIChsZWZ0ICsgbWVudVdpZHRoID4gcm9vdEVsZW1lbnRSZWN0LnJpZ2h0KSB7XG4gICAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLmxlZnQgPSBgJHtyb290RWxlbWVudFJlY3QucmlnaHQgLSBtZW51V2lkdGggKyB3aW5kb3cuc2Nyb2xsWH1weGBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdvdWxkR29PZmZUb3BPZlNjcmVlbiA9IHRvcCA8IG1lbnVIZWlnaHRcbiAgICAgICAgY29uc3Qgd291bGRHb09mZkJvdHRvbU9mQ29udGFpbmVyID0gdG9wICsgbWVudUhlaWdodCA+IHJvb3RFbGVtZW50UmVjdC5ib3R0b21cblxuICAgICAgICAvLyBQb3NpdGlvbiBzbGFzaCBtZW51IGFib3ZlIHRoZSBjdXJzb3IgaW5zdGVhZCBvZiBiZWxvdyAoZGVmYXVsdCkgaWYgaXQgd291bGQgb3RoZXJ3aXNlIGdvIG9mZiB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uXG4gICAgICAgIGlmIChcbiAgICAgICAgICAodG9wICsgbWVudUhlaWdodCA+IHdpbmRvdy5pbm5lckhlaWdodCB8fFxuICAgICAgICAgICAgKHdvdWxkR29PZmZCb3R0b21PZkNvbnRhaW5lciAmJiAhd291bGRHb09mZlRvcE9mU2NyZWVuKSkgJiZcbiAgICAgICAgICB0b3AgLSByb290RWxlbWVudFJlY3QudG9wID4gbWVudUhlaWdodFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBtYXJnaW4gPSAyNFxuICAgICAgICAgIGNvbnRhaW5lckRpdi5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgICAgIHRvcCArIFZFUlRJQ0FMX09GRlNFVCAtIG1lbnVIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSAtIChoZWlnaHQgKyBtYXJnaW4pXG4gICAgICAgICAgfXB4YFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghY29udGFpbmVyRGl2LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGlmIChjbGFzc05hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRhaW5lckRpdi5jbGFzc05hbWUgPSBjbGFzc05hbWVcbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXJEaXYuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ1R5cGVhaGVhZCBtZW51JylcbiAgICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgnaWQnLCAndHlwZWFoZWFkLW1lbnUnKVxuICAgICAgICBjb250YWluZXJEaXYuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2xpc3Rib3gnKVxuICAgICAgICBjb250YWluZXJEaXYuc3R5bGUuZGlzcGxheSA9ICdibG9jaydcbiAgICAgICAgY29udGFpbmVyRGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJ1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZChjb250YWluZXJEaXYpXG4gICAgICB9XG4gICAgICBhbmNob3JFbGVtZW50UmVmLmN1cnJlbnQgPSBjb250YWluZXJEaXZcbiAgICAgIHJvb3RFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1jb250cm9scycsICd0eXBlYWhlYWQtbWVudScpXG4gICAgfVxuICB9LCBbZWRpdG9yLCByZXNvbHV0aW9uLCBjbGFzc05hbWVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgcm9vdEVsZW1lbnQgPSBlZGl0b3IuZ2V0Um9vdEVsZW1lbnQoKVxuICAgIGlmIChyZXNvbHV0aW9uICE9PSBudWxsKSB7XG4gICAgICBwb3NpdGlvbk1lbnUoKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKHJvb3RFbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgcm9vdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWNvbnRyb2xzJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckRpdiA9IGFuY2hvckVsZW1lbnRSZWYuY3VycmVudFxuICAgICAgICBpZiAoY29udGFpbmVyRGl2ICE9PSBudWxsICYmIGNvbnRhaW5lckRpdi5pc0Nvbm5lY3RlZCkge1xuICAgICAgICAgIGNvbnRhaW5lckRpdi5yZW1vdmUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbZWRpdG9yLCBwb3NpdGlvbk1lbnUsIHJlc29sdXRpb25dKVxuXG4gIGNvbnN0IG9uVmlzaWJpbGl0eUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChpc0luVmlldzogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKHJlc29sdXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgaWYgKCFpc0luVmlldykge1xuICAgICAgICAgIHNldFJlc29sdXRpb24obnVsbClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Jlc29sdXRpb24sIHNldFJlc29sdXRpb25dLFxuICApXG5cbiAgdXNlRHluYW1pY1Bvc2l0aW9uaW5nKHJlc29sdXRpb24sIGFuY2hvckVsZW1lbnRSZWYuY3VycmVudCwgcG9zaXRpb25NZW51LCBvblZpc2liaWxpdHlDaGFuZ2UpXG5cbiAgcmV0dXJuIGFuY2hvckVsZW1lbnRSZWZcbn1cblxuZXhwb3J0IHR5cGUgVHJpZ2dlckZuID0gKHRleHQ6IHN0cmluZywgZWRpdG9yOiBMZXhpY2FsRWRpdG9yKSA9PiBNZW51VGV4dE1hdGNoIHwgbnVsbFxuIl0sIm5hbWVzIjpbIlBVTkNUVUFUSU9OIiwiU2xhc2hNZW51R3JvdXAiLCJTbGFzaE1lbnVPcHRpb24iLCJnZXRTY3JvbGxQYXJlbnQiLCJ1c2VEeW5hbWljUG9zaXRpb25pbmciLCJTQ1JPTExfVFlQRUFIRUFEX09QVElPTl9JTlRPX1ZJRVdfQ09NTUFORCIsIkxleGljYWxNZW51IiwidXNlTWVudUFuY2hvclJlZiIsIm9wdGlvbnMiLCJ0aXRsZSIsIkljb24iLCJkaXNwbGF5TmFtZSIsImtleSIsImtleWJvYXJkU2hvcnRjdXQiLCJrZXl3b3JkcyIsIm9uU2VsZWN0IiwicmVmIiwiY29uc3RydWN0b3IiLCJjdXJyZW50Iiwic2V0UmVmRWxlbWVudCIsImJpbmQiLCJlbGVtZW50Iiwic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCIsInRhcmdldCIsInR5cGVhaGVhZENvbnRhaW5lck5vZGUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidHlwZWFoZWFkUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcCIsImhlaWdodCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwic2Nyb2xsSW50b1ZpZXciLCJibG9jayIsImdldEZ1bGxNYXRjaE9mZnNldCIsImRvY3VtZW50VGV4dCIsImVudHJ5VGV4dCIsIm9mZnNldCIsInRyaWdnZXJPZmZzZXQiLCJpIiwibGVuZ3RoIiwic3Vic3RyIiwiJHNwbGl0Tm9kZUNvbnRhaW5pbmdRdWVyeSIsIm1hdGNoIiwic2VsZWN0aW9uIiwiJGdldFNlbGVjdGlvbiIsIiRpc1JhbmdlU2VsZWN0aW9uIiwiaXNDb2xsYXBzZWQiLCJhbmNob3IiLCJ0eXBlIiwiYW5jaG9yTm9kZSIsImdldE5vZGUiLCJpc1NpbXBsZVRleHQiLCJzZWxlY3Rpb25PZmZzZXQiLCJ0ZXh0Q29udGVudCIsImdldFRleHRDb250ZW50Iiwic2xpY2UiLCJjaGFyYWN0ZXJPZmZzZXQiLCJyZXBsYWNlYWJsZVN0cmluZyIsInF1ZXJ5T2Zmc2V0IiwibWF0Y2hpbmdTdHJpbmciLCJzdGFydE9mZnNldCIsIm5ld05vZGUiLCJzcGxpdFRleHQiLCJpbmNsdWRlSGlkZGVuIiwic3R5bGUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZXhjbHVkZVN0YXRpY1BhcmVudCIsInBvc2l0aW9uIiwib3ZlcmZsb3dSZWdleCIsImJvZHkiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwidGVzdCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwib3ZlcmZsb3dYIiwiaXNUcmlnZ2VyVmlzaWJsZUluTmVhcmVzdFNjcm9sbENvbnRhaW5lciIsInRhcmdldEVsZW1lbnQiLCJjb250YWluZXJFbGVtZW50IiwidFJlY3QiLCJjUmVjdCIsImJvdHRvbSIsInJlc29sdXRpb24iLCJvblJlcG9zaXRpb24iLCJvblZpc2liaWxpdHlDaGFuZ2UiLCJlZGl0b3IiLCJ1c2VMZXhpY2FsQ29tcG9zZXJDb250ZXh0IiwidXNlRWZmZWN0Iiwicm9vdEVsZW1lbnQiLCJnZXRSb290RWxlbWVudCIsInJvb3RTY3JvbGxQYXJlbnQiLCJ0aWNraW5nIiwicHJldmlvdXNJc0luVmlldyIsImhhbmRsZVNjcm9sbCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzSW5WaWV3IiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0dXJlIiwicGFzc2l2ZSIsIm9ic2VydmUiLCJ1bm9ic2VydmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY3JlYXRlQ29tbWFuZCIsImFuY2hvckVsZW1lbnRSZWYiLCJjbG9zZSIsImdyb3Vwc1dpdGhPcHRpb25zIiwibWVudVJlbmRlckZuIiwib25TZWxlY3RPcHRpb24iLCJzaG91bGRTcGxpdE5vZGVXaXRoUXVlcnkiLCJzZWxlY3RlZE9wdGlvbktleSIsInNldFNlbGVjdGVkT3B0aW9uS2V5IiwidXNlU3RhdGUiLCJ1cGRhdGVTZWxlY3RlZE9wdGlvbiIsInVzZUNhbGxiYWNrIiwib3B0aW9uIiwicm9vdEVsZW0iLCJzZXRBdHRyaWJ1dGUiLCJzZXRTZWxlY3RlZE9wdGlvbktleVRvRmlyc3RNYXRjaGluZ09wdGlvbiIsImFsbE9wdGlvbnMiLCJmbGF0TWFwIiwiZ3JvdXAiLCJmaXJzdE1hdGNoaW5nT3B0aW9uIiwic2VsZWN0T3B0aW9uQW5kQ2xlYW5VcCIsInNlbGVjdGVkT3B0aW9uIiwidXBkYXRlIiwidGV4dE5vZGVDb250YWluaW5nUXVlcnkiLCJyZW1vdmVBdHRyaWJ1dGUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJtZXJnZVJlZ2lzdGVyIiwicmVnaXN0ZXJDb21tYW5kIiwiQ09NTUFORF9QUklPUklUWV9MT1ciLCJLRVlfQVJST1dfRE9XTl9DT01NQU5EIiwicGF5bG9hZCIsImV2ZW50Iiwic2VsZWN0ZWRJbmRleCIsImZpbmRJbmRleCIsIm5ld1NlbGVjdGVkSW5kZXgiLCJuZXdTZWxlY3RlZE9wdGlvbiIsImRpc3BhdGNoQ29tbWFuZCIsImluZGV4IiwicHJldmVudERlZmF1bHQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJLRVlfQVJST1dfVVBfQ09NTUFORCIsIktFWV9FU0NBUEVfQ09NTUFORCIsIktFWV9UQUJfQ09NTUFORCIsImZpbmQiLCJLRVlfRU5URVJfQ09NTUFORCIsImxpc3RJdGVtUHJvcHMiLCJ1c2VNZW1vIiwic2V0UmVzb2x1dGlvbiIsImNsYXNzTmFtZSIsInVzZVJlZiIsImNyZWF0ZUVsZW1lbnQiLCJwb3NpdGlvbk1lbnUiLCJjb250YWluZXJEaXYiLCJWRVJUSUNBTF9PRkZTRVQiLCJtZW51RWxlIiwiZmlyc3RDaGlsZCIsImxlZnQiLCJ3aWR0aCIsImdldFJlY3QiLCJzY3JvbGxZIiwic2Nyb2xsWCIsIm1lbnVSZWN0IiwibWVudUhlaWdodCIsIm1lbnVXaWR0aCIsInJvb3RFbGVtZW50UmVjdCIsInJpZ2h0Iiwid291bGRHb09mZlRvcE9mU2NyZWVuIiwid291bGRHb09mZkJvdHRvbU9mQ29udGFpbmVyIiwibWFyZ2luIiwiaXNDb25uZWN0ZWQiLCJkaXNwbGF5IiwiYXBwZW5k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
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import type { LexicalCommand, TextNode } from 'lexical';
2
+ import type { LexicalCommand, ParagraphNode, TextNode } from 'lexical';
3
3
  import type { MenuRenderFn, MenuResolution, MenuTextMatch, SlashMenuGroup, SlashMenuOption, TriggerFn } from './LexicalMenu';
4
4
  export declare const PUNCTUATION = "\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\/!%'\"~=<>_:;";
5
5
  export declare function getScrollParent(element: HTMLElement, includeHidden: boolean): HTMLBodyElement | HTMLElement;
@@ -19,7 +19,7 @@ export type TypeaheadMenuPluginProps = {
19
19
  triggerFn: TriggerFn;
20
20
  };
21
21
  export declare const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{
22
- rect: DOMRect;
22
+ node: ParagraphNode;
23
23
  }>;
24
24
  export declare function LexicalTypeaheadMenuPlugin({ anchorClassName, groupsWithOptions, menuRenderFn, onClose, onOpen, onQueryChange, onSelectOption, triggerFn, }: TypeaheadMenuPluginProps): JSX.Element | null;
25
25
  export { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,cAAc,EAAiC,QAAQ,EAAE,MAAM,SAAS,CAAA;AActF,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,SAAS,EACV,MAAM,eAAe,CAAA;AAItB,eAAO,MAAM,WAAW,iEAAiE,CAAA;AA2EzF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAErD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,EAAE,SAAc,EAAE,SAAa,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,SAAS,CAgCX;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACtD,cAAc,EAAE,CACd,MAAM,EAAE,eAAe,EACvB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC;IACrD,IAAI,EAAE,OAAO,CAAA;CACd,CAA8C,CAAA;AAE/C,wBAAgB,0BAA0B,CAAC,EACzC,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,cAAc,EACd,SAAS,GACV,EAAE,wBAAwB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAgH/C;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEb,QAAQ,EACT,MAAM,SAAS,CAAA;AAchB,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,SAAS,EACV,MAAM,eAAe,CAAA;AAItB,eAAO,MAAM,WAAW,iEAAiE,CAAA;AA4EzF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAErD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,EAAE,SAAc,EAAE,SAAa,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,SAAS,CAgCX;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IACxC,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACtD,cAAc,EAAE,CACd,MAAM,EAAE,eAAe,EACvB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC;IACrD,IAAI,EAAE,aAAa,CAAA;CACpB,CAA8C,CAAA;AAE/C,wBAAgB,0BAA0B,CAAC,EACzC,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,cAAc,EACd,SAAS,GACV,EAAE,wBAAwB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyH/C;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}