@plait/core 0.47.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -95,7 +95,7 @@ export function withMoving(board) {
95
95
  }
96
96
  }
97
97
  if (isPreventDefault) {
98
- // 阻止 move 过程中触发画布滚动行为
98
+ // Prevent canvas scrolling behavior from being triggered during move
99
99
  event.preventDefault();
100
100
  }
101
101
  pointerMove(event);
@@ -130,4 +130,4 @@ export function withMoving(board) {
130
130
  }
131
131
  return board;
132
132
  }
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tb3ZpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtbW92aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvRSxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWlCO0lBQ3hD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QzFCLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCT0FSRF9UT19IT1NUIH0gZnJvbSAnLi4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IGlzSW5QbGFpdEJvYXJkLCB0cmFuc2Zvcm1Qb2ludCB9IGZyb20gJy4uL3V0aWxzL2JvYXJkJztcbmltcG9ydCB7IGlzTWFpblBvaW50ZXIsIHRvUG9pbnQgfSBmcm9tICcuLi91dGlscy9kb20vY29tbW9uJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgZ2V0SGl0RWxlbWVudEJ5UG9pbnQsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZC1lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0Tm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyB0aHJvdHRsZVJBRiB9IGZyb20gJy4uL3V0aWxzL2NvbW1vbic7XG5pbXBvcnQgeyBhZGRNb3ZpbmdFbGVtZW50cywgZ2V0TW92aW5nRWxlbWVudHMsIHJlbW92ZU1vdmluZ0VsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvbW92aW5nLWVsZW1lbnQnO1xuaW1wb3J0IHsgTUVSR0lORyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaGlzdG9yeSc7XG5pbXBvcnQgeyBpc1ByZXZlbnRUb3VjaE1vdmUsIHByZXZlbnRUb3VjaE1vdmUsIGhhbmRsZVRvdWNoVGFyZ2V0LCBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzLCBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQWxpZ25SZWFjdGlvbiB9IGZyb20gJy4uL3V0aWxzL3JlYWN0aW9uLW1hbmFnZXInO1xuaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBQ1RJVkVfTU9WSU5HX0NMQVNTX05BTUUsIFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoTW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCwgZ2xvYmFsUG9pbnRlck1vdmUgfSA9IGJvYXJkO1xuXG4gICAgbGV0IG9mZnNldFggPSAwO1xuICAgIGxldCBvZmZzZXRZID0gMDtcbiAgICBsZXQgaXNQcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IG51bGw7XG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGxldCBhbGlnbkc6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaG9zdCA9IEJPQVJEX1RPX0hPU1QuZ2V0KGJvYXJkKTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuICAgICAgICBsZXQgbW92YWJsZUVsZW1lbnRzID0gYm9hcmQuY2hpbGRyZW4uZmlsdGVyKGl0ZW0gPT4gYm9hcmQuaXNNb3ZhYmxlKGl0ZW0pKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkgJiZcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgJiZcbiAgICAgICAgICAgIG1vdmFibGVFbGVtZW50cy5sZW5ndGggJiZcbiAgICAgICAgICAgICFpc1ByZXZlbnRUb3VjaE1vdmUoYm9hcmQpICYmXG4gICAgICAgICAgICBpc01haW5Qb2ludGVyKGV2ZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTW92YWJsZUVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKGl0ZW0gPT4gbW92YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGl0ZW0pKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgcG9pbnQpO1xuICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQgJiYgbW92YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkTW92YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRFbGVtZW50cyA9IGJvYXJkLmdldFJlbGF0ZWRGcmFnbWVudChbXSk7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gWy4uLnNlbGVjdGVkTW92YWJsZUVsZW1lbnRzLCAuLi5yZWxhdGVkRWxlbWVudHNdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gW2hpdEVsZW1lbnRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhY3RpdmVFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlRWxlbWVudHNSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBhY3RpdmVFbGVtZW50cywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydFBvaW50ICYmIGFjdGl2ZUVsZW1lbnRzLmxlbmd0aCAmJiAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICBpZiAoIWlzUHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICBpc1ByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFsaWduRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjb25zdCBob3N0ID0gQk9BUkRfVE9fSE9TVC5nZXQoYm9hcmQpO1xuICAgICAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuICAgICAgICAgICAgb2Zmc2V0WCA9IGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXTtcbiAgICAgICAgICAgIG9mZnNldFkgPSBlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV07XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4uZW5kUG9pbnQsIC4uLnN0YXJ0UG9pbnQpO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSIHx8IGdldE1vdmluZ0VsZW1lbnRzKGJvYXJkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3R0bGVSQUYoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3UmVjdGFuZ2xlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWN0aXZlRWxlbWVudHNSZWN0YW5nbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB4OiBhY3RpdmVFbGVtZW50c1JlY3RhbmdsZS54ICsgb2Zmc2V0WCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlLnkgKyBvZmZzZXRZXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWN0aW9uTWFuYWdlciA9IG5ldyBBbGlnblJlYWN0aW9uKGJvYXJkLCBhY3RpdmVFbGVtZW50cywgbmV3UmVjdGFuZ2xlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmID0gcmVhY3Rpb25NYW5hZ2VyLmhhbmRsZUFsaWduKCk7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFggLT0gcmVmLmRlbHRhWDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WSAtPSByZWYuZGVsdGFZO1xuICAgICAgICAgICAgICAgICAgICBhbGlnbkcgPSByZWYuZztcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25HLmNsYXNzTGlzdC5hZGQoQUNUSVZFX01PVklOR19DTEFTU19OQU1FKTtcbiAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKGFsaWduRyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlVG91Y2hUYXJnZXQoYm9hcmQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudHMgPSBhY3RpdmVFbGVtZW50cy5tYXAoYWN0aXZlRWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSBhY3RpdmVFbGVtZW50LnBvaW50cyB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IGFjdGl2ZUVsZW1lbnQucG9pbnRzIVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IHBvaW50cy5tYXAocCA9PiBbcFswXSArIG9mZnNldFgsIHBbMV0gKyBvZmZzZXRZXSkgYXMgUG9pbnRbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYm9hcmQuY2hpbGRyZW4uZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gYWN0aXZlRWxlbWVudC5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHM6IG5ld1BvaW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE1FUkdJTkcuc2V0KGJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBbaW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5hZGQoJ2VsZW1lbnQtbW92aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIGFkZE1vdmluZ0VsZW1lbnRzKGJvYXJkLCBjdXJyZW50RWxlbWVudHMgYXMgUGxhaXRFbGVtZW50W10pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyDpmLvmraIgbW92ZSDov4fnqIvkuK3op6blj5HnlLvluIPmu5rliqjooYzkuLpcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydFBvaW50KSB7XG4gICAgICAgICAgICBjb25zdCBpblBsYWl0Qm9hcmRFbGVtZW50ID0gaXNJblBsYWl0Qm9hcmQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpO1xuICAgICAgICAgICAgaWYgKCFpblBsYWl0Qm9hcmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsTW92ZShib2FyZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsUG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlzUHJldmVudERlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIGNhbmNlbE1vdmUoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbmNlbE1vdmUoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgYWxpZ25HPy5yZW1vdmUoKTtcbiAgICAgICAgc3RhcnRQb2ludCA9IG51bGw7XG4gICAgICAgIGFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlID0gbnVsbDtcbiAgICAgICAgb2Zmc2V0WCA9IDA7XG4gICAgICAgIG9mZnNldFkgPSAwO1xuICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFtdO1xuICAgICAgICByZW1vdmVNb3ZpbmdFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIE1FUkdJTkcuc2V0KGJvYXJkLCBmYWxzZSk7XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoJ2VsZW1lbnQtbW92aW5nJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tb3ZpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtbW92aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvRSxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWlCO0lBQ3hD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QzFCLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCT0FSRF9UT19IT1NUIH0gZnJvbSAnLi4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JvYXJkJztcbmltcG9ydCB7IGlzSW5QbGFpdEJvYXJkLCB0cmFuc2Zvcm1Qb2ludCB9IGZyb20gJy4uL3V0aWxzL2JvYXJkJztcbmltcG9ydCB7IGlzTWFpblBvaW50ZXIsIHRvUG9pbnQgfSBmcm9tICcuLi91dGlscy9kb20vY29tbW9uJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VsZW1lbnQnO1xuaW1wb3J0IHsgZ2V0SGl0RWxlbWVudEJ5UG9pbnQsIGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tICcuLi91dGlscy9zZWxlY3RlZC1lbGVtZW50JztcbmltcG9ydCB7IFBsYWl0Tm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyB0aHJvdHRsZVJBRiB9IGZyb20gJy4uL3V0aWxzL2NvbW1vbic7XG5pbXBvcnQgeyBhZGRNb3ZpbmdFbGVtZW50cywgZ2V0TW92aW5nRWxlbWVudHMsIHJlbW92ZU1vdmluZ0VsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvbW92aW5nLWVsZW1lbnQnO1xuaW1wb3J0IHsgTUVSR0lORyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaGlzdG9yeSc7XG5pbXBvcnQgeyBpc1ByZXZlbnRUb3VjaE1vdmUsIHByZXZlbnRUb3VjaE1vdmUsIGhhbmRsZVRvdWNoVGFyZ2V0LCBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzLCBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQWxpZ25SZWFjdGlvbiB9IGZyb20gJy4uL3V0aWxzL3JlYWN0aW9uLW1hbmFnZXInO1xuaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBQ1RJVkVfTU9WSU5HX0NMQVNTX05BTUUsIFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoTW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCwgZ2xvYmFsUG9pbnRlck1vdmUgfSA9IGJvYXJkO1xuXG4gICAgbGV0IG9mZnNldFggPSAwO1xuICAgIGxldCBvZmZzZXRZID0gMDtcbiAgICBsZXQgaXNQcmV2ZW50RGVmYXVsdCA9IGZhbHNlO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IG51bGw7XG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuICAgIGxldCBhbGlnbkc6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaG9zdCA9IEJPQVJEX1RPX0hPU1QuZ2V0KGJvYXJkKTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuICAgICAgICBsZXQgbW92YWJsZUVsZW1lbnRzID0gYm9hcmQuY2hpbGRyZW4uZmlsdGVyKGl0ZW0gPT4gYm9hcmQuaXNNb3ZhYmxlKGl0ZW0pKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkgJiZcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgJiZcbiAgICAgICAgICAgIG1vdmFibGVFbGVtZW50cy5sZW5ndGggJiZcbiAgICAgICAgICAgICFpc1ByZXZlbnRUb3VjaE1vdmUoYm9hcmQpICYmXG4gICAgICAgICAgICBpc01haW5Qb2ludGVyKGV2ZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTW92YWJsZUVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCkuZmlsdGVyKGl0ZW0gPT4gbW92YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGl0ZW0pKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgcG9pbnQpO1xuICAgICAgICAgICAgaWYgKGhpdEVsZW1lbnQgJiYgbW92YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkTW92YWJsZUVsZW1lbnRzLmluY2x1ZGVzKGhpdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRFbGVtZW50cyA9IGJvYXJkLmdldFJlbGF0ZWRGcmFnbWVudChbXSk7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gWy4uLnNlbGVjdGVkTW92YWJsZUVsZW1lbnRzLCAuLi5yZWxhdGVkRWxlbWVudHNdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnRzID0gW2hpdEVsZW1lbnRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhY3RpdmVFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlRWxlbWVudHNSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBhY3RpdmVFbGVtZW50cywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydFBvaW50ICYmIGFjdGl2ZUVsZW1lbnRzLmxlbmd0aCAmJiAhUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICBpZiAoIWlzUHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICBpc1ByZXZlbnREZWZhdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFsaWduRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjb25zdCBob3N0ID0gQk9BUkRfVE9fSE9TVC5nZXQoYm9hcmQpO1xuICAgICAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuICAgICAgICAgICAgb2Zmc2V0WCA9IGVuZFBvaW50WzBdIC0gc3RhcnRQb2ludFswXTtcbiAgICAgICAgICAgIG9mZnNldFkgPSBlbmRQb2ludFsxXSAtIHN0YXJ0UG9pbnRbMV07XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQoLi4uZW5kUG9pbnQsIC4uLnN0YXJ0UG9pbnQpO1xuICAgICAgICAgICAgaWYgKGRpc3RhbmNlID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSIHx8IGdldE1vdmluZ0VsZW1lbnRzKGJvYXJkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3R0bGVSQUYoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3UmVjdGFuZ2xlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWN0aXZlRWxlbWVudHNSZWN0YW5nbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB4OiBhY3RpdmVFbGVtZW50c1JlY3RhbmdsZS54ICsgb2Zmc2V0WCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlLnkgKyBvZmZzZXRZXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlYWN0aW9uTWFuYWdlciA9IG5ldyBBbGlnblJlYWN0aW9uKGJvYXJkLCBhY3RpdmVFbGVtZW50cywgbmV3UmVjdGFuZ2xlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmID0gcmVhY3Rpb25NYW5hZ2VyLmhhbmRsZUFsaWduKCk7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFggLT0gcmVmLmRlbHRhWDtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WSAtPSByZWYuZGVsdGFZO1xuICAgICAgICAgICAgICAgICAgICBhbGlnbkcgPSByZWYuZztcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25HLmNsYXNzTGlzdC5hZGQoQUNUSVZFX01PVklOR19DTEFTU19OQU1FKTtcbiAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKGFsaWduRyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlVG91Y2hUYXJnZXQoYm9hcmQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudHMgPSBhY3RpdmVFbGVtZW50cy5tYXAoYWN0aXZlRWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwb2ludHMgPSBhY3RpdmVFbGVtZW50LnBvaW50cyB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IGFjdGl2ZUVsZW1lbnQucG9pbnRzIVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BvaW50cyA9IHBvaW50cy5tYXAocCA9PiBbcFswXSArIG9mZnNldFgsIHBbMV0gKyBvZmZzZXRZXSkgYXMgUG9pbnRbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYm9hcmQuY2hpbGRyZW4uZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pZCA9PT0gYWN0aXZlRWxlbWVudC5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHM6IG5ld1BvaW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE1FUkdJTkcuc2V0KGJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQbGFpdE5vZGUuZ2V0KGJvYXJkLCBbaW5kZXhdKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5hZGQoJ2VsZW1lbnQtbW92aW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIGFkZE1vdmluZ0VsZW1lbnRzKGJvYXJkLCBjdXJyZW50RWxlbWVudHMgYXMgUGxhaXRFbGVtZW50W10pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc1ByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyBQcmV2ZW50IGNhbnZhcyBzY3JvbGxpbmcgYmVoYXZpb3IgZnJvbSBiZWluZyB0cmlnZ2VyZWQgZHVyaW5nIG1vdmVcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydFBvaW50KSB7XG4gICAgICAgICAgICBjb25zdCBpblBsYWl0Qm9hcmRFbGVtZW50ID0gaXNJblBsYWl0Qm9hcmQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpO1xuICAgICAgICAgICAgaWYgKCFpblBsYWl0Qm9hcmRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsTW92ZShib2FyZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsUG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSBldmVudCA9PiB7XG4gICAgICAgIGlzUHJldmVudERlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHN0YXJ0UG9pbnQpIHtcbiAgICAgICAgICAgIGNhbmNlbE1vdmUoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNhbmNlbE1vdmUoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICAgICAgYWxpZ25HPy5yZW1vdmUoKTtcbiAgICAgICAgc3RhcnRQb2ludCA9IG51bGw7XG4gICAgICAgIGFjdGl2ZUVsZW1lbnRzUmVjdGFuZ2xlID0gbnVsbDtcbiAgICAgICAgb2Zmc2V0WCA9IDA7XG4gICAgICAgIG9mZnNldFkgPSAwO1xuICAgICAgICBhY3RpdmVFbGVtZW50cyA9IFtdO1xuICAgICAgICByZW1vdmVNb3ZpbmdFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIE1FUkdJTkcuc2V0KGJvYXJkLCBmYWxzZSk7XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoJ2VsZW1lbnQtbW92aW5nJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
@@ -22,6 +22,12 @@ export function withSelection(board) {
22
22
  let isShift = false;
23
23
  let isTextSelection = false;
24
24
  board.pointerDown = (event) => {
25
+ if (!isShift && event.shiftKey) {
26
+ isShift = true;
27
+ }
28
+ if (isShift && !event.shiftKey) {
29
+ isShift = false;
30
+ }
25
31
  const isHitText = !!(event.target instanceof Element && event.target.closest('.plait-richtext-container'));
26
32
  isTextSelection = isHitText && PlaitBoard.hasBeenTextEditing(board);
27
33
  // prevent text from being selected
@@ -38,18 +44,6 @@ export function withSelection(board) {
38
44
  }
39
45
  pointerDown(event);
40
46
  };
41
- board.keydown = (event) => {
42
- if (!isShift && event.key === 'Shift') {
43
- isShift = true;
44
- }
45
- keydown(event);
46
- };
47
- board.keyup = (event) => {
48
- if (isShift && event.key === 'Shift') {
49
- isShift = false;
50
- }
51
- keyup(event);
52
- };
53
47
  board.pointerMove = (event) => {
54
48
  if (!isTextSelection) {
55
49
  // prevent text from being selected
@@ -80,7 +74,8 @@ export function withSelection(board) {
80
74
  };
81
75
  // handle the end of click select
82
76
  board.pointerUp = (event) => {
83
- const isSkip = !isMainPointer(event) || isDragging(board) || !PlaitBoard.isPointer(board, PlaitPointerType.selection);
77
+ const isSetSelectionPointer = PlaitBoard.isPointer(board, PlaitPointerType.selection) || PlaitBoard.isPointer(board, PlaitPointerType.hand);
78
+ const isSkip = !isMainPointer(event) || isDragging(board) || !isSetSelectionPointer;
84
79
  if (isSkip) {
85
80
  pointerDown(event);
86
81
  return;
@@ -238,4 +233,4 @@ export function createSelectionRectangleG(board) {
238
233
  }
239
234
  return null;
240
235
  }
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQWdCLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFILE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFP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QW1CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3BFLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3RHLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxTQUFTLEVBQUUsT0FBTztTQUNyQixDQUFDLENBQUM7UUFDSCxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sbUJBQW1CLENBQUM7S0FDOUI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IHRyYW5zZm9ybVBvaW50IH0gZnJvbSAnLi4vdXRpbHMvYm9hcmQnO1xuaW1wb3J0IHsgaXNNYWluUG9pbnRlciwgdG9Qb2ludCB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN0YW5nbGUtY2xpZW50JztcbmltcG9ydCB7XG4gICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGdldEhpdEVsZW1lbnRCeVBvaW50LFxuICAgIGdldEhpdEVsZW1lbnRzQnlTZWxlY3Rpb24sXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQsIFBsYWl0UG9pbnRlclR5cGUsIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsIFNFTEVDVElPTl9GSUxMX0NPTE9SIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvZWxlbWVudCc7XG5pbXBvcnQgeyBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLCBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgQUNUSVZFX1NUUk9LRV9XSURUSCwgQVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FLCBTRUxFQ1RJT05fUkVDVEFOR0xFX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMvc2VsZWN0aW9uJztcbmltcG9ydCB7IGRyYXdSZWN0YW5nbGUsIGlzRHJhZ2dpbmcsIHByZXZlbnRUb3VjaE1vdmUsIHNldERyYWdnaW5nLCB0aHJvdHRsZVJBRiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFBsYWl0T3B0aW9uc0JvYXJkLCBQbGFpdFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL3dpdGgtb3B0aW9ucyc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbktleSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGx1Z2luLWtleSc7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBQUkVTU19BTkRfTU9WRV9CVUZGRVIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhQbHVnaW5PcHRpb25zIGV4dGVuZHMgUGxhaXRQbHVnaW5PcHRpb25zIHtcbiAgICBpc011bHRpcGxlOiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRTZWxlY3Q6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2VsZWN0aW9uKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlclVwLCBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwLCBrZXlkb3duLCBrZXl1cCwgb25DaGFuZ2UsIGFmdGVyQ2hhbmdlIH0gPSBib2FyZDtcbiAgICBsZXQgc3RhcnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGVuZDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgc2VsZWN0aW9uTW92aW5nRzogU1ZHR0VsZW1lbnQ7XG4gICAgbGV0IHNlbGVjdGlvblJlY3RhbmdsZUc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTtcbiAgICBsZXQgaXNTaGlmdCA9IGZhbHNlO1xuICAgIGxldCBpc1RleHRTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaXNIaXRUZXh0ID0gISEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiBldmVudC50YXJnZXQuY2xvc2VzdCgnLnBsYWl0LXJpY2h0ZXh0LWNvbnRhaW5lcicpKTtcbiAgICAgICAgaXNUZXh0U2VsZWN0aW9uID0gaXNIaXRUZXh0ICYmIFBsYWl0Qm9hcmQuaGFzQmVlblRleHRFZGl0aW5nKGJvYXJkKTtcblxuICAgICAgICAvLyBwcmV2ZW50IHRleHQgZnJvbSBiZWluZyBzZWxlY3RlZFxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgIWlzVGV4dFNlbGVjdGlvbikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICBjb25zdCBoaXRFbGVtZW50ID0gZ2V0SGl0RWxlbWVudEJ5UG9pbnQoYm9hcmQsIHBvaW50KTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuZ2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbik7XG5cbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgJiYgIWhpdEVsZW1lbnQgJiYgb3B0aW9ucy5pc011bHRpcGxlICYmICFvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3QpIHtcbiAgICAgICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCB0cnVlKTtcbiAgICAgICAgICAgIC8vIHN0YXJ0IHJlY3RhbmdsZSBzZWxlY3Rpb25cbiAgICAgICAgICAgIHN0YXJ0ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5rZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaXNTaGlmdCAmJiBldmVudC5rZXkgPT09ICdTaGlmdCcpIHtcbiAgICAgICAgICAgIGlzU2hpZnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGtleWRvd24oZXZlbnQpO1xuICAgIH1cblxuICAgIGJvYXJkLmtleXVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpc1NoaWZ0ICYmIGV2ZW50LmtleSA9PT0gJ1NoaWZ0Jykge1xuICAgICAgICAgICAgaXNTaGlmdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGtleXVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQucG9pbnRlck1vdmUgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWlzVGV4dFNlbGVjdGlvbikge1xuICAgICAgICAgICAgLy8gcHJldmVudCB0ZXh0IGZyb20gYmVpbmcgc2VsZWN0ZWRcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhcnQgJiYgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgY29uc3QgbW92ZWRUYXJnZXQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQudG9SZWN0YW5nbGVDbGllbnQoW3N0YXJ0LCBtb3ZlZFRhcmdldF0pO1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBpZiAoTWF0aC5oeXBvdChyZWN0YW5nbGUud2lkdGgsIHJlY3RhbmdsZS5oZWlnaHQpID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSIHx8IGlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgIGVuZCA9IG1vdmVkVGFyZ2V0O1xuICAgICAgICAgICAgICAgIHRocm90dGxlUkFGKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHsgYW5jaG9yOiBzdGFydCwgZm9jdXM6IGVuZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGlvbk1vdmluZyhib2FyZCk7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRyA9IGRyYXdSZWN0YW5nbGUoYm9hcmQsIHJlY3RhbmdsZSwge1xuICAgICAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgICAgICAgICBmaWxsOiBTRUxFQ1RJT05fRklMTF9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHNlbGVjdGlvbk1vdmluZ0cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgLy8gaGFuZGxlIHRoZSBlbmQgb2YgY2xpY2sgc2VsZWN0XG4gICAgYm9hcmQucG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgaXNTa2lwID0gIWlzTWFpblBvaW50ZXIoZXZlbnQpIHx8IGlzRHJhZ2dpbmcoYm9hcmQpIHx8ICFQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pO1xuICAgICAgICBpZiAoaXNTa2lwKSB7XG4gICAgICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHsgYW5jaG9yOiBwb2ludCwgZm9jdXM6IHBvaW50IH07XG4gICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCBzZWxlY3Rpb24pO1xuICAgICAgICBwb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5nbG9iYWxQb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGNsZWFyU2VsZWN0aW9uTW92aW5nKGJvYXJkKTtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCB7IGFuY2hvcjogc3RhcnQsIGZvY3VzOiBlbmQgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc0ZvY3VzKGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3QgaXNJbkJvYXJkID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNJbkRvY3VtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgTm9kZSAmJiBkb2N1bWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNBdHRhY2hlZEVsZW1lbnQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5jbG9zZXN0KGAuJHtBVFRBQ0hFRF9FTEVNRU5UX0NMQVNTX05BTUV9YCk7XG4gICAgICAgICAgICAvLyBDbGVhciBzZWxlY3Rpb24gd2hlbiBtb3VzZSBib2FyZCBvdXRzaWRlIGFyZWFcbiAgICAgICAgICAgIC8vIFRoZSBmcmFtZXdvcmsgbmVlZHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJvYXJkIGlzIGZvY3VzZWQgdGhyb3VnaCBzZWxlY3Rpb25cbiAgICAgICAgICAgIGlmICghaXNJbkJvYXJkICYmICFzdGFydCAmJiAhaXNBdHRhY2hlZEVsZW1lbnQgJiYgaXNJbkRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgICBlbmQgPSBudWxsO1xuICAgICAgICBpc1RleHRTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgZ2xvYmFsUG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24pO1xuICAgICAgICBpZiAob3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0KSB7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVtb3ZlIHNlbGVjdGVkIGVsZW1lbnQgaWYgaW5jbHVkZVxuICAgICAgICBib2FyZC5vcGVyYXRpb25zLmZvckVhY2gob3AgPT4ge1xuICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT09ICdyZW1vdmVfbm9kZScpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIG9wLm5vZGUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzSGFuZGxlU2VsZWN0aW9uKGJvYXJkKSAmJiBpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5RWxlbWVudHMgPSBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gdGVtcG9yYXJ5RWxlbWVudHMgPyB0ZW1wb3JhcnlFbGVtZW50cyA6IGdldEhpdEVsZW1lbnRzQnlTZWxlY3Rpb24oYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pc011bHRpcGxlICYmIGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNbMF1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNTaGlmdCAmJiBib2FyZC5zZWxlY3Rpb24gJiYgU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5nZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKV07XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3U2VsZWN0ZWRFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMuc3BsaWNlKG5ld1NlbGVjdGVkRWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkRWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3U2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5lbGVtZW50c107XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3U2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzID0gbmV3RWxlbWVudHM7XG4gICAgICAgICAgICAgICAgZGVsZXRlVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpICYmIG5ld0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGNyZWF0ZVNlbGVjdGlvblJlY3RhbmdsZUcoYm9hcmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgYm9hcmQuYWZ0ZXJDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGlmIChpc0hhbmRsZVNlbGVjdGlvbihib2FyZCkgJiYgIWlzU2V0U2VsZWN0aW9uT3BlcmF0aW9uKGJvYXJkKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggJiYgY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggIT09IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLnNvbWUoKGMsIGluZGV4KSA9PiBjICE9PSBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHNbaW5kZXhdKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGNyZWF0ZVNlbGVjdGlvblJlY3RhbmdsZUcoYm9hcmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzID0gY3VycmVudFNlbGVjdGVkRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFmdGVyQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuc2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbiwge1xuICAgICAgICBpc011bHRpcGxlOiB0cnVlLFxuICAgICAgICBpc0Rpc2FibGVkU2VsZWN0OiBmYWxzZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICByZXR1cm4gYm9hcmQucG9pbnRlciAhPT0gUGxhaXRQb2ludGVyVHlwZS5oYW5kICYmICFvcHRpb25zLmlzRGlzYWJsZWRTZWxlY3QgJiYgIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIHJldHVybiAhIWJvYXJkLm9wZXJhdGlvbnMuZmluZCh2YWx1ZSA9PiB2YWx1ZS50eXBlID09PSAnc2V0X3NlbGVjdGlvbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCByZWYgPSBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMuZ2V0KGJvYXJkKTtcbiAgICBpZiAocmVmKSB7XG4gICAgICAgIHJldHVybiByZWYuZWxlbWVudHM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wb3JhcnlSZWYoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICByZXR1cm4gQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTLmdldChib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVUZW1wb3JhcnlFbGVtZW50cyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIEJPQVJEX1RPX1RFTVBPUkFSWV9FTEVNRU5UUy5kZWxldGUoYm9hcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICByZXR1cm4gISFCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLmdldChib2FyZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QuYWRkKCdzZWxlY3Rpb24tbW92aW5nJyk7XG4gICAgQk9BUkRfVE9fSVNfU0VMRUNUSU9OX01PVklORy5zZXQoYm9hcmQsIHRydWUpO1xuICAgIHNldERyYWdnaW5nKGJvYXJkLCB0cnVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyU2VsZWN0aW9uTW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0aW9uLW1vdmluZycpO1xuICAgIEJPQVJEX1RPX0lTX1NFTEVDVElPTl9NT1ZJTkcuZGVsZXRlKGJvYXJkKTtcbiAgICBzZXREcmFnZ2luZyhib2FyZCwgZmFsc2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0aW9uUmVjdGFuZ2xlRyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICBpZiAocmVjdGFuZ2xlLndpZHRoID4gMCAmJiByZWN0YW5nbGUuaGVpZ2h0ID4gMCAmJiBlbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblJlY3RhbmdsZUcgPSBkcmF3UmVjdGFuZ2xlKGJvYXJkLCBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShyZWN0YW5nbGUsIEFDVElWRV9TVFJPS0VfV0lEVEgpLCB7XG4gICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogQUNUSVZFX1NUUk9LRV9XSURUSCxcbiAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICB9KTtcbiAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRy5jbGFzc0xpc3QuYWRkKFNFTEVDVElPTl9SRUNUQU5HTEVfQ0xBU1NfTkFNRSk7XG4gICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHKTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvblJlY3RhbmdsZUc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuIl19
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDeEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQWdCLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFILE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFP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Q0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3BFLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLEtBQUssRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3RHLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsV0FBVyxFQUFFLG1CQUFtQjtZQUNoQyxTQUFTLEVBQUUsT0FBTztTQUNyQixDQUFDLENBQUM7UUFDSCxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sbUJBQW1CLENBQUM7S0FDOUI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvYm9hcmQnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IFRyYW5zZm9ybXMgfSBmcm9tICcuLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IHRyYW5zZm9ybVBvaW50IH0gZnJvbSAnLi4vdXRpbHMvYm9hcmQnO1xuaW1wb3J0IHsgaXNNYWluUG9pbnRlciwgdG9Qb2ludCB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN0YW5nbGUtY2xpZW50JztcbmltcG9ydCB7XG4gICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGdldEhpdEVsZW1lbnRCeVBvaW50LFxuICAgIGdldEhpdEVsZW1lbnRzQnlTZWxlY3Rpb24sXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnRcbn0gZnJvbSAnLi4vdXRpbHMvc2VsZWN0ZWQtZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnQsIFBsYWl0UG9pbnRlclR5cGUsIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsIFNFTEVDVElPTl9GSUxMX0NPTE9SIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzIH0gZnJvbSAnLi4vdXRpbHMvZWxlbWVudCc7XG5pbXBvcnQgeyBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLCBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMgfSBmcm9tICcuLi91dGlscy93ZWFrLW1hcHMnO1xuaW1wb3J0IHsgQUNUSVZFX1NUUk9LRV9XSURUSCwgQVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FLCBTRUxFQ1RJT05fUkVDVEFOR0xFX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMvc2VsZWN0aW9uJztcbmltcG9ydCB7IGRyYXdSZWN0YW5nbGUsIGlzRHJhZ2dpbmcsIHByZXZlbnRUb3VjaE1vdmUsIHNldERyYWdnaW5nLCB0aHJvdHRsZVJBRiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFBsYWl0T3B0aW9uc0JvYXJkLCBQbGFpdFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuL3dpdGgtb3B0aW9ucyc7XG5pbXBvcnQgeyBQbGFpdFBsdWdpbktleSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGx1Z2luLWtleSc7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBQUkVTU19BTkRfTU9WRV9CVUZGRVIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhQbHVnaW5PcHRpb25zIGV4dGVuZHMgUGxhaXRQbHVnaW5PcHRpb25zIHtcbiAgICBpc011bHRpcGxlOiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRTZWxlY3Q6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2VsZWN0aW9uKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlclVwLCBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwLCBrZXlkb3duLCBrZXl1cCwgb25DaGFuZ2UsIGFmdGVyQ2hhbmdlIH0gPSBib2FyZDtcbiAgICBsZXQgc3RhcnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGVuZDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgc2VsZWN0aW9uTW92aW5nRzogU1ZHR0VsZW1lbnQ7XG4gICAgbGV0IHNlbGVjdGlvblJlY3RhbmdsZUc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTtcbiAgICBsZXQgaXNTaGlmdCA9IGZhbHNlO1xuICAgIGxldCBpc1RleHRTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFpc1NoaWZ0ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICBpc1NoaWZ0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTaGlmdCAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGlzU2hpZnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0hpdFRleHQgPSAhIShldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50LnRhcmdldC5jbG9zZXN0KCcucGxhaXQtcmljaHRleHQtY29udGFpbmVyJykpO1xuICAgICAgICBpc1RleHRTZWxlY3Rpb24gPSBpc0hpdFRleHQgJiYgUGxhaXRCb2FyZC5oYXNCZWVuVGV4dEVkaXRpbmcoYm9hcmQpO1xuXG4gICAgICAgIC8vIHByZXZlbnQgdGV4dCBmcm9tIGJlaW5nIHNlbGVjdGVkXG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSAmJiAhaXNUZXh0U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIGNvbnN0IGhpdEVsZW1lbnQgPSBnZXRIaXRFbGVtZW50QnlQb2ludChib2FyZCwgcG9pbnQpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcblxuICAgICAgICBpZiAoUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSAmJiAhaGl0RWxlbWVudCAmJiBvcHRpb25zLmlzTXVsdGlwbGUgJiYgIW9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdCkge1xuICAgICAgICAgICAgcHJldmVudFRvdWNoTW92ZShib2FyZCwgZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgLy8gc3RhcnQgcmVjdGFuZ2xlIHNlbGVjdGlvblxuICAgICAgICAgICAgc3RhcnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBQbGFpdEJvYXJkLmdldEhvc3QoYm9hcmQpKSk7XG4gICAgICAgIH1cblxuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFpc1RleHRTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIC8vIHByZXZlbnQgdGV4dCBmcm9tIGJlaW5nIHNlbGVjdGVkXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXJ0ICYmIFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vdmVkVGFyZ2V0ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFtzdGFydCwgbW92ZWRUYXJnZXRdKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0c/LnJlbW92ZSgpO1xuICAgICAgICAgICAgaWYgKE1hdGguaHlwb3QocmVjdGFuZ2xlLndpZHRoLCByZWN0YW5nbGUuaGVpZ2h0KSA+IFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB8fCBpc1NlbGVjdGlvbk1vdmluZyhib2FyZCkpIHtcbiAgICAgICAgICAgICAgICBlbmQgPSBtb3ZlZFRhcmdldDtcbiAgICAgICAgICAgICAgICB0aHJvdHRsZVJBRigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCB7IGFuY2hvcjogc3RhcnQsIGZvY3VzOiBlbmQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0cgPSBkcmF3UmVjdGFuZ2xlKGJvYXJkLCByZWN0YW5nbGUsIHtcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMSxcbiAgICAgICAgICAgICAgICAgICAgZmlsbDogU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25Nb3ZpbmdHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIC8vIGhhbmRsZSB0aGUgZW5kIG9mIGNsaWNrIHNlbGVjdFxuICAgIGJvYXJkLnBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzU2V0U2VsZWN0aW9uUG9pbnRlciA9XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pIHx8IFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLmhhbmQpO1xuICAgICAgICBjb25zdCBpc1NraXAgPSAhaXNNYWluUG9pbnRlcihldmVudCkgfHwgaXNEcmFnZ2luZyhib2FyZCkgfHwgIWlzU2V0U2VsZWN0aW9uUG9pbnRlcjtcbiAgICAgICAgaWYgKGlzU2tpcCkge1xuICAgICAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKSkpO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB7IGFuY2hvcjogcG9pbnQsIGZvY3VzOiBwb2ludCB9O1xuICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgc2VsZWN0aW9uKTtcbiAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsUG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGlvbk1vdmluZyhib2FyZCk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgeyBhbmNob3I6IHN0YXJ0LCBmb2N1czogZW5kIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNGb2N1cyhib2FyZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzSW5Cb2FyZCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgJiYgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGlzSW5Eb2N1bWVudCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgJiYgZG9jdW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGlzQXR0YWNoZWRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiBldmVudC50YXJnZXQuY2xvc2VzdChgLiR7QVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FfWApO1xuICAgICAgICAgICAgLy8gQ2xlYXIgc2VsZWN0aW9uIHdoZW4gbW91c2UgYm9hcmQgb3V0c2lkZSBhcmVhXG4gICAgICAgICAgICAvLyBUaGUgZnJhbWV3b3JrIG5lZWRzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBib2FyZCBpcyBmb2N1c2VkIHRocm91Z2ggc2VsZWN0aW9uXG4gICAgICAgICAgICBpZiAoIWlzSW5Cb2FyZCAmJiAhc3RhcnQgJiYgIWlzQXR0YWNoZWRFbGVtZW50ICYmIGlzSW5Eb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXJ0ID0gbnVsbDtcbiAgICAgICAgZW5kID0gbnVsbDtcbiAgICAgICAgaXNUZXh0U2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgIHByZXZlbnRUb3VjaE1vdmUoYm9hcmQsIGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoU2VsZWN0aW9uKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdCkge1xuICAgICAgICAgICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlbW92ZSBzZWxlY3RlZCBlbGVtZW50IGlmIGluY2x1ZGVcbiAgICAgICAgYm9hcmQub3BlcmF0aW9ucy5mb3JFYWNoKG9wID0+IHtcbiAgICAgICAgICAgIGlmIChvcC50eXBlID09PSAncmVtb3ZlX25vZGUnKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50KGJvYXJkLCBvcC5ub2RlLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0hhbmRsZVNlbGVjdGlvbihib2FyZCkgJiYgaXNTZXRTZWxlY3Rpb25PcGVyYXRpb24oYm9hcmQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBvcmFyeUVsZW1lbnRzID0gZ2V0VGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50cyA9IHRlbXBvcmFyeUVsZW1lbnRzID8gdGVtcG9yYXJ5RWxlbWVudHMgOiBnZXRIaXRFbGVtZW50c0J5U2VsZWN0aW9uKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuaXNNdWx0aXBsZSAmJiBlbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gW2VsZW1lbnRzWzBdXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzU2hpZnQgJiYgYm9hcmQuc2VsZWN0aW9uICYmIFNlbGVjdGlvbi5pc0NvbGxhcHNlZChib2FyZC5zZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkRWxlbWVudHMgPSBbLi4uZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCldO1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGVkRWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEVsZW1lbnRzLnNwbGljZShuZXdTZWxlY3RlZEVsZW1lbnRzLmluZGV4T2YoZWxlbWVudCksIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkRWxlbWVudHMgPSBbLi4uZWxlbWVudHNdO1xuICAgICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIG5ld1NlbGVjdGVkRWxlbWVudHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cyA9IG5ld0VsZW1lbnRzO1xuICAgICAgICAgICAgICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSAmJiBuZXdFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUcgPSBjcmVhdGVTZWxlY3Rpb25SZWN0YW5nbGVHKGJvYXJkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmFmdGVyQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBpZiAoaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQpICYmICFpc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoICYmIGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoICE9PSBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMubGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5zb21lKChjLCBpbmRleCkgPT4gYyAhPT0gcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzW2luZGV4XSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUcgPSBjcmVhdGVTZWxlY3Rpb25SZWN0YW5nbGVHKGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cyA9IGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhZnRlckNoYW5nZSgpO1xuICAgIH07XG5cbiAgICAoYm9hcmQgYXMgUGxhaXRPcHRpb25zQm9hcmQpLnNldFBsdWdpbk9wdGlvbnM8V2l0aFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhTZWxlY3Rpb24sIHtcbiAgICAgICAgaXNNdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgaXNEaXNhYmxlZFNlbGVjdDogZmFsc2VcbiAgICB9KTtcblxuICAgIHJldHVybiBib2FyZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGFuZGxlU2VsZWN0aW9uKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IChib2FyZCBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuZ2V0UGx1Z2luT3B0aW9uczxXaXRoUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aFNlbGVjdGlvbik7XG4gICAgcmV0dXJuIGJvYXJkLnBvaW50ZXIgIT09IFBsYWl0UG9pbnRlclR5cGUuaGFuZCAmJiAhb3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0ICYmICFQbGFpdEJvYXJkLmlzUmVhZG9ubHkoYm9hcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTZXRTZWxlY3Rpb25PcGVyYXRpb24oYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICByZXR1cm4gISFib2FyZC5vcGVyYXRpb25zLmZpbmQodmFsdWUgPT4gdmFsdWUudHlwZSA9PT0gJ3NldF9zZWxlY3Rpb24nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgcmVmID0gQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTLmdldChib2FyZCk7XG4gICAgaWYgKHJlZikge1xuICAgICAgICByZXR1cm4gcmVmLmVsZW1lbnRzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5UmVmKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgcmV0dXJuIEJPQVJEX1RPX1RFTVBPUkFSWV9FTEVNRU5UUy5nZXQoYm9hcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBCT0FSRF9UT19URU1QT1JBUllfRUxFTUVOVFMuZGVsZXRlKGJvYXJkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0aW9uTW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgcmV0dXJuICEhQk9BUkRfVE9fSVNfU0VMRUNUSU9OX01PVklORy5nZXQoYm9hcmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0U2VsZWN0aW9uTW92aW5nKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZCgnc2VsZWN0aW9uLW1vdmluZycpO1xuICAgIEJPQVJEX1RPX0lTX1NFTEVDVElPTl9NT1ZJTkcuc2V0KGJvYXJkLCB0cnVlKTtcbiAgICBzZXREcmFnZ2luZyhib2FyZCwgdHJ1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclNlbGVjdGlvbk1vdmluZyhib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGlvbi1tb3ZpbmcnKTtcbiAgICBCT0FSRF9UT19JU19TRUxFQ1RJT05fTU9WSU5HLmRlbGV0ZShib2FyZCk7XG4gICAgc2V0RHJhZ2dpbmcoYm9hcmQsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlbGVjdGlvblJlY3RhbmdsZUcoYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGNvbnN0IHJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzLCBmYWxzZSk7XG4gICAgaWYgKHJlY3RhbmdsZS53aWR0aCA+IDAgJiYgcmVjdGFuZ2xlLmhlaWdodCA+IDAgJiYgZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb25SZWN0YW5nbGVHID0gZHJhd1JlY3RhbmdsZShib2FyZCwgUmVjdGFuZ2xlQ2xpZW50LmluZmxhdGUocmVjdGFuZ2xlLCBBQ1RJVkVfU1RST0tFX1dJRFRIKSwge1xuICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUcuY2xhc3NMaXN0LmFkZChTRUxFQ1RJT05fUkVDVEFOR0xFX0NMQVNTX05BTUUpO1xuICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoc2VsZWN0aW9uUmVjdGFuZ2xlRyk7XG4gICAgICAgIHJldHVybiBzZWxlY3Rpb25SZWN0YW5nbGVHO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
@@ -8,7 +8,7 @@ export function withViewport(board) {
8
8
  }, 500, { leading: true });
9
9
  board.onChange = () => {
10
10
  const isSetViewport = board.operations.some(op => op.type === 'set_viewport');
11
- const isOnlySetSelection = board.operations.some(op => op.type === 'set_selection');
11
+ const isOnlySetSelection = board.operations.every(op => op.type === 'set_selection');
12
12
  if (isOnlySetSelection) {
13
13
  return onChange();
14
14
  }
@@ -27,4 +27,4 @@ export function withViewport(board) {
27
27
  };
28
28
  return board;
29
29
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC12aWV3cG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3BsdWdpbnMvd2l0aC12aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBaUI7SUFDMUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUUzQixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQzNCLEdBQUcsRUFBRTtRQUNELGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUMsRUFDRCxHQUFHLEVBQ0gsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQ3BCLENBQUM7SUFFRixLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNsQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7UUFDOUUsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7UUFDcEYsSUFBSSxrQkFBa0IsRUFBRTtZQUNwQixPQUFPLFFBQVEsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxhQUFhLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxPQUFPLFFBQVEsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxhQUFhLEVBQUU7WUFDZixpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQjthQUFNO1lBQ0gsY0FBYyxFQUFFLENBQUM7U0FDcEI7UUFDRCxRQUFRLEVBQUUsQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJy4uL3V0aWxzL2NvbW1vbic7XG5pbXBvcnQgeyBpbml0aWFsaXplVmlld0JveCwgaXNGcm9tU2Nyb2xsaW5nLCBzZXRJc0Zyb21TY3JvbGxpbmcsIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0IH0gZnJvbSAnLi4vdXRpbHMvdmlld3BvcnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFZpZXdwb3J0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBvbkNoYW5nZSB9ID0gYm9hcmQ7XG5cbiAgICBjb25zdCB0aHJvdHRsZVVwZGF0ZSA9IGRlYm91bmNlKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBpbml0aWFsaXplVmlld0JveChib2FyZCk7XG4gICAgICAgICAgICB1cGRhdGVWaWV3cG9ydE9mZnNldChib2FyZCk7XG4gICAgICAgIH0sXG4gICAgICAgIDUwMCxcbiAgICAgICAgeyBsZWFkaW5nOiB0cnVlIH1cbiAgICApO1xuXG4gICAgYm9hcmQub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzU2V0Vmlld3BvcnQgPSBib2FyZC5vcGVyYXRpb25zLnNvbWUob3AgPT4gb3AudHlwZSA9PT0gJ3NldF92aWV3cG9ydCcpO1xuICAgICAgICBjb25zdCBpc09ubHlTZXRTZWxlY3Rpb24gPSBib2FyZC5vcGVyYXRpb25zLnNvbWUob3AgPT4gb3AudHlwZSA9PT0gJ3NldF9zZWxlY3Rpb24nKTtcbiAgICAgICAgaWYgKGlzT25seVNldFNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIG9uQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2V0Vmlld3BvcnQgJiYgaXNGcm9tU2Nyb2xsaW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgc2V0SXNGcm9tU2Nyb2xsaW5nKGJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gb25DaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTZXRWaWV3cG9ydCkge1xuICAgICAgICAgICAgaW5pdGlhbGl6ZVZpZXdCb3goYm9hcmQpO1xuICAgICAgICAgICAgdXBkYXRlVmlld3BvcnRPZmZzZXQoYm9hcmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3R0bGVVcGRhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC12aWV3cG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3BsdWdpbnMvd2l0aC12aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBaUI7SUFDMUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUUzQixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQzNCLEdBQUcsRUFBRTtRQUNELGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUMsRUFDRCxHQUFHLEVBQ0gsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQ3BCLENBQUM7SUFFRixLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNsQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7UUFDOUUsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDLENBQUM7UUFDckYsSUFBSSxrQkFBa0IsRUFBRTtZQUNwQixPQUFPLFFBQVEsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxhQUFhLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNqQyxPQUFPLFFBQVEsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxhQUFhLEVBQUU7WUFDZixpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QixvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQjthQUFNO1lBQ0gsY0FBYyxFQUFFLENBQUM7U0FDcEI7UUFDRCxRQUFRLEVBQUUsQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJy4uL3V0aWxzL2NvbW1vbic7XG5pbXBvcnQgeyBpbml0aWFsaXplVmlld0JveCwgaXNGcm9tU2Nyb2xsaW5nLCBzZXRJc0Zyb21TY3JvbGxpbmcsIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0IH0gZnJvbSAnLi4vdXRpbHMvdmlld3BvcnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFZpZXdwb3J0KGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBvbkNoYW5nZSB9ID0gYm9hcmQ7XG5cbiAgICBjb25zdCB0aHJvdHRsZVVwZGF0ZSA9IGRlYm91bmNlKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICBpbml0aWFsaXplVmlld0JveChib2FyZCk7XG4gICAgICAgICAgICB1cGRhdGVWaWV3cG9ydE9mZnNldChib2FyZCk7XG4gICAgICAgIH0sXG4gICAgICAgIDUwMCxcbiAgICAgICAgeyBsZWFkaW5nOiB0cnVlIH1cbiAgICApO1xuXG4gICAgYm9hcmQub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzU2V0Vmlld3BvcnQgPSBib2FyZC5vcGVyYXRpb25zLnNvbWUob3AgPT4gb3AudHlwZSA9PT0gJ3NldF92aWV3cG9ydCcpO1xuICAgICAgICBjb25zdCBpc09ubHlTZXRTZWxlY3Rpb24gPSBib2FyZC5vcGVyYXRpb25zLmV2ZXJ5KG9wID0+IG9wLnR5cGUgPT09ICdzZXRfc2VsZWN0aW9uJyk7XG4gICAgICAgIGlmIChpc09ubHlTZXRTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBvbkNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1NldFZpZXdwb3J0ICYmIGlzRnJvbVNjcm9sbGluZyhib2FyZCkpIHtcbiAgICAgICAgICAgIHNldElzRnJvbVNjcm9sbGluZyhib2FyZCwgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIG9uQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2V0Vmlld3BvcnQpIHtcbiAgICAgICAgICAgIGluaXRpYWxpemVWaWV3Qm94KGJvYXJkKTtcbiAgICAgICAgICAgIHVwZGF0ZVZpZXdwb3J0T2Zmc2V0KGJvYXJkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm90dGxlVXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
@@ -196,4 +196,4 @@ export function downloadImage(url, name) {
196
196
  a.click();
197
197
  a.remove();
198
198
  }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8taW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy90by1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRSxNQUFNLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQztBQVloRDs7OztHQUlHO0FBQ0gsU0FBUyxhQUFhLENBQUMsSUFBVTtJQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLFNBQVMsR0FBRyxhQUFhO0lBQzFFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsTUFB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LENBQUMsQ0FBQztLQUN4QztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxPQUFPLFNBQVMsQ0FBQztLQUNwQjtBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXLEVBQUUsSUFBWTtJQUNuRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDbEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBmaW5kRWxlbWVudHMsIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnQnO1xuXG5jb25zdCBJTUFHRV9DT05UQUlORVIgPSAncGxhaXQtaW1hZ2UtY29udGFpbmVyJztcblxuZXhwb3J0IGludGVyZmFjZSBUb0ltYWdlT3B0aW9ucyB7XG4gICAgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXTtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJhdGlvPzogbnVtYmVyO1xuICAgIHBhZGRpbmc/OiBudW1iZXI7XG4gICAgZmlsbFN0eWxlPzogc3RyaW5nO1xuICAgIC8vIOmAl+WPt+exu+WQjeWIl+ihqOOAgiDor6XliJfooajlv4Xpobvph4fnlKggY2xhc3MxLGNsYXNzMiwuLi4g55qE5b2i5byP44CCXG4gICAgaW5saW5lU3R5bGVDbGFzc05hbWVzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIElzIGVsZW1lbnQgbm9kZVxuICogQHBhcmFtIG5vZGVcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIGlzRWxlbWVudE5vZGUobm9kZTogTm9kZSk6IG5vZGUgaXMgSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERTtcbn1cblxuLyoqXG4gKiBsb2FkIGltYWdlIHJlc291cmNlc1xuICogQHBhcmFtIHVybCBpbWFnZSB1cmxcbiAqIEByZXR1cm5zIGltYWdlIGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gbG9hZEltYWdlKHNyYzogc3RyaW5nKTogUHJvbWlzZTxIVE1MSW1hZ2VFbGVtZW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGltZy5jcm9zc09yaWdpbiA9ICdBbm9ueW1vdXMnO1xuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4gcmVzb2x2ZShpbWcpO1xuICAgICAgICBpbWcub25lcnJvciA9ICgpID0+IHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGltYWdlJykpO1xuICAgICAgICBpbWcuc3JjID0gc3JjO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIGNyZWF0ZSBhbmQgcmV0dXJuIGNhbnZhcyBhbmQgY29udGV4dFxuICogQHBhcmFtIHdpZHRoIGNhbnZhcyB3aWR0aFxuICogQHBhcmFtIGhlaWdodCBjYW52YXMgaGVpZ2h0XG4gKiBAcGFyYW0gZmlsbFN0eWxlIGZpbGwgc3R5bGVcbiAqIEByZXR1cm5zIGNhbnZhcyBhbmQgY29udGV4dFxuICovXG5mdW5jdGlvbiBjcmVhdGVDYW52YXMod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGZpbGxTdHlsZSA9ICd0cmFuc3BhcmVudCcpIHtcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSE7XG5cbiAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIGNhbnZhcy5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICBjYW52YXMuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICBjdHguc3Ryb2tlU3R5bGUgPSAnI2ZmZmZmZic7XG4gICAgY3R4LmZpbGxTdHlsZSA9IGZpbGxTdHlsZTtcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjYW52YXMsXG4gICAgICAgIGN0eFxuICAgIH07XG59XG5cbi8qKlxuICogY29udmVydCBpbWFnZSB0byBiYXNlNjRcbiAqIEBwYXJhbSB1cmwgaW1hZ2UgdXJsXG4gKiBAcmV0dXJucyBpbWFnZSBiYXNlNjRcbiAqL1xuZnVuY3Rpb24gY29udmVydEltYWdlVG9CYXNlNjQodXJsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbG9hZEltYWdlKHVybCkudGhlbihpbWcgPT4ge1xuICAgICAgICBjb25zdCB7IGNhbnZhcywgY3R4IH0gPSBjcmVhdGVDYW52YXMoaW1nLndpZHRoLCBpbWcuaGVpZ2h0KTtcbiAgICAgICAgY3R4Py5kcmF3SW1hZ2UoaW1nLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIGNsb25lIG5vZGUgc3R5bGVcbiAqIEBwYXJhbSBuYXRpdmVOb2RlIHNvdXJjZSBub2RlXG4gKiBAcGFyYW0gY2xvbmVkTm9kZSBjbG9uZSBub2RlXG4gKi9cbmZ1bmN0aW9uIGNsb25lQ1NTU3R5bGU8VCBleHRlbmRzIEhUTUxFbGVtZW50PihuYXRpdmVOb2RlOiBULCBjbG9uZWROb2RlOiBUKSB7XG4gICAgY29uc3QgdGFyZ2V0U3R5bGUgPSBjbG9uZWROb2RlPy5zdHlsZTtcbiAgICBpZiAoIXRhcmdldFN0eWxlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5hdGl2ZU5vZGUpO1xuICAgIGlmIChzb3VyY2VTdHlsZS5jc3NUZXh0KSB7XG4gICAgICAgIHRhcmdldFN0eWxlLmNzc1RleHQgPSBzb3VyY2VTdHlsZS5jc3NUZXh0O1xuICAgICAgICB0YXJnZXRTdHlsZS50cmFuc2Zvcm1PcmlnaW4gPSBzb3VyY2VTdHlsZS50cmFuc2Zvcm1PcmlnaW47XG4gICAgfSBlbHNlIHtcbiAgICAgICAgQXJyYXkuZnJvbShzb3VyY2VTdHlsZSkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHNvdXJjZVN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSk7XG4gICAgICAgICAgICB0YXJnZXRTdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWx1ZSwgc291cmNlU3R5bGUuZ2V0UHJvcGVydHlQcmlvcml0eShuYW1lKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBiYXRjaCBjbG9uZSB0YXJnZXQgc3R5bGVzXG4gKiBAcGFyYW0gc291cmNlTm9kZVxuICogQHBhcmFtIGNsb25lTm9kZVxuICogQHBhcmFtIGlubGluZVN0eWxlQ2xhc3NOYW1lc1xuICovXG5mdW5jdGlvbiBiYXRjaENsb25lQ1NTU3R5bGUoc291cmNlTm9kZTogU1ZHR0VsZW1lbnQsIGNsb25lTm9kZTogU1ZHR0VsZW1lbnQsIGlubGluZVN0eWxlQ2xhc3NOYW1lczogc3RyaW5nKSB7XG4gICAgaWYgKGlubGluZVN0eWxlQ2xhc3NOYW1lcykge1xuICAgICAgICBjb25zdCBjbGFzc05hbWVzID0gaW5saW5lU3R5bGVDbGFzc05hbWVzICsgYCwuJHtJTUFHRV9DT05UQUlORVJ9YDtcbiAgICAgICAgY29uc3Qgc291cmNlTm9kZXMgPSBBcnJheS5mcm9tKHNvdXJjZU5vZGUucXVlcnlTZWxlY3RvckFsbChjbGFzc05hbWVzKSk7XG4gICAgICAgIGNvbnN0IGNsb25lTm9kZXMgPSBBcnJheS5mcm9tKGNsb25lTm9kZS5xdWVyeVNlbGVjdG9yQWxsKGNsYXNzTmFtZXMpKTtcblxuICAgICAgICBzb3VyY2VOb2Rlcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRFbGVtZW50cyA9IEFycmF5LmZyb20obm9kZS5xdWVyeVNlbGVjdG9yQWxsKCcqJykpLmZpbHRlcihpc0VsZW1lbnROb2RlKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgICAgICAgY29uc3QgY2xvbmVDaGlsZEVsZW1lbnRzID0gQXJyYXkuZnJvbShjbG9uZU5vZGVzW2luZGV4XS5xdWVyeVNlbGVjdG9yQWxsKCcqJykpLmZpbHRlcihpc0VsZW1lbnROb2RlKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgICAgICAgc291cmNlTm9kZXMucHVzaCguLi5jaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgICAgIGNsb25lTm9kZXMucHVzaCguLi5jbG9uZUNoaWxkRWxlbWVudHMpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBwcm9jZXNzaW5nIHN0eWxlc1xuICAgICAgICBzb3VyY2VOb2Rlcy5tYXAoKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjbG9uZUNTU1N0eWxlKG5vZGUgYXMgSFRNTEVsZW1lbnQsIGNsb25lTm9kZXNbaW5kZXhdIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIGNvbnZlcnQgaW1hZ2VzIGluIHRhcmdldCBub2RlcyBpbiBiYXRjaGVzXG4gKiBAcGFyYW0gc291cmNlTm9kZVxuICogQHBhcmFtIGNsb25lTm9kZVxuICovXG5hc3luYyBmdW5jdGlvbiBiYXRjaENvbnZlcnRJbWFnZShzb3VyY2VOb2RlOiBTVkdHRWxlbWVudCwgY2xvbmVOb2RlOiBTVkdHRWxlbWVudCkge1xuICAgIGNvbnN0IHNvdXJjZUltYWdlTm9kZXMgPSBBcnJheS5mcm9tKHNvdXJjZU5vZGUucXVlcnlTZWxlY3RvckFsbChgLiR7SU1BR0VfQ09OVEFJTkVSfWApKTtcbiAgICBjb25zdCBjbG9uZUltYWdlTm9kZXMgPSBBcnJheS5mcm9tKGNsb25lTm9kZS5xdWVyeVNlbGVjdG9yQWxsKGAuJHtJTUFHRV9DT05UQUlORVJ9YCkpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBzb3VyY2VJbWFnZU5vZGVzLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9uZUltYWdlTm9kZSA9IGNsb25lSW1hZ2VOb2Rlc1tpbmRleF07XG4gICAgICAgICAgICAgICAgLy8gcHJvY2Vzc2luZyBpbWFnZVxuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlID0gKGNsb25lSW1hZ2VOb2RlIGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCdpbWcnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBpbWFnZT8uZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgICAgICAgICAgICAgICBpZiAoIXVybCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udmVydEltYWdlVG9CYXNlNjQodXJsKS50aGVuKGJhc2U2NEltYWdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U/LnNldEF0dHJpYnV0ZSgnc3JjJywgYmFzZTY0SW1hZ2UpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgKTtcbn1cblxuLyoqXG4gKiBjbG9uZSBzdmcgZWxlbWVudFxuICogQHBhcmFtIGJvYXJkIGJvYXJkXG4gKiBAcGFyYW0gb3B0aW9ucyBwYXJhbWV0ZXIgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgY2xvbmUgc3ZnIGVsZW1lbnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2xvbmVTdmcoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSwgcmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIG9wdGlvbnM6IFRvSW1hZ2VPcHRpb25zKSB7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCB4LCB5IH0gPSByZWN0YW5nbGU7XG4gICAgY29uc3QgeyBwYWRkaW5nID0gNCwgaW5saW5lU3R5bGVDbGFzc05hbWVzIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHNvdXJjZVN2ZyA9IFBsYWl0Qm9hcmQuZ2V0SG9zdChib2FyZCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRHRWxlbWVudHMgPSBlbGVtZW50cy5tYXAodmFsdWUgPT4gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh2YWx1ZSkuZyk7XG4gICAgY29uc3QgY2xvbmVTdmdFbGVtZW50ID0gc291cmNlU3ZnLmNsb25lTm9kZSgpIGFzIFNWR0VsZW1lbnQ7XG4gICAgY29uc3QgbmV3SG9zdEVsZW1lbnQgPSBQbGFpdEJvYXJkLmdldEVsZW1lbnRIb3N0KGJvYXJkKS5jbG9uZU5vZGUoKSBhcyBTVkdHRWxlbWVudDtcblxuICAgIGNsb25lU3ZnRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICBjbG9uZVN2Z0VsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICBjbG9uZVN2Z0VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7XG4gICAgY2xvbmVTdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHt3aWR0aH1gKTtcbiAgICBjbG9uZVN2Z0VsZW1lbnQuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtoZWlnaHR9YCk7XG4gICAgY2xvbmVTdmdFbGVtZW50LnNldEF0dHJpYnV0ZSgndmlld0JveCcsIFt4IC0gcGFkZGluZywgeSAtIHBhZGRpbmcsIHdpZHRoICsgMiAqIHBhZGRpbmcsIGhlaWdodCArIDIgKiBwYWRkaW5nXS5qb2luKCcsJykpO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHNlbGVjdGVkR0VsZW1lbnRzLm1hcChhc3luYyAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lQ2hpbGQgPSBjaGlsZC5jbG9uZU5vZGUodHJ1ZSkgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgICAgICBiYXRjaENsb25lQ1NTU3R5bGUoY2hpbGQsIGNsb25lQ2hpbGQsIGlubGluZVN0eWxlQ2xhc3NOYW1lcyBhcyBzdHJpbmcpO1xuXG4gICAgICAgICAgICBhd2FpdCBiYXRjaENvbnZlcnRJbWFnZShjaGlsZCwgY2xvbmVDaGlsZCk7XG4gICAgICAgICAgICBuZXdIb3N0RWxlbWVudC5hcHBlbmRDaGlsZChjbG9uZUNoaWxkKTtcbiAgICAgICAgfSlcbiAgICApO1xuICAgIGNsb25lU3ZnRWxlbWVudC5hcHBlbmRDaGlsZChuZXdIb3N0RWxlbWVudCk7XG4gICAgcmV0dXJuIGNsb25lU3ZnRWxlbWVudDtcbn1cblxuLyoqXG4gKiBjdXJyZW50IGJvYXJkIHRyYW5zZmVyIHBpY3R1cmVzXG4gKiBAcGFyYW0gYm9hcmQgYm9hcmRcbiAqIEBwYXJhbSBvcHRpb25zIHBhcmFtZXRlciBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBpbWFnZXMgaW4gdGhlIHNwZWNpZmllZCBmb3JtYXQgYmFzZTY0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0b0ltYWdlKGJvYXJkOiBQbGFpdEJvYXJkLCBvcHRpb25zOiBUb0ltYWdlT3B0aW9ucykge1xuICAgIGlmICghYm9hcmQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZWxlbWVudHMgPSBvcHRpb25zLmVsZW1lbnRzIHx8IGZpbmRFbGVtZW50cyhib2FyZCwgeyBtYXRjaDogKCkgPT4gdHJ1ZSwgcmVjdXJzaW9uOiAoKSA9PiB0cnVlLCBpc1JldmVyc2U6IGZhbHNlIH0pO1xuICAgIGNvbnN0IHRhcmdldFJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzLCBmYWxzZSk7XG4gICAgY29uc3QgeyByYXRpbyA9IDIsIGZpbGxTdHlsZSA9ICd0cmFuc3BhcmVudCcgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0YXJnZXRSZWN0YW5nbGU7XG4gICAgY29uc3QgcmF0aW9XaWR0aCA9IHdpZHRoICogcmF0aW87XG4gICAgY29uc3QgcmF0aW9IZWlnaHQgPSBoZWlnaHQgKiByYXRpbztcblxuICAgIGNvbnN0IGNsb25lU3ZnRWxlbWVudCA9IGF3YWl0IGNsb25lU3ZnKGJvYXJkLCBlbGVtZW50cywgdGFyZ2V0UmVjdGFuZ2xlLCBvcHRpb25zKTtcbiAgICBjb25zdCB7IGNhbnZhcywgY3R4IH0gPSBjcmVhdGVDYW52YXMocmF0aW9XaWR0aCwgcmF0aW9IZWlnaHQsIGZpbGxTdHlsZSk7XG5cbiAgICBjb25zdCBzdmdTdHIgPSBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKGNsb25lU3ZnRWxlbWVudCk7XG4gICAgY29uc3QgaW1nU3JjID0gYGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCR7ZW5jb2RlVVJJQ29tcG9uZW50KHN2Z1N0cil9YDtcblxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGltZyA9IGF3YWl0IGxvYWRJbWFnZShpbWdTcmMpO1xuICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgcmF0aW9XaWR0aCwgcmF0aW9IZWlnaHQpO1xuICAgICAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29udmVydGluZyBTVkcgdG8gaW1hZ2U6JywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuLyoqXG4gKiBkb3dubG9hZCB0aGUgZmlsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZVxuICogQHBhcmFtIHVybCBkb3dubG9hZCB1cmxcbiAqIEBwYXJhbSBuYW1lIGZpbGUgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRJbWFnZSh1cmw6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBhLmhyZWYgPSB1cmw7XG4gICAgYS5kb3dubG9hZCA9IG5hbWU7XG4gICAgYS5jbGljaygpO1xuICAgIGEucmVtb3ZlKCk7XG59XG4iXX0=
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8taW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlscy90by1pbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqRSxNQUFNLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQztBQVloRDs7OztHQUlHO0FBQ0gsU0FBUyxhQUFhLENBQUMsSUFBVTtJQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDMUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUM5RCxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBYyxFQUFFLFNBQVMsR0FBRyxhQUFhO0lBQzFFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsTUFB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LENBQUMsQ0FBQztLQUN4QztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxPQUFPLFNBQVMsQ0FBQztLQUNwQjtBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxHQUFXLEVBQUUsSUFBWTtJQUNuRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDbEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBmaW5kRWxlbWVudHMsIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMgfSBmcm9tICcuL2VsZW1lbnQnO1xuXG5jb25zdCBJTUFHRV9DT05UQUlORVIgPSAncGxhaXQtaW1hZ2UtY29udGFpbmVyJztcblxuZXhwb3J0IGludGVyZmFjZSBUb0ltYWdlT3B0aW9ucyB7XG4gICAgZWxlbWVudHM/OiBQbGFpdEVsZW1lbnRbXTtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHJhdGlvPzogbnVtYmVyO1xuICAgIHBhZGRpbmc/OiBudW1iZXI7XG4gICAgZmlsbFN0eWxlPzogc3RyaW5nO1xuICAgIC8vIExpc3Qgb2YgY2xhc3MgbmFtZXMuIFRoZSBsaXN0IG11c3QgYmUgaW4gdGhlIGZvcm0gY2xhc3MxLGNsYXNzMiwuLi5cbiAgICBpbmxpbmVTdHlsZUNsYXNzTmFtZXM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSXMgZWxlbWVudCBub2RlXG4gKiBAcGFyYW0gbm9kZVxuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gaXNFbGVtZW50Tm9kZShub2RlOiBOb2RlKTogbm9kZSBpcyBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFO1xufVxuXG4vKipcbiAqIGxvYWQgaW1hZ2UgcmVzb3VyY2VzXG4gKiBAcGFyYW0gdXJsIGltYWdlIHVybFxuICogQHJldHVybnMgaW1hZ2UgZWxlbWVudFxuICovXG5mdW5jdGlvbiBsb2FkSW1hZ2Uoc3JjOiBzdHJpbmcpOiBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgaW1nLmNyb3NzT3JpZ2luID0gJ0Fub255bW91cyc7XG4gICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKGltZyk7XG4gICAgICAgIGltZy5vbmVycm9yID0gKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignRmFpbGVkIHRvIGxvYWQgaW1hZ2UnKSk7XG4gICAgICAgIGltZy5zcmMgPSBzcmM7XG4gICAgfSk7XG59XG5cbi8qKlxuICogY3JlYXRlIGFuZCByZXR1cm4gY2FudmFzIGFuZCBjb250ZXh0XG4gKiBAcGFyYW0gd2lkdGggY2FudmFzIHdpZHRoXG4gKiBAcGFyYW0gaGVpZ2h0IGNhbnZhcyBoZWlnaHRcbiAqIEBwYXJhbSBmaWxsU3R5bGUgZmlsbCBzdHlsZVxuICogQHJldHVybnMgY2FudmFzIGFuZCBjb250ZXh0XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNhbnZhcyh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgZmlsbFN0eWxlID0gJ3RyYW5zcGFyZW50Jykge1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpITtcblxuICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgY2FudmFzLnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgIGNhbnZhcy5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgIGN0eC5zdHJva2VTdHlsZSA9ICcjZmZmZmZmJztcbiAgICBjdHguZmlsbFN0eWxlID0gZmlsbFN0eWxlO1xuICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGNhbnZhcyxcbiAgICAgICAgY3R4XG4gICAgfTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IGltYWdlIHRvIGJhc2U2NFxuICogQHBhcmFtIHVybCBpbWFnZSB1cmxcbiAqIEByZXR1cm5zIGltYWdlIGJhc2U2NFxuICovXG5mdW5jdGlvbiBjb252ZXJ0SW1hZ2VUb0Jhc2U2NCh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiBsb2FkSW1hZ2UodXJsKS50aGVuKGltZyA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2FudmFzLCBjdHggfSA9IGNyZWF0ZUNhbnZhcyhpbWcud2lkdGgsIGltZy5oZWlnaHQpO1xuICAgICAgICBjdHg/LmRyYXdJbWFnZShpbWcsIDAsIDApO1xuICAgICAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogY2xvbmUgbm9kZSBzdHlsZVxuICogQHBhcmFtIG5hdGl2ZU5vZGUgc291cmNlIG5vZGVcbiAqIEBwYXJhbSBjbG9uZWROb2RlIGNsb25lIG5vZGVcbiAqL1xuZnVuY3Rpb24gY2xvbmVDU1NTdHlsZTxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KG5hdGl2ZU5vZGU6IFQsIGNsb25lZE5vZGU6IFQpIHtcbiAgICBjb25zdCB0YXJnZXRTdHlsZSA9IGNsb25lZE5vZGU/LnN0eWxlO1xuICAgIGlmICghdGFyZ2V0U3R5bGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZVN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobmF0aXZlTm9kZSk7XG4gICAgaWYgKHNvdXJjZVN0eWxlLmNzc1RleHQpIHtcbiAgICAgICAgdGFyZ2V0U3R5bGUuY3NzVGV4dCA9IHNvdXJjZVN0eWxlLmNzc1RleHQ7XG4gICAgICAgIHRhcmdldFN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9IHNvdXJjZVN0eWxlLnRyYW5zZm9ybU9yaWdpbjtcbiAgICB9IGVsc2Uge1xuICAgICAgICBBcnJheS5mcm9tKHNvdXJjZVN0eWxlKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gc291cmNlU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKTtcbiAgICAgICAgICAgIHRhcmdldFN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHZhbHVlLCBzb3VyY2VTdHlsZS5nZXRQcm9wZXJ0eVByaW9yaXR5KG5hbWUpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIGJhdGNoIGNsb25lIHRhcmdldCBzdHlsZXNcbiAqIEBwYXJhbSBzb3VyY2VOb2RlXG4gKiBAcGFyYW0gY2xvbmVOb2RlXG4gKiBAcGFyYW0gaW5saW5lU3R5bGVDbGFzc05hbWVzXG4gKi9cbmZ1bmN0aW9uIGJhdGNoQ2xvbmVDU1NTdHlsZShzb3VyY2VOb2RlOiBTVkdHRWxlbWVudCwgY2xvbmVOb2RlOiBTVkdHRWxlbWVudCwgaW5saW5lU3R5bGVDbGFzc05hbWVzOiBzdHJpbmcpIHtcbiAgICBpZiAoaW5saW5lU3R5bGVDbGFzc05hbWVzKSB7XG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBpbmxpbmVTdHlsZUNsYXNzTmFtZXMgKyBgLC4ke0lNQUdFX0NPTlRBSU5FUn1gO1xuICAgICAgICBjb25zdCBzb3VyY2VOb2RlcyA9IEFycmF5LmZyb20oc291cmNlTm9kZS5xdWVyeVNlbGVjdG9yQWxsKGNsYXNzTmFtZXMpKTtcbiAgICAgICAgY29uc3QgY2xvbmVOb2RlcyA9IEFycmF5LmZyb20oY2xvbmVOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoY2xhc3NOYW1lcykpO1xuXG4gICAgICAgIHNvdXJjZU5vZGVzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZEVsZW1lbnRzID0gQXJyYXkuZnJvbShub2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJyonKSkuZmlsdGVyKGlzRWxlbWVudE5vZGUpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICAgICAgICBjb25zdCBjbG9uZUNoaWxkRWxlbWVudHMgPSBBcnJheS5mcm9tKGNsb25lTm9kZXNbaW5kZXhdLnF1ZXJ5U2VsZWN0b3JBbGwoJyonKSkuZmlsdGVyKGlzRWxlbWVudE5vZGUpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICAgICAgICBzb3VyY2VOb2Rlcy5wdXNoKC4uLmNoaWxkRWxlbWVudHMpO1xuICAgICAgICAgICAgY2xvbmVOb2Rlcy5wdXNoKC4uLmNsb25lQ2hpbGRFbGVtZW50cyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHByb2Nlc3Npbmcgc3R5bGVzXG4gICAgICAgIHNvdXJjZU5vZGVzLm1hcCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNsb25lQ1NTU3R5bGUobm9kZSBhcyBIVE1MRWxlbWVudCwgY2xvbmVOb2Rlc1tpbmRleF0gYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogY29udmVydCBpbWFnZXMgaW4gdGFyZ2V0IG5vZGVzIGluIGJhdGNoZXNcbiAqIEBwYXJhbSBzb3VyY2VOb2RlXG4gKiBAcGFyYW0gY2xvbmVOb2RlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGJhdGNoQ29udmVydEltYWdlKHNvdXJjZU5vZGU6IFNWR0dFbGVtZW50LCBjbG9uZU5vZGU6IFNWR0dFbGVtZW50KSB7XG4gICAgY29uc3Qgc291cmNlSW1hZ2VOb2RlcyA9IEFycmF5LmZyb20oc291cmNlTm9kZS5xdWVyeVNlbGVjdG9yQWxsKGAuJHtJTUFHRV9DT05UQUlORVJ9YCkpO1xuICAgIGNvbnN0IGNsb25lSW1hZ2VOb2RlcyA9IEFycmF5LmZyb20oY2xvbmVOb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke0lNQUdFX0NPTlRBSU5FUn1gKSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHNvdXJjZUltYWdlTm9kZXMubWFwKChfLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lSW1hZ2VOb2RlID0gY2xvbmVJbWFnZU5vZGVzW2luZGV4XTtcbiAgICAgICAgICAgICAgICAvLyBwcm9jZXNzaW5nIGltYWdlXG4gICAgICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSAoY2xvbmVJbWFnZU5vZGUgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IGltYWdlPy5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xuICAgICAgICAgICAgICAgIGlmICghdXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb252ZXJ0SW1hZ2VUb0Jhc2U2NCh1cmwpLnRoZW4oYmFzZTY0SW1hZ2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZT8uc2V0QXR0cmlidXRlKCdzcmMnLCBiYXNlNjRJbWFnZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICApO1xufVxuXG4vKipcbiAqIGNsb25lIHN2ZyBlbGVtZW50XG4gKiBAcGFyYW0gYm9hcmQgYm9hcmRcbiAqIEBwYXJhbSBvcHRpb25zIHBhcmFtZXRlciBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBjbG9uZSBzdmcgZWxlbWVudFxuICovXG5hc3luYyBmdW5jdGlvbiBjbG9uZVN2Zyhib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgb3B0aW9uczogVG9JbWFnZU9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQsIHgsIHkgfSA9IHJlY3RhbmdsZTtcbiAgICBjb25zdCB7IHBhZGRpbmcgPSA0LCBpbmxpbmVTdHlsZUNsYXNzTmFtZXMgfSA9IG9wdGlvbnM7XG4gICAgY29uc3Qgc291cmNlU3ZnID0gUGxhaXRCb2FyZC5nZXRIb3N0KGJvYXJkKTtcbiAgICBjb25zdCBzZWxlY3RlZEdFbGVtZW50cyA9IGVsZW1lbnRzLm1hcCh2YWx1ZSA9PiBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHZhbHVlKS5nKTtcbiAgICBjb25zdCBjbG9uZVN2Z0VsZW1lbnQgPSBzb3VyY2VTdmcuY2xvbmVOb2RlKCkgYXMgU1ZHRWxlbWVudDtcbiAgICBjb25zdCBuZXdIb3N0RWxlbWVudCA9IFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEhvc3QoYm9hcmQpLmNsb25lTm9kZSgpIGFzIFNWR0dFbGVtZW50O1xuXG4gICAgY2xvbmVTdmdFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7d2lkdGh9cHhgO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcbiAgICBjbG9uZVN2Z0VsZW1lbnQuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke3dpZHRofWApO1xuICAgIGNsb25lU3ZnRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGAke2hlaWdodH1gKTtcbiAgICBjbG9uZVN2Z0VsZW1lbnQuc2V0QXR0cmlidXRlKCd2aWV3Qm94JywgW3ggLSBwYWRkaW5nLCB5IC0gcGFkZGluZywgd2lkdGggKyAyICogcGFkZGluZywgaGVpZ2h0ICsgMiAqIHBhZGRpbmddLmpvaW4oJywnKSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgc2VsZWN0ZWRHRWxlbWVudHMubWFwKGFzeW5jIChjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2xvbmVDaGlsZCA9IGNoaWxkLmNsb25lTm9kZSh0cnVlKSBhcyBTVkdHRWxlbWVudDtcbiAgICAgICAgICAgIGJhdGNoQ2xvbmVDU1NTdHlsZShjaGlsZCwgY2xvbmVDaGlsZCwgaW5saW5lU3R5bGVDbGFzc05hbWVzIGFzIHN0cmluZyk7XG5cbiAgICAgICAgICAgIGF3YWl0IGJhdGNoQ29udmVydEltYWdlKGNoaWxkLCBjbG9uZUNoaWxkKTtcbiAgICAgICAgICAgIG5ld0hvc3RFbGVtZW50LmFwcGVuZENoaWxkKGNsb25lQ2hpbGQpO1xuICAgICAgICB9KVxuICAgICk7XG4gICAgY2xvbmVTdmdFbGVtZW50LmFwcGVuZENoaWxkKG5ld0hvc3RFbGVtZW50KTtcbiAgICByZXR1cm4gY2xvbmVTdmdFbGVtZW50O1xufVxuXG4vKipcbiAqIGN1cnJlbnQgYm9hcmQgdHJhbnNmZXIgcGljdHVyZXNcbiAqIEBwYXJhbSBib2FyZCBib2FyZFxuICogQHBhcmFtIG9wdGlvbnMgcGFyYW1ldGVyIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIGltYWdlcyBpbiB0aGUgc3BlY2lmaWVkIGZvcm1hdCBiYXNlNjRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRvSW1hZ2UoYm9hcmQ6IFBsYWl0Qm9hcmQsIG9wdGlvbnM6IFRvSW1hZ2VPcHRpb25zKSB7XG4gICAgaWYgKCFib2FyZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBlbGVtZW50cyA9IG9wdGlvbnMuZWxlbWVudHMgfHwgZmluZEVsZW1lbnRzKGJvYXJkLCB7IG1hdGNoOiAoKSA9PiB0cnVlLCByZWN1cnNpb246ICgpID0+IHRydWUsIGlzUmV2ZXJzZTogZmFsc2UgfSk7XG4gICAgY29uc3QgdGFyZ2V0UmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICBjb25zdCB7IHJhdGlvID0gMiwgZmlsbFN0eWxlID0gJ3RyYW5zcGFyZW50JyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRhcmdldFJlY3RhbmdsZTtcbiAgICBjb25zdCByYXRpb1dpZHRoID0gd2lkdGggKiByYXRpbztcbiAgICBjb25zdCByYXRpb0hlaWdodCA9IGhlaWdodCAqIHJhdGlvO1xuXG4gICAgY29uc3QgY2xvbmVTdmdFbGVtZW50ID0gYXdhaXQgY2xvbmVTdmcoYm9hcmQsIGVsZW1lbnRzLCB0YXJnZXRSZWN0YW5nbGUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHsgY2FudmFzLCBjdHggfSA9IGNyZWF0ZUNhbnZhcyhyYXRpb1dpZHRoLCByYXRpb0hlaWdodCwgZmlsbFN0eWxlKTtcblxuICAgIGNvbnN0IHN2Z1N0ciA9IG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoY2xvbmVTdmdFbGVtZW50KTtcbiAgICBjb25zdCBpbWdTcmMgPSBgZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsJHtlbmNvZGVVUklDb21wb25lbnQoc3ZnU3RyKX1gO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaW1nID0gYXdhaXQgbG9hZEltYWdlKGltZ1NyYyk7XG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCByYXRpb1dpZHRoLCByYXRpb0hlaWdodCk7XG4gICAgICAgIHJldHVybiBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjb252ZXJ0aW5nIFNWRyB0byBpbWFnZTonLCBlcnJvcik7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG4vKipcbiAqIGRvd25sb2FkIHRoZSBmaWxlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lXG4gKiBAcGFyYW0gdXJsIGRvd25sb2FkIHVybFxuICogQHBhcmFtIG5hbWUgZmlsZSBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb3dubG9hZEltYWdlKHVybDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGEuaHJlZiA9IHVybDtcbiAgICBhLmRvd25sb2FkID0gbmFtZTtcbiAgICBhLmNsaWNrKCk7XG4gICAgYS5yZW1vdmUoKTtcbn1cbiJdfQ==
@@ -2625,6 +2625,12 @@ function withSelection(board) {
2625
2625
  let isShift = false;
2626
2626
  let isTextSelection = false;
2627
2627
  board.pointerDown = (event) => {
2628
+ if (!isShift && event.shiftKey) {
2629
+ isShift = true;
2630
+ }
2631
+ if (isShift && !event.shiftKey) {
2632
+ isShift = false;
2633
+ }
2628
2634
  const isHitText = !!(event.target instanceof Element && event.target.closest('.plait-richtext-container'));
2629
2635
  isTextSelection = isHitText && PlaitBoard.hasBeenTextEditing(board);
2630
2636
  // prevent text from being selected
@@ -2641,18 +2647,6 @@ function withSelection(board) {
2641
2647
  }
2642
2648
  pointerDown(event);
2643
2649
  };
2644
- board.keydown = (event) => {
2645
- if (!isShift && event.key === 'Shift') {
2646
- isShift = true;
2647
- }
2648
- keydown(event);
2649
- };
2650
- board.keyup = (event) => {
2651
- if (isShift && event.key === 'Shift') {
2652
- isShift = false;
2653
- }
2654
- keyup(event);
2655
- };
2656
2650
  board.pointerMove = (event) => {
2657
2651
  if (!isTextSelection) {
2658
2652
  // prevent text from being selected
@@ -2683,7 +2677,8 @@ function withSelection(board) {
2683
2677
  };
2684
2678
  // handle the end of click select
2685
2679
  board.pointerUp = (event) => {
2686
- const isSkip = !isMainPointer(event) || isDragging(board) || !PlaitBoard.isPointer(board, PlaitPointerType.selection);
2680
+ const isSetSelectionPointer = PlaitBoard.isPointer(board, PlaitPointerType.selection) || PlaitBoard.isPointer(board, PlaitPointerType.hand);
2681
+ const isSkip = !isMainPointer(event) || isDragging(board) || !isSetSelectionPointer;
2687
2682
  if (isSkip) {
2688
2683
  pointerDown(event);
2689
2684
  return;
@@ -3177,7 +3172,7 @@ function withViewport(board) {
3177
3172
  }, 500, { leading: true });
3178
3173
  board.onChange = () => {
3179
3174
  const isSetViewport = board.operations.some(op => op.type === 'set_viewport');
3180
- const isOnlySetSelection = board.operations.some(op => op.type === 'set_selection');
3175
+ const isOnlySetSelection = board.operations.every(op => op.type === 'set_selection');
3181
3176
  if (isOnlySetSelection) {
3182
3177
  return onChange();
3183
3178
  }
@@ -3647,7 +3642,7 @@ function withMoving(board) {
3647
3642
  }
3648
3643
  }
3649
3644
  if (isPreventDefault) {
3650
- // 阻止 move 过程中触发画布滚动行为
3645
+ // Prevent canvas scrolling behavior from being triggered during move
3651
3646
  event.preventDefault();
3652
3647
  }
3653
3648
  pointerMove(event);