@plait/mind 0.55.1 → 0.56.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,7 @@ import { ABSTRACT_HANDLE_MASK_WIDTH, ABSTRACT_INCLUDED_OUTLINE_OFFSET } from '..
5
5
  import { MindQueries } from '../../queries';
6
6
  import { getCorrectStartEnd } from '@plait/layouts';
7
7
  import { AbstractHandlePosition } from '../../plugins/with-abstract-resize.board';
8
+ import { NodeActiveGenerator } from '../../generators/node-active.generator';
8
9
  export const getRectangleByResizingLocation = (abstractRectangle, location, activeHandlePosition, isHorizontal) => {
9
10
  if (isHorizontal) {
10
11
  if (activeHandlePosition === AbstractHandlePosition.start) {
@@ -177,15 +178,17 @@ export function handleTouchedAbstract(board, touchedAbstract, endPoint) {
177
178
  return touchedAbstract;
178
179
  }
179
180
  if (touchedAbstract) {
180
- const component = PlaitElement.getComponent(touchedAbstract);
181
- component.activeGenerator.updateAbstractOutline(touchedAbstract);
181
+ const ref = PlaitElement.getElementRef(touchedAbstract);
182
+ const activeGenerator = ref.getGenerator(NodeActiveGenerator.key);
183
+ activeGenerator.updateAbstractOutline(touchedAbstract);
182
184
  touchedAbstract = undefined;
183
185
  }
184
186
  if (abstract) {
185
187
  touchedAbstract = abstract;
186
- const component = PlaitElement.getComponent(touchedAbstract);
187
- component.activeGenerator.updateAbstractOutline(touchedAbstract, touchedHandle);
188
+ const ref = PlaitElement.getElementRef(touchedAbstract);
189
+ const activeGenerator = ref.getGenerator(NodeActiveGenerator.key);
190
+ activeGenerator.updateAbstractOutline(touchedAbstract, touchedHandle);
188
191
  }
189
192
  return touchedAbstract;
190
193
  }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxZQUFZLEVBQVMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFbEYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FDMUMsaUJBQWtDLEVBQ2xDLFFBQWdCLEVBQ2hCLG9CQUE0QyxFQUM1QyxZQUFxQixFQUN2QixFQUFFO0lBQ0EsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNmLElBQUksb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEQsT0FBTztnQkFDSCxHQUFHLGlCQUFpQjtnQkFDcEIsQ0FBQyxFQUFFLFFBQVE7Z0JBQ1gsTUFBTSxFQUFFLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsUUFBUTthQUNwRSxDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPO2dCQUNILEdBQUcsaUJBQWlCO2dCQUNwQixNQUFNLEVBQUUsUUFBUSxHQUFHLGlCQUFpQixDQUFDLENBQUM7YUFDekMsQ0FB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QUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQWJzdHJhY3ROb2RlLCBMYXlvdXROb2RlLCBNaW5kTGF5b3V0VHlwZSwgaXNIb3Jpem9udGFsTGF5b3V0IH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgQUJTVFJBQ1RfSEFORExFX01BU0tfV0lEVEgsIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2Fic3RyYWN0LW5vZGUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IGdldENvcnJlY3RTdGFydEVuZCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbWluZC1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vcGx1Z2lucy93aXRoLWFic3RyYWN0LXJlc2l6ZS5ib2FyZCc7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWN0YW5nbGVCeVJlc2l6aW5nTG9jYXRpb24gPSAoXG4gICAgYWJzdHJhY3RSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCxcbiAgICBsb2NhdGlvbjogbnVtYmVyLFxuICAgIGFjdGl2ZUhhbmRsZVBvc2l0aW9uOiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLFxuICAgIGlzSG9yaXpvbnRhbDogYm9vbGVhblxuKSA9PiB7XG4gICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICBpZiAoYWN0aXZlSGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWJzdHJhY3RSZWN0YW5nbGUsXG4gICAgICAgICAgICAgICAgeTogbG9jYXRpb24sXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhYnN0cmFjdFJlY3RhbmdsZS5oZWlnaHQgKyBhYnN0cmFjdFJlY3RhbmdsZS55IC0gbG9jYXRpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFic3RyYWN0UmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgIGhlaWdodDogbG9jYXRpb24gLSBhYnN0cmFjdFJlY3RhbmdsZS55XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGFjdGl2ZUhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFic3RyYWN0UmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgIHg6IGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBhYnN0cmFjdFJlY3RhbmdsZS53aWR0aCArIGFic3RyYWN0UmVjdGFuZ2xlLnggLSBsb2NhdGlvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWJzdHJhY3RSZWN0YW5nbGUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IGxvY2F0aW9uIC0gYWJzdHJhY3RSZWN0YW5nbGUueFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhdGlvblNjb3BlID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGhhbmRsZVBvc2l0aW9uOiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLFxuICAgIHBhcmVudENoaWxkcmVuOiBNaW5kRWxlbWVudFtdLFxuICAgIGVsZW1lbnQ6IE1pbmRFbGVtZW50LFxuICAgIHBhcmVudDogTGF5b3V0Tm9kZSxcbiAgICBpc0hvcml6b250YWw6IGJvb2xlYW5cbikgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSAoTWluZEVsZW1lbnQuZ2V0Tm9kZShlbGVtZW50KSBhcyB1bmtub3duKSBhcyBMYXlvdXROb2RlO1xuICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gZ2V0Q29ycmVjdFN0YXJ0RW5kKG5vZGUub3JpZ2luIGFzIEFic3RyYWN0Tm9kZSwgcGFyZW50KTtcblxuICAgIGNvbnN0IHN0YXJ0Tm9kZSA9IHBhcmVudENoaWxkcmVuW3N0YXJ0XTtcbiAgICBjb25zdCBlbmROb2RlID0gcGFyZW50Q2hpbGRyZW5bZW5kXTtcblxuICAgIGlmIChoYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCkge1xuICAgICAgICBjb25zdCBhYnN0cmFjdE5vZGUgPSBwYXJlbnRDaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLmVuZCA8IGVsZW1lbnQuc3RhcnQhKTtcbiAgICAgICAgbGV0IG1pbk5vZGU7XG5cbiAgICAgICAgaWYgKGFic3RyYWN0Tm9kZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYWJzdHJhY3ROb2RlXG4gICAgICAgICAgICAgICAgLm1hcChub2RlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlbmQgfSA9IGdldENvcnJlY3RTdGFydEVuZChub2RlIGFzIEFic3RyYWN0Tm9kZSwgcGFyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiIC0gYSlbMF07XG4gICAgICAgICAgICBtaW5Ob2RlID0gcGFyZW50Q2hpbGRyZW5baW5kZXggKyAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1pbk5vZGUgPSBwYXJlbnRDaGlsZHJlblswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1pbk5vZGVSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBbbWluTm9kZV0sIHRydWUpO1xuICAgICAgICBjb25zdCBlbmROb2RlUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgW2VuZE5vZGVdLCBmYWxzZSk7XG5cbiAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtYXg6IGVuZE5vZGVSZWN0YW5nbGUueSAtIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VULFxuICAgICAgICAgICAgICAgIG1pbjogbWluTm9kZVJlY3RhbmdsZS55IC0gQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1heDogZW5kTm9kZVJlY3RhbmdsZS54IC0gQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVQsXG4gICAgICAgICAgICAgICAgbWluOiBtaW5Ob2RlUmVjdGFuZ2xlLnggLSBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFic3RyYWN0Tm9kZSA9IHBhcmVudENoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgY2hpbGQuc3RhcnQgPiBlbGVtZW50LmVuZCEpO1xuICAgICAgICBsZXQgbWF4Tm9kZTtcblxuICAgICAgICBpZiAoYWJzdHJhY3ROb2RlLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBhYnN0cmFjdE5vZGVcbiAgICAgICAgICAgICAgICAubWFwKG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXJ0IH0gPSBnZXRDb3JyZWN0U3RhcnRFbmQobm9kZSBhcyBBYnN0cmFjdE5vZGUsIHBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGFydDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhIC0gYilbMF07XG4gICAgICAgICAgICBtYXhOb2RlID0gcGFyZW50Q2hpbGRyZW5baW5kZXggLSAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyZW50Q2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+ICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkpO1xuICAgICAgICAgICAgbWF4Tm9kZSA9IHBhcmVudENoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF4Tm9kZVJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIFttYXhOb2RlXSwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHN0YXJ0Tm9kZVJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIFtzdGFydE5vZGVdLCBmYWxzZSk7XG5cbiAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtYXg6IG1heE5vZGVSZWN0YW5nbGUueSArIG1heE5vZGVSZWN0YW5nbGUuaGVpZ2h0ICsgQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVQsXG4gICAgICAgICAgICAgICAgbWluOiBzdGFydE5vZGVSZWN0YW5nbGUueSArIHN0YXJ0Tm9kZVJlY3RhbmdsZS5oZWlnaHQgKyBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWF4OiBtYXhOb2RlUmVjdGFuZ2xlLnggKyBtYXhOb2RlUmVjdGFuZ2xlLndpZHRoICsgQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVQsXG4gICAgICAgICAgICAgICAgbWluOiBzdGFydE5vZGVSZWN0YW5nbGUueCArIHN0YXJ0Tm9kZVJlY3RhbmdsZS53aWR0aCArIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEhpdEFic3RyYWN0SGFuZGxlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCwgcG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgY29uc3Qgbm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbExheW91dChub2RlTGF5b3V0KTtcblxuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgY29uc3QgaW5jbHVkZWRFbGVtZW50cyA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW4uc2xpY2UoZWxlbWVudC5zdGFydCEsIGVsZW1lbnQuZW5kISArIDEpO1xuICAgIGxldCBhYnN0cmFjdFJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGluY2x1ZGVkRWxlbWVudHMsIHRydWUpO1xuICAgIGFic3RyYWN0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldE91dGxpbmVSZWN0YW5nbGUoYWJzdHJhY3RSZWN0YW5nbGUsIC1BQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCk7XG5cbiAgICBjb25zdCBzdGFydEhhbmRsZVJlYyA9IGdldEFic3RyYWN0SGFuZGxlUmVjdGFuZ2xlKGFic3RyYWN0UmVjdGFuZ2xlLCBpc0hvcml6b250YWwsIEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQpO1xuICAgIGNvbnN0IGVuZEhhbmRsZVJlYyA9IGdldEFic3RyYWN0SGFuZGxlUmVjdGFuZ2xlKGFic3RyYWN0UmVjdGFuZ2xlLCBpc0hvcml6b250YWwsIEFic3RyYWN0SGFuZGxlUG9zaXRpb24uZW5kKTtcblxuICAgIGNvbnN0IHBvaW50UmVjID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtwb2ludCwgcG9pbnRdKTtcbiAgICBpZiAoUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHBvaW50UmVjLCBzdGFydEhhbmRsZVJlYykpIHJldHVybiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0O1xuICAgIGlmIChSZWN0YW5nbGVDbGllbnQuaXNIaXQocG9pbnRSZWMsIGVuZEhhbmRsZVJlYykpIHJldHVybiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLmVuZDtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFic3RyYWN0SGFuZGxlUmVjdGFuZ2xlID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBpc0hvcml6b250YWw6IGJvb2xlYW4sIHBvc2l0aW9uOiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uKSA9PiB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAocG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQpIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSBpc0hvcml6b250YWwgPyByZWN0YW5nbGUueSA6IHJlY3RhbmdsZS54O1xuXG4gICAgICAgIHJlc3VsdCA9IGdldFJlY3RhbmdsZUJ5UmVzaXppbmdMb2NhdGlvbihcbiAgICAgICAgICAgIHJlY3RhbmdsZSxcbiAgICAgICAgICAgIGxvY2F0aW9uICsgQUJTVFJBQ1RfSEFORExFX01BU0tfV0lEVEggLyAyLFxuICAgICAgICAgICAgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5lbmQsXG4gICAgICAgICAgICBpc0hvcml6b250YWxcbiAgICAgICAgKTtcbiAgICAgICAgcmVzdWx0ID0gZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uKHJlc3VsdCwgbG9jYXRpb24gLSBBQlNUUkFDVF9IQU5ETEVfTUFTS19XSURUSCAvIDIsIHBvc2l0aW9uLCBpc0hvcml6b250YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gaXNIb3Jpem9udGFsID8gcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IDogcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGg7XG5cbiAgICAgICAgcmVzdWx0ID0gZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uKFxuICAgICAgICAgICAgcmVjdGFuZ2xlLFxuICAgICAgICAgICAgbG9jYXRpb24gLSBBQlNUUkFDVF9IQU5ETEVfTUFTS19XSURUSCAvIDIsXG4gICAgICAgICAgICBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0LFxuICAgICAgICAgICAgaXNIb3Jpem9udGFsXG4gICAgICAgICk7XG4gICAgICAgIHJlc3VsdCA9IGdldFJlY3RhbmdsZUJ5UmVzaXppbmdMb2NhdGlvbihyZXN1bHQsIGxvY2F0aW9uICsgQUJTVFJBQ1RfSEFORExFX01BU0tfV0lEVEggLyAyLCBwb3NpdGlvbiwgaXNIb3Jpem9udGFsKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTG9jYXRpb25MZWZ0SW5kZXgoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhcmVudENoaWxkcmVuOiBNaW5kRWxlbWVudFtdLCBsb2NhdGlvbjogbnVtYmVyLCBpc0hvcml6b250YWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudENoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XG4gICAgICAgIHJldHVybiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlY0FycmF5ID0gY2hpbGRyZW4ubWFwKGNoaWxkID0+IHtcbiAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIFtjaGlsZF0sIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpcnN0UmVjID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgW2NoaWxkcmVuWzBdXSwgdHJ1ZSk7XG4gICAgY29uc3QgZmFrZUxlZnRSZWMgPSB7XG4gICAgICAgIHg6IGZpcnN0UmVjLnggLSBmaXJzdFJlYy53aWR0aCxcbiAgICAgICAgeTogZmlyc3RSZWMueSAtIGZpcnN0UmVjLmhlaWdodCxcbiAgICAgICAgd2lkdGg6IGZpcnN0UmVjLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGZpcnN0UmVjLmhlaWdodFxuICAgIH07XG4gICAgY29uc3QgbGFzdFJlYyA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIFtjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXV0sIHRydWUpO1xuICAgIGNvbnN0IGZha2VSaWdodFJlYyA9IHtcbiAgICAgICAgeDogbGFzdFJlYy54ICsgbGFzdFJlYy53aWR0aCxcbiAgICAgICAgeTogbGFzdFJlYy55ICsgbGFzdFJlYy5oZWlnaHQsXG4gICAgICAgIHdpZHRoOiBsYXN0UmVjLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGxhc3RSZWMuaGVpZ2h0XG4gICAgfTtcblxuICAgIHJlY0FycmF5LnB1c2goZmFrZVJpZ2h0UmVjKTtcbiAgICByZWNBcnJheS51bnNoaWZ0KGZha2VMZWZ0UmVjKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjQXJyYXkubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJlY1hPclkgPSBpc0hvcml6b250YWwgPyByZWNBcnJheVtpXS55IDogcmVjQXJyYXlbaV0ueDtcbiAgICAgICAgY29uc3QgcmVjV2lkdGhPckhlaWdodCA9IGlzSG9yaXpvbnRhbCA/IHJlY0FycmF5W2ldLmhlaWdodCA6IHJlY0FycmF5W2ldLndpZHRoO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGxvY2F0aW9uID49IHJlY1hPclkgKyByZWNXaWR0aE9ySGVpZ2h0IC8gMiAmJlxuICAgICAgICAgICAgbG9jYXRpb24gPD0gcmVjQXJyYXlbaSArIDFdW2lzSG9yaXpvbnRhbCA/ICd5JyA6ICd4J10gKyByZWNBcnJheVtpICsgMV1baXNIb3Jpem9udGFsID8gJ2hlaWdodCcgOiAnd2lkdGgnXSAvIDJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gaSAtIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVUb3VjaGVkQWJzdHJhY3QoYm9hcmQ6IFBsYWl0Qm9hcmQsIHRvdWNoZWRBYnN0cmFjdDogTWluZEVsZW1lbnQgfCB1bmRlZmluZWQsIGVuZFBvaW50OiBQb2ludCkge1xuICAgIGxldCB0b3VjaGVkSGFuZGxlO1xuICAgIGNvbnN0IGFic3RyYWN0ID0gKGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpLmZpbHRlcihlbGVtZW50ID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpKSBhcyBNaW5kRWxlbWVudFtdKS5maW5kKGVsZW1lbnQgPT4ge1xuICAgICAgICB0b3VjaGVkSGFuZGxlID0gZ2V0SGl0QWJzdHJhY3RIYW5kbGUoYm9hcmQsIGVsZW1lbnQgYXMgTWluZEVsZW1lbnQsIGVuZFBvaW50KTtcbiAgICAgICAgcmV0dXJuIHRvdWNoZWRIYW5kbGU7XG4gICAgfSk7XG5cbiAgICBpZiAodG91Y2hlZEFic3RyYWN0ID09PSBhYnN0cmFjdCkge1xuICAgICAgICByZXR1cm4gdG91Y2hlZEFic3RyYWN0O1xuICAgIH1cblxuICAgIGlmICh0b3VjaGVkQWJzdHJhY3QpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0b3VjaGVkQWJzdHJhY3QhKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgY29tcG9uZW50LmFjdGl2ZUdlbmVyYXRvci51cGRhdGVBYnN0cmFjdE91dGxpbmUodG91Y2hlZEFic3RyYWN0KTtcbiAgICAgICAgdG91Y2hlZEFic3RyYWN0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChhYnN0cmFjdCkge1xuICAgICAgICB0b3VjaGVkQWJzdHJhY3QgPSBhYnN0cmFjdDtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0b3VjaGVkQWJzdHJhY3QhKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgY29tcG9uZW50LmFjdGl2ZUdlbmVyYXRvci51cGRhdGVBYnN0cmFjdE91dGxpbmUodG91Y2hlZEFic3RyYWN0LCB0b3VjaGVkSGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG91Y2hlZEFic3RyYWN0O1xufVxuIl19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxZQUFZLEVBQVMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FDMUMsaUJBQWtDLEVBQ2xDLFFBQWdCLEVBQ2hCLG9CQUE0QyxFQUM1QyxZQUFxQixFQUN2QixFQUFFO0lBQ0EsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNmLElBQUksb0JBQW9CLEtBQUssc0JBQXNCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEQsT0FBTztnQkFDSCxHQUFHLGlCQUFpQjtnQkFDcEIsQ0FBQyxFQUFFLFFBQVE7Z0JBQ1gsTUFBTSxFQUFFLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsUUFBUTthQUNwRSxDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPO2dCQUNILEdBQUcsaUJBQWlCO2dCQUNwQixN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QUUsQ0FBQztRQUNYLGVBQWUsR0FBRyxRQUFRLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBd0IsZUFBZSxDQUFDLENBQUM7UUFDL0UsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBc0IsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkYsZUFBZSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsT0FBTyxlQUFlLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cywgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIExheW91dE5vZGUsIE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBBQlNUUkFDVF9IQU5ETEVfTUFTS19XSURUSCwgQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYWJzdHJhY3Qtbm9kZSc7XG5pbXBvcnQgeyBNaW5kUXVlcmllcyB9IGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgZ2V0Q29ycmVjdFN0YXJ0RW5kIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9taW5kLW5vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IEFic3RyYWN0SGFuZGxlUG9zaXRpb24gfSBmcm9tICcuLi8uLi9wbHVnaW5zL3dpdGgtYWJzdHJhY3QtcmVzaXplLmJvYXJkJztcbmltcG9ydCB7IFBsYWl0Q29tbW9uRWxlbWVudFJlZiB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgTm9kZUFjdGl2ZUdlbmVyYXRvciB9IGZyb20gJy4uLy4uL2dlbmVyYXRvcnMvbm9kZS1hY3RpdmUuZ2VuZXJhdG9yJztcblxuZXhwb3J0IGNvbnN0IGdldFJlY3RhbmdsZUJ5UmVzaXppbmdMb2NhdGlvbiA9IChcbiAgICBhYnN0cmFjdFJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGxvY2F0aW9uOiBudW1iZXIsXG4gICAgYWN0aXZlSGFuZGxlUG9zaXRpb246IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sXG4gICAgaXNIb3Jpem9udGFsOiBib29sZWFuXG4pID0+IHtcbiAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgIGlmIChhY3RpdmVIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hYnN0cmFjdFJlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICB5OiBsb2NhdGlvbixcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGFic3RyYWN0UmVjdGFuZ2xlLmhlaWdodCArIGFic3RyYWN0UmVjdGFuZ2xlLnkgLSBsb2NhdGlvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWJzdHJhY3RSZWN0YW5nbGUsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBsb2NhdGlvbiAtIGFic3RyYWN0UmVjdGFuZ2xlLnlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYWN0aXZlSGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWJzdHJhY3RSZWN0YW5nbGUsXG4gICAgICAgICAgICAgICAgeDogbG9jYXRpb24sXG4gICAgICAgICAgICAgICAgd2lkdGg6IGFic3RyYWN0UmVjdGFuZ2xlLndpZHRoICsgYWJzdHJhY3RSZWN0YW5nbGUueCAtIGxvY2F0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hYnN0cmFjdFJlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICB3aWR0aDogbG9jYXRpb24gLSBhYnN0cmFjdFJlY3RhbmdsZS54XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldExvY2F0aW9uU2NvcGUgPSAoXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgaGFuZGxlUG9zaXRpb246IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sXG4gICAgcGFyZW50Q2hpbGRyZW46IE1pbmRFbGVtZW50W10sXG4gICAgZWxlbWVudDogTWluZEVsZW1lbnQsXG4gICAgcGFyZW50OiBMYXlvdXROb2RlLFxuICAgIGlzSG9yaXpvbnRhbDogYm9vbGVhblxuKSA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IChNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpIGFzIHVua25vd24pIGFzIExheW91dE5vZGU7XG4gICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBnZXRDb3JyZWN0U3RhcnRFbmQobm9kZS5vcmlnaW4gYXMgQWJzdHJhY3ROb2RlLCBwYXJlbnQpO1xuXG4gICAgY29uc3Qgc3RhcnROb2RlID0gcGFyZW50Q2hpbGRyZW5bc3RhcnRdO1xuICAgIGNvbnN0IGVuZE5vZGUgPSBwYXJlbnRDaGlsZHJlbltlbmRdO1xuXG4gICAgaWYgKGhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0KSB7XG4gICAgICAgIGNvbnN0IGFic3RyYWN0Tm9kZSA9IHBhcmVudENoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCkgJiYgY2hpbGQuZW5kIDwgZWxlbWVudC5zdGFydCEpO1xuICAgICAgICBsZXQgbWluTm9kZTtcblxuICAgICAgICBpZiAoYWJzdHJhY3ROb2RlLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBhYnN0cmFjdE5vZGVcbiAgICAgICAgICAgICAgICAubWFwKG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGVuZCB9ID0gZ2V0Q29ycmVjdFN0YXJ0RW5kKG5vZGUgYXMgQWJzdHJhY3ROb2RlLCBwYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5kO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIgLSBhKVswXTtcbiAgICAgICAgICAgIG1pbk5vZGUgPSBwYXJlbnRDaGlsZHJlbltpbmRleCArIDFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWluTm9kZSA9IHBhcmVudENoaWxkcmVuWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWluTm9kZVJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIFttaW5Ob2RlXSwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGVuZE5vZGVSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBbZW5kTm9kZV0sIGZhbHNlKTtcblxuICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1heDogZW5kTm9kZVJlY3RhbmdsZS55IC0gQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVQsXG4gICAgICAgICAgICAgICAgbWluOiBtaW5Ob2RlUmVjdGFuZ2xlLnkgLSBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWF4OiBlbmROb2RlUmVjdGFuZ2xlLnggLSBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCxcbiAgICAgICAgICAgICAgICBtaW46IG1pbk5vZGVSZWN0YW5nbGUueCAtIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYWJzdHJhY3ROb2RlID0gcGFyZW50Q2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5zdGFydCA+IGVsZW1lbnQuZW5kISk7XG4gICAgICAgIGxldCBtYXhOb2RlO1xuXG4gICAgICAgIGlmIChhYnN0cmFjdE5vZGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGFic3RyYWN0Tm9kZVxuICAgICAgICAgICAgICAgIC5tYXAobm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhcnQgfSA9IGdldENvcnJlY3RTdGFydEVuZChub2RlIGFzIEFic3RyYWN0Tm9kZSwgcGFyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEgLSBiKVswXTtcbiAgICAgICAgICAgIG1heE5vZGUgPSBwYXJlbnRDaGlsZHJlbltpbmRleCAtIDFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnRDaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSk7XG4gICAgICAgICAgICBtYXhOb2RlID0gcGFyZW50Q2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXhOb2RlUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgW21heE5vZGVdLCB0cnVlKTtcbiAgICAgICAgY29uc3Qgc3RhcnROb2RlUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgW3N0YXJ0Tm9kZV0sIGZhbHNlKTtcblxuICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1heDogbWF4Tm9kZVJlY3RhbmdsZS55ICsgbWF4Tm9kZVJlY3RhbmdsZS5oZWlnaHQgKyBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCxcbiAgICAgICAgICAgICAgICBtaW46IHN0YXJ0Tm9kZVJlY3RhbmdsZS55ICsgc3RhcnROb2RlUmVjdGFuZ2xlLmhlaWdodCArIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtYXg6IG1heE5vZGVSZWN0YW5nbGUueCArIG1heE5vZGVSZWN0YW5nbGUud2lkdGggKyBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCxcbiAgICAgICAgICAgICAgICBtaW46IHN0YXJ0Tm9kZVJlY3RhbmdsZS54ICsgc3RhcnROb2RlUmVjdGFuZ2xlLndpZHRoICsgQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SGl0QWJzdHJhY3RIYW5kbGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50LCBwb2ludDogUG9pbnQpID0+IHtcbiAgICBjb25zdCBub2RlTGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChib2FyZCwgZWxlbWVudCkgYXMgTWluZExheW91dFR5cGU7XG4gICAgY29uc3QgaXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsTGF5b3V0KG5vZGVMYXlvdXQpO1xuXG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50KTtcbiAgICBjb25zdCBpbmNsdWRlZEVsZW1lbnRzID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbi5zbGljZShlbGVtZW50LnN0YXJ0ISwgZWxlbWVudC5lbmQhICsgMSk7XG4gICAgbGV0IGFic3RyYWN0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgaW5jbHVkZWRFbGVtZW50cywgdHJ1ZSk7XG4gICAgYWJzdHJhY3RSZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0T3V0bGluZVJlY3RhbmdsZShhYnN0cmFjdFJlY3RhbmdsZSwgLUFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUKTtcblxuICAgIGNvbnN0IHN0YXJ0SGFuZGxlUmVjID0gZ2V0QWJzdHJhY3RIYW5kbGVSZWN0YW5nbGUoYWJzdHJhY3RSZWN0YW5nbGUsIGlzSG9yaXpvbnRhbCwgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCk7XG4gICAgY29uc3QgZW5kSGFuZGxlUmVjID0gZ2V0QWJzdHJhY3RIYW5kbGVSZWN0YW5nbGUoYWJzdHJhY3RSZWN0YW5nbGUsIGlzSG9yaXpvbnRhbCwgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5lbmQpO1xuXG4gICAgY29uc3QgcG9pbnRSZWMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3BvaW50LCBwb2ludF0pO1xuICAgIGlmIChSZWN0YW5nbGVDbGllbnQuaXNIaXQocG9pbnRSZWMsIHN0YXJ0SGFuZGxlUmVjKSkgcmV0dXJuIEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQ7XG4gICAgaWYgKFJlY3RhbmdsZUNsaWVudC5pc0hpdChwb2ludFJlYywgZW5kSGFuZGxlUmVjKSkgcmV0dXJuIEFic3RyYWN0SGFuZGxlUG9zaXRpb24uZW5kO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWJzdHJhY3RIYW5kbGVSZWN0YW5nbGUgPSAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGlzSG9yaXpvbnRhbDogYm9vbGVhbiwgcG9zaXRpb246IEFic3RyYWN0SGFuZGxlUG9zaXRpb24pID0+IHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGlmIChwb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCkge1xuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGlzSG9yaXpvbnRhbCA/IHJlY3RhbmdsZS55IDogcmVjdGFuZ2xlLng7XG5cbiAgICAgICAgcmVzdWx0ID0gZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uKFxuICAgICAgICAgICAgcmVjdGFuZ2xlLFxuICAgICAgICAgICAgbG9jYXRpb24gKyBBQlNUUkFDVF9IQU5ETEVfTUFTS19XSURUSCAvIDIsXG4gICAgICAgICAgICBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLmVuZCxcbiAgICAgICAgICAgIGlzSG9yaXpvbnRhbFxuICAgICAgICApO1xuICAgICAgICByZXN1bHQgPSBnZXRSZWN0YW5nbGVCeVJlc2l6aW5nTG9jYXRpb24ocmVzdWx0LCBsb2NhdGlvbiAtIEFCU1RSQUNUX0hBTkRMRV9NQVNLX1dJRFRIIC8gMiwgcG9zaXRpb24sIGlzSG9yaXpvbnRhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSBpc0hvcml6b250YWwgPyByZWN0YW5nbGUueSArIHJlY3RhbmdsZS5oZWlnaHQgOiByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aDtcblxuICAgICAgICByZXN1bHQgPSBnZXRSZWN0YW5nbGVCeVJlc2l6aW5nTG9jYXRpb24oXG4gICAgICAgICAgICByZWN0YW5nbGUsXG4gICAgICAgICAgICBsb2NhdGlvbiAtIEFCU1RSQUNUX0hBTkRMRV9NQVNLX1dJRFRIIC8gMixcbiAgICAgICAgICAgIEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQsXG4gICAgICAgICAgICBpc0hvcml6b250YWxcbiAgICAgICAgKTtcbiAgICAgICAgcmVzdWx0ID0gZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uKHJlc3VsdCwgbG9jYXRpb24gKyBBQlNUUkFDVF9IQU5ETEVfTUFTS19XSURUSCAvIDIsIHBvc2l0aW9uLCBpc0hvcml6b250YWwpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRMb2NhdGlvbkxlZnRJbmRleChib2FyZDogUGxhaXRCb2FyZCwgcGFyZW50Q2hpbGRyZW46IE1pbmRFbGVtZW50W10sIGxvY2F0aW9uOiBudW1iZXIsIGlzSG9yaXpvbnRhbDogYm9vbGVhbikge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyZW50Q2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IHtcbiAgICAgICAgcmV0dXJuICFBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChjaGlsZCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVjQXJyYXkgPSBjaGlsZHJlbi5tYXAoY2hpbGQgPT4ge1xuICAgICAgICByZXR1cm4gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgW2NoaWxkXSwgZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZmlyc3RSZWMgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBbY2hpbGRyZW5bMF1dLCB0cnVlKTtcbiAgICBjb25zdCBmYWtlTGVmdFJlYyA9IHtcbiAgICAgICAgeDogZmlyc3RSZWMueCAtIGZpcnN0UmVjLndpZHRoLFxuICAgICAgICB5OiBmaXJzdFJlYy55IC0gZmlyc3RSZWMuaGVpZ2h0LFxuICAgICAgICB3aWR0aDogZmlyc3RSZWMud2lkdGgsXG4gICAgICAgIGhlaWdodDogZmlyc3RSZWMuaGVpZ2h0XG4gICAgfTtcbiAgICBjb25zdCBsYXN0UmVjID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgW2NoaWxkcmVuW2NoaWxkcmVuLmxlbmd0aCAtIDFdXSwgdHJ1ZSk7XG4gICAgY29uc3QgZmFrZVJpZ2h0UmVjID0ge1xuICAgICAgICB4OiBsYXN0UmVjLnggKyBsYXN0UmVjLndpZHRoLFxuICAgICAgICB5OiBsYXN0UmVjLnkgKyBsYXN0UmVjLmhlaWdodCxcbiAgICAgICAgd2lkdGg6IGxhc3RSZWMud2lkdGgsXG4gICAgICAgIGhlaWdodDogbGFzdFJlYy5oZWlnaHRcbiAgICB9O1xuXG4gICAgcmVjQXJyYXkucHVzaChmYWtlUmlnaHRSZWMpO1xuICAgIHJlY0FycmF5LnVuc2hpZnQoZmFrZUxlZnRSZWMpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWNBcnJheS5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVjWE9yWSA9IGlzSG9yaXpvbnRhbCA/IHJlY0FycmF5W2ldLnkgOiByZWNBcnJheVtpXS54O1xuICAgICAgICBjb25zdCByZWNXaWR0aE9ySGVpZ2h0ID0gaXNIb3Jpem9udGFsID8gcmVjQXJyYXlbaV0uaGVpZ2h0IDogcmVjQXJyYXlbaV0ud2lkdGg7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgbG9jYXRpb24gPj0gcmVjWE9yWSArIHJlY1dpZHRoT3JIZWlnaHQgLyAyICYmXG4gICAgICAgICAgICBsb2NhdGlvbiA8PSByZWNBcnJheVtpICsgMV1baXNIb3Jpem9udGFsID8gJ3knIDogJ3gnXSArIHJlY0FycmF5W2kgKyAxXVtpc0hvcml6b250YWwgPyAnaGVpZ2h0JyA6ICd3aWR0aCddIC8gMlxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBpIC0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVRvdWNoZWRBYnN0cmFjdChib2FyZDogUGxhaXRCb2FyZCwgdG91Y2hlZEFic3RyYWN0OiBNaW5kRWxlbWVudCB8IHVuZGVmaW5lZCwgZW5kUG9pbnQ6IFBvaW50KSB7XG4gICAgbGV0IHRvdWNoZWRIYW5kbGU7XG4gICAgY29uc3QgYWJzdHJhY3QgPSAoZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKGVsZW1lbnQgPT4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkpIGFzIE1pbmRFbGVtZW50W10pLmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgIHRvdWNoZWRIYW5kbGUgPSBnZXRIaXRBYnN0cmFjdEhhbmRsZShib2FyZCwgZWxlbWVudCBhcyBNaW5kRWxlbWVudCwgZW5kUG9pbnQpO1xuICAgICAgICByZXR1cm4gdG91Y2hlZEhhbmRsZTtcbiAgICB9KTtcblxuICAgIGlmICh0b3VjaGVkQWJzdHJhY3QgPT09IGFic3RyYWN0KSB7XG4gICAgICAgIHJldHVybiB0b3VjaGVkQWJzdHJhY3Q7XG4gICAgfVxuXG4gICAgaWYgKHRvdWNoZWRBYnN0cmFjdCkge1xuICAgICAgICBjb25zdCByZWYgPSBQbGFpdEVsZW1lbnQuZ2V0RWxlbWVudFJlZjxQbGFpdENvbW1vbkVsZW1lbnRSZWY+KHRvdWNoZWRBYnN0cmFjdCk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUdlbmVyYXRvciA9IHJlZi5nZXRHZW5lcmF0b3I8Tm9kZUFjdGl2ZUdlbmVyYXRvcj4oTm9kZUFjdGl2ZUdlbmVyYXRvci5rZXkpO1xuICAgICAgICBhY3RpdmVHZW5lcmF0b3IudXBkYXRlQWJzdHJhY3RPdXRsaW5lKHRvdWNoZWRBYnN0cmFjdCk7XG4gICAgICAgIHRvdWNoZWRBYnN0cmFjdCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoYWJzdHJhY3QpIHtcbiAgICAgICAgdG91Y2hlZEFic3RyYWN0ID0gYWJzdHJhY3Q7XG4gICAgICAgIGNvbnN0IHJlZiA9IFBsYWl0RWxlbWVudC5nZXRFbGVtZW50UmVmPFBsYWl0Q29tbW9uRWxlbWVudFJlZj4odG91Y2hlZEFic3RyYWN0KTtcbiAgICAgICAgY29uc3QgYWN0aXZlR2VuZXJhdG9yID0gcmVmLmdldEdlbmVyYXRvcjxOb2RlQWN0aXZlR2VuZXJhdG9yPihOb2RlQWN0aXZlR2VuZXJhdG9yLmtleSk7XG4gICAgICAgIGFjdGl2ZUdlbmVyYXRvci51cGRhdGVBYnN0cmFjdE91dGxpbmUodG91Y2hlZEFic3RyYWN0LCB0b3VjaGVkSGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG91Y2hlZEFic3RyYWN0O1xufVxuIl19
@@ -1,4 +1,4 @@
1
- import { getSelectedElements, PlaitBoard, Transforms } from '@plait/core';
1
+ import { getSelectedElements, PlaitBoard, Transforms, WritableClipboardOperationType } from '@plait/core';
2
2
  import { MindElement, PlaitMind } from '../interfaces';
3
3
  import { copyNewNode } from './mind';
4
4
  import { getRectangleByNode } from './position/node';
@@ -52,7 +52,7 @@ export const buildClipboardData = (board, selectedElements, startPoint) => {
52
52
  });
53
53
  return result;
54
54
  };
55
- export const insertClipboardData = (board, elements, targetPoint) => {
55
+ export const insertClipboardData = (board, elements, targetPoint, operationType) => {
56
56
  let newElement, path;
57
57
  const selectedElements = getSelectedElements(board);
58
58
  let newELements = [];
@@ -62,7 +62,7 @@ export const insertClipboardData = (board, elements, targetPoint) => {
62
62
  const nonAbstractChildrenLength = targetParent && getNonAbstractChildren(targetParent).length;
63
63
  elements.forEach((item, index) => {
64
64
  newElement = copyNewNode(item);
65
- if (hasTargetParent) {
65
+ if (hasTargetParent && operationType !== WritableClipboardOperationType.duplicate) {
66
66
  if (item.isRoot) {
67
67
  newElement = adjustRootToNode(board, newElement);
68
68
  const styles = PlaitMind.isMind(targetParent) ? { fontFamily: BRANCH_FONT_FAMILY } : { fontFamily: DEFAULT_FONT_FAMILY };
@@ -104,4 +104,4 @@ export const insertClipboardText = (board, targetParent, text) => {
104
104
  Transforms.insertNode(board, newElement, findNewChildNodePath(board, targetParent));
105
105
  Transforms.addSelectionWithTemporaryElements(board, [newElement]);
106
106
  };
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBUSxVQUFVLEVBQXVCLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsZ0JBQStCLEVBQUUsVUFBaUIsRUFBRSxFQUFFO0lBQ3hHLElBQUksTUFBTSxHQUFrQixFQUFFLENBQUM7SUFFL0Is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WCxDQUFDLENBQUMsQ0FBQztJQUNILFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFxQixFQUFFLFlBQTBCLEVBQUUsSUFBc0IsRUFBRSxFQUFFO0lBQzdHLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLENBQUM7SUFDekgsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RixNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFNlbGVjdGVkRWxlbWVudHMsIFBhdGgsIFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjb3B5TmV3Tm9kZSB9IGZyb20gJy4vbWluZCc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuL3Bvc2l0aW9uL25vZGUnO1xuaW1wb3J0IHsgQWJzdHJhY3ROb2RlLCBnZXROb25BYnN0cmFjdENoaWxkcmVuIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgZ2V0UmVsYXRpdmVTdGFydEVuZEJ5QWJzdHJhY3RSZWYsIGdldE92ZXJhbGxBYnN0cmFjdHMsIGdldFZhbGlkQWJzdHJhY3RSZWZzIH0gZnJvbSAnLi9hYnN0cmFjdC9jb21tb24nO1xuaW1wb3J0IHsgY3JlYXRlTWluZEVsZW1lbnQgfSBmcm9tICcuL25vZGUvY3JlYXRlLW5vZGUnO1xuaW1wb3J0IHsgYWRqdXN0QWJzdHJhY3RUb05vZGUsIGFkanVzdE5vZGVUb1Jvb3QsIGFkanVzdFJvb3RUb05vZGUgfSBmcm9tICcuL25vZGUvYWRqdXN0LW5vZGUnO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IGdldFRleHRTaXplIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgQlJBTkNIX0ZPTlRfRkFNSUxZLCBERUZBVUxUX0ZPTlRfRkFNSUxZLCBST09UX1RPUElDX0ZPTlRfU0laRSwgVE9QSUNfREVGQVVMVF9NQVhfV09SRF9DT1VOVCB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXRvcGljLXN0eWxlJztcbmltcG9ydCB7IGZpbmROZXdDaGlsZE5vZGVQYXRoIH0gZnJvbSAnLi9wYXRoJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgZ2V0Rm9udFNpemVCeVNsYXRlRWxlbWVudCB9IGZyb20gJy4vc3BhY2Uvbm9kZS1zcGFjZSc7XG5cbmV4cG9ydCBjb25zdCBidWlsZENsaXBib2FyZERhdGEgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdGVkRWxlbWVudHM6IE1pbmRFbGVtZW50W10sIHN0YXJ0UG9pbnQ6IFBvaW50KSA9PiB7XG4gICAgbGV0IHJlc3VsdDogTWluZEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgLy8gZ2V0IG92ZXJhbGwgYWJzdHJhY3RcbiAgICBjb25zdCBvdmVyYWxsQWJzdHJhY3RzID0gZ2V0T3ZlcmFsbEFic3RyYWN0cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cykgYXMgTWluZEVsZW1lbnRbXTtcbiAgICAvLyBnZXQgdmFsaWQgYWJzdHJhY3QgcmVmc1xuICAgIGNvbnN0IHZhbGlkQWJzdHJhY3RSZWZzID0gZ2V0VmFsaWRBYnN0cmFjdFJlZnMoYm9hcmQsIFsuLi5zZWxlY3RlZEVsZW1lbnRzLCAuLi5vdmVyYWxsQWJzdHJhY3RzXSk7XG5cbiAgICAvLyBrZWVwIGNvcnJlY3Qgb3JkZXJcbiAgICBjb25zdCBuZXdTZWxlY3RlZEVsZW1lbnRzID0gc2VsZWN0ZWRFbGVtZW50cy5maWx0ZXIodmFsdWUgPT4gIXZhbGlkQWJzdHJhY3RSZWZzLmZpbmQocmVmID0+IHJlZi5hYnN0cmFjdCA9PT0gdmFsdWUpKTtcbiAgICBuZXdTZWxlY3RlZEVsZW1lbnRzLnB1c2goLi4udmFsaWRBYnN0cmFjdFJlZnMubWFwKHZhbHVlID0+IHZhbHVlLmFic3RyYWN0KSk7XG5cbiAgICBjb25zdCBzZWxlY3RlZE1pbmROb2RlcyA9IG5ld1NlbGVjdGVkRWxlbWVudHMubWFwKHZhbHVlID0+IE1pbmRFbGVtZW50LmdldE5vZGUodmFsdWUpKTtcbiAgICBuZXdTZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgIC8vIGhhbmRsZSByZWxhdGl2ZSBsb2NhdGlvblxuICAgICAgICBjb25zdCBub2RlUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHNlbGVjdGVkTWluZE5vZGVzW2luZGV4XSk7XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IFtbbm9kZVJlY3RhbmdsZS54IC0gc3RhcnRQb2ludFswXSwgbm9kZVJlY3RhbmdsZS55IC0gc3RhcnRQb2ludFsxXV1dIGFzIFBvaW50W107XG5cbiAgICAgICAgLy8gaGFuZGxlIGludmFsaWQgYWJzdHJhY3RcbiAgICAgICAgY29uc3QgYWJzdHJhY3RSZWYgPSB2YWxpZEFic3RyYWN0UmVmcy5maW5kKHJlZiA9PiByZWYuYWJzdHJhY3QgPT09IGVsZW1lbnQpO1xuICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkgJiYgYWJzdHJhY3RSZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gZ2V0UmVsYXRpdmVTdGFydEVuZEJ5QWJzdHJhY3RSZWYoYWJzdHJhY3RSZWYsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgICAgICAgICAgcG9pbnRzLFxuICAgICAgICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3RWxlbWVudCA9IHsgLi4uZWxlbWVudCwgcG9pbnRzIH0gYXMgTWluZEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0VsZW1lbnQuc3RhcnQ7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0VsZW1lbnQuZW5kO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHBvaW50czogcG9pbnRzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydENsaXBib2FyZERhdGEgPSAoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10sIHRhcmdldFBvaW50OiBQb2ludCkgPT4ge1xuICAgIGxldCBuZXdFbGVtZW50OiBNaW5kRWxlbWVudCwgcGF0aDogUGF0aDtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgbGV0IG5ld0VMZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgaGFzVGFyZ2V0UGFyZW50ID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDE7XG4gICAgY29uc3QgdGFyZ2V0UGFyZW50ID0gc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICBjb25zdCB0YXJnZXRQYXJlbnRQYXRoID0gdGFyZ2V0UGFyZW50ICYmIFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHRhcmdldFBhcmVudCk7XG4gICAgY29uc3Qgbm9uQWJzdHJhY3RDaGlsZHJlbkxlbmd0aCA9IHRhcmdldFBhcmVudCAmJiBnZXROb25BYnN0cmFjdENoaWxkcmVuKHRhcmdldFBhcmVudCkubGVuZ3RoO1xuXG4gICAgZWxlbWVudHMuZm9yRWFjaCgoaXRlbTogUGxhaXRFbGVtZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIG5ld0VsZW1lbnQgPSBjb3B5TmV3Tm9kZShpdGVtIGFzIE1pbmRFbGVtZW50KTtcbiAgICAgICAgaWYgKGhhc1RhcmdldFBhcmVudCkge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaXNSb290KSB7XG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudCA9IGFkanVzdFJvb3RUb05vZGUoYm9hcmQsIG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0eWxlcyA9IFBsYWl0TWluZC5pc01pbmQodGFyZ2V0UGFyZW50KSA/IHsgZm9udEZhbWlseTogQlJBTkNIX0ZPTlRfRkFNSUxZIH0gOiB7IGZvbnRGYW1pbHk6IERFRkFVTFRfRk9OVF9GQU1JTFkgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFRleHRTaXplKGJvYXJkLCBuZXdFbGVtZW50LmRhdGEudG9waWMsIFRPUElDX0RFRkFVTFRfTUFYX1dPUkRfQ09VTlQsIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3R5bGVzLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogbmV3RWxlbWVudC5tYW51YWxXaWR0aCA/IG5ld0VsZW1lbnQubWFudWFsV2lkdGggOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LndpZHRoID0gTWF0aC5tYXgod2lkdGgsIFJPT1RfVE9QSUNfRk9OVF9TSVpFKTtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBhYnN0cmFjdCBzdGFydCBhbmQgZW5kXG4gICAgICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QobmV3RWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnN0YXJ0ID0gbmV3RWxlbWVudC5zdGFydCArIG5vbkFic3RyYWN0Q2hpbGRyZW5MZW5ndGg7XG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5lbmQgPSBuZXdFbGVtZW50LmVuZCArIG5vbkFic3RyYWN0Q2hpbGRyZW5MZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXRoID0gWy4uLnRhcmdldFBhcmVudFBhdGgsIG5vbkFic3RyYWN0Q2hpbGRyZW5MZW5ndGggKyBpbmRleF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludDogUG9pbnQgPSBbdGFyZ2V0UG9pbnRbMF0gKyBpdGVtLnBvaW50cyFbMF1bMF0sIHRhcmdldFBvaW50WzFdICsgaXRlbS5wb2ludHMhWzBdWzFdXTtcbiAgICAgICAgICAgIG5ld0VsZW1lbnQucG9pbnRzID0gW3BvaW50XTtcblxuICAgICAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudCA9IGFkanVzdEFic3RyYWN0VG9Ob2RlKG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWl0ZW0uaXNSb290KSB7XG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudCA9IGFkanVzdE5vZGVUb1Jvb3QoYm9hcmQsIG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXRoID0gW2JvYXJkLmNoaWxkcmVuLmxlbmd0aF07XG4gICAgICAgIH1cbiAgICAgICAgbmV3RUxlbWVudHMucHVzaChuZXdFbGVtZW50KTtcbiAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH0pO1xuICAgIFRyYW5zZm9ybXMuYWRkU2VsZWN0aW9uV2l0aFRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkLCBuZXdFTGVtZW50cyk7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0Q2xpcGJvYXJkVGV4dCA9IChib2FyZDogUGxhaXRNaW5kQm9hcmQsIHRhcmdldFBhcmVudDogUGxhaXRFbGVtZW50LCB0ZXh0OiBzdHJpbmcgfCBFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc3R5bGVzID0gUGxhaXRNaW5kLmlzTWluZCh0YXJnZXRQYXJlbnQpID8geyBmb250RmFtaWx5OiBCUkFOQ0hfRk9OVF9GQU1JTFkgfSA6IHsgZm9udEZhbWlseTogREVGQVVMVF9GT05UX0ZBTUlMWSB9O1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0VGV4dFNpemUoYm9hcmQsIHRleHQsIFRPUElDX0RFRkFVTFRfTUFYX1dPUkRfQ09VTlQsIHN0eWxlcyk7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IGNyZWF0ZU1pbmRFbGVtZW50KHRleHQsIE1hdGgubWF4KHdpZHRoLCBnZXRGb250U2l6ZUJ5U2xhdGVFbGVtZW50KHRleHQpKSwgaGVpZ2h0LCB7fSk7XG4gICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBmaW5kTmV3Q2hpbGROb2RlUGF0aChib2FyZCwgdGFyZ2V0UGFyZW50KSk7XG4gICAgVHJhbnNmb3Jtcy5hZGRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQsIFtuZXdFbGVtZW50XSk7XG59O1xuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBUSxVQUFVLEVBQXVCLFVBQVUsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNySSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQWlCLEVBQUUsZ0JBQStCLEVBQUUsVUFBaUIsRUFBRSxFQUFFO0lBQ3hHLElBQUksTUFBTSxHQUFrQixFQUFF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VUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0MsT0FBTztJQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ0gsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNyRSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQXFCLEVBQUUsWUFBMEIsRUFBRSxJQUFzQixFQUFFLEVBQUU7SUFDN0csTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztJQUN6SCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RyxVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDcEYsVUFBVSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDdEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0U2VsZWN0ZWRFbGVtZW50cywgUGF0aCwgUGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50LCBQb2ludCwgVHJhbnNmb3JtcywgV3JpdGFibGVDbGlwYm9hcmRPcGVyYXRpb25UeXBlIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY29weU5ld05vZGUgfSBmcm9tICcuL21pbmQnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgZ2V0Tm9uQWJzdHJhY3RDaGlsZHJlbiB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGdldFJlbGF0aXZlU3RhcnRFbmRCeUFic3RyYWN0UmVmLCBnZXRPdmVyYWxsQWJzdHJhY3RzLCBnZXRWYWxpZEFic3RyYWN0UmVmcyB9IGZyb20gJy4vYWJzdHJhY3QvY29tbW9uJztcbmltcG9ydCB7IGNyZWF0ZU1pbmRFbGVtZW50IH0gZnJvbSAnLi9ub2RlL2NyZWF0ZS1ub2RlJztcbmltcG9ydCB7IGFkanVzdEFic3RyYWN0VG9Ob2RlLCBhZGp1c3ROb2RlVG9Sb290LCBhZGp1c3RSb290VG9Ob2RlIH0gZnJvbSAnLi9ub2RlL2FkanVzdC1ub2RlJztcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBnZXRUZXh0U2l6ZSB9IGZyb20gJ0BwbGFpdC90ZXh0JztcbmltcG9ydCB7IEJSQU5DSF9GT05UX0ZBTUlMWSwgREVGQVVMVF9GT05UX0ZBTUlMWSwgUk9PVF9UT1BJQ19GT05UX1NJWkUsIFRPUElDX0RFRkFVTFRfTUFYX1dPUkRfQ09VTlQgfSBmcm9tICcuLi9jb25zdGFudHMvbm9kZS10b3BpYy1zdHlsZSc7XG5pbXBvcnQgeyBmaW5kTmV3Q2hpbGROb2RlUGF0aCB9IGZyb20gJy4vcGF0aCc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcbmltcG9ydCB7IGdldEZvbnRTaXplQnlTbGF0ZUVsZW1lbnQgfSBmcm9tICcuL3NwYWNlL25vZGUtc3BhY2UnO1xuXG5leHBvcnQgY29uc3QgYnVpbGRDbGlwYm9hcmREYXRhID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzOiBNaW5kRWxlbWVudFtdLCBzdGFydFBvaW50OiBQb2ludCkgPT4ge1xuICAgIGxldCByZXN1bHQ6IE1pbmRFbGVtZW50W10gPSBbXTtcblxuICAgIC8vIGdldCBvdmVyYWxsIGFic3RyYWN0XG4gICAgY29uc3Qgb3ZlcmFsbEFic3RyYWN0cyA9IGdldE92ZXJhbGxBYnN0cmFjdHMoYm9hcmQsIHNlbGVjdGVkRWxlbWVudHMpIGFzIE1pbmRFbGVtZW50W107XG4gICAgLy8gZ2V0IHZhbGlkIGFic3RyYWN0IHJlZnNcbiAgICBjb25zdCB2YWxpZEFic3RyYWN0UmVmcyA9IGdldFZhbGlkQWJzdHJhY3RSZWZzKGJvYXJkLCBbLi4uc2VsZWN0ZWRFbGVtZW50cywgLi4ub3ZlcmFsbEFic3RyYWN0c10pO1xuXG4gICAgLy8ga2VlcCBjb3JyZWN0IG9yZGVyXG4gICAgY29uc3QgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKHZhbHVlID0+ICF2YWxpZEFic3RyYWN0UmVmcy5maW5kKHJlZiA9PiByZWYuYWJzdHJhY3QgPT09IHZhbHVlKSk7XG4gICAgbmV3U2VsZWN0ZWRFbGVtZW50cy5wdXNoKC4uLnZhbGlkQWJzdHJhY3RSZWZzLm1hcCh2YWx1ZSA9PiB2YWx1ZS5hYnN0cmFjdCkpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRNaW5kTm9kZXMgPSBuZXdTZWxlY3RlZEVsZW1lbnRzLm1hcCh2YWx1ZSA9PiBNaW5kRWxlbWVudC5nZXROb2RlKHZhbHVlKSk7XG4gICAgbmV3U2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAvLyBoYW5kbGUgcmVsYXRpdmUgbG9jYXRpb25cbiAgICAgICAgY29uc3Qgbm9kZVJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5Tm9kZShzZWxlY3RlZE1pbmROb2Rlc1tpbmRleF0pO1xuICAgICAgICBjb25zdCBwb2ludHMgPSBbW25vZGVSZWN0YW5nbGUueCAtIHN0YXJ0UG9pbnRbMF0sIG5vZGVSZWN0YW5nbGUueSAtIHN0YXJ0UG9pbnRbMV1dXSBhcyBQb2ludFtdO1xuXG4gICAgICAgIC8vIGhhbmRsZSBpbnZhbGlkIGFic3RyYWN0XG4gICAgICAgIGNvbnN0IGFic3RyYWN0UmVmID0gdmFsaWRBYnN0cmFjdFJlZnMuZmluZChyZWYgPT4gcmVmLmFic3RyYWN0ID09PSBlbGVtZW50KTtcbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpICYmIGFic3RyYWN0UmVmKSB7XG4gICAgICAgICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGdldFJlbGF0aXZlU3RhcnRFbmRCeUFic3RyYWN0UmVmKGFic3RyYWN0UmVmLCBuZXdTZWxlY3RlZEVsZW1lbnRzKTtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICAgICAgICAgIHBvaW50cyxcbiAgICAgICAgICAgICAgICBzdGFydCxcbiAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0VsZW1lbnQgPSB7IC4uLmVsZW1lbnQsIHBvaW50cyB9IGFzIE1pbmRFbGVtZW50O1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFbGVtZW50LnN0YXJ0O1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFbGVtZW50LmVuZDtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBwb2ludHM6IHBvaW50c1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRDbGlwYm9hcmREYXRhID0gKFxuICAgIGJvYXJkOiBQbGFpdE1pbmRCb2FyZCxcbiAgICBlbGVtZW50czogUGxhaXRFbGVtZW50W10sXG4gICAgdGFyZ2V0UG9pbnQ6IFBvaW50LFxuICAgIG9wZXJhdGlvblR5cGU/OiBXcml0YWJsZUNsaXBib2FyZE9wZXJhdGlvblR5cGVcbikgPT4ge1xuICAgIGxldCBuZXdFbGVtZW50OiBNaW5kRWxlbWVudCwgcGF0aDogUGF0aDtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgbGV0IG5ld0VMZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgaGFzVGFyZ2V0UGFyZW50ID0gc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDE7XG4gICAgY29uc3QgdGFyZ2V0UGFyZW50ID0gc2VsZWN0ZWRFbGVtZW50c1swXTtcbiAgICBjb25zdCB0YXJnZXRQYXJlbnRQYXRoID0gdGFyZ2V0UGFyZW50ICYmIFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHRhcmdldFBhcmVudCk7XG4gICAgY29uc3Qgbm9uQWJzdHJhY3RDaGlsZHJlbkxlbmd0aCA9IHRhcmdldFBhcmVudCAmJiBnZXROb25BYnN0cmFjdENoaWxkcmVuKHRhcmdldFBhcmVudCkubGVuZ3RoO1xuXG4gICAgZWxlbWVudHMuZm9yRWFjaCgoaXRlbTogUGxhaXRFbGVtZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIG5ld0VsZW1lbnQgPSBjb3B5TmV3Tm9kZShpdGVtIGFzIE1pbmRFbGVtZW50KTtcbiAgICAgICAgaWYgKGhhc1RhcmdldFBhcmVudCAmJiBvcGVyYXRpb25UeXBlICE9PSBXcml0YWJsZUNsaXBib2FyZE9wZXJhdGlvblR5cGUuZHVwbGljYXRlKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pc1Jvb3QpIHtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50ID0gYWRqdXN0Um9vdFRvTm9kZShib2FyZCwgbmV3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3R5bGVzID0gUGxhaXRNaW5kLmlzTWluZCh0YXJnZXRQYXJlbnQpID8geyBmb250RmFtaWx5OiBCUkFOQ0hfRk9OVF9GQU1JTFkgfSA6IHsgZm9udEZhbWlseTogREVGQVVMVF9GT05UX0ZBTUlMWSB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0VGV4dFNpemUoYm9hcmQsIG5ld0VsZW1lbnQuZGF0YS50b3BpYywgVE9QSUNfREVGQVVMVF9NQVhfV09SRF9DT1VOVCwge1xuICAgICAgICAgICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBuZXdFbGVtZW50Lm1hbnVhbFdpZHRoID8gbmV3RWxlbWVudC5tYW51YWxXaWR0aCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQud2lkdGggPSBNYXRoLm1heCh3aWR0aCwgUk9PVF9UT1BJQ19GT05UX1NJWkUpO1xuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaGFuZGxlIGFic3RyYWN0IHN0YXJ0IGFuZCBlbmRcbiAgICAgICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChuZXdFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuc3RhcnQgPSBuZXdFbGVtZW50LnN0YXJ0ICsgbm9uQWJzdHJhY3RDaGlsZHJlbkxlbmd0aDtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmVuZCA9IG5ld0VsZW1lbnQuZW5kICsgbm9uQWJzdHJhY3RDaGlsZHJlbkxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhdGggPSBbLi4udGFyZ2V0UGFyZW50UGF0aCwgbm9uQWJzdHJhY3RDaGlsZHJlbkxlbmd0aCArIGluZGV4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50OiBQb2ludCA9IFt0YXJnZXRQb2ludFswXSArIGl0ZW0ucG9pbnRzIVswXVswXSwgdGFyZ2V0UG9pbnRbMV0gKyBpdGVtLnBvaW50cyFbMF1bMV1dO1xuICAgICAgICAgICAgbmV3RWxlbWVudC5wb2ludHMgPSBbcG9pbnRdO1xuXG4gICAgICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50ID0gYWRqdXN0QWJzdHJhY3RUb05vZGUobmV3RWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXRlbS5pc1Jvb3QpIHtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50ID0gYWRqdXN0Tm9kZVRvUm9vdChib2FyZCwgbmV3RWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhdGggPSBbYm9hcmQuY2hpbGRyZW4ubGVuZ3RoXTtcbiAgICAgICAgfVxuICAgICAgICBuZXdFTGVtZW50cy5wdXNoKG5ld0VsZW1lbnQpO1xuICAgICAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xuICAgICAgICByZXR1cm47XG4gICAgfSk7XG4gICAgVHJhbnNmb3Jtcy5hZGRTZWxlY3Rpb25XaXRoVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQsIG5ld0VMZW1lbnRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRDbGlwYm9hcmRUZXh0ID0gKGJvYXJkOiBQbGFpdE1pbmRCb2FyZCwgdGFyZ2V0UGFyZW50OiBQbGFpdEVsZW1lbnQsIHRleHQ6IHN0cmluZyB8IEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzdHlsZXMgPSBQbGFpdE1pbmQuaXNNaW5kKHRhcmdldFBhcmVudCkgPyB7IGZvbnRGYW1pbHk6IEJSQU5DSF9GT05UX0ZBTUlMWSB9IDogeyBmb250RmFtaWx5OiBERUZBVUxUX0ZPTlRfRkFNSUxZIH07XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRUZXh0U2l6ZShib2FyZCwgdGV4dCwgVE9QSUNfREVGQVVMVF9NQVhfV09SRF9DT1VOVCwgc3R5bGVzKTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gY3JlYXRlTWluZEVsZW1lbnQodGV4dCwgTWF0aC5tYXgod2lkdGgsIGdldEZvbnRTaXplQnlTbGF0ZUVsZW1lbnQodGV4dCkpLCBoZWlnaHQsIHt9KTtcbiAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIGZpbmROZXdDaGlsZE5vZGVQYXRoKGJvYXJkLCB0YXJnZXRQYXJlbnQpKTtcbiAgICBUcmFuc2Zvcm1zLmFkZFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZCwgW25ld0VsZW1lbnRdKTtcbn07XG4iXX0=
@@ -12,18 +12,20 @@ import { hasPreviousOrNextOfDropPath } from '../dnd/common';
12
12
  import { drawLink } from './node-link/draw-link';
13
13
  import { getEmojiForeignRectangle } from '../position/emoji';
14
14
  import { getImageForeignRectangle } from '../position';
15
- import { getFirstTextManage } from '@plait/common';
15
+ import { ImageGenerator, getFirstTextManage } from '@plait/common';
16
+ import { NodeEmojisGenerator } from '../../generators/node-emojis.generator';
16
17
  export const drawFakeDragNode = (board, element, offsetX, offsetY) => {
17
- const activeComponent = PlaitElement.getComponent(element);
18
+ const ref = PlaitElement.getElementRef(element);
19
+ const mindNode = MindElement.getNode(element);
18
20
  const dragFakeNodeG = createG();
19
21
  dragFakeNodeG.classList.add('dragging', 'fake-node', 'plait-board-attached');
20
22
  const fakeDraggingNode = {
21
- ...activeComponent.node,
23
+ ...mindNode,
22
24
  children: [],
23
- x: activeComponent.node.x + offsetX,
24
- y: activeComponent.node.y + offsetY
25
+ x: mindNode.x + offsetX,
26
+ y: mindNode.y + offsetY
25
27
  };
26
- const textRectangle = getTopicRectangleByNode(board, activeComponent.node);
28
+ const textRectangle = getTopicRectangleByNode(board, mindNode);
27
29
  const fakeNodeG = drawRoundRectangleByNode(board, fakeDraggingNode);
28
30
  const richtextG = getFirstTextManage(element).g.cloneNode(true);
29
31
  updateForeignObject(richtextG, textRectangle.width, textRectangle.height, textRectangle.x + offsetX, textRectangle.y + offsetY);
@@ -31,13 +33,15 @@ export const drawFakeDragNode = (board, element, offsetX, offsetY) => {
31
33
  dragFakeNodeG?.append(richtextG);
32
34
  // draw emojis
33
35
  if (MindElement.hasEmojis(element)) {
34
- const fakeEmojisG = activeComponent.nodeEmojisGenerator.g.cloneNode(true);
36
+ const nodeEmojisGenerator = ref.getGenerator(NodeEmojisGenerator.key);
37
+ const fakeEmojisG = nodeEmojisGenerator.g.cloneNode(true);
35
38
  const foreignRectangle = getEmojiForeignRectangle(board, element);
36
39
  updateForeignObject(fakeEmojisG, foreignRectangle.width, foreignRectangle.height, foreignRectangle.x + offsetX, foreignRectangle.y + offsetY);
37
40
  dragFakeNodeG?.append(fakeEmojisG);
38
41
  }
39
42
  if (MindElement.hasImage(element)) {
40
- const fakeImageG = activeComponent.imageGenerator.g.cloneNode(true);
43
+ const imageGenerator = ref.getGenerator(ImageGenerator.key);
44
+ const fakeImageG = imageGenerator.g.cloneNode(true);
41
45
  const foreignRectangle = getImageForeignRectangle(board, element);
42
46
  updateForeignObject(fakeImageG, foreignRectangle.width, foreignRectangle.height, foreignRectangle.x + offsetX, foreignRectangle.y + offsetY);
43
47
  dragFakeNodeG?.append(fakeImageG);
@@ -157,4 +161,4 @@ export const drawFakeDropNode = (board, dropTarget, path) => {
157
161
  fakeDropNodeG?.appendChild(fakeRectangleG);
158
162
  return fakeDropNodeG;
159
163
  };
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9kcmF3L25vZGUtZG5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxXQUFXLEVBQVksU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBUyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTdILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1C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Q25CLFNBQVMsRUFBRSxPQUFPO0tBQ3JCLENBQ0osQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEgsYUFBYSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxhQUFhLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTNDLE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRyYXdSb3VuZFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4vbm9kZS1zaGFwZSc7XG5pbXBvcnQgeyBCQVNFLCBQUklNQVJZX0NPTE9SLCBTVFJPS0VfV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGV0ZWN0UmVzdWx0LCBMYXlvdXREaXJlY3Rpb24sIE1pbmRFbGVtZW50LCBNaW5kTm9kZSwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21pbmQtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi4vcG9zaXRpb24vbm9kZSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgZHJhd1JvdW5kUmVjdGFuZ2xlLCBjcmVhdGVHLCBQYXRoLCBQbGFpdE5vZGUsIFBsYWl0RWxlbWVudCwgdXBkYXRlRm9yZWlnbk9iamVjdCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBpc0hvcml6b250YWxMYXlvdXQsIGlzSW5kZW50ZWRMYXlvdXQsIGlzU3RhbmRhcmRMYXlvdXQsIGlzVG9wTGF5b3V0LCBNaW5kTGF5b3V0VHlwZSB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGdldFRvcGljUmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi4vcG9zaXRpb24vdG9waWMnO1xuaW1wb3J0IHsgSG9yaXpvbnRhbFBsYWNlbWVudCwgUG9pbnRQbGFjZW1lbnQsIFZlcnRpY2FsUGxhY2VtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5pbXBvcnQgeyBnZXRMYXlvdXREaXJlY3Rpb24sIGdldFBvaW50QnlQbGFjZW1lbnQsIG1vdmVYT2ZQb2ludCwgbW92ZVlPZlBvaW50LCB0cmFuc2Zvcm1QbGFjZW1lbnQgfSBmcm9tICcuLi9wb2ludC1wbGFjZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRNaW5kQm9hcmQgfSBmcm9tICcuLi8uLi9wbHVnaW5zL3dpdGgtbWluZC5ib2FyZCc7XG5pbXBvcnQgeyBoYXNQcmV2aW91c09yTmV4dE9mRHJvcFBhdGggfSBmcm9tICcuLi9kbmQvY29tbW9uJztcbmltcG9ydCB7IGRyYXdMaW5rIH0gZnJvbSAnLi9ub2RlLWxpbmsvZHJhdy1saW5rJztcbmltcG9ydCB7IGdldEVtb2ppRm9yZWlnblJlY3RhbmdsZSB9IGZyb20gJy4uL3Bvc2l0aW9uL2Vtb2ppJztcbmltcG9ydCB7IGdldEltYWdlRm9yZWlnblJlY3RhbmdsZSB9IGZyb20gJy4uL3Bvc2l0aW9uJztcbmltcG9ydCB7IGdldEZpcnN0VGV4dE1hbmFnZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3QgZHJhd0Zha2VEcmFnTm9kZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQsIG9mZnNldFg6IG51bWJlciwgb2Zmc2V0WTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgYWN0aXZlQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChlbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICBjb25zdCBkcmFnRmFrZU5vZGVHID0gY3JlYXRlRygpO1xuICAgIGRyYWdGYWtlTm9kZUcuY2xhc3NMaXN0LmFkZCgnZHJhZ2dpbmcnLCAnZmFrZS1ub2RlJywgJ3BsYWl0LWJvYXJkLWF0dGFjaGVkJyk7XG5cbiAgICBjb25zdCBmYWtlRHJhZ2dpbmdOb2RlOiBNaW5kTm9kZSA9IHtcbiAgICAgICAgLi4uYWN0aXZlQ29tcG9uZW50Lm5vZGUsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgeDogYWN0aXZlQ29tcG9uZW50Lm5vZGUueCArIG9mZnNldFgsXG4gICAgICAgIHk6IGFjdGl2ZUNvbXBvbmVudC5ub2RlLnkgKyBvZmZzZXRZXG4gICAgfTtcbiAgICBjb25zdCB0ZXh0UmVjdGFuZ2xlID0gZ2V0VG9waWNSZWN0YW5nbGVCeU5vZGUoYm9hcmQgYXMgUGxhaXRNaW5kQm9hcmQsIGFjdGl2ZUNvbXBvbmVudC5ub2RlKTtcbiAgICBjb25zdCBmYWtlTm9kZUcgPSBkcmF3Um91bmRSZWN0YW5nbGVCeU5vZGUoYm9hcmQsIGZha2VEcmFnZ2luZ05vZGUpO1xuXG4gICAgY29uc3QgcmljaHRleHRHID0gZ2V0Rmlyc3RUZXh0TWFuYWdlKGVsZW1lbnQpLmcuY2xvbmVOb2RlKHRydWUpIGFzIFNWR0dFbGVtZW50O1xuICAgIHVwZGF0ZUZvcmVpZ25PYmplY3QocmljaHRleHRHLCB0ZXh0UmVjdGFuZ2xlLndpZHRoLCB0ZXh0UmVjdGFuZ2xlLmhlaWdodCwgdGV4dFJlY3RhbmdsZS54ICsgb2Zmc2V0WCwgdGV4dFJlY3RhbmdsZS55ICsgb2Zmc2V0WSk7XG5cbiAgICBkcmFnRmFrZU5vZGVHPy5hcHBlbmQoZmFrZU5vZGVHKTtcbiAgICBkcmFnRmFrZU5vZGVHPy5hcHBlbmQocmljaHRleHRHKTtcblxuICAgIC8vIGRyYXcgZW1vamlzXG4gICAgaWYgKE1pbmRFbGVtZW50Lmhhc0Vtb2ppcyhlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBmYWtlRW1vamlzRyA9IChhY3RpdmVDb21wb25lbnQubm9kZUVtb2ppc0dlbmVyYXRvci5nIGFzIFNWR0dFbGVtZW50KS5jbG9uZU5vZGUodHJ1ZSkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGZvcmVpZ25SZWN0YW5nbGUgPSBnZXRFbW9qaUZvcmVpZ25SZWN0YW5nbGUoYm9hcmQgYXMgUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICB1cGRhdGVGb3JlaWduT2JqZWN0KFxuICAgICAgICAgICAgZmFrZUVtb2ppc0csXG4gICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS5oZWlnaHQsXG4gICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLnggKyBvZmZzZXRYLFxuICAgICAgICAgICAgZm9yZWlnblJlY3RhbmdsZS55ICsgb2Zmc2V0WVxuICAgICAgICApO1xuICAgICAgICBkcmFnRmFrZU5vZGVHPy5hcHBlbmQoZmFrZUVtb2ppc0cpO1xuICAgIH1cblxuICAgIGlmIChNaW5kRWxlbWVudC5oYXNJbWFnZShlbGVtZW50KSkge1xuICAgICAgICBjb25zdCBmYWtlSW1hZ2VHID0gKGFjdGl2ZUNvbXBvbmVudC5pbWFnZUdlbmVyYXRvci5nIGFzIFNWR0dFbGVtZW50KS5jbG9uZU5vZGUodHJ1ZSkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGZvcmVpZ25SZWN0YW5nbGUgPSBnZXRJbWFnZUZvcmVpZ25SZWN0YW5nbGUoYm9hcmQgYXMgUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICB1cGRhdGVGb3JlaWduT2JqZWN0KFxuICAgICAgICAgICAgZmFrZUltYWdlRyxcbiAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUud2lkdGgsXG4gICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUueCArIG9mZnNldFgsXG4gICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLnkgKyBvZmZzZXRZXG4gICAgICAgICk7XG4gICAgICAgIGRyYWdGYWtlTm9kZUc/LmFwcGVuZChmYWtlSW1hZ2VHKTtcbiAgICB9XG4gICAgcmV0dXJuIGRyYWdGYWtlTm9kZUc7XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0Zha2VEcm9wTm9kZSA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkcm9wVGFyZ2V0OiB7XG4gICAgICAgIHRhcmdldDogTWluZEVsZW1lbnQ7XG4gICAgICAgIGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0O1xuICAgIH0sXG4gICAgcGF0aDogUGF0aFxuKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZHJvcFRhcmdldC50YXJnZXQ7XG4gICAgY29uc3QgZmFrZURyb3BOb2RlRyA9IGNyZWF0ZUcoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnBhcmVudChwYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHBhcmVudCkgYXMgTWluZExheW91dFR5cGU7XG4gICAgY29uc3QgaXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCk7XG4gICAgY29uc3QgeyBoYXNOZXh0Tm9kZSwgaGFzUHJldmlvdXNOb2RlIH0gPSBoYXNQcmV2aW91c09yTmV4dE9mRHJvcFBhdGgocGFyZW50LCBkcm9wVGFyZ2V0LCBwYXRoKTtcblxuICAgIGNvbnN0IHdpZHRoID0gMzA7XG4gICAgY29uc3QgaGVpZ2h0ID0gMTI7XG4gICAgbGV0IGZha2VOb2RlOiBNaW5kTm9kZSwgY2VudGVyUG9pbnQ6IFBvaW50LCBiYXNpY05vZGU6IE1pbmROb2RlLCBsaW5rRGlyZWN0aW9uOiBMYXlvdXREaXJlY3Rpb247XG5cbiAgICBpZiAoIWhhc1ByZXZpb3VzTm9kZSAmJiAhaGFzTmV4dE5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUocGFyZW50KTtcbiAgICAgICAgY29uc3QgcGFyZW50UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwYXJlbnROb2RlKTtcblxuICAgICAgICBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKHBhcmVudE5vZGUsIGlzSG9yaXpvbnRhbCk7XG4gICAgICAgIGJhc2ljTm9kZSA9IHBhcmVudE5vZGU7XG5cbiAgICAgICAgaWYgKFBsYWl0TWluZC5pc01pbmQodGFyZ2V0KSAmJiBpc1N0YW5kYXJkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgbGlua0RpcmVjdGlvbiA9IExheW91dERpcmVjdGlvbi5sZWZ0O1xuICAgICAgICAgICAgICAgIGJhc2ljTm9kZS5sZWZ0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlua0RpcmVjdGlvbiA9IExheW91dERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgICAgICAgICBiYXNpY05vZGUubGVmdCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LnJpZ2h0LCBWZXJ0aWNhbFBsYWNlbWVudC5taWRkbGVdO1xuICAgICAgICB0cmFuc2Zvcm1QbGFjZW1lbnQocGxhY2VtZW50LCBsaW5rRGlyZWN0aW9uKTtcbiAgICAgICAgY29uc3QgcGFyZW50Q2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KHBhcmVudFJlY3QsIHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtcbiAgICAgICAgICAgICAgICBIb3Jpem9udGFsUGxhY2VtZW50LmNlbnRlcixcbiAgICAgICAgICAgICAgICBpc1RvcExheW91dChsYXlvdXQpID8gVmVydGljYWxQbGFjZW1lbnQudG9wIDogVmVydGljYWxQbGFjZW1lbnQuYm90dG9tXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Q2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KHBhcmVudFJlY3QsIHBsYWNlbWVudCk7XG5cbiAgICAgICAgICAgIGNlbnRlclBvaW50ID0gbW92ZVhPZlBvaW50KHBhcmVudENlbnRlclBvaW50LCBoZWlnaHQsIGxpbmtEaXJlY3Rpb24pO1xuICAgICAgICAgICAgY2VudGVyUG9pbnRbMV0gPSBpc1RvcExheW91dChsYXlvdXQpID8gY2VudGVyUG9pbnRbMV0gLSBoZWlnaHQgOiBjZW50ZXJQb2ludFsxXSArIGhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNlbnRlclBvaW50ID0gbW92ZVhPZlBvaW50KHBhcmVudENlbnRlclBvaW50LCB3aWR0aCwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFoYXNQcmV2aW91c05vZGUgJiYgaGFzTmV4dE5vZGUpIHtcbiAgICAgICAgY29uc3QgbmV4dEVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKSBhcyBNaW5kRWxlbWVudDtcbiAgICAgICAgYmFzaWNOb2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShuZXh0RWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG5leHRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKGJhc2ljTm9kZSk7XG4gICAgICAgIGxpbmtEaXJlY3Rpb24gPSBnZXRMYXlvdXREaXJlY3Rpb24oYmFzaWNOb2RlLCBpc0hvcml6b250YWwpO1xuXG4gICAgICAgIGNvbnN0IHBsYWNlbWVudDogUG9pbnRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5sZWZ0LCBWZXJ0aWNhbFBsYWNlbWVudC50b3BdO1xuXG4gICAgICAgIHRyYW5zZm9ybVBsYWNlbWVudChwbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgICAgIGxldCBvZmZzZXQgPSAtaGVpZ2h0O1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaXNJbmRlbnRlZExheW91dChwYXJlbnQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBpc1RvcExheW91dChsYXlvdXQpID8gb2Zmc2V0IC8gMiArIGJhc2ljTm9kZS5oZWlnaHQgLSBiYXNpY05vZGUudkdhcCA6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBjZW50ZXJQb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQobmV4dFJlY3QsIHBsYWNlbWVudCk7XG4gICAgICAgIGNlbnRlclBvaW50ID0gbW92ZVlPZlBvaW50KGNlbnRlclBvaW50LCBvZmZzZXQsIGxpbmtEaXJlY3Rpb24pO1xuICAgIH0gZWxzZSBpZiAoaGFzUHJldmlvdXNOb2RlICYmICFoYXNOZXh0Tm9kZSkge1xuICAgICAgICBjb25zdCBwcmV2aW91c0VsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnByZXZpb3VzKHBhdGgpKSBhcyBNaW5kRWxlbWVudDtcbiAgICAgICAgYmFzaWNOb2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShwcmV2aW91c0VsZW1lbnQpO1xuICAgICAgICBjb25zdCBwcmV2aW91c1JlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUoYmFzaWNOb2RlKTtcbiAgICAgICAgbGlua0RpcmVjdGlvbiA9IGdldExheW91dERpcmVjdGlvbihiYXNpY05vZGUsIGlzSG9yaXpvbnRhbCk7XG5cbiAgICAgICAgY29uc3QgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQsIFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbV07XG5cbiAgICAgICAgdHJhbnNmb3JtUGxhY2VtZW50KHBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IGhlaWdodDtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50LmlzSW5kZW50ZWRMYXlvdXQocGFyZW50KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gaXNUb3BMYXlvdXQobGF5b3V0KSA/IC1vZmZzZXQgLSAoYmFzaWNOb2RlLmhlaWdodCAtIGJhc2ljTm9kZS52R2FwKSA6IG9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBjZW50ZXJQb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQocHJldmlvdXNSZWN0LCBwbGFjZW1lbnQpO1xuICAgICAgICBjZW50ZXJQb2ludCA9IG1vdmVZT2ZQb2ludChjZW50ZXJQb2ludCwgb2Zmc2V0LCBsaW5rRGlyZWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwcmV2aW91c0VsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnByZXZpb3VzKHBhdGgpKSBhcyBNaW5kRWxlbWVudDtcbiAgICAgICAgYmFzaWNOb2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShwcmV2aW91c0VsZW1lbnQpO1xuICAgICAgICBjb25zdCBwcmV2aW91c1JlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUoYmFzaWNOb2RlKTtcblxuICAgICAgICBjb25zdCBuZXh0RWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGgpIGFzIE1pbmRFbGVtZW50O1xuICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUobmV4dEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBuZXh0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShuZXh0Tm9kZSk7XG5cbiAgICAgICAgY29uc3QgYmVnaW5QbGFjZW1lbnQ6IFBvaW50UGxhY2VtZW50ID0gW0hvcml6b250YWxQbGFjZW1lbnQubGVmdCwgVmVydGljYWxQbGFjZW1lbnQuYm90dG9tXTtcbiAgICAgICAgY29uc3QgZW5kUGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQsIFZlcnRpY2FsUGxhY2VtZW50LnRvcF07XG4gICAgICAgIGxpbmtEaXJlY3Rpb24gPSBnZXRMYXlvdXREaXJlY3Rpb24oYmFzaWNOb2RlLCBpc0hvcml6b250YWwpO1xuXG4gICAgICAgIHRyYW5zZm9ybVBsYWNlbWVudChiZWdpblBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIHRyYW5zZm9ybVBsYWNlbWVudChlbmRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgICAgIGNvbnN0IHByZXZpb3VzUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KHByZXZpb3VzUmVjdCwgYmVnaW5QbGFjZW1lbnQpO1xuICAgICAgICBjb25zdCBuZXh0UG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KG5leHRSZWN0LCBlbmRQbGFjZW1lbnQpO1xuXG4gICAgICAgIGNlbnRlclBvaW50ID0gWyhwcmV2aW91c1BvaW50WzBdICsgbmV4dFBvaW50WzBdKSAvIDIsIChwcmV2aW91c1BvaW50WzFdICsgbmV4dFBvaW50WzFdKSAvIDJdO1xuICAgIH1cblxuICAgIGxldCBjb3JuZXJQb2ludCA9IGNlbnRlclBvaW50LFxuICAgICAgICBvcHBvc2l0ZVBvaW50ID0gY2VudGVyUG9pbnQ7XG5cbiAgICBjb25zdCBvZmZzZXRZID0gaXNIb3Jpem9udGFsID8gaGVpZ2h0IDogd2lkdGg7XG4gICAgY29uc3Qgb2Zmc2V0WCA9IGlzSG9yaXpvbnRhbCA/IHdpZHRoIDogaGVpZ2h0O1xuXG4gICAgY29ybmVyUG9pbnQgPSBtb3ZlWU9mUG9pbnQoY29ybmVyUG9pbnQsIC1vZmZzZXRZIC8gMiwgbGlua0RpcmVjdGlvbiEpO1xuXG4gICAgb3Bwb3NpdGVQb2ludCA9IG1vdmVZT2ZQb2ludChvcHBvc2l0ZVBvaW50LCBvZmZzZXRZIC8gMiwgbGlua0RpcmVjdGlvbiEpO1xuICAgIG9wcG9zaXRlUG9pbnQgPSBtb3ZlWE9mUG9pbnQob3Bwb3NpdGVQb2ludCwgb2Zmc2V0WCwgbGlua0RpcmVjdGlvbiEpO1xuXG4gICAgY29uc3QgeCA9IE1hdGgubWluKGNvcm5lclBvaW50WzBdLCBvcHBvc2l0ZVBvaW50WzBdKTtcbiAgICBjb25zdCB5ID0gTWF0aC5taW4oY29ybmVyUG9pbnRbMV0sIG9wcG9zaXRlUG9pbnRbMV0pO1xuXG4gICAgZmFrZU5vZGUgPSB7XG4gICAgICAgIC4uLmJhc2ljTm9kZSEsXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIGhHYXA6IE1pbmRFbGVtZW50LmlzSW5kZW50ZWRMYXlvdXQocGFyZW50KSA/IEJBU0UgKiA0ICsgKGJhc2ljTm9kZS5vcmlnaW4uc3Ryb2tlV2lkdGggfHwgU1RST0tFX1dJRFRIKSA6IDAsXG4gICAgICAgIHZHYXA6IE1pbmRFbGVtZW50LmlzSW5kZW50ZWRMYXlvdXQocGFyZW50KSA/IEJBU0UgOiAwXG4gICAgfTtcblxuICAgIGNvbnN0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgZmFrZU5vZGUhLngsXG4gICAgICAgIGZha2VOb2RlIS55LFxuICAgICAgICBmYWtlTm9kZSEueCArIHdpZHRoLFxuICAgICAgICBmYWtlTm9kZSEueSArIGhlaWdodCxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgbGluayA9IGRyYXdMaW5rKGJvYXJkLCBNaW5kRWxlbWVudC5nZXROb2RlKHBhcmVudCksIGZha2VOb2RlLCBpc0hvcml6b250YWwsIGZhbHNlLCBQUklNQVJZX0NPTE9SLCBTVFJPS0VfV0lEVEgpO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGZha2VSZWN0YW5nbGVHKTtcblxuICAgIHJldHVybiBmYWtlRHJvcE5vZGVHO1xufTtcbiJdfQ==
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9kcmF3L25vZGUtZG5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxXQUFXLEVBQVksU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBUyxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFrQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTdILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1C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QVcsQ0FBQyxLQUFLLENBQUMsRUFDN0IsUUFBUyxDQUFDLENBQUMsRUFDWCxRQUFTLENBQUMsQ0FBQyxFQUNYLFFBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUNuQixRQUFTLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFDcEI7UUFDSSxNQUFNLEVBQUUsYUFBYTtRQUNyQixXQUFXLEVBQUUsQ0FBQztRQUNkLElBQUksRUFBRSxhQUFhO1FBQ25CLFNBQVMsRUFBRSxPQUFPO0tBQ3JCLENBQ0osQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEgsYUFBYSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxhQUFhLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRTNDLE9BQU8sYUFBYSxDQUFDO0FBQ3pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRyYXdSb3VuZFJlY3RhbmdsZUJ5Tm9kZSB9IGZyb20gJy4vbm9kZS1zaGFwZSc7XG5pbXBvcnQgeyBCQVNFLCBQUklNQVJZX0NPTE9SLCBTVFJPS0VfV0lEVEggfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGV0ZWN0UmVzdWx0LCBMYXlvdXREaXJlY3Rpb24sIE1pbmRFbGVtZW50LCBNaW5kTm9kZSwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi9wb3NpdGlvbi9ub2RlJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBvaW50LCBkcmF3Um91bmRSZWN0YW5nbGUsIGNyZWF0ZUcsIFBhdGgsIFBsYWl0Tm9kZSwgUGxhaXRFbGVtZW50LCB1cGRhdGVGb3JlaWduT2JqZWN0IH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IGlzSG9yaXpvbnRhbExheW91dCwgaXNJbmRlbnRlZExheW91dCwgaXNTdGFuZGFyZExheW91dCwgaXNUb3BMYXlvdXQsIE1pbmRMYXlvdXRUeXBlIH0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgZ2V0VG9waWNSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi9wb3NpdGlvbi90b3BpYyc7XG5pbXBvcnQgeyBIb3Jpem9udGFsUGxhY2VtZW50LCBQb2ludFBsYWNlbWVudCwgVmVydGljYWxQbGFjZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3R5cGVzJztcbmltcG9ydCB7IGdldExheW91dERpcmVjdGlvbiwgZ2V0UG9pbnRCeVBsYWNlbWVudCwgbW92ZVhPZlBvaW50LCBtb3ZlWU9mUG9pbnQsIHRyYW5zZm9ybVBsYWNlbWVudCB9IGZyb20gJy4uL3BvaW50LXBsYWNlbWVudCc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uLy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcbmltcG9ydCB7IGhhc1ByZXZpb3VzT3JOZXh0T2ZEcm9wUGF0aCB9IGZyb20gJy4uL2RuZC9jb21tb24nO1xuaW1wb3J0IHsgZHJhd0xpbmsgfSBmcm9tICcuL25vZGUtbGluay9kcmF3LWxpbmsnO1xuaW1wb3J0IHsgZ2V0RW1vamlGb3JlaWduUmVjdGFuZ2xlIH0gZnJvbSAnLi4vcG9zaXRpb24vZW1vamknO1xuaW1wb3J0IHsgZ2V0SW1hZ2VGb3JlaWduUmVjdGFuZ2xlIH0gZnJvbSAnLi4vcG9zaXRpb24nO1xuaW1wb3J0IHsgSW1hZ2VHZW5lcmF0b3IsIFBsYWl0Q29tbW9uRWxlbWVudFJlZiwgZ2V0Rmlyc3RUZXh0TWFuYWdlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBOb2RlRW1vamlzR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdG9ycy9ub2RlLWVtb2ppcy5nZW5lcmF0b3InO1xuXG5leHBvcnQgY29uc3QgZHJhd0Zha2VEcmFnTm9kZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQsIG9mZnNldFg6IG51bWJlciwgb2Zmc2V0WTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgcmVmID0gUGxhaXRFbGVtZW50LmdldEVsZW1lbnRSZWY8UGxhaXRDb21tb25FbGVtZW50UmVmPihlbGVtZW50KTtcbiAgICBjb25zdCBtaW5kTm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCk7XG4gICAgY29uc3QgZHJhZ0Zha2VOb2RlRyA9IGNyZWF0ZUcoKTtcbiAgICBkcmFnRmFrZU5vZGVHLmNsYXNzTGlzdC5hZGQoJ2RyYWdnaW5nJywgJ2Zha2Utbm9kZScsICdwbGFpdC1ib2FyZC1hdHRhY2hlZCcpO1xuXG4gICAgY29uc3QgZmFrZURyYWdnaW5nTm9kZTogTWluZE5vZGUgPSB7XG4gICAgICAgIC4uLm1pbmROb2RlLFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgIHg6IG1pbmROb2RlLnggKyBvZmZzZXRYLFxuICAgICAgICB5OiBtaW5kTm9kZS55ICsgb2Zmc2V0WVxuICAgIH07XG4gICAgY29uc3QgdGV4dFJlY3RhbmdsZSA9IGdldFRvcGljUmVjdGFuZ2xlQnlOb2RlKGJvYXJkIGFzIFBsYWl0TWluZEJvYXJkLCBtaW5kTm9kZSk7XG4gICAgY29uc3QgZmFrZU5vZGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlQnlOb2RlKGJvYXJkLCBmYWtlRHJhZ2dpbmdOb2RlKTtcblxuICAgIGNvbnN0IHJpY2h0ZXh0RyA9IGdldEZpcnN0VGV4dE1hbmFnZShlbGVtZW50KS5nLmNsb25lTm9kZSh0cnVlKSBhcyBTVkdHRWxlbWVudDtcbiAgICB1cGRhdGVGb3JlaWduT2JqZWN0KHJpY2h0ZXh0RywgdGV4dFJlY3RhbmdsZS53aWR0aCwgdGV4dFJlY3RhbmdsZS5oZWlnaHQsIHRleHRSZWN0YW5nbGUueCArIG9mZnNldFgsIHRleHRSZWN0YW5nbGUueSArIG9mZnNldFkpO1xuXG4gICAgZHJhZ0Zha2VOb2RlRz8uYXBwZW5kKGZha2VOb2RlRyk7XG4gICAgZHJhZ0Zha2VOb2RlRz8uYXBwZW5kKHJpY2h0ZXh0Ryk7XG5cbiAgICAvLyBkcmF3IGVtb2ppc1xuICAgIGlmIChNaW5kRWxlbWVudC5oYXNFbW9qaXMoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3Qgbm9kZUVtb2ppc0dlbmVyYXRvciA9IHJlZi5nZXRHZW5lcmF0b3I8Tm9kZUVtb2ppc0dlbmVyYXRvcj4oTm9kZUVtb2ppc0dlbmVyYXRvci5rZXkpO1xuICAgICAgICBjb25zdCBmYWtlRW1vamlzRyA9IChub2RlRW1vamlzR2VuZXJhdG9yLmcgYXMgU1ZHR0VsZW1lbnQpLmNsb25lTm9kZSh0cnVlKSBhcyBTVkdHRWxlbWVudDtcbiAgICAgICAgY29uc3QgZm9yZWlnblJlY3RhbmdsZSA9IGdldEVtb2ppRm9yZWlnblJlY3RhbmdsZShib2FyZCBhcyBQbGFpdE1pbmRCb2FyZCwgZWxlbWVudCk7XG4gICAgICAgIHVwZGF0ZUZvcmVpZ25PYmplY3QoXG4gICAgICAgICAgICBmYWtlRW1vamlzRyxcbiAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUud2lkdGgsXG4gICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUueCArIG9mZnNldFgsXG4gICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLnkgKyBvZmZzZXRZXG4gICAgICAgICk7XG4gICAgICAgIGRyYWdGYWtlTm9kZUc/LmFwcGVuZChmYWtlRW1vamlzRyk7XG4gICAgfVxuXG4gICAgaWYgKE1pbmRFbGVtZW50Lmhhc0ltYWdlKGVsZW1lbnQpKSB7XG4gICAgICAgIGNvbnN0IGltYWdlR2VuZXJhdG9yID0gcmVmLmdldEdlbmVyYXRvcjxJbWFnZUdlbmVyYXRvcj4oSW1hZ2VHZW5lcmF0b3Iua2V5KTtcbiAgICAgICAgY29uc3QgZmFrZUltYWdlRyA9IChpbWFnZUdlbmVyYXRvci5nIGFzIFNWR0dFbGVtZW50KS5jbG9uZU5vZGUodHJ1ZSkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGZvcmVpZ25SZWN0YW5nbGUgPSBnZXRJbWFnZUZvcmVpZ25SZWN0YW5nbGUoYm9hcmQgYXMgUGxhaXRNaW5kQm9hcmQsIGVsZW1lbnQpO1xuICAgICAgICB1cGRhdGVGb3JlaWduT2JqZWN0KFxuICAgICAgICAgICAgZmFrZUltYWdlRyxcbiAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUud2lkdGgsXG4gICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLmhlaWdodCxcbiAgICAgICAgICAgIGZvcmVpZ25SZWN0YW5nbGUueCArIG9mZnNldFgsXG4gICAgICAgICAgICBmb3JlaWduUmVjdGFuZ2xlLnkgKyBvZmZzZXRZXG4gICAgICAgICk7XG4gICAgICAgIGRyYWdGYWtlTm9kZUc/LmFwcGVuZChmYWtlSW1hZ2VHKTtcbiAgICB9XG4gICAgcmV0dXJuIGRyYWdGYWtlTm9kZUc7XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0Zha2VEcm9wTm9kZSA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBkcm9wVGFyZ2V0OiB7XG4gICAgICAgIHRhcmdldDogTWluZEVsZW1lbnQ7XG4gICAgICAgIGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0O1xuICAgIH0sXG4gICAgcGF0aDogUGF0aFxuKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZHJvcFRhcmdldC50YXJnZXQ7XG4gICAgY29uc3QgZmFrZURyb3BOb2RlRyA9IGNyZWF0ZUcoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnBhcmVudChwYXRoKSkgYXMgTWluZEVsZW1lbnQ7XG4gICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHBhcmVudCkgYXMgTWluZExheW91dFR5cGU7XG4gICAgY29uc3QgaXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCk7XG4gICAgY29uc3QgeyBoYXNOZXh0Tm9kZSwgaGFzUHJldmlvdXNOb2RlIH0gPSBoYXNQcmV2aW91c09yTmV4dE9mRHJvcFBhdGgocGFyZW50LCBkcm9wVGFyZ2V0LCBwYXRoKTtcblxuICAgIGNvbnN0IHdpZHRoID0gMzA7XG4gICAgY29uc3QgaGVpZ2h0ID0gMTI7XG4gICAgbGV0IGZha2VOb2RlOiBNaW5kTm9kZSwgY2VudGVyUG9pbnQ6IFBvaW50LCBiYXNpY05vZGU6IE1pbmROb2RlLCBsaW5rRGlyZWN0aW9uOiBMYXlvdXREaXJlY3Rpb247XG5cbiAgICBpZiAoIWhhc1ByZXZpb3VzTm9kZSAmJiAhaGFzTmV4dE5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUocGFyZW50KTtcbiAgICAgICAgY29uc3QgcGFyZW50UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwYXJlbnROb2RlKTtcblxuICAgICAgICBsaW5rRGlyZWN0aW9uID0gZ2V0TGF5b3V0RGlyZWN0aW9uKHBhcmVudE5vZGUsIGlzSG9yaXpvbnRhbCk7XG4gICAgICAgIGJhc2ljTm9kZSA9IHBhcmVudE5vZGU7XG5cbiAgICAgICAgaWYgKFBsYWl0TWluZC5pc01pbmQodGFyZ2V0KSAmJiBpc1N0YW5kYXJkTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgbGlua0RpcmVjdGlvbiA9IExheW91dERpcmVjdGlvbi5sZWZ0O1xuICAgICAgICAgICAgICAgIGJhc2ljTm9kZS5sZWZ0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlua0RpcmVjdGlvbiA9IExheW91dERpcmVjdGlvbi5yaWdodDtcbiAgICAgICAgICAgICAgICBiYXNpY05vZGUubGVmdCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LnJpZ2h0LCBWZXJ0aWNhbFBsYWNlbWVudC5taWRkbGVdO1xuICAgICAgICB0cmFuc2Zvcm1QbGFjZW1lbnQocGxhY2VtZW50LCBsaW5rRGlyZWN0aW9uKTtcbiAgICAgICAgY29uc3QgcGFyZW50Q2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KHBhcmVudFJlY3QsIHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtcbiAgICAgICAgICAgICAgICBIb3Jpem9udGFsUGxhY2VtZW50LmNlbnRlcixcbiAgICAgICAgICAgICAgICBpc1RvcExheW91dChsYXlvdXQpID8gVmVydGljYWxQbGFjZW1lbnQudG9wIDogVmVydGljYWxQbGFjZW1lbnQuYm90dG9tXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Q2VudGVyUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KHBhcmVudFJlY3QsIHBsYWNlbWVudCk7XG5cbiAgICAgICAgICAgIGNlbnRlclBvaW50ID0gbW92ZVhPZlBvaW50KHBhcmVudENlbnRlclBvaW50LCBoZWlnaHQsIGxpbmtEaXJlY3Rpb24pO1xuICAgICAgICAgICAgY2VudGVyUG9pbnRbMV0gPSBpc1RvcExheW91dChsYXlvdXQpID8gY2VudGVyUG9pbnRbMV0gLSBoZWlnaHQgOiBjZW50ZXJQb2ludFsxXSArIGhlaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNlbnRlclBvaW50ID0gbW92ZVhPZlBvaW50KHBhcmVudENlbnRlclBvaW50LCB3aWR0aCwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFoYXNQcmV2aW91c05vZGUgJiYgaGFzTmV4dE5vZGUpIHtcbiAgICAgICAgY29uc3QgbmV4dEVsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBwYXRoKSBhcyBNaW5kRWxlbWVudDtcbiAgICAgICAgYmFzaWNOb2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShuZXh0RWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG5leHRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKGJhc2ljTm9kZSk7XG4gICAgICAgIGxpbmtEaXJlY3Rpb24gPSBnZXRMYXlvdXREaXJlY3Rpb24oYmFzaWNOb2RlLCBpc0hvcml6b250YWwpO1xuXG4gICAgICAgIGNvbnN0IHBsYWNlbWVudDogUG9pbnRQbGFjZW1lbnQgPSBbSG9yaXpvbnRhbFBsYWNlbWVudC5sZWZ0LCBWZXJ0aWNhbFBsYWNlbWVudC50b3BdO1xuXG4gICAgICAgIHRyYW5zZm9ybVBsYWNlbWVudChwbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgICAgIGxldCBvZmZzZXQgPSAtaGVpZ2h0O1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaXNJbmRlbnRlZExheW91dChwYXJlbnQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBpc1RvcExheW91dChsYXlvdXQpID8gb2Zmc2V0IC8gMiArIGJhc2ljTm9kZS5oZWlnaHQgLSBiYXNpY05vZGUudkdhcCA6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBjZW50ZXJQb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQobmV4dFJlY3QsIHBsYWNlbWVudCk7XG4gICAgICAgIGNlbnRlclBvaW50ID0gbW92ZVlPZlBvaW50KGNlbnRlclBvaW50LCBvZmZzZXQsIGxpbmtEaXJlY3Rpb24pO1xuICAgIH0gZWxzZSBpZiAoaGFzUHJldmlvdXNOb2RlICYmICFoYXNOZXh0Tm9kZSkge1xuICAgICAgICBjb25zdCBwcmV2aW91c0VsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnByZXZpb3VzKHBhdGgpKSBhcyBNaW5kRWxlbWVudDtcbiAgICAgICAgYmFzaWNOb2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShwcmV2aW91c0VsZW1lbnQpO1xuICAgICAgICBjb25zdCBwcmV2aW91c1JlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUoYmFzaWNOb2RlKTtcbiAgICAgICAgbGlua0RpcmVjdGlvbiA9IGdldExheW91dERpcmVjdGlvbihiYXNpY05vZGUsIGlzSG9yaXpvbnRhbCk7XG5cbiAgICAgICAgY29uc3QgcGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQsIFZlcnRpY2FsUGxhY2VtZW50LmJvdHRvbV07XG5cbiAgICAgICAgdHJhbnNmb3JtUGxhY2VtZW50KHBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IGhlaWdodDtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50LmlzSW5kZW50ZWRMYXlvdXQocGFyZW50KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gaXNUb3BMYXlvdXQobGF5b3V0KSA/IC1vZmZzZXQgLSAoYmFzaWNOb2RlLmhlaWdodCAtIGJhc2ljTm9kZS52R2FwKSA6IG9mZnNldDtcbiAgICAgICAgfVxuICAgICAgICBjZW50ZXJQb2ludCA9IGdldFBvaW50QnlQbGFjZW1lbnQocHJldmlvdXNSZWN0LCBwbGFjZW1lbnQpO1xuICAgICAgICBjZW50ZXJQb2ludCA9IG1vdmVZT2ZQb2ludChjZW50ZXJQb2ludCwgb2Zmc2V0LCBsaW5rRGlyZWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwcmV2aW91c0VsZW1lbnQgPSBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBQYXRoLnByZXZpb3VzKHBhdGgpKSBhcyBNaW5kRWxlbWVudDtcbiAgICAgICAgYmFzaWNOb2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShwcmV2aW91c0VsZW1lbnQpO1xuICAgICAgICBjb25zdCBwcmV2aW91c1JlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUoYmFzaWNOb2RlKTtcblxuICAgICAgICBjb25zdCBuZXh0RWxlbWVudCA9IFBsYWl0Tm9kZS5nZXQoYm9hcmQsIHBhdGgpIGFzIE1pbmRFbGVtZW50O1xuICAgICAgICBjb25zdCBuZXh0Tm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUobmV4dEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBuZXh0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShuZXh0Tm9kZSk7XG5cbiAgICAgICAgY29uc3QgYmVnaW5QbGFjZW1lbnQ6IFBvaW50UGxhY2VtZW50ID0gW0hvcml6b250YWxQbGFjZW1lbnQubGVmdCwgVmVydGljYWxQbGFjZW1lbnQuYm90dG9tXTtcbiAgICAgICAgY29uc3QgZW5kUGxhY2VtZW50OiBQb2ludFBsYWNlbWVudCA9IFtIb3Jpem9udGFsUGxhY2VtZW50LmxlZnQsIFZlcnRpY2FsUGxhY2VtZW50LnRvcF07XG4gICAgICAgIGxpbmtEaXJlY3Rpb24gPSBnZXRMYXlvdXREaXJlY3Rpb24oYmFzaWNOb2RlLCBpc0hvcml6b250YWwpO1xuXG4gICAgICAgIHRyYW5zZm9ybVBsYWNlbWVudChiZWdpblBsYWNlbWVudCwgbGlua0RpcmVjdGlvbik7XG4gICAgICAgIHRyYW5zZm9ybVBsYWNlbWVudChlbmRQbGFjZW1lbnQsIGxpbmtEaXJlY3Rpb24pO1xuXG4gICAgICAgIGNvbnN0IHByZXZpb3VzUG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KHByZXZpb3VzUmVjdCwgYmVnaW5QbGFjZW1lbnQpO1xuICAgICAgICBjb25zdCBuZXh0UG9pbnQgPSBnZXRQb2ludEJ5UGxhY2VtZW50KG5leHRSZWN0LCBlbmRQbGFjZW1lbnQpO1xuXG4gICAgICAgIGNlbnRlclBvaW50ID0gWyhwcmV2aW91c1BvaW50WzBdICsgbmV4dFBvaW50WzBdKSAvIDIsIChwcmV2aW91c1BvaW50WzFdICsgbmV4dFBvaW50WzFdKSAvIDJdO1xuICAgIH1cblxuICAgIGxldCBjb3JuZXJQb2ludCA9IGNlbnRlclBvaW50LFxuICAgICAgICBvcHBvc2l0ZVBvaW50ID0gY2VudGVyUG9pbnQ7XG5cbiAgICBjb25zdCBvZmZzZXRZID0gaXNIb3Jpem9udGFsID8gaGVpZ2h0IDogd2lkdGg7XG4gICAgY29uc3Qgb2Zmc2V0WCA9IGlzSG9yaXpvbnRhbCA/IHdpZHRoIDogaGVpZ2h0O1xuXG4gICAgY29ybmVyUG9pbnQgPSBtb3ZlWU9mUG9pbnQoY29ybmVyUG9pbnQsIC1vZmZzZXRZIC8gMiwgbGlua0RpcmVjdGlvbiEpO1xuXG4gICAgb3Bwb3NpdGVQb2ludCA9IG1vdmVZT2ZQb2ludChvcHBvc2l0ZVBvaW50LCBvZmZzZXRZIC8gMiwgbGlua0RpcmVjdGlvbiEpO1xuICAgIG9wcG9zaXRlUG9pbnQgPSBtb3ZlWE9mUG9pbnQob3Bwb3NpdGVQb2ludCwgb2Zmc2V0WCwgbGlua0RpcmVjdGlvbiEpO1xuXG4gICAgY29uc3QgeCA9IE1hdGgubWluKGNvcm5lclBvaW50WzBdLCBvcHBvc2l0ZVBvaW50WzBdKTtcbiAgICBjb25zdCB5ID0gTWF0aC5taW4oY29ybmVyUG9pbnRbMV0sIG9wcG9zaXRlUG9pbnRbMV0pO1xuXG4gICAgZmFrZU5vZGUgPSB7XG4gICAgICAgIC4uLmJhc2ljTm9kZSEsXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIGhHYXA6IE1pbmRFbGVtZW50LmlzSW5kZW50ZWRMYXlvdXQocGFyZW50KSA/IEJBU0UgKiA0ICsgKGJhc2ljTm9kZS5vcmlnaW4uc3Ryb2tlV2lkdGggfHwgU1RST0tFX1dJRFRIKSA6IDAsXG4gICAgICAgIHZHYXA6IE1pbmRFbGVtZW50LmlzSW5kZW50ZWRMYXlvdXQocGFyZW50KSA/IEJBU0UgOiAwXG4gICAgfTtcblxuICAgIGNvbnN0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgZmFrZU5vZGUhLngsXG4gICAgICAgIGZha2VOb2RlIS55LFxuICAgICAgICBmYWtlTm9kZSEueCArIHdpZHRoLFxuICAgICAgICBmYWtlTm9kZSEueSArIGhlaWdodCxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgbGluayA9IGRyYXdMaW5rKGJvYXJkLCBNaW5kRWxlbWVudC5nZXROb2RlKHBhcmVudCksIGZha2VOb2RlLCBpc0hvcml6b250YWwsIGZhbHNlLCBQUklNQVJZX0NPTE9SLCBTVFJPS0VfV0lEVEgpO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmspO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGZha2VSZWN0YW5nbGVHKTtcblxuICAgIHJldHVybiBmYWtlRHJvcE5vZGVHO1xufTtcbiJdfQ==
@@ -95,4 +95,4 @@ export const getDefaultMindElementFontSize = (board, element) => {
95
95
  }
96
96
  throw new Error('can not find default font-size');
97
97
  };
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL21pbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBb0IsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhILE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFvQixNQUFNLG9CQUFvQixDQUFDO0FBR2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV0RixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtJQUNyRCxNQUFNLEtBQUssR0FBVyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQVMsRUFBRSxDQUFjLEVBQUUsRUFBRTtRQUN4RSxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDTixPQUFPLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFtQixFQUFFLEtBQWtCLEVBQUUsRUFBRTtJQUN0RSxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLE9BQU8sTUFBTSxFQUFFLENBQUM7UUFDWixJQUFJLE1BQU0sS0FBSyxNQUFN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LE9BQW9CLEVBQUUsRUFBRTtJQUNyRixJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLG9CQUFvQixDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUMsT0FBTyxlQUFlLENBQUM7SUFDM0IsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRTZWxlY3RlZEVsZW1lbnQsIGNsZWFyU2VsZWN0ZWRFbGVtZW50LCBpZENyZWF0b3IsIFBhdGgsIFBsYWl0Qm9hcmQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBURVhUX0RFRkFVTFRfSEVJR0hUIH0gZnJvbSAnQHBsYWl0L3RleHQnO1xuaW1wb3J0IHsgZWRpdFRvcGljIH0gZnJvbSAnLi9ub2RlL2NvbW1vbic7XG5pbXBvcnQgeyBjcmVhdGVNaW5kRWxlbWVudCwgSU5IRVJJVF9BVFRSSUJVVEVfS0VZUywgSW5oZXJpdEF0dHJpYnV0ZSB9IGZyb20gJy4vbm9kZS9jcmVhdGUtbm9kZSc7XG5pbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBQbGFpdE1pbmRCb2FyZCB9IGZyb20gJy4uL3BsdWdpbnMvd2l0aC1taW5kLmJvYXJkJztcbmltcG9ydCB7IFJPT1RfVE9QSUNfRk9OVF9TSVpFLCBUT1BJQ19GT05UX1NJWkUgfSBmcm9tICcuLi9jb25zdGFudHMvbm9kZS10b3BpYy1zdHlsZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRDaGlsZHJlbkNvdW50ID0gKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgY29uc3QgY291bnQ6IG51bWJlciA9IGVsZW1lbnQuY2hpbGRyZW4ucmVkdWNlKChwOiBudW1iZXIsIGM6IE1pbmRFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBwICsgZ2V0Q2hpbGRyZW5Db3VudChjKTtcbiAgICB9LCAwKTtcbiAgICByZXR1cm4gY291bnQgKyBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NoaWxkRWxlbWVudCA9IChvcmlnaW46IE1pbmRFbGVtZW50LCBjaGlsZDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBsZXQgcGFyZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChjaGlsZCk7XG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICBpZiAocGFyZW50ID09PSBvcmlnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudCA9IE1pbmRFbGVtZW50LmZpbmRQYXJlbnQocGFyZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpcnN0TGV2ZWxFbGVtZW50ID0gKGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdKSA9PiB7XG4gICAgbGV0IHJlc3VsdDogTWluZEVsZW1lbnRbXSA9IFtdO1xuICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGNvbnN0IGlzQ2hpbGQgPSBlbGVtZW50cy5zb21lKG5vZGUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGlzQ2hpbGRFbGVtZW50KG5vZGUsIGVsZW1lbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWlzQ2hpbGQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NoaWxkUmlnaHQgPSAobm9kZTogTWluZE5vZGUsIGNoaWxkOiBNaW5kTm9kZSkgPT4ge1xuICAgIHJldHVybiBub2RlLnggPCBjaGlsZC54O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ2hpbGRVcCA9IChub2RlOiBNaW5kTm9kZSwgY2hpbGQ6IE1pbmROb2RlKSA9PiB7XG4gICAgcmV0dXJuIG5vZGUueSA+IGNoaWxkLnk7XG59O1xuXG5leHBvcnQgY29uc3QgY29weU5ld05vZGUgPSAobm9kZTogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBuZXdOb2RlOiBNaW5kRWxlbWVudCA9IHsgLi4ubm9kZSB9O1xuICAgIG5ld05vZGUuaWQgPSBpZENyZWF0b3IoKTtcbiAgICBuZXdOb2RlLmNoaWxkcmVuID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkTm9kZSBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIG5ld05vZGUuY2hpbGRyZW4ucHVzaChjb3B5TmV3Tm9kZShjaGlsZE5vZGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld05vZGU7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0TWluZEVsZW1lbnQgPSAoYm9hcmQ6IFBsYWl0TWluZEJvYXJkLCBpbmhlcml0Tm9kZTogTWluZEVsZW1lbnQsIHBhdGg6IFBhdGgpID0+IHtcbiAgICBjb25zdCBuZXdOb2RlOiBJbmhlcml0QXR0cmlidXRlID0ge307XG4gICAgaWYgKCFpbmhlcml0Tm9kZS5pc1Jvb3QpIHtcbiAgICAgICAgSU5IRVJJVF9BVFRSSUJVVEVfS0VZUy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgICAgICAgKG5ld05vZGUgYXMgYW55KVthdHRyXSA9IGluaGVyaXROb2RlW2F0dHJdO1xuICAgICAgICB9KTtcbiAgICAgICAgZGVsZXRlIG5ld05vZGUubGF5b3V0O1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBjcmVhdGVNaW5kRWxlbWVudCgnJywgVE9QSUNfRk9OVF9TSVpFLCBURVhUX0RFRkFVTFRfSEVJR0hULCBuZXdOb2RlKTtcblxuICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG4gICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgIGFkZFNlbGVjdGVkRWxlbWVudChib2FyZCwgbmV3RWxlbWVudCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRUb3BpYyhuZXdFbGVtZW50KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kTGFzdENoaWxkID0gKGNoaWxkOiBNaW5kTm9kZSkgPT4ge1xuICAgIGxldCByZXN1bHQgPSBjaGlsZDtcbiAgICB3aGlsZSAocmVzdWx0LmNoaWxkcmVuLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuY2hpbGRyZW5bcmVzdWx0LmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGRpdmlkZUVsZW1lbnRCeVBhcmVudCA9IChlbGVtZW50czogTWluZEVsZW1lbnRbXSkgPT4ge1xuICAgIGNvbnN0IGFic3RyYWN0SW5jbHVkZWRHcm91cHMgPSBbXTtcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50czogTWluZEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudHNbaV0pO1xuICAgICAgICBjb25zdCBwYXJlbnRJbmRleCA9IHBhcmVudEVsZW1lbnRzLmluZGV4T2YocGFyZW50KTtcbiAgICAgICAgaWYgKHBhcmVudEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcGFyZW50RWxlbWVudHMucHVzaChwYXJlbnQpO1xuICAgICAgICAgICAgYWJzdHJhY3RJbmNsdWRlZEdyb3Vwcy5wdXNoKFtlbGVtZW50c1tpXV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWJzdHJhY3RJbmNsdWRlZEdyb3Vwc1twYXJlbnRJbmRleF0ucHVzaChlbGVtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgcGFyZW50RWxlbWVudHMsIGFic3RyYWN0SW5jbHVkZWRHcm91cHMgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0TWluZEVsZW1lbnRGb250U2l6ZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gUk9PVF9UT1BJQ19GT05UX1NJWkU7XG4gICAgfVxuICAgIGlmIChNaW5kRWxlbWVudC5pc01pbmRFbGVtZW50KGJvYXJkLCBlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gVE9QSUNfRk9OVF9TSVpFO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhbiBub3QgZmluZCBkZWZhdWx0IGZvbnQtc2l6ZScpO1xufTtcbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL21pbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBb0IsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFvQixNQUFNLG9CQUFvQixDQUFDO0FBR2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV0RixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtJQUNyRCxNQUFNLEtBQUssR0FBVyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQVMsRUFBRSxDQUFjLEVBQUUsRUFBRTtRQUN4RSxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDTixPQUFPLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxNQUFtQixFQUFFLEtBQWtCLEVBQUUsRUFBRTtJQUN0RSxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLE9BQU8sTUFBTSxFQUFFLENBQUM7UUFDWixJQUFJLE1BQU0sS0FBSyxNQUFN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LE9BQW9CLEVBQUUsRUFBRTtJQUNyRixJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLG9CQUFvQixDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDNUMsT0FBTyxlQUFlLENBQUM7SUFDM0IsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRTZWxlY3RlZEVsZW1lbnQsIGNsZWFyU2VsZWN0ZWRFbGVtZW50LCBpZENyZWF0b3IsIFBhdGgsIFBsYWl0Qm9hcmQsIFRyYW5zZm9ybXMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IFRFWFRfREVGQVVMVF9IRUlHSFQgfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5pbXBvcnQgeyBlZGl0VG9waWMgfSBmcm9tICcuL25vZGUvY29tbW9uJztcbmltcG9ydCB7IGNyZWF0ZU1pbmRFbGVtZW50LCBJTkhFUklUX0FUVFJJQlVURV9LRVlTLCBJbmhlcml0QXR0cmlidXRlIH0gZnJvbSAnLi9ub2RlL2NyZWF0ZS1ub2RlJztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IFBsYWl0TWluZEJvYXJkIH0gZnJvbSAnLi4vcGx1Z2lucy93aXRoLW1pbmQuYm9hcmQnO1xuaW1wb3J0IHsgUk9PVF9UT1BJQ19GT05UX1NJWkUsIFRPUElDX0ZPTlRfU0laRSB9IGZyb20gJy4uL2NvbnN0YW50cy9ub2RlLXRvcGljLXN0eWxlJztcblxuZXhwb3J0IGNvbnN0IGdldENoaWxkcmVuQ291bnQgPSAoZWxlbWVudDogTWluZEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBjb3VudDogbnVtYmVyID0gZWxlbWVudC5jaGlsZHJlbi5yZWR1Y2UoKHA6IG51bWJlciwgYzogTWluZEVsZW1lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHAgKyBnZXRDaGlsZHJlbkNvdW50KGMpO1xuICAgIH0sIDApO1xuICAgIHJldHVybiBjb3VudCArIGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ2hpbGRFbGVtZW50ID0gKG9yaWdpbjogTWluZEVsZW1lbnQsIGNoaWxkOiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGxldCBwYXJlbnQgPSBNaW5kRWxlbWVudC5maW5kUGFyZW50KGNoaWxkKTtcbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICAgIGlmIChwYXJlbnQgPT09IG9yaWdpbikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50ID0gTWluZEVsZW1lbnQuZmluZFBhcmVudChwYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmlyc3RMZXZlbEVsZW1lbnQgPSAoZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBsZXQgcmVzdWx0OiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgY29uc3QgaXNDaGlsZCA9IGVsZW1lbnRzLnNvbWUobm9kZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXNDaGlsZEVsZW1lbnQobm9kZSwgZWxlbWVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghaXNDaGlsZCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ2hpbGRSaWdodCA9IChub2RlOiBNaW5kTm9kZSwgY2hpbGQ6IE1pbmROb2RlKSA9PiB7XG4gICAgcmV0dXJuIG5vZGUueCA8IGNoaWxkLng7XG59O1xuXG5leHBvcnQgY29uc3QgaXNDaGlsZFVwID0gKG5vZGU6IE1pbmROb2RlLCBjaGlsZDogTWluZE5vZGUpID0+IHtcbiAgICByZXR1cm4gbm9kZS55ID4gY2hpbGQueTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5TmV3Tm9kZSA9IChub2RlOiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IG5ld05vZGU6IE1pbmRFbGVtZW50ID0geyAuLi5ub2RlIH07XG4gICAgbmV3Tm9kZS5pZCA9IGlkQ3JlYXRvcigpO1xuICAgIG5ld05vZGUuY2hpbGRyZW4gPSBbXTtcblxuICAgIGZvciAoY29uc3QgY2hpbGROb2RlIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgbmV3Tm9kZS5jaGlsZHJlbi5wdXNoKGNvcHlOZXdOb2RlKGNoaWxkTm9kZSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3Tm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRNaW5kRWxlbWVudCA9IChib2FyZDogUGxhaXRNaW5kQm9hcmQsIGluaGVyaXROb2RlOiBNaW5kRWxlbWVudCwgcGF0aDogUGF0aCkgPT4ge1xuICAgIGNvbnN0IG5ld05vZGU6IEluaGVyaXRBdHRyaWJ1dGUgPSB7fTtcbiAgICBpZiAoIWluaGVyaXROb2RlLmlzUm9vdCkge1xuICAgICAgICBJTkhFUklUX0FUVFJJQlVURV9LRVlTLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICAgICAgICAobmV3Tm9kZSBhcyBhbnkpW2F0dHJdID0gaW5oZXJpdE5vZGVbYXR0cl07XG4gICAgICAgIH0pO1xuICAgICAgICBkZWxldGUgbmV3Tm9kZS5sYXlvdXQ7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3RWxlbWVudCA9IGNyZWF0ZU1pbmRFbGVtZW50KCcnLCBUT1BJQ19GT05UX1NJWkUsIFRFWFRfREVGQVVMVF9IRUlHSFQsIG5ld05vZGUpO1xuXG4gICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlKGJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbiAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgYWRkU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBuZXdFbGVtZW50KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZWRpdFRvcGljKG5ld0VsZW1lbnQpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRMYXN0Q2hpbGQgPSAoY2hpbGQ6IE1pbmROb2RlKSA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IGNoaWxkO1xuICAgIHdoaWxlIChyZXN1bHQuY2hpbGRyZW4ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jaGlsZHJlbltyZXN1bHQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZGl2aWRlRWxlbWVudEJ5UGFyZW50ID0gKGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3QgYWJzdHJhY3RJbmNsdWRlZEdyb3VwcyA9IFtdO1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnRzOiBNaW5kRWxlbWVudFtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50c1tpXSk7XG4gICAgICAgIGNvbnN0IHBhcmVudEluZGV4ID0gcGFyZW50RWxlbWVudHMuaW5kZXhPZihwYXJlbnQpO1xuICAgICAgICBpZiAocGFyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICBwYXJlbnRFbGVtZW50cy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzLnB1c2goW2VsZW1lbnRzW2ldXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhYnN0cmFjdEluY2x1ZGVkR3JvdXBzW3BhcmVudEluZGV4XS5wdXNoKGVsZW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBwYXJlbnRFbGVtZW50cywgYWJzdHJhY3RJbmNsdWRlZEdyb3VwcyB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRNaW5kRWxlbWVudEZvbnRTaXplID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudCkgPT4ge1xuICAgIGlmIChQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBST09UX1RPUElDX0ZPTlRfU0laRTtcbiAgICB9XG4gICAgaWYgKE1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBUT1BJQ19GT05UX1NJWkU7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignY2FuIG5vdCBmaW5kIGRlZmF1bHQgZm9udC1zaXplJyk7XG59O1xuIl19
@@ -1,11 +1,16 @@
1
- import { PlaitElement, getSelectedElements } from '@plait/core';
1
+ import { getSelectedElements } from '@plait/core';
2
2
  import { MindElement } from '../../interfaces/element';
3
+ import { getFirstTextManage } from '@plait/common';
4
+ import { ExitOrigin } from '@plait/text';
3
5
  export function editTopic(element) {
4
- const component = PlaitElement.getComponent(element);
5
- component?.editTopic();
6
+ const textManage = getFirstTextManage(element);
7
+ textManage?.edit((origin) => {
8
+ if (origin === ExitOrigin.default) {
9
+ }
10
+ });
6
11
  }
7
- export const getSelectedMindElements = (board) => {
8
- const selectedElements = getSelectedElements(board).filter(value => MindElement.isMindElement(board, value));
9
- return selectedElements;
12
+ export const getSelectedMindElements = (board, elements) => {
13
+ const selectedElements = elements?.length ? elements : getSelectedElements(board);
14
+ return selectedElements.filter(value => MindElement.isMindElement(board, value));
10
15
  };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbm9kZS9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHdkQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUFvQjtJQUMxQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBc0IsQ0FBQztJQUMxRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDM0IsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFO0lBQ3pELE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQWtCLENBQUM7SUFDOUgsT0FBTyxnQkFBZ0IsQ0FBQztBQUM1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21pbmQtbm9kZS5jb21wb25lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gZWRpdFRvcGljKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChlbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICBjb21wb25lbnQ/LmVkaXRUb3BpYygpO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRNaW5kRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKHZhbHVlID0+IE1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIHZhbHVlKSkgYXMgTWluZEVsZW1lbnRbXTtcbiAgICByZXR1cm4gc2VsZWN0ZWRFbGVtZW50cztcbn07XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvbm9kZS9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QixtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekMsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUFvQjtJQUMxQyxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBa0IsRUFBRSxFQUFFO1FBQ3BDLElBQUksTUFBTSxLQUFLLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLFFBQXlCLEVBQUUsRUFBRTtJQUNwRixNQUFNLGdCQUFnQixHQUFHLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEYsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBa0IsQ0FBQztBQUN0RyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBnZXRGaXJzdFRleHRNYW5hZ2UgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IEV4aXRPcmlnaW4gfSBmcm9tICdAcGxhaXQvdGV4dCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlZGl0VG9waWMoZWxlbWVudDogTWluZEVsZW1lbnQpIHtcbiAgICBjb25zdCB0ZXh0TWFuYWdlID0gZ2V0Rmlyc3RUZXh0TWFuYWdlKGVsZW1lbnQpO1xuICAgIHRleHRNYW5hZ2U/LmVkaXQoKG9yaWdpbjogRXhpdE9yaWdpbikgPT4ge1xuICAgICAgICBpZiAob3JpZ2luID09PSBFeGl0T3JpZ2luLmRlZmF1bHQpIHtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRNaW5kRWxlbWVudHMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzPzogUGxhaXRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZWxlbWVudHM/Lmxlbmd0aCA/IGVsZW1lbnRzIDogZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKHZhbHVlID0+IE1pbmRFbGVtZW50LmlzTWluZEVsZW1lbnQoYm9hcmQsIHZhbHVlKSkgYXMgTWluZEVsZW1lbnRbXTtcbn07XG4iXX0=
@@ -1,15 +1,17 @@
1
1
  import { PlaitElement } from '@plait/core';
2
- import { addElementOfFocusedImage, removeElementOfFocusedImage } from '@plait/common';
2
+ import { ImageGenerator, addElementOfFocusedImage, removeElementOfFocusedImage } from '@plait/common';
3
3
  export const addImageFocus = (board, element) => {
4
4
  addElementOfFocusedImage(board, element);
5
- const elementComponent = PlaitElement.getComponent(element);
6
- elementComponent.imageGenerator.componentRef.instance.isFocus = true;
7
- elementComponent.imageGenerator.componentRef.instance.cdr.markForCheck();
5
+ const commonElementRef = PlaitElement.getElementRef(element);
6
+ const imageGenerator = commonElementRef.getGenerator(ImageGenerator.key);
7
+ imageGenerator.componentRef.instance.isFocus = true;
8
+ imageGenerator.componentRef.instance.cdr.markForCheck();
8
9
  };
9
10
  export const removeImageFocus = (board, element) => {
10
11
  removeElementOfFocusedImage(board);
11
- const elementComponent = PlaitElement.getComponent(element);
12
- elementComponent.imageGenerator.componentRef.instance.isFocus = false;
13
- elementComponent.imageGenerator.componentRef.instance.cdr.markForCheck();
12
+ const commonElementRef = PlaitElement.getElementRef(element);
13
+ const imageGenerator = commonElementRef.getGenerator(ImageGenerator.key);
14
+ imageGenerator.componentRef.instance.isFocus = false;
15
+ imageGenerator.componentRef.instance.cdr.markForCheck();
14
16
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlL2ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDJCQUEyQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWlCLEVBQUUsT0FBK0IsRUFBRSxFQUFFO0lBQ2hGLHdCQUF3QixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6QyxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFzQixDQUFDO0lBQ2pGLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxZQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDdEUsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFlBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQzlFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUErQixFQUFFLEVBQUU7SUFDbkYsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBc0IsQ0FBQztJQUNqRixnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsWUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZFLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxZQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUM5RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQbGFpdEVsZW1lbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21pbmQtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgSW1hZ2VEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50LWRhdGEnO1xuaW1wb3J0IHsgYWRkRWxlbWVudE9mRm9jdXNlZEltYWdlLCByZW1vdmVFbGVtZW50T2ZGb2N1c2VkSW1hZ2UgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IGFkZEltYWdlRm9jdXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50PEltYWdlRGF0YT4pID0+IHtcbiAgICBhZGRFbGVtZW50T2ZGb2N1c2VkSW1hZ2UoYm9hcmQsIGVsZW1lbnQpO1xuICAgIGNvbnN0IGVsZW1lbnRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgIGVsZW1lbnRDb21wb25lbnQuaW1hZ2VHZW5lcmF0b3IuY29tcG9uZW50UmVmIS5pbnN0YW5jZS5pc0ZvY3VzID0gdHJ1ZTtcbiAgICBlbGVtZW50Q29tcG9uZW50LmltYWdlR2VuZXJhdG9yLmNvbXBvbmVudFJlZiEuaW5zdGFuY2UuY2RyLm1hcmtGb3JDaGVjaygpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUltYWdlRm9jdXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IE1pbmRFbGVtZW50PEltYWdlRGF0YT4pID0+IHtcbiAgICByZW1vdmVFbGVtZW50T2ZGb2N1c2VkSW1hZ2UoYm9hcmQpO1xuICAgIGNvbnN0IGVsZW1lbnRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgIGVsZW1lbnRDb21wb25lbnQuaW1hZ2VHZW5lcmF0b3IuY29tcG9uZW50UmVmIS5pbnN0YW5jZS5pc0ZvY3VzID0gZmFsc2U7XG4gICAgZWxlbWVudENvbXBvbmVudC5pbWFnZUdlbmVyYXRvci5jb21wb25lbnRSZWYhLmluc3RhbmNlLmNkci5tYXJrRm9yQ2hlY2soKTtcbn07XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9ub2RlL2ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdkQsT0FBTyxFQUFFLGNBQWMsRUFBeUIsd0JBQXdCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBaUIsRUFBRSxPQUErQixFQUFFLEVBQUU7SUFDaEYsd0JBQXdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBd0IsT0FBTyxDQUFDLENBQUM7SUFDcEYsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFpQixjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekYsY0FBYyxDQUFDLFlBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUNyRCxjQUFjLENBQUMsWUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDN0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLE9BQStCLEVBQUUsRUFBRTtJQUNuRiwyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxhQUFhLENBQXdCLE9BQU8sQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBaUIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pGLGNBQWMsQ0FBQyxZQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdEQsY0FBYyxDQUFDLFlBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQzdELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IEltYWdlRGF0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhJztcbmltcG9ydCB7IEltYWdlR2VuZXJhdG9yLCBQbGFpdENvbW1vbkVsZW1lbnRSZWYsIGFkZEVsZW1lbnRPZkZvY3VzZWRJbWFnZSwgcmVtb3ZlRWxlbWVudE9mRm9jdXNlZEltYWdlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBhZGRJbWFnZUZvY3VzID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50OiBNaW5kRWxlbWVudDxJbWFnZURhdGE+KSA9PiB7XG4gICAgYWRkRWxlbWVudE9mRm9jdXNlZEltYWdlKGJvYXJkLCBlbGVtZW50KTtcbiAgICBjb25zdCBjb21tb25FbGVtZW50UmVmID0gUGxhaXRFbGVtZW50LmdldEVsZW1lbnRSZWY8UGxhaXRDb21tb25FbGVtZW50UmVmPihlbGVtZW50KTtcbiAgICBjb25zdCBpbWFnZUdlbmVyYXRvciA9IGNvbW1vbkVsZW1lbnRSZWYuZ2V0R2VuZXJhdG9yPEltYWdlR2VuZXJhdG9yPihJbWFnZUdlbmVyYXRvci5rZXkpO1xuICAgIGltYWdlR2VuZXJhdG9yLmNvbXBvbmVudFJlZiEuaW5zdGFuY2UuaXNGb2N1cyA9IHRydWU7XG4gICAgaW1hZ2VHZW5lcmF0b3IuY29tcG9uZW50UmVmIS5pbnN0YW5jZS5jZHIubWFya0ZvckNoZWNrKCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlSW1hZ2VGb2N1cyA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQ8SW1hZ2VEYXRhPikgPT4ge1xuICAgIHJlbW92ZUVsZW1lbnRPZkZvY3VzZWRJbWFnZShib2FyZCk7XG4gICAgY29uc3QgY29tbW9uRWxlbWVudFJlZiA9IFBsYWl0RWxlbWVudC5nZXRFbGVtZW50UmVmPFBsYWl0Q29tbW9uRWxlbWVudFJlZj4oZWxlbWVudCk7XG4gICAgY29uc3QgaW1hZ2VHZW5lcmF0b3IgPSBjb21tb25FbGVtZW50UmVmLmdldEdlbmVyYXRvcjxJbWFnZUdlbmVyYXRvcj4oSW1hZ2VHZW5lcmF0b3Iua2V5KTtcbiAgICBpbWFnZUdlbmVyYXRvci5jb21wb25lbnRSZWYhLmluc3RhbmNlLmlzRm9jdXMgPSBmYWxzZTtcbiAgICBpbWFnZUdlbmVyYXRvci5jb21wb25lbnRSZWYhLmluc3RhbmNlLmNkci5tYXJrRm9yQ2hlY2soKTtcbn07XG4iXX0=