@talrace/ngx-noder 0.0.8 → 0.0.10

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 (102) hide show
  1. package/esm2022/lib/apart-components/add-link-dialog/add-link-dialog.component.mjs +21 -9
  2. package/esm2022/lib/apart-components/editor-toolbar/components/base-toolbar.component.mjs +8 -2
  3. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +2 -2
  4. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-size/font-size.component.mjs +3 -3
  5. package/esm2022/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.mjs +2 -2
  6. package/esm2022/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.mjs +1 -8
  7. package/esm2022/lib/editor/components/edges/edge.component.mjs +2 -2
  8. package/esm2022/lib/editor/components/edges/edges.mjs +21 -2
  9. package/esm2022/lib/editor/components/image/input-handler/image-input.handler.mjs +18 -1
  10. package/esm2022/lib/editor/components/shared/services/custom-content.service.mjs +22 -56
  11. package/esm2022/lib/editor/components/table/components/table-cell.component.mjs +6 -6
  12. package/esm2022/lib/editor/components/table/components/table.component.mjs +13 -4
  13. package/esm2022/lib/editor/components/table/models/cell-data.model.mjs +3 -4
  14. package/esm2022/lib/editor/components/table/selection/table-selection.mjs +15 -5
  15. package/esm2022/lib/editor/content/constants/editor.const.mjs +9 -1
  16. package/esm2022/lib/editor/content/display-data/display-data.mjs +839 -0
  17. package/esm2022/lib/editor/content/display-data/general-properties.model.mjs +1 -1
  18. package/esm2022/lib/editor/content/display-data/models/paragraph-info.model.mjs +8 -0
  19. package/esm2022/lib/editor/content/display-data/paragraph.mjs +5 -1
  20. package/esm2022/lib/editor/content/display-data/text-line-info.mjs +2 -1
  21. package/esm2022/lib/editor/content/display-data/toolbar-styles.interface.mjs +1 -1
  22. package/esm2022/lib/editor/content/helpers/content-style.helper.mjs +12 -30
  23. package/esm2022/lib/editor/content/helpers/display-token.helper.mjs +62 -0
  24. package/esm2022/lib/editor/content/helpers/link.helper.mjs +6 -0
  25. package/esm2022/lib/editor/display/layers/cursor.layer.mjs +9 -8
  26. package/esm2022/lib/editor/display/layers/pages.layer.mjs +5 -5
  27. package/esm2022/lib/editor/display/layers/print.text.layer.mjs +2 -2
  28. package/esm2022/lib/editor/display/layers/selection.layer.mjs +15 -9
  29. package/esm2022/lib/editor/display/layers/text.layer.mjs +29 -32
  30. package/esm2022/lib/editor/display/print/print.renderer.mjs +8 -8
  31. package/esm2022/lib/editor/display/renderer.mjs +10 -10
  32. package/esm2022/lib/editor/display/rendering.helper.mjs +2 -4
  33. package/esm2022/lib/editor/display/virtual.renderer.mjs +5 -5
  34. package/esm2022/lib/editor/execution/edit.session.mjs +211 -754
  35. package/esm2022/lib/editor/execution/editor.mjs +119 -77
  36. package/esm2022/lib/editor/execution/helpers/format-style.helper.mjs +41 -32
  37. package/esm2022/lib/editor/execution/helpers/image.helpet.mjs +12 -0
  38. package/esm2022/lib/editor/execution/helpers/paragraph.helper.mjs +11 -3
  39. package/esm2022/lib/editor/execution/regulator.service.mjs +28 -20
  40. package/esm2022/lib/editor/gadgets/numbering/numbering-paragraph-style.model.mjs +13 -0
  41. package/esm2022/lib/editor/gadgets/numbering/numbering.helper.mjs +77 -10
  42. package/esm2022/lib/editor/gadgets/search/search.mjs +6 -6
  43. package/esm2022/lib/editor/interaction/editor.service.mjs +27 -6
  44. package/esm2022/lib/editor/interaction/input.handler.mjs +8 -5
  45. package/esm2022/lib/editor/interaction/mouse.handler.mjs +2 -1
  46. package/esm2022/lib/editor/operations/helpers/format-operations.helper.mjs +32 -2
  47. package/esm2022/lib/editor/operations/helpers/link-operations.helper.mjs +67 -14
  48. package/esm2022/lib/editor/operations/operations-helper.helper.mjs +27 -20
  49. package/esm2022/lib/editor/operations/save-commands.helper.mjs +2 -2
  50. package/esm2022/lib/editor/positioning/content.helper.mjs +15 -15
  51. package/esm2022/lib/editor/positioning/line-width.helper.mjs +5 -5
  52. package/esm2022/lib/editor/positioning/position.helper.mjs +34 -32
  53. package/esm2022/lib/editor/positioning/selection.mjs +42 -32
  54. package/esm2022/lib/editor/revision.helper.mjs +4 -3
  55. package/esm2022/lib/models/generated/link.model.mjs +1 -1
  56. package/esm2022/public-api.mjs +2 -1
  57. package/fesm2022/talrace-ngx-noder.mjs +3863 -3558
  58. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  59. package/lib/apart-components/add-link-dialog/add-link-dialog.component.d.ts +0 -1
  60. package/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.d.ts +0 -2
  61. package/lib/editor/components/image/input-handler/image-input.handler.d.ts +3 -0
  62. package/lib/editor/components/shared/services/custom-content.service.d.ts +3 -5
  63. package/lib/editor/components/table/components/table-cell.component.d.ts +1 -1
  64. package/lib/editor/components/table/components/table.component.d.ts +1 -0
  65. package/lib/editor/components/table/models/cell-data.model.d.ts +1 -1
  66. package/lib/editor/components/table/selection/table-selection.d.ts +2 -0
  67. package/lib/editor/content/constants/editor.const.d.ts +2 -0
  68. package/lib/editor/content/display-data/display-data.d.ts +103 -0
  69. package/lib/editor/content/display-data/general-properties.model.d.ts +5 -0
  70. package/lib/editor/content/display-data/models/paragraph-info.model.d.ts +9 -0
  71. package/lib/editor/content/display-data/paragraph.d.ts +1 -0
  72. package/lib/editor/content/display-data/text-line-info.d.ts +1 -0
  73. package/lib/editor/content/display-data/toolbar-styles.interface.d.ts +1 -1
  74. package/lib/editor/content/helpers/content-style.helper.d.ts +1 -2
  75. package/lib/editor/content/helpers/display-token.helper.d.ts +6 -0
  76. package/lib/editor/content/helpers/link.helper.d.ts +4 -0
  77. package/lib/editor/display/layers/text.layer.d.ts +2 -3
  78. package/lib/editor/display/print/print.renderer.d.ts +0 -2
  79. package/lib/editor/execution/edit.session.d.ts +12 -59
  80. package/lib/editor/execution/editor.d.ts +9 -6
  81. package/lib/editor/execution/helpers/format-style.helper.d.ts +2 -2
  82. package/lib/editor/execution/helpers/image.helpet.d.ts +4 -0
  83. package/lib/editor/execution/regulator.service.d.ts +1 -1
  84. package/lib/editor/gadgets/numbering/numbering-paragraph-style.model.d.ts +6 -0
  85. package/lib/editor/gadgets/numbering/numbering.helper.d.ts +10 -3
  86. package/lib/editor/interaction/editor.service.d.ts +12 -3
  87. package/lib/editor/operations/helpers/link-operations.helper.d.ts +6 -3
  88. package/lib/editor/positioning/content.helper.d.ts +6 -5
  89. package/lib/editor/positioning/position.helper.d.ts +3 -3
  90. package/lib/editor/positioning/selection.d.ts +3 -0
  91. package/lib/models/generated/link.model.d.ts +3 -1
  92. package/package.json +8 -8
  93. package/public-api.d.ts +1 -0
  94. package/src/_ngx-noder.theme.scss +31 -2
  95. package/src/styles.scss +0 -1
  96. package/esm2022/lib/editor/content/display-data/document.mjs +0 -134
  97. package/esm2022/lib/editor/content/display-data/pages.wrap.mjs +0 -226
  98. package/esm2022/lib/editor/execution/helpers/delta.helper.mjs +0 -18
  99. package/lib/editor/content/display-data/document.d.ts +0 -56
  100. package/lib/editor/content/display-data/pages.wrap.d.ts +0 -42
  101. package/lib/editor/execution/helpers/delta.helper.d.ts +0 -6
  102. package/src/scss/_fonts.scss +0 -3
@@ -59,7 +59,26 @@ export class Edges {
59
59
  }
60
60
  createComponents(edgeModels, pageWidth, margins, type) {
61
61
  const resultComponents = [];
62
- for (let model of edgeModels) {
62
+ const hasFirstEdge = edgeModels.some(edge => edge.pageType === PageType.First);
63
+ for (let model of edgeModels.sort((x, y) => {
64
+ if (hasFirstEdge) {
65
+ if (x.pageType === PageType.First)
66
+ return -1;
67
+ if (y.pageType === PageType.First)
68
+ return 1;
69
+ }
70
+ else {
71
+ if (x.pageType === PageType.Default)
72
+ return -1;
73
+ if (y.pageType === PageType.Default)
74
+ return 1;
75
+ }
76
+ if (x.pageType === PageType.Even)
77
+ return -1;
78
+ if (y.pageType === PageType.Even)
79
+ return 1;
80
+ return 0;
81
+ })) {
63
82
  const componentRef = this.componentService.generateComponent(NoderEdgeComponent, {
64
83
  model,
65
84
  margins,
@@ -105,4 +124,4 @@ export class Edges {
105
124
  return edgeName;
106
125
  }
107
126
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvY29tcG9uZW50cy9lZGdlcy9lZGdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV4RSxNQUFNLE9BQU8sS0FBSztJQUtkLFlBQ1ksZ0JBQWtDLEVBQzFDLE9BQW9CLEVBQ3BCLE9BQW9CLEVBQ3BCLE9BQW9CLEVBQ3BCLFNBQWlCLEVBQ1QsZUFBdUIsRUFDdkIsaUJBQXlDO1FBTnpDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFLbEMsb0JBQWUsR0FBZixlQUFlLENBQVE7UUFDdkIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF3QjtRQVhyRCxzQkFBaUIsR0FBdUMsRUFBRSxDQUFDO1FBRTNELHNCQUFpQixHQUF1QyxFQUFFLENBQUM7UUFXdkQsSUFBSSxPQUFPLEVBQUU7WUFDVCxNQUFNLGFBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3RHO1FBRUQsSUFBSSxPQUFPLEVBQUU7WUFDVCxNQUFNLGFBQWEsR0FBRyxJ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USxDQUFDO1FBQ3hFLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLEtBQUssRUFBRTtZQUM3QyxRQUFRLEdBQUcsY0FBYyxRQUFRLEVBQUUsQ0FBQztTQUN2QzthQUFNLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRTtZQUNuRCxRQUFRLEdBQUcsY0FBYyxRQUFRLEVBQUUsQ0FBQztTQUN2QzthQUFNLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsRUFBRTtZQUMxRSxRQUFRLEdBQUcsYUFBYSxRQUFRLEVBQUUsQ0FBQztTQUN0QztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL2NvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEVkZ2VNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZWRnZS5tb2RlbCc7XG5pbXBvcnQgeyBFZGdlVHlwZSB9IGZyb20gJy4vZWRnZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgR2VuZXJhbFByb3BlcnRpZXNNb2RlbCB9IGZyb20gJy4uLy4uL2NvbnRlbnQvZGlzcGxheS1kYXRhL2dlbmVyYWwtcHJvcGVydGllcy5tb2RlbCc7XG5pbXBvcnQgeyBNYXJnaW5Nb2RlbCB9IGZyb20gJy4uLy4uL2NvbnRlbnQvbWFyZ2luLm1vZGVsJztcbmltcG9ydCB7IE5vZGVyRWRnZUNvbXBvbmVudCB9IGZyb20gJy4vZWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnZVR5cGUgfSBmcm9tICcuL3BhZ2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IFJlbmRlckNoYW5nZXNNb2RlbCB9IGZyb20gJy4uLy4uL2Rpc3BsYXkvcmVuZGVyLWNoYW5nZXMubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgRWRnZXMge1xuICAgIGhlYWRlcnNDb21wb25lbnRzOiBDb21wb25lbnRSZWY8Tm9kZXJFZGdlQ29tcG9uZW50PltdID0gW107XG5cbiAgICBmb290ZXJzQ29tcG9uZW50czogQ29tcG9uZW50UmVmPE5vZGVyRWRnZUNvbXBvbmVudD5bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgaGVhZGVyczogRWRnZU1vZGVsW10sXG4gICAgICAgIGZvb3RlcnM6IEVkZ2VNb2RlbFtdLFxuICAgICAgICBtYXJnaW5zOiBNYXJnaW5Nb2RlbCxcbiAgICAgICAgcGFnZVdpZHRoOiBudW1iZXIsXG4gICAgICAgIHByaXZhdGUgcGFyZW50U2Vzc2lvbklkOiBudW1iZXIsXG4gICAgICAgIHByaXZhdGUgZ2VuZXJhbFByb3BlcnRpZXM6IEdlbmVyYWxQcm9wZXJ0aWVzTW9kZWxcbiAgICApIHtcbiAgICAgICAgaWYgKGhlYWRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlck1hcmdpbnMgPSBuZXcgTWFyZ2luTW9kZWwoeyAuLi5tYXJnaW5zLCBib3R0b206IDAgfSk7XG4gICAgICAgICAgICB0aGlzLmhlYWRlcnNDb21wb25lbnRzID0gdGhpcy5jcmVhdGVDb21wb25lbnRzKGhlYWRlcnMsIHBhZ2VXaWR0aCwgaGVhZGVyTWFyZ2lucywgRWRnZVR5cGUuSGVhZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb290ZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBmb290ZXJNYXJnaW5zID0gbmV3IE1hcmdpbk1vZGVsKHsgLi4ubWFyZ2lucywgdG9wOiAwIH0pO1xuICAgICAgICAgICAgdGhpcy5mb290ZXJzQ29tcG9uZW50cyA9IHRoaXMuY3JlYXRlQ29tcG9uZW50cyhmb290ZXJzLCBwYWdlV2lkdGgsIGZvb3Rlck1hcmdpbnMsIEVkZ2VUeXBlLkZvb3Rlcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldEVkZ2VOYW1lVG9Db21wb25lbnRzKCk7XG4gICAgfVxuXG4gICAgZ2V0Q29tcG9uZW50QnlQYWdlKHBhZ2U6IG51bWJlciwgdHlwZTogRWRnZVR5cGUpOiBDb21wb25lbnRSZWY8Tm9kZXJFZGdlQ29tcG9uZW50PiB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0eXBlID09PSBFZGdlVHlwZS5IZWFkZXIgPyB0aGlzLmhlYWRlcnNDb21wb25lbnRzIDogdGhpcy5mb290ZXJzQ29tcG9uZW50cztcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29tcG9uZW50KGNvbXBvbmVudHMsIHBhZ2UpO1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudEJ5UGFnZVR5cGUocGFnZVR5cGU6IFBhZ2VUeXBlLCB0eXBlOiBFZGdlVHlwZSk6IENvbXBvbmVudFJlZjxOb2RlckVkZ2VDb21wb25lbnQ+IHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHR5cGUgPT09IEVkZ2VUeXBlLkhlYWRlciA/IHRoaXMuaGVhZGVyc0NvbXBvbmVudHMgOiB0aGlzLmZvb3RlcnNDb21wb25lbnRzO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50cy5maW5kKHggPT4geC5pbnN0YW5jZS5tb2RlbC5wYWdlVHlwZSA9PT0gcGFnZVR5cGUpO1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudEhlaWdodEJ5UGFnZVR5cGUocGFnZVR5cGU6IFBhZ2VUeXBlLCB0eXBlOiBFZGdlVHlwZSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50QnlQYWdlVHlwZShwYWdlVHlwZSwgdHlwZSk7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuaW5zdGFuY2UuaGVpZ2h0ID4gdGhpcy5nZW5lcmFsUHJvcGVydGllcy5tYXhFZGdlSGVpZ2h0XG4gICAgICAgICAgICA/IHRoaXMuZ2VuZXJhbFByb3BlcnRpZXMubWF4RWRnZUhlaWdodFxuICAgICAgICAgICAgOiBjb21wb25lbnQuaW5zdGFuY2UuaGVpZ2h0O1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudEhlaWdodChwYWdlOiBudW1iZXIsIHR5cGU6IEVkZ2VUeXBlKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHR5cGUgPT09IEVkZ2VUeXBlLkhlYWRlciA/IHRoaXMuaGVhZGVyc0NvbXBvbmVudHMgOiB0aGlzLmZvb3RlcnNDb21wb25lbnRzO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudChjb21wb25lbnRzLCBwYWdlKTtcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5pbnN0YW5jZS5oZWlnaHQgPiB0aGlzLmdlbmVyYWxQcm9wZXJ0aWVzLm1heEVkZ2VIZWlnaHRcbiAgICAgICAgICAgID8gdGhpcy5nZW5lcmFsUHJvcGVydGllcy5tYXhFZGdlSGVpZ2h0XG4gICAgICAgICAgICA6IGNvbXBvbmVudC5pbnN0YW5jZS5oZWlnaHQ7XG4gICAgfVxuXG4gICAgdG9nZ2xlRWRpdE1vZGUobmVlZEVuYWJsZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBlZGdlQ29tcG9uZW50cyA9IFsuLi50aGlzLmhlYWRlcnNDb21wb25lbnRzLCAuLi50aGlzLmZvb3RlcnNDb21wb25lbnRzXTtcbiAgICAgICAgZm9yIChsZXQgY29tcG9uZW50IG9mIGVkZ2VDb21wb25lbnRzKSB7XG4gICAgICAgICAgICBuZWVkRW5hYmxlID8gY29tcG9uZW50Lmluc3RhbmNlLmVudGVyRWRpdE1vZGUoKSA6IGNvbXBvbmVudC5pbnN0YW5jZS5sZWF2ZUVkaXRNb2RlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRVbmlxdWVQYWdlVHlwZXMoKTogUGFnZVR5cGVbXSB7XG4gICAgICAgIGNvbnN0IGVkZ2VDb21wb25lbnRzID0gWy4uLnRoaXMuaGVhZGVyc0NvbXBvbmVudHMsIC4uLnRoaXMuZm9vdGVyc0NvbXBvbmVudHNdO1xuICAgICAgICByZXR1cm4gWy4uLm5ldyBTZXQoZWRnZUNvbXBvbmVudHMubWFwKHggPT4geC5pbnN0YW5jZS5tb2RlbC5wYWdlVHlwZSkpXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbXBvbmVudHMoXG4gICAgICAgIGVkZ2VNb2RlbHM6IEVkZ2VNb2RlbFtdLFxuICAgICAgICBwYWdlV2lkdGg6IG51bWJlcixcbiAgICAgICAgbWFyZ2luczogTWFyZ2luTW9kZWwsXG4gICAgICAgIHR5cGU6IEVkZ2VUeXBlXG4gICAgKTogQ29tcG9uZW50UmVmPE5vZGVyRWRnZUNvbXBvbmVudD5bXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdENvbXBvbmVudHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgbW9kZWwgb2YgZWRnZU1vZGVscykge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50KE5vZGVyRWRnZUNvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgICAgICAgIG1hcmdpbnMsXG4gICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogcGFnZVdpZHRoLFxuICAgICAgICAgICAgICAgIGdlbmVyYWxQcm9wZXJ0aWVzOiB0aGlzLmdlbmVyYWxQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgIHBhcmVudFNlc3Npb25JZDogdGhpcy5wYXJlbnRTZXNzaW9uSWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnJlbmRlcmVyLnJlbmRlckNoYW5nZXMobmV3IFJlbmRlckNoYW5nZXNNb2RlbCh7IHRleHQ6IHRydWUgfSkpO1xuICAgICAgICAgICAgcmVzdWx0Q29tcG9uZW50cy5wdXNoKGNvbXBvbmVudFJlZik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0Q29tcG9uZW50cztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbXBvbmVudChlZGdlQ29tcG9uZW50czogQ29tcG9uZW50UmVmPE5vZGVyRWRnZUNvbXBvbmVudD5bXSwgcGFnZTogbnVtYmVyKTogQ29tcG9uZW50UmVmPE5vZGVyRWRnZUNvbXBvbmVudD4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0Q29tcG9uZW50ID0gZWRnZUNvbXBvbmVudHMuZmluZCh4ID0+IHguaW5zdGFuY2UubW9kZWwucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkRlZmF1bHQpO1xuICAgICAgICBpZiAocGFnZSA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGVkZ2VDb21wb25lbnRzLmZpbmQoeCA9PiB4Lmluc3RhbmNlLm1vZGVsLnBhZ2VUeXBlID09PSBQYWdlVHlwZS5GaXJzdCkgfHwgZGVmYXVsdENvbXBvbmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhcmdldFR5cGUgPSBwYWdlICUgMiA9PT0gMCA/IFBhZ2VUeXBlLkV2ZW4gOiBQYWdlVHlwZS5EZWZhdWx0O1xuICAgICAgICByZXR1cm4gZWRnZUNvbXBvbmVudHMuZmluZCh4ID0+IHguaW5zdGFuY2UubW9kZWwucGFnZVR5cGUgPT09IHRhcmdldFR5cGUpIHx8IGRlZmF1bHRDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRFZGdlTmFtZVRvQ29tcG9uZW50cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWRnZUNvbXBvbmVudHMgPSBbLi4udGhpcy5oZWFkZXJzQ29tcG9uZW50cywgLi4udGhpcy5mb290ZXJzQ29tcG9uZW50c107XG4gICAgICAgIGlmICghZWRnZUNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc0V2ZW5FZGdlc0V4aXN0ID0gZWRnZUNvbXBvbmVudHMuc29tZSh4ID0+IHguaW5zdGFuY2UubW9kZWwucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkV2ZW4pO1xuICAgICAgICBmb3IgKGxldCBjb21wb25lbnQgb2YgZWRnZUNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC5pbnN0YW5jZS50eXBlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID0gdGhpcy5nZXRFZGdlTmFtZUJ5VHlwZShjb21wb25lbnQuaW5zdGFuY2UsIGlzRXZlbkVkZ2VzRXhpc3QpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFZGdlTmFtZUJ5VHlwZShjb21wb25lbnQ6IE5vZGVyRWRnZUNvbXBvbmVudCwgaXNFdmVuRWRnZXNFeGlzdDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGxldCBlZGdlTmFtZSA9IGNvbXBvbmVudC50eXBlID09PSBFZGdlVHlwZS5IZWFkZXIgPyAnSGVhZGVyJyA6ICdGb290ZXInO1xuICAgICAgICBpZiAoY29tcG9uZW50Lm1vZGVsLnBhZ2VUeXBlID09PSBQYWdlVHlwZS5GaXJzdCkge1xuICAgICAgICAgICAgZWRnZU5hbWUgPSBgRmlyc3QgUGFnZSAke2VkZ2VOYW1lfWA7XG4gICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50Lm1vZGVsLnBhZ2VUeXBlID09PSBQYWdlVHlwZS5FdmVuKSB7XG4gICAgICAgICAgICBlZGdlTmFtZSA9IGBFdmVuIFBhZ2VzICR7ZWRnZU5hbWV9YDtcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnQubW9kZWwucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkRlZmF1bHQgJiYgaXNFdmVuRWRnZXNFeGlzdCkge1xuICAgICAgICAgICAgZWRnZU5hbWUgPSBgT2RkIFBhZ2VzICR7ZWRnZU5hbWV9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlZGdlTmFtZTtcbiAgICB9XG59XG4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvY29tcG9uZW50cy9lZGdlcy9lZGdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV4RSxNQUFNLE9BQU8sS0FBSztJQUtkLFlBQ1ksZ0JBQWtDLEVBQzFDLE9BQW9CLEVBQ3BCLE9BQW9CLEVBQ3BCLE9BQW9CLEVBQ3BCLFNBQWlCLEVBQ1QsZUFBdUIsRUFDdkIsaUJBQXlDO1FBTnpDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFLbEMsb0JBQWUsR0FBZixlQUFlLENBQVE7UUFDdkIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF3QjtRQVhyRCxzQkFBaUIsR0FBdUMsRUFBRSxDQUFDO1FBRTNELHNCQUFpQixHQUF1QyxFQUFFLENBQUM7UUFXdkQsSUFBSSxPQUFPLEVBQUU7WUFDVCxNQUFNLGFBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3RHO1FBRUQsSUFBSSxPQUFPLEVBQUU7WUFDVCxNQUFNLGFBQWEsR0FBRyxJ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Q0FBQyxPQUFPLElBQUksZ0JBQWdCLEVBQUU7WUFDMUUsUUFBUSxHQUFHLGFBQWEsUUFBUSxFQUFFLENBQUM7U0FDdEM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBFZGdlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2VkZ2UubW9kZWwnO1xuaW1wb3J0IHsgRWRnZVR5cGUgfSBmcm9tICcuL2VkZ2UtdHlwZS5lbnVtJztcbmltcG9ydCB7IEdlbmVyYWxQcm9wZXJ0aWVzTW9kZWwgfSBmcm9tICcuLi8uLi9jb250ZW50L2Rpc3BsYXktZGF0YS9nZW5lcmFsLXByb3BlcnRpZXMubW9kZWwnO1xuaW1wb3J0IHsgTWFyZ2luTW9kZWwgfSBmcm9tICcuLi8uLi9jb250ZW50L21hcmdpbi5tb2RlbCc7XG5pbXBvcnQgeyBOb2RlckVkZ2VDb21wb25lbnQgfSBmcm9tICcuL2VkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2VUeXBlIH0gZnJvbSAnLi9wYWdlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBSZW5kZXJDaGFuZ2VzTW9kZWwgfSBmcm9tICcuLi8uLi9kaXNwbGF5L3JlbmRlci1jaGFuZ2VzLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEVkZ2VzIHtcbiAgICBoZWFkZXJzQ29tcG9uZW50czogQ29tcG9uZW50UmVmPE5vZGVyRWRnZUNvbXBvbmVudD5bXSA9IFtdO1xuXG4gICAgZm9vdGVyc0NvbXBvbmVudHM6IENvbXBvbmVudFJlZjxOb2RlckVkZ2VDb21wb25lbnQ+W10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNvbXBvbmVudFNlcnZpY2U6IENvbXBvbmVudFNlcnZpY2UsXG4gICAgICAgIGhlYWRlcnM6IEVkZ2VNb2RlbFtdLFxuICAgICAgICBmb290ZXJzOiBFZGdlTW9kZWxbXSxcbiAgICAgICAgbWFyZ2luczogTWFyZ2luTW9kZWwsXG4gICAgICAgIHBhZ2VXaWR0aDogbnVtYmVyLFxuICAgICAgICBwcml2YXRlIHBhcmVudFNlc3Npb25JZDogbnVtYmVyLFxuICAgICAgICBwcml2YXRlIGdlbmVyYWxQcm9wZXJ0aWVzOiBHZW5lcmFsUHJvcGVydGllc01vZGVsXG4gICAgKSB7XG4gICAgICAgIGlmIChoZWFkZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJNYXJnaW5zID0gbmV3IE1hcmdpbk1vZGVsKHsgLi4ubWFyZ2lucywgYm90dG9tOiAwIH0pO1xuICAgICAgICAgICAgdGhpcy5oZWFkZXJzQ29tcG9uZW50cyA9IHRoaXMuY3JlYXRlQ29tcG9uZW50cyhoZWFkZXJzLCBwYWdlV2lkdGgsIGhlYWRlck1hcmdpbnMsIEVkZ2VUeXBlLkhlYWRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9vdGVycykge1xuICAgICAgICAgICAgY29uc3QgZm9vdGVyTWFyZ2lucyA9IG5ldyBNYXJnaW5Nb2RlbCh7IC4uLm1hcmdpbnMsIHRvcDogMCB9KTtcbiAgICAgICAgICAgIHRoaXMuZm9vdGVyc0NvbXBvbmVudHMgPSB0aGlzLmNyZWF0ZUNvbXBvbmVudHMoZm9vdGVycywgcGFnZVdpZHRoLCBmb290ZXJNYXJnaW5zLCBFZGdlVHlwZS5Gb290ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRFZGdlTmFtZVRvQ29tcG9uZW50cygpO1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudEJ5UGFnZShwYWdlOiBudW1iZXIsIHR5cGU6IEVkZ2VUeXBlKTogQ29tcG9uZW50UmVmPE5vZGVyRWRnZUNvbXBvbmVudD4ge1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gdHlwZSA9PT0gRWRnZVR5cGUuSGVhZGVyID8gdGhpcy5oZWFkZXJzQ29tcG9uZW50cyA6IHRoaXMuZm9vdGVyc0NvbXBvbmVudHM7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbXBvbmVudChjb21wb25lbnRzLCBwYWdlKTtcbiAgICB9XG5cbiAgICBnZXRDb21wb25lbnRCeVBhZ2VUeXBlKHBhZ2VUeXBlOiBQYWdlVHlwZSwgdHlwZTogRWRnZVR5cGUpOiBDb21wb25lbnRSZWY8Tm9kZXJFZGdlQ29tcG9uZW50PiB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0eXBlID09PSBFZGdlVHlwZS5IZWFkZXIgPyB0aGlzLmhlYWRlcnNDb21wb25lbnRzIDogdGhpcy5mb290ZXJzQ29tcG9uZW50cztcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudHMuZmluZCh4ID0+IHguaW5zdGFuY2UubW9kZWwucGFnZVR5cGUgPT09IHBhZ2VUeXBlKTtcbiAgICB9XG5cbiAgICBnZXRDb21wb25lbnRIZWlnaHRCeVBhZ2VUeXBlKHBhZ2VUeXBlOiBQYWdlVHlwZSwgdHlwZTogRWRnZVR5cGUpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmdldENvbXBvbmVudEJ5UGFnZVR5cGUocGFnZVR5cGUsIHR5cGUpO1xuICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcG9uZW50Lmluc3RhbmNlLmhlaWdodCA+IHRoaXMuZ2VuZXJhbFByb3BlcnRpZXMubWF4RWRnZUhlaWdodFxuICAgICAgICAgICAgPyB0aGlzLmdlbmVyYWxQcm9wZXJ0aWVzLm1heEVkZ2VIZWlnaHRcbiAgICAgICAgICAgIDogY29tcG9uZW50Lmluc3RhbmNlLmhlaWdodDtcbiAgICB9XG5cbiAgICBnZXRDb21wb25lbnRIZWlnaHQocGFnZTogbnVtYmVyLCB0eXBlOiBFZGdlVHlwZSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0eXBlID09PSBFZGdlVHlwZS5IZWFkZXIgPyB0aGlzLmhlYWRlcnNDb21wb25lbnRzIDogdGhpcy5mb290ZXJzQ29tcG9uZW50cztcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5nZXRDb21wb25lbnQoY29tcG9uZW50cywgcGFnZSk7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21wb25lbnQuaW5zdGFuY2UuaGVpZ2h0ID4gdGhpcy5nZW5lcmFsUHJvcGVydGllcy5tYXhFZGdlSGVpZ2h0XG4gICAgICAgICAgICA/IHRoaXMuZ2VuZXJhbFByb3BlcnRpZXMubWF4RWRnZUhlaWdodFxuICAgICAgICAgICAgOiBjb21wb25lbnQuaW5zdGFuY2UuaGVpZ2h0O1xuICAgIH1cblxuICAgIHRvZ2dsZUVkaXRNb2RlKG5lZWRFbmFibGU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgZWRnZUNvbXBvbmVudHMgPSBbLi4udGhpcy5oZWFkZXJzQ29tcG9uZW50cywgLi4udGhpcy5mb290ZXJzQ29tcG9uZW50c107XG4gICAgICAgIGZvciAobGV0IGNvbXBvbmVudCBvZiBlZGdlQ29tcG9uZW50cykge1xuICAgICAgICAgICAgbmVlZEVuYWJsZSA/IGNvbXBvbmVudC5pbnN0YW5jZS5lbnRlckVkaXRNb2RlKCkgOiBjb21wb25lbnQuaW5zdGFuY2UubGVhdmVFZGl0TW9kZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VW5pcXVlUGFnZVR5cGVzKCk6IFBhZ2VUeXBlW10ge1xuICAgICAgICBjb25zdCBlZGdlQ29tcG9uZW50cyA9IFsuLi50aGlzLmhlYWRlcnNDb21wb25lbnRzLCAuLi50aGlzLmZvb3RlcnNDb21wb25lbnRzXTtcbiAgICAgICAgcmV0dXJuIFsuLi5uZXcgU2V0KGVkZ2VDb21wb25lbnRzLm1hcCh4ID0+IHguaW5zdGFuY2UubW9kZWwucGFnZVR5cGUpKV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb21wb25lbnRzKFxuICAgICAgICBlZGdlTW9kZWxzOiBFZGdlTW9kZWxbXSxcbiAgICAgICAgcGFnZVdpZHRoOiBudW1iZXIsXG4gICAgICAgIG1hcmdpbnM6IE1hcmdpbk1vZGVsLFxuICAgICAgICB0eXBlOiBFZGdlVHlwZVxuICAgICk6IENvbXBvbmVudFJlZjxOb2RlckVkZ2VDb21wb25lbnQ+W10ge1xuICAgICAgICBjb25zdCByZXN1bHRDb21wb25lbnRzID0gW107XG4gICAgICAgIGNvbnN0IGhhc0ZpcnN0RWRnZSA9IGVkZ2VNb2RlbHMuc29tZShlZGdlID0+IGVkZ2UucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkZpcnN0KTtcbiAgICAgICAgZm9yIChsZXQgbW9kZWwgb2YgZWRnZU1vZGVscy5zb3J0KCh4LCB5KSA9PiB7XG4gICAgICAgICAgICBpZiAoaGFzRmlyc3RFZGdlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHgucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkZpcnN0KSByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgaWYgKHkucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkZpcnN0KSByZXR1cm4gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHgucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkRlZmF1bHQpIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICBpZiAoeS5wYWdlVHlwZSA9PT0gUGFnZVR5cGUuRGVmYXVsdCkgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeC5wYWdlVHlwZSA9PT0gUGFnZVR5cGUuRXZlbikgcmV0dXJuIC0xO1xuICAgICAgICAgICAgaWYgKHkucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkV2ZW4pIHJldHVybiAxO1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0pKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZ2VuZXJhdGVDb21wb25lbnQoTm9kZXJFZGdlQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgbWFyZ2lucyxcbiAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBwYWdlV2lkdGgsXG4gICAgICAgICAgICAgICAgZ2VuZXJhbFByb3BlcnRpZXM6IHRoaXMuZ2VuZXJhbFByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgcGFyZW50U2Vzc2lvbklkOiB0aGlzLnBhcmVudFNlc3Npb25JZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucmVuZGVyZXIucmVuZGVyQ2hhbmdlcyhuZXcgUmVuZGVyQ2hhbmdlc01vZGVsKHsgdGV4dDogdHJ1ZSB9KSk7XG4gICAgICAgICAgICByZXN1bHRDb21wb25lbnRzLnB1c2goY29tcG9uZW50UmVmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRDb21wb25lbnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29tcG9uZW50KGVkZ2VDb21wb25lbnRzOiBDb21wb25lbnRSZWY8Tm9kZXJFZGdlQ29tcG9uZW50PltdLCBwYWdlOiBudW1iZXIpOiBDb21wb25lbnRSZWY8Tm9kZXJFZGdlQ29tcG9uZW50PiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRDb21wb25lbnQgPSBlZGdlQ29tcG9uZW50cy5maW5kKHggPT4geC5pbnN0YW5jZS5tb2RlbC5wYWdlVHlwZSA9PT0gUGFnZVR5cGUuRGVmYXVsdCk7XG4gICAgICAgIGlmIChwYWdlID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZWRnZUNvbXBvbmVudHMuZmluZCh4ID0+IHguaW5zdGFuY2UubW9kZWwucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkZpcnN0KSB8fCBkZWZhdWx0Q29tcG9uZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0VHlwZSA9IHBhZ2UgJSAyID09PSAwID8gUGFnZVR5cGUuRXZlbiA6IFBhZ2VUeXBlLkRlZmF1bHQ7XG4gICAgICAgIHJldHVybiBlZGdlQ29tcG9uZW50cy5maW5kKHggPT4geC5pbnN0YW5jZS5tb2RlbC5wYWdlVHlwZSA9PT0gdGFyZ2V0VHlwZSkgfHwgZGVmYXVsdENvbXBvbmVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEVkZ2VOYW1lVG9Db21wb25lbnRzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlZGdlQ29tcG9uZW50cyA9IFsuLi50aGlzLmhlYWRlcnNDb21wb25lbnRzLCAuLi50aGlzLmZvb3RlcnNDb21wb25lbnRzXTtcbiAgICAgICAgaWYgKCFlZGdlQ29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzRXZlbkVkZ2VzRXhpc3QgPSBlZGdlQ29tcG9uZW50cy5zb21lKHggPT4geC5pbnN0YW5jZS5tb2RlbC5wYWdlVHlwZSA9PT0gUGFnZVR5cGUuRXZlbik7XG4gICAgICAgIGZvciAobGV0IGNvbXBvbmVudCBvZiBlZGdlQ29tcG9uZW50cykge1xuICAgICAgICAgICAgY29tcG9uZW50Lmluc3RhbmNlLnR5cGVDb250YWluZXIubmF0aXZlRWxlbWVudC5pbm5lclRleHQgPSB0aGlzLmdldEVkZ2VOYW1lQnlUeXBlKGNvbXBvbmVudC5pbnN0YW5jZSwgaXNFdmVuRWRnZXNFeGlzdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEVkZ2VOYW1lQnlUeXBlKGNvbXBvbmVudDogTm9kZXJFZGdlQ29tcG9uZW50LCBpc0V2ZW5FZGdlc0V4aXN0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGVkZ2VOYW1lID0gY29tcG9uZW50LnR5cGUgPT09IEVkZ2VUeXBlLkhlYWRlciA/ICdIZWFkZXInIDogJ0Zvb3Rlcic7XG4gICAgICAgIGlmIChjb21wb25lbnQubW9kZWwucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkZpcnN0KSB7XG4gICAgICAgICAgICBlZGdlTmFtZSA9IGBGaXJzdCBQYWdlICR7ZWRnZU5hbWV9YDtcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnQubW9kZWwucGFnZVR5cGUgPT09IFBhZ2VUeXBlLkV2ZW4pIHtcbiAgICAgICAgICAgIGVkZ2VOYW1lID0gYEV2ZW4gUGFnZXMgJHtlZGdlTmFtZX1gO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudC5tb2RlbC5wYWdlVHlwZSA9PT0gUGFnZVR5cGUuRGVmYXVsdCAmJiBpc0V2ZW5FZGdlc0V4aXN0KSB7XG4gICAgICAgICAgICBlZGdlTmFtZSA9IGBPZGQgUGFnZXMgJHtlZGdlTmFtZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVkZ2VOYW1lO1xuICAgIH1cbn1cbiJdfQ==
@@ -3,12 +3,15 @@ export class ImageInputHandler {
3
3
  constructor(editorService, image) {
4
4
  this.editorService = editorService;
5
5
  this.image = image;
6
+ this.imageComponentTagName = 'APP-NOD-IMAGE';
6
7
  this.undoRedoActions = {};
7
8
  this.imageKeyDownSubscription = fromEvent(document, 'keydown').subscribe(event => this.onKeyDown(event));
9
+ this.clickSubscription = fromEvent(document, 'click').subscribe(event => this.onClick(event.target));
8
10
  this.fillUndoRedoActions();
9
11
  }
10
12
  destroy() {
11
13
  this.imageKeyDownSubscription?.unsubscribe();
14
+ this.clickSubscription?.unsubscribe();
12
15
  }
13
16
  onKeyDown(event) {
14
17
  if (this.editorService.isViewOnly) {
@@ -22,6 +25,10 @@ export class ImageInputHandler {
22
25
  if (this.undoRedoActions[keyCombination] && !this.editorService.isViewOnly) {
23
26
  this.undoRedoActions[keyCombination]();
24
27
  event.preventDefault();
28
+ return;
29
+ }
30
+ if (!event.ctrlKey && !event.altKey && !event.shiftKey && !event.metaKey && event.key.length === 1) {
31
+ this.editorService.insertText(event.key);
25
32
  }
26
33
  }
27
34
  getKeyCombination(event) {
@@ -34,5 +41,15 @@ export class ImageInputHandler {
34
41
  this.undoRedoActions['Ctrl-KeyY'] = () => this.editorService.redo();
35
42
  this.undoRedoActions['Command-KeyY'] = () => this.editorService.redo();
36
43
  }
44
+ onClick(element) {
45
+ let currentElement = element;
46
+ while (currentElement) {
47
+ if (currentElement.tagName === this.imageComponentTagName) {
48
+ return;
49
+ }
50
+ currentElement = currentElement.parentElement;
51
+ }
52
+ this.editorService.blurCustomComponent();
53
+ }
37
54
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtaW5wdXQuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9jb21wb25lbnRzL2ltYWdlL2lucHV0LWhhbmRsZXIvaW1hZ2UtaW5wdXQuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUsvQyxNQUFNLE9BQU8saUJBQWlCO0lBSzFCLFlBQTZCLGFBQTRCLEVBQW1CLEtBQTBCO1FBQXpFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQW1CLFVBQUssR0FBTCxLQUFLLENBQXFCO1FBSnJGLG9CQUFlLEdBQWtDLEVBQUUsQ0FBQztRQUtqRSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsU0FBUyxDQUFnQixRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3hILElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFTyxTQUFTLENBQUMsS0FBb0I7UUFDbEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRTtZQUMvQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2RCxPQUFPO1NBQ1Y7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDeEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFvQjtRQUMxQyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3QyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2RSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmFjdGlvbi9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlckltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9pbWFnZS5jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgSW1hZ2VJbnB1dEhhbmRsZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5kb1JlZG9BY3Rpb25zOiB7IFtrZXk6IHN0cmluZ106ICgpID0+IHZvaWQgfSA9IHt9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbWFnZUtleURvd25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBpbWFnZTogTm9kZXJJbWFnZUNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLmltYWdlS2V5RG93blN1YnNjcmlwdGlvbiA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKS5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5vbktleURvd24oZXZlbnQpKTtcbiAgICAgICAgdGhpcy5maWxsVW5kb1JlZG9BY3Rpb25zKCk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbWFnZUtleURvd25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5pc1ZpZXdPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoWydCYWNrc3BhY2UnLCAnRGVsZXRlJ10uaW5jbHVkZXMoZXZlbnQuY29kZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5yZW1vdmVJbWFnZSh0aGlzLmltYWdlLmluc2VydEluZGV4KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleUNvbWJpbmF0aW9uID0gdGhpcy5nZXRLZXlDb21iaW5hdGlvbihldmVudCk7XG4gICAgICAgIGlmICh0aGlzLnVuZG9SZWRvQWN0aW9uc1trZXlDb21iaW5hdGlvbl0gJiYgIXRoaXMuZWRpdG9yU2VydmljZS5pc1ZpZXdPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLnVuZG9SZWRvQWN0aW9uc1trZXlDb21iaW5hdGlvbl0oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEtleUNvbWJpbmF0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGV2ZW50Lm1ldGFLZXkgPyAnQ29tbWFuZC0nIDogJyc7XG4gICAgICAgIHJldHVybiBldmVudC5jdHJsS2V5ID8gYCR7cmVzdWx0fUN0cmwtJHtldmVudC5jb2RlfWAgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbGxVbmRvUmVkb0FjdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudW5kb1JlZG9BY3Rpb25zWydDdHJsLUtleVonXSA9ICgpID0+IHRoaXMuZWRpdG9yU2VydmljZS51bmRvKCk7XG4gICAgICAgIHRoaXMudW5kb1JlZG9BY3Rpb25zWydDb21tYW5kLUtleVonXSA9ICgpID0+IHRoaXMuZWRpdG9yU2VydmljZS51bmRvKCk7XG4gICAgICAgIHRoaXMudW5kb1JlZG9BY3Rpb25zWydDdHJsLUtleVknXSA9ICgpID0+IHRoaXMuZWRpdG9yU2VydmljZS5yZWRvKCk7XG4gICAgICAgIHRoaXMudW5kb1JlZG9BY3Rpb25zWydDb21tYW5kLUtleVknXSA9ICgpID0+IHRoaXMuZWRpdG9yU2VydmljZS5yZWRvKCk7XG4gICAgfVxufVxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtaW5wdXQuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9jb21wb25lbnRzL2ltYWdlL2lucHV0LWhhbmRsZXIvaW1hZ2UtaW5wdXQuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUsvQyxNQUFNLE9BQU8saUJBQWlCO0lBUzFCLFlBQTZCLGFBQTRCLEVBQW1CLEtBQTBCO1FBQXpFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQW1CLFVBQUssR0FBTCxLQUFLLENBQXFCO1FBUjdGLDBCQUFxQixHQUFHLGVBQWUsQ0FBQztRQUVoQyxvQkFBZSxHQUFrQyxFQUFFLENBQUM7UUFPakUsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFNBQVMsQ0FBZ0IsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4SCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFnQixRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBcUIsQ0FBQyxDQUFDLENBQUM7UUFDbkksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBb0I7UUFDbEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRTtZQUMvQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2RCxPQUFPO1NBQ1Y7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDeEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQW9CO1FBQzFDLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzdDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDOUQsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwRSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVPLE9BQU8sQ0FBQyxPQUFvQjtRQUNoQyxJQUFJLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDN0IsT0FBTyxjQUFjLEVBQUU7WUFDbkIsSUFBSSxjQUFjLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtnQkFDdkQsT0FBTzthQUNWO1lBQ0QsY0FBYyxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUM7U0FDakQ7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyYWN0aW9uL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVySW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ltYWdlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjbGFzcyBJbWFnZUlucHV0SGFuZGxlciB7XG4gICAgcmVhZG9ubHkgaW1hZ2VDb21wb25lbnRUYWdOYW1lID0gJ0FQUC1OT0QtSU1BR0UnO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSB1bmRvUmVkb0FjdGlvbnM6IHsgW2tleTogc3RyaW5nXTogKCkgPT4gdm9pZCB9ID0ge307XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGltYWdlS2V5RG93blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjbGlja1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IGltYWdlOiBOb2RlckltYWdlQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuaW1hZ2VLZXlEb3duU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpLnN1YnNjcmliZShldmVudCA9PiB0aGlzLm9uS2V5RG93bihldmVudCkpO1xuICAgICAgICB0aGlzLmNsaWNrU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAnY2xpY2snKS5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5vbkNsaWNrKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpO1xuICAgICAgICB0aGlzLmZpbGxVbmRvUmVkb0FjdGlvbnMoKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlS2V5RG93blN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5jbGlja1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmlzVmlld09ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChbJ0JhY2tzcGFjZScsICdEZWxldGUnXS5pbmNsdWRlcyhldmVudC5jb2RlKSkge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnJlbW92ZUltYWdlKHRoaXMuaW1hZ2UuaW5zZXJ0SW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2V5Q29tYmluYXRpb24gPSB0aGlzLmdldEtleUNvbWJpbmF0aW9uKGV2ZW50KTtcbiAgICAgICAgaWYgKHRoaXMudW5kb1JlZG9BY3Rpb25zW2tleUNvbWJpbmF0aW9uXSAmJiAhdGhpcy5lZGl0b3JTZXJ2aWNlLmlzVmlld09ubHkpIHtcbiAgICAgICAgICAgIHRoaXMudW5kb1JlZG9BY3Rpb25zW2tleUNvbWJpbmF0aW9uXSgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuYWx0S2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQubWV0YUtleSAmJiBldmVudC5rZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuaW5zZXJ0VGV4dChldmVudC5rZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRLZXlDb21iaW5hdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBldmVudC5tZXRhS2V5ID8gJ0NvbW1hbmQtJyA6ICcnO1xuICAgICAgICByZXR1cm4gZXZlbnQuY3RybEtleSA/IGAke3Jlc3VsdH1DdHJsLSR7ZXZlbnQuY29kZX1gIDogJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWxsVW5kb1JlZG9BY3Rpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuZG9SZWRvQWN0aW9uc1snQ3RybC1LZXlaJ10gPSAoKSA9PiB0aGlzLmVkaXRvclNlcnZpY2UudW5kbygpO1xuICAgICAgICB0aGlzLnVuZG9SZWRvQWN0aW9uc1snQ29tbWFuZC1LZXlaJ10gPSAoKSA9PiB0aGlzLmVkaXRvclNlcnZpY2UudW5kbygpO1xuICAgICAgICB0aGlzLnVuZG9SZWRvQWN0aW9uc1snQ3RybC1LZXlZJ10gPSAoKSA9PiB0aGlzLmVkaXRvclNlcnZpY2UucmVkbygpO1xuICAgICAgICB0aGlzLnVuZG9SZWRvQWN0aW9uc1snQ29tbWFuZC1LZXlZJ10gPSAoKSA9PiB0aGlzLmVkaXRvclNlcnZpY2UucmVkbygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25DbGljayhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBsZXQgY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB3aGlsZSAoY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC50YWdOYW1lID09PSB0aGlzLmltYWdlQ29tcG9uZW50VGFnTmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuYmx1ckN1c3RvbUNvbXBvbmVudCgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -2,8 +2,6 @@ import { Injectable } from '@angular/core';
2
2
  import { CUSTOM_ELEMENT_MARKER, TABLE_MARKER } from '../custom-content-markers.const';
3
3
  import { DEFAULT_PARAGRAPH_STYLE } from '../../../content/constants/editor.const';
4
4
  import { DisplayToken } from '../../../content/display-data/display-token.model';
5
- import { DocxModel } from '../../../../models/generated/docx.model';
6
- import { Edges } from '../../edges/edges';
7
5
  import { EXTERNAL_ELEMENT_SERVICE } from '../../external-element/external-elements.const';
8
6
  import { NoderImageComponent } from '../../image/components/image.component';
9
7
  import { NoderTabComponent } from '../../tab/tab.component';
@@ -16,51 +14,34 @@ export class CustomContentService {
16
14
  this.injector = injector;
17
15
  this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;
18
16
  }
19
- generateComponents(model, sessionId, generalProperties, document) {
20
- const contentWidth = document.pageWidth - (document.pageMargin.left + document.pageMargin.right);
21
- return {
22
- images: this.componentService.generateComponents(NoderImageComponent, model?.images || [], x => {
23
- return { image: x, sessionId, generalProperties };
24
- }),
25
- tables: this.componentService.generateComponents(NoderTableComponent, model?.tables || [], x => {
26
- return { table: x, sessionId, generalProperties };
27
- }),
28
- tabs: this.componentService.generateComponents(NoderTabComponent, model?.tabs || [], x => {
29
- return { tab: x, sessionId, generalProperties };
30
- }),
31
- customElements: this.generateElementComponents(model?.elements || [], sessionId, contentWidth),
32
- edges: model instanceof DocxModel
33
- ? new Edges(this.componentService, model.headers, model.footers, document.pageMargin, document.pageWidth, sessionId, generalProperties)
34
- : null
35
- };
36
- }
37
- getOrGenerateComponent(model, components, sessionId, generalProperties, contentWidth, charIndex, char) {
38
- if (char !== CUSTOM_ELEMENT_MARKER && char !== TABLE_MARKER) {
39
- return null;
40
- }
41
- const component = this.getComponent(components, char, charIndex);
42
- if (component) {
43
- return component;
44
- }
17
+ generateComponent(model, components, sessionId, generalProperties, contentWidth, charIndex) {
45
18
  const image = model.images.find(x => x.insertIndex === charIndex);
46
19
  if (image) {
47
- return this.componentService.generateComponent(NoderImageComponent, { image, sessionId, generalProperties });
20
+ const component = this.componentService.generateComponent(NoderImageComponent, { image, sessionId, generalProperties });
21
+ components.images.push(component);
22
+ return component;
48
23
  }
49
24
  const table = model.tables.find(x => x.insertIndex === charIndex);
50
25
  if (table) {
51
- return this.componentService.generateComponent(NoderTableComponent, { table, sessionId, generalProperties });
26
+ const component = this.componentService.generateComponent(NoderTableComponent, { table, sessionId, generalProperties });
27
+ components.tables.push(component);
28
+ return component;
52
29
  }
53
30
  const tab = model.tabs.find(x => x.insertIndex === charIndex);
54
31
  if (tab) {
55
- return this.componentService.generateComponent(NoderTabComponent, { tab, sessionId, generalProperties });
32
+ const component = this.componentService.generateComponent(NoderTabComponent, { tab, sessionId, generalProperties });
33
+ components.tabs.push(component);
34
+ return component;
56
35
  }
57
- const element = model.elements.find(x => x.insertIndex === charIndex);
58
- if (element) {
59
- return this.componentService.generateComponent(this.findComponentType(element.type), {
60
- content: element,
36
+ const content = model.elements.find(x => x.insertIndex === charIndex);
37
+ if (content) {
38
+ const component = this.componentService.generateComponent(this.findComponentType(content.type), {
39
+ content,
61
40
  sessionId,
62
41
  contentWidth
63
42
  });
43
+ components.customElements.push(component);
44
+ return component;
64
45
  }
65
46
  return null;
66
47
  }
@@ -70,24 +51,6 @@ export class CustomContentService {
70
51
  return this.componentService.generateComponent(type, { content: x, sessionId, contentWidth });
71
52
  });
72
53
  }
73
- addToCustomComponents(components, component, char, charIndex) {
74
- const existed = this.getComponent(components, char, charIndex);
75
- if (existed) {
76
- return;
77
- }
78
- if (component.componentType === NoderImageComponent) {
79
- components.images.push(component);
80
- }
81
- else if (component.componentType === NoderTableComponent) {
82
- components.tables.push(component);
83
- }
84
- else if (component.componentType === NoderTabComponent) {
85
- components.tabs.push(component);
86
- }
87
- else {
88
- components.customElements.push(component);
89
- }
90
- }
91
54
  isFragmentContainComponent(components, textFragment, fragmentDistance) {
92
55
  if (textFragment.includes(CUSTOM_ELEMENT_MARKER)) {
93
56
  return (this.isFragmentContainComponents(components.images, fragmentDistance) ||
@@ -148,11 +111,14 @@ export class CustomContentService {
148
111
  findComponentType(type) {
149
112
  return this.elements.find(x => x.type === type).componentType;
150
113
  }
114
+ findComponent(components, insertIndex) {
115
+ return components.find((x) => x.instance.insertIndex === insertIndex);
116
+ }
151
117
  isFragmentContainComponents(components, distance) {
152
118
  return components.some(x => x.instance.insertIndex >= distance.start && x.instance.insertIndex <= distance.end);
153
119
  }
154
- findComponent(components, insertIndex) {
155
- return components.find((x) => x.instance.insertIndex === insertIndex);
120
+ isSpecialMarker(char) {
121
+ return char === CUSTOM_ELEMENT_MARKER || char === TABLE_MARKER;
156
122
  }
157
123
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomContentService, deps: [{ token: i1.ComponentService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
158
124
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomContentService }); }
@@ -160,4 +126,4 @@ export class CustomContentService {
160
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomContentService, decorators: [{
161
127
  type: Injectable
162
128
  }], ctorParameters: () => [{ type: i1.ComponentService }, { type: i0.Injector }] });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbnRlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9jb21wb25lbnRzL3NoYXJlZC9zZXJ2aWNlcy9jdXN0b20tY29udGVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsVUFBVSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUt6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBR2pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFNMUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUc3RSxNQUFNLE9BQU8sb0JBQW9CO0lBRzdCLFlBQW1CLGdCQUFrQyxFQUFVLFFBQWtCO1FBQTlELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzdFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDekUsQ0FBQztJQUVELGtCQUFrQixDQUNkLEtBQXdCLEVBQ3hCLFNB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QUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFTyxhQUFhLENBQUksVUFBNkIsRUFBRSxXQUFtQjtRQUN2RSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxDQUFDO0lBQy9FLENBQUM7K0dBcE1RLG9CQUFvQjttSEFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlLCBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlTm9kZXJDb21wb25lbnQgfSBmcm9tICcuLi9hYnN0cmFjdC9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi9jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb250ZW50c0ludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uL2NvbnRlbnQvY29udGVudHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IENVU1RPTV9FTEVNRU5UX01BUktFUiwgVEFCTEVfTUFSS0VSIH0gZnJvbSAnLi4vY3VzdG9tLWNvbnRlbnQtbWFya2Vycy5jb25zdCc7XG5pbXBvcnQgeyBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRSB9IGZyb20gJy4uLy4uLy4uL2NvbnRlbnQvY29uc3RhbnRzL2VkaXRvci5jb25zdCc7XG5pbXBvcnQgeyBEaXNwbGF5VG9rZW4gfSBmcm9tICcuLi8uLi8uLi9jb250ZW50L2Rpc3BsYXktZGF0YS9kaXNwbGF5LXRva2VuLm1vZGVsJztcbmltcG9ydCB7IERpc3RhbmNlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9leGVjdXRpb24vZGlzdGFuY2UubW9kZWwnO1xuaW1wb3J0IHsgRG9jdW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jb250ZW50L2Rpc3BsYXktZGF0YS9kb2N1bWVudCc7XG5pbXBvcnQgeyBEb2N4TW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2RvY3gubW9kZWwnO1xuaW1wb3J0IHsgRWRnZXMgfSBmcm9tICcuLi8uLi9lZGdlcy9lZGdlcyc7XG5pbXBvcnQgeyBFbGVtZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2VsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgRVhURVJOQUxfRUxFTUVOVF9TRVJWSUNFIH0gZnJvbSAnLi4vLi4vZXh0ZXJuYWwtZWxlbWVudC9leHRlcm5hbC1lbGVtZW50cy5jb25zdCc7XG5pbXBvcnQgeyBFeHRlcm5hbEVsZW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uL2V4dGVybmFsLWVsZW1lbnQvbW9kZWxzL2V4dGVybmFsLWVsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgR2VuZXJhbFByb3BlcnRpZXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2NvbnRlbnQvZGlzcGxheS1kYXRhL2dlbmVyYWwtcHJvcGVydGllcy5tb2RlbCc7XG5pbXBvcnQgeyBJQ3VzdG9tQ29tcG9uZW50cyB9IGZyb20gJy4uL2N1c3RvbS1jb21wb25lbnRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRm9udE1ldHJpY1NpemUgfSBmcm9tICcuLi8uLi8uLi9nYWRnZXRzL2ZvbnQtbWV0cmljcy9mb250LW1ldHJpYy1zaXplLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaW5lSW5mb01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vY29udGVudC9kaXNwbGF5LWRhdGEvbGluZS1pbmZvLm1vZGVsJztcbmltcG9ydCB7IE5vZGVySW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbWFnZS9jb21wb25lbnRzL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlclRhYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RhYi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVyVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YWJsZS9jb21wb25lbnRzL3RhYmxlLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDdXN0b21Db250ZW50U2VydmljZSB7XG4gICAgZWxlbWVudHM6IEV4dGVybmFsRWxlbWVudE1vZGVsW107XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEVYVEVSTkFMX0VMRU1FTlRfU0VSVklDRSkuZWxlbWVudHM7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVDb21wb25lbnRzKFxuICAgICAgICBtb2RlbDogQ29udGVudHNJbnRlcmZhY2UsXG4gICAgICAgIHNlc3Npb25JZDogbnVtYmVyLFxuICAgICAgICBnZW5lcmFsUHJvcGVydGllczogR2VuZXJhbFByb3BlcnRpZXNNb2RlbCxcbiAgICAgICAgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKTogSUN1c3RvbUNvbXBvbmVudHMge1xuICAgICAgICBjb25zdCBjb250ZW50V2lkdGggPSBkb2N1bWVudC5wYWdlV2lkdGggLSAoZG9jdW1lbnQucGFnZU1hcmdpbi5sZWZ0ICsgZG9jdW1lbnQucGFnZU1hcmdpbi5yaWdodCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuY29tcG9uZW50U2VydmljZS5nZW5lcmF0ZUNvbXBvbmVudHMoTm9kZXJJbWFnZUNvbXBvbmVudCwgbW9kZWw/LmltYWdlcyB8fCBbXSwgeCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaW1hZ2U6IHgsIHNlc3Npb25JZCwgZ2VuZXJhbFByb3BlcnRpZXMgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFibGVzOiB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZ2VuZXJhdGVDb21wb25lbnRzKE5vZGVyVGFibGVDb21wb25lbnQsIG1vZGVsPy50YWJsZXMgfHwgW10sIHggPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHRhYmxlOiB4LCBzZXNzaW9uSWQsIGdlbmVyYWxQcm9wZXJ0aWVzIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhYnM6IHRoaXMuY29tcG9uZW50U2VydmljZS5nZW5lcmF0ZUNvbXBvbmVudHMoTm9kZXJUYWJDb21wb25lbnQsIG1vZGVsPy50YWJzIHx8IFtdLCB4ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB0YWI6IHgsIHNlc3Npb25JZCwgZ2VuZXJhbFByb3BlcnRpZXMgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY3VzdG9tRWxlbWVudHM6IHRoaXMuZ2VuZXJhdGVFbGVtZW50Q29tcG9uZW50cyhtb2RlbD8uZWxlbWVudHMgfHwgW10sIHNlc3Npb25JZCwgY29udGVudFdpZHRoKSxcbiAgICAgICAgICAgIGVkZ2VzOlxuICAgICAgICAgICAgICAgIG1vZGVsIGluc3RhbmNlb2YgRG9jeE1vZGVsXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IEVkZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmZvb3RlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnBhZ2VNYXJnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnBhZ2VXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsUHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0T3JHZW5lcmF0ZUNvbXBvbmVudChcbiAgICAgICAgbW9kZWw6IENvbnRlbnRzSW50ZXJmYWNlLFxuICAgICAgICBjb21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cyxcbiAgICAgICAgc2Vzc2lvbklkOiBudW1iZXIsXG4gICAgICAgIGdlbmVyYWxQcm9wZXJ0aWVzOiBHZW5lcmFsUHJvcGVydGllc01vZGVsLFxuICAgICAgICBjb250ZW50V2lkdGg6IG51bWJlcixcbiAgICAgICAgY2hhckluZGV4OiBudW1iZXIsXG4gICAgICAgIGNoYXI6IHN0cmluZ1xuICAgICk6IENvbXBvbmVudFJlZjxCYXNlTm9kZXJDb21wb25lbnQ+IHwgbnVsbCB7XG4gICAgICAgIGlmIChjaGFyICE9PSBDVVNUT01fRUxFTUVOVF9NQVJLRVIgJiYgY2hhciAhPT0gVEFCTEVfTUFSS0VSKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZ2V0Q29tcG9uZW50KGNvbXBvbmVudHMsIGNoYXIsIGNoYXJJbmRleCk7XG4gICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbWFnZSA9IG1vZGVsLmltYWdlcy5maW5kKHggPT4geC5pbnNlcnRJbmRleCA9PT0gY2hhckluZGV4KTtcbiAgICAgICAgaWYgKGltYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50KE5vZGVySW1hZ2VDb21wb25lbnQsIHsgaW1hZ2UsIHNlc3Npb25JZCwgZ2VuZXJhbFByb3BlcnRpZXMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWJsZSA9IG1vZGVsLnRhYmxlcy5maW5kKHggPT4geC5pbnNlcnRJbmRleCA9PT0gY2hhckluZGV4KTtcbiAgICAgICAgaWYgKHRhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50KE5vZGVyVGFibGVDb21wb25lbnQsIHsgdGFibGUsIHNlc3Npb25JZCwgZ2VuZXJhbFByb3BlcnRpZXMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWIgPSBtb2RlbC50YWJzLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4ID09PSBjaGFySW5kZXgpO1xuICAgICAgICBpZiAodGFiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50KE5vZGVyVGFiQ29tcG9uZW50LCB7IHRhYiwgc2Vzc2lvbklkLCBnZW5lcmFsUHJvcGVydGllcyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBtb2RlbC5lbGVtZW50cy5maW5kKHggPT4geC5pbnNlcnRJbmRleCA9PT0gY2hhckluZGV4KTtcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZ2VuZXJhdGVDb21wb25lbnQodGhpcy5maW5kQ29tcG9uZW50VHlwZShlbGVtZW50LnR5cGUpLCB7XG4gICAgICAgICAgICAgICAgY29udGVudDogZWxlbWVudCxcbiAgICAgICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgY29udGVudFdpZHRoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGdlbmVyYXRlRWxlbWVudENvbXBvbmVudHMoZWxlbWVudHM6IEVsZW1lbnRNb2RlbFtdLCBzZXNzaW9uSWQ6IG51bWJlciwgY29udGVudFdpZHRoOiBudW1iZXIpOiBDb21wb25lbnRSZWY8QmFzZU5vZGVyQ29tcG9uZW50PltdIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRzLm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZpbmRDb21wb25lbnRUeXBlKHgudHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50KHR5cGUsIHsgY29udGVudDogeCwgc2Vzc2lvbklkLCBjb250ZW50V2lkdGggfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZFRvQ3VzdG9tQ29tcG9uZW50cyhjb21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cywgY29tcG9uZW50OiBDb21wb25lbnRSZWY8YW55PiwgY2hhcjogc3RyaW5nLCBjaGFySW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBleGlzdGVkID0gdGhpcy5nZXRDb21wb25lbnQoY29tcG9uZW50cywgY2hhciwgY2hhckluZGV4KTtcbiAgICAgICAgaWYgKGV4aXN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb21wb25lbnQuY29tcG9uZW50VHlwZSA9PT0gTm9kZXJJbWFnZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy5pbWFnZXMucHVzaChjb21wb25lbnQgYXMgQ29tcG9uZW50UmVmPE5vZGVySW1hZ2VDb21wb25lbnQ+KTtcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnQuY29tcG9uZW50VHlwZSA9PT0gTm9kZXJUYWJsZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29tcG9uZW50cy50YWJsZXMucHVzaChjb21wb25lbnQgYXMgQ29tcG9uZW50UmVmPE5vZGVyVGFibGVDb21wb25lbnQ+KTtcbiAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnQuY29tcG9uZW50VHlwZSA9PT0gTm9kZXJUYWJDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMudGFicy5wdXNoKGNvbXBvbmVudCBhcyBDb21wb25lbnRSZWY8Tm9kZXJUYWJDb21wb25lbnQ+KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXBvbmVudHMuY3VzdG9tRWxlbWVudHMucHVzaChjb21wb25lbnQgYXMgQ29tcG9uZW50UmVmPEJhc2VOb2RlckNvbXBvbmVudD4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnQoY29tcG9uZW50czogSUN1c3RvbUNvbXBvbmVudHMsIHRleHRGcmFnbWVudDogc3RyaW5nLCBmcmFnbWVudERpc3RhbmNlOiBEaXN0YW5jZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0ZXh0RnJhZ21lbnQuaW5jbHVkZXMoQ1VTVE9NX0VMRU1FTlRfTUFSS0VSKSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLmlzRnJhZ21lbnRDb250YWluQ29tcG9uZW50cyhjb21wb25lbnRzLmltYWdlcywgZnJhZ21lbnREaXN0YW5jZSkgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmlzRnJhZ21lbnRDb250YWluQ29tcG9uZW50cyhjb21wb25lbnRzLnRhYnMsIGZyYWdtZW50RGlzdGFuY2UpIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZyYWdtZW50Q29udGFpbkNvbXBvbmVudHMoY29tcG9uZW50cy5jdXN0b21FbGVtZW50cywgZnJhZ21lbnREaXN0YW5jZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGV4dEZyYWdtZW50LmluY2x1ZGVzKFRBQkxFX01BUktFUikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRnJhZ21lbnRDb250YWluQ29tcG9uZW50cyhjb21wb25lbnRzLnRhYmxlcywgZnJhZ21lbnREaXN0YW5jZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0Q29tcG9uZW50cyhjb21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cywgZGlzdGFuY2U6IERpc3RhbmNlTW9kZWwpOiBDb21wb25lbnRSZWY8QmFzZU5vZGVyQ29tcG9uZW50PltdIHtcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gY29tcG9uZW50cy5pbWFnZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZS5pbnNlcnRJbmRleCA+PSBkaXN0YW5jZS5zdGFydCAmJiB4Lmluc3RhbmNlLmluc2VydEluZGV4IDw9IGRpc3RhbmNlLmVuZCk7XG4gICAgICAgIGNvbnN0IHRhYmxlcyA9IGNvbXBvbmVudHMudGFibGVzLmZpbHRlcih4ID0+IHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPj0gZGlzdGFuY2Uuc3RhcnQgJiYgeC5pbnN0YW5jZS5pbnNlcnRJbmRleCA8PSBkaXN0YW5jZS5lbmQpO1xuICAgICAgICBjb25zdCB0YWJzID0gY29tcG9uZW50cy50YWJzLmZpbHRlcih4ID0+IHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPj0gZGlzdGFuY2Uuc3RhcnQgJiYgeC5pbnN0YW5jZS5pbnNlcnRJbmRleCA8PSBkaXN0YW5jZS5lbmQpO1xuICAgICAgICBjb25zdCBjdXN0b20gPSBjb21wb25lbnRzLmN1c3RvbUVsZW1lbnRzLmZpbHRlcihcbiAgICAgICAgICAgIHggPT4geC5pbnN0YW5jZS5pbnNlcnRJbmRleCA+PSBkaXN0YW5jZS5zdGFydCAmJiB4Lmluc3RhbmNlLmluc2VydEluZGV4IDw9IGRpc3RhbmNlLmVuZFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gWy4uLmltYWdlcywgLi4udGFibGVzLCAuLi50YWJzLCAuLi5jdXN0b21dLnNvcnQoKGEsIGIpID0+IGEuaW5zdGFuY2UuaW5zZXJ0SW5kZXggLSBiLmluc3RhbmNlLmluc2VydEluZGV4KTtcbiAgICB9XG5cbiAgICBnZXRDb21wb25lbnQoY29tcG9uZW50czogSUN1c3RvbUNvbXBvbmVudHMsIGNoYXI6IHN0cmluZywgY2hhckluZGV4OiBudW1iZXIpOiBDb21wb25lbnRSZWY8QmFzZU5vZGVyQ29tcG9uZW50PiB7XG4gICAgICAgIGlmIChjaGFyID09PSBDVVNUT01fRUxFTUVOVF9NQVJLRVIpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQ29tcG9uZW50KGNvbXBvbmVudHMuaW1hZ2VzLCBjaGFySW5kZXgpID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQ29tcG9uZW50KGNvbXBvbmVudHMudGFicywgY2hhckluZGV4KSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZENvbXBvbmVudChjb21wb25lbnRzLmN1c3RvbUVsZW1lbnRzLCBjaGFySW5kZXgpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZENvbXBvbmVudChjb21wb25lbnRzLnRhYmxlcywgY2hhckluZGV4KTtcbiAgICB9XG5cbiAgICBnZXRUb2tlbkZyb21Db21wb25lbnQoXG4gICAgICAgIGNvbXBvbmVudDogQ29tcG9uZW50UmVmPEJhc2VOb2RlckNvbXBvbmVudD4sXG4gICAgICAgIGxpbmVJbmZvOiBMaW5lSW5mb01vZGVsLFxuICAgICAgICBkaXNwbGF5VmFsdWU6IG51bWJlcixcbiAgICAgICAgaXNGaXJzdDogYm9vbGVhbixcbiAgICAgICAgc2l6ZTogSUZvbnRNZXRyaWNTaXplXG4gICAgKTogRGlzcGxheVRva2VuIHtcbiAgICAgICAgbGV0IGhlaWdodCA9IHNpemUuaGVpZ2h0O1xuICAgICAgICBpZiAoY29tcG9uZW50Lmluc3RhbmNlLmhlaWdodCA+IHNpemUuaGVpZ2h0KSB7XG4gICAgICAgICAgICBoZWlnaHQgPVxuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5pbnN0YW5jZSBpbnN0YW5jZW9mIE5vZGVySW1hZ2VDb21wb25lbnQgPyBjb21wb25lbnQuaW5zdGFuY2UuaGVpZ2h0ICsgc2l6ZS5kZXNjZW50IDogY29tcG9uZW50Lmluc3RhbmNlLmhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXcgRGlzcGxheVRva2VuKHtcbiAgICAgICAgICAgIHdpZHRoOiBjb21wb25lbnQuaW5zdGFuY2Uud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICBiYXNlbGluZTogMCxcbiAgICAgICAgICAgIGNvbnRlbnQ6IDAsXG4gICAgICAgICAgICBmb250OiBzaXplLmZvbnQsXG4gICAgICAgICAgICBhc2NlbnQ6IGNvbXBvbmVudC5pbnN0YW5jZS5oZWlnaHQgPz8gc2l6ZS5oZWlnaHQsXG4gICAgICAgICAgICBkZXNjZW50OiAwLFxuICAgICAgICAgICAgbGluZTogMCxcbiAgICAgICAgICAgIGxpbmVTcGFjaW5nOiBsaW5lSW5mby5saW5lU3BhY2luZyxcbiAgICAgICAgICAgIG11bHRpcGxpZXI6IDAsXG4gICAgICAgICAgICBhbGlnbjogbGluZUluZm8uYWxpZ24sXG4gICAgICAgICAgICBpbmRlbnRGaXJzdExpbmU6IGlzRmlyc3QgPyBsaW5lSW5mby5pbmRlbnQuZmlyc3RMaW5lIDogREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuaW5kZW50Rmlyc3RMaW5lLFxuICAgICAgICAgICAgaW5kZW50SGFuZ2luZzogaXNGaXJzdCA/IGxpbmVJbmZvLmluZGVudC5oYW5naW5nIDogREVGQVVMVF9QQVJBR1JBUEhfU1RZTEUuaW5kZW50SGFuZ2luZyxcbiAgICAgICAgICAgIGluZGVudExlZnQ6IGxpbmVJbmZvLmluZGVudC5sZWZ0LFxuICAgICAgICAgICAgaW5kZW50UmlnaHQ6IGxpbmVJbmZvLmluZGVudC5yaWdodCxcbiAgICAgICAgICAgIGluZGVudEJlZm9yZTogbGluZUluZm8ub2Zmc2V0QmVmb3JlLFxuICAgICAgICAgICAgaW5kZW50QWZ0ZXI6IGxpbmVJbmZvLm9mZnNldEFmdGVyLFxuICAgICAgICAgICAgaXNQYWdlQnJlYWs6IGZhbHNlLFxuICAgICAgICAgICAgaXNMaW5lQnJlYWs6IGZhbHNlLFxuICAgICAgICAgICAgZGlzcGxheVZhbHVlLFxuICAgICAgICAgICAgaXNUYWI6IGNvbXBvbmVudC5pbnN0YW5jZSBpbnN0YW5jZW9mIE5vZGVyVGFiQ29tcG9uZW50LFxuICAgICAgICAgICAgaXNUYWJsZTogY29tcG9uZW50Lmluc3RhbmNlIGluc3RhbmNlb2YgTm9kZXJUYWJsZUNvbXBvbmVudFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmaW5kQ29tcG9uZW50VHlwZSh0eXBlOiBudW1iZXIpOiBUeXBlPEJhc2VOb2RlckNvbXBvbmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50cy5maW5kKHggPT4geC50eXBlID09PSB0eXBlKS5jb21wb25lbnRUeXBlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnRzKGNvbXBvbmVudHM6IENvbXBvbmVudFJlZjxCYXNlTm9kZXJDb21wb25lbnQ+W10sIGRpc3RhbmNlOiBEaXN0YW5jZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzLnNvbWUoeCA9PiB4Lmluc3RhbmNlLmluc2VydEluZGV4ID49IGRpc3RhbmNlLnN0YXJ0ICYmIHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPD0gZGlzdGFuY2UuZW5kKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRDb21wb25lbnQ8VD4oY29tcG9uZW50czogQ29tcG9uZW50UmVmPFQ+W10sIGluc2VydEluZGV4OiBudW1iZXIpOiBDb21wb25lbnRSZWY8VD4ge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50cy5maW5kKCh4OiBhbnkpID0+IHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPT09IGluc2VydEluZGV4KTtcbiAgICB9XG59XG4iXX0=
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbnRlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9jb21wb25lbnRzL3NoYXJlZC9zZXJ2aWNlcy9jdXN0b20tY29udGVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsVUFBVSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUt6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBR2pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBTTFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7QUFHN0UsTUFBTSxPQUFPLG9CQUFvQjtJQUc3QixZQUFtQixnQkFBa0MsRUFBVSxRQUFrQjtRQUE5RCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUM3RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxpQkFBaUIsQ0FDYixLQUF3QixFQUN4QixVQUE2QixFQUM3QixTQUFpQixFQUNqQixpQkFBeUMsRUFDekMsWUFBb0IsRUFDcEIsU0FBaUI7UUFFakIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1B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aUJBQWlCLENBQUMsSUFBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDbEUsQ0FBQztJQUVELGFBQWEsQ0FBSSxVQUE2QixFQUFFLFdBQW1CO1FBQy9ELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVPLDJCQUEyQixDQUFDLFVBQThDLEVBQUUsUUFBdUI7UUFDdkcsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFZO1FBQ3hCLE9BQU8sSUFBSSxLQUFLLHFCQUFxQixJQUFJLElBQUksS0FBSyxZQUFZLENBQUM7SUFDbkUsQ0FBQzsrR0FwSlEsb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VOb2RlckNvbXBvbmVudCB9IGZyb20gJy4uL2Fic3RyYWN0L2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuL2NvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRzSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vY29udGVudC9jb250ZW50cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRfTUFSS0VSLCBUQUJMRV9NQVJLRVIgfSBmcm9tICcuLi9jdXN0b20tY29udGVudC1tYXJrZXJzLmNvbnN0JztcbmltcG9ydCB7IERFRkFVTFRfUEFSQUdSQVBIX1NUWUxFIH0gZnJvbSAnLi4vLi4vLi4vY29udGVudC9jb25zdGFudHMvZWRpdG9yLmNvbnN0JztcbmltcG9ydCB7IERpc3BsYXlUb2tlbiB9IGZyb20gJy4uLy4uLy4uL2NvbnRlbnQvZGlzcGxheS1kYXRhL2Rpc3BsYXktdG9rZW4ubW9kZWwnO1xuaW1wb3J0IHsgRGlzdGFuY2VNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2V4ZWN1dGlvbi9kaXN0YW5jZS5tb2RlbCc7XG5pbXBvcnQgeyBFbGVtZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2VsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgRVhURVJOQUxfRUxFTUVOVF9TRVJWSUNFIH0gZnJvbSAnLi4vLi4vZXh0ZXJuYWwtZWxlbWVudC9leHRlcm5hbC1lbGVtZW50cy5jb25zdCc7XG5pbXBvcnQgeyBFeHRlcm5hbEVsZW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uL2V4dGVybmFsLWVsZW1lbnQvbW9kZWxzL2V4dGVybmFsLWVsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgR2VuZXJhbFByb3BlcnRpZXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2NvbnRlbnQvZGlzcGxheS1kYXRhL2dlbmVyYWwtcHJvcGVydGllcy5tb2RlbCc7XG5pbXBvcnQgeyBJQ3VzdG9tQ29tcG9uZW50cyB9IGZyb20gJy4uL2N1c3RvbS1jb21wb25lbnRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRm9udE1ldHJpY1NpemUgfSBmcm9tICcuLi8uLi8uLi9nYWRnZXRzL2ZvbnQtbWV0cmljcy9mb250LW1ldHJpYy1zaXplLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaW5lSW5mb01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vY29udGVudC9kaXNwbGF5LWRhdGEvbGluZS1pbmZvLm1vZGVsJztcbmltcG9ydCB7IE5vZGVySW1hZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbWFnZS9jb21wb25lbnRzL2ltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlclRhYkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RhYi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVyVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YWJsZS9jb21wb25lbnRzL3RhYmxlLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDdXN0b21Db250ZW50U2VydmljZSB7XG4gICAgZWxlbWVudHM6IEV4dGVybmFsRWxlbWVudE1vZGVsW107XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEVYVEVSTkFMX0VMRU1FTlRfU0VSVklDRSkuZWxlbWVudHM7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVDb21wb25lbnQoXG4gICAgICAgIG1vZGVsOiBDb250ZW50c0ludGVyZmFjZSxcbiAgICAgICAgY29tcG9uZW50czogSUN1c3RvbUNvbXBvbmVudHMsXG4gICAgICAgIHNlc3Npb25JZDogbnVtYmVyLFxuICAgICAgICBnZW5lcmFsUHJvcGVydGllczogR2VuZXJhbFByb3BlcnRpZXNNb2RlbCxcbiAgICAgICAgY29udGVudFdpZHRoOiBudW1iZXIsXG4gICAgICAgIGNoYXJJbmRleDogbnVtYmVyXG4gICAgKTogQ29tcG9uZW50UmVmPEJhc2VOb2RlckNvbXBvbmVudD4gfCBudWxsIHtcbiAgICAgICAgY29uc3QgaW1hZ2UgPSBtb2RlbC5pbWFnZXMuZmluZCh4ID0+IHguaW5zZXJ0SW5kZXggPT09IGNoYXJJbmRleCk7XG4gICAgICAgIGlmIChpbWFnZSkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50KE5vZGVySW1hZ2VDb21wb25lbnQsIHsgaW1hZ2UsIHNlc3Npb25JZCwgZ2VuZXJhbFByb3BlcnRpZXMgfSk7XG4gICAgICAgICAgICBjb21wb25lbnRzLmltYWdlcy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFibGUgPSBtb2RlbC50YWJsZXMuZmluZCh4ID0+IHguaW5zZXJ0SW5kZXggPT09IGNoYXJJbmRleCk7XG4gICAgICAgIGlmICh0YWJsZSkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50KE5vZGVyVGFibGVDb21wb25lbnQsIHsgdGFibGUsIHNlc3Npb25JZCwgZ2VuZXJhbFByb3BlcnRpZXMgfSk7XG4gICAgICAgICAgICBjb21wb25lbnRzLnRhYmxlcy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFiID0gbW9kZWwudGFicy5maW5kKHggPT4geC5pbnNlcnRJbmRleCA9PT0gY2hhckluZGV4KTtcbiAgICAgICAgaWYgKHRhYikge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50KE5vZGVyVGFiQ29tcG9uZW50LCB7IHRhYiwgc2Vzc2lvbklkLCBnZW5lcmFsUHJvcGVydGllcyB9KTtcbiAgICAgICAgICAgIGNvbXBvbmVudHMudGFicy5wdXNoKGNvbXBvbmVudCk7XG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udGVudCA9IG1vZGVsLmVsZW1lbnRzLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4ID09PSBjaGFySW5kZXgpO1xuICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5jb21wb25lbnRTZXJ2aWNlLmdlbmVyYXRlQ29tcG9uZW50KHRoaXMuZmluZENvbXBvbmVudFR5cGUoY29udGVudC50eXBlKSwge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRXaWR0aFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb21wb25lbnRzLmN1c3RvbUVsZW1lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZUVsZW1lbnRDb21wb25lbnRzKGVsZW1lbnRzOiBFbGVtZW50TW9kZWxbXSwgc2Vzc2lvbklkOiBudW1iZXIsIGNvbnRlbnRXaWR0aDogbnVtYmVyKTogQ29tcG9uZW50UmVmPEJhc2VOb2RlckNvbXBvbmVudD5bXSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50cy5tYXAoeCA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5maW5kQ29tcG9uZW50VHlwZSh4LnR5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U2VydmljZS5nZW5lcmF0ZUNvbXBvbmVudCh0eXBlLCB7IGNvbnRlbnQ6IHgsIHNlc3Npb25JZCwgY29udGVudFdpZHRoIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc0ZyYWdtZW50Q29udGFpbkNvbXBvbmVudChjb21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cywgdGV4dEZyYWdtZW50OiBzdHJpbmcsIGZyYWdtZW50RGlzdGFuY2U6IERpc3RhbmNlTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRleHRGcmFnbWVudC5pbmNsdWRlcyhDVVNUT01fRUxFTUVOVF9NQVJLRVIpKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnRzKGNvbXBvbmVudHMuaW1hZ2VzLCBmcmFnbWVudERpc3RhbmNlKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnRzKGNvbXBvbmVudHMudGFicywgZnJhZ21lbnREaXN0YW5jZSkgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmlzRnJhZ21lbnRDb250YWluQ29tcG9uZW50cyhjb21wb25lbnRzLmN1c3RvbUVsZW1lbnRzLCBmcmFnbWVudERpc3RhbmNlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0ZXh0RnJhZ21lbnQuaW5jbHVkZXMoVEFCTEVfTUFSS0VSKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnRzKGNvbXBvbmVudHMudGFibGVzLCBmcmFnbWVudERpc3RhbmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXRDb21wb25lbnRzKGNvbXBvbmVudHM6IElDdXN0b21Db21wb25lbnRzLCBkaXN0YW5jZTogRGlzdGFuY2VNb2RlbCk6IENvbXBvbmVudFJlZjxCYXNlTm9kZXJDb21wb25lbnQ+W10ge1xuICAgICAgICBjb25zdCBpbWFnZXMgPSBjb21wb25lbnRzLmltYWdlcy5maWx0ZXIoeCA9PiB4Lmluc3RhbmNlLmluc2VydEluZGV4ID49IGRpc3RhbmNlLnN0YXJ0ICYmIHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPD0gZGlzdGFuY2UuZW5kKTtcbiAgICAgICAgY29uc3QgdGFibGVzID0gY29tcG9uZW50cy50YWJsZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZS5pbnNlcnRJbmRleCA+PSBkaXN0YW5jZS5zdGFydCAmJiB4Lmluc3RhbmNlLmluc2VydEluZGV4IDw9IGRpc3RhbmNlLmVuZCk7XG4gICAgICAgIGNvbnN0IHRhYnMgPSBjb21wb25lbnRzLnRhYnMuZmlsdGVyKHggPT4geC5pbnN0YW5jZS5pbnNlcnRJbmRleCA+PSBkaXN0YW5jZS5zdGFydCAmJiB4Lmluc3RhbmNlLmluc2VydEluZGV4IDw9IGRpc3RhbmNlLmVuZCk7XG4gICAgICAgIGNvbnN0IGN1c3RvbSA9IGNvbXBvbmVudHMuY3VzdG9tRWxlbWVudHMuZmlsdGVyKFxuICAgICAgICAgICAgeCA9PiB4Lmluc3RhbmNlLmluc2VydEluZGV4ID49IGRpc3RhbmNlLnN0YXJ0ICYmIHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPD0gZGlzdGFuY2UuZW5kXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBbLi4uaW1hZ2VzLCAuLi50YWJsZXMsIC4uLnRhYnMsIC4uLmN1c3RvbV0uc29ydCgoYSwgYikgPT4gYS5pbnN0YW5jZS5pbnNlcnRJbmRleCAtIGIuaW5zdGFuY2UuaW5zZXJ0SW5kZXgpO1xuICAgIH1cblxuICAgIGdldENvbXBvbmVudChjb21wb25lbnRzOiBJQ3VzdG9tQ29tcG9uZW50cywgY2hhcjogc3RyaW5nLCBjaGFySW5kZXg6IG51bWJlcik6IENvbXBvbmVudFJlZjxCYXNlTm9kZXJDb21wb25lbnQ+IHtcbiAgICAgICAgaWYgKGNoYXIgPT09IENVU1RPTV9FTEVNRU5UX01BUktFUikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRDb21wb25lbnQoY29tcG9uZW50cy5pbWFnZXMsIGNoYXJJbmRleCkgPz9cbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRDb21wb25lbnQoY29tcG9uZW50cy50YWJzLCBjaGFySW5kZXgpID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQ29tcG9uZW50KGNvbXBvbmVudHMuY3VzdG9tRWxlbWVudHMsIGNoYXJJbmRleClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5maW5kQ29tcG9uZW50KGNvbXBvbmVudHMudGFibGVzLCBjaGFySW5kZXgpO1xuICAgIH1cblxuICAgIGdldFRva2VuRnJvbUNvbXBvbmVudChcbiAgICAgICAgY29tcG9uZW50OiBDb21wb25lbnRSZWY8QmFzZU5vZGVyQ29tcG9uZW50PixcbiAgICAgICAgbGluZUluZm86IExpbmVJbmZvTW9kZWwsXG4gICAgICAgIGRpc3BsYXlWYWx1ZTogbnVtYmVyLFxuICAgICAgICBpc0ZpcnN0OiBib29sZWFuLFxuICAgICAgICBzaXplOiBJRm9udE1ldHJpY1NpemVcbiAgICApOiBEaXNwbGF5VG9rZW4ge1xuICAgICAgICBsZXQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7XG4gICAgICAgIGlmIChjb21wb25lbnQuaW5zdGFuY2UuaGVpZ2h0ID4gc2l6ZS5oZWlnaHQpIHtcbiAgICAgICAgICAgIGhlaWdodCA9XG4gICAgICAgICAgICAgICAgY29tcG9uZW50Lmluc3RhbmNlIGluc3RhbmNlb2YgTm9kZXJJbWFnZUNvbXBvbmVudCA/IGNvbXBvbmVudC5pbnN0YW5jZS5oZWlnaHQgKyBzaXplLmRlc2NlbnQgOiBjb21wb25lbnQuaW5zdGFuY2UuaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBEaXNwbGF5VG9rZW4oe1xuICAgICAgICAgICAgd2lkdGg6IGNvbXBvbmVudC5pbnN0YW5jZS53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIGJhc2VsaW5lOiAwLFxuICAgICAgICAgICAgY29udGVudDogMCxcbiAgICAgICAgICAgIGZvbnQ6IHNpemUuZm9udCxcbiAgICAgICAgICAgIGFzY2VudDogY29tcG9uZW50Lmluc3RhbmNlLmhlaWdodCA/PyBzaXplLmhlaWdodCxcbiAgICAgICAgICAgIGRlc2NlbnQ6IDAsXG4gICAgICAgICAgICBsaW5lOiAwLFxuICAgICAgICAgICAgbGluZVNwYWNpbmc6IGxpbmVJbmZvLmxpbmVTcGFjaW5nLFxuICAgICAgICAgICAgbXVsdGlwbGllcjogMCxcbiAgICAgICAgICAgIGFsaWduOiBsaW5lSW5mby5hbGlnbixcbiAgICAgICAgICAgIGluZGVudEZpcnN0TGluZTogaXNGaXJzdCA/IGxpbmVJbmZvLmluZGVudC5maXJzdExpbmUgOiBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5pbmRlbnRGaXJzdExpbmUsXG4gICAgICAgICAgICBpbmRlbnRIYW5naW5nOiBpc0ZpcnN0ID8gbGluZUluZm8uaW5kZW50LmhhbmdpbmcgOiBERUZBVUxUX1BBUkFHUkFQSF9TVFlMRS5pbmRlbnRIYW5naW5nLFxuICAgICAgICAgICAgaW5kZW50TGVmdDogbGluZUluZm8uaW5kZW50LmxlZnQsXG4gICAgICAgICAgICBpbmRlbnRSaWdodDogbGluZUluZm8uaW5kZW50LnJpZ2h0LFxuICAgICAgICAgICAgaW5kZW50QmVmb3JlOiBsaW5lSW5mby5vZmZzZXRCZWZvcmUsXG4gICAgICAgICAgICBpbmRlbnRBZnRlcjogbGluZUluZm8ub2Zmc2V0QWZ0ZXIsXG4gICAgICAgICAgICBpc1BhZ2VCcmVhazogZmFsc2UsXG4gICAgICAgICAgICBpc0xpbmVCcmVhazogZmFsc2UsXG4gICAgICAgICAgICBkaXNwbGF5VmFsdWUsXG4gICAgICAgICAgICBpc1RhYjogY29tcG9uZW50Lmluc3RhbmNlIGluc3RhbmNlb2YgTm9kZXJUYWJDb21wb25lbnQsXG4gICAgICAgICAgICBpc1RhYmxlOiBjb21wb25lbnQuaW5zdGFuY2UgaW5zdGFuY2VvZiBOb2RlclRhYmxlQ29tcG9uZW50XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZpbmRDb21wb25lbnRUeXBlKHR5cGU6IG51bWJlcik6IFR5cGU8QmFzZU5vZGVyQ29tcG9uZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRzLmZpbmQoeCA9PiB4LnR5cGUgPT09IHR5cGUpLmNvbXBvbmVudFR5cGU7XG4gICAgfVxuXG4gICAgZmluZENvbXBvbmVudDxUPihjb21wb25lbnRzOiBDb21wb25lbnRSZWY8VD5bXSwgaW5zZXJ0SW5kZXg6IG51bWJlcik6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzLmZpbmQoKHg6IGFueSkgPT4geC5pbnN0YW5jZS5pbnNlcnRJbmRleCA9PT0gaW5zZXJ0SW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGcmFnbWVudENvbnRhaW5Db21wb25lbnRzKGNvbXBvbmVudHM6IENvbXBvbmVudFJlZjxCYXNlTm9kZXJDb21wb25lbnQ+W10sIGRpc3RhbmNlOiBEaXN0YW5jZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjb21wb25lbnRzLnNvbWUoeCA9PiB4Lmluc3RhbmNlLmluc2VydEluZGV4ID49IGRpc3RhbmNlLnN0YXJ0ICYmIHguaW5zdGFuY2UuaW5zZXJ0SW5kZXggPD0gZGlzdGFuY2UuZW5kKTtcbiAgICB9XG5cbiAgICBpc1NwZWNpYWxNYXJrZXIoY2hhcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjaGFyID09PSBDVVNUT01fRUxFTUVOVF9NQVJLRVIgfHwgY2hhciA9PT0gVEFCTEVfTUFSS0VSO1xuICAgIH1cbn1cbiJdfQ==
@@ -28,7 +28,7 @@ export class NoderTableCellComponent {
28
28
  };
29
29
  }
30
30
  ngOnDestroy() {
31
- this.session?.pagesWrap.removeEventListener('pagesCountChanged', this.pagesCountChangedHandler);
31
+ this.session?.displayData.removeEventListener('pagesCountChanged', this.pagesCountChangedHandler);
32
32
  this.regulatorService.removeSession(this.sessionId);
33
33
  }
34
34
  initialize() {
@@ -45,18 +45,18 @@ export class NoderTableCellComponent {
45
45
  this.addEventListeners();
46
46
  }
47
47
  getCellContentHeight() {
48
- this._allParagraphsHeight = this.session.pagesWrap.getAllParagraphsHeight();
48
+ this._allParagraphsHeight = this.session.displayData.getAllParagraphsHeight();
49
49
  return this._allParagraphsHeight;
50
50
  }
51
- clearSelection() {
52
- this.editorService.clearSelection();
51
+ disableEditorSelection() {
52
+ this.editorService.disableSelection();
53
53
  }
54
54
  onStartResizing(event, border) {
55
55
  event.stopPropagation();
56
56
  this.startResizing(new CellResizerParametersModel(this.columnIndex, this.rowIndex, this.cellIndex, border));
57
57
  }
58
58
  addEventListeners() {
59
- this.session.pagesWrap.addEventListener('pagesCountChanged', this.pagesCountChangedHandler);
59
+ this.session.displayData.addEventListener('pagesCountChanged', this.pagesCountChangedHandler);
60
60
  }
61
61
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoderTableCellComponent, deps: [{ token: i1.EditorService }, { token: i2.RegulatorService }], target: i0.ɵɵFactoryTarget.Component }); }
62
62
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NoderTableCellComponent, selector: "app-nod-table-cell", inputs: { table: "table", cell: "cell", rowIndex: "rowIndex", cellIndex: "cellIndex", columnIndex: "columnIndex", width: "width", parentSessionId: "parentSessionId", generalProperties: "generalProperties", heightChanged: "heightChanged", startResizing: "startResizing" }, host: { properties: { "class.highlighted": "this.isHighlighted", "attr.data-session-id": "this.sessionId" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], ngImport: i0, template: "<div\n *ngIf=\"cellIndex === 0\"\n class=\"resizer left-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Left)\"></div>\n<div\n #container\n class=\"edit-container\"></div>\n<div class=\"highlight-container\"></div>\n<div\n class=\"resizer right-border\"\n (mousedown)=\"onStartResizing($event, resizerBorder.Right)\"></div>\n", styles: [".highlight-container{visibility:hidden;position:absolute;width:100%;height:100%;background-color:#5ea8f766;pointer-events:none;overflow:hidden}:host{display:flex;position:relative;min-height:19px;height:100%;background:transparent}:host.highlighted .highlight-container{visibility:visible}.edit-container{min-height:1px;overflow:hidden}.left-border{left:-6px}.resizer{cursor:col-resize;width:11px;height:100%;position:absolute;z-index:1}.right-border{right:-6px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -94,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
94
94
  type: ViewChild,
95
95
  args: ['container', { static: true }]
96
96
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvY29tcG9uZW50cy90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL2NvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy90YWJsZS1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFJNUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7QUFXakYsTUFBTSxPQUFPLHVCQUF1QjtJQTZCaEMsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0lBUUQsWUFBb0IsYUFBNEIsRUFBVSxnQkFBa0M7UUFBeEUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBckI1RixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQWlCYixrQkFBYSxHQUFHLFdBQVcsQ0FBQztRQTRDN0IsNkJBQXdCLEdBQUcsQ0FBQyxLQUE2QixFQUFRLEVBQUU7WUFDdkUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEtBQUssS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDaEQsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDN0MsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUM7SUFoRDZGLENBQUM7SUFFaEcsV0FBVztRQUNQLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxVQUFVO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDaEMsSUFBSSxFQUFFLENBQUM7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ04sTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sRUFBRSxDQUFDO1NBQ1osQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDNUUsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDckMsQ0FBQztJQUVELGNBQWM7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBaUIsRUFBRSxNQUFtQjtRQUNsRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUNoRyxDQUFDOytHQWpGUSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwraUJDckJwQywyV0FXQTs7NEZEVWEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNJLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNO2lIQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixXQUFXO3VCQUFDLG1CQUFtQjtnQkFJaEMsU0FBUztzQkFEUixXQUFXO3VCQUFDLHNCQUFzQjtnQkFhTyxTQUFTO3NCQUFsRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZWxsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgQ2VsbFJlc2l6ZXJQYXJhbWV0ZXJzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3RhYmxlL21vZGVscy9jZWxsLXJlc2l6ZXItcGFyYW1ldGVycy5tb2RlbCc7XG5pbXBvcnQgeyBFZGl0U2Vzc2lvbiB9IGZyb20gJy4uLy4uLy4uL2V4ZWN1dGlvbi9lZGl0LnNlc3Npb24nO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2ludGVyYWN0aW9uL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxQcm9wZXJ0aWVzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9jb250ZW50L2Rpc3BsYXktZGF0YS9nZW5lcmFsLXByb3BlcnRpZXMubW9kZWwnO1xuaW1wb3J0IHsgTWFyZ2luTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9jb250ZW50L21hcmdpbi5tb2RlbCc7XG5pbXBvcnQgeyBSZWd1bGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZXhlY3V0aW9uL3JlZ3VsYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSAnLi4vLi4vLi4vZGlzcGxheS9yZW5kZXJlcic7XG5pbXBvcnQgeyBSZXNpemVyU2lkZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvdGFibGUvZW51bXMvcmVpc2l6ZXItc2lkZS5lbnVtJztcbmltcG9ydCB7IFNlc3Npb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL2V4ZWN1dGlvbi90YXJnZXRpbmcvc2Vzc2lvbi5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBWaXJ0dWFsUmVuZGVyZXIgfSBmcm9tICcuLi8uLi8uLi9kaXNwbGF5L3ZpcnR1YWwucmVuZGVyZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1ub2QtdGFibGUtY2VsbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWNlbGwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhYmxlLWNlbGwuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBOb2RlclRhYmxlQ2VsbENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdGFibGU6IFRhYmxlTW9kZWw7XG5cbiAgICBASW5wdXQoKSBjZWxsOiBDZWxsTW9kZWw7XG5cbiAgICBASW5wdXQoKSByb3dJbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgY2VsbEluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBjb2x1bW5JbmRleDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgd2lkdGg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIHBhcmVudFNlc3Npb25JZDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgZ2VuZXJhbFByb3BlcnRpZXM6IEdlbmVyYWxQcm9wZXJ0aWVzTW9kZWw7XG5cbiAgICBASW5wdXQoKSBoZWlnaHRDaGFuZ2VkOiAocm93SW5kZXg6IG51bWJlciwgY2VsbEluZGV4OiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSA9PiB2b2lkO1xuXG4gICAgQElucHV0KCkgc3RhcnRSZXNpemluZzogKGNlbGxSZXNpemVyUGFyYW1ldGVyczogQ2VsbFJlc2l6ZXJQYXJhbWV0ZXJzTW9kZWwpID0+IHZvaWQ7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhpZ2hsaWdodGVkJylcbiAgICBpc0hpZ2hsaWdodGVkID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zZXNzaW9uLWlkJylcbiAgICBzZXNzaW9uSWQ6IG51bWJlcjtcblxuICAgIGNlbGxTZXNzaW9uOiBTZXNzaW9uTW9kZWw7XG5cbiAgICBnZXQgc2Vzc2lvbigpOiBFZGl0U2Vzc2lvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbGxTZXNzaW9uLnNlc3Npb247XG4gICAgfVxuXG4gICAgZ2V0IHJlbmRlcmVyKCk6IFJlbmRlcmVyIHwgVmlydHVhbFJlbmRlcmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VsbFNlc3Npb24ucmVuZGVyZXI7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIHJlYWRvbmx5IHJlc2l6ZXJCb3JkZXIgPSBSZXNpemVyU2lkZTtcblxuICAgIHByaXZhdGUgX2FsbFBhcmFncmFwaHNIZWlnaHQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSwgcHJpdmF0ZSByZWd1bGF0b3JTZXJ2aWNlOiBSZWd1bGF0b3JTZXJ2aWNlKSB7fVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbj8ucGFnZXNXcmFwLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhZ2VzQ291bnRDaGFuZ2VkJywgdGhpcy5wYWdlc0NvdW50Q2hhbmdlZEhhbmRsZXIpO1xuICAgICAgICB0aGlzLnJlZ3VsYXRvclNlcnZpY2UucmVtb3ZlU2Vzc2lvbih0aGlzLnNlc3Npb25JZCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWFyZ2luTW9kZWwgPSBuZXcgTWFyZ2luTW9kZWwoe1xuICAgICAgICAgICAgbGVmdDogNyxcbiAgICAgICAgICAgIHJpZ2h0OiA3LFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgaGVhZGVyOiAwLFxuICAgICAgICAgICAgZm9vdGVyOiAwXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNlbGxTZXNzaW9uID0gdGhpcy5yZWd1bGF0b3JTZXJ2aWNlLmFkZENlbGxTZXNzaW9uKHRoaXMudGFibGUsIG1hcmdpbk1vZGVsLCB0aGlzLCB0aGlzLmdlbmVyYWxQcm9wZXJ0aWVzKTtcbiAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSB0aGlzLmNlbGxTZXNzaW9uLnNlc3Npb25JZDtcbiAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIGdldENlbGxDb250ZW50SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHRoaXMuX2FsbFBhcmFncmFwaHNIZWlnaHQgPSB0aGlzLnNlc3Npb24ucGFnZXNXcmFwLmdldEFsbFBhcmFncmFwaHNIZWlnaHQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbFBhcmFncmFwaHNIZWlnaHQ7XG4gICAgfVxuXG4gICAgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5jbGVhclNlbGVjdGlvbigpO1xuICAgIH1cblxuICAgIG9uU3RhcnRSZXNpemluZyhldmVudDogTW91c2VFdmVudCwgYm9yZGVyOiBSZXNpemVyU2lkZSk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLnN0YXJ0UmVzaXppbmcobmV3IENlbGxSZXNpemVyUGFyYW1ldGVyc01vZGVsKHRoaXMuY29sdW1uSW5kZXgsIHRoaXMucm93SW5kZXgsIHRoaXMuY2VsbEluZGV4LCBib3JkZXIpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlc3Npb24ucGFnZXNXcmFwLmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VzQ291bnRDaGFuZ2VkJywgdGhpcy5wYWdlc0NvdW50Q2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFnZXNDb3VudENoYW5nZWRIYW5kbGVyID0gKGV2ZW50OiB7IHBhZ2VIZWlnaHQ6IG51bWJlciB9KTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0ID09PSBldmVudC5wYWdlSGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0ID0gZXZlbnQucGFnZUhlaWdodDtcbiAgICAgICAgY29uc3QgY2VsbENvbnRlbnRIZWlnaHQgPSB0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0O1xuICAgICAgICB0aGlzLmhlaWdodENoYW5nZWQodGhpcy5yb3dJbmRleCwgdGhpcy5jZWxsSW5kZXgsIGNlbGxDb250ZW50SGVpZ2h0KTtcbiAgICB9O1xufVxuIiwiPGRpdlxuICAgICpuZ0lmPVwiY2VsbEluZGV4ID09PSAwXCJcbiAgICBjbGFzcz1cInJlc2l6ZXIgbGVmdC1ib3JkZXJcIlxuICAgIChtb3VzZWRvd24pPVwib25TdGFydFJlc2l6aW5nKCRldmVudCwgcmVzaXplckJvcmRlci5MZWZ0KVwiPjwvZGl2PlxuPGRpdlxuICAgICNjb250YWluZXJcbiAgICBjbGFzcz1cImVkaXQtY29udGFpbmVyXCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwiaGlnaGxpZ2h0LWNvbnRhaW5lclwiPjwvZGl2PlxuPGRpdlxuICAgIGNsYXNzPVwicmVzaXplciByaWdodC1ib3JkZXJcIlxuICAgIChtb3VzZWRvd24pPVwib25TdGFydFJlc2l6aW5nKCRldmVudCwgcmVzaXplckJvcmRlci5SaWdodClcIj48L2Rpdj5cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvY29tcG9uZW50cy90YWJsZS9jb21wb25lbnRzL3RhYmxlLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL2NvbXBvbmVudHMvdGFibGUvY29tcG9uZW50cy90YWJsZS1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFJNUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7QUFXakYsTUFBTSxPQUFPLHVCQUF1QjtJQTZCaEMsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0lBUUQsWUFBb0IsYUFBNEIsRUFBVSxnQkFBa0M7UUFBeEUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBckI1RixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQWlCYixrQkFBYSxHQUFHLFdBQVcsQ0FBQztRQTRDN0IsNkJBQXdCLEdBQUcsQ0FBQyxLQUE2QixFQUFRLEVBQUU7WUFDdkUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEtBQUssS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDaEQsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDN0MsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDcEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUM7SUFoRDZGLENBQUM7SUFFaEcsV0FBVztRQUNQLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2xHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxVQUFVO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDaEMsSUFBSSxFQUFFLENBQUM7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ04sTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sRUFBRSxDQUFDO1NBQ1osQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUUsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDckMsQ0FBQztJQUVELHNCQUFzQjtRQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFpQixFQUFFLE1BQW1CO1FBQ2xELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7K0dBakZRLHVCQUF1QjttR0FBdkIsdUJBQXVCLCtpQkNyQnBDLDJXQVdBOzs0RkRVYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0ksb0JBQW9CLG1CQUdiLHVCQUF1QixDQUFDLE1BQU07aUhBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFHTixhQUFhO3NCQURaLFdBQVc7dUJBQUMsbUJBQW1CO2dCQUloQyxTQUFTO3NCQURSLFdBQVc7dUJBQUMsc0JBQXNCO2dCQWFPLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENlbGxNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvY2VsbC5tb2RlbCc7XG5pbXBvcnQgeyBDZWxsUmVzaXplclBhcmFtZXRlcnNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvdGFibGUvbW9kZWxzL2NlbGwtcmVzaXplci1wYXJhbWV0ZXJzLm1vZGVsJztcbmltcG9ydCB7IEVkaXRTZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vZXhlY3V0aW9uL2VkaXQuc2Vzc2lvbic7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VuZXJhbFByb3BlcnRpZXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2NvbnRlbnQvZGlzcGxheS1kYXRhL2dlbmVyYWwtcHJvcGVydGllcy5tb2RlbCc7XG5pbXBvcnQgeyBNYXJnaW5Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL2NvbnRlbnQvbWFyZ2luLm1vZGVsJztcbmltcG9ydCB7IFJlZ3VsYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9leGVjdXRpb24vcmVndWxhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVuZGVyZXIgfSBmcm9tICcuLi8uLi8uLi9kaXNwbGF5L3JlbmRlcmVyJztcbmltcG9ydCB7IFJlc2l6ZXJTaWRlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy90YWJsZS9lbnVtcy9yZWlzaXplci1zaWRlLmVudW0nO1xuaW1wb3J0IHsgU2Vzc2lvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vZXhlY3V0aW9uL3RhcmdldGluZy9zZXNzaW9uLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFZpcnR1YWxSZW5kZXJlciB9IGZyb20gJy4uLy4uLy4uL2Rpc3BsYXkvdmlydHVhbC5yZW5kZXJlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLW5vZC10YWJsZS1jZWxsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY2VsbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY2VsbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVyVGFibGVDZWxsQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSB0YWJsZTogVGFibGVNb2RlbDtcblxuICAgIEBJbnB1dCgpIGNlbGw6IENlbGxNb2RlbDtcblxuICAgIEBJbnB1dCgpIHJvd0luZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBjZWxsSW5kZXg6IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIGNvbHVtbkluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSB3aWR0aDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgcGFyZW50U2Vzc2lvbklkOiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBnZW5lcmFsUHJvcGVydGllczogR2VuZXJhbFByb3BlcnRpZXNNb2RlbDtcblxuICAgIEBJbnB1dCgpIGhlaWdodENoYW5nZWQ6IChyb3dJbmRleDogbnVtYmVyLCBjZWxsSW5kZXg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpID0+IHZvaWQ7XG5cbiAgICBASW5wdXQoKSBzdGFydFJlc2l6aW5nOiAoY2VsbFJlc2l6ZXJQYXJhbWV0ZXJzOiBDZWxsUmVzaXplclBhcmFtZXRlcnNNb2RlbCkgPT4gdm9pZDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaGlnaGxpZ2h0ZWQnKVxuICAgIGlzSGlnaGxpZ2h0ZWQgPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNlc3Npb24taWQnKVxuICAgIHNlc3Npb25JZDogbnVtYmVyO1xuXG4gICAgY2VsbFNlc3Npb246IFNlc3Npb25Nb2RlbDtcblxuICAgIGdldCBzZXNzaW9uKCk6IEVkaXRTZXNzaW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VsbFNlc3Npb24uc2Vzc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgcmVuZGVyZXIoKTogUmVuZGVyZXIgfCBWaXJ0dWFsUmVuZGVyZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jZWxsU2Vzc2lvbi5yZW5kZXJlcjtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgcmVhZG9ubHkgcmVzaXplckJvcmRlciA9IFJlc2l6ZXJTaWRlO1xuXG4gICAgcHJpdmF0ZSBfYWxsUGFyYWdyYXBoc0hlaWdodDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLCBwcml2YXRlIHJlZ3VsYXRvclNlcnZpY2U6IFJlZ3VsYXRvclNlcnZpY2UpIHt9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uPy5kaXNwbGF5RGF0YS5yZW1vdmVFdmVudExpc3RlbmVyKCdwYWdlc0NvdW50Q2hhbmdlZCcsIHRoaXMucGFnZXNDb3VudENoYW5nZWRIYW5kbGVyKTtcbiAgICAgICAgdGhpcy5yZWd1bGF0b3JTZXJ2aWNlLnJlbW92ZVNlc3Npb24odGhpcy5zZXNzaW9uSWQpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1hcmdpbk1vZGVsID0gbmV3IE1hcmdpbk1vZGVsKHtcbiAgICAgICAgICAgIGxlZnQ6IDcsXG4gICAgICAgICAgICByaWdodDogNyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGhlYWRlcjogMCxcbiAgICAgICAgICAgIGZvb3RlcjogMFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jZWxsU2Vzc2lvbiA9IHRoaXMucmVndWxhdG9yU2VydmljZS5hZGRDZWxsU2Vzc2lvbih0aGlzLnRhYmxlLCBtYXJnaW5Nb2RlbCwgdGhpcywgdGhpcy5nZW5lcmFsUHJvcGVydGllcyk7XG4gICAgICAgIHRoaXMuc2Vzc2lvbklkID0gdGhpcy5jZWxsU2Vzc2lvbi5zZXNzaW9uSWQ7XG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBnZXRDZWxsQ29udGVudEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICB0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0ID0gdGhpcy5zZXNzaW9uLmRpc3BsYXlEYXRhLmdldEFsbFBhcmFncmFwaHNIZWlnaHQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbFBhcmFncmFwaHNIZWlnaHQ7XG4gICAgfVxuXG4gICAgZGlzYWJsZUVkaXRvclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmRpc2FibGVTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBvblN0YXJ0UmVzaXppbmcoZXZlbnQ6IE1vdXNlRXZlbnQsIGJvcmRlcjogUmVzaXplclNpZGUpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5zdGFydFJlc2l6aW5nKG5ldyBDZWxsUmVzaXplclBhcmFtZXRlcnNNb2RlbCh0aGlzLmNvbHVtbkluZGV4LCB0aGlzLnJvd0luZGV4LCB0aGlzLmNlbGxJbmRleCwgYm9yZGVyKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uLmRpc3BsYXlEYXRhLmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2VzQ291bnRDaGFuZ2VkJywgdGhpcy5wYWdlc0NvdW50Q2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFnZXNDb3VudENoYW5nZWRIYW5kbGVyID0gKGV2ZW50OiB7IHBhZ2VIZWlnaHQ6IG51bWJlciB9KTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0ID09PSBldmVudC5wYWdlSGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0ID0gZXZlbnQucGFnZUhlaWdodDtcbiAgICAgICAgY29uc3QgY2VsbENvbnRlbnRIZWlnaHQgPSB0aGlzLl9hbGxQYXJhZ3JhcGhzSGVpZ2h0O1xuICAgICAgICB0aGlzLmhlaWdodENoYW5nZWQodGhpcy5yb3dJbmRleCwgdGhpcy5jZWxsSW5kZXgsIGNlbGxDb250ZW50SGVpZ2h0KTtcbiAgICB9O1xufVxuIiwiPGRpdlxuICAgICpuZ0lmPVwiY2VsbEluZGV4ID09PSAwXCJcbiAgICBjbGFzcz1cInJlc2l6ZXIgbGVmdC1ib3JkZXJcIlxuICAgIChtb3VzZWRvd24pPVwib25TdGFydFJlc2l6aW5nKCRldmVudCwgcmVzaXplckJvcmRlci5MZWZ0KVwiPjwvZGl2PlxuPGRpdlxuICAgICNjb250YWluZXJcbiAgICBjbGFzcz1cImVkaXQtY29udGFpbmVyXCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwiaGlnaGxpZ2h0LWNvbnRhaW5lclwiPjwvZGl2PlxuPGRpdlxuICAgIGNsYXNzPVwicmVzaXplciByaWdodC1ib3JkZXJcIlxuICAgIChtb3VzZWRvd24pPVwib25TdGFydFJlc2l6aW5nKCRldmVudCwgcmVzaXplckJvcmRlci5SaWdodClcIj48L2Rpdj5cbiJdfQ==