@ecodev/natural-editor 42.3.2 → 42.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,86 @@
1
+ import { AllSelection, TextSelection } from 'prosemirror-state';
2
+ import { Item } from './item';
3
+ import { IdDialogComponent } from '../../id-dialog/id-dialog.component';
4
+ function setId(tr, idValue, allowedNodeType) {
5
+ const { selection, doc } = tr;
6
+ if (!selection || !doc) {
7
+ return tr;
8
+ }
9
+ const { from, to } = selection;
10
+ const tasks = [];
11
+ doc.nodesBetween(from, to, (node, pos) => {
12
+ const nodeType = node.type;
13
+ const currentId = node.attrs.id || null;
14
+ if (currentId !== idValue && allowedNodeType === nodeType) {
15
+ tasks.push({
16
+ node,
17
+ pos,
18
+ nodeType,
19
+ });
20
+ }
21
+ return true;
22
+ });
23
+ if (!tasks.length) {
24
+ return tr;
25
+ }
26
+ tasks.forEach(job => {
27
+ const { node, pos, nodeType } = job;
28
+ const newAttrs = {
29
+ ...node.attrs,
30
+ id: idValue ? idValue : null,
31
+ };
32
+ tr = tr.setNodeMarkup(pos, nodeType, newAttrs, node.marks);
33
+ });
34
+ return tr;
35
+ }
36
+ /**
37
+ * Returns the first `id` attribute that is non-empty in the selection.
38
+ * If not found, return empty string.
39
+ */
40
+ function findFirstIdInSelection(state, allowedNodeType) {
41
+ const { selection, doc } = state;
42
+ const { from, to } = selection;
43
+ let keepLooking = true;
44
+ let foundClass = '';
45
+ doc.nodesBetween(from, to, node => {
46
+ if (keepLooking && node.type === allowedNodeType && node.attrs.id) {
47
+ keepLooking = false;
48
+ foundClass = node.attrs.id;
49
+ }
50
+ return keepLooking;
51
+ });
52
+ return foundClass;
53
+ }
54
+ export class IdItem extends Item {
55
+ constructor(dialog, nodeType) {
56
+ super({
57
+ active: state => {
58
+ return !!findFirstIdInSelection(state, nodeType);
59
+ },
60
+ enable: state => {
61
+ const { selection } = state;
62
+ return selection instanceof TextSelection || selection instanceof AllSelection;
63
+ },
64
+ run: (state, dispatch, view) => {
65
+ dialog
66
+ .open(IdDialogComponent, {
67
+ data: {
68
+ id: findFirstIdInSelection(state, nodeType),
69
+ },
70
+ })
71
+ .afterClosed()
72
+ .subscribe(result => {
73
+ if (dispatch && result) {
74
+ const { selection } = state;
75
+ const tr = setId(state.tr.setSelection(selection), result.id, nodeType);
76
+ if (tr.docChanged) {
77
+ dispatch?.(tr);
78
+ }
79
+ }
80
+ view.focus();
81
+ });
82
+ },
83
+ });
84
+ }
85
+ }
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvaXRlbXMvaWQtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsWUFBWSxFQUFlLGFBQWEsRUFBYyxNQUFNLG1CQUFtQixDQUFDO0FBQ3hGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFDLGlCQUFpQixFQUFlLE1BQU0scUNBQXFDLENBQUM7QUFFcEYsU0FBUyxLQUFLLENBQUMsRUFBZSxFQUFFLE9BQWUsRUFBRSxlQUF5QjtJQUN0RSxNQUFNLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBQyxHQUFHLEVBQUUsQ0FBQztJQUM1QixJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3BCLE9BQU8sRUFBRSxDQUFDO0tBQ2I7SUFDRCxNQUFNLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxHQUFHLFNBQVMsQ0FBQztJQUU3QixNQUFNLEtBQUssR0FJTCxFQUFFLENBQUM7SUFFVCxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDeEMsSUFBSSxTQUFTLEtBQUssT0FBTyxJQUFJLGVBQWUsS0FBSyxRQUFRLEVBQUU7WUFDdkQsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDUCxJQUFJO2dCQUNKLEdBQUc7Z0JBQ0gsUUFBUTthQUNYLENBQUMsQ0FBQztTQUNOO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJ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LENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Tm9kZSwgTm9kZVR5cGV9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7QWxsU2VsZWN0aW9uLCBFZGl0b3JTdGF0ZSwgVGV4dFNlbGVjdGlvbiwgVHJhbnNhY3Rpb259IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7SXRlbX0gZnJvbSAnLi9pdGVtJztcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtJZERpYWxvZ0NvbXBvbmVudCwgSWREaWFsb2dEYXRhfSBmcm9tICcuLi8uLi9pZC1kaWFsb2cvaWQtZGlhbG9nLmNvbXBvbmVudCc7XG5cbmZ1bmN0aW9uIHNldElkKHRyOiBUcmFuc2FjdGlvbiwgaWRWYWx1ZTogc3RyaW5nLCBhbGxvd2VkTm9kZVR5cGU6IE5vZGVUeXBlKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHtzZWxlY3Rpb24sIGRvY30gPSB0cjtcbiAgICBpZiAoIXNlbGVjdGlvbiB8fCAhZG9jKSB7XG4gICAgICAgIHJldHVybiB0cjtcbiAgICB9XG4gICAgY29uc3Qge2Zyb20sIHRvfSA9IHNlbGVjdGlvbjtcblxuICAgIGNvbnN0IHRhc2tzOiB7XG4gICAgICAgIG5vZGU6IE5vZGU7XG4gICAgICAgIHBvczogbnVtYmVyO1xuICAgICAgICBub2RlVHlwZTogTm9kZVR5cGU7XG4gICAgfVtdID0gW107XG5cbiAgICBkb2Mubm9kZXNCZXR3ZWVuKGZyb20sIHRvLCAobm9kZSwgcG9zKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGVUeXBlID0gbm9kZS50eXBlO1xuICAgICAgICBjb25zdCBjdXJyZW50SWQgPSBub2RlLmF0dHJzLmlkIHx8IG51bGw7XG4gICAgICAgIGlmIChjdXJyZW50SWQgIT09IGlkVmFsdWUgJiYgYWxsb3dlZE5vZGVUeXBlID09PSBub2RlVHlwZSkge1xuICAgICAgICAgICAgdGFza3MucHVzaCh7XG4gICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICBwb3MsXG4gICAgICAgICAgICAgICAgbm9kZVR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGlmICghdGFza3MubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0cjtcbiAgICB9XG5cbiAgICB0YXNrcy5mb3JFYWNoKGpvYiA9PiB7XG4gICAgICAgIGNvbnN0IHtub2RlLCBwb3MsIG5vZGVUeXBlfSA9IGpvYjtcbiAgICAgICAgY29uc3QgbmV3QXR0cnMgPSB7XG4gICAgICAgICAgICAuLi5ub2RlLmF0dHJzLFxuICAgICAgICAgICAgaWQ6IGlkVmFsdWUgPyBpZFZhbHVlIDogbnVsbCxcbiAgICAgICAgfTtcblxuICAgICAgICB0ciA9IHRyLnNldE5vZGVNYXJrdXAocG9zLCBub2RlVHlwZSwgbmV3QXR0cnMsIG5vZGUubWFya3MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRyO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0IGBpZGAgYXR0cmlidXRlIHRoYXQgaXMgbm9uLWVtcHR5IGluIHRoZSBzZWxlY3Rpb24uXG4gKiBJZiBub3QgZm91bmQsIHJldHVybiBlbXB0eSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGZpbmRGaXJzdElkSW5TZWxlY3Rpb24oc3RhdGU6IEVkaXRvclN0YXRlLCBhbGxvd2VkTm9kZVR5cGU6IE5vZGVUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCB7c2VsZWN0aW9uLCBkb2N9ID0gc3RhdGU7XG4gICAgY29uc3Qge2Zyb20sIHRvfSA9IHNlbGVjdGlvbjtcbiAgICBsZXQga2VlcExvb2tpbmcgPSB0cnVlO1xuICAgIGxldCBmb3VuZENsYXNzOiBzdHJpbmcgPSAnJztcblxuICAgIGRvYy5ub2Rlc0JldHdlZW4oZnJvbSwgdG8sIG5vZGUgPT4ge1xuICAgICAgICBpZiAoa2VlcExvb2tpbmcgJiYgbm9kZS50eXBlID09PSBhbGxvd2VkTm9kZVR5cGUgJiYgbm9kZS5hdHRycy5pZCkge1xuICAgICAgICAgICAga2VlcExvb2tpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvdW5kQ2xhc3MgPSBub2RlLmF0dHJzLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGtlZXBMb29raW5nO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZvdW5kQ2xhc3M7XG59XG5cbmV4cG9ydCBjbGFzcyBJZEl0ZW0gZXh0ZW5kcyBJdGVtIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZGlhbG9nOiBNYXREaWFsb2csIG5vZGVUeXBlOiBOb2RlVHlwZSkge1xuICAgICAgICBzdXBlcih7XG4gICAgICAgICAgICBhY3RpdmU6IHN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gISFmaW5kRmlyc3RJZEluU2VsZWN0aW9uKHN0YXRlLCBub2RlVHlwZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBlbmFibGU6IHN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7c2VsZWN0aW9ufSA9IHN0YXRlO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb24gaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uIHx8IHNlbGVjdGlvbiBpbnN0YW5jZW9mIEFsbFNlbGVjdGlvbjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHJ1bjogKHN0YXRlLCBkaXNwYXRjaCwgdmlldyk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAub3BlbjxJZERpYWxvZ0NvbXBvbmVudCwgSWREaWFsb2dEYXRhLCBJZERpYWxvZ0RhdGE+KElkRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGZpbmRGaXJzdElkSW5TZWxlY3Rpb24oc3RhdGUsIG5vZGVUeXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXNwYXRjaCAmJiByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7c2VsZWN0aW9ufSA9IHN0YXRlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHIgPSBzZXRJZChzdGF0ZS50ci5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uKSwgcmVzdWx0LmlkLCBub2RlVHlwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyLmRvY0NoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2g/Lih0cik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -8,6 +8,7 @@ import { HorizontalRuleItem } from './items/horizontal-rule-item';
8
8
  import { cmdToItem, markTypeToItem, menuItemToItem } from './items/utils';
9
9
  import { wrapListItem } from './items/wrap-list-item';
10
10
  import { ClassItem } from './items/class-item';
11
+ import { IdItem } from './items/id-item';
11
12
  import { AddTableItem } from './items/table-item';
12
13
  /**
13
14
  * Given a schema, look for default mark and node types in it and
@@ -95,7 +96,8 @@ export function buildMenuItems(schema, dialog) {
95
96
  r.toggleHeaderCell = cmdToItem(toggleHeaderCell);
96
97
  r.cellBackgroundColor = new CellBackgroundColorItem(dialog);
97
98
  r.tableClass = new ClassItem(dialog, type);
99
+ r.tableId = new IdItem(dialog, type);
98
100
  }
99
101
  return r;
100
102
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixRQUFRLEVBRVIsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFHMUIsT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBK0NoRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWMsRUFBRSxNQUFpQjtJQUM1RCxNQUFNLENBQUMsR0FBYztRQUNq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ICAgbGlmdEl0ZW0sXG4gICAgTWVudUl0ZW0sXG4gICAgcmVkb0l0ZW0sXG4gICAgc2VsZWN0UGFyZW50Tm9kZUl0ZW0sXG4gICAgdW5kb0l0ZW0sXG4gICAgd3JhcEl0ZW0sXG59IGZyb20gJ3Byb3NlbWlycm9yLW1lbnUnO1xuaW1wb3J0IHtNYXJrVHlwZSwgTm9kZVR5cGUsIFNjaGVtYX0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge1xuICAgIGFkZENvbHVtbkFmdGVyLFxuICAgIGFkZENvbHVtbkJlZm9yZSxcbiAgICBhZGRSb3dBZnRlcixcbiAgICBhZGRSb3dCZWZvcmUsXG4gICAgZGVsZXRlQ29sdW1uLFxuICAgIGRlbGV0ZVJvdyxcbiAgICBkZWxldGVUYWJsZSxcbiAgICBtZXJnZUNlbGxzLFxuICAgIHNwbGl0Q2VsbCxcbiAgICB0b2dnbGVIZWFkZXJDZWxsLFxuICAgIHRvZ2dsZUhlYWRlckNvbHVtbixcbiAgICB0b2dnbGVIZWFkZXJSb3csXG59IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XG5pbXBvcnQge0l0ZW19IGZyb20gJy4vaXRlbXMvaXRlbSc7XG5pbXBvcnQge3BhcmFncmFwaFdpdGhBbGlnbm1lbnR9IGZyb20gJy4vc2NoZW1hL3BhcmFncmFwaC13aXRoLWFsaWdubWVudCc7XG5pbXBvcnQge1RleHRBbGlnbkl0ZW19IGZyb20gJy4vaXRlbXMvdGV4dC1hbGlnbi1pdGVtJztcbmltcG9ydCB7Q2VsbEJhY2tncm91bmRDb2xvckl0ZW19IGZyb20gJy4vaXRlbXMvY2VsbC1iYWNrZ3JvdW5kLWNvbG9yLWl0ZW0nO1xuaW1wb3J0IHtMaW5rSXRlbX0gZnJvbSAnLi9pdGVtcy9saW5rLWl0ZW0nO1xuaW1wb3J0IHtIb3Jpem9udGFsUnVsZUl0ZW19IGZyb20gJy4vaXRlbXMvaG9yaXpvbnRhbC1ydWxlLWl0ZW0nO1xuaW1wb3J0IHtjbWRUb0l0ZW0sIG1hcmtUeXBlVG9JdGVtLCBtZW51SXRlbVRvSXRlbX0gZnJvbSAnLi9pdGVtcy91dGlscyc7XG5pbXBvcnQge3dyYXBMaXN0SXRlbX0gZnJvbSAnLi9pdGVtcy93cmFwLWxpc3QtaXRlbSc7XG5pbXBvcnQge0NsYXNzSXRlbX0gZnJvbSAnLi9pdGVtcy9jbGFzcy1pdGVtJztcbmltcG9ydCB7QWRkVGFibGVJdGVtfSBmcm9tICcuL2l0ZW1zL3RhYmxlLWl0ZW0nO1xuXG5leHBvcnQgdHlwZSBLZXkgPVxuICAgIHwgJ3RvZ2dsZVN0cm9uZydcbiAgICB8ICd0b2dnbGVFbSdcbiAgICB8ICd0b2dnbGVDb2RlJ1xuICAgIHwgJ3RvZ2dsZUxpbmsnXG4gICAgfCAnd3JhcEJ1bGxldExpc3QnXG4gICAgfCAnd3JhcE9yZGVyZWRMaXN0J1xuICAgIHwgJ3dyYXBCbG9ja1F1b3RlJ1xuICAgIHwgJ21ha2VQYXJhZ3JhcGgnXG4gICAgfCAnbWFrZUNvZGVCbG9jaydcbiAgICB8ICdtYWtlSGVhZDEnXG4gICAgfCAnbWFrZUhlYWQyJ1xuICAgIHwgJ21ha2VIZWFkMydcbiAgICB8ICdtYWtlSGVhZDQnXG4gICAgfCAnbWFrZUhlYWQ1J1xuICAgIHwgJ21ha2VIZWFkNidcbiAgICB8ICdhbGlnbkxlZnQnXG4gICAgfCAnYWxpZ25SaWdodCdcbiAgICB8ICdhbGlnbkNlbnRlcidcbiAgICB8ICdhbGlnbkp1c3RpZnknXG4gICAgfCAnaW5zZXJ0SG9yaXpvbnRhbFJ1bGUnXG4gICAgfCAnam9pblVwJ1xuICAgIHwgJ2xpZnQnXG4gICAgfCAnc2VsZWN0UGFyZW50Tm9kZSdcbiAgICB8ICd1bmRvJ1xuICAgIHwgJ3JlZG8nXG4gICAgfCAnaW5zZXJ0VGFibGUnXG4gICAgfCAnYWRkQ29sdW1uQmVmb3JlJ1xuICAgIHwgJ2FkZENvbHVtbkFmdGVyJ1xuICAgIHwgJ2RlbGV0ZUNvbHVtbidcbiAgICB8ICdhZGRSb3dCZWZvcmUnXG4gICAgfCAnYWRkUm93QWZ0ZXInXG4gICAgfCAnZGVsZXRlUm93J1xuICAgIHwgJ2RlbGV0ZVRhYmxlJ1xuICAgIHwgJ21lcmdlQ2VsbHMnXG4gICAgfCAnc3BsaXRDZWxsJ1xuICAgIHwgJ3RvZ2dsZUhlYWRlckNvbHVtbidcbiAgICB8ICd0b2dnbGVIZWFkZXJSb3cnXG4gICAgfCAndG9nZ2xlSGVhZGVyQ2VsbCdcbiAgICB8ICdjZWxsQmFja2dyb3VuZENvbG9yJ1xuICAgIHwgJ3RhYmxlQ2xhc3MnXG4gICAgfCAncGFyYWdyYXBoQ2xhc3MnO1xuXG5leHBvcnQgdHlwZSBNZW51SXRlbXMgPSBQYXJ0aWFsPFJlY29yZDxLZXksIEl0ZW0+PjtcblxuLyoqXG4gKiBHaXZlbiBhIHNjaGVtYSwgbG9vayBmb3IgZGVmYXVsdCBtYXJrIGFuZCBub2RlIHR5cGVzIGluIGl0IGFuZFxuICogcmV0dXJuIGFuIG9iamVjdCB3aXRoIHJlbGV2YW50IG1lbnUgaXRlbXMgcmVsYXRpbmcgdG8gdGhvc2UgbWFya3M6XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZE1lbnVJdGVtcyhzY2hlbWE6IFNjaGVtYSwgZGlhbG9nOiBNYXREaWFsb2cpOiBNZW51SXRlbXMge1xuICAgIGNvbnN0IHI6IE1lbnVJdGVtcyA9IHtcbiAgICAgICAgam9pblVwOiBtZW51SXRlbVRvSXRlbShqb2luVXBJdGVtKSxcbiAgICAgICAgbGlmdDogbWVudUl0ZW1Ub0l0ZW0obGlmdEl0ZW0pLFxuICAgICAgICBzZWxlY3RQYXJlbnROb2RlOiBtZW51SXRlbVRvSXRlbShzZWxlY3RQYXJlbnROb2RlSXRlbSksXG4gICAgICAgIHVuZG86IG1lbnVJdGVtVG9JdGVtKHVuZG9JdGVtIGFzIHVua25vd24gYXMgTWVudUl0ZW0pLCAvLyBUeXBpbmcgaXMgaW5jb3JyZWN0LCBzbyB3ZSBmb3JjZSBpdFxuICAgICAgICByZWRvOiBtZW51SXRlbVRvSXRlbShyZWRvSXRlbSBhcyB1bmtub3duIGFzIE1lbnVJdGVtKSxcbiAgICB9O1xuXG4gICAgbGV0IHR5cGU6IE1hcmtUeXBlIHwgTm9kZVR5cGUgfCB1bmRlZmluZWQ7XG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5zdHJvbmc7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci50b2dnbGVTdHJvbmcgPSBtYXJrVHlwZVRvSXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm1hcmtzLmVtO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIudG9nZ2xlRW0gPSBtYXJrVHlwZVRvSXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm1hcmtzLmNvZGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci50b2dnbGVDb2RlID0gbWFya1R5cGVUb0l0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5tYXJrcy5saW5rO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIudG9nZ2xlTGluayA9IG5ldyBMaW5rSXRlbSh0eXBlLCBkaWFsb2cpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuYnVsbGV0X2xpc3Q7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwQnVsbGV0TGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLm9yZGVyZWRfbGlzdDtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLndyYXBPcmRlcmVkTGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLmJsb2NrcXVvdGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci53cmFwQmxvY2tRdW90ZSA9IG1lbnVJdGVtVG9JdGVtKHdyYXBJdGVtKHR5cGUsIHt9KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5wYXJhZ3JhcGg7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci5tYWtlUGFyYWdyYXBoID0gbWVudUl0ZW1Ub0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7fSkpO1xuXG4gICAgICAgIGlmICh0eXBlLnNwZWMgPT09IHBhcmFncmFwaFdpdGhBbGlnbm1lbnQpIHtcbiAgICAgICAgICAgIHIuYWxpZ25MZWZ0ID0gbmV3IFRleHRBbGlnbkl0ZW0oJ2xlZnQnKTtcbiAgICAgICAgICAgIHIuYWxpZ25SaWdodCA9IG5ldyBUZXh0QWxpZ25JdGVtKCdyaWdodCcpO1xuICAgICAgICAgICAgci5hbGlnbkNlbnRlciA9IG5ldyBUZXh0QWxpZ25JdGVtKCdjZW50ZXInKTtcbiAgICAgICAgICAgIHIuYWxpZ25KdXN0aWZ5ID0gbmV3IFRleHRBbGlnbkl0ZW0oJ2p1c3RpZnknKTtcbiAgICAgICAgICAgIHIucGFyYWdyYXBoQ2xhc3MgPSBuZXcgQ2xhc3NJdGVtKGRpYWxvZywgdHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLmNvZGVfYmxvY2s7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci5tYWtlQ29kZUJsb2NrID0gbWVudUl0ZW1Ub0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7fSkpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuaGVhZGluZztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLm1ha2VIZWFkMSA9IG1lbnVJdGVtVG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDF9fSkpO1xuICAgICAgICByLm1ha2VIZWFkMiA9IG1lbnVJdGVtVG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDJ9fSkpO1xuICAgICAgICByLm1ha2VIZWFkMyA9IG1lbnVJdGVtVG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDN9fSkpO1xuICAgICAgICByLm1ha2VIZWFkNCA9IG1lbnVJdGVtVG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDR9fSkpO1xuICAgICAgICByLm1ha2VIZWFkNSA9IG1lbnVJdGVtVG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDV9fSkpO1xuICAgICAgICByLm1ha2VIZWFkNiA9IG1lbnVJdGVtVG9JdGVtKGJsb2NrVHlwZUl0ZW0odHlwZSwge2F0dHJzOiB7bGV2ZWw6IDZ9fSkpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuaG9yaXpvbnRhbF9ydWxlO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIuaW5zZXJ0SG9yaXpvbnRhbFJ1bGUgPSBuZXcgSG9yaXpvbnRhbFJ1bGVJdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMudGFibGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci5pbnNlcnRUYWJsZSA9IG5ldyBBZGRUYWJsZUl0ZW0oKTtcbiAgICAgICAgci5hZGRDb2x1bW5CZWZvcmUgPSBjbWRUb0l0ZW0oYWRkQ29sdW1uQmVmb3JlKTtcbiAgICAgICAgci5hZGRDb2x1bW5BZnRlciA9IGNtZFRvSXRlbShhZGRDb2x1bW5BZnRlcik7XG4gICAgICAgIHIuZGVsZXRlQ29sdW1uID0gY21kVG9JdGVtKGRlbGV0ZUNvbHVtbik7XG4gICAgICAgIHIuYWRkUm93QmVmb3JlID0gY21kVG9JdGVtKGFkZFJvd0JlZm9yZSk7XG4gICAgICAgIHIuYWRkUm93QWZ0ZXIgPSBjbWRUb0l0ZW0oYWRkUm93QWZ0ZXIpO1xuICAgICAgICByLmRlbGV0ZVJvdyA9IGNtZFRvSXRlbShkZWxldGVSb3cpO1xuICAgICAgICByLmRlbGV0ZVRhYmxlID0gY21kVG9JdGVtKGRlbGV0ZVRhYmxlKTtcbiAgICAgICAgci5tZXJnZUNlbGxzID0gY21kVG9JdGVtKG1lcmdlQ2VsbHMpO1xuICAgICAgICByLnNwbGl0Q2VsbCA9IGNtZFRvSXRlbShzcGxpdENlbGwpO1xuICAgICAgICByLnRvZ2dsZUhlYWRlckNvbHVtbiA9IGNtZFRvSXRlbSh0b2dnbGVIZWFkZXJDb2x1bW4pO1xuICAgICAgICByLnRvZ2dsZUhlYWRlclJvdyA9IGNtZFRvSXRlbSh0b2dnbGVIZWFkZXJSb3cpO1xuICAgICAgICByLnRvZ2dsZUhlYWRlckNlbGwgPSBjbWRUb0l0ZW0odG9nZ2xlSGVhZGVyQ2VsbCk7XG4gICAgICAgIHIuY2VsbEJhY2tncm91bmRDb2xvciA9IG5ldyBDZWxsQmFja2dyb3VuZENvbG9ySXRlbShkaWFsb2cpO1xuICAgICAgICByLnRhYmxlQ2xhc3MgPSBuZXcgQ2xhc3NJdGVtKGRpYWxvZywgdHlwZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG59XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwtZWRpdG9yL3NyYy9saWIvdXRpbHMvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixRQUFRLEVBRVIsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFHMUIsT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQWdEaEQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FB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Q0FBQztLQUN4QztJQUVELE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgYmxvY2tUeXBlSXRlbSxcbiAgICBqb2luVXBJdGVtLFxuICAgIGxpZnRJdGVtLFxuICAgIE1lbnVJdGVtLFxuICAgIHJlZG9JdGVtLFxuICAgIHNlbGVjdFBhcmVudE5vZGVJdGVtLFxuICAgIHVuZG9JdGVtLFxuICAgIHdyYXBJdGVtLFxufSBmcm9tICdwcm9zZW1pcnJvci1tZW51JztcbmltcG9ydCB7TWFya1R5cGUsIE5vZGVUeXBlLCBTY2hlbWF9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHtcbiAgICBhZGRDb2x1bW5BZnRlcixcbiAgICBhZGRDb2x1bW5CZWZvcmUsXG4gICAgYWRkUm93QWZ0ZXIsXG4gICAgYWRkUm93QmVmb3JlLFxuICAgIGRlbGV0ZUNvbHVtbixcbiAgICBkZWxldGVSb3csXG4gICAgZGVsZXRlVGFibGUsXG4gICAgbWVyZ2VDZWxscyxcbiAgICBzcGxpdENlbGwsXG4gICAgdG9nZ2xlSGVhZGVyQ2VsbCxcbiAgICB0b2dnbGVIZWFkZXJDb2x1bW4sXG4gICAgdG9nZ2xlSGVhZGVyUm93LFxufSBmcm9tICdwcm9zZW1pcnJvci10YWJsZXMnO1xuaW1wb3J0IHtJdGVtfSBmcm9tICcuL2l0ZW1zL2l0ZW0nO1xuaW1wb3J0IHtwYXJhZ3JhcGhXaXRoQWxpZ25tZW50fSBmcm9tICcuL3NjaGVtYS9wYXJhZ3JhcGgtd2l0aC1hbGlnbm1lbnQnO1xuaW1wb3J0IHtUZXh0QWxpZ25JdGVtfSBmcm9tICcuL2l0ZW1zL3RleHQtYWxpZ24taXRlbSc7XG5pbXBvcnQge0NlbGxCYWNrZ3JvdW5kQ29sb3JJdGVtfSBmcm9tICcuL2l0ZW1zL2NlbGwtYmFja2dyb3VuZC1jb2xvci1pdGVtJztcbmltcG9ydCB7TGlua0l0ZW19IGZyb20gJy4vaXRlbXMvbGluay1pdGVtJztcbmltcG9ydCB7SG9yaXpvbnRhbFJ1bGVJdGVtfSBmcm9tICcuL2l0ZW1zL2hvcml6b250YWwtcnVsZS1pdGVtJztcbmltcG9ydCB7Y21kVG9JdGVtLCBtYXJrVHlwZVRvSXRlbSwgbWVudUl0ZW1Ub0l0ZW19IGZyb20gJy4vaXRlbXMvdXRpbHMnO1xuaW1wb3J0IHt3cmFwTGlzdEl0ZW19IGZyb20gJy4vaXRlbXMvd3JhcC1saXN0LWl0ZW0nO1xuaW1wb3J0IHtDbGFzc0l0ZW19IGZyb20gJy4vaXRlbXMvY2xhc3MtaXRlbSc7XG5pbXBvcnQge0lkSXRlbX0gZnJvbSAnLi9pdGVtcy9pZC1pdGVtJztcbmltcG9ydCB7QWRkVGFibGVJdGVtfSBmcm9tICcuL2l0ZW1zL3RhYmxlLWl0ZW0nO1xuXG5leHBvcnQgdHlwZSBLZXkgPVxuICAgIHwgJ3RvZ2dsZVN0cm9uZydcbiAgICB8ICd0b2dnbGVFbSdcbiAgICB8ICd0b2dnbGVDb2RlJ1xuICAgIHwgJ3RvZ2dsZUxpbmsnXG4gICAgfCAnd3JhcEJ1bGxldExpc3QnXG4gICAgfCAnd3JhcE9yZGVyZWRMaXN0J1xuICAgIHwgJ3dyYXBCbG9ja1F1b3RlJ1xuICAgIHwgJ21ha2VQYXJhZ3JhcGgnXG4gICAgfCAnbWFrZUNvZGVCbG9jaydcbiAgICB8ICdtYWtlSGVhZDEnXG4gICAgfCAnbWFrZUhlYWQyJ1xuICAgIHwgJ21ha2VIZWFkMydcbiAgICB8ICdtYWtlSGVhZDQnXG4gICAgfCAnbWFrZUhlYWQ1J1xuICAgIHwgJ21ha2VIZWFkNidcbiAgICB8ICdhbGlnbkxlZnQnXG4gICAgfCAnYWxpZ25SaWdodCdcbiAgICB8ICdhbGlnbkNlbnRlcidcbiAgICB8ICdhbGlnbkp1c3RpZnknXG4gICAgfCAnaW5zZXJ0SG9yaXpvbnRhbFJ1bGUnXG4gICAgfCAnam9pblVwJ1xuICAgIHwgJ2xpZnQnXG4gICAgfCAnc2VsZWN0UGFyZW50Tm9kZSdcbiAgICB8ICd1bmRvJ1xuICAgIHwgJ3JlZG8nXG4gICAgfCAnaW5zZXJ0VGFibGUnXG4gICAgfCAnYWRkQ29sdW1uQmVmb3JlJ1xuICAgIHwgJ2FkZENvbHVtbkFmdGVyJ1xuICAgIHwgJ2RlbGV0ZUNvbHVtbidcbiAgICB8ICdhZGRSb3dCZWZvcmUnXG4gICAgfCAnYWRkUm93QWZ0ZXInXG4gICAgfCAnZGVsZXRlUm93J1xuICAgIHwgJ2RlbGV0ZVRhYmxlJ1xuICAgIHwgJ21lcmdlQ2VsbHMnXG4gICAgfCAnc3BsaXRDZWxsJ1xuICAgIHwgJ3RvZ2dsZUhlYWRlckNvbHVtbidcbiAgICB8ICd0b2dnbGVIZWFkZXJSb3cnXG4gICAgfCAndG9nZ2xlSGVhZGVyQ2VsbCdcbiAgICB8ICdjZWxsQmFja2dyb3VuZENvbG9yJ1xuICAgIHwgJ3RhYmxlQ2xhc3MnXG4gICAgfCAndGFibGVJZCdcbiAgICB8ICdwYXJhZ3JhcGhDbGFzcyc7XG5cbmV4cG9ydCB0eXBlIE1lbnVJdGVtcyA9IFBhcnRpYWw8UmVjb3JkPEtleSwgSXRlbT4+O1xuXG4vKipcbiAqIEdpdmVuIGEgc2NoZW1hLCBsb29rIGZvciBkZWZhdWx0IG1hcmsgYW5kIG5vZGUgdHlwZXMgaW4gaXQgYW5kXG4gKiByZXR1cm4gYW4gb2JqZWN0IHdpdGggcmVsZXZhbnQgbWVudSBpdGVtcyByZWxhdGluZyB0byB0aG9zZSBtYXJrczpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTWVudUl0ZW1zKHNjaGVtYTogU2NoZW1hLCBkaWFsb2c6IE1hdERpYWxvZyk6IE1lbnVJdGVtcyB7XG4gICAgY29uc3QgcjogTWVudUl0ZW1zID0ge1xuICAgICAgICBqb2luVXA6IG1lbnVJdGVtVG9JdGVtKGpvaW5VcEl0ZW0pLFxuICAgICAgICBsaWZ0OiBtZW51SXRlbVRvSXRlbShsaWZ0SXRlbSksXG4gICAgICAgIHNlbGVjdFBhcmVudE5vZGU6IG1lbnVJdGVtVG9JdGVtKHNlbGVjdFBhcmVudE5vZGVJdGVtKSxcbiAgICAgICAgdW5kbzogbWVudUl0ZW1Ub0l0ZW0odW5kb0l0ZW0gYXMgdW5rbm93biBhcyBNZW51SXRlbSksIC8vIFR5cGluZyBpcyBpbmNvcnJlY3QsIHNvIHdlIGZvcmNlIGl0XG4gICAgICAgIHJlZG86IG1lbnVJdGVtVG9JdGVtKHJlZG9JdGVtIGFzIHVua25vd24gYXMgTWVudUl0ZW0pLFxuICAgIH07XG5cbiAgICBsZXQgdHlwZTogTWFya1R5cGUgfCBOb2RlVHlwZSB8IHVuZGVmaW5lZDtcbiAgICB0eXBlID0gc2NoZW1hLm1hcmtzLnN0cm9uZztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLnRvZ2dsZVN0cm9uZyA9IG1hcmtUeXBlVG9JdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubWFya3MuZW07XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci50b2dnbGVFbSA9IG1hcmtUeXBlVG9JdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubWFya3MuY29kZTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLnRvZ2dsZUNvZGUgPSBtYXJrVHlwZVRvSXRlbSh0eXBlKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm1hcmtzLmxpbms7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci50b2dnbGVMaW5rID0gbmV3IExpbmtJdGVtKHR5cGUsIGRpYWxvZyk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5idWxsZXRfbGlzdDtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLndyYXBCdWxsZXRMaXN0ID0gd3JhcExpc3RJdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMub3JkZXJlZF9saXN0O1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIud3JhcE9yZGVyZWRMaXN0ID0gd3JhcExpc3RJdGVtKHR5cGUpO1xuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuYmxvY2txdW90ZTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLndyYXBCbG9ja1F1b3RlID0gbWVudUl0ZW1Ub0l0ZW0od3JhcEl0ZW0odHlwZSwge30pKTtcbiAgICB9XG5cbiAgICB0eXBlID0gc2NoZW1hLm5vZGVzLnBhcmFncmFwaDtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLm1ha2VQYXJhZ3JhcGggPSBtZW51SXRlbVRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHt9KSk7XG5cbiAgICAgICAgaWYgKHR5cGUuc3BlYyA9PT0gcGFyYWdyYXBoV2l0aEFsaWdubWVudCkge1xuICAgICAgICAgICAgci5hbGlnbkxlZnQgPSBuZXcgVGV4dEFsaWduSXRlbSgnbGVmdCcpO1xuICAgICAgICAgICAgci5hbGlnblJpZ2h0ID0gbmV3IFRleHRBbGlnbkl0ZW0oJ3JpZ2h0Jyk7XG4gICAgICAgICAgICByLmFsaWduQ2VudGVyID0gbmV3IFRleHRBbGlnbkl0ZW0oJ2NlbnRlcicpO1xuICAgICAgICAgICAgci5hbGlnbkp1c3RpZnkgPSBuZXcgVGV4dEFsaWduSXRlbSgnanVzdGlmeScpO1xuICAgICAgICAgICAgci5wYXJhZ3JhcGhDbGFzcyA9IG5ldyBDbGFzc0l0ZW0oZGlhbG9nLCB0eXBlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHR5cGUgPSBzY2hlbWEubm9kZXMuY29kZV9ibG9jaztcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLm1ha2VDb2RlQmxvY2sgPSBtZW51SXRlbVRvSXRlbShibG9ja1R5cGVJdGVtKHR5cGUsIHt9KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5oZWFkaW5nO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICAgIHIubWFrZUhlYWQxID0gbWVudUl0ZW1Ub0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogMX19KSk7XG4gICAgICAgIHIubWFrZUhlYWQyID0gbWVudUl0ZW1Ub0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogMn19KSk7XG4gICAgICAgIHIubWFrZUhlYWQzID0gbWVudUl0ZW1Ub0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogM319KSk7XG4gICAgICAgIHIubWFrZUhlYWQ0ID0gbWVudUl0ZW1Ub0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogNH19KSk7XG4gICAgICAgIHIubWFrZUhlYWQ1ID0gbWVudUl0ZW1Ub0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogNX19KSk7XG4gICAgICAgIHIubWFrZUhlYWQ2ID0gbWVudUl0ZW1Ub0l0ZW0oYmxvY2tUeXBlSXRlbSh0eXBlLCB7YXR0cnM6IHtsZXZlbDogNn19KSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy5ob3Jpem9udGFsX3J1bGU7XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgICAgci5pbnNlcnRIb3Jpem9udGFsUnVsZSA9IG5ldyBIb3Jpem9udGFsUnVsZUl0ZW0odHlwZSk7XG4gICAgfVxuXG4gICAgdHlwZSA9IHNjaGVtYS5ub2Rlcy50YWJsZTtcbiAgICBpZiAodHlwZSkge1xuICAgICAgICByLmluc2VydFRhYmxlID0gbmV3IEFkZFRhYmxlSXRlbSgpO1xuICAgICAgICByLmFkZENvbHVtbkJlZm9yZSA9IGNtZFRvSXRlbShhZGRDb2x1bW5CZWZvcmUpO1xuICAgICAgICByLmFkZENvbHVtbkFmdGVyID0gY21kVG9JdGVtKGFkZENvbHVtbkFmdGVyKTtcbiAgICAgICAgci5kZWxldGVDb2x1bW4gPSBjbWRUb0l0ZW0oZGVsZXRlQ29sdW1uKTtcbiAgICAgICAgci5hZGRSb3dCZWZvcmUgPSBjbWRUb0l0ZW0oYWRkUm93QmVmb3JlKTtcbiAgICAgICAgci5hZGRSb3dBZnRlciA9IGNtZFRvSXRlbShhZGRSb3dBZnRlcik7XG4gICAgICAgIHIuZGVsZXRlUm93ID0gY21kVG9JdGVtKGRlbGV0ZVJvdyk7XG4gICAgICAgIHIuZGVsZXRlVGFibGUgPSBjbWRUb0l0ZW0oZGVsZXRlVGFibGUpO1xuICAgICAgICByLm1lcmdlQ2VsbHMgPSBjbWRUb0l0ZW0obWVyZ2VDZWxscyk7XG4gICAgICAgIHIuc3BsaXRDZWxsID0gY21kVG9JdGVtKHNwbGl0Q2VsbCk7XG4gICAgICAgIHIudG9nZ2xlSGVhZGVyQ29sdW1uID0gY21kVG9JdGVtKHRvZ2dsZUhlYWRlckNvbHVtbik7XG4gICAgICAgIHIudG9nZ2xlSGVhZGVyUm93ID0gY21kVG9JdGVtKHRvZ2dsZUhlYWRlclJvdyk7XG4gICAgICAgIHIudG9nZ2xlSGVhZGVyQ2VsbCA9IGNtZFRvSXRlbSh0b2dnbGVIZWFkZXJDZWxsKTtcbiAgICAgICAgci5jZWxsQmFja2dyb3VuZENvbG9yID0gbmV3IENlbGxCYWNrZ3JvdW5kQ29sb3JJdGVtKGRpYWxvZyk7XG4gICAgICAgIHIudGFibGVDbGFzcyA9IG5ldyBDbGFzc0l0ZW0oZGlhbG9nLCB0eXBlKTtcbiAgICAgICAgci50YWJsZUlkID0gbmV3IElkSXRlbShkaWFsb2csIHR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xufVxuIl19
@@ -56,6 +56,7 @@ export function tableNodes(options) {
56
56
  table: {
57
57
  attrs: {
58
58
  class: { default: null },
59
+ id: { default: '' },
59
60
  },
60
61
  content: 'table_row+',
61
62
  tableRole: 'table',
@@ -68,7 +69,10 @@ export function tableNodes(options) {
68
69
  if (!(dom instanceof HTMLElement)) {
69
70
  return;
70
71
  }
71
- return { class: dom.className };
72
+ return {
73
+ class: dom.className,
74
+ id: dom.id,
75
+ };
72
76
  },
73
77
  },
74
78
  ],
@@ -77,6 +81,9 @@ export function tableNodes(options) {
77
81
  if (node.attrs.class) {
78
82
  attrs.class = node.attrs.class;
79
83
  }
84
+ if (node.attrs.id) {
85
+ attrs.id = node.attrs.id;
86
+ }
80
87
  return ['table', attrs, ['tbody', 0]];
81
88
  },
82
89
  },
@@ -110,4 +117,4 @@ export function tableNodes(options) {
110
117
  },
111
118
  };
112
119
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL3V0aWxzL3NjaGVtYS90YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxTQUFTLFlBQVksQ0FBQyxHQUFrQixFQUFFLFVBQTBCO0lBQ2hFLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxXQUFXLENBQUMsRUFBRTtRQUMvQixPQUFPO0tBQ1Y7SUFFRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sTUFBTSxHQUFHLFNBQVMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0csTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxNQUFNLEdBQWU7UUFDdkIsT0FBTztRQUNQLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsUUFBUSxFQUFFLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJO0tBQy9ELENBQUM7SUFFRixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRTtRQUMzQixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQzNDLE1BQU0sS0FBSyxHQUFHLE1B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cnQge1RhYmxlTm9kZXMsIFRhYmxlTm9kZXNPcHRpb25zfSBmcm9tICdwcm9zZW1pcnJvci10YWJsZXMnO1xuaW1wb3J0IHtOb2RlIGFzIFByb3NlbWlycm9yTm9kZX0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xuXG50eXBlIENlbGxBdHRyaWJ1dGVzID0gVGFibGVOb2Rlc09wdGlvbnNbJ2NlbGxBdHRyaWJ1dGVzJ107XG50eXBlIEF0dHJpYnV0ZXMgPSB7W2tleTogc3RyaW5nXTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IG51bWJlcltdfTtcblxuZnVuY3Rpb24gZ2V0Q2VsbEF0dHJzKGRvbTogTm9kZSB8IHN0cmluZywgZXh0cmFBdHRyczogQ2VsbEF0dHJpYnV0ZXMpOiB1bmRlZmluZWQgfCBBdHRyaWJ1dGVzIHtcbiAgICBpZiAoIShkb20gaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHdpZHRoQXR0ciA9IGRvbS5nZXRBdHRyaWJ1dGUoJ2RhdGEtY29sd2lkdGgnKTtcbiAgICBjb25zdCB3aWR0aHMgPSB3aWR0aEF0dHIgJiYgL15cXGQrKCxcXGQrKSokLy50ZXN0KHdpZHRoQXR0cikgPyB3aWR0aEF0dHIuc3BsaXQoJywnKS5tYXAocyA9PiBOdW1iZXIocykpIDogbnVsbDtcbiAgICBjb25zdCBjb2xzcGFuID0gTnVtYmVyKGRvbS5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKSB8fCAxKTtcbiAgICBjb25zdCByZXN1bHQ6IEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbHNwYW4sXG4gICAgICAgIHJvd3NwYW46IE51bWJlcihkb20uZ2V0QXR0cmlidXRlKCdyb3dzcGFuJykgfHwgMSksXG4gICAgICAgIGNvbHdpZHRoOiB3aWR0aHMgJiYgd2lkdGhzLmxlbmd0aCA9PSBjb2xzcGFuID8gd2lkdGhzIDogbnVsbCxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBwcm9wIGluIGV4dHJhQXR0cnMpIHtcbiAgICAgICAgY29uc3QgZ2V0dGVyID0gZXh0cmFBdHRyc1twcm9wXS5nZXRGcm9tRE9NO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGdldHRlciAmJiBnZXR0ZXIoZG9tKTtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHJlc3VsdFtwcm9wXSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHNldENlbGxBdHRycyhub2RlOiBQcm9zZW1pcnJvck5vZGUsIGV4dHJhQXR0cnM6IENlbGxBdHRyaWJ1dGVzKTogdW5kZWZpbmVkIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3QgYXR0cnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBpZiAobm9kZS5hdHRycy5jb2xzcGFuICE9IDEpIGF0dHJzLmNvbHNwYW4gPSBub2RlLmF0dHJzLmNvbHNwYW47XG4gICAgaWYgKG5vZGUuYXR0cnMucm93c3BhbiAhPSAxKSBhdHRycy5yb3dzcGFuID0gbm9kZS5hdHRycy5yb3dzcGFuO1xuICAgIGlmIChub2RlLmF0dHJzLmNvbHdpZHRoKSBhdHRyc1snZGF0YS1jb2x3aWR0aCddID0gbm9kZS5hdHRycy5jb2x3aWR0aC5qb2luKCcsJyk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gZXh0cmFBdHRycykge1xuICAgICAgICBjb25zdCBzZXR0ZXIgPSBleHRyYUF0dHJzW3Byb3BdLnNldERPTUF0dHI7XG4gICAgICAgIGlmIChzZXR0ZXIpIHNldHRlcihub2RlLmF0dHJzW3Byb3BdLCBhdHRycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF0dHJzO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIHNldCBvZiBbbm9kZVxuICogc3BlY3NdKGh0dHA6Ly9wcm9zZW1pcnJvci5uZXQvZG9jcy9yZWYvI21vZGVsLlNjaGVtYVNwZWMubm9kZXMpIGZvclxuICogYHRhYmxlYCwgYHRhYmxlX3Jvd2AsIGFuZCBgdGFibGVfY2VsbGAgbm9kZXMgdHlwZXMuXG4gKlxuICogSXQgaXMgdmVyeSBkaXJlY3RseSBpbnNwaXJlZCBieSBwcm9zZW1pcnJvci10YWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdGFibGVOb2RlcyhvcHRpb25zOiBUYWJsZU5vZGVzT3B0aW9ucyk6IFRhYmxlTm9kZXMge1xuICAgIGNvbnN0IGV4dHJhQXR0cnMgPSBvcHRpb25zLmNlbGxBdHRyaWJ1dGVzIHx8IHt9O1xuICAgIGNvbnN0IGNlbGxBdHRyczogQ2VsbEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbHNwYW46IHtkZWZhdWx0OiAxfSxcbiAgICAgICAgcm93c3Bhbjoge2RlZmF1bHQ6IDF9LFxuICAgICAgICBjb2x3aWR0aDoge2RlZmF1bHQ6IG51bGx9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gZXh0cmFBdHRycykge1xuICAgICAgICBjZWxsQXR0cnNbcHJvcF0gPSB7XG4gICAgICAgICAgICBkZWZhdWx0OiBleHRyYUF0dHJzW3Byb3BdLmRlZmF1bHQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdGFibGU6IHtcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IHtkZWZhdWx0OiBudWxsfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250ZW50OiAndGFibGVfcm93KycsXG4gICAgICAgICAgICB0YWJsZVJvbGU6ICd0YWJsZScsXG4gICAgICAgICAgICBpc29sYXRpbmc6IHRydWUsXG4gICAgICAgICAgICBncm91cDogb3B0aW9ucy50YWJsZUdyb3VwLFxuICAgICAgICAgICAgcGFyc2VET006IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogJ3RhYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgZ2V0QXR0cnM6IChkb206IE5vZGUgfCBzdHJpbmcpOiB1bmRlZmluZWQgfCBBdHRyaWJ1dGVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGRvbSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtjbGFzczogZG9tLmNsYXNzTmFtZX07XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB0b0RPTTogbm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5hdHRycy5jbGFzcykge1xuICAgICAgICAgICAgICAgICAgICBhdHRycy5jbGFzcyA9IG5vZGUuYXR0cnMuY2xhc3M7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsndGFibGUnLCBhdHRycywgWyd0Ym9keScsIDBdXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRhYmxlX3Jvdzoge1xuICAgICAgICAgICAgY29udGVudDogJyh0YWJsZV9jZWxsIHwgdGFibGVfaGVhZGVyKSonLFxuICAgICAgICAgICAgdGFibGVSb2xlOiAncm93JyxcbiAgICAgICAgICAgIHBhcnNlRE9NOiBbe3RhZzogJ3RyJ31dLFxuICAgICAgICAgICAgdG9ET006ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWyd0cicsIDBdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFibGVfY2VsbDoge1xuICAgICAgICAgICAgY29udGVudDogb3B0aW9ucy5jZWxsQ29udGVudCxcbiAgICAgICAgICAgIGF0dHJzOiBjZWxsQXR0cnMsXG4gICAgICAgICAgICB0YWJsZVJvbGU6ICdjZWxsJyxcbiAgICAgICAgICAgIGlzb2xhdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIHBhcnNlRE9NOiBbe3RhZzogJ3RkJywgZ2V0QXR0cnM6IGRvbSA9PiBnZXRDZWxsQXR0cnMoZG9tLCBleHRyYUF0dHJzKX1dLFxuICAgICAgICAgICAgdG9ET006IG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbJ3RkJywgc2V0Q2VsbEF0dHJzKG5vZGUsIGV4dHJhQXR0cnMpLCAwXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRhYmxlX2hlYWRlcjoge1xuICAgICAgICAgICAgY29udGVudDogb3B0aW9ucy5jZWxsQ29udGVudCxcbiAgICAgICAgICAgIGF0dHJzOiBjZWxsQXR0cnMsXG4gICAgICAgICAgICB0YWJsZVJvbGU6ICdoZWFkZXJfY2VsbCcsXG4gICAgICAgICAgICBpc29sYXRpbmc6IHRydWUsXG4gICAgICAgICAgICBwYXJzZURPTTogW3t0YWc6ICd0aCcsIGdldEF0dHJzOiBkb20gPT4gZ2V0Q2VsbEF0dHJzKGRvbSwgZXh0cmFBdHRycyl9XSxcbiAgICAgICAgICAgIHRvRE9NOiBub2RlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWyd0aCcsIHNldENlbGxBdHRycyhub2RlLCBleHRyYUF0dHJzKSwgMF07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH07XG59XG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsLWVkaXRvci9zcmMvbGliL3V0aWxzL3NjaGVtYS90YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxTQUFTLFlBQVksQ0FBQyxHQUFrQixFQUFFLFVBQTBCO0lBQ2hFLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxXQUFXLENBQUMsRUFBRTtRQUMvQixPQUFPO0tBQ1Y7SUFFRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sTUFBTSxHQUFHLFNBQVMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0csTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxNQUFNLEdBQWU7UUFDdkIsT0FBTztRQUNQLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsUUFBUSxFQUFFLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJO0tBQy9ELENBQUM7SUFFRixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRTtRQUMzQixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQzNDLE1BQU0sS0FBSyxHQUFHLE1B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QyxFQUFDLENBQUM7WUFDdkUsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDO1NBQ0o7S0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGFibGVOb2RlcywgVGFibGVOb2Rlc09wdGlvbnN9IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XG5pbXBvcnQge05vZGUgYXMgUHJvc2VtaXJyb3JOb2RlfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5cbnR5cGUgQ2VsbEF0dHJpYnV0ZXMgPSBUYWJsZU5vZGVzT3B0aW9uc1snY2VsbEF0dHJpYnV0ZXMnXTtcbnR5cGUgQXR0cmlidXRlcyA9IHtba2V5OiBzdHJpbmddOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgbnVtYmVyW119O1xuXG5mdW5jdGlvbiBnZXRDZWxsQXR0cnMoZG9tOiBOb2RlIHwgc3RyaW5nLCBleHRyYUF0dHJzOiBDZWxsQXR0cmlidXRlcyk6IHVuZGVmaW5lZCB8IEF0dHJpYnV0ZXMge1xuICAgIGlmICghKGRvbSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgd2lkdGhBdHRyID0gZG9tLmdldEF0dHJpYnV0ZSgnZGF0YS1jb2x3aWR0aCcpO1xuICAgIGNvbnN0IHdpZHRocyA9IHdpZHRoQXR0ciAmJiAvXlxcZCsoLFxcZCspKiQvLnRlc3Qod2lkdGhBdHRyKSA/IHdpZHRoQXR0ci5zcGxpdCgnLCcpLm1hcChzID0+IE51bWJlcihzKSkgOiBudWxsO1xuICAgIGNvbnN0IGNvbHNwYW4gPSBOdW1iZXIoZG9tLmdldEF0dHJpYnV0ZSgnY29sc3BhbicpIHx8IDEpO1xuICAgIGNvbnN0IHJlc3VsdDogQXR0cmlidXRlcyA9IHtcbiAgICAgICAgY29sc3BhbixcbiAgICAgICAgcm93c3BhbjogTnVtYmVyKGRvbS5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAxKSxcbiAgICAgICAgY29sd2lkdGg6IHdpZHRocyAmJiB3aWR0aHMubGVuZ3RoID09IGNvbHNwYW4gPyB3aWR0aHMgOiBudWxsLFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gZXh0cmFBdHRycykge1xuICAgICAgICBjb25zdCBnZXR0ZXIgPSBleHRyYUF0dHJzW3Byb3BdLmdldEZyb21ET007XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0dGVyICYmIGdldHRlcihkb20pO1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkgcmVzdWx0W3Byb3BdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gc2V0Q2VsbEF0dHJzKG5vZGU6IFByb3NlbWlycm9yTm9kZSwgZXh0cmFBdHRyczogQ2VsbEF0dHJpYnV0ZXMpOiB1bmRlZmluZWQgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBhdHRyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGlmIChub2RlLmF0dHJzLmNvbHNwYW4gIT0gMSkgYXR0cnMuY29sc3BhbiA9IG5vZGUuYXR0cnMuY29sc3BhbjtcbiAgICBpZiAobm9kZS5hdHRycy5yb3dzcGFuICE9IDEpIGF0dHJzLnJvd3NwYW4gPSBub2RlLmF0dHJzLnJvd3NwYW47XG4gICAgaWYgKG5vZGUuYXR0cnMuY29sd2lkdGgpIGF0dHJzWydkYXRhLWNvbHdpZHRoJ10gPSBub2RlLmF0dHJzLmNvbHdpZHRoLmpvaW4oJywnKTtcblxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBleHRyYUF0dHJzKSB7XG4gICAgICAgIGNvbnN0IHNldHRlciA9IGV4dHJhQXR0cnNbcHJvcF0uc2V0RE9NQXR0cjtcbiAgICAgICAgaWYgKHNldHRlcikgc2V0dGVyKG5vZGUuYXR0cnNbcHJvcF0sIGF0dHJzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXR0cnM7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgc2V0IG9mIFtub2RlXG4gKiBzcGVjc10oaHR0cDovL3Byb3NlbWlycm9yLm5ldC9kb2NzL3JlZi8jbW9kZWwuU2NoZW1hU3BlYy5ub2RlcykgZm9yXG4gKiBgdGFibGVgLCBgdGFibGVfcm93YCwgYW5kIGB0YWJsZV9jZWxsYCBub2RlcyB0eXBlcy5cbiAqXG4gKiBJdCBpcyB2ZXJ5IGRpcmVjdGx5IGluc3BpcmVkIGJ5IHByb3NlbWlycm9yLXRhYmxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZU5vZGVzKG9wdGlvbnM6IFRhYmxlTm9kZXNPcHRpb25zKTogVGFibGVOb2RlcyB7XG4gICAgY29uc3QgZXh0cmFBdHRycyA9IG9wdGlvbnMuY2VsbEF0dHJpYnV0ZXMgfHwge307XG4gICAgY29uc3QgY2VsbEF0dHJzOiBDZWxsQXR0cmlidXRlcyA9IHtcbiAgICAgICAgY29sc3Bhbjoge2RlZmF1bHQ6IDF9LFxuICAgICAgICByb3dzcGFuOiB7ZGVmYXVsdDogMX0sXG4gICAgICAgIGNvbHdpZHRoOiB7ZGVmYXVsdDogbnVsbH0sXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBleHRyYUF0dHJzKSB7XG4gICAgICAgIGNlbGxBdHRyc1twcm9wXSA9IHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IGV4dHJhQXR0cnNbcHJvcF0uZGVmYXVsdCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB0YWJsZToge1xuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBjbGFzczoge2RlZmF1bHQ6IG51bGx9LFxuICAgICAgICAgICAgICAgIGlkOiB7ZGVmYXVsdDogJyd9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICd0YWJsZV9yb3crJyxcbiAgICAgICAgICAgIHRhYmxlUm9sZTogJ3RhYmxlJyxcbiAgICAgICAgICAgIGlzb2xhdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGdyb3VwOiBvcHRpb25zLnRhYmxlR3JvdXAsXG4gICAgICAgICAgICBwYXJzZURPTTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiAndGFibGUnLFxuICAgICAgICAgICAgICAgICAgICBnZXRBdHRyczogKGRvbTogTm9kZSB8IHN0cmluZyk6IHVuZGVmaW5lZCB8IEF0dHJpYnV0ZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZG9tIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBkb20uY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBkb20uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgdG9ET006IG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUuYXR0cnMuY2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMuY2xhc3MgPSBub2RlLmF0dHJzLmNsYXNzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobm9kZS5hdHRycy5pZCkge1xuICAgICAgICAgICAgICAgICAgICBhdHRycy5pZCA9IG5vZGUuYXR0cnMuaWQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsndGFibGUnLCBhdHRycywgWyd0Ym9keScsIDBdXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRhYmxlX3Jvdzoge1xuICAgICAgICAgICAgY29udGVudDogJyh0YWJsZV9jZWxsIHwgdGFibGVfaGVhZGVyKSonLFxuICAgICAgICAgICAgdGFibGVSb2xlOiAncm93JyxcbiAgICAgICAgICAgIHBhcnNlRE9NOiBbe3RhZzogJ3RyJ31dLFxuICAgICAgICAgICAgdG9ET006ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWyd0cicsIDBdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFibGVfY2VsbDoge1xuICAgICAgICAgICAgY29udGVudDogb3B0aW9ucy5jZWxsQ29udGVudCxcbiAgICAgICAgICAgIGF0dHJzOiBjZWxsQXR0cnMsXG4gICAgICAgICAgICB0YWJsZVJvbGU6ICdjZWxsJyxcbiAgICAgICAgICAgIGlzb2xhdGluZzogdHJ1ZSxcbiAgICAgICAgICAgIHBhcnNlRE9NOiBbe3RhZzogJ3RkJywgZ2V0QXR0cnM6IGRvbSA9PiBnZXRDZWxsQXR0cnMoZG9tLCBleHRyYUF0dHJzKX1dLFxuICAgICAgICAgICAgdG9ET006IG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbJ3RkJywgc2V0Q2VsbEF0dHJzKG5vZGUsIGV4dHJhQXR0cnMpLCAwXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRhYmxlX2hlYWRlcjoge1xuICAgICAgICAgICAgY29udGVudDogb3B0aW9ucy5jZWxsQ29udGVudCxcbiAgICAgICAgICAgIGF0dHJzOiBjZWxsQXR0cnMsXG4gICAgICAgICAgICB0YWJsZVJvbGU6ICdoZWFkZXJfY2VsbCcsXG4gICAgICAgICAgICBpc29sYXRpbmc6IHRydWUsXG4gICAgICAgICAgICBwYXJzZURPTTogW3t0YWc6ICd0aCcsIGdldEF0dHJzOiBkb20gPT4gZ2V0Q2VsbEF0dHJzKGRvbSwgZXh0cmFBdHRycyl9XSxcbiAgICAgICAgICAgIHRvRE9NOiBub2RlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWyd0aCcsIHNldENlbGxBdHRycyhub2RlLCBleHRyYUF0dHJzKSwgMF07XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH07XG59XG4iXX0=